{"version":3,"sources":["webpack:///node_modules/exceljs/dist/exceljs.min.js","webpack:///src/$_lazy_route_resource lazy namespace object","webpack:///src/app-ribspan/containers/home/home.component.ts","webpack:///src/app-ribspan/containers/home/home.component.html","webpack:///src/app-ribspan/containers/home/index.ts","webpack:///src/app-ribspan/core/UI/cutBeam.manager.ts","webpack:///src/app-ribspan/core/UI/cutOut.manager.ts","webpack:///src/app-ribspan/core/UI/editLength2.manager.ts","webpack:///src/app-ribspan/core/UI/editWall.manager.ts","webpack:///src/app-ribspan/core/UI/editWidth2.manager.ts","webpack:///src/app-ribspan/core/UI/rakecut.ts","webpack:///src/app-ribspan/core/back_flyover/column-and-purlin.manager.ts","webpack:///src/app-ribspan/core/back_flyover/dimension.manager.ts","webpack:///src/app-ribspan/core/back_flyover/index.ts","webpack:///src/app-ribspan/core/back_flyover/roof.manager.ts","webpack:///src/app-ribspan/core/base.manager.ts","webpack:///src/app-ribspan/core/dimension.manager.ts","webpack:///src/app-ribspan/core/eave.manager.ts","webpack:///src/app-ribspan/core/existing-roof.manager.ts","webpack:///src/app-ribspan/core/existing-wall.manager.ts","webpack:///src/app-ribspan/core/existing_building/dimension.manager.ts","webpack:///src/app-ribspan/core/existing_building/index.ts","webpack:///src/app-ribspan/core/existing_building/post-and-beam.manager.ts","webpack:///src/app-ribspan/core/existing_building/roof.manager.ts","webpack:///src/app-ribspan/core/fascia.manager.ts","webpack:///src/app-ribspan/core/fascia/dimension.manager.ts","webpack:///src/app-ribspan/core/fascia/index.ts","webpack:///src/app-ribspan/core/fascia/post-and-beam.manager.ts","webpack:///src/app-ribspan/core/fascia/roof.manager.ts","webpack:///src/app-ribspan/core/flyover/column-and-beam.manager.ts","webpack:///src/app-ribspan/core/flyover/dimension.manager.ts","webpack:///src/app-ribspan/core/flyover/index.ts","webpack:///src/app-ribspan/core/flyover/roof.manager.ts","webpack:///src/app-ribspan/core/free_standing/column-and-purlin.manager.ts","webpack:///src/app-ribspan/core/free_standing/dimension.manager.ts","webpack:///src/app-ribspan/core/free_standing/index.ts","webpack:///src/app-ribspan/core/free_standing/roof.manager.ts","webpack:///src/app-ribspan/core/gable_fb_existing_building/dimension.manager.ts","webpack:///src/app-ribspan/core/gable_fb_existing_building/index.ts","webpack:///src/app-ribspan/core/gable_fb_existing_building/post-and-beam.manager.ts","webpack:///src/app-ribspan/core/gable_fb_existing_building/roof.manager.ts","webpack:///src/app-ribspan/core/gable_fb_fascia/dimension.manager.ts","webpack:///src/app-ribspan/core/gable_fb_fascia/index.ts","webpack:///src/app-ribspan/core/gable_fb_fascia/post-and-beam.manager.ts","webpack:///src/app-ribspan/core/gable_fb_fascia/roof.manager.ts","webpack:///src/app-ribspan/core/gable_fb_flyover/column-and-beam.manager.ts","webpack:///src/app-ribspan/core/gable_fb_flyover/dimension.manager.ts","webpack:///src/app-ribspan/core/gable_fb_flyover/index.ts","webpack:///src/app-ribspan/core/gable_fb_flyover/roof.manager.ts","webpack:///src/app-ribspan/core/gable_free_standing/column-and-purlin.manager.ts","webpack:///src/app-ribspan/core/gable_free_standing/dimension.manager.ts","webpack:///src/app-ribspan/core/gable_free_standing/index.ts","webpack:///src/app-ribspan/core/gable_free_standing/roof.manager.ts","webpack:///src/app-ribspan/core/gable_lr_fascia/dimension.manager.ts","webpack:///src/app-ribspan/core/gable_lr_fascia/index.ts","webpack:///src/app-ribspan/core/gable_lr_fascia/post-and-beam.manager.ts","webpack:///src/app-ribspan/core/gable_lr_fascia/roof.manager.ts","webpack:///src/app-ribspan/core/gable_lr_flyover/column-and-beam.manager.ts","webpack:///src/app-ribspan/core/gable_lr_flyover/dimension.manager.ts","webpack:///src/app-ribspan/core/gable_lr_flyover/index.ts","webpack:///src/app-ribspan/core/gable_lr_flyover/roof.manager.ts","webpack:///src/app-ribspan/core/geometry.manager.ts","webpack:///src/app-ribspan/core/ground.manager.ts","webpack:///src/app-ribspan/core/material.manager.ts","webpack:///src/app-ribspan/core/objects.ts","webpack:///src/app-ribspan/core/polygonUtils.ts","webpack:///src/app-ribspan/core/printing2d.manager.ts","webpack:///src/app-ribspan/core/selection.manager.ts","webpack:///src/app-ribspan/core/ui.manager.ts","webpack:///src/app-ribspan/core/ui.ts","webpack:///src/app-ribspan/core/utils.ts","webpack:///src/app-ribspan/models/ArrowControl.model.ts","webpack:///src/app-ribspan/models/ClickControl.model.ts","webpack:///src/app-ribspan/models/DeleteControl.model.ts","webpack:///src/app-ribspan/models/Dimension.ts","webpack:///src/app-ribspan/models/HighlightBox.ts","webpack:///src/app-ribspan/models/UpstandBraket.model.ts","webpack:///src/app-ribspan/models/base.model.ts","webpack:///src/app-ribspan/models/uicontrol.model.ts","webpack:///src/app/app.component.ts","webpack:///src/app/app.component.html","webpack:///src/app/app.config.ts","webpack:///src/app/app.constants.ts","webpack:///src/app/app.module.ts","webpack:///src/app/app.routing.ts","webpack:///src/app/component/checkbox-input/checkbox-input.component.ts","webpack:///src/app/component/dialog-add-bom/dialog-add-bom.component.ts","webpack:///src/app/component/dialog-add-bom/dialog-add-bom.component.html","webpack:///src/app/component/dialog-add-cost/dialog-add-cost.component.ts","webpack:///src/app/component/dialog-add-cost/dialog-add-cost.component.html","webpack:///src/app/component/dialog-bom/dialog-bom.component.ts","webpack:///src/app/component/dialog-bom/dialog-bom.component.html","webpack:///src/app/component/dialog-confirm/dialog-confirm.component.ts","webpack:///src/app/component/dialog-confirm/dialog-confirm.component.html","webpack:///src/app/component/dialog-dimension/dialog-dimension.component.ts","webpack:///src/app/component/dialog-dimension/dialog-dimension.component.html","webpack:///src/app/component/dialog-edit-bay/dialog-edit-bay.component.ts","webpack:///src/app/component/dialog-edit-bay/dialog-edit-bay.component.html","webpack:///src/app/component/dialog-rakecut/dialog-rakecut.component.ts","webpack:///src/app/component/dialog-rakecut/dialog-rakecut.component.html","webpack:///src/app/component/dropdown-color-input/dropdown-color-input.component.ts","webpack:///src/app/component/dropdown-color-input/dropdown-color-input.component.html","webpack:///src/app/component/dropdown-input-custom/dropdown-input-custom.component.ts","webpack:///src/app/component/dropdown-input-custom/dropdown-input-custom.component.html","webpack:///src/app/component/dropdown-input/dropdown-input.component.ts","webpack:///src/app/component/dropdown-input/dropdown-input.component.html","webpack:///src/app/component/panel-bom/panel-bom.component.ts","webpack:///src/app/component/panel-bom/panel-bom.component.html","webpack:///src/app/component/select-input/select-input.component.ts","webpack:///src/app/component/select-input/select-input.component.html","webpack:///src/app/component/slider-input/slider-input.component.ts","webpack:///src/app/component/slider-input/slider-input.component.html","webpack:///src/app/component/switch-input/switch-input.component.ts","webpack:///src/app/component/toggle-button/toggle-button.component.ts","webpack:///src/app/component/toggle-button/toggle-button.component.html","webpack:///src/app/containers/home/home.component.ts","webpack:///src/app/containers/home/home.component.html","webpack:///src/app/containers/home/index.ts","webpack:///src/app/containers/login/index.ts","webpack:///src/app/containers/login/login.component.ts","webpack:///src/app/containers/login/login.component.html","webpack:///src/app/core/UI/cutBeam.manager.ts","webpack:///src/app/core/UI/cutOut.manager.ts","webpack:///src/app/core/UI/editLength2.manager.ts","webpack:///src/app/core/UI/editWall.manager.ts","webpack:///src/app/core/UI/editWidth2.manager.ts","webpack:///src/app/core/UI/rakecut.ts","webpack:///src/app/core/back_flyover/column-and-purlin.manager.ts","webpack:///src/app/core/back_flyover/dimension.manager.ts","webpack:///src/app/core/back_flyover/index.ts","webpack:///src/app/core/back_flyover/roof.manager.ts","webpack:///src/app/core/base.manager.ts","webpack:///src/app/core/dimension.manager.ts","webpack:///src/app/core/eave.manager.ts","webpack:///src/app/core/existing-roof.manager.ts","webpack:///src/app/core/existing-wall.manager.ts","webpack:///src/app/core/existing_building/dimension.manager.ts","webpack:///src/app/core/existing_building/index.ts","webpack:///src/app/core/existing_building/post-and-beam.manager.ts","webpack:///src/app/core/existing_building/roof.manager.ts","webpack:///src/app/core/fascia.manager.ts","webpack:///src/app/core/fascia/dimension.manager.ts","webpack:///src/app/core/fascia/index.ts","webpack:///src/app/core/fascia/post-and-beam.manager.ts","webpack:///src/app/core/fascia/roof.manager.ts","webpack:///src/app/core/flyover/column-and-beam.manager.ts","webpack:///src/app/core/flyover/dimension.manager.ts","webpack:///src/app/core/flyover/index.ts","webpack:///src/app/core/flyover/roof.manager.ts","webpack:///src/app/core/free_standing/column-and-purlin.manager.ts","webpack:///src/app/core/free_standing/dimension.manager.ts","webpack:///src/app/core/free_standing/index.ts","webpack:///src/app/core/free_standing/roof.manager.ts","webpack:///src/app/core/gable_fb_existing_building/dimension.manager.ts","webpack:///src/app/core/gable_fb_existing_building/index.ts","webpack:///src/app/core/gable_fb_existing_building/post-and-beam.manager.ts","webpack:///src/app/core/gable_fb_existing_building/roof.manager.ts","webpack:///src/app/core/gable_fb_fascia/dimension.manager.ts","webpack:///src/app/core/gable_fb_fascia/index.ts","webpack:///src/app/core/gable_fb_fascia/post-and-beam.manager.ts","webpack:///src/app/core/gable_fb_fascia/roof.manager.ts","webpack:///src/app/core/gable_fb_flyover/column-and-beam.manager.ts","webpack:///src/app/core/gable_fb_flyover/dimension.manager.ts","webpack:///src/app/core/gable_fb_flyover/index.ts","webpack:///src/app/core/gable_fb_flyover/roof.manager.ts","webpack:///src/app/core/gable_free_standing/column-and-purlin.manager.ts","webpack:///src/app/core/gable_free_standing/dimension.manager.ts","webpack:///src/app/core/gable_free_standing/index.ts","webpack:///src/app/core/gable_free_standing/roof.manager.ts","webpack:///src/app/core/gable_lr_fascia/dimension.manager.ts","webpack:///src/app/core/gable_lr_fascia/index.ts","webpack:///src/app/core/gable_lr_fascia/post-and-beam.manager.ts","webpack:///src/app/core/gable_lr_fascia/roof.manager.ts","webpack:///src/app/core/gable_lr_flyover/column-and-beam.manager.ts","webpack:///src/app/core/gable_lr_flyover/dimension.manager.ts","webpack:///src/app/core/gable_lr_flyover/index.ts","webpack:///src/app/core/gable_lr_flyover/roof.manager.ts","webpack:///src/app/core/geometry.manager.ts","webpack:///src/app/core/ground.manager.ts","webpack:///src/app/core/material.manager.ts","webpack:///src/app/core/models.ts","webpack:///src/app/core/objects.ts","webpack:///src/app/core/polygonUtils.ts","webpack:///src/app/core/printing2d.manager.ts","webpack:///src/app/core/selection.manager.ts","webpack:///src/app/core/ui.manager.ts","webpack:///src/app/core/ui.ts","webpack:///src/app/core/utils.ts","webpack:///src/app/helpers/auth.guard.ts","webpack:///src/app/helpers/error.interceptor.ts","webpack:///src/app/helpers/index.ts","webpack:///src/app/helpers/jwt.interceptor.ts","webpack:///src/app/libs/DragControls.js","webpack:///src/app/models/ArrowControl.model.ts","webpack:///src/app/models/ClickControl.model.ts","webpack:///src/app/models/DeleteControl.model.ts","webpack:///src/app/models/Dimension.ts","webpack:///src/app/models/HighlightBox.ts","webpack:///src/app/models/UpstandBraket.model.ts","webpack:///src/app/models/base.model.ts","webpack:///src/app/models/uicontrol.model.ts","webpack:///src/app/services/authentication.service.ts","webpack:///src/app/services/excel.service.ts","webpack:///src/app/services/index.ts","webpack:///src/app/services/job.service.ts","webpack:///src/app/services/material.service.ts","webpack:///src/app/services/price.service.ts","webpack:///src/app/services/printing.service.ts","webpack:///src/app/services/user.service.ts","webpack:///src/environments/environment.ts","webpack:///src/main.ts","webpack:///crypto (ignored)"],"names":["_createForOfIteratorHelper2","e","Symbol","iterator","Array","isArray","_unsupportedIterableToArray2","t","r","s","n","length","done","value","f","TypeError","o","i","a","next","_classCallCheck2","_defineProperties","enumerable","configurable","writable","Object","defineProperty","key","_createClass2","prototype","_toConsumableArray2","_arrayWithoutHoles2","_iterableToArray2","_nonIterableSpread2","_arrayLikeToArray2","toString","call","slice","constructor","name","from","test","_typeof2","exports","module","define","u","require","c","Error","code","Promise","resolve","then","arguments","apply","l","extend","h","d","fs","exists","p","error","y","workbook","worksheet","regeneratorRuntime","mark","wrap","prev","sent","concat","createReadStream","read","close","abrupt","stop","_createInputStream","on","pipe","console","warn","addWorksheet","sheetName","dateFormats","map","Number","isNaN","reduce","isValid","Date","valueOf","parse","parserOptions","addRow","emit","getWorksheet","sheetId","format","formatterOptions","dateFormat","dateUTC","text","hyperlink","formula","result","utc","JSON","stringify","includeEmptyRows","eachRow","write","values","shift","end","encoding","createWriteStream","dayjs","decodeAddress","nativeCol","col","nativeColOff","nativeRow","row","nativeRowOff","get","Math","min","colWidth","set","floor","rowHeight","getColumn","isCustomWidth","width","getRow","height","slideFormula","_row","_column","validateAddress","_address","_value","S","create","Types","Null","style","_mergeStyle","_mergeCount","numFmt","font","alignment","border","fill","protection","toCsvString","release","Merge","type","isMergedTo","String","Hyperlink","definedNames","addEx","fullAddress","removeEx","removeAllNames","number","letter","effectiveType","master","getType","_comment","note","escapeHtml","formulaType","address","names","getNamesEx","forEach","dataValidations","_dataValidations","find","add","model","comment","fromModel","ValueType","replace","richText","join","RichText","m","toISOString","b","tooltip","v","_master","addMergeRef","releaseMergeRef","g","cell","Formula","shareType","ref","sharedFormula","_translatedFormula","findCell","_copyModel","ranges","match","cells","_getTranslatedFormula","FormulaType","Master","Shared","None","w","SharedString","_","Boolean","k","x","rawValue","sharedString","types","_worksheet","_number","defn","isDefault","equivalentTo","max","hidden","outlineLevel","collapsed","push","headers","isEqual","getCell","eachCell","n2l","header","_header","_hidden","_key","getColumnKey","deleteColumnKey","setColumnKey","_outlineLevel","properties","outlineLevelCol","hasOwnProperty","_applyStyle","matrixMap","decodeEx","getMatrix","top","left","right","bottom","addCellEx","removeCellEx","each","findCellEx","filter","findCellAt","_explore","$shortRange","forEachInSheet","spliceRows","normaliseMatrix","spliceColumns","getRanges","split","pop","addCell","RelationshipType","OfficeDocument","Worksheet","CalcChain","SharedStrings","Styles","Theme","DocumentType","Xlsx","ReadingOrder","LeftToRight","RightToLeft","ErrorValue","NotApplicable","Ref","Name","DivZero","Value","Num","imageId","hyperlinks","range","tl","br","ext","editAs","decode","texts","deepMerge","DEFAULT_CONFIGS","keys","margins","insetmode","inset","locked","lockText","setTLBR","dimensions","expand","containsEx","encodeAddress","_serialisedSheetName","$t$l","$b$r","count","$range","_cells","_commitRow","l2n","getCellEx","includeEmpty","id","man","rowBreaks","eachColumnKey","some","outlineLevelRow","$col$row","table","column","index","cacheState","_set","filterButton","totalsRowLabel","totalsRowFunction","totalsRowResult","totalsRowFormula","validate","store","columns","rows","filterHeight","tableHeight","autoFilterRef","encode","tableRef","getFormula","headerRow","totalsRow","_cache","splice","_assign","displyName","displayName","showFirstColumn","showLastColumn","showRowStripes","showColumnStripes","created","modified","calcProperties","_worksheets","views","media","_definedNames","nextId","substring","toLowerCase","trace","tabColor","argb","theme","indexed","orderNo","assign","destroy","worksheets","_themes","_xlsx","_csv","sort","creator","lastModifiedBy","lastPrinted","sheets","company","manager","title","subject","keywords","category","description","language","revision","contentStatus","themes","state","findIndex","_rows","_columns","_keys","_merges","_workbook","defaultRowHeight","dyDescent","pageSetup","footer","orientation","horizontalDpi","verticalDpi","fitToPage","fitToWidth","fitToHeight","scale","pageOrder","blackAndWhite","draft","cellComments","errors","paperSize","showRowColHeaders","showGridLines","firstPageNumber","horizontalCentered","verticalCentered","colBreaks","headerFooter","differentFirst","differentOddEven","oddHeader","oddFooter","evenHeader","evenFooter","firstHeader","firstFooter","autoFilter","_media","sheetProtection","tables","conditionalFormattings","removeWorksheetEx","_nextRow","hasValues","getAddress","_mergeCellsInternal","intersects","merge","unmerge","_unMergeMaster","sheet","spinCount","isFinite","round","algorithmName","saltValue","randomBytes","hashValue","convertPasswordToHash","Function","mergeCells","mergeCellsWithoutStyle","_headerRowCount","cellCount","_lastRowNumber","cols","toModel","merges","_parseRows","_parseMergeCells","Workbook","template","getCellAt","findSheet","findSheetRow","findRowCell","getOwnPropertySymbols","getOwnPropertyDescriptor","_dictionary","_l2n","_n2l","_level","_fill","_hash","parseInt","startsWith","getOwnPropertyDescriptors","defineProperties","inRange","hash","createHash","update","digest","getHashes","indexOf","alloc","writeUInt32LE","Buffer","buffer","crypto","ReferenceError","Reflect","construct","sham","Proxy","setPrototypeOf","getPrototypeOf","__proto__","SaxesParser","readableObjectMode","events","saxesParser","eventType","Transform","saxes","exec","toUpperCase","_data","_encoding","toBuffer","copy","_buffer","_buf","size","iRead","iWrite","bufSize","buffers","batch","corked","inPos","outPos","pipes","paused","inherits","Duplex","_getWritableBuffer","full","_pipe","all","_writeToBuffers","nop","ArrayBuffer","nextTick","cork","_flush","uncork","eod","setEncoding","pause","resume","isPaused","unpipe","unshift","_process","_inPos","_grow","capacity","every","keyBy","strcmp","isUndefined","isObject","promiseImmediate","setImmediate","setTimeout","super_","dateToExcel","getTime","excelToDate","parsePath","lastIndexOf","path","getRelsPath","xmlEncode","xmlDecode","validInt","isDateFmt","access","constants","F_OK","toIsoDateString","toIsoString","subsstr","global","self","window","timers","_xml","_stack","_rollbacks","tos","open","leaf","openNode","writeText","closeNode","xml","stack","cursor","closeAll","StdDocAttributes","version","standalone","jsZip","stream","getEntryType","loadAsync","dir","async","autodrain","_finished","t0","EventEmitter","options","compression","zip","base64","file","generateAsync","ZipReader","ZipWriter","jszip","Image","CoreProperties","ExtenderProperties","Comments","VmlDrawing","Table","reset","xform","parseOpen","parseText","parseClose","render","toXml","toAttribute","parseFloat","localSheetId","_parsedName","attributes","_parsedLocalSheetId","_parsedText","leafNode","rId","calcId","fullCalcOnLoad","date1904","defaultThemeVersion","filterPrivacy","xWindow","yWindow","windowWidth","windowHeight","firstSheet","activeTab","visibility","fileVersion","STATIC_XFORMS","workbookPr","bookViews","tag","childXform","calcPr","printArea","printTitlesRow","printTitlesColumn","openXml","WORKBOOK_ATTRIBUTES","parser","workbookRels","Id","worksheetHash","Target","xmlns","$","appName","lastEdited","lowestEdited","rupBuild","richTextXform","_richTextXform","authorId","COMMENTS_ATTRIBUTES","comments","_model","anchor","getAnchorRect","getDefaultRect","refAddress","ObjectType","normalizeModel","DRAWING_ATTRIBUTES","data","coordsize","joinstyle","gradientshapeok","anchors","reconcile","V_SHAPE_ATTRIBUTES","color2","color","obscured","fillcolor","strokecolor","toFixed","conversionUnit","reverseConversionUnit","createNewModel","onParserClose","baseType","Company","Manager","HeadingPairs","TitleOfParts","PROPERTY_ATTRIBUTES","DateFormat","DateAttrs","extension","Extension","ContentType","PartName","sharedStrings","target","drawings","commentRefs","commentName","attrs","CORE_PROPERTY_ATTRIBUTES","identifier","contentType","Relationship","_values","RELATIONSHIPS_ATTRIBUTES","rels","mediaIndex","cstate","noChangeAspect","zero","anchorType","prepare","uri","addAttribute","cx","cy","picture","medium","reconcilePicture","mergeModel","prst","always","empty","$count","maxItems","to","richTextXForm","styles","addStyleModel","styleId","ssId","si","siFormulae","formulae","expandToAddress","renderFormula","currentNode","getStyleModel","getString","hyperlinkMap","commentsMap","iconSet","iconId","toIntValue","v4","databarXform","iconSetXform","isExt","custom","x14Id","renderDataBar","renderIconSet","priority","uuid","fExtXform","sqRef","cfRule","rules","cfXform","hasExtContent","hasContent","cfvoXform","borderColorXform","negativeBorderColorXform","negativeFillColorXform","axisColorXform","gradient","minLength","toIntAttribute","maxLength","toBoolAttribute","negativeBarColorSameAsPositive","negativeBarBorderColorSameAsPositive","axisPosition","direction","cfvo","borderColor","negativeBorderColor","negativeFillColor","axisColor","toBoolValue","toStringValue","cfIconXform","toStringAttribute","reverse","showValue","icons","dataBar","extLst","extLstRefXform","formulaXform","colorScale","colorScaleXform","renderExpression","renderCellIs","renderTop10","renderAboveAverage","renderColorScale","renderText","renderTimePeriod","dxfId","operator","percent","rank","aboveAverage","isPrimitive","timePeriod","val","toFloatValue","colorXform","sqref","addDxfStyle","getDxfStyle","idXform","bestFit","dataValidation","marked","allowBlank","showInputMessage","promptTitle","prompt","showErrorMessage","errorStyle","errorTitle","_dataValidation","_formula","includes","forEachAddress","addRollback","commit","rollback","summaryBelow","summaryRight","useFirstPageNumber","usePrinterDefaults","copies","headings","gridLines","numRowsSeen","spans","ht","defaultColWidth","customHeight","pageSetUpPr","outlinePr","outlineProperties","selectLockedCells","selectUnlockedCells","formatCells","formatColumns","formatRows","insertColumns","insertRows","insertHyperlinks","deleteColumns","deleteRows","pivotTables","objects","scenarios","frozen","frozenSplit","workbookViewId","rightToLeft","tabSelected","showRuler","zoomScale","zoomScaleNormal","xSplit","ySplit","topLeftCell","activePane","pane","activeCell","sheetView","view","selections","topLeft","O","E","R","j","T","C","P","A","M","I","N","D","B","F","L","maxRows","maxCols","sheetPr","dimension","sheetViews","sheetFormatPr","sheetData","pageMargins","printOptions","drawing","tableParts","conditionalFormatting","Type","TargetMode","vmlDrawing","background","image","drawingsCount","preImageId","WORKSHEET_ATTRIBUTES","relationships","vmlDrawings","attr","_format","_parse","addAttributes","writeXml","sb","eb","fontXform","textXform","_textXform","_fontXform","FONT_OPTIONS","tagName","fontNameTag","rPh","rich","addRichText","addText","sharedStringXform","uniqueCount","_sharedStringXform","_text","fromCharCode","horizontalValues","horizontal","verticalValues","vertical","wrapText","shrinkToFit","textRotation","indent","readingOrder","defaultColor","validStyleValues","diagonal","up","down","diagonalUp","diagonalDown","tint","rgb","position","fgColor","bgColor","pattern","patternType","degree","center","stops","patternFill","gradientFill","validPatternValues","StopXform","PatternFillXform","GradientFillXform","OPTIONS","prop","charset","condense","family","outline","vertAlign","scheme","shadow","strike","sz","formatCode","numFmtId","getDefaultFmtId","getDefaultFmtCode","xfId","fontId","fillId","borderId","numFmts","fonts","fills","borders","cellStyleXfs","cellXfs","dxfs","cellStyles","tableStyles","init","numFmtNextId","initIndex","_addBorder","_addStyle","_addFill","weakMap","WeakMap","STYLESHEET_ATTRIBUTES","_addFont","has","_addNumFmtStr","builtinId","defaultTableStyle","defaultPivotStyle","defaultSlicerStyle","defaultTimelineStyle","dateStyleId","_dateStyleId","Mock","Attributes","single","singleAccounting","doubleAccounting","filterColumn","colId","hiddenButton","tableColumns","tableStyleInfo","TABLE_ATTRIBUTES","totalsRowCount","totalsRowShown","headerRowCount","readFile","z","U","H","V","W","q","X","K","parseStream","drawingRels","worksheetRels","sheetNo","globalRels","sheetDefs","substr","parseRels","parseWorkbook","_processWorksheetEntry","_processWorksheetRelsEntry","_processThemeEntry","_processMediaEntry","_processDrawingEntry","_processCommentEntry","_processTableEntry","_processDrawingRelsEntry","_processVmlDrawingEntry","t1","filename","append","theme1","RelType","finalize","useSharedStrings","useStyles","prepareModel","addContentTypes","addOfficeRels","addWorkbookRels","addWorksheets","addSharedStrings","addDrawings","addTables","addThemes","addStyles","addMedia","addApp","addCore","addWorkbook","_finalize","bignum","base","decoders","encoders","body","_createNamed","runInThisContext","_initNamed","_getDecoder","_getEncoder","vm","Reporter","isBuffer","offset","byteLength","DecoderBuffer","save","reporter","restore","isEmpty","readUInt8","skip","_reporterState","raw","EncoderBuffer","Node","_baseState","enc","parent","children","args","reverseArgs","choice","optional","any","obj","use","useDecoder","explicit","implicit","contains","_wrap","clone","_init","equal","_useArgs","def","_decode","wrapResult","enterKey","_peekTag","isError","_decodeGeneric","_decodeChoice","enterObject","_decodeTag","track","_getUse","leaveObject","exitKey","leaveKey","_decodeList","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeBool","_decodeInt","_use","_createEncoderBuffer","_encode","_encodeValue","_skipDefault","_encodeChoice","_encodePrimitive","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool","_isNumstr","_isPrintstr","rethrow","pathLen","message","partial","captureStackTrace","tagClass","tagClassByName","_reverse","tagByName","der","entity","tree","cls","primitive","tagStr","_skipUntilEnd","unused","readUInt16BE","UTC","pem","label","writeUInt16BE","charCodeAt","getFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","toArray","sign","defaultBuffer","toByteArray","fromByteArray","Uint8Array","isBN","negative","words","red","BN","wordSize","cmp","_initNumber","_initArray","_parseHex","_parseBase","strip","ceil","imuln","_iaddn","_expand","_normSign","inspect","isZero","modn","idivn","toNumber","toJSON","toArrayLike","andln","iushrn","clz32","_countBits","_zeroBits","bitLength","zeroBits","toTwos","abs","inotn","iaddn","fromTwos","testn","notn","ineg","isNeg","neg","iuor","ior","or","uor","iuand","iand","and","uand","iuxor","ixor","xor","uxor","setn","iadd","isub","sub","Y","Z","G","J","Q","ee","te","re","ne","oe","ie","ae","se","ue","ce","fe","le","he","de","pe","ye","me","imul","be","ve","ge","we","_e","ke","xe","Se","Oe","Ee","Re","je","Te","Ce","Pe","Ae","Me","Ie","mulp","mulTo","makeRBT","revBin","permute","transform","cos","PI","sin","guessLen13b","conjugate","normalize13b","convert13b","stub","mul","mulf","muln","sqr","isqr","pow","iushln","ishln","ishrn","shln","ushln","shrn","ushrn","imaskn","maskn","isubn","addn","subn","iabs","_ishlnsubmul","_wordDiv","div","mod","divmod","divn","umod","divRound","egcd","isEven","isOdd","gcd","_invmp","cmpn","invm","bincn","ucmp","gtn","gt","gten","gte","ltn","lt","lten","lte","eqn","eq","toRed","convertTo","_forceRed","fromRed","convertFrom","forceRed","redAdd","redIAdd","redSub","redISub","redShl","shl","redMul","_verify2","redIMul","redSqr","_verify1","redISqr","redSqrt","sqrt","redInvm","redNeg","redPow","k256","p224","p192","p25519","tmp","_tmp","_prime","prime","r2","imod","rinv","minv","ireduce","imulK","mont","rand","generate","Rand","_rand","getBytes","getByte","getRandomValues","msCrypto","readUInt32BE","SBOX","INV_SBOX","SUB_MIX","INV_SUB_MIX","_reset","blockSize","keySize","_nRounds","_keySchedule","_invKeySchedule","encryptBlockRaw","encryptBlock","allocUnsafe","writeUInt32BE","decryptBlock","scrub","AES","_cipher","_ghash","_finID","writeUIntBE","_prev","_secCache","_decrypt","_alen","_len","_mode","_authTag","_called","_update","encrypt","_final","getAuthTag","setAuthTag","setAAD","createCipher","Cipher","createCipheriv","Cipheriv","createDecipher","Decipher","createDecipheriv","Decipheriv","listCiphers","getCiphers","_last","_autopadding","cache","mode","iv","decrypt","flush","setAutoPadding","evp_bytestokey","equals","writeUInt8","ghash","_multiply","ECB","CBC","CFB","CFB8","CFB1","OFB","CTR","GCM","cipher","aes128","aes192","aes256","instantiate","EDE","DES","_des","des","des3","blinder","modulus","publicExponent","unblinder","prime1","prime2","coefficient","exponent1","exponent2","getr","randombytes","sha224WithRSAEncryption","sha256WithRSAEncryption","sha384WithRSAEncryption","sha512WithRSAEncryption","sha256","sha224","sha384","sha512","DSA","ripemd160WithRSA","md5WithRSAEncryption","Writable","_hashType","_tag","_signType","_write","verify","Sign","Verify","createSign","createVerify","ec","curve","keyFromPrivate","privateKey","toDER","params","priv_key","getKey","makeKey","elliptic","algorithm","subjectPrivateKey","pub_key","signature","dup","SlowBuffer","INSPECT_MAX_BYTES","RangeError","isEncoding","isView","toPrimitive","kMaxLength","TYPED_ARRAY_SUPPORT","foo","byteOffset","species","poolSize","allocUnsafeSlow","_isBuffer","compare","swap16","swap32","swap64","toLocaleString","trim","_arr","subarray","readUIntLE","readUIntBE","readUInt16LE","readUInt32LE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUIntLE","writeUInt16LE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","copyWithin","ieee754","StringDecoder","hashMode","_finalOrDigest","__final","_decoder","_toString","_transform","string_decoder","callee","document","createElement","stat","noTargetGet","forced","globalThis","propertyIsEnumerable","enforce","getterFor","normalize","NATIVE","POLYFILL","stopped","MutationObserver","WebKitMutationObserver","process","domain","exit","fn","enter","createTextNode","observe","characterData","promise","reject","getOwnPropertyNames","unsafe","source","copyright","location","clearImmediate","MessageChannel","Dispatch","postMessage","protocol","host","now","port2","port1","onmessage","addEventListener","importScripts","appendChild","onreadystatechange","removeChild","clear","random","fetch","versions","v8","createEvent","dispatchEvent","PromiseRejectionEvent","notified","reactions","ok","fail","rejection","reason","initEvent","race","isBoolean","isNull","isNullOrUndefined","isNumber","isString","isSymbol","isRegExp","isDate","isFunction","secp256k1","secp224r1","prime256v1","prime192v1","ed25519","secp384r1","secp521r1","curveType","p256","secp256r1","secp192r1","p384","p521","generateKeys","genKeyPair","getPublicKey","computeSecret","keyFromPublic","getPublic","getPrivate","getX","getPrivateKey","setPublicKey","_importPublic","setPrivateKey","_importPrivate","ripemd160","_alg","_ipad","_opad","rng","pseudoRandomBytes","prng","Hash","createHmac","Hmac","pbkdf2","pbkdf2Sync","DiffieHellmanGroup","createDiffieHellmanGroup","getDiffieHellman","createDiffieHellman","DiffieHellman","createECDH","publicEncrypt","privateEncrypt","publicDecrypt","privateDecrypt","randomFill","randomFillSync","createCredentials","DH_CHECK_P_NOT_SAFE_PRIME","DH_CHECK_P_NOT_PRIME","DH_UNABLE_TO_CHECK_GENERATOR","DH_NOT_SUITABLE_GENERATOR","NPN_ENABLED","ALPN_ENABLED","RSA_PKCS1_PADDING","RSA_SSLV23_PADDING","RSA_NO_PADDING","RSA_PKCS1_OAEP_PADDING","RSA_X931_PADDING","RSA_PKCS1_PSS_PADDING","POINT_CONVERSION_COMPRESSED","POINT_CONVERSION_UNCOMPRESSED","POINT_CONVERSION_HYBRID","randomfill","amd","utcOffset","year","month","ms","weekdays","months","pl","date","locale","$L","$u","$offset","$d","NaN","$y","$M","getMonth","$D","getDate","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","isSame","startOf","endOf","isAfter","isBefore","$g","day","hour","minute","second","millisecond","unix","toDate","$locale","weekStart","$set","daysInMonth","subtract","meridiem","YY","YYYY","MM","MMM","monthsShort","MMMM","DD","dd","weekdaysMin","ddd","weekdaysShort","dddd","HH","hh","mm","ss","SSS","getTimezoneOffset","diff","toUTCString","isDayjs","en","Ls","dayjs_plugin_customParseFormat","zone","afternoon","milliseconds","SS","Do","ordinal","ZZ","regex","hours","minutes","seconds","local","getUTCFullYear","getUTCDay","getUTCMilliseconds","isUTC","dayjs_plugin_utc","utils","_cbcInit","_cbcState","bufferOff","_updateDecrypt","_updateEncrypt","_flushBuffer","_finalEncrypt","_finalDecrypt","_pad","_unpad","_desState","deriveKeys","pc1","r28shl","pc2","ip","_encrypt","substitute","rip","ciphers","_edeState","padSplit","binary","hex","gen","_pub","_priv","setGenerator","__prime","_primeLen","_primeCode","simpleSieve","fermatTest","__gen","_gen","getPrime","getGenerator","modp1","modp2","modp5","modp14","modp15","modp16","modp17","modp18","curves","eddsa","brorand","getNAF","getJSF","assert","one","two","pointFromJSON","gRed","_wnafT1","_wnafT2","_wnafT3","_wnafT4","redN","_maxwellTrick","precomputed","point","_fixedNafMul","_getDoubles","step","jpoint","mixedAdd","points","toP","_wnafMul","_getNAFPoints","wnd","dblp","_wnafMulAdd","toJ","BasePoint","decodePoint","pointFromX","encodeCompressed","getY","precompute","doubles","naf","beta","_getBeta","_hasDoubles","dbl","twisted","mOneA","extended","c2","oneC","zOne","_mulA","_mulC","pointFromY","isInfinity","fromJSON","_extDbl","_projDbl","_extAdd","_projAdd","mulAdd","jmulAdd","eqXToP","edwards","i4","a24","diffAdd","jumlAdd","tinv","zeroA","threeA","endo","_getEndomorphism","_endoWnafT1","_endoWnafT2","inf","_getEndoRoots","lambda","basis","_getEndoBasis","_endoSplit","k1","k2","_endoWnafMulAdd","_zeroDbl","_threeDbl","_dbl","trpl","PresetCurve","nh","keyPair","fromPrivate","fromPublic","pers","persEnc","entropy","hmacStrength","entropyEnc","nonce","_truncateToN","canonical","recoveryParam","recoverPubKey","getKeyRecoveryParam","priv","pub","privEnc","pubEnc","derive","_importDER","place","log","LN2","parseBytes","pointClass","encodingLength","keyFromSecret","hashInt","messagePrefix","encodePoint","pubBytes","makeSignature","Rencoded","intFromLE","fromSecret","encodeInt","decodeInt","isPoint","cachedProperty","_secret","secret","_pubBytes","privBytes","getSecret","_R","_S","_Rencoded","_Sencoded","Sencoded","toBytes","toHex","zero2","_from","_id","_inBundle","_integrity","_location","_phantomChildren","_requested","registry","escapedName","rawSpec","saveSpec","fetchSpec","_requiredBy","_resolved","_shasum","_spec","_where","author","email","bugs","url","bundleDependencies","dependencies","deprecated","devDependencies","brfs","coveralls","grunt","istanbul","jscs","jshint","mocha","files","homepage","license","main","repository","scripts","lint","unit","bind","_events","_eventsCount","_maxListeners","defaultMaxListeners","newListener","listener","warned","emitter","fired","removeListener","wrapFn","setMaxListeners","getMaxListeners","context","addListener","prependListener","once","prependOnceListener","removeAllListeners","listeners","rawListeners","listenerCount","eventNames","ownKeys","__esModule","objectMode","hasWrittenBOM","rowFormatter","writeBOM","rowTransform","BOM","finish","FormatterOptions","delimiter","rowDelimiter","quote","escape","quoteColumns","quoteHeaders","includeEndRowDelimiter","alwaysWriteHeaders","shouldWriteHeaders","escapedQuote","_headers","REPLACE_REGEXP","RegExp","ESCAPE_REGEXP","quoteField","search","shouldQuote","rowCount","fieldFormatter","_rowTransform","hasWrittenHeaders","isHashArray","callTransformer","checkHeaders","shouldFormatColumns","gatherColumns","gatherHeaders","createTransform","RowFormatter","FieldFormatter","CsvFormatterStream","promisify","writeToStream","writeToBuffer","writeToString","writeToPath","util","parseString","parseFile","fromString","deprecate","fromStream","fromPath","lines","parsedRowCount","parsedLineCount","endEmitted","Parser","headerTransformer","HeaderTransformer","decoder","rowTransformerValidator","RowTransformerValidator","rowValidator","hasHitRowLimit","processRows","line","shouldSkipLine","transformRow","pushRow","shouldEmitRows","transformAndValidate","limitRows","skipRows","skipLines","ParserOptions","ignoreEmpty","escapeChar","supportsComments","ltrim","rtrim","renameHeaders","strictColumnHandling","discardUnmappedColumns","carriageReturn","escapedDelimiter","NEXT_TOKEN_REGEXP","CsvParserStream","Readable","rowParser","Scanner","removeBOM","hasMoreData","parseWithComments","parseWithoutComments","parseRow","nextCharacterToken","Token","isTokenComment","advancePastLine","lineFromCursor","hasMoreCharacters","truncateToCursor","nextNonSpaceToken","isTokenRowDelimiter","isTokenCarriageReturn","isTokenDelimiter","columnParser","ColumnParser","getStartToken","advancePastToken","shouldSkipColumnParse","lineLength","startCursor","endCursor","token","trimLeft","trimRight","quotedColumnParser","nonQuotedColumnParser","isTokenQuote","advanceToToken","columnFormatter","isTokenEscapeCharacter","gatherDataBetweenQuotes","foundClosingQuote","advanceTo","checkForMalformedColumn","NonQuotedColumnParser","QuotedColumnParser","ColumnFormatter","RowParser","receivedHeaders","shouldUseFirstRow","processedFirstRow","headersLength","setHeaders","headersTransform","shouldMapRow","processRow","mapHeaders","_rowValidator","isSyncTransform","isSyncValidate","callValidator","createValidator","_block","_blockSize","_blockOffset","_length","_finalized","_digest","common","sha","ripemd","hmac","sha1","pending","pendingTotal","outSize","padLength","endian","_delta8","_delta32","BlockHash","join32","inner","outer","rotl32","sum32","sum32_3","sum32_4","toHex32","split32","sum32_5","ft_1","ch32","maj32","s0_256","s1_256","g0_256","g1_256","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","_prepareBlock","rotr32","p32","htonl","zero8","predResist","outLen","minEntropy","_reseed","reseedInterval","nonceEnc","_hmac","reseed","parentNode","documentElement","getTypeOf","charAt","uint8array","compressedSize","uncompressedSize","crc32","compressedContent","getContentWorker","uncompressWorker","streamInfo","data_length","getCompressedWorker","withStreamInfo","createWorkerFrom","compressWorker","STORE","magic","DEFLATE","createFolders","compressionOptions","unixPermissions","dosPermissions","lie","Uint16Array","Uint32Array","_pako","_pakoAction","_pakoOptions","meta","processChunk","_createPako","transformTo","cleanUp","level","onData","pako","utf8encode","fileRecord","LOCAL_FILE_HEADER","dirRecord","CENTRAL_FILE_HEADER","DATA_DESCRIPTOR","bytesWritten","zipComment","zipPlatform","encodeFileName","streamFiles","accumulate","contentBuffer","dirRecords","currentSourceOffset","entriesCount","currentFile","_sources","openedSource","closedSource","CENTRAL_DIRECTORY_END","prepareNextSource","previous","registerPrevious","generatedError","lock","generateWorker","platform","_compressWorker","root","support","defaults","external","decompressed","checkCRC32","optimizedBinaryString","decodeFileName","utf8decode","isNode","isStream","prepareContent","load","fileNameStr","fileCommentStr","_upstreamEnded","_bindStream","_stream","_helper","_read","newBufferFrom","allocBuffer","folder","remove","generateInternalStream","mimeType","checkSupport","generateNodeStream","toNodejsStream","byteAt","lastIndexOfSignature","readAndCheckSignature","readData","checkOffset","checkIndex","setIndex","readInt","readString","readDate","ZIP64_CENTRAL_DIRECTORY_LOCATOR","ZIP64_CENTRAL_DIRECTORY_END","destType","propName","dataIsReady","_tickScheduled","_tickAndRepeat","delay","isFinished","_tick","extraStreamInfo","isLocked","_listeners","mergeStreamInfo","nodestream","_internalType","_outputType","_mimeType","newBlob","_worker","array","string","arraybuffer","nodebuffer","blob","Blob","BlobBuilder","WebKitBlobBuilder","MozBlobBuilder","MSBlobBuilder","getBlob","leftOver","applyFromCharCode","Utf8DecodeWorker","Utf8EncodeWorker","stringifyByChunk","stringifyByChar","applyCanBeUsed","MAX_VALUE_16BITS","MAX_VALUE_32BITS","pretty","FileReader","onload","onerror","readAsArrayBuffer","loadOptions","checkSignature","reader","isSignature","readBlockEndOfCentral","diskNumber","diskWithCentralDirStart","centralDirRecordsOnThisDisk","centralDirRecords","centralDirSize","centralDirOffset","zipCommentLength","readBlockZip64EndOfCentral","zip64EndOfCentralSize","zip64ExtensibleData","readBlockZip64EndOfCentralLocator","diskWithZip64CentralDirStart","relativeOffsetEndOfZip64CentralDir","disksCount","readLocalFiles","localHeaderOffset","readLocalPart","handleUTF8","processAttributes","readCentralDir","zip64","readCentralPart","readEndOfCentral","prepareReader","isEncrypted","bitFlag","useUTF8","fileNameLength","fileName","compressionMethod","versionMadeBy","extraFieldsLength","fileCommentLength","diskNumberStart","internalFileAttributes","externalFileAttributes","readExtraFields","parseZIP64ExtraField","fileComment","extraFields","findExtraFieldUnicodePath","findExtraFieldUnicodeComment","_dataBinary","internalStream","_decompressWorker","nodeStream","queue","outcome","onFulfilled","callFulfilled","otherCallFulfilled","onRejected","callRejected","otherCallRejected","status","immediate","nodeType","binding","isTypedArray","IE_PROTO","__data__","Ue","ze","Le","Ye","He","qe","$e","Ke","Ve","Ze","We","Xe","Fe","Ne","De","Be","Cache","toStringTag","_a","_b","_c","_d","_randbelow","_randrange","getDivisor","method","chunkSize","windowBits","memLevel","strategy","gzip","err","msg","ended","chunks","strm","avail_out","deflateInit2","deflateSetHeader","dictionary","string2buf","deflateSetDictionary","_dict_set","input","next_in","avail_in","output","Buf8","next_out","deflate","onEnd","buf2binstring","shrinkBuf","deflateEnd","flattenChunks","Deflate","deflateRaw","inflateInit2","Z_OK","inflateGetHeader","inflateSetDictionary","Z_FINISH","Z_NO_FLUSH","binstring2buf","inflate","Z_NEED_DICT","Z_BUF_ERROR","Z_STREAM_END","Z_SYNC_FLUSH","utf8border","buf2string","arraySet","inflateEnd","Inflate","inflateRaw","ungzip","Int32Array","setTyped","Buf16","Buf32","Z_PARTIAL_FLUSH","Z_FULL_FLUSH","Z_BLOCK","Z_TREES","Z_ERRNO","Z_STREAM_ERROR","Z_DATA_ERROR","Z_NO_COMPRESSION","Z_BEST_SPEED","Z_BEST_COMPRESSION","Z_DEFAULT_COMPRESSION","Z_FILTERED","Z_HUFFMAN_ONLY","Z_RLE","Z_FIXED","Z_DEFAULT_STRATEGY","Z_BINARY","Z_TEXT","Z_UNKNOWN","Z_DEFLATED","pending_buf","pending_out","total_out","_tr_flush_block","block_start","strstart","max_chain_length","prev_length","nice_match","w_size","w_mask","good_match","lookahead","match_start","window_size","hash_size","head","adler","total_in","insert","ins_h","hash_shift","hash_mask","match_length","_tr_tally","max_lazy_match","last_lit","prev_match","match_available","good_length","max_lazy","nice_length","max_chain","func","pending_buf_size","gzhead","gzindex","last_flush","w_bits","hash_bits","dyn_ltree","dyn_dtree","bl_tree","l_desc","d_desc","bl_desc","bl_count","heap","heap_len","heap_max","depth","l_buf","lit_bufsize","d_buf","opt_len","static_len","matches","bi_buf","bi_valid","data_type","_tr_init","deflateInit","deflateReset","deflateResetKeep","hcrc","extra","time","os","_tr_align","_tr_stored_block","deflateInfo","xflags","extra_len","dmax","wsize","whave","wnext","hold","bits","lencode","distcode","lenbits","distbits","sane","last","havedict","flags","check","total","wbits","ncode","nlen","ndist","have","lens","work","lendyn","distdyn","back","was","inflateReset","inflateReset2","inflateResetKeep","inflateInit","inflateInfo","static_tree","extra_bits","extra_base","elems","max_length","has_stree","dyn_tree","max_code","stat_desc","certificate","seq","RSAPrivateKey","RSAPublicKey","bitstr","PublicKey","objid","null_","octstr","PrivateKey","EncryptedPrivateKey","DSAPrivateKey","DSAparam","ECPrivateKey","namedCurve","utcTime","utctime","generalTime","gentime","setof","seqof","rdnSequence","bool","passphrase","tbsCertificate","subjectPublicKeyInfo","subjectPublicKey","kde","kdeparams","salt","iters","algo","parameters","subtle","importKey","deriveBits","iterations","browser","md5","rmd160","ipad1","ipad2","opad","alg","blocksize","run","clearTimeout","fun","env","argv","off","cwd","chdir","umask","padding","codes","allowHalfOpen","readable","_writableState","highWaterMark","getBuffer","_readableState","destroyed","ReadableState","debuglog","getHighWaterMark","ERR_INVALID_ARG_TYPE","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","pipesCount","flowing","reading","sync","needReadable","emittedReadable","readableListening","resumeScheduled","emitClose","autoDestroy","defaultEncoding","awaitDrain","readingMore","_destroy","_undestroy","undestroy","first","consume","finished","stdout","stderr","hasUnpiped","needDrain","asyncIterator","_fromList","ERR_MULTIPLE_CALLBACK","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","_transformState","transforming","writecb","writechunk","afterTransform","needTransform","writeencoding","entry","callback","pendingcb","corkedRequestsFree","WritableState","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","writableObjectMode","finalCalled","ending","decodeStrings","writing","bufferProcessing","onwrite","writelen","errorEmitted","bufferedRequest","lastBufferedRequest","prefinished","bufferedRequestCount","writev","_writev","isBuf","allBuffers","chunk","hasInstance","setDefaultEncoding","tail","_getString","_getBuffer","customInspect","ERR_STREAM_PREMATURE_CLOSE","req","setHeader","abort","ERR_MISSING_ARGS","ERR_INVALID_OPT_VALUE","Stream","PassThrough","pipeline","_invoke","arg","delegate","_sent","dispatchException","__await","resultName","nextLoc","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","completion","isGeneratorFunction","awrap","AsyncIterator","rval","complete","delegateYield","isS","isChar","isNameStartChar","isNameChar","S_LIST","NAME_RE","isNCNameStartChar","isNCNameChar","NC_NAME_RE","amp","quot","apos","EVENTS","xmldecl","processinginstruction","doctype","opentagstart","attribute","opentag","closetag","cdata","ready","opt","fragmentOpt","fragment","xmlnsOpt","trackPosition","nameStartCheck","nameCheck","isName","processAttribs","processAttribsNS","pushAttrib","pushAttribNS","ns","additionalNamespaces","processAttribsPlain","pushAttribPlain","stateTable","sBegin","sBeginWhitespace","sDoctype","sDoctypeQuote","sDTD","sDTDQuoted","sDTDOpenWaka","sDTDOpenWakaBang","sDTDComment","sDTDCommentEnding","sDTDCommentEnded","sDTDPI","sDTDPIEnding","sText","sEntity","sOpenWaka","sOpenWakaBang","sComment","sCommentEnding","sCommentEnded","sCData","sCDataEnding","sCDataEnding2","sPIFirstChar","sPIRest","sPIBody","sPIEnding","sXMLDeclNameStart","sXMLDeclName","sXMLDeclEq","sXMLDeclValueStart","sXMLDeclValue","sXMLDeclSeparator","sXMLDeclEnding","sOpenTag","sOpenTagSlash","sAttrib","sAttribName","sAttribNameSawWhite","sAttribValue","sAttribValueQuoted","sAttribValueClosed","sAttribValueUnquoted","sCloseTag","sCloseTagSawWhite","openWakaBang","piTarget","tags","topNS","chunkPosition","prevI","carriedFromPrevious","forbiddenState","attribList","reportedTextBeforeRoot","reportedTextAfterRoot","closedRoot","sawRoot","xmlDeclPossible","xmlDeclExpects","entityReturnState","defaultXMLVersion","forceXMLVersion","setXMLVersion","positionAtNewLine","_closed","xmlDecl","ENTITIES","readyHandler","makeError","errorHandler","closed","getCode","getCodeNorm","currentXMLVersion","getCode10","getCode11","skipSpaces","unget","captureTo","doctypeHandler","fromCodePoint","captureToChar","handleTextInRoot","handleTextOutsideRoot","parseEntity","commentHandler","cdataHandler","piHandler","xmldeclHandler","captureNameChars","openTagStartHandler","openTag","openSelfClosingTag","closeTag","textHandler","qname","prefix","attributeHandler","endHandler","resolvePrefix","Set","isSelfClosing","openTagHandler","closeTagHandler","_finalSize","_w","_f","_g","_h","_ah","_bh","_ch","_dh","_eh","_fh","_gh","_hh","_al","_bl","_cl","_dl","_el","_fl","_gl","_hl","_isStdio","readableHighWaterMark","isarray","writableHighWaterMark","fillLast","lastNeed","lastTotal","lastChar","_clearFn","setInterval","clearInterval","unref","enroll","_idleTimeoutId","_idleTimeout","unenroll","_unrefActive","active","_onTimeout","localStorage","noDeprecation","throwDeprecation","traceDeprecation","seen","stylize","colors","showHidden","_extend","NODE_DEBUG","pid","bold","italic","underline","inverse","white","grey","black","blue","cyan","green","magenta","yellow","special","undefined","regexp","v1","node","clockseq","msecs","nsecs","Object_keys","defineProp","globals","Context","Script","runInContext","display","contentWindow","eval","execScript","runInNewContext","createContext","isContext","createScript","CHAR","NAME_START_CHAR","NAME_CHAR","CHAR_RE","S_RE","NAME_START_CHAR_RE","NAME_CHAR_RE","NMTOKEN_RE","RESTRICTED_CHAR","RESTRICTED_CHAR_RE","isRestrictedChar","isCharAndNotRestricted","NC_NAME_START_CHAR","NC_NAME_CHAR","NC_NAME_START_CHAR_RE","NC_NAME_CHAR_RE","webpackEmptyAsyncContext","HomeComponent","ngZone","printService","router","authenticationService","jobService","userService","uiRakecutMgr","selectionMgr","uiEditWall","uiEditLength2","uiEditWidth2","uiCutout","uiCutBeam","_lightbox","frameId","loadCompleted","oldOverhangBack","sldExistingWidth2Visible","sldExistingLength2Visible","isVisible","isVisibleMoreInfo","isVisibleOpenModal","isVisibleProperty","production","isVisibleDiscount","isSaveAs","addCostInstallDes","isUploading","costList","jobNoSearch","cusNameSearch","isSearching","isOpening","isPricing","isAdmin","statusError","statusText","NEW","maxSpan","maxSpanText","maxThickness","maxBaySizeText","maxBaySize","maxBeamSizeText","beamSizeList","houseBeamSizeList","thicknessList","baseFixingTypeList","columnTypeList","oldBuildingInfo","currentStep","currentStepNew","newOpenType","existingHouseType","roofPercent","releaseDate","currentBuildingInfo","currentQuoteInfo","roofHeight","upFasciaBracketList","_patiosRoofType","FLAT_ROOF","_isFBRoof","panelType","RIBSPAN","_albums","APP_CONFIG","activeLeftMenu","geometryManager","Instance","materialManager","eaveManager","existingWallManager","fasciaManager","existingRoofManager","groundManager","dimensionManager","printingManager","currentUser","subscribe","fasciaBracketList","el","resizeEventHandle","resize","ins","logout","navigate","user","initObject","accordion","init3D","uiManager","loadAll","optimize","enable","sltExistingType","setSelected","EXISTING_TYPE","sltRoofPitch","patiosPitch","renderStatic","cancelAnimationFrame","canvas","rendererCanvas","nativeElement","viewerContainer","clientWidth","clientHeight","renderer","antialias","preserveDrawingBuffer","setSize","localClippingEnabled","scene","camera","addShadowedLight","control","domElement","maxDistance","maxPolarAngle","degreesToRadians","animate","dialogEditBay","show","intensity","directionalLight","runOutsideAngular","readyState","aspect","updateProjectionMatrix","precision","_quoteInfo","quoteInfo","_gst","_totalPrice","clientInfo","supplyType","nett","addCostInstall","supplyOnlyKits","fasciaInstall","flyOverInstall","installMaterial","perPostInstall","addCost","_info","gst","totalPrice","total0","calcQuoteInfo","statusCode","_totalPriceTmp","_discount","discount","_deposit","deposit","_stage1","stage1","_stage2","stage2","_finalPayment","discountPer","depositPer","stage1Per","stage2Per","finalPayment","_count","_ret","windClass","_maxRibspanOverhang","getMaxOverhang","patiosRoofType","GABLE_ROOF","isFBRoof","sldLeftOverhang","setMax","sldRightOverhang","listBay","_maxBay","maxBy","_fasciaUpstand","sltFasciaUpstandBrackets","currentValue","_beamType","sltBeamType","_beamSize","sltBeamSize","currentText","_size","_sizeInt","_maxValue","sldFrontOverhang","sldBackOverhang","buildingInfo","bindBuildingInfo","calcRibSpanInfo","ribSpanInfo","maxPostSpacing","noOfPost","overhangLength","overhangLeft","overhangRight","overhangFront","overhangBack","current3DOverallRoofLength","totalBayLength","noOfBays","roofOverallLength","baySpacing","sldBaySize","setValue","sldNoOfBay","noOfInternalRafter","noOfInternalBeam","patiosManager","loadRafterBeamAndInternalBeam","numOfInternalRafter","numOfSpanBeam","numOfMultiSpanBeam","onUIChanged","isOpen","loadBracket","loadBracketCutout","listPosts","existingType","_structureType","structureType","existingLength","existingLength2","minHeight","columnType","roofSheetingType","roofPitch","span","EXISTING","tan","existingWallHeight","calcBOMByPara","maxInfo","BOMInfo","additionalBOM","_isChanged","beamSize","beamType","minBeamSize","chkHasHouseBeam","houseBeamSize","minHouseBeamSize","sltHouseBeamSize","thickness","sltRoofThickness","setSelectedAndHandleEvent","minThickness","flyoverBracketNumber","flyoverBracketNumberCutOut","fasciaBracketNumber","fasciaBracketNumberCutOut","loadSideGableBracket","sltStructureType","onStructureTypeChanged","backFascia","fasciaBracketHeight","fasciaUpstandBrackets","eaveHeight","buildingHeight","BUILDING_HEIGHT_OFFSET","loadFromObject","sldExistingWallHeight","FBRoof","isReload","panelBOM","onRefresh","checkData","cb","customText","genJobNo","userId","cbJob","jobNo","warning","cusName","info","depositText","stage1Text","stage2Text","updateCustomText","rs","onQuickSaveAs","copyOrRevisedById","list","_maxInfo","COPY","REVISE","_diff","compareObject","_url","uploadUrl","engineeringFile","quotationFile","_link","href","click","updateJobFiles","success","_depositPer","_stage1Per","_stage2Per","createJob","item","_maxSpan","jobInfo","_jobInfo","uploadFolder","pathLogo","mediaFolder","pathPDF","SAVE","sltPanelDirectionShow","print","UpdateJob","printTest","_groups","_posts","userData","SUPERIOR_POST","_patios","PATIOS","res","qty","groups","FLY_OVER_BRACKET","RECEIVER_CHANEL","ROOF_PANEL","UPSTAND_BRAKET","UPSTAND_BRAKET_EXT","UPSTAND_BRAKET_CUTOUT","RIDGE_CAPPING","SUPERIOR_CENTER_POST","getPosts","cutoutCondition","sltCutOut","YES","NONE","sldExistingLength2","rakeCutCondition","sltLeftCutType","sltRightCutType","elementArray","extFlyoverBrackets","flyoverBrackets","flyoverBracketCutOuts","fasciaBrackets","fasciaBracketCutouts","getInfoFromGeometry","getInfoFromGeometryGableRoof","_bottomColourValue","sltColourRoof","items","bottomValue","_existingType","_buildingInfo","sldExistingLength","existingWidth1","sldExistingWidth1","existingWidth2","sldExistingWidth2","existingRoofPitch","sltExistingRoofPitch","fasciaDepth","sldFasciaDepth","eaveWidth","sldEaveWidth","wallType","sltWallType","existingRoofType","sltExistingRoofType","flyoverBracketHeight","sldFlyOverBracketHeight","extFlyoverBracketNumber","sltUpFasciaUpstandBracket","sltPanelDirection","sltWindClass","sldSpan","multiSpan","sldMultiSpan","sldBuildingHeight","frontOverhang","backOverhang","baySize","noOfBay","leftOverhang","rightOverhang","sldRoofOverallLength","roofOverallWidth","sldRoofOverallWidth","sldMinHeight","isRapidSetCement","chkRapidSetCement","hasHouseBeam","isDripBarge","sltDripBarge","cutOut","leftCutType","rightCutType","leftCutVertical","sldLeftCutVertical","leftCutHorizontal","sldLeftCutHorizontal","rightCutVertical","sldRightCutVertical","rightCutHorizontal","sldRightCutHorizontal","sltRoofSheetingType","flatBottom","sltFlatBottom","bargeType","sltBargeType","receiverType","sltReceiverType","zFlashingType","sltZFlashingType","downpipeType","sltDownpipeType","gutterType","sltGutterType","sltColumnType","baseFixingType","sltBaseFixingType","colourBottomRoof","colourRoof","colourBarge","sltColourBarge","colourGutter","sltColourGutter","colourZFlashing","sltColourZFlashing","colourPost","sltColourPost","colourBeam","sltColourBeam","colourBracket","sltColourBracket","colourFasciaBracket","sltColourFasciaBracket","colourDownpipe","sltColourDownpipe","_costList","dialogAddCost","_temp","_old","omitBy","_equal","dialogBOM","showTest","price","onResetIdx","onCalcPrice","idx","maxIdx","_maxIdx","getJobByUserId","dataOPEN","getById","roles","admin","_template","flyOverBracketHeight","rakeCutVertical","rakeCutHorizontal","roofType","suburb","postcode","phone","userNote","totalWidth","realWidth","BOTH","FASCIA_UPSTAND","setValueAndHandleEvent","upstandBraketType","isUpFasciaUpstandardBracket","navigateByUrl","thumbnailFile","album","src","caption","thumb","oldVal","setBeamSize","setMaxSpan","validateCutout","boxHelper","patiosGroup","geometry","boundingBox","onShowOpenModal","onSaveAs","onShowSaveModal","onViewBOM","onOpenFiles","onChangeToInsulatedPanel","onCancel","onNewConnectionType","onSearch","onSupplyTypeChange","onShowAddCostClick","calcPayment","onsltUpFasciaUpstandBracketChange","onRoofSheetingTypeChanged","onApplyToAll","onOpenPropertyClick","showEditBay","onBtnRakeCutLeftClick","onBtnRakeCutRightClick","onBtnCutoutClick","templateUrl","styleUrls","CutBeamManager","selMgr","controls","Controls","LENGTH1","LENGTH2","WIDTH1","WIDTH2","SPAN","MULTI_SPAN","OVERHANG_FRONT","BAYS","OVERHANG_RIGHT","EAVE_WIDTH","STRUCTURE_TYPE","CUTOUT","PATIOS_ROOF_PITCH","FASCIA_DEPTH","EXISTING_ROOF_PITCH","FLYOVER_BRAKET_HEIGHT","FASCIA_UPSTAND_BRAKET","EXISTING_WALL_HEIGHT","ROOF_SHEETING_TYPE","ROOF_THICKNESS","addControlOptions","CUT_BEAM","container","addControl","offsetZ","offsetX","FASCIA","LEFT","RIGHT","BACK_FASCIA_UPSTAND","existingLength1","cutOutType","FLY_OVER","BLACK_FLY_OVER","offsetY","FIT_FROM_TOP_TO_CUTBEAM","totalHeightFromEaveHeightToTopOfFlyoverBraket","isCut","material","UI_CONTROL_EXIT_CUTBEAM","UI_CONTROL_CUTBEAM","bayIndex","calcShouldSnapRoofToExistingWhenCutout","FREE_STANDING","EAVE","EXISTING_ROOF","totalHeightFromEaveHeightToTopOfExistingRoof","braketHeight","providedIn","CutOutManager","startX","CLICK_CONTROL_CUTOUT","APP","pos","rotation","EditLength2Manager","UI_CONTROL_LENGTH2","event","object","onDrag","distance","maxValue","minValue","EditWallManager","UI_CONTROL_EDIT_WALL_LENGTH1","UI_CONTROL_DELETE","UI_CONTROL_EDIT_WALL_WIDTH1","UI_CONTROL_EDIT_WALL_LENGTH2","UI_CONTROL_EDIT_WALL_WIDTH2","EditWidth2Manager","UI_CONTROL_WIDTH2","UIRakecutManager","updateFnc","box1","ColumnAndPurlinManager","app","backFlyOverManager","deferTimeout","CUTOUT_DEFFER_TIME_OUT","numberOfBracketBack","DEFAULT_BRACKET_NUMBER","numberOfBracketCutout","DEFAULT_BRACKET_CUTOUT_NUMBER","MANAGER","registerEvent","bracketHeight","S65x3","bracketWidth","geo_bracket","rotateX","translate","geo_superiorBeam","getBeam","rotateY","geoBeamJoint","getBeamJoint","geoHouseBeamJoint","getHouseBeamJoint","geo_RafterBeam","geo_rafterBeamEndCap","getBeamEndCap","geo_superiorHouseBeam","getHouseBeam","geo_beamRakecutLeft","geo_beamRakecutRight","geo_beamStepRakecutLeft","geo_beamStepRakecutRight","geo_beamEndCap","geo_houseBeamEndCap","getHouseBeamEndCap","geo_superiorPost","getPost","geo_groundBase","geo_downPipe","getDownPipe","geo_downPipeL","getDownPipeL","DOWNPIPE","downpipeGroup","SUPERIOR_BEAM","GROUND_BASE","beamLeftCutSizeInfo","getBeamRakeCutInfo","beamRightCutSizeInfo","extraOffsetZ","geo_existingWallL1","cutoutExistingBothLength","addSuperiorBeam","front","addBeamAngelRakecut","addBeamStepRakecut","cutout","addGround","fitX","getContainerOffsetXToFitBraketToExistingWall","addPostOrBracket","addPostAngleRakecut","addPostOrBracketBack","addPostOrBracketBackCutout","addPostStepRakecut","showBeamOutline","updateUI","BEAM_OUTLINE","beamLayoutShow","objs","meshes","outlineGeo","getOutlineGeometryFromMeshNoScale","updateWorldMatrix","applyMatrix4","matrixWorld","extraWallWidth","geo_existingWallW1","EAVE_OFFSET_BACK","beamLength","EXISTING_WALL","SUPERIOR_RAFTER_BEAM","SUPERIOR_INTERNAL_BEAM","fitIfNotWidth2","endMainLeftX","endMainRightX","addRafterSuperiorBeam","rakeCutLeftType","STEP","rakeCutLeftHor","rakeCutLeft","rakeCutRightType","rakeCutRightHor","rakeCutRight","addInternalRafterBeam","cutOutForSpan","cutOutForMultiSpan","numOfRafter","mainRoofLength","endCutoutLeft","mainRoofLeft","mainRoofRight","listRafterPos","rafterSpacing","maxBeamOverhang","getMaximumBeamOverhang","offsetXRafter","isMainRoof","reSeperateRafterPosition","addInternalBeam","startZ","internalBeamSpacing","addInternalSuperiorBeam","endCutoutRight","beamWidth","mainRafter","endX","addInternalBeamFromStartToEnd","cutoutRoofLength","getCutoutRoofLengthToGenerateCutoutRafterBeam","cutoutLeftRafter","cutoutRightRafter","cutInternalBeamWithRakeCut","fromX","toX","visible","beamHeight","scaleX","viewType","PLAN","lineType","DASHED","getBracketHeight","mesh","BEAM","setX","capL","BRACKET_WARNING","SUPERIOR_BEAM_END_CAP","currentBeamEndCapColorCode","capR","beamGroup","offsetZFrontBeam","ANGLE","rakeCutVerLength","k_","rakeCutHorLength","beamLine","beamRakeCutLength","cosAngleFrontHor","startRakeCut","endRakeCut","rakeCutLine","intersection","getIntersectionOnAPoint","isPositive","start","rakeCutLeftVer","rakeCutRightVer","userDataPos","beamGeoLength","shouldCutByRakeCut","cutRafterBeamWithRakeCut","newStartZ","newLength","fitYForNewStartZPoint","isNil","fitBeamWidthToCut","CONTINOUS","getRafterBeamMaterial","getBeamEndCapForRafterBeam","rotateZ","endZ","braketWidth","cutFrontZ","cutBackZ","nBottom","pBottom","planeBottom","setFromNormalAndCoplanarPoint","nVer","pVer","planeVer","clippingPlanes","offsetXL","offsetXR","matEndCap","getRafterBeamEndCapMaterial","checkExec","lowerBraketName","higherBraketName","setY","heightPlane","planeTop","matrixTranslateTop","makeTranslation","matrixRotateTop","makeRotationX","matrixTotalTop","multiply","heightRealBottom","matrixTranslateBottom","matrixRotateBottom","matrixTotalBottom","BRACKET","frontPostHeight","lsGeometries","box","simplifyGeo","objectType","vertices","beamGroups","updateMatrix","objCloned","getInverse","matrix","planView","getPlanVerticesOfBeam","rafterBeamGroups","getOutlineRafterBeam","geo","getAttribute","lineGeo","BASE","meshPost","POST","postOffsetZ","bracketOffsetZ","scalePostY","scaleBracketY","FRONT","bracketOffsetX","postOffsetX","exceedMoveBackLimit","moveToBack","moveBack","getHeightByAngle","patiosLength","meshBracket","getBraketMaterial","boxPost","setFromObject","isIntersect","listEave","eave","boxEave","intersectsBox","translateX","bracketDistance","extraWalWidth","houseBeamHeight","columnAndPurlinManager","postLeft","bracketLeft","isIntersectPost","boxEl","rakecut","offsetZF","scaleYF","moveRight","moveLeft","posts","offsetZB","scaleYB","postFront","postBack","post","scaleY","bracket","offsetFitYWhenRoofUpstand","cutStandardBeamByCutBeamWithinBayControl","cutStandardBeamToEqualLengthBeam","beamGeo","beamCapGeo","rot","directionOffset","jointGeo","beamStartX","beamEndX","numOfBeam","MAXIMUM_LENGTH_PER_BEAM","lengthPerBeam","createBeamGroup","hasStartCap","hasEndCap","hasStartJoint","hasEndJoint","endOfBayX","startCutBeamX","endCutBeamX","beams","getListSeperateBeamsByBays","scaleZ","offsetXStart","offsetXEnd","rotY","atan","rotX","setZ","angle","fitZ","beam","unregisterEvent","eventHandleId","uiChangedDefer","objectSizeChangedHandle","objectSizeChanged","controlsToRegisterEvent","controlsToRegisterEvent2","addAction","removeAction","pre","cur","rafterBeamAndInternalBeamInfo","previousValue","deferHandle","DimensionManager","listText","dimensionDistance","dimensionDistance2","dimensionDistance3","textDistance","isReady","DIMENSION_TEXT","getDimensionLine","lineCapGeo","getDimensionCap","unload","loader","dimensionPatiosFrontBottom","DIMENSION","dimensionPatiosFrontRight","dimensionPatiosRightBottom","dimensionPatiosRightLeft","dimensionPatiosRightRight","dimensionPatiosLeftBottom","dimensionPatiosLeftRight","dimensionPatiosLeftLeft","dimensionPatiosPlanRight","dimensionPatiosPlanBottom","dimensionPatiosPlanLeft","dimensionPlanMiddle","dimensionPlanMidleLeft","dimensionPatiosLowerHeightDim","dimensionPatiosFlyOverBraketHeightDim","modelBaseUrl","textParameter","curveSegments","linePos","allowDrag","textPos","labelType","hasTextClone","axis","subtype","textUserData","onDragCallback","onDimDrag","onDragStartCallback","onDimDragStart","draw","groupType","LOWER_HEIGHT_DIM","BRAKET_HEIGHT_DIM","RAKE_CUT_LEFT_HORIZONTAL","RAKE_CUT_RIGHT_HORIZONTAL","LEFT_OVERHANG","RIGHT_OVERHANG","BAY","RAKE_CUT_RIGHT_VERTICAL","FRONT_OVERHANG","BACK_OVERHANG","RAKE_CUT_LEFT_VERTICAL","totalBaySize","getSceneBox","drawDimensionLowerHeightDim","drawDimensionFlyOverBraketHeightDim","drawDimensionPatiosPlanBottom","drawDimensionPatiosPlanRight","drawDimensionPatiosPlanLeft","drawDimensionPatiosFrontBottom","drawDimensionPatiosFrontRight","drawDimensionPatiosLeftBottom","drawDimensionPatiosLeftRight","drawDimensionPatiosLeftLeft","drawDimensionPatiosRightBottom","drawDimensionPatiosRightLeft","drawDimensionPatiosRightRight","drawDimensionMidle","drawDimensionMidleLeft","offsetZBackPos","textStr","getDimensionValue","dimBay","offsetZFrontPos","origin","hand1","hand2","geoLine","dim","textGeo","RIGHT_TO_LEFT","bayNum","_offsetX","DIMENSION_LINE_RAKECUT","dimRake","addOverhang","repositionDimension","PLAN_BOTTOM","handlerDimDragEvent","startPos","startMatrix","startBayLength","dimType","offsetDimensionZ","dimLength","textCloneUserData","textCloneRotation","textCloneVisible","dimSpan","optionsMul","dimMul","extraDistance","optionsRake","offsetRight","offsetLeft","PLAN_RIGHT","PLAN_LEFT","dimOffsetY","groupDim","offsetLength","scaleLength","cap1","DIMENSION_CAP","cap2","DIMENSION_LINE","addArrowForLine","FRONT_RIGHT","patiosBox","dimBox","getObjectBoundingBox","length1","length2","intersectBox","objBox","LEFT_RIGHT","RIGHT_LEFT","dimOffsetZ","subType","overhangValue","side","rotateText","overhang","textSize","getSize","textCover","TEXT_COVER","lsText","_clone","_box","_points","getStartEndPoint","_line","setFromPoints","getDimInfo","startEnd","projectPoint","closestPointToPoint","_pos","addVectors","subVectors","multiplyScalar","uiChanged","preVal","curVal","planLeftBox","PatiosBackFlyOverManager","ignoreBayEvent","firstLoad","isGroup","roofManager","dimesionManager","registerEvents","bracketQuantity","addEndRafterBeam","dimensionOutline","getOutlines","getSection","getOutLines","unRegisterEvent","updateEventHandle","updateDefer","sltBeamLayoutShow","btnTurnOnPanel","patiosWidth","getPatiosBox","expandByPoint","CUTOUT_ALLOW","RoofManager","ROOF","geo_RoofPanel","getRoofRibspanPanel","changeGeoColor","roofColor","geo_roofPanelBargeCappingLeft","getRibspanBarge","geo_roofPanelBargeCappingRight","geo_roofPanelBargeCappingFront","geo_bargeRakecutLeft","geo_bargeRakecutRight","geo_gutterFront","getGutter","geo_gutterCap","getGuterEndCap","geo_cutoutLeft","geo_cutoutRight","geo_rakecutLeft","geo_rakecutRight","geo_bargeCutoutLeftHor","geo_bargeCutoutRightHor","ROOF_PANEL_BASE","ROOF_PANEL_BARGE_CAPPING","ROOF_PANEL_DRIP_BARGE_CAPPING","GUTTER_PATIOS","ROOF_PATIOS","SHEET_OUTLINE","roofLength","addRoof","addCutout","addAngelRakeCut","addStepRakecut","roofGroup","clipingPlaneLeft","clipingPlaneRight","ROOF_BASE","roofWidth","roofSheetingCount","panelDirectionOfset","LEFT_TO_RIGHT","totalPanelLength","addRoofSheeting","csg_cutoutLeft","csg_cutoutRight","addBargeCapping","addBargeAngelRakecut","addBargeStepRakecut","addGutter","showPanelOutline","showRoof","isSpan","isMultiSpan","gutterGroupObjs","gutterObjs","group","roofClipingPlaneLeft","roofClipingPlaneRight","clipOutline","simplifiedGeo","ROOF_COVER","makeRoofPolygon","convertHexColorToRgb","panelColor","getHexString","polygon","getRoofCoverPolygonForLRRoof","MESH_OUTLINE","flag","tmpGeo","computeFaceNormals","mergeVertices","computeVertexNormals","getRoofOffsetY","csgObjs","panelLength","startZOfPanel","matrixBefore","meshResult","csgObj","toMesh","fromMesh","csg_rakecutLeft","csg_rakecutRight","buferGeo","fromGeometry","newGeo","fromBufferGeometry","geo_existingWallL2","BARGE","offsetXF","offsetXL1","offsetXL2","offsetXR1","offsetXR2","offsetZL","offsetZR","offsetZFront","bargeFrontLength","scaleCutoutVer","getHypotenuseByCos","bargeLeftLength","bargeRightLength","bargeCutoutHorLength","BARGE_ROOF_OFFSET_X","scaleXF","scaleZLeft","scaleZRight","bargeVer","bargeHor","gutterLength","gutterGroup","createGutterGroup","addDownPipe","meshPipe","DOWNPIPE_NOZZLE","onColorChanged","existingWallW1","mesh_CutoutLeft","transparent","opacity","mesh_CutoutRight","mesh_rakecutLeft","mesh_rakecutRight","BaseManager","controlsReload","onUIChangePtr","onUIChange","onGeometryChangePtr","onGeometryChange","materialMgr","handler","ctrl","dimensionPlanTop","dimensionPlanLeft","planLeft","dimensionEaveHeight","dimensionRightTop","dimensionRightRight","dimensionLeftTop","dimensionLeftLeft","dimensionFrontTop","dimensionFrontLeft","LENGTH_1","LENGTH_2","WIDTH_1","WIDTH_2","EAVE_HEIGHT_DIM","DIRECTION_TEXT","trai","phai","truoc","sau","drawDimensionPlanTop","drawDimensionPlanLeft","width1","width2","drawDimensionEaveHeight","drawDimensionFrontTop","drawDimensionFrontLeft","drawDimensionLeftTop","drawDimensionLeftLeft","drawDimensionRightTop","drawDimensionRightRight","calulateBoundingBox","textOffsetX","updateMatrixWorld","_isDisable","_dimensionDistane","dimensionOffsetX","EXTRA_BRACKET_HEIGHT","dimGroup","dimenstionOffsetY","dimenstionOffsetZ","existingHouseObjs","existingHouseBox","getObjectsBoundingBox","dimPatiosLeft","textMesh","parameter","totalSpanSize","instance","EaveManager","translateY","translateZ","geo_eaveWidth1","geo_eaveWidth2","_scaleX","_scaleZ","geo_eaveLength1","addEave","getOutlineGeometryFromMesh","backOverhangL1","backOverhangL2","backOverhangW1","backOverhangW2","geo_existingWallW2","ExistingRoofManager","materialL1","materialL2L","materialL2R","materialW1L","materialW1R","materialW2L","materialW2R","uiReloadChange","translateWidth","translateHeight","geo_existingWallL","geo_existingWallW","clipingWidth","clipingLength","clipingHeight","addExistingRoof","dis","getClipingPlaneDistance","planeL1L","planeW1L","planeL1R","planeW1R","planeW2L","planeL2L","planeW2R","planeL2R","p1","p2","p3","v2","v2p","plane","_plane","AC","BC","CD","BD","CE","DG","extraLength","tt","EXISTING_ROOF_TEXTURE","W1","repeat","W2","L1","L2","ExistingWallManager","DEFAULT","translateLength","addEaveWall","wallSide","EXISTING_WALL_W1_TEXTURE","mat","EXISTING_WALL_L1_TEXTURE","EXISTING_WALL_L2_TEXTURE","EXISTING_WALL_W2_TEXTURE","sum","current","postAndBeamManager","beamInfo","offsetDimensionX","dimOffsetX","planRightBox","planBottomBox","planBottomBoxWidth","ExistingBuildingManager","PostAndBeamManager","existingManager","uiCHangedDefer","beamRakecutInfoLeft","beamRakecutInfoRight","postInfo","downpipeStepRakeCutGroupLeft","downpipeStepRakeCutGroupRight","enableCutout","addBeam","addBeamAngleRakecut","offsetXOrigin","addPost","addDownPipeStepRakecut","cutSpanFitBeamLength","getOffsetHeightForRafterBeamByRoofPitch","getRoofBase","pipeLength","createDownpipeGroup","_flag","getHeightByRoofPitch","postRight","beamGeoTranslationZ","beamDirection","createBeamGroup2","cutSide","beamSizeInfo","rotYL","rotYR","addPostForBeamAngelRakecut","beamMatrix","ver","pMid","pOri","pMid2","spanLength","totalSpanLength","roofInfo","bargeLeftInfo","bargeRightInfo","receiverCutoutLeftHor","getRibspanReceiverChannel","receiverCutoutRightHor","receiverCutoutLeftVer2","receiverCutoutRightVer2","receiverCutoutLeftVer","receiverCutoutRightVer","geo_receiverChanel","gtExtraOffsetY","gutterInfo","gutterRakecutLeftInfo","gutterRakecutRightInfo","geoCutGutter","HIGHLIGHT_BOX","_roofLength","roofLengthPlus","addRoofGroup","addAngleRakeCut","roofPanelCount","clipingPlane","cuted","isOver","addBarge","addGutterAngelRakecut","addGutterStepRakecut","roofClipingPlane","offsetSheet","_offsetZ","GUTTER_ROOF_OFFSET_Z","_rotY","_angle","hypotenuse","scaleWidth","meshCutGutterLeft1","csgCutGutterLeft1","meshCutGutterLeft2","csgCutGutterLeft2","meshCutGutterRight1","csgCutGutterRight1","meshCutGutterRight2","csgCutGutterRight2","offsetXB","offsetZLeft","offsetZRight","scaleXB","scaleCutoutHor","scaleZL","scaleZR","exLength","gutterMesh","GUTTER","meshClipped","createGutterGroupWithMesh","rc_offsetXL","rc_offsetXR","rc_offsetZL","rc_offsetZR","rc_offsetY","rc_rotYL","rc_lengthL","rc_rotYR","rc_lengthR","gutterRakecutGroupLeft","gutterRakecutGroupRight","gutterRakecutGroup","gutterHor","FasciaManager","geo_fasciaW1","geo_fasciaL1","addFascia","_offsetY","_scaleY","offsetBraketZ","geoBraket_2","offsetYBraket","geoBraket_1","addUpstandBraket","addUpstandBraketCutOut","shouldSnap","shouldSnapRoofToExistingWhenCutout","getUpstandBraket","geoBraketExtL_2","geoBraketExtR_2","geoBeam","geoHouseBeam","geoBeamEndCap","geoHouseBeamEndCap","existingTypeLeftX","existingTypeRightX","addUpstandBraketExt","addPostAngelRakecut","addUpstandBeam","cutOutLength","getOffsetFromExistingBuildingToBackBeam","cutoutBackZ","fitBeamYWhenUpStand","cutoutWidth","totalLength","offsetHeightCutout","numOfBraket","_bracketOffsetXExt","bayMainLength","optionBrakets","FASCIA_BRACKET","posX","_height","getRoofHeight","braketGroup","outlineGeo1","condition","_cond1","_cond2","fitYForBackFasciaRoof","zFlashingGeo","getZFlashing","zFlashingRakecutRightGeo","geoReceiveChannelLeftInfo","geoReceiveChannelRightInfo","bargeFrontInfo","bargeBackInfo","cuted2","isOver2","addGutterAngelRakeCut","addGutterStepRakeCut","bargeCutOutVerLength","receiveChanelLength","receiveChanelScale","ColumnAndBeamManager","flyOverManager","numberOfBracketsBack","columnAndBeamManager","cutoutLengthInExistingBoth","bracketOffsetY","dimensionPatiosPlanLeftOverHang","arrow","bufferGeo","verties","PatiosFlyOverManager","geo_roofPanelBargeCappingBack","geo_gutterBack","addStepRakeCut","addGutterAngleRakecut","bargeBackLength","offsetXLL","offsetXLR","offsetXRR","offsetXRL","offsetLZ","offsetRZ","gutterLengthL","gutterLengthR","endCapMesh","endCapMesh2","beamColor","meshLBottom","meshLTop","meshPipeConnect","beamObjs","freeStandingManager","dimensionPatiosHigherHeightDim","drawDimensionHigherHeightDim","backPostHeight","HIGHER_HEIGHT_DIM","PatiosFreeStandingManager","OFFSET_TOLE_AND_BASE","dimLeft","createArrowLine","textLeft","createText","dimRight","textRight","GableFBExistingBuildingManager","downpipeGroupRight","downpipeGroupLeft","geo_centerSuperiorPost","getCenterPost","getRafterBeam","getRafterBeamEndCap","addCenterSuperiorBeam","addHorSuperiorBeam","addCenterPost","fitBeam","addDownPipeRight","addDownPipeLeft","anotherViews","beamName","beamStartZ","beamEndZ","endOfBayZ","startCutBeamZ","endCutBeamZ","getListSeperateBeamsByBaysForFbGable","posZ","beamOffsetX","RAFTER_BEAM_SIZE","heightReal","makeRotationZ","heightPlaneBottom","translateZBottom","SUPERIOR_RAFTER_BEAM_END_CAP","ridgeGeo","getRibspanRidgeCapping","addRoofGroupRight","addRoofGroupLeft","offsetFront","offsetBack","clipingPlaneFront","clipingPlaneBack","addRoofRight","addRoofLeft","addBargeRight","addBargeLeft","addGutterRight","addGutterLeft","addRidgeCapping","roofGroupRight","roofGroupLeft","clipOutlineBasePanel","ridgeCapping","createOutline","getRoofCoverPolygonForFBRoof","panelDirection","fitScale","ridgeFront","createRidgeCapping","ridgeLength","leftCap","rightCap","GableFBFasciaManager","numberOfBracketsSide","addBraketOrBeamSideRoof","numOfBrakets","addBargeCappingRight","addBargeCappingLeft","eaveThickness","offsetXExtra","fixX","PatiosGableFBFlyOverManager","addRoofSheetingRight","addRoofSheetingLeft","FIT_SHEETING","FIT_SHEETING_BASE","downpipeGroupBack","addDownPipeFront","addDownPipeBack","PatiosGableFreeStandingManager","addRoofFront","addRoofBack","addRoofSheetingFront","addRoofSheetingBack","addBargeCappingFront","addBargeCappingBack","addGutterFront","addGutterBack","roofGroupFront","roofGroupBack","GableLRFasciaManager","getReceiverChannel","addRoofGroupFront","addRoofGroupBack","addBargeFront","addBargeBack","PatiosGableLRFlyOverManager","totalLengthCutOut","roofBackLength","angleLength","isShowLeftBarge","isShowRightBarge","roofFrontLength","GeometryManager","S65x110","S65x110_JOINT","S65x110_ENDCAP","S65x160","S65x160_JOINT","S65x160_ENDCAP","S65x210","S65x210_JOINT","S65x210_ENDCAP","S65x260","S65x260_JOINT","S65x260_ENDCAP","TIMBER_BEAM","S140x45","S190x45","S150x50","S200x50","S150x75","S200x75","S250x75","S150x50_ENDCAP","RidgeCapping","S_Ridge_Custom","S65x65","S90x90","TIMBER","CENTER_POST_TIMBER","RIBSPAN_PANEL","RIBSPAN_BARGE","RIBSPAN_RECEIVER_CHANNEL","RIBSPAN_RIDGE_CAPPING","MONO_PANEL","S50MM","S50MM_BASE","S75MM","S75MM_BASE","S100MM","S100MM_BASE","S125MM","S125MM_BASE","S150MM","S150MM_BASE","CORRO_PANEL","BRAKET_1","BRAKET_2","MONO_PANEL_BARGE_CAPPING","CORRO_PANEL_BARGE_CAPPING","MONO_PANEL_DRIP_BARGE_CAPPING","CORRO_PANEL_DRIP_BARGE_CAPPING","MONO_PANEL_RECIEVER_CHANEL","CORRO_PANEL_RECIEVER_CHANEL","SQUARE_LINE","SQUARE_LINE_END_CAP","QUAD_150","QUAD_150_END_CAP","PIPE_S90MM","L_S90MM","Z_FlASHING","S50","S75","S100","S125","S150","LINE","CAP","UI_CONTROL","loadExistingRoof","loadExistingWall","loadFascia","loadEave","loadSuperiorBeam","loadBeamJoint","loadRidgeCapping","loadSuperiorPost","loadFlyOverBracket","loadMonoPanel","loadRibspanPanel","loadRibspanBarge","loadRibspanRidgeCapping","loadRibspanReceiverChannel","loadCorroPanel","loadMonoPanelBargeCapping","loadCorroPanelBargeCapping","loadMonoPanelDripBargeCapping","loadCorroPanelDripBargeCapping","loadGutter","loadMonoRecieverChanel","loadCorroRecieverChanel","loadDownPipe","loadZFlashing","loadBraket","vWidth","vHeight","vLength","getGeometryLength","downloadFile","vW","vH","vL","downloadFileEx","geo1","geo2","geo3","geo4","geo5","geo6","geoEndCap","geoTimber","ROOF_AND_BASE_OFFSET_X","cloneGeometryInfo","roofPanel","part","GroundManager","GROUND","geo_ground","addBase","cubeTextureLoader","setPath","cubeTexture","MaterialManager","textureLoader","groundTexture","wrapS","wrapT","anisotropy","WALL","HIDDEN_UI_CONTROL","HIGHLIGHT_DIMENSION_TEXT","BEAM_TRANSPARENT","vertexColors","ZFLASHING","loadTexture","texture","TEXTURE_UI_CONTROL_CUTBEAM","sizeAttenuation","TEXTURE_UI_CONTROL_EXIT_CUTBEAM","TEXTURE_UI_CONTROL","TEXTURE_UI_CONTROL_DELETE","TEXTURE_TIMBER","existingRoofTypeChanged","beamColorChanged","postColorChanged","bargeColorChanged","gutterColorChanged","downpipeColorChanged","bracketColorChanged","fasciaBracketColorChanged","roofColorChanged","roofBaseColorChanged","zFlashingColorChanged","postType","postColor","needsUpdate","Objects","baseColourList","disabled","roofColourList","beamColourList","beamEndCapColorCode","postColourList","rakeCutTypeList","rakeCutType","downpipeColourList","flyoverColourList","fasciaColourList","existingRoofPitchList","roofPitchList","gableRoofPitchList","wallList","structureTypeList","structureTypeListGableLR","structureTypeListGableFB","existingTypeList","windClassList","windClassListGable","roofSheetingTypeList","bargeTypeList","receiverTypeList","flatBottomList","downpipeTypeList","gutterTypeList","beamTypeList","columnTypeList2","columnHeight","customer","cutOutList","roofTypeList","PolygonUtils","getVectorLength","vector","dotProduct","v0","getProjectedPointOnSegment","segment","e1","toVector","e2","valDp","lenLineE1","lenLineE2","projLenOfLine","isProjectionOnSegment","dp","toEdgeList","pointA","pointB","getWindingNumber","angles","vertex","nextVertex","getAngle","angleTo","isPointOnSegment","distAP","distanceTo","distBP","distAB","getDistance","EPSILON","getClosestPointInsidePolygon","poly","edge","closestPointOnEdge","_pp","minDistance","pp","Infinity","closestVertex","Printing2DManager","dimemsionGeo","patiosOutlines","sceenshoot","toDataURL","printPDF","updateInfo","onUpdateJobFiles","quoteNo","quoteBy","clientName","siteAddress","builder","caseType","largestBay","maxUpliftOfBeam","upliftLoadOnBeam","maxPostUplift","postUplift","footingSize","maxFootingHoldDown","ABNNo","licenseNumber","userAddress","userEmail","userPhone","bankName","accountNumber","BSBNumber","SelectionManager","onMouseClickPtr","onMouseClick","onMouseDownPtr","onMouseDown","onMouseMovePtr","onMouseMove","onMouseUpPtr","onMouseUp","onDragStartPtr","onDragStart","onDragEndPtr","onDragEnd","onDragPtr","selectEnabled","debounceMouseMoveHld","dragObjects","clickEventHandlers","mouseHoverEventHandlers","mouseMoveEventHandlers","mouseDownEventHandlers","mouseUpEventHandlers","dragStartEventHandlers","dragEndEventHandlers","dragEventHandlers","dragControl","transformControl","enabled","raycaster","mouse","DOWN","MOVE","UP","CLICK","deactivate","removeEventListener","wallPlane","attach","setFromCamera","traverse","intersectObjects","preventDefault","clientX","clientY","executeRayCast","selectObject","enableControl","dialogDimension","onOK","dragObject","HOVER","DRAG_START","DRAG_END","DRAG","UIManager","debouncingTimeout","ignoreEnableCutoutEvent","previousShouldSnapFasciaRoofToWall","shouldSnapFasciaRoofToWall","onBackOverhangChanged","onFasciaUpstandBracketChanged","updateOverallValue","onDialogEditBayChanged","onSpanChanged","onBaySizeChanged","onLength2Changed","onWidth1Changed","onWidth2Changed","onBuildingHeightChanged","onExistingWallHeightChanged","onBeamTypeChanged","onColumnTypeChanged","onBaseFixingTypeChanged","onCutoutChanged","onRakeCutLeftChanged","onRakeCutRightChanged","onCalcRibspanInfo","onRoofOverallLengthChanged","handleSnapRoofToExistingWhenCutOut","CONNECTION_TYPE","validateRakeCut","onSetMaxValue","debouncingHandle","onUIChangedDefer","debouncingRibspanInfoHandle","isDisabled","_curVal","oldBackOverhang","setDisable","setMin","onExistingTypeChanged","setColumnType","_roofOverallWidth","minOverallLength","_roofOverallLength","getRoofPercent","debouncingOverallRoofLengthHandle","calcPostSpacingInfoWhenOverallRoofLengthChanged","minBeam","maxBeam","prevVal","setEnableCutout","setPatiosWidth","totalExistingWidth","onAdjustListBayWhenCutOut","currentBeam","_typeVal","_buildingHeightMax","free_standing_max","roofBaseHeight","getRoofBaseHeight","cutOutRoofHeightIfSnapToExisting","alignWallToPatios","changeToExistingTypeBoth","bayMax","totalCut","_columnType","rejects","_rightToLeft","_fasciaBracketHeight","_hasHouseBeam","_cutOut","_backFascia","_existingRoofType","_houseBeamSize","_isRapidSetCement","_isDripBarge","_colourFasciaBracket","_leftCutType","_rightCutType","_leftCutVertical","_rightCutVertical","_leftCutHorizontal","_rightCutHorizontal","maxSpanLeft","maxSpanRight","cond","sizeLeft","sizeRight","maxLeft1","maxLeft2","maxRight1","maxRight2","FO","CHL","CVL","dMaxleft","CHR","CVR","dMaxRight","maxBayLeft","maxBayRight","action","unRegisterEvents","UI","btnEnableControl","OVERHANG_LEFT","OVERHANG_BACK","BAYSZIE","RAKECUT_LEFT_TYPE","Util","lineArrowGeo","reSeperateList","computeBoundingBox","totalRoofLength","totalRoofWidth","minX","minZ","frontLeft","frontRight","backLeft","backRight","lineFrontLeft","lineFrontRight","lineFront","lineBackLeft","lineBackRight","cutoutLength","lineBack","cutOutWidth","inputColor","normal","vNormal","getZ","setAttribute","selection","fitOffset","expandByObject","getCenter","maxSize","fitHeightDistance","fov","fitWidthDistance","near","far","maxDim","cameraZ","cameraToFarEdge","saveState","lookAt","degrees","pi","num","threshold","newVertices","intersectPoints","intersectPoint","intersectLine","dis1","distanceToPoint","dis2","createPolygon","initPoints","sortPoints","findNextPoinst","restOfPoints","indexOfMaxPoint","r1","simpleMaxPolygon","nextPoint","closestPoint","isPointOnSegmentR1","isPointOnSegmentR2","r1_1","r1_2","inter1","vector3ToArray","inter2","arrayToVector3","clonePoints","meshClone","_geo","positions","boxGeo","getOutlineByViews","getVerticeFromBufferGeo","verticesToPrintPlanView","outLineClip","clipPlane","viewMesh","getEngineeringObjetOutline","isLineSegment","createOutLineGeo","outLineMesh","thresholdAngle","outLine","maxHeight","lsMesh","_mesh","faces","getAllMesh","original","newGeoInfo","cons","allow","left1","right1","back1","front1","leftCondition","rightCondition","point1","point2","existingHousetLeft","existingHouseRight","existingHouseBack","existingHouseFront","point3","point4","box2","union","child","getAllMeshDescendant","objectCloned","getChildDescendent","arrowLength","shape1","moveTo","lineTo","closePath","arrow1","arrow2","arrowColor","isHighLightBeam","beamEndCapAndJointInfo","startCap","getBeamEndCapCode","endCap","startJoint","INTERNAL_JOINT","endJoint","FIT_JOINT","startEndOfBayZ","startBeamStartZ","startBeamEndZ","startEndCutBeamZ","startStartCutBeamZ","shouldAddBeam","startEndOfBayX","startBeamStartX","startBeamEndX","startEndCutBeamX","startStartCutBeamX","gutterGeo","gutterCapGeo","clippingCsg","meshCliped","line1","line2","line1StartX","line1StartY","line1EndX","line1EndY","line2StartX","line2StartY","line2EndX","line2EndY","denominator","numerator1","numerator2","posY","rotZ","geoManager","isCutOut","isRakeCut","_roofPatios","_beams","_angleBrackets","_position","UPSTAND_BRAKET_BEAM","isHouseBeam","_internalJoints","_normalBeamEndCaps","_jointGroupJoints","groupBy","entries","_jointGroupEndCaps","_panels","panel","_boxPanel","_downpipes","_nozzles","downpipe","_countDownpipe","_gutters","gutter","_barges","barge","drip","_zflashings","zflashing","_recChanels","receiver_chanel","listRecChanels","flyOverBrackets","flyOverBracketCutOuts","extFlyOverBracket","downpipes","angleBrackets","bottomAngleBrackets","nozzles","internalJoints","normalBeamEndCaps","gutters","barges","zflashings","receiver_chanels","panels","fasciaBracketExts","_centerPosts","listCenterPost","_ridgeCapping","_name","_jointGroup","listBeam","listPanels","listGutters","listBarges","listZflashings","_rafterEndCap","listRafterEndCap","centerPost","rafterEndCap","dot","isCheckIntersectIsPositiveLine","a1","b1","c1","a2","b2","determinant","line1result","line2result","geoPipe","geoL","offsetZNozzle","rotationY","connectLength","haveNozzle","boxDownPipe","createDownpipeNozzle","bayOffset","bayStartPos","bayEndPos","restStartLength","totalBayStartLength","startPointOld","startCenter","endPointOld","fit","elements","endCapPreCode","endCapColorCode","availableCodes","getRafterBeamEndCapCode","isTop","colorCode","getTextCover","ArrowControl","ClickControl","DeleteControl","lineGeometry","getUIControlLine","deleteMaterial","lineMaterial","renderOrder","Dimension","meshTextCover","textGeoBayNo","meshBayNo","textClone","isTextClone","meshTextClone","meshText","meshLine","meshCap1","meshCap2","addArrow","meshArrow1","meshArrow2","HighLightBox","GREEN","onHover","onClick","dialogRakeCut","dialogComfirm","UpstandBraket","braket1","braket2","BaseUIControlEntity","UIControl","scaleUniform","AppComponent","selector","APP_VERSION","RELEASE_DATE","CONFIG","existingWidth","GEOMETRY_CATEGORY","GEOMETRY_TYPE","DIMENSION_LABEL_TYPE","HIGHLIGHT_BOX_COLOR","DIMENSION_LOCATION","INIT","ACTIVE_LEFT_MENU","existingHouse","patiosInformation","PATIOS_ROOF_TYPE","OFFSET_GUTTER_TO_WALL","STATUS_USER","PANEL_TYPE","INSULATED","STATUS_TEXT","OPEN","TEMPLATE","EXISTING_BUILDING_CONFIG","ROOF_BASE_SUBTRACT","BARGE_ROOF_OFFSET_Y","GUTTER_ROOF_OFFSET_Y","FIT_FROM_CORNER_TO_CENTER_GUTTER","MIN_INTERNAL_BEAM_LENGTH","RIBSPAN_PANEL_WIDTH","RIBSPAN_RECEIVER_CHANNEL_FIT","RIBSPAN_BARGE_FIT","FASCIA_BRACKET_FIT","RAKECUT_TYPE","BUILDING_SIDE","CUTOUT_ENABLE","PANEL_DIRECTION","MOUSE_EVENT","OBJECT_TYPE","UI_CONTROL_LEFT_RAKECUT_HORIZONTAL","UI_CONTROL_LEFT_RAKECUT_VERTICAL","UI_CONTROL_RIGHT_RAKECUT_HORIZONTAL","UI_CONTROL_RIGHT_RAKECUT_VERTICAL","UI_CONTROL_WIDTH1","UI_CONTROL_CUTBEAM_CONTAINER","FIT_DIMENSION","FIT_DIMENSION_FAR","FIT_DIMENSION_MEDIUM","FIT_FLYOVER_BRAKET_ON_ROOF","antDesignIcons","customCurrencyMaskConfig","align","allowNegative","allowZero","decimal","suffix","thousands","nullable","inputMode","NATURAL","AppModule","provide","useValue","useClass","multi","withServerTransition","appId","forRoot","declarations","imports","providers","bootstrap","routes","component","redirectTo","appRoutingModule","CheckboxInputComponent","actions","actionsByPriority","onStateChanged","DialogAddBOMComponent","formBuilder","materialService","priceService","_submit","itemNo","optionLists","currentOption","searchChange$","inputForm","required","dri","cutBk","asObservable","getOptionList","getAll","searchByQuery","option","isUserInput","itemDescription","uom","invalid","_qty","_price","totalUom","unitPrice","onGroupChange","onSubmit","DialogAddCostComponent","homeComponent","_visible","totalCost","onNew","onSave","DialogBOMComponent","excelService","lstBOM","lstAddBOM","dataBOM","_listAddBOM","isAdd","getBOMById","listAddBOM","isExportExcel","exportExcel","DialogConfirmComponent","dimValue","baySizeMax","onSubmitEvent","onCancelEvent","clickOutside","valueType","isShowBuilding","isShow","DialogDimensionComponent","bayMaxValue","bayMinValue","DialogEditBayComponent","listBayCached","previousTotalBaySize","bays","_noOfBay","onChange","_baySize","DialogRakeCutComponent","inputRakecutType","selectedValue","rakecutTypes","DropDownColorInputComponent","is","stopPropagation","selected","menu","removeClass","addClass","padStart","selectedItem","DropDownInputCustomComponent","route","isShowDropDown","customValue","disableList","onClickCustomValue","onValueChanged","onToggleDropDown","onModalCustomOk","DropDownInputComponent","selectElement","dropdown","PanelBOMComponent","addBOMs","dialogAddBOM","onShow","onDeleteBOM","onAddBOM","SelectInputComponent","selectedIndex","SliderInputComponent","_currentValue","defaultValue","shouldEmit","_previousValue","extraValue","SwitchInputComponent","ToggleButtonComponent","defaultContent","activeContent","inactiveContent","isVisibleOpenModalRibspan","findP2","onOkRibspan","onCancelRibspan","LoginComponent","loading","submitted","loginType","onEncrypt","plainText","b64","e64","Base64","Hex","currentUserValue","loginForm","userName","password","returnUrl","snapshot","queryParams","signUpUrl","backendUrl","_userName","_password","login","_status","getRoofSheetPanel","geo_roofPanelBase","getBarge","addRoofSheetingBase","addZFlashing","isLast","flashingLength","geo_roofBase","roofBaseInfo","addRoofBase","addZFlashingAngleRakeCut","addZFlashingStepRakeCut","zFlashingLength","getRidge","addRoofBaseRight","addRoofBaseLeft","addZFlashingRight","addZFlashingLeft","offsetPitch","addRoofSheetingBaseRight","addRoofSheetingBaseLeft","addRoofSheetingBaseFront","addRoofSheetingBaseBack","addZFlashingFront","addZFlashingBack","addRoofFrontBaseFront","addRoofFrontBaseBack","orderIndex","axisWHLOrder","modifier","orders","getValue","getFileNameWithoutExt","geoInfo","downloadFileAsGeometryInfo","roofBase","GeometryInfo","_width","_geometry","Printing2DGeometryType","ViewType","LineType","gableConditionList","maxBay","gableBeamConditionList","lengthMax","widthMax","beamSizeIndex","onSetColumnType","findCondition","filterValue","filterField","AuthGuard","ErrorInterceptor","request","handle","reload","JwtInterceptor","Authorization","DragControls","_objects","_camera","_domElement","_raycaster","_mouse","_offset","_intersection","_worldPosition","_inverseMatrix","_selected","_hovered","scope","activate","onDocumentMouseMove","onDocumentMouseDown","onDocumentMouseCancel","onDocumentTouchMove","onDocumentTouchStart","onDocumentTouchEnd","dispose","rect","getBoundingClientRect","ray","intersectPlane","getWorldDirection","setFromMatrixPosition","changedTouches","AuthenticationService","http","currentUserSubject","getItem","apiDbUrl","setItem","removeItem","ExcelService","dataSource","dataSourceTotal","isShowPrice","_fileName","_headerStyle","_headerWidth","_headerList","rowHeader","lastRow","_rowCount","_totalPanelStyle","_newRow","_mergeRange","_unitPricecell","_totalUomcell","xlsx","writeBuffer","JobService","newJob","put","MaterialService","PriceService","PrintingService","baseUrl","apiBaseUrl","urlPrintPDF","UserService","ret","environment","bootstrapModule","defaultEncapsulation"],"mappings":"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;AACE;;AACE;;AACA;;AAAI;;AAAyB;;AAC/B;;AACF;;AACF;;AACA;;AACE;;AACE;;AAQA;;AAQA;;AAWF;;AACA;;AACE;;AAQA;;AAYF;;AACF;;AACF;;AAGA;;AACE;;AACE;;AACE;;AACA;;AACF;;AAEA;;AAOE;;AACE;;AACE;;AAAgB;;AAAc;;AAChC;;AACA;;AACE;;AAAI;;AAAY;;AAChB;;AACE;;AAKF;;AACF;;AACA;;AACE;;AAAI;;AAAO;;AACX;;AACE;;AAIE;AAAA;;AAAA;;AAAA,mBACmB,oCAEtB,IAFsB,EAElB,oBAAoB,CAFF,CADnB;AAMd,WANc;;AAMD;;AACH;;AACF;;AACA;;AACE;;AAAI;;AAAc;;AAClB;;AACE;;AAOF;;AACF;;AACA;;AAQE;;AAAI;;AAAa;;AACjB;;AACE;;AAOF;;AACF;;AACA;;AASE;;AAAI;;AAAc;;AAClB;;AACE;;AAOF;;AACF;;AACA;;AASE;;AAAI;;AAAa;;AACjB;;AACE;;AAOF;;AACF;;AACA;;AACE;;AAAI;;AAAM;;AACV;;AACE;;AAKF;;AACF;;AACA;;AACE;;AAAI;;AAAa;;AACjB;;AACE;;AAOF;;AACF;;AACA;;AACE;;AAAI;;AAAY;;AAChB;;AACE;;AAME;AAAA;;AAAA;;AAAA,mBACmB,iFADnB;AAMd,WANc;;AAOF;;AACF;;AACF;;AACA;;AACE;;AAAI;;AAAW;;AACf;;AACE;;AAOF;;AACF;;AACA;;AACE;;AAAI;;AAAU;;AACd;;AACE;;AAKF;;AACF;;AACA;;AACE;;AAAI;;AAAO;;AACX;;AACE;;AAKF;;AACF;;AASF;;AACF;;AACA;;AACE;;AACA;;AACF;;AAEA;;AAIE;;AACE;;AACE;;AAAI;;AAAgB;;AACpB;;AACE;;AAWF;;AACF;;AACA;;AACE;;AAAI;;AAAyB;;AAC7B;;AACE;;AAeF;;AACF;;AACA;;AACE;;AAAI;;AAAwB;;AAC5B;;AACE;;AAWF;;AACF;;AACA;;AACE;;AAAI;;AAA6B;;AACjC;;AACE;;AAEE;AAAA,mBAAY,IAAAC,iCAAA,QAAZ;AAAqD,WAArD;;AAIF;;AACF;;AACF;;AACA;;AACE;;AAAI;;AAAW;;AACf;;AACE;;AASF;;AACF;;AACA;;AACE;;AAAsB;;AAAS;;AAC/B;;AACE;;AAQA;;AACE;;AACF;;AACF;;AACF;;AACA;;AACE;;AAAI;;AAAgB;;AACpB;;AACE;;AAOF;;AACF;;AACA;;AACE;;AAAI;;AAAkB;;AACtB;;AACE;;AAOF;;AACF;;AACA;;AACE;;AAAI;;AAAmB;;AACvB;;AACE;;AAOF;;AACF;;AACA;;AACE;;AAAI;;AAAmB;;AACvB;;AACE;;AAOF;;AACF;;AACA;;AACE;;AAAsB;;AAAuB;;AAC7C;;AACE;;AAOA;;AACE;;AACF;;AACF;;AACF;;AACA;;AACE;;AAAI;;AAAU;;AACd;;AACE;;AAOF;;AACF;;AACA;;AACE;;AAAI;;AAAW;;AACf;;AACE;;AAYF;;AACF;;AACA;;AACE;;AACE;;AAKF;;AACA;;AACE;;AAOF;;AACF;;AACA;;AACE;;AACE;;AAKF;;AACA;;AACE;;AAOF;;AACF;;AACA;;AACE;;AAAsB;;AAAoB;;AAC1C;;AACE;;AAYA;;AACE;;AACF;;AAEF;;AACF;;AACA;;AACE;;AAAI;;AAAmB;;AACvB;;AACE;;AASA;;AAAyB;;AAEvB;;AACJ;;AACF;;AACA;;AACE;;AAAI;;AAAuB;;AAC3B;;AACE;;AASA;;AAAyB;;AAA+B;;AAC1D;;AACF;;AACA;;AACE;;AAAgB;;AAAQ;;AAC1B;;AACA;;AACE;;AAAI;;AAAU;;AACd;;AACE;;AAOF;;AACF;;AACA;;AACE;;AAAuB;;AAAU;;AACjC;;AACE;;AAQF;;AACF;;AACA;;AACE;;AAAuB;;AAAY;;AACnC;;AACE;;AAQF;;AACF;;AACA;;AACE;;AAAI;;AAAW;;AACf;;AACE;;AAOF;;AACF;;AACA;;AACE;;AAAuB;;AAAU;;AACjC;;AACE;;AAQF;;AACF;;AACA;;AACE;;AAAuB;;AAAY;;AACnC;;AACE;;AAQF;;AACF;;AACF;;AACF;;AACA;;AACE;;AACA;;AACF;;AACA;;AAKE;;AACE;;AACE;;AAAI;;AAAmB;;AACvB;;AACE;;AAKE;AAAA,mBAAU,IAAAC,yBAAA,EAAV;AAAqC,WAArC;;AAEF;;AACF;;AACF;;AACA;;AACE;;AAAsB;;AAAU;;AAChC;;AACE;;AAMA;;AACE;;AACF;;AACF;;AACF;;AACA;;AACE;;AAAI;;AAAmB;;AACvB;;AACE;;AAMF;;AACF;;AACA;;AACE;;AAAI;;AAAW;;AACf;;AACE;;AAOF;;AACF;;AACA;;AACE;;AAAI;;AAAW;;AACf;;AACE;;AACF;;AACF;;AAEA;;AACE;;AAAI;;AAAc;;AAClB;;AACE;;AAOF;;AACF;;AACA;;AACE;;AAAI;;AAAgB;;AACpB;;AACE;;AAOF;;AACF;;AACA;;AACE;;AAAI;;AAAc;;AAClB;;AACE;;AAMF;;AACF;;AACA;;AACE;;AAAI;;AAAY;;AAChB;;AACE;;AAOF;;AACF;;AACA;;AACE;;AAAI;;AAAU;;AACd;;AACE;;AAMF;;AACF;;AACA;;AACE;;AAAsB;;AAAU;;AAChC;;AACE;;AAEA;;AACE;;AACF;;AACF;;AACF;;AACA;;AACE;;AACE;;AACA;;AAYF;;AACA;;AAOE;;AAMF;;AACF;;AACA;;AACE;;AAAI;;AAAY;;AAChB;;AACE;;AAMF;;AACF;;AACA;;AACE;;AAAI;;AAAiB;;AACrB;;AACE;;AAMF;;AACF;;AACA;;AACE;;AACE;;AAAM;;AAAiB;;AACvB;;AAA6B;;AAAiB;;AAChD;;AACA;;AACE;;AAKF;;AACF;;AACF;;AACF;;AACA;;AACE;;AACA;;AACF;;AACA;;AAKE;;AACE;;AACE;;AAAI;;AAAK;;AACT;;AAEE;;AAMF;;AACF;;AACA;;AACE;;AAAI;;AAAM;;AACV;;AACE;;AAMF;;AACF;;AACA;;AACE;;AAAI;;AAAO;;AACX;;AACE;;AAMF;;AACF;;AACA;;AACE;;AAAI;;AAAW;;AACf;;AACE;;AAMF;;AACF;;AACA;;AACE;;AAAI;;AAAK;;AACT;;AACE;;AAMF;;AACF;;AACA;;AACE;;AAAI;;AAAK;;AACT;;AACE;;AAMF;;AACF;;AACA;;AACE;;AA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a;;AACjB;;AACE;;AAOF;;AACF;;AACA;;AASE;;AAAI;;AAAc;;AAClB;;AACE;;AAOF;;AACF;;AACA;;AASE;;AAAI;;AAAa;;AACjB;;AACE;;AAOF;;AACF;;AACA;;AACE;;AAAI;;AAAM;;AACV;;AACE;;AAKF;;AACF;;AACA;;AACE;;AAAI;;AAAa;;AACjB;;AACE;;AAOF;;AACF;;AACA;;AACE;;AAAI;;AAAY;;AAChB;;AACE;;AAME;AAAA;;AAAA;;AAAA,mBACmB,iFADnB;AAMd,WANc;;AAOF;;AACF;;AACF;;AACA;;AACE;;AAAI;;AAAW;;AACf;;AACE;;AAOF;;AACF;;AACA;;AACE;;AAAI;;AAAU;;AACd;;AACE;;AAKF;;AACF;;AACA;;AACE;;AAAI;;AAAO;;AACX;;AACE;;AAKF;;AACF;;AASF;;AACF;;AACA;;AACE;;AACA;;AACF;;AAEA;;AAIE;;AACE;;AACE;;AAAI;;AAAgB;;AACpB;;AACE;;AAWF;;AACF;;AACA;;AACE;;AAAI;;AAAyB;;AAC7B;;AACE;;AAeF;;AACF;;AACA;;AACE;;AAAI;;AAAwB;;AAC5B;;AACE;;AAWF;;AACF;;AACA;;AACE;;AAAI;;AAA6B;;AACjC;;AACE;;AAEE;AAAA,mBAAY,IAAAC,iCAAA,QAAZ;AAAqD,WAArD;;AAIF;;AACF;;AACF;;AACA;;AACE;;AAAI;;AAAW;;AACf;;AACE;;AASF;;AACF;;AACA;;AACE;;AAAsB;;AAAS;;AAC/B;;AACE;;AAQA;;AACE;;AACF;;AACF;;AACF;;AACA;;AACE;;AAAI;;AAAgB;;AACpB;;AACE;;AAOF;;AACF;;AACA;;AACE;;AAAI;;AAAkB;;AACtB;;AACE;;AAOF;;AACF;;AACA;;AACE;;AAAI;;AAAmB;;AACvB;;AACE;;AAOF;;AACF;;AACA;;AACE;;AAAI;;AAAmB;;AACvB;;AACE;;AAOF;;AACF;;AACA;;AACE;;AAAsB;;AAAuB;;AAC7C;;AACE;;AAOA;;AACE;;AACF;;AACF;;AACF;;AACA;;AACE;;AAAI;;AAAU;;AACd;;AACE;;AAOF;;AACF;;AACA;;AACE;;AAAI;;AAAW;;AACf;;AACE;;AAYF;;AACF;;AACA;;AACE;;AACE;;AAKF;;AACA;;AACE;;AAOF;;AACF;;AACA;;AACE;;AACE;;AAKF;;AACA;;AACE;;AAOF;;AACF;;AACA;;AACE;;AAAsB;;AAAoB;;AAC1C;;AACE;;AAWA;;AAAM;;AAAuC;;AAC5C;;AACD;;AACE;;AACF;;AAEF;;AACF;;AACA;;AACE;;AAAI;;AAAmB;;AACvB;;AACE;;AASA;;AAAyB;;AAEvB;;AACJ;;AACF;;AACA;;AACE;;AAAI;;AAAuB;;AAC3B;;AACE;;AASA;;AAAyB;;AAA+B;;AAC1D;;AACF;;AACA;;AACE;;AAAgB;;AAAQ;;AAC1B;;AACA;;AACE;;AAAI;;AAAU;;AACd;;AACE;;AAOF;;AACF;;AACA;;AACE;;AAAuB;;AAAU;;AACjC;;AACE;;AAQF;;AACF;;AACA;;AACE;;AAAuB;;AAAY;;AACnC;;AACE;;AAQF;;AACF;;AACA;;AACE;;AAAI;;AAAW;;AACf;;AACE;;AAOF;;AACF;;AACA;;AACE;;AAAuB;;AAAU;;AACjC;;AACE;;AAQF;;AACF;;AACA;;AACE;;AAAuB;;AAAY;;AACnC;;AACE;;AAQF;;AACF;;AACF;;AACF;;AACA;;AACE;;AACA;;AACF;;AACA;;AAKE;;AACE;;AACE;;AAAI;;AAAmB;;AACvB;;AACE;;AAIE;AAAA,mBAAU,IAAAC,yBAAA,EAAV;AAAqC,WAArC;;AAEF;;AACF;;AACF;;AACA;;AACE;;AAAsB;;AAAU;;AAChC;;AACE;;AAMA;;AACE;;AACF;;AACF;;AACF;;AACA;;AACE;;AAAI;;AAAmB;;AACvB;;AACE;;AAMF;;AACF;;AACA;;AACE;;AAAI;;AAAW;;AACf;;AACE;;AAOF;;AACF;;AACA;;AACE;;AAAI;;AAAW;;AACf;;AACE;;AACF;;AACF;;AAEA;;AACE;;AAAI;;AAAc;;AAClB;;AACE;;AAOF;;AACF;;AACA;;AACE;;AAAI;;AAAgB;;AACpB;;AACE;;AAOF;;AACF;;AACA;;AACE;;AAAI;;AAAc;;AAClB;;AACE;;AAMF;;AACF;;AACA;;AACE;;AAAI;;AAAY;;AAChB;;AACE;;AAMF;;AACF;;AACA;;AACE;;AAAI;;AAAU;;AACd;;AACE;;AAMF;;AACF;;AACA;;AACE;;AAAsB;;AAAU;;AAChC;;AACE;;AAEA;;AACE;;AACF;;AACF;;AACF;;AACA;;AACE;;AACE;;AACA;;AAYF;;AACA;;AAOE;;AAMF;;AACF;;AACA;;AACE;;AAAI;;AAAY;;AAChB;;AACE;;AAMF;;AACF;;AACA;;AACE;;AAAI;;AAAiB;;AACrB;;AACE;;AAMF;;AACF;;AACA;;AACE;;AACE;;AAAM;;AAAiB;;AACvB;;AAA6B;;AAAiB;;AAChD;;AACA;;AACE;;AAKF;;AACF;;AACF;;AACF;;AACA;;AACE;;AACA;;AACF;;AACA;;AAKE;;AACE;;AACE;;AAAI;;AAAK;;AACT;;AAEE;;AAMF;;AACF;;AACA;;AACE;;AAAI;;AAAM;;AACV;;AACE;;AAMF;;AACF;;AACA;;AACE;;AAAI;;AAAO;;AACX;;AACE;;AAMF;;AACF;;AACA;;AACE;;AAAI;;AAAW;;AACf;;AACE;;AAMF;;AACF;;AACA;;AACE;;AAAI;;AAAK;;AACT;;AACE;;AAMF;;AACF;;AACA;;AACE;;AAAI;;AAAK;;AACT;;AACE;;AAMF;;AACF;;AACA;;AACE;;AAAI;;AAAgB;;AACpB;;AACE;;AAMF;;AACF;;AACA;;AACE;;AAAI;;AAAuB;;AAC3B;;AACE;;AAMF;;AACF;;AACA;;AACE;;AAAI;;AAAS;;AACb;;AACE;;AAMF;;AACF;;AACA;;AACE;;AACA;;AACE;;AAGE;AAAA,mBAAS,IAAAC,YAAA,EAAT;AAAuB,WAAvB;;AAEA;;AAA2B;;AAAO;;AAAY;;AAChD;;AACF;;AACF;;AACF;;AACF;;AACF;;AAEF;;AACA;;AAME;AAAA,mBAAS,IAAAC,mBAAA,EAAT;AAA8B,WAA9B;;AAEA;;AACF;;AACA;;AAQE;;AACE;;AACE;;AACE;;AAEE;;AAAoB;;AAAO;;AAI7B;;AACA;;AACE;;AACE;;AAKE;;AAAqB;;AAAiB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","file":"main-es5.js","sourcesContent":["/*! ExcelJS 02-06-2020 */\n\n\"use strict\";function _createForOfIteratorHelper2(e){if(\"undefined\"==typeof Symbol||null==e[Symbol.iterator]){if(Array.isArray(e)||(e=_unsupportedIterableToArray2(e))){var t=0,r=function(){};return{s:r,n:function(){return t>=e.length?{done:!0}:{done:!1,value:e[t++]}},e:function(e){throw e},f:r}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var n,o,i=!0,a=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return i=e.done,e},e:function(e){a=!0,o=e},f:function(){try{i||null==n.return||n.return()}finally{if(a)throw o}}}}function _classCallCheck2(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function _defineProperties(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=new Array(t);r2&&void 0!==arguments[2]?arguments[2]:0;if(n(this,e),r)if(\"string\"==typeof r){var a=i.decodeAddress(r);this.nativeCol=a.col+o,this.nativeColOff=0,this.nativeRow=a.row+o,this.nativeRowOff=0}else void 0!==r.nativeCol?(this.nativeCol=r.nativeCol||0,this.nativeColOff=r.nativeColOff||0,this.nativeRow=r.nativeRow||0,this.nativeRowOff=r.nativeRowOff||0):void 0!==r.col?(this.col=r.col+o,this.row=r.row+o):(this.nativeCol=0,this.nativeColOff=0,this.nativeRow=0,this.nativeRowOff=0);else this.nativeCol=0,this.nativeColOff=0,this.nativeRow=0,this.nativeRowOff=0;this.worksheet=t}var t,r,a;return t=e,a=[{key:\"asInstance\",value:function(t){return t instanceof e||null==t?t:new e(t)}}],(r=[{key:\"col\",get:function(){return this.nativeCol+Math.min(this.colWidth-1,this.nativeColOff)/this.colWidth},set:function(e){this.nativeCol=Math.floor(e),this.nativeColOff=Math.floor((e-this.nativeCol)*this.colWidth)}},{key:\"row\",get:function(){return this.nativeRow+Math.min(this.rowHeight-1,this.nativeRowOff)/this.rowHeight},set:function(e){this.nativeRow=Math.floor(e),this.nativeRowOff=Math.floor((e-this.nativeRow)*this.rowHeight)}},{key:\"colWidth\",get:function(){return this.worksheet&&this.worksheet.getColumn(this.nativeCol+1)&&this.worksheet.getColumn(this.nativeCol+1).isCustomWidth?Math.floor(1e4*this.worksheet.getColumn(this.nativeCol+1).width):64e4}},{key:\"rowHeight\",get:function(){return this.worksheet&&this.worksheet.getRow(this.nativeRow+1)&&this.worksheet.getRow(this.nativeRow+1).height?Math.floor(1e4*this.worksheet.getRow(this.nativeRow+1).height):18e4}},{key:\"model\",get:function(){return{nativeCol:this.nativeCol,nativeColOff:this.nativeColOff,nativeRow:this.nativeRow,nativeRowOff:this.nativeRowOff}},set:function(e){this.nativeCol=e.nativeCol,this.nativeColOff=e.nativeColOff,this.nativeRow=e.nativeRow,this.nativeRowOff=e.nativeRowOff}}])&&o(t.prototype,r),a&&o(t,a),e}();t.exports=a},{\"../utils/col-cache\":17}],3:[function(e,t,r){function n(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function o(e,t){for(var r=0;r0||this.type===e.Types.Merge}},{key:\"master\",get:function(){return this.type===e.Types.Merge?this._value.master:this}},{key:\"isHyperlink\",get:function(){return this._value.type===e.Types.Hyperlink}},{key:\"hyperlink\",get:function(){return this._value.hyperlink}},{key:\"value\",get:function(){return this._value.value},set:function(t){this.type!==e.Types.Merge?(this._value.release(),this._value=S.create(S.getType(t),this,t)):this._value.master.value=t}},{key:\"note\",get:function(){return this._comment&&this._comment.note},set:function(e){this._comment=new f(e)}},{key:\"text\",get:function(){return this._value.toString()}},{key:\"html\",get:function(){return s.escapeHtml(this.text)}},{key:\"formula\",get:function(){return this._value.formula}},{key:\"result\",get:function(){return this._value.result}},{key:\"formulaType\",get:function(){return this._value.formulaType}},{key:\"fullAddress\",get:function(){return{sheetName:this._row.worksheet.name,address:this.address,row:this.row,col:this.col}}},{key:\"name\",get:function(){return this.names[0]},set:function(e){this.names=[e]}},{key:\"names\",get:function(){return this.workbook.definedNames.getNamesEx(this.fullAddress)},set:function(e){var t=this,r=this.workbook.definedNames;r.removeAllNames(this.fullAddress),e.forEach((function(e){r.addEx(t.fullAddress,e)}))}},{key:\"_dataValidations\",get:function(){return this.worksheet.dataValidations}},{key:\"dataValidation\",get:function(){return this._dataValidations.find(this.address)},set:function(e){this._dataValidations.add(this.address,e)}},{key:\"model\",get:function(){var e=this._value.model;return e.style=this.style,this._comment&&(e.comment=this._comment.model),e},set:function(e){if(this._value.release(),this._value=S.create(e.type,this),this._value.model=e,e.comment)switch(e.comment.type){case\"note\":this._comment=f.fromModel(e.comment)}e.style?this.style=e.style:this.style={}}}]),e}();l.Types=u.ValueType;var h=function(){function e(t){n(this,e),this.model={address:t.address,type:l.Types.Null}}return i(e,[{key:\"toCsvString\",value:function(){return\"\"}},{key:\"release\",value:function(){}},{key:\"toString\",value:function(){return\"\"}},{key:\"value\",get:function(){return null},set:function(e){}},{key:\"type\",get:function(){return l.Types.Null}},{key:\"effectiveType\",get:function(){return l.Types.Null}},{key:\"address\",get:function(){return this.model.address},set:function(e){this.model.address=e}}]),e}(),d=function(){function e(t,r){n(this,e),this.model={address:t.address,type:l.Types.Number,value:r}}return i(e,[{key:\"toCsvString\",value:function(){return this.model.value.toString()}},{key:\"release\",value:function(){}},{key:\"toString\",value:function(){return this.model.value.toString()}},{key:\"value\",get:function(){return this.model.value},set:function(e){this.model.value=e}},{key:\"type\",get:function(){return l.Types.Number}},{key:\"effectiveType\",get:function(){return l.Types.Number}},{key:\"address\",get:function(){return this.model.address},set:function(e){this.model.address=e}}]),e}(),p=function(){function e(t,r){n(this,e),this.model={address:t.address,type:l.Types.String,value:r}}return i(e,[{key:\"toCsvString\",value:function(){return'\"'.concat(this.model.value.replace(/\"/g,'\"\"'),'\"')}},{key:\"release\",value:function(){}},{key:\"toString\",value:function(){return this.model.value}},{key:\"value\",get:function(){return this.model.value},set:function(e){this.model.value=e}},{key:\"type\",get:function(){return l.Types.String}},{key:\"effectiveType\",get:function(){return l.Types.String}},{key:\"address\",get:function(){return this.model.address},set:function(e){this.model.address=e}}]),e}(),y=function(){function e(t,r){n(this,e),this.model={address:t.address,type:l.Types.String,value:r}}return i(e,[{key:\"toString\",value:function(){return this.model.value.richText.map((function(e){return e.text})).join(\"\")}},{key:\"toCsvString\",value:function(){return'\"'.concat(this.text.replace(/\"/g,'\"\"'),'\"')}},{key:\"release\",value:function(){}},{key:\"value\",get:function(){return this.model.value},set:function(e){this.model.value=e}},{key:\"type\",get:function(){return l.Types.RichText}},{key:\"effectiveType\",get:function(){return l.Types.RichText}},{key:\"address\",get:function(){return this.model.address},set:function(e){this.model.address=e}}]),e}(),m=function(){function e(t,r){n(this,e),this.model={address:t.address,type:l.Types.Date,value:r}}return i(e,[{key:\"toCsvString\",value:function(){return this.model.value.toISOString()}},{key:\"release\",value:function(){}},{key:\"toString\",value:function(){return this.model.value.toString()}},{key:\"value\",get:function(){return this.model.value},set:function(e){this.model.value=e}},{key:\"type\",get:function(){return l.Types.Date}},{key:\"effectiveType\",get:function(){return l.Types.Date}},{key:\"address\",get:function(){return this.model.address},set:function(e){this.model.address=e}}]),e}(),b=function(){function e(t,r){n(this,e),this.model={address:t.address,type:l.Types.Hyperlink,text:r?r.text:void 0,hyperlink:r?r.hyperlink:void 0},r&&r.tooltip&&(this.model.tooltip=r.tooltip)}return i(e,[{key:\"toCsvString\",value:function(){return this.model.hyperlink}},{key:\"release\",value:function(){}},{key:\"toString\",value:function(){return this.model.text}},{key:\"value\",get:function(){var e={text:this.model.text,hyperlink:this.model.hyperlink};return this.model.tooltip&&(e.tooltip=this.model.tooltip),e},set:function(e){this.model={text:e.text,hyperlink:e.hyperlink},e.tooltip&&(this.model.tooltip=e.tooltip)}},{key:\"text\",get:function(){return this.model.text},set:function(e){this.model.text=e}},{key:\"hyperlink\",get:function(){return this.model.hyperlink},set:function(e){this.model.hyperlink=e}},{key:\"type\",get:function(){return l.Types.Hyperlink}},{key:\"effectiveType\",get:function(){return l.Types.Hyperlink}},{key:\"address\",get:function(){return this.model.address},set:function(e){this.model.address=e}}]),e}(),v=function(){function e(t,r){n(this,e),this.model={address:t.address,type:l.Types.Merge,master:r?r.address:void 0},this._master=r,r&&r.addMergeRef()}return i(e,[{key:\"isMergedTo\",value:function(e){return e===this._master}},{key:\"toCsvString\",value:function(){return\"\"}},{key:\"release\",value:function(){this._master.releaseMergeRef()}},{key:\"toString\",value:function(){return this.value.toString()}},{key:\"value\",get:function(){return this._master.value},set:function(e){e instanceof l?(this._master&&this._master.releaseMergeRef(),e.addMergeRef(),this._master=e):this._master.value=e}},{key:\"master\",get:function(){return this._master}},{key:\"type\",get:function(){return l.Types.Merge}},{key:\"effectiveType\",get:function(){return this._master.effectiveType}},{key:\"address\",get:function(){return this.model.address},set:function(e){this.model.address=e}}]),e}(),g=function(){function e(t,r){n(this,e),this.cell=t,this.model={address:t.address,type:l.Types.Formula,shareType:r?r.shareType:void 0,ref:r?r.ref:void 0,formula:r?r.formula:void 0,sharedFormula:r?r.sharedFormula:void 0,result:r?r.result:void 0}}return i(e,[{key:\"_copyModel\",value:function(e){var t={},r=function(r){var n=e[r];n&&(t[r]=n)};return r(\"formula\"),r(\"result\"),r(\"ref\"),r(\"shareType\"),r(\"sharedFormula\"),t}},{key:\"validate\",value:function(e){switch(S.getType(e)){case l.Types.Null:case l.Types.String:case l.Types.Number:case l.Types.Date:break;case l.Types.Hyperlink:case l.Types.Formula:default:throw new Error(\"Cannot process that type of result value\")}}},{key:\"_getTranslatedFormula\",value:function(){if(!this._translatedFormula&&this.model.sharedFormula){var e=this.cell.worksheet.findCell(this.model.sharedFormula);this._translatedFormula=e&&c(e.formula,e.address,this.model.address)}return this._translatedFormula}},{key:\"toCsvString\",value:function(){return\"\".concat(this.model.result||\"\")}},{key:\"release\",value:function(){}},{key:\"toString\",value:function(){return this.model.result?this.model.result.toString():\"\"}},{key:\"value\",get:function(){return this._copyModel(this.model)},set:function(e){this.model=this._copyModel(e)}},{key:\"dependencies\",get:function(){return{ranges:this.formula.match(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\\d{1,4}:[A-Z]{1,3}\\d{1,4}/g),cells:this.formula.replace(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\\d{1,4}:[A-Z]{1,3}\\d{1,4}/g,\"\").match(/([a-zA-Z0-9]+!)?[A-Z]{1,3}\\d{1,4}/g)}}},{key:\"formula\",get:function(){return this.model.formula||this._getTranslatedFormula()},set:function(e){this.model.formula=e}},{key:\"formulaType\",get:function(){return this.model.formula?u.FormulaType.Master:this.model.sharedFormula?u.FormulaType.Shared:u.FormulaType.None}},{key:\"result\",get:function(){return this.model.result},set:function(e){this.model.result=e}},{key:\"type\",get:function(){return l.Types.Formula}},{key:\"effectiveType\",get:function(){var e=this.model.result;return null==e?u.ValueType.Null:e instanceof String||\"string\"==typeof e?u.ValueType.String:\"number\"==typeof e?u.ValueType.Number:e instanceof Date?u.ValueType.Date:e.text&&e.hyperlink?u.ValueType.Hyperlink:e.formula?u.ValueType.Formula:u.ValueType.Null}},{key:\"address\",get:function(){return this.model.address},set:function(e){this.model.address=e}}]),e}(),w=function(){function e(t,r){n(this,e),this.model={address:t.address,type:l.Types.SharedString,value:r}}return i(e,[{key:\"toCsvString\",value:function(){return this.model.value.toString()}},{key:\"release\",value:function(){}},{key:\"toString\",value:function(){return this.model.value.toString()}},{key:\"value\",get:function(){return this.model.value},set:function(e){this.model.value=e}},{key:\"type\",get:function(){return l.Types.SharedString}},{key:\"effectiveType\",get:function(){return l.Types.SharedString}},{key:\"address\",get:function(){return this.model.address},set:function(e){this.model.address=e}}]),e}(),_=function(){function e(t,r){n(this,e),this.model={address:t.address,type:l.Types.Boolean,value:r}}return i(e,[{key:\"toCsvString\",value:function(){return this.model.value?1:0}},{key:\"release\",value:function(){}},{key:\"toString\",value:function(){return this.model.value.toString()}},{key:\"value\",get:function(){return this.model.value},set:function(e){this.model.value=e}},{key:\"type\",get:function(){return l.Types.Boolean}},{key:\"effectiveType\",get:function(){return l.Types.Boolean}},{key:\"address\",get:function(){return this.model.address},set:function(e){this.model.address=e}}]),e}(),k=function(){function e(t,r){n(this,e),this.model={address:t.address,type:l.Types.Error,value:r}}return i(e,[{key:\"toCsvString\",value:function(){return this.toString()}},{key:\"release\",value:function(){}},{key:\"toString\",value:function(){return this.model.value.error.toString()}},{key:\"value\",get:function(){return this.model.value},set:function(e){this.model.value=e}},{key:\"type\",get:function(){return l.Types.Error}},{key:\"effectiveType\",get:function(){return l.Types.Error}},{key:\"address\",get:function(){return this.model.address},set:function(e){this.model.address=e}}]),e}(),x=function(){function e(t,r){n(this,e),this.model={address:t.address,type:l.Types.String,value:JSON.stringify(r),rawValue:r}}return i(e,[{key:\"toCsvString\",value:function(){return this.model.value}},{key:\"release\",value:function(){}},{key:\"toString\",value:function(){return this.model.value}},{key:\"value\",get:function(){return this.model.rawValue},set:function(e){this.model.rawValue=e,this.model.value=JSON.stringify(e)}},{key:\"type\",get:function(){return l.Types.String}},{key:\"effectiveType\",get:function(){return l.Types.String}},{key:\"address\",get:function(){return this.model.address},set:function(e){this.model.address=e}}]),e}(),S={getType:function(e){return null==e?l.Types.Null:e instanceof String||\"string\"==typeof e?l.Types.String:\"number\"==typeof e?l.Types.Number:\"boolean\"==typeof e?l.Types.Boolean:e instanceof Date?l.Types.Date:e.text&&e.hyperlink?l.Types.Hyperlink:e.formula||e.sharedFormula?l.Types.Formula:e.richText?l.Types.RichText:e.sharedString?l.Types.SharedString:e.error?l.Types.Error:l.Types.JSON},types:[{t:l.Types.Null,f:h},{t:l.Types.Number,f:d},{t:l.Types.String,f:p},{t:l.Types.Date,f:m},{t:l.Types.Hyperlink,f:b},{t:l.Types.Formula,f:g},{t:l.Types.Merge,f:v},{t:l.Types.JSON,f:x},{t:l.Types.SharedString,f:w},{t:l.Types.RichText,f:y},{t:l.Types.Boolean,f:_},{t:l.Types.Error,f:k}].reduce((function(e,t){return e[t.t]=t.f,e}),[]),create:function(e,t,r){var n=this.types[e];if(!n)throw new Error(\"Could not create Value of type \".concat(e));return new n(t,r)}};t.exports=l},{\"../utils/col-cache\":17,\"../utils/shared-formula\":20,\"../utils/under-dash\":23,\"./enums\":7,\"./note\":9}],4:[function(e,t,r){function n(e,t){for(var r=0;r=this._worksheet.properties.outlineLevelCol)}},{key:\"isDefault\",get:function(){if(this.isCustomWidth)return!1;if(this.hidden)return!1;if(this.outlineLevel)return!1;var e=this.style;return!e||!(e.font||e.numFmt||e.alignment||e.border||e.fill||e.protection)}},{key:\"headerCount\",get:function(){return this.headers.length}},{key:\"values\",get:function(){var e=[];return this.eachCell((function(t,r){t&&t.type!==i.ValueType.Null&&(e[r]=t.value)})),e},set:function(e){var t=this;if(e){var r=this.number,n=0;e.hasOwnProperty(\"0\")&&(n=1),e.forEach((function(e,o){t._worksheet.getCell(o+n,r).value=e}))}}},{key:\"numFmt\",get:function(){return this.style.numFmt},set:function(e){this._applyStyle(\"numFmt\",e)}},{key:\"font\",get:function(){return this.style.font},set:function(e){this._applyStyle(\"font\",e)}},{key:\"alignment\",get:function(){return this.style.alignment},set:function(e){this._applyStyle(\"alignment\",e)}},{key:\"protection\",get:function(){return this.style.protection},set:function(e){this._applyStyle(\"protection\",e)}},{key:\"border\",get:function(){return this.style.border},set:function(e){this._applyStyle(\"border\",e)}},{key:\"fill\",get:function(){return this.style.fill},set:function(e){this._applyStyle(\"fill\",e)}}])&&n(t.prototype,r),s&&n(t,s),e}();t.exports=s},{\"../utils/col-cache\":17,\"../utils/under-dash\":23,\"./enums\":7}],5:[function(e,t,r){function n(e,t){for(var r=0;rthis.bottom)&&(this.bottom=r),(!this.model.right||n>this.right)&&(this.right=n)}},{key:\"expandRow\",value:function(e){if(e){var t=e.dimensions,r=e.number;t&&this.expand(r,t.min,r,t.max)}}},{key:\"expandToAddress\",value:function(e){var t=i.decodeEx(e);this.expand(t.row,t.col,t.row,t.col)}},{key:\"toString\",value:function(){return this.range}},{key:\"intersects\",value:function(e){return!(e.sheetName&&this.sheetName&&e.sheetName!==this.sheetName||e.bottomthis.bottom||e.rightthis.right)}},{key:\"contains\",value:function(e){var t=i.decodeEx(e);return this.containsEx(t)}},{key:\"containsEx\",value:function(e){return(!e.sheetName||!this.sheetName||e.sheetName===this.sheetName)&&e.row>=this.top&&e.row<=this.bottom&&e.col>=this.left&&e.col<=this.right}},{key:\"forEachAddress\",value:function(e){for(var t=this.left;t<=this.right;t++)for(var r=this.top;r<=this.bottom;r++)e(i.encodeAddress(r,t),r,t)}},{key:\"top\",get:function(){return this.model.top||1},set:function(e){this.model.top=e}},{key:\"left\",get:function(){return this.model.left||1},set:function(e){this.model.left=e}},{key:\"bottom\",get:function(){return this.model.bottom||1},set:function(e){this.model.bottom=e}},{key:\"right\",get:function(){return this.model.right||1},set:function(e){this.model.right=e}},{key:\"sheetName\",get:function(){return this.model.sheetName},set:function(e){this.model.sheetName=e}},{key:\"_serialisedSheetName\",get:function(){var e=this.model.sheetName;return e?/^[a-zA-Z0-9]*$/.test(e)?\"\".concat(e,\"!\"):\"'\".concat(e,\"'!\"):\"\"}},{key:\"tl\",get:function(){return i.n2l(this.left)+this.top}},{key:\"$t$l\",get:function(){return\"$\".concat(i.n2l(this.left),\"$\").concat(this.top)}},{key:\"br\",get:function(){return i.n2l(this.right)+this.bottom}},{key:\"$b$r\",get:function(){return\"$\".concat(i.n2l(this.right),\"$\").concat(this.bottom)}},{key:\"range\",get:function(){return\"\".concat(this._serialisedSheetName+this.tl,\":\").concat(this.br)}},{key:\"$range\",get:function(){return\"\".concat(this._serialisedSheetName+this.$t$l,\":\").concat(this.$b$r)}},{key:\"shortRange\",get:function(){return this.count>1?this.range:this._serialisedSheetName+this.tl}},{key:\"$shortRange\",get:function(){return this.count>1?this.$range:this._serialisedSheetName+this.$t$l}},{key:\"count\",get:function(){return(1+this.bottom-this.top)*(1+this.right-this.left)}}])&&o(t.prototype,r),a&&o(t,a),e}();t.exports=a},{\"./../utils/col-cache\":17}],11:[function(e,t,r){function n(e,t){for(var r=0;r2?n-2:0),i=2;i0)for(a=f;a>=r;a--)(s=this._cells[a-1])?((u=this.getCell(a+c)).value=s.value,u.style=s.style):this._cells[a+c-1]=void 0;for(a=0;ar.col)&&(e=r.col),t0?{min:e,max:t}:null}},{key:\"numFmt\",get:function(){return this.style.numFmt},set:function(e){this._applyStyle(\"numFmt\",e)}},{key:\"font\",get:function(){return this.style.font},set:function(e){this._applyStyle(\"font\",e)}},{key:\"alignment\",get:function(){return this.style.alignment},set:function(e){this._applyStyle(\"alignment\",e)}},{key:\"protection\",get:function(){return this.style.protection},set:function(e){this._applyStyle(\"protection\",e)}},{key:\"border\",get:function(){return this.style.border},set:function(e){this._applyStyle(\"border\",e)}},{key:\"fill\",get:function(){return this.style.fill},set:function(e){this._applyStyle(\"fill\",e)}},{key:\"hidden\",get:function(){return!!this._hidden},set:function(e){this._hidden=e}},{key:\"outlineLevel\",get:function(){return this._outlineLevel||0},set:function(e){this._outlineLevel=e}},{key:\"collapsed\",get:function(){return!!(this._outlineLevel&&this._outlineLevel>=this._worksheet.properties.outlineLevelRow)}},{key:\"model\",get:function(){var e=[],t=0,r=0;return this._cells.forEach((function(n){if(n){var o=n.model;o&&((!t||t>n.col)&&(t=n.col),r0,\"Table must be on valid row\"),n(s>0,\"Table must be on valid col\");var u=this.width,c=this.filterHeight,f=this.tableHeight;t.autoFilterRef=a.encode(i,s,i+c-1,s+u-1),t.tableRef=a.encode(i,s,i+f-1,s+u-1),t.columns.forEach((function(t,o){n(t.name,\"Column \".concat(o,\" must have a name\")),0===o?r(t,\"totalsRowLabel\",\"Total\"):(r(t,\"totalsRowFunction\",\"none\"),t.totalsRowFormula=e.getFormula(t))}))}},{key:\"store\",value:function(){var e=this,t=function(e,t){t&&Object.keys(t).forEach((function(r){e[r]=t[r]}))},r=this.worksheet,n=this.table,o=n.tl,i=o.row,a=o.col,s=0;if(n.headerRow){var u=r.getRow(i+s++);n.columns.forEach((function(e,r){var n=e.style,o=e.name,i=u.getCell(a+r);i.value=o,t(i,n)}))}if(n.rows.forEach((function(e){var o=r.getRow(i+s++);e.forEach((function(e,r){var i=o.getCell(a+r);i.value=e,t(i,n.columns[r].style)}))})),n.totalsRow){var c=r.getRow(i+s++);n.columns.forEach((function(r,n){var o=c.getCell(a+n);if(0===n)o.value=r.totalsRowLabel;else{var i=e.getFormula(r);o.value=i?{formula:r.totalsRowFormula,result:r.totalsRowResult}:null}t(o,r.style)}))}}},{key:\"load\",value:function(e){var t=this,r=this.table,n=r.tl,o=n.row,i=n.col,a=0;if(r.headerRow){var s=e.getRow(o+a++);r.columns.forEach((function(e,t){s.getCell(i+t).value=e.name}))}if(r.rows.forEach((function(t){var r=e.getRow(o+a++);t.forEach((function(e,t){r.getCell(i+t).value=e}))})),r.totalsRow){var u=e.getRow(o+a++);r.columns.forEach((function(e,r){var n=u.getCell(i+r);0===r?n.value=e.totalsRowLabel:t.getFormula(e)&&(n.value={formula:e.totalsRowFormula,result:e.totalsRowResult})}))}}},{key:\"cacheState\",value:function(){this._cache||(this._cache={ref:this.ref,width:this.width,tableHeight:this.tableHeight})}},{key:\"commit\",value:function(){if(this._cache){this.validate();var e=a.decodeAddress(this._cache.ref);if(this.ref!==this._cache.ref)for(var t=0;t1&&void 0!==arguments[1]?arguments[1]:1;this.cacheState(),this.table.rows.splice(e,t)}},{key:\"getColumn\",value:function(e){var t=this.table.columns[e];return new s(this,t,e)}},{key:\"addColumn\",value:function(e,t,r){this.cacheState(),void 0===r?(this.table.columns.push(e),this.table.rows.forEach((function(e,r){e.push(t[r])}))):(this.table.columns.splice(r,0,e),this.table.rows.forEach((function(e,n){e.splice(r,0,t[n])})))}},{key:\"removeColumns\",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;this.cacheState(),this.table.columns.splice(e,t),this.table.rows.forEach((function(r){r.splice(e,t)}))}},{key:\"_assign\",value:function(e,t,r){this.cacheState(),e[t]=r}},{key:\"width\",get:function(){return this.table.columns.length}},{key:\"height\",get:function(){return this.table.rows.length}},{key:\"filterHeight\",get:function(){return this.height+(this.table.headerRow?1:0)}},{key:\"tableHeight\",get:function(){return this.filterHeight+(this.table.totalsRow?1:0)}},{key:\"model\",get:function(){return this.table},set:function(e){this.table=e}},{key:\"ref\",get:function(){return this.table.ref},set:function(e){this._assign(this.table,\"ref\",e)}},{key:\"name\",get:function(){return this.table.name},set:function(e){this.table.name=e}},{key:\"displayName\",get:function(){return this.table.displyName||this.table.name}},{key:\"displayNamename\",set:function(e){this.table.displayName=e}},{key:\"headerRow\",get:function(){return this.table.headerRow},set:function(e){this._assign(this.table,\"headerRow\",e)}},{key:\"totalsRow\",get:function(){return this.table.totalsRow},set:function(e){this._assign(this.table,\"totalsRow\",e)}},{key:\"theme\",get:function(){return this.table.style.name},set:function(e){this.table.style.name=e}},{key:\"showFirstColumn\",get:function(){return this.table.style.showFirstColumn},set:function(e){this.table.style.showFirstColumn=e}},{key:\"showLastColumn\",get:function(){return this.table.style.showLastColumn},set:function(e){this.table.style.showLastColumn=e}},{key:\"showRowStripes\",get:function(){return this.table.style.showRowStripes},set:function(e){this.table.style.showRowStripes=e}},{key:\"showColumnStripes\",get:function(){return this.table.style.showColumnStripes},set:function(e){this.table.style.showColumnStripes=e}}]),e}();t.exports=u},{\"./../utils/col-cache\":17}],13:[function(e,t,r){function n(e,t){for(var r=0;r31&&console.warn(\"Worksheet name \".concat(e,\" exceeds 31 chars. This will be truncated\")),e=(e||\"sheet\".concat(r)).substring(0,31),this._worksheets.find((function(t){return t&&t.name.toLowerCase()===e.toLowerCase()})))throw new Error(\"Worksheet name already exists: \".concat(e));t&&(\"string\"==typeof t?(console.trace('tabColor argument is now deprecated. Please use workbook.addWorksheet(name, {properties: { tabColor: { argb: \"rbg value\" } }'),t={properties:{tabColor:{argb:t}}}):(t.argb||t.theme||t.indexed)&&(console.trace(\"tabColor argument is now deprecated. Please use workbook.addWorksheet(name, {properties: { tabColor: { ... } }\"),t={properties:{tabColor:t}}));var n=this._worksheets.reduce((function(e,t){return(t&&t.orderNo)>e?t.orderNo:e}),0),i=Object.assign({},t,{id:r,name:e,orderNo:n+1,workbook:this}),a=new o(i);return this._worksheets[r]=a,a}},{key:\"removeWorksheetEx\",value:function(e){delete this._worksheets[e.id]}},{key:\"removeWorksheet\",value:function(e){var t=this.getWorksheet(e);t&&t.destroy()}},{key:\"getWorksheet\",value:function(e){return void 0===e?this._worksheets.find(Boolean):\"number\"==typeof e?this._worksheets[e]:\"string\"==typeof e?this._worksheets.find((function(t){return t&&t.name===e})):void 0}},{key:\"eachSheet\",value:function(e){this.worksheets.forEach((function(t){e(t,t.id)}))}},{key:\"clearThemes\",value:function(){this._themes=void 0}},{key:\"addImage\",value:function(e){var t=this.media.length;return this.media.push(Object.assign({},e,{type:\"image\"})),t}},{key:\"getImage\",value:function(e){return this.media[e]}},{key:\"xlsx\",get:function(){return this._xlsx||(this._xlsx=new a(this)),this._xlsx}},{key:\"csv\",get:function(){return this._csv||(this._csv=new s(this)),this._csv}},{key:\"nextId\",get:function(){for(var e=1;ee.length)&&(t=e.length);for(var r=0,n=new Array(t);rthis._columns.length)for(var r=this._columns.length+1;r<=e;)this._columns.push(new f(this,r++));return this._columns[e-1]}},{key:\"spliceColumns\",value:function(e,t){for(var r=this,n=this._rows,o=n.length,i=arguments.length,a=new Array(i>2?i-2:0),s=2;s0)for(var u=function(n){var o=[e,t];a.forEach((function(e){o.push(e[n]||null)}));var i=r.getRow(n+1);i.splice.apply(i,o)},c=0;c0)for(var p=h;p>=l;p--)this.getColumn(p+f).defn=this.getColumn(p).defn;for(var y=e;y2&&void 0!==arguments[2]&&arguments[2],i=this._rows[e-1],a=new Array(t).fill(i.values);this.spliceRows.apply(this,[e+1,o?0:t].concat(n(a)));for(var s=function(t){var n=r._rows[e+t];n.style=i.style,n.height=i.height,i.eachCell({includeEmpty:!0},(function(e,t){n.getCell(t).style=e.style}))},u=0;u2?o-2:0),a=2;a0)for(s=f;s>=n;s--)(u=this._rows[s-1])?function(){var e=r.getRow(s+c);e.values=u.values,e.style=u.style,e.height=u.height,u.eachCell({includeEmpty:!0},(function(t,r){e.getCell(r).style=t.style}))}():this._rows[s+c-1]=void 0;for(s=0;se.top||o>e.left)&&this.getCell(n,o).merge(r,t);this._merges[r.address]=e}},{key:\"_unMergeMaster\",value:function(e){var t=this._merges[e.address];if(t){for(var r=t.top;r<=t.bottom;r++)for(var n=t.left;n<=t.right;n++)this.getCell(r,n).unmerge();delete this._merges[e.address]}}},{key:\"unMergeCells\",value:function(){for(var e=arguments.length,t=new Array(e),r=0;r3&&void 0!==arguments[3]?arguments[3]:\"shared\",i=s.decode(e),a=i.top,u=i.left,c=i.bottom,f=i.right,l=f-u+1,h=s.encodeAddress(a,u),d=\"shared\"===o;n=\"function\"==typeof r?r:Array.isArray(r)?Array.isArray(r[0])?function(e,t){return r[e-a][t-u]}:function(e,t){return r[(e-a)*l+(t-u)]}:function(){};for(var p=!0,y=a;y<=c;y++)for(var m=u;m<=f;m++)p?(this.getCell(y,m).value={shareType:o,formula:t,ref:e,result:n(y,m)},p=!1):this.getCell(y,m).value=d?{sharedFormula:h,result:n(y,m)}:n(y,m)}},{key:\"addImage\",value:function(e,t){var r={type:\"image\",imageId:e,range:t};this._media.push(new h(this,r))}},{key:\"getImages\",value:function(){return this._media.filter((function(e){return\"image\"===e.type}))}},{key:\"addBackgroundImage\",value:function(e){var t={type:\"background\",imageId:e};this._media.push(new h(this,t))}},{key:\"getBackgroundImageId\",value:function(){var e=this._media.find((function(e){return\"background\"===e.type}));return e&&e.imageId}},{key:\"protect\",value:function(e,t){var r=this;return new Promise((function(n){r.sheetProtection={sheet:!0},t&&\"spinCount\"in t&&(t.spinCount=Number.isFinite(t.spinCount)?Math.round(Math.max(0,t.spinCount)):1e5),e&&(r.sheetProtection.algorithmName=\"SHA-512\",r.sheetProtection.saltValue=y.randomBytes(16).toString(\"base64\"),r.sheetProtection.spinCount=t&&\"spinCount\"in t?t.spinCount:1e5,r.sheetProtection.hashValue=y.convertPasswordToHash(e,\"SHA512\",r.sheetProtection.saltValue,r.sheetProtection.spinCount)),t&&(r.sheetProtection=Object.assign(r.sheetProtection,t),!e&&\"spinCount\"in t&&delete r.sheetProtection.spinCount),n()}))}},{key:\"unprotect\",value:function(){this.sheetProtection=null}},{key:\"addTable\",value:function(e){var t=new d(this,e);return this.tables[e.name]=t,t}},{key:\"getTable\",value:function(e){return this.tables[e]}},{key:\"removeTable\",value:function(e){delete this.tables[e]}},{key:\"getTables\",value:function(){return Object.values(this.tables)}},{key:\"addConditionalFormatting\",value:function(e){this.conditionalFormattings.push(e)}},{key:\"removeConditionalFormatting\",value:function(e){\"number\"==typeof e?this.conditionalFormattings.splice(e,1):this.conditionalFormattings=e instanceof Function?this.conditionalFormattings.filter(e):[]}},{key:\"_parseRows\",value:function(e){var t=this;this._rows=[],e.rows.forEach((function(e){var r=new c(t,e.number);t._rows[r.number-1]=r,r.model=e}))}},{key:\"_parseMergeCells\",value:function(e){var t=this;a.each(e.mergeCells,(function(e){t.mergeCellsWithoutStyle(e)}))}},{key:\"workbook\",get:function(){return this._workbook}},{key:\"dimensions\",get:function(){var e=new u;return this._rows.forEach((function(t){if(t){var r=t.dimensions;r&&e.expand(t.number,r.min,t.number,r.max)}})),e}},{key:\"columns\",get:function(){return this._columns},set:function(e){var t=this;this._headerRowCount=e.reduce((function(e,t){var r=(t.header?1:t.headers&&t.headers.length)||0;return Math.max(e,r)}),0);var r=1,n=this._columns=[];e.forEach((function(e){var o=new f(t,r++,!1);n.push(o),o.defn=e}))}},{key:\"columnCount\",get:function(){var e=0;return this.eachRow((function(t){e=Math.max(e,t.cellCount)})),e}},{key:\"actualColumnCount\",get:function(){var e=[],t=0;return this.eachRow((function(r){r.eachCell((function(r){var n=r.col;e[n]||(e[n]=!0,t++)}))})),t}},{key:\"_lastRowNumber\",get:function(){for(var e=this._rows,t=e.length;t>0&&void 0===e[t-1];)t--;return t}},{key:\"_nextRow\",get:function(){return this._lastRowNumber+1}},{key:\"lastRow\",get:function(){if(this._rows.length)return this._rows[this._rows.length-1]}},{key:\"rowCount\",get:function(){return this._lastRowNumber}},{key:\"actualRowCount\",get:function(){var e=0;return this.eachRow((function(){e++})),e}},{key:\"hasMerges\",get:function(){return a.some(this._merges,Boolean)}},{key:\"tabColor\",get:function(){return console.trace(\"worksheet.tabColor property is now deprecated. Please use worksheet.properties.tabColor\"),this.properties.tabColor},set:function(e){console.trace(\"worksheet.tabColor property is now deprecated. Please use worksheet.properties.tabColor\"),this.properties.tabColor=e}},{key:\"model\",get:function(){var e={id:this.id,name:this.name,dataValidations:this.dataValidations.model,properties:this.properties,state:this.state,pageSetup:this.pageSetup,headerFooter:this.headerFooter,rowBreaks:this.rowBreaks,views:this.views,autoFilter:this.autoFilter,media:this._media.map((function(e){return e.model})),sheetProtection:this.sheetProtection,tables:Object.values(this.tables).map((function(e){return e.model})),conditionalFormattings:this.conditionalFormattings};e.cols=f.toModel(this.columns);var t=e.rows=[],r=e.dimensions=new u;return this._rows.forEach((function(e){var n=e&&e.model;n&&(r.expand(n.number,n.min,n.number,n.max),t.push(n))})),e.merges=[],a.each(this._merges,(function(t){e.merges.push(t.range)})),e},set:function(e){var t=this;this.name=e.name,this._columns=f.fromModel(this,e.cols),this._parseRows(e),this._parseMergeCells(e),this.dataValidations=new p(e.dataValidations),this.properties=e.properties,this.pageSetup=e.pageSetup,this.headerFooter=e.headerFooter,this.views=e.views,this.autoFilter=e.autoFilter,this._media=e.media.map((function(e){return new h(t,e)})),this.sheetProtection=e.sheetProtection,this.tables=e.tables.reduce((function(e,t){var r=new d;return r.model=t,e[t.name]=r,e}),{}),this.conditionalFormattings=e.conditionalFormattings}}])&&i(t.prototype,r),o&&i(t,o),e}();t.exports=m},{\"../utils/col-cache\":17,\"../utils/encryptor\":18,\"../utils/under-dash\":23,\"./column\":4,\"./data-validations\":5,\"./enums\":7,\"./image\":8,\"./range\":10,\"./row\":11,\"./table\":12}],15:[function(e,t,r){e(\"core-js/modules/es.promise\"),e(\"core-js/modules/es.object.assign\"),e(\"core-js/modules/es.object.keys\"),e(\"regenerator-runtime/runtime\");var n={Workbook:e(\"./doc/workbook\")},o=e(\"./doc/enums\");Object.keys(o).forEach((function(e){n[e]=o[e]})),t.exports=n},{\"./doc/enums\":7,\"./doc/workbook\":13,\"core-js/modules/es.object.assign\":260,\"core-js/modules/es.object.keys\":261,\"core-js/modules/es.promise\":262,\"regenerator-runtime/runtime\":443}],16:[function(e,t,r){function n(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=new Array(t);r=1)for(;a<=26;)t=this._dictionary[a-1],this._n2l[a]=t,this._l2n[t]=a,a++;if(e>=2)for(;a<=702;)n=(r=a-27)%26,o=Math.floor(r/26),t=this._dictionary[o]+this._dictionary[n],this._n2l[a]=t,this._l2n[t]=a,a++;if(e>=3)for(;a<=16384;)n=(r=a-703)%26,o=Math.floor(r/26)%26,i=Math.floor(r/676),t=this._dictionary[i]+this._dictionary[o]+this._dictionary[n],this._n2l[a]=t,this._l2n[t]=a,a++},l2n:function(e){if(this._l2n[e]||this._fill(e.length),!this._l2n[e])throw new Error(\"Out of bounds. Invalid column letter: \".concat(e));return this._l2n[e]},n2l:function(e){if(e<1||e>16384)throw new Error(\"\".concat(e,\" is out of bounds. Excel supports columns from 1 to 16384\"));return this._n2l[e]||this._fill(this._level(e)),this._n2l[e]},_hash:{},validateAddress:function(e){if(!e.match(/^[A-Z]+\\d+$/))throw new Error(\"Invalid Address: \".concat(e));return!0},decodeAddress:function(e){var t=this._hash[e];if(t)return t;var r,n,o=e.match(/[A-Z]+/);o&&(r=o[0],n=this.l2n(r));var i,a,s=e.match(/\\d+/);s&&(i=s[0],a=parseInt(i,10));var u={address:e=(r||\"\")+(i||\"\"),col:n,row:a,$col$row:\"$\".concat(r||\"\",\"$\").concat(i||\"\")};return n<=100&&a<=100&&(this._hash[e]=u,this._hash[u.$col$row]=u),u},getAddress:function(e,t){if(t){var r=this.n2l(t)+e;return this.decodeAddress(r)}return this.decodeAddress(e)},decode:function(e){var t=e.split(\":\");if(2===t.length){var r=this.decodeAddress(t[0]),n=this.decodeAddress(t[1]),o={top:Math.min(r.row,n.row),left:Math.min(r.col,n.col),bottom:Math.max(r.row,n.row),right:Math.max(r.col,n.col)};return o.tl=this.n2l(o.left)+o.top,o.br=this.n2l(o.right)+o.bottom,o.dimensions=\"\".concat(o.tl,\":\").concat(o.br),o}return this.decodeAddress(e)},decodeEx:function(e){var t=e.match(/(?:(?:(?:'((?:[^']|'')*)')|([^'^ !]*))!)?(.*)/),r=t[1]||t[2],n=t[3],o=n.split(\":\");if(o.length>1){var s=this.decodeAddress(o[0]),u=this.decodeAddress(o[1]),c=Math.min(s.row,u.row),f=Math.min(s.col,u.col),l=Math.max(s.row,u.row),h=Math.max(s.col,u.col);return s=this.n2l(f)+c,u=this.n2l(h)+l,{top:c,left:f,bottom:l,right:h,sheetName:r,tl:{address:s,col:f,row:c,$col$row:\"$\".concat(this.n2l(f),\"$\").concat(c),sheetName:r},br:{address:u,col:h,row:l,$col$row:\"$\".concat(this.n2l(h),\"$\").concat(l),sheetName:r},dimensions:\"\".concat(s,\":\").concat(u)}}if(n.startsWith(\"#\"))return r?{sheetName:r,error:n}:{error:n};var d=this.decodeAddress(n);return r?function(e){for(var t=1;t=o&&c<=a&&f>=i&&f<=s}};t.exports=s},{}],18:[function(e,t,r){(function(r){var n=e(\"crypto\"),o={hash:function(e){for(var t=n.createHash(e),o=arguments.length,i=new Array(o>1?o-1:0),a=1;a=e.length?{done:!0}:{done:!1,value:e[t++]}},e:function(e){throw e},f:r}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var n,o,a=!0,s=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw o}}}}function i(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r3||3===l.length&&l>\"XFD\")return e;var p=n.l2n(l),y=parseInt(d,10);return f||(p+=s.col-a.col),h||(y+=s.row-a.row),(t||\"\")+(f||\"\")+n.n2l(p)+(h||\"\")+y}return e}))}}},{\"./col-cache\":17}],21:[function(e,t,r){(function(r,n){function o(e,t,r,n,o,i,a){try{var s=e[i](a),u=s.value}catch(e){return void r(e)}s.done?t(u):Promise.resolve(u).then(n,o)}function i(e){return function(){var t=this,r=arguments;return new Promise((function(n,i){var a=e.apply(t,r);function s(e){o(a,n,i,s,u,\"next\",e)}function u(e){o(a,n,i,s,u,\"throw\",e)}s(void 0)}))}}function a(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function s(e,t){for(var r=0;r=this.length?(t=this.toBuffer(),this.iRead=this.iWrite,t):(t=n.alloc(e),this.buffer.copy(t,0,this.iRead,e),this.iRead+=e,t)}},{key:\"write\",value:function(e,t,r){var n=Math.min(r,this.size-this.iWrite);return e.copy(this.buffer,this.iWrite,t,t+n),this.iWrite+=n,n}},{key:\"length\",get:function(){return this.iWrite-this.iRead}},{key:\"eod\",get:function(){return this.iRead===this.iWrite}},{key:\"full\",get:function(){return this.iWrite===this.size}}]),e}(),m=function(e){e=e||{},this.bufSize=e.bufSize||1048576,this.buffers=[],this.batch=e.batch||!1,this.corked=!1,this.inPos=0,this.outPos=0,this.pipes=[],this.paused=!1,this.encoding=null};f.inherits(m,c.Duplex,{toBuffer:function(){switch(this.buffers.length){case 0:return null;case 1:return this.buffers[0].toBuffer();default:return n.concat(this.buffers.map((function(e){return e.toBuffer()})))}},_getWritableBuffer:function(){if(this.buffers.length){var e=this.buffers[this.buffers.length-1];if(!e.full)return e}var t=new y(this.bufSize);return this.buffers.push(t),t},_pipe:function(e){var t=this;return i(regeneratorRuntime.mark((function r(){var n;return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return n=function(t){return new Promise((function(r){t.write(e.toBuffer(),(function(){r()}))}))},r.next=3,Promise.all(t.pipes.map(n));case 3:case\"end\":return r.stop()}}),r)})))()},_writeToBuffers:function(e){for(var t=0,r=e.length;t1;)a._pipe(a.buffers.shift());i.next=29;break;case 21:if(a.corked){i.next=27;break}return i.next=24,a._pipe(s);case 24:o(),i.next=29;break;case 27:a._writeToBuffers(s),r.nextTick(o);case 29:i.next=34;break;case 31:a.paused||a.emit(\"data\",s.toBuffer()),a._writeToBuffers(s),a.emit(\"readable\");case 34:return i.abrupt(\"return\",!0);case 35:case\"end\":return i.stop()}}),i)})))()},cork:function(){this.corked=!0},_flush:function(){if(this.pipes.length)for(;this.buffers.length;)this._pipe(this.buffers.shift())},uncork:function(){this.corked=!1,this._flush()},end:function(e,t,r){var n=this,o=function(e){e?r(e):(n._flush(),n.pipes.forEach((function(e){e.end()})),n.emit(\"finish\"))};e?this.write(e,t,o):o()},read:function(e){var t;if(e){for(t=[];e&&this.buffers.length&&!this.buffers[0].eod;){var r=this.buffers[0],o=r.read(e);e-=o.length,t.push(o),r.eod&&r.full&&this.buffers.shift()}return n.concat(t)}return t=this.buffers.map((function(e){return e.toBuffer()})).filter(Boolean),this.buffers=[],n.concat(t)},setEncoding:function(e){this.encoding=e},pause:function(){this.paused=!0},resume:function(){this.paused=!1},isPaused:function(){return!!this.paused},pipe:function(e){this.pipes.push(e),!this.paused&&this.buffers.length&&this.end()},unpipe:function(e){this.pipes=this.pipes.filter((function(t){return t!==e}))},unshift:function(){throw new Error(\"Not Implemented\")},wrap:function(){throw new Error(\"Not Implemented\")}}),t.exports=m}).call(this,e(\"_process\"),e(\"buffer\").Buffer)},{\"./string-buf\":22,\"./utils\":24,_process:419,buffer:188,\"readable-stream\":442}],22:[function(e,t,r){(function(e){function r(e,t){for(var r=0;r=this._buf.length-4;)this._grow(this._inPos+e.length),t=this._inPos+this._buf.write(e,this._inPos,this._encoding);this._inPos=t}},{key:\"addStringBuf\",value:function(e){e.length&&(this._buffer=void 0,this.length+e.length>this.capacity&&this._grow(this.length+e.length),e._buf.copy(this._buf,this._inPos,0,e.length),this._inPos+=e.length)}},{key:\"length\",get:function(){return this._inPos}},{key:\"capacity\",get:function(){return this._buf.length}},{key:\"buffer\",get:function(){return this._buf}}])&&r(n.prototype,o),i&&r(n,i),t}();t.exports=n}).call(this,e(\"buffer\").Buffer)},{buffer:188}],23:[function(e,t,r){function n(e){return(n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}var o=Object.prototype.toString,i={each:function(e,t){e&&(Array.isArray(e)?e.forEach(t):Object.keys(e).forEach((function(r){t(e[r],r)})))},some:function(e,t){return!!e&&(Array.isArray(e)?e.some(t):Object.keys(e).some((function(r){return t(e[r],r)})))},every:function(e,t){return!e||(Array.isArray(e)?e.every(t):Object.keys(e).every((function(r){return t(e[r],r)})))},map:function(e,t){return e?Array.isArray(e)?e.map(t):Object.keys(e).map((function(r){return t(e[r],r)})):[]},keyBy:function(e,t){return e.reduce((function(e,r){return e[r[t]]=r,e}),{})},isEqual:function(e,t){var r=n(e),o=n(t),a=Array.isArray(e),s=Array.isArray(t);if(r!==o)return!1;switch(n(e)){case\"object\":return a||s?!(!a||!s)&&(e.length===t.length&&e.every((function(e,r){var n=t[r];return i.isEqual(e,n)}))):i.every(e,(function(e,r){var n=t[r];return i.isEqual(e,n)}));default:return e===t}},escapeHtml:function(e){return e.replace(/&/g,\"&\").replace(//g,\">\").replace(/\"/g,\""\").replace(/'/g,\"'\")},strcmp:function(e,t){return et?1:0},isUndefined:function(e){return\"[object Undefined]\"===o.call(e)},isObject:function(e){return\"[object Object]\"===o.call(e)},deepMerge:function(){var e,t,r,n=arguments[0]||{},o=arguments.length;function a(o,a){e=n[a],r=Array.isArray(o),i.isObject(o)||r?(r?(r=!1,t=e&&Array.isArray(e)?e:[]):t=e&&i.isObject(e)?e:{},n[a]=i.deepMerge(t,o)):i.isUndefined(o)||(n[a]=o)}for(var s=0;s&'\"\\x7F\\x00-\\x08\\x0B-\\x0C\\x0E-\\x1F]/g,(function(e){switch(e){case\"<\":return\"<\";case\">\":return\">\";case\"&\":return\"&\";case\"'\":return\"'\";case'\"':return\""\";default:return\"\"}}))},xmlDecode:function(e){return e.replace(/&([a-z]*);/,(function(e){switch(e){case\"<\":return\"<\";case\">\":return\">\";case\"&\":return\"&\";case\"'\":return\"'\";case\""\":return'\"';default:return e}}))},validInt:function(e){var t=parseInt(e,10);return Number.isNaN(t)?0:t},isDateFmt:function(e){return!!e&&null!==(e=(e=e.replace(/\\[[^\\]]*]/g,\"\")).replace(/\"[^\"]*\"/g,\"\")).match(/[ymdhMsb]+/)},fs:{exists:function(e){return new Promise((function(t){o.access(e,o.constants.F_OK,(function(e){t(!e)}))}))}},toIsoDateString:function(e){return e.toIsoString().subsstr(0,10)}};t.exports=i}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},e(\"timers\").setImmediate)},{fs:186,timers:471}],25:[function(e,t,r){function n(e,t){for(var r=0;r\\n\")}},{key:\"openNode\",value:function(e,t){var r=this.tos,n=this._xml;r&&this.open&&n.push(\">\"),this._stack.push(e),n.push(\"<\"),n.push(e),s(n,t),this.leaf=!0,this.open=!0}},{key:\"addAttribute\",value:function(e,t){if(!this.open)throw new Error(\"Cannot write attributes to node if it is not open\");void 0!==t&&a(this._xml,e,t)}},{key:\"addAttributes\",value:function(e){if(!this.open)throw new Error(\"Cannot write attributes to node if it is not open\");s(this._xml,e)}},{key:\"writeText\",value:function(e){var t=this._xml;this.open&&(t.push(\">\"),this.open=!1),this.leaf=!1,t.push(i.xmlEncode(e.toString()))}},{key:\"writeXml\",value:function(e){this.open&&(this._xml.push(\">\"),this.open=!1),this.leaf=!1,this._xml.push(e)}},{key:\"closeNode\",value:function(){var e=this._stack.pop(),t=this._xml;this.leaf?t.push(\"/>\"):(t.push(\"\")),this.open=!1,this.leaf=!1}},{key:\"leafNode\",value:function(e,t,r){this.openNode(e,t),void 0!==r&&this.writeText(r),this.closeNode()}},{key:\"closeAll\",value:function(){for(;this._stack.length;)this.closeNode()}},{key:\"addRollback\",value:function(){return this._rollbacks.push({xml:this._xml.length,stack:this._stack.length,leaf:this.leaf,open:this.open}),this.cursor}},{key:\"commit\",value:function(){this._rollbacks.pop()}},{key:\"rollback\",value:function(){var e=this._rollbacks.pop();this._xml.length>e.xml&&this._xml.splice(e.xml,this._xml.length-e.xml),this._stack.length>e.stack&&this._stack.splice(e.stack,this._stack.length-e.stack),this.leaf=e.leaf,this.open=e.open}},{key:\"tos\",get:function(){return this._stack.length?this._stack[this._stack.length-1]:void 0}},{key:\"cursor\",get:function(){return this._xml.length}},{key:\"xml\",get:function(){return this.closeAll(),this._xml.join(\"\")}}])&&n(t.prototype,r),o&&n(t,o),e}();u.StdDocAttributes={version:\"1.0\",encoding:\"UTF-8\",standalone:\"yes\"},t.exports=u},{\"./under-dash\":23,\"./utils\":24}],26:[function(e,t,r){(function(r){function n(e){return(n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function o(e,t,r,n,o,i,a){try{var s=e[i](a),u=s.value}catch(e){return void r(e)}s.done?t(u):Promise.resolve(u).then(n,o)}function i(e){return function(){var t=this,r=arguments;return new Promise((function(n,i){var a=e.apply(t,r);function s(e){o(a,n,i,s,u,\"next\",e)}function u(e){o(a,n,i,s,u,\"throw\",e)}s(void 0)}))}}function a(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function s(e,t){for(var r=0;r=e.length?{done:!0}:{done:!1,value:e[t++]}},e:function(e){throw e},f:r}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var n,i,a=!0,s=!1;return{s:function(){n=e[Symbol.iterator]()},n:function(){var e=n.next();return a=e.done,e},e:function(e){s=!0,i=e},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw i}}}}function o(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r2&&void 0!==arguments[2]&&arguments[2];if(void 0===e){if(r)return t}else if(r||e!==t)return e.toString()}},{key:\"toStringAttribute\",value:function(t,r){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return e.toAttribute(t,r,n)}},{key:\"toStringValue\",value:function(e,t){return void 0===e?t:e}},{key:\"toBoolAttribute\",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(void 0===e){if(r)return t}else if(r||e!==t)return e?\"1\":\"0\"}},{key:\"toBoolValue\",value:function(e,t){return void 0===e?t:\"1\"===e}},{key:\"toIntAttribute\",value:function(t,r){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return e.toAttribute(t,r,n)}},{key:\"toIntValue\",value:function(e,t){return void 0===e?t:parseInt(e,10)}},{key:\"toFloatAttribute\",value:function(t,r){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return e.toAttribute(t,r,n)}},{key:\"toFloatValue\",value:function(e,t){return void 0===e?t:parseFloat(e)}}],r&&s(t.prototype,r),o&&s(t,o),e}();t.exports=f},{\"../../utils/sax-stream\":19,\"../../utils/xml-stream\":25}],30:[function(e,t,r){function n(e){return(n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function o(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function i(e,t){for(var r=0;rthis.maxItems))throw new Error(\"Max \".concat(this.childXform.tag,\" count exceeded\"));return!0}return!1}},{key:\"reconcile\",value:function(e,t){if(e){var r=this.childXform;e.forEach((function(e){r.reconcile(e,t)}))}}}])&&o(r.prototype,n),c&&o(r,c),l}(e(\"./base-xform\"));t.exports=c},{\"./base-xform\":29}],69:[function(e,t,r){function n(e){return(n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function o(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function i(e,t){for(var r=0;re.length)&&(t=e.length);for(var r=0,n=new Array(t);re.length)&&(t=e.length);for(var r=0,n=new Array(t);r0\");case\"containsErrors\":return\"ISERROR(\".concat(t,\")\");case\"notContainsErrors\":return\"NOT(ISERROR(\".concat(t,\"))\");default:return}}(t);r&&this.formulaXform.render(e,r),e.closeNode()}},{key:\"renderTimePeriod\",value:function(e,t){e.openNode(this.tag,{type:\"timePeriod\",dxfId:t.dxfId,priority:t.priority,timePeriod:t.timePeriod});var r=function(e){if(e.formulae&&e.formulae[0])return e.formulae[0];var t=new d(e.ref).tl;switch(e.timePeriod){case\"thisWeek\":return\"AND(TODAY()-ROUNDDOWN(\".concat(t,\",0)<=WEEKDAY(TODAY())-1,ROUNDDOWN(\").concat(t,\",0)-TODAY()<=7-WEEKDAY(TODAY()))\");case\"lastWeek\":return\"AND(TODAY()-ROUNDDOWN(\".concat(t,\",0)>=(WEEKDAY(TODAY())),TODAY()-ROUNDDOWN(\").concat(t,\",0)<(WEEKDAY(TODAY())+7))\");case\"nextWeek\":return\"AND(ROUNDDOWN(\".concat(t,\",0)-TODAY()>(7-WEEKDAY(TODAY())),ROUNDDOWN(\").concat(t,\",0)-TODAY()<(15-WEEKDAY(TODAY())))\");case\"yesterday\":return\"FLOOR(\".concat(t,\",1)=TODAY()-1\");case\"today\":return\"FLOOR(\".concat(t,\",1)=TODAY()\");case\"tomorrow\":return\"FLOOR(\".concat(t,\",1)=TODAY()+1\");case\"last7Days\":return\"AND(TODAY()-FLOOR(\".concat(t,\",1)<=6,FLOOR(\").concat(t,\",1)<=TODAY())\");case\"lastMonth\":return\"AND(MONTH(\".concat(t,\")=MONTH(EDATE(TODAY(),0-1)),YEAR(\").concat(t,\")=YEAR(EDATE(TODAY(),0-1)))\");case\"thisMonth\":return\"AND(MONTH(\".concat(t,\")=MONTH(TODAY()),YEAR(\").concat(t,\")=YEAR(TODAY()))\");case\"nextMonth\":return\"AND(MONTH(\".concat(t,\")=MONTH(EDATE(TODAY(),0+1)),YEAR(\").concat(t,\")=YEAR(EDATE(TODAY(),0+1)))\");default:return}}(t);r&&this.formulaXform.render(e,r),e.closeNode()}},{key:\"createNewModel\",value:function(e){var t=e.attributes;return function(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=new Array(t);r1||s>1){var f=o.row+(i-1),h=o.col+(s-1);return l({},t.dataValidation,{sqref:\"\".concat(t.address,\":\").concat(y.encodeAddress(f,h))})}return l({},t.dataValidation,{sqref:t.address})}return null})).filter(Boolean)}(t);r.length&&(e.openNode(\"dataValidations\",{count:r.length}),r.forEach((function(t){e.openNode(\"dataValidation\"),\"any\"!==t.type&&(e.addAttribute(\"type\",t.type),t.operator&&\"list\"!==t.type&&\"between\"!==t.operator&&e.addAttribute(\"operator\",t.operator),t.allowBlank&&e.addAttribute(\"allowBlank\",\"1\")),t.showInputMessage&&e.addAttribute(\"showInputMessage\",\"1\"),t.promptTitle&&e.addAttribute(\"promptTitle\",t.promptTitle),t.prompt&&e.addAttribute(\"prompt\",t.prompt),t.showErrorMessage&&e.addAttribute(\"showErrorMessage\",\"1\"),t.errorStyle&&e.addAttribute(\"errorStyle\",t.errorStyle),t.errorTitle&&e.addAttribute(\"errorTitle\",t.errorTitle),t.error&&e.addAttribute(\"error\",t.error),e.addAttribute(\"sqref\",t.sqref),(t.formulae||[]).forEach((function(r,n){e.openNode(\"formula\".concat(n+1)),\"date\"===t.type?e.writeText(p.dateToExcel(new Date(r))):e.writeText(r),e.closeNode()})),e.closeNode()})),e.closeNode())}},{key:\"parseOpen\",value:function(e){switch(e.name){case\"dataValidations\":return this.model={},!0;case\"dataValidation\":this._address=e.attributes.sqref;var t={type:e.attributes.type||\"any\",formulae:[]};switch(e.attributes.type&&g(t,e.attributes,\"allowBlank\"),g(t,e.attributes,\"showInputMessage\"),g(t,e.attributes,\"showErrorMessage\"),t.type){case\"any\":case\"list\":case\"custom\":break;default:v(t,e.attributes,\"operator\",\"between\")}return v(t,e.attributes,\"promptTitle\"),v(t,e.attributes,\"prompt\"),v(t,e.attributes,\"errorStyle\"),v(t,e.attributes,\"errorTitle\"),v(t,e.attributes,\"error\"),this._dataValidation=t,!0;case\"formula1\":case\"formula2\":return this._formula=[],!0;default:return!1}}},{key:\"parseText\",value:function(e){this._formula&&this._formula.push(e)}},{key:\"parseClose\",value:function(e){var t=this;switch(e){case\"dataValidations\":return!1;case\"dataValidation\":return this._dataValidation.formulae&&this._dataValidation.formulae.length||(delete this._dataValidation.formulae,delete this._dataValidation.operator),(this._address.split(/\\s+/g)||[]).forEach((function(e){e.includes(\":\")?new b(e).forEachAddress((function(e){t.model[e]=t._dataValidation})):t.model[e]=t._dataValidation})),!0;case\"formula1\":case\"formula2\":var r=this._formula.join(\"\");switch(this._dataValidation.type){case\"whole\":case\"textLength\":r=parseInt(r,10);break;case\"decimal\":r=parseFloat(r);break;case\"date\":r=p.excelToDate(parseFloat(r))}return this._dataValidation.formulae.push(r),this._formula=void 0,!0;default:return!0}}},{key:\"tag\",get:function(){return\"dataValidations\"}}])&&i(r.prototype,n),f&&i(r,f),m}(m);t.exports=w},{\"../../../doc/range\":10,\"../../../utils/col-cache\":17,\"../../../utils/under-dash\":23,\"../../../utils/utils\":24,\"../base-xform\":29}],91:[function(e,t,r){function n(e){return(n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function o(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function i(e,t){for(var r=0;r0&&t.max>0&&t.min<=t.max&&e.addAttribute(\"spans\",\"\".concat(t.min,\":\").concat(t.max)),t.styleId&&(e.addAttribute(\"s\",t.styleId),e.addAttribute(\"customFormat\",\"1\")),e.addAttribute(\"x14ac:dyDescent\",\"0.25\"),t.outlineLevel&&e.addAttribute(\"outlineLevel\",t.outlineLevel),t.collapsed&&e.addAttribute(\"collapsed\",\"1\");var n=this.map.c;t.cells.forEach((function(t){n.render(e,t,r)})),e.closeNode()}},{key:\"parseOpen\",value:function(e){if(this.parser)return this.parser.parseOpen(e),!0;if(\"row\"===e.name){this.numRowsSeen+=1;var t=e.attributes.spans?e.attributes.spans.split(\":\").map((function(e){return parseInt(e,10)})):[void 0,void 0],r=this.model={number:parseInt(e.attributes.r,10),min:t[0],max:t[1],cells:[]};return e.attributes.s&&(r.styleId=parseInt(e.attributes.s,10)),!0!==e.attributes.hidden&&\"true\"!==e.attributes.hidden&&1!==e.attributes.hidden&&\"1\"!==e.attributes.hidden||(r.hidden=!0),e.attributes.bestFit&&(r.bestFit=!0),e.attributes.ht&&(r.height=parseFloat(e.attributes.ht)),e.attributes.outlineLevel&&(r.outlineLevel=parseInt(e.attributes.outlineLevel,10)),e.attributes.collapsed&&(r.collapsed=!0),!0}return this.parser=this.map[e.name],!!this.parser&&(this.parser.parseOpen(e),!0)}},{key:\"parseText\",value:function(e){this.parser&&this.parser.parseText(e)}},{key:\"parseClose\",value:function(e){if(this.parser){if(!this.parser.parseClose(e)){if(this.model.cells.push(this.parser.model),this.maxItems&&this.model.cells.length>this.maxItems)throw new Error(\"Max column count exceeded\");this.parser=void 0}return!0}return!1}},{key:\"reconcile\",value:function(e,t){e.style=e.styleId?t.styles.getStyleModel(e.styleId):{},void 0!==e.styleId&&(e.styleId=void 0);var r=this.map.c;e.cells.forEach((function(e){r.reconcile(e,t)}))}},{key:\"tag\",get:function(){return\"row\"}}])&&o(r.prototype,n),c&&o(r,c),h}(c);t.exports=l},{\"../base-xform\":29,\"./cell-xform\":70}],107:[function(e,t,r){function n(e){return(n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function o(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function i(e,t){for(var r=0;r0){var i={Id:o(n),Type:h.Comments,Target:\"../comments\".concat(e.id,\".xml\")};n.push(i);var a={Id:o(n),Type:h.VmlDrawing,Target:\"../drawings/vmlDrawing\".concat(e.id,\".vml\")};n.push(a),e.comments.forEach((function(e){e.refAddress=f.decodeAddress(e.ref)})),t.commentRefs.push({commentName:\"comments\".concat(e.id),vmlDrawing:\"vmlDrawing\".concat(e.id)})}var s,u=[];e.media.forEach((function(i){if(\"background\"===i.type){var a=o(n);s=t.media[i.imageId],n.push({Id:a,Type:h.Image,Target:\"../media/\".concat(s.name,\".\").concat(s.extension)}),e.background={rId:a},e.image=t.media[i.imageId]}else if(\"image\"===i.type){var c=e.drawing;s=t.media[i.imageId],c||(c=e.drawing={rId:o(n),name:\"drawing\".concat(++t.drawingsCount),anchors:[],rels:[]},t.drawings.push(c),n.push({Id:c.rId,Type:\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing\",Target:\"../drawings/\".concat(c.name,\".xml\")}));var f=r.preImageId===i.imageId?u[i.imageId]:u[c.rels.length];f||(f=o(c.rels),u[c.rels.length]=f,c.rels.push({Id:f,Type:\"http://schemas.openxmlformats.org/officeDocument/2006/relationships/image\",Target:\"../media/\".concat(s.name,\".\").concat(s.extension)}));var l={picture:{rId:f},range:i.range};if(i.hyperlinks&&i.hyperlinks.hyperlink){var d=o(c.rels);u[c.rels.length]=d,l.picture.hyperlinks={tooltip:i.hyperlinks.tooltip,rId:d},c.rels.push({Id:d,Type:h.Hyperlink,Target:i.hyperlinks.hyperlink,TargetMode:\"External\"})}r.preImageId=i.imageId,c.anchors.push(l)}})),e.tables.forEach((function(e){var r=o(n);e.rId=r,n.push({Id:r,Type:h.Table,Target:\"../tables/\".concat(e.target)}),e.columns.forEach((function(e){var r=e.style;r&&(e.dxfId=t.styles.addDxfStyle(r))}))})),this.map.extLst.prepare(e,t)}},{key:\"render\",value:function(e,t){e.openXml(l.StdDocAttributes),e.openNode(\"worksheet\",L.WORKSHEET_ATTRIBUTES);var r=t.properties?{defaultRowHeight:t.properties.defaultRowHeight,dyDescent:t.properties.dyDescent,outlineLevelCol:t.properties.outlineLevelCol,outlineLevelRow:t.properties.outlineLevelRow}:void 0;t.properties&&t.properties.defaultColWidth&&(r.defaultColWidth=t.properties.defaultColWidth);var n={outlineProperties:t.properties&&t.properties.outlineProperties,tabColor:t.properties&&t.properties.tabColor,pageSetup:t.pageSetup&&t.pageSetup.fitToPage?{fitToPage:t.pageSetup.fitToPage}:void 0},o=t.pageSetup&&t.pageSetup.margins,i={showRowColHeaders:t.pageSetup&&t.pageSetup.showRowColHeaders,showGridLines:t.pageSetup&&t.pageSetup.showGridLines,horizontalCentered:t.pageSetup&&t.pageSetup.horizontalCentered,verticalCentered:t.pageSetup&&t.pageSetup.verticalCentered},a=t.sheetProtection;this.map.sheetPr.render(e,n),this.map.dimension.render(e,t.dimensions),this.map.sheetViews.render(e,t.views),this.map.sheetFormatPr.render(e,r),this.map.cols.render(e,t.cols),this.map.sheetData.render(e,t.rows),this.map.sheetProtection.render(e,a),this.map.autoFilter.render(e,t.autoFilter),this.map.mergeCells.render(e,t.mergeCells),this.map.conditionalFormatting.render(e,t.conditionalFormattings),this.map.dataValidations.render(e,t.dataValidations),this.map.hyperlinks.render(e,t.hyperlinks),this.map.printOptions.render(e,i),this.map.pageMargins.render(e,o),this.map.pageSetup.render(e,t.pageSetup),this.map.headerFooter.render(e,t.headerFooter),this.map.rowBreaks.render(e,t.rowBreaks),this.map.drawing.render(e,t.drawing),this.map.picture.render(e,t.background),this.map.tableParts.render(e,t.tables),this.map.extLst.render(e,t),t.rels&&t.rels.forEach((function(t){t.Type===h.VmlDrawing&&e.leafNode(\"legacyDrawing\",{\"r:id\":t.Id})})),e.closeNode()}},{key:\"parseOpen\",value:function(e){return this.parser?(this.parser.parseOpen(e),!0):\"worksheet\"===e.name?(c.each(this.map,(function(e){e.reset()})),!0):(this.parser=this.map[e.name],this.parser&&this.parser.parseOpen(e),!0)}},{key:\"parseText\",value:function(e){this.parser&&this.parser.parseText(e)}},{key:\"parseClose\",value:function(e){if(this.parser)return this.parser.parseClose(e)||(this.parser=void 0),!0;switch(e){case\"worksheet\":var t=this.map.sheetFormatPr.model||{};this.map.sheetPr.model&&this.map.sheetPr.model.tabColor&&(t.tabColor=this.map.sheetPr.model.tabColor),this.map.sheetPr.model&&this.map.sheetPr.model.outlineProperties&&(t.outlineProperties=this.map.sheetPr.model.outlineProperties);var r={fitToPage:this.map.sheetPr.model&&this.map.sheetPr.model.pageSetup&&this.map.sheetPr.model.pageSetup.fitToPage||!1,margins:this.map.pageMargins.model},n=Object.assign(r,this.map.pageSetup.model,this.map.printOptions.model),o=B(this.map.conditionalFormatting.model,this.map.extLst.model&&this.map.extLst.model[\"x14:conditionalFormattings\"]);return this.model={dimensions:this.map.dimension.model,cols:this.map.cols.model,rows:this.map.sheetData.model,mergeCells:this.map.mergeCells.model,hyperlinks:this.map.hyperlinks.model,dataValidations:this.map.dataValidations.model,properties:t,views:this.map.sheetViews.model,pageSetup:n,headerFooter:this.map.headerFooter.model,background:this.map.picture.model,drawing:this.map.drawing.model,tables:this.map.tableParts.model,conditionalFormattings:o},this.map.autoFilter.model&&(this.model.autoFilter=this.map.autoFilter.model),this.map.sheetProtection.model&&(this.model.sheetProtection=this.map.sheetProtection.model),!1;default:return!0}}},{key:\"reconcile\",value:function(e,t){var r=(e.relationships||[]).reduce((function(r,n){if(r[n.Id]=n,n.Type===h.Comments&&(e.comments=t.comments[n.Target].comments),n.Type===h.VmlDrawing&&e.comments&&e.comments.length){var o=t.vmlDrawings[n.Target].comments;e.comments.forEach((function(e,t){e.note=Object.assign({},e.note,o[t])}))}return r}),{});if(t.commentsMap=(e.comments||[]).reduce((function(e,t){return t.ref&&(e[t.ref]=t),e}),{}),t.hyperlinkMap=(e.hyperlinks||[]).reduce((function(e,t){return t.rId&&(e[t.address]=r[t.rId].Target),e}),{}),t.formulae={},e.rows=e.rows&&e.rows.filter(Boolean)||[],e.rows.forEach((function(e){e.cells=e.cells&&e.cells.filter(Boolean)||[]})),this.map.cols.reconcile(e.cols,t),this.map.sheetData.reconcile(e.rows,t),this.map.conditionalFormatting.reconcile(e.conditionalFormattings,t),e.media=[],e.drawing){var n=r[e.drawing.rId].Target.match(/\\/drawings\\/([a-zA-Z0-9]+)[.][a-zA-Z]{3,4}$/);if(n){var o=n[1];t.drawings[o].anchors.forEach((function(t){if(t.medium){var r={type:\"image\",imageId:t.medium.index,range:t.range,hyperlinks:t.picture.hyperlinks};e.media.push(r)}}))}}var i=e.background&&r[e.background.rId];if(i){var a=i.Target.split(\"/media/\")[1],s=t.mediaIndex&&t.mediaIndex[a];void 0!==s&&e.media.push({type:\"background\",imageId:s})}e.tables=(e.tables||[]).map((function(e){var n=r[e.rId];return t.tables[n.Target]})),delete e.relationships,delete e.hyperlinks,delete e.comments}}])&&o(r.prototype,n),p&&o(r,p),L}(p);F.WORKSHEET_ATTRIBUTES={xmlns:\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\",\"xmlns:r\":\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\",\"xmlns:mc\":\"http://schemas.openxmlformats.org/markup-compatibility/2006\",\"mc:Ignorable\":\"x14ac\",\"xmlns:x14ac\":\"http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac\"},t.exports=F},{\"../../../utils/col-cache\":17,\"../../../utils/under-dash\":23,\"../../../utils/xml-stream\":25,\"../../rel-type\":28,\"../base-xform\":29,\"../list-xform\":68,\"./auto-filter-xform\":69,\"./cf/conditional-formattings-xform\":84,\"./col-xform\":89,\"./data-validations-xform\":90,\"./dimension-xform\":91,\"./drawing-xform\":92,\"./ext-lst-xform\":93,\"./header-footer-xform\":94,\"./hyperlink-xform\":95,\"./merge-cell-xform\":96,\"./merges\":97,\"./page-margins-xform\":100,\"./page-setup-xform\":102,\"./picture-xform\":103,\"./print-options-xform\":104,\"./row-breaks-xform\":105,\"./row-xform\":106,\"./sheet-format-properties-xform\":107,\"./sheet-properties-xform\":108,\"./sheet-protection-xform\":109,\"./sheet-view-xform\":110,\"./table-part-xform\":111}],113:[function(e,t,r){function n(e){return(n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function o(e,t){for(var r=0;r=-90&&e<=90?e:void 0}},indent:function(e){return e=l.validInt(e),Math.max(0,e)},readingOrder:function(e){switch(e){case\"ltr\":return f.ReadingOrder.LeftToRight;case\"rtl\":return f.ReadingOrder.RightToLeft;default:return}}},p=function(e){if(e=d.textRotation(e)){if(\"vertical\"===e)return 255;var t=Math.round(e);if(t>=0&&t<=90)return t;if(t<0&&t>=-90)return 90-t}},y=function(e){var t=l.validInt(e);if(void 0!==t){if(255===t)return\"vertical\";if(t>=0&&t<=90)return t;if(t>90&&t<=180)return 90-t}},m=function(e){!function(e,t){if(\"function\"!=typeof t&&null!==t)throw new TypeError(\"Super expression must either be null or a function\");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&c(e,t)}(h,e);var t,r,n,f,l=(t=h,function(){var e,r=u(t);if(s()){var n=u(this).constructor;e=Reflect.construct(r,arguments,n)}else e=r.apply(this,arguments);return a(this,e)});function h(){return o(this,h),l.apply(this,arguments)}return r=h,(n=[{key:\"render\",value:function(e,t){e.addRollback(),e.openNode(\"alignment\");var r=!1;function n(t,n){n&&(e.addAttribute(t,n),r=!0)}n(\"horizontal\",d.horizontal(t.horizontal)),n(\"vertical\",d.vertical(t.vertical)),n(\"wrapText\",!!d.wrapText(t.wrapText)&&\"1\"),n(\"shrinkToFit\",!!d.shrinkToFit(t.shrinkToFit)&&\"1\"),n(\"indent\",d.indent(t.indent)),n(\"textRotation\",p(t.textRotation)),n(\"readingOrder\",d.readingOrder(t.readingOrder)),e.closeNode(),r?e.commit():e.rollback()}},{key:\"parseOpen\",value:function(e){var t={},r=!1;function n(e,n,o){e&&(t[n]=o,r=!0)}n(e.attributes.horizontal,\"horizontal\",e.attributes.horizontal),n(e.attributes.vertical,\"vertical\",\"center\"===e.attributes.vertical?\"middle\":e.attributes.vertical),n(e.attributes.wrapText,\"wrapText\",!!e.attributes.wrapText),n(e.attributes.shrinkToFit,\"shrinkToFit\",!!e.attributes.shrinkToFit),n(e.attributes.indent,\"indent\",parseInt(e.attributes.indent,10)),n(e.attributes.textRotation,\"textRotation\",y(e.attributes.textRotation)),n(e.attributes.readingOrder,\"readingOrder\",\"2\"===e.attributes.readingOrder?\"rtl\":\"ltr\"),this.model=r?t:null}},{key:\"parseText\",value:function(){}},{key:\"parseClose\",value:function(){return!1}},{key:\"tag\",get:function(){return\"alignment\"}}])&&i(r.prototype,n),f&&i(r,f),h}(h);t.exports=m},{\"../../../doc/enums\":7,\"../../../utils/utils\":24,\"../base-xform\":29}],124:[function(e,t,r){function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e){return(i=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function a(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function s(e,t){for(var r=0;r=1)){e.next=6;break}return i=n.substr(o+1),a=n.substr(0,o),e.next=6,new Promise((function(e,o){var s=new u;s.on(\"finish\",(function(){r.mediaIndex[n]=r.media.length,r.mediaIndex[a]=r.media.length;var t={type:\"image\",name:a,extension:i,buffer:s.toBuffer()};r.media.push(t),e()})),t.on(\"error\",(function(e){o(e)})),t.pipe(s)}));case 6:case\"end\":return e.stop()}}),e)}))),function(e,t,r){return V.apply(this,arguments)})},{key:\"_processDrawingEntry\",value:(H=o(regeneratorRuntime.mark((function e(t,r,n){var o,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=new g,e.next=3,o.parseStream(t);case 3:i=e.sent,r.drawings[n]=i;case 5:case\"end\":return e.stop()}}),e)}))),function(e,t,r){return H.apply(this,arguments)})},{key:\"_processDrawingRelsEntry\",value:(U=o(regeneratorRuntime.mark((function e(t,r,n){var o,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=new p,e.next=3,o.parseStream(t);case 3:i=e.sent,r.drawingRels[n]=i;case 5:case\"end\":return e.stop()}}),e)}))),function(e,t,r){return U.apply(this,arguments)})},{key:\"_processVmlDrawingEntry\",value:(z=o(regeneratorRuntime.mark((function e(t,r,n){var o,i;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=new k,e.next=3,o.parseStream(t);case 3:i=e.sent,r.vmlDrawings[\"../drawings/\".concat(n,\".vml\")]=i;case 5:case\"end\":return e.stop()}}),e)}))),function(e,t,r){return z.apply(this,arguments)})},{key:\"_processThemeEntry\",value:(L=o(regeneratorRuntime.mark((function e(t,r,n){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,new Promise((function(e,o){var i=new u;t.on(\"error\",o),i.on(\"error\",o),i.on(\"finish\",(function(){r.themes[n]=i.read().toString(),e()})),t.pipe(i)}));case 2:case\"end\":return e.stop()}}),e)}))),function(e,t,r){return L.apply(this,arguments)})},{key:\"createInputStream\",value:function(e){return console.warn(\"`XLSX#createInputStream` is deprecated. You should use `XLSX#read` instead. This method will be removed in version 4.0. Please follow upgrade instruction: https://github.com/exceljs/exceljs/blob/master/UPGRADE-4.0.md\"),this._createInputStream(e)}},{key:\"_createInputStream\",value:function(e){var t=this,r={worksheets:[],worksheetHash:{},worksheetRels:[],themes:{},media:[],mediaIndex:{},drawings:{},drawingRels:{},comments:{},tables:{},vmlDrawings:{}},n=[],i=new s.ZipReader({getEntryType:function(e){return e.match(/xl\\/media\\//)?\"nodebuffer\":\"string\"}});return i.on(\"entry\",(function(i){n.push(o(regeneratorRuntime.mark((function n(){var o,a,s,u,c,f,p;return regeneratorRuntime.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:n.prev=0,\"/\"===(o=i.path)[0]&&(o=o.substr(1)),n.t0=o,n.next=\"_rels/.rels\"===n.t0?6:\"xl/workbook.xml\"===n.t0?10:\"xl/_rels/workbook.xml.rels\"===n.t0?19:\"xl/sharedStrings.xml\"===n.t0?23:\"xl/styles.xml\"===n.t0?27:\"docProps/app.xml\"===n.t0?31:\"docProps/core.xml\"===n.t0?38:44;break;case 6:return n.next=8,t.parseRels(i);case 8:return r.globalRels=n.sent,n.abrupt(\"break\",90);case 10:return n.next=12,t.parseWorkbook(i);case 12:return a=n.sent,r.sheets=a.sheets,r.definedNames=a.definedNames,r.views=a.views,r.properties=a.properties,r.calcProperties=a.calcProperties,n.abrupt(\"break\",90);case 19:return n.next=21,t.parseRels(i);case 21:return r.workbookRels=n.sent,n.abrupt(\"break\",90);case 23:return r.sharedStrings=new d,n.next=26,r.sharedStrings.parseStream(i);case 26:return n.abrupt(\"break\",90);case 27:return r.styles=new l,n.next=30,r.styles.parseStream(i);case 30:return n.abrupt(\"break\",90);case 31:return s=new m,n.next=34,s.parseStream(i);case 34:return u=n.sent,r.company=u.company,r.manager=u.manager,n.abrupt(\"break\",90);case 38:return c=new h,n.next=41,c.parseStream(i);case 41:return f=n.sent,Object.assign(r,f),n.abrupt(\"break\",90);case 44:if(!(p=i.path.match(/xl\\/worksheets\\/sheet(\\d+)[.]xml/))){n.next=49;break}return n.next=48,t._processWorksheetEntry(i,r,p[1],e);case 48:return n.abrupt(\"break\",90);case 49:if(!(p=i.path.match(/xl\\/worksheets\\/_rels\\/sheet(\\d+)[.]xml.rels/))){n.next=54;break}return n.next=53,t._processWorksheetRelsEntry(i,r,p[1]);case 53:return n.abrupt(\"break\",90);case 54:if(!(p=i.path.match(/xl\\/theme\\/([a-zA-Z0-9]+)[.]xml/))){n.next=59;break}return n.next=58,t._processThemeEntry(i,r,p[1]);case 58:return n.abrupt(\"break\",90);case 59:if(!(p=i.path.match(/xl\\/media\\/([a-zA-Z0-9]+[.][a-zA-Z0-9]{3,4})$/))){n.next=64;break}return n.next=63,t._processMediaEntry(i,r,p[1]);case 63:return n.abrupt(\"break\",90);case 64:if(!(p=i.path.match(/xl\\/drawings\\/([a-zA-Z0-9]+)[.]xml/))){n.next=69;break}return n.next=68,t._processDrawingEntry(i,r,p[1]);case 68:return n.abrupt(\"break\",90);case 69:if(!(p=i.path.match(/xl\\/(comments\\d+)[.]xml/))){n.next=74;break}return n.next=73,t._processCommentEntry(i,r,p[1]);case 73:return n.abrupt(\"break\",90);case 74:if(!(p=i.path.match(/xl\\/tables\\/(table\\d+)[.]xml/))){n.next=79;break}return n.next=78,t._processTableEntry(i,r,p[1]);case 78:return n.abrupt(\"break\",90);case 79:if(!(p=i.path.match(/xl\\/drawings\\/_rels\\/([a-zA-Z0-9]+)[.]xml[.]rels/))){n.next=84;break}return n.next=83,t._processDrawingRelsEntry(i,r,p[1]);case 83:return n.abrupt(\"break\",90);case 84:if(!(p=i.path.match(/xl\\/drawings\\/(vmlDrawing\\d+)[.]vml/))){n.next=89;break}return n.next=88,t._processVmlDrawingEntry(i,r,p[1]);case 88:return n.abrupt(\"break\",90);case 89:i.autodrain();case 90:n.next=95;break;case 92:n.prev=92,n.t1=n.catch(0),t.error=n.t1;case 95:case\"end\":return n.stop()}}),n,null,[[0,92]])})))())})),i.on(\"finished\",o(regeneratorRuntime.mark((function o(){return regeneratorRuntime.wrap((function(o){for(;;)switch(o.prev=o.next){case 0:return o.prev=0,o.next=3,Promise.all(n);case 3:if(!t.error){o.next=5;break}throw t.error;case 5:t.reconcile(r,e),t.workbook.model=r,i.emit(\"done\"),o.next=13;break;case 10:o.prev=10,o.t0=o.catch(0),i.emit(\"error\",o.t0);case 13:case\"end\":return o.stop()}}),o,null,[[0,10]])})))),i}},{key:\"read\",value:function(e,t){var r=this;return new Promise((function(n,o){t=t||{};var i=r._createInputStream(t);i.on(\"done\",(function(){n(r.workbook)})).on(\"error\",(function(e){o(e)})),e.pipe(i)}))}},{key:\"load\",value:function(e,t){var n=this;void 0===t&&(t={});var o=this._createInputStream();return new Promise((function(i,a){if(o.on(\"done\",(function(){i(n.workbook)})).on(\"error\",(function(e){a(e)})),t.base64){var s=r.from(e.toString(),\"base64\");o.write(s)}else o.write(e);o.end()}))}},{key:\"addMedia\",value:(F=o(regeneratorRuntime.mark((function e(t,r){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,Promise.all(r.media.map(function(){var e=o(regeneratorRuntime.mark((function e(r){var n,o,i,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(\"image\"!==r.type){e.next=13;break}if(n=\"xl/media/\".concat(r.name,\".\").concat(r.extension),!r.filename){e.next=7;break}return e.next=5,S(r.filename);case 5:return o=e.sent,e.abrupt(\"return\",t.append(o,{name:n}));case 7:if(!r.buffer){e.next=9;break}return e.abrupt(\"return\",t.append(r.buffer,{name:n}));case 9:if(!r.base64){e.next=13;break}return i=r.base64,a=i.substring(i.indexOf(\",\")+1),e.abrupt(\"return\",t.append(a,{name:n,base64:!0}));case 13:throw new Error(\"Unsupported media\");case 14:case\"end\":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()));case 2:case\"end\":return e.stop()}}),e)}))),function(e,t){return F.apply(this,arguments)})},{key:\"addDrawings\",value:function(e,t){var r=new g,n=new p;t.worksheets.forEach((function(t){var o=t.drawing;if(o){r.prepare(o,{});var i=r.toXml(o);e.append(i,{name:\"xl/drawings/\".concat(o.name,\".xml\")}),i=n.toXml(o.rels),e.append(i,{name:\"xl/drawings/_rels/\".concat(o.name,\".xml.rels\")})}}))}},{key:\"addTables\",value:function(e,t){var r=new w;t.worksheets.forEach((function(t){t.tables.forEach((function(t){r.prepare(t,{});var n=r.toXml(t);e.append(n,{name:\"xl/tables/\".concat(t.target)})}))}))}},{key:\"addContentTypes\",value:(B=o(regeneratorRuntime.mark((function e(t,r){var n,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=new y,o=n.toXml(r),t.append(o,{name:\"[Content_Types].xml\"});case 3:case\"end\":return e.stop()}}),e)}))),function(e,t){return B.apply(this,arguments)})},{key:\"addApp\",value:(D=o(regeneratorRuntime.mark((function e(t,r){var n,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=new m,o=n.toXml(r),t.append(o,{name:\"docProps/app.xml\"});case 3:case\"end\":return e.stop()}}),e)}))),function(e,t){return D.apply(this,arguments)})},{key:\"addCore\",value:(N=o(regeneratorRuntime.mark((function e(t,r){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=new h,t.append(n.toXml(r),{name:\"docProps/core.xml\"});case 2:case\"end\":return e.stop()}}),e)}))),function(e,t){return N.apply(this,arguments)})},{key:\"addThemes\",value:(I=o(regeneratorRuntime.mark((function e(t,r){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=r.themes||{theme1:x},Object.keys(n).forEach((function(e){var r=n[e],o=\"xl/theme/\".concat(e,\".xml\");t.append(r,{name:o})}));case 2:case\"end\":return e.stop()}}),e)}))),function(e,t){return I.apply(this,arguments)})},{key:\"addOfficeRels\",value:(M=o(regeneratorRuntime.mark((function t(r){var n,o;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:n=new p,o=n.toXml([{Id:\"rId1\",Type:e.RelType.OfficeDocument,Target:\"xl/workbook.xml\"},{Id:\"rId2\",Type:e.RelType.CoreProperties,Target:\"docProps/core.xml\"},{Id:\"rId3\",Type:e.RelType.ExtenderProperties,Target:\"docProps/app.xml\"}]),r.append(o,{name:\"_rels/.rels\"});case 3:case\"end\":return t.stop()}}),t)}))),function(e){return M.apply(this,arguments)})},{key:\"addWorkbookRels\",value:(A=o(regeneratorRuntime.mark((function t(r,n){var o,i,a,s;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:o=1,i=[{Id:\"rId\".concat(o++),Type:e.RelType.Styles,Target:\"styles.xml\"},{Id:\"rId\".concat(o++),Type:e.RelType.Theme,Target:\"theme/theme1.xml\"}],n.sharedStrings.count&&i.push({Id:\"rId\".concat(o++),Type:e.RelType.SharedStrings,Target:\"sharedStrings.xml\"}),n.worksheets.forEach((function(t){t.rId=\"rId\".concat(o++),i.push({Id:t.rId,Type:e.RelType.Worksheet,Target:\"worksheets/sheet\".concat(t.id,\".xml\")})})),a=new p,s=a.toXml(i),r.append(s,{name:\"xl/_rels/workbook.xml.rels\"});case 7:case\"end\":return t.stop()}}),t)}))),function(e,t){return A.apply(this,arguments)})},{key:\"addSharedStrings\",value:(P=o(regeneratorRuntime.mark((function e(t,r){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r.sharedStrings&&r.sharedStrings.count&&t.append(r.sharedStrings.xml,{name:\"xl/sharedStrings.xml\"});case 1:case\"end\":return e.stop()}}),e)}))),function(e,t){return P.apply(this,arguments)})},{key:\"addStyles\",value:(C=o(regeneratorRuntime.mark((function e(t,r){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:(n=r.styles.xml)&&t.append(n,{name:\"xl/styles.xml\"});case 2:case\"end\":return e.stop()}}),e)}))),function(e,t){return C.apply(this,arguments)})},{key:\"addWorkbook\",value:(T=o(regeneratorRuntime.mark((function e(t,r){var n;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=new b,t.append(n.toXml(r),{name:\"xl/workbook.xml\"});case 2:case\"end\":return e.stop()}}),e)}))),function(e,t){return T.apply(this,arguments)})},{key:\"addWorksheets\",value:(j=o(regeneratorRuntime.mark((function e(t,r){var n,o,i,a;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=new v,o=new p,i=new _,a=new k,r.worksheets.forEach((function(e){var r=new f;n.render(r,e),t.append(r.xml,{name:\"xl/worksheets/sheet\".concat(e.id,\".xml\")}),e.rels&&e.rels.length&&(r=new f,o.render(r,e.rels),t.append(r.xml,{name:\"xl/worksheets/_rels/sheet\".concat(e.id,\".xml.rels\")})),e.comments.length>0&&(r=new f,i.render(r,e),t.append(r.xml,{name:\"xl/comments\".concat(e.id,\".xml\")}),r=new f,a.render(r,e),t.append(r.xml,{name:\"xl/drawings/vmlDrawing\".concat(e.id,\".vml\")}))}));case 5:case\"end\":return e.stop()}}),e)}))),function(e,t){return j.apply(this,arguments)})},{key:\"_finalize\",value:function(e){var t=this;return new Promise((function(r,n){e.on(\"finish\",(function(){r(t)})),e.on(\"error\",n),e.finalize()}))}},{key:\"prepareModel\",value:function(e,t){e.creator=e.creator||\"ExcelJS\",e.lastModifiedBy=e.lastModifiedBy||\"ExcelJS\",e.created=e.created||new Date,e.modified=e.modified||new Date,e.useSharedStrings=void 0===t.useSharedStrings||t.useSharedStrings,e.useStyles=void 0===t.useStyles||t.useStyles,e.sharedStrings=new d,e.styles=e.useStyles?new l(!0):new l.Mock;var r=new b,n=new v;r.prepare(e);var o={sharedStrings:e.sharedStrings,styles:e.styles,date1904:e.properties.date1904,drawingsCount:0,media:e.media};o.drawings=e.drawings=[],o.commentRefs=e.commentRefs=[];var i=0;e.tables=[],e.worksheets.forEach((function(t){t.tables.forEach((function(t){i++,t.target=\"table\".concat(i,\".xml\"),t.id=i,e.tables.push(t)})),n.prepare(t,o)}))}},{key:\"write\",value:(R=o(regeneratorRuntime.mark((function e(t,r){var n,o;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=r||{},n=this.workbook.model,(o=new s.ZipWriter(r.zip)).pipe(t),this.prepareModel(n,r),e.next=7,this.addContentTypes(o,n);case 7:return e.next=9,this.addOfficeRels(o,n);case 9:return e.next=11,this.addWorkbookRels(o,n);case 11:return e.next=13,this.addWorksheets(o,n);case 13:return e.next=15,this.addSharedStrings(o,n);case 15:return e.next=17,this.addDrawings(o,n);case 17:return e.next=19,this.addTables(o,n);case 19:return e.next=21,Promise.all([this.addThemes(o,n),this.addStyles(o,n)]);case 21:return e.next=23,this.addMedia(o,n);case 23:return e.next=25,Promise.all([this.addApp(o,n),this.addCore(o,n)]);case 25:return e.next=27,this.addWorkbook(o,n);case 27:return e.abrupt(\"return\",this._finalize(o));case 28:case\"end\":return e.stop()}}),e,this)}))),function(e,t){return R.apply(this,arguments)})},{key:\"writeFile\",value:function(e,t){var r=this,n=a.createWriteStream(e);return new Promise((function(e,o){n.on(\"finish\",(function(){e()})),n.on(\"error\",(function(e){o(e)})),r.write(n,t).then((function(){n.end()}))}))}},{key:\"writeBuffer\",value:(E=o(regeneratorRuntime.mark((function e(t){var r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=new u,e.next=3,this.write(r,t);case 3:return e.abrupt(\"return\",r.read());case 4:case\"end\":return e.stop()}}),e,this)}))),function(e){return E.apply(this,arguments)})}])&&i(t.prototype,n),O&&i(t,O),e}();O.RelType=e(\"./rel-type\"),t.exports=O}).call(this,e(\"buffer\").Buffer)},{\"../utils/stream-buf\":21,\"../utils/utils\":24,\"../utils/xml-stream\":25,\"../utils/zip-stream\":26,\"./rel-type\":28,\"./xform/book/workbook-xform\":35,\"./xform/comment/comments-xform\":37,\"./xform/comment/vml-notes-xform\":42,\"./xform/core/app-xform\":48,\"./xform/core/content-types-xform\":49,\"./xform/core/core-xform\":50,\"./xform/core/relationships-xform\":52,\"./xform/drawing/drawing-xform\":59,\"./xform/sheet/worksheet-xform\":112,\"./xform/strings/shared-strings-xform\":121,\"./xform/style/styles-xform\":132,\"./xform/table/table-xform\":138,\"./xml/theme1.js\":140,buffer:188,fs:186}],140:[function(e,t,r){t.exports='\\n '},{}],141:[function(e,t,r){var n=r;n.bignum=e(\"bn.js\"),n.define=e(\"./asn1/api\").define,n.base=e(\"./asn1/base\"),n.constants=e(\"./asn1/constants\"),n.decoders=e(\"./asn1/decoders\"),n.encoders=e(\"./asn1/encoders\")},{\"./asn1/api\":142,\"./asn1/base\":144,\"./asn1/constants\":148,\"./asn1/decoders\":150,\"./asn1/encoders\":153,\"bn.js\":156}],142:[function(e,t,r){var n=e(\"../asn1\"),o=e(\"inherits\");function i(e,t){this.name=e,this.body=t,this.decoders={},this.encoders={}}r.define=function(e,t){return new i(e,t)},i.prototype._createNamed=function(t){var r;try{r=e(\"vm\").runInThisContext(\"(function \"+this.name+\"(entity) {\\n this._initNamed(entity);\\n})\")}catch(e){r=function(e){this._initNamed(e)}}return o(r,t),r.prototype._initNamed=function(e){t.call(this,e)},new r(this)},i.prototype._getDecoder=function(e){return e=e||\"der\",this.decoders.hasOwnProperty(e)||(this.decoders[e]=this._createNamed(n.decoders[e])),this.decoders[e]},i.prototype.decode=function(e,t,r){return this._getDecoder(t).decode(e,r)},i.prototype._getEncoder=function(e){return e=e||\"der\",this.encoders.hasOwnProperty(e)||(this.encoders[e]=this._createNamed(n.encoders[e])),this.encoders[e]},i.prototype.encode=function(e,t,r){return this._getEncoder(t).encode(e,r)}},{\"../asn1\":141,inherits:341,vm:481}],143:[function(e,t,r){var n=e(\"inherits\"),o=e(\"../base\").Reporter,i=e(\"buffer\").Buffer;function a(e,t){o.call(this,t),i.isBuffer(e)?(this.base=e,this.offset=0,this.length=e.length):this.error(\"Input not Buffer\")}function s(e,t){if(Array.isArray(e))this.length=0,this.value=e.map((function(e){return e instanceof s||(e=new s(e,t)),this.length+=e.length,e}),this);else if(\"number\"==typeof e){if(!(0<=e&&e<=255))return t.error(\"non-byte EncoderBuffer value\");this.value=e,this.length=1}else if(\"string\"==typeof e)this.value=e,this.length=i.byteLength(e);else{if(!i.isBuffer(e))return t.error(\"Unsupported type: \"+_typeof2(e));this.value=e,this.length=e.length}}n(a,o),r.DecoderBuffer=a,a.prototype.save=function(){return{offset:this.offset,reporter:o.prototype.save.call(this)}},a.prototype.restore=function(e){var t=new a(this.base);return t.offset=e.offset,t.length=this.offset,this.offset=e.offset,o.prototype.restore.call(this,e.reporter),t},a.prototype.isEmpty=function(){return this.offset===this.length},a.prototype.readUInt8=function(e){return this.offset+1<=this.length?this.base.readUInt8(this.offset++,!0):this.error(e||\"DecoderBuffer overrun\")},a.prototype.skip=function(e,t){if(!(this.offset+e<=this.length))return this.error(t||\"DecoderBuffer overrun\");var r=new a(this.base);return r._reporterState=this._reporterState,r.offset=this.offset,r.length=this.offset+e,this.offset+=e,r},a.prototype.raw=function(e){return this.base.slice(e?e.offset:this.offset,this.length)},r.EncoderBuffer=s,s.prototype.join=function(e,t){return e||(e=new i(this.length)),t||(t=0),0===this.length||(Array.isArray(this.value)?this.value.forEach((function(r){r.join(e,t),t+=r.length})):(\"number\"==typeof this.value?e[t]=this.value:\"string\"==typeof this.value?e.write(this.value,t):i.isBuffer(this.value)&&this.value.copy(e,t),t+=this.length)),e}},{\"../base\":144,buffer:188,inherits:341}],144:[function(e,t,r){var n=r;n.Reporter=e(\"./reporter\").Reporter,n.DecoderBuffer=e(\"./buffer\").DecoderBuffer,n.EncoderBuffer=e(\"./buffer\").EncoderBuffer,n.Node=e(\"./node\")},{\"./buffer\":143,\"./node\":145,\"./reporter\":146}],145:[function(e,t,r){var n=e(\"../base\").Reporter,o=e(\"../base\").EncoderBuffer,i=e(\"../base\").DecoderBuffer,a=e(\"minimalistic-assert\"),s=[\"seq\",\"seqof\",\"set\",\"setof\",\"objid\",\"bool\",\"gentime\",\"utctime\",\"null_\",\"enum\",\"int\",\"objDesc\",\"bitstr\",\"bmpstr\",\"charstr\",\"genstr\",\"graphstr\",\"ia5str\",\"iso646str\",\"numstr\",\"octstr\",\"printstr\",\"t61str\",\"unistr\",\"utf8str\",\"videostr\"],u=[\"key\",\"obj\",\"use\",\"optional\",\"explicit\",\"implicit\",\"def\",\"choice\",\"any\",\"contains\"].concat(s);function c(e,t){var r={};this._baseState=r,r.enc=e,r.parent=t||null,r.children=null,r.tag=null,r.args=null,r.reverseArgs=null,r.choice=null,r.optional=!1,r.any=!1,r.obj=!1,r.use=null,r.useDecoder=null,r.key=null,r.default=null,r.explicit=null,r.implicit=null,r.contains=null,r.parent||(r.children=[],this._wrap())}t.exports=c;var f=[\"enc\",\"parent\",\"children\",\"tag\",\"args\",\"reverseArgs\",\"choice\",\"optional\",\"any\",\"obj\",\"use\",\"alteredUse\",\"key\",\"default\",\"explicit\",\"implicit\",\"contains\"];c.prototype.clone=function(){var e=this._baseState,t={};f.forEach((function(r){t[r]=e[r]}));var r=new this.constructor(t.parent);return r._baseState=t,r},c.prototype._wrap=function(){var e=this._baseState;u.forEach((function(t){this[t]=function(){var r=new this.constructor(this);return e.children.push(r),r[t].apply(r,arguments)}}),this)},c.prototype._init=function(e){var t=this._baseState;a(null===t.parent),e.call(this),t.children=t.children.filter((function(e){return e._baseState.parent===this}),this),a.equal(t.children.length,1,\"Root node can have only one child\")},c.prototype._useArgs=function(e){var t=this._baseState,r=e.filter((function(e){return e instanceof this.constructor}),this);e=e.filter((function(e){return!(e instanceof this.constructor)}),this),0!==r.length&&(a(null===t.children),t.children=r,r.forEach((function(e){e._baseState.parent=this}),this)),0!==e.length&&(a(null===t.args),t.args=e,t.reverseArgs=e.map((function(e){if(\"object\"!==_typeof2(e)||e.constructor!==Object)return e;var t={};return Object.keys(e).forEach((function(r){r==(0|r)&&(r|=0);var n=e[r];t[n]=r})),t})))},[\"_peekTag\",\"_decodeTag\",\"_use\",\"_decodeStr\",\"_decodeObjid\",\"_decodeTime\",\"_decodeNull\",\"_decodeInt\",\"_decodeBool\",\"_decodeList\",\"_encodeComposite\",\"_encodeStr\",\"_encodeObjid\",\"_encodeTime\",\"_encodeNull\",\"_encodeInt\",\"_encodeBool\"].forEach((function(e){c.prototype[e]=function(){var t=this._baseState;throw new Error(e+\" not implemented for encoding: \"+t.enc)}})),s.forEach((function(e){c.prototype[e]=function(){var t=this._baseState,r=Array.prototype.slice.call(arguments);return a(null===t.tag),t.tag=e,this._useArgs(r),this}})),c.prototype.use=function(e){a(e);var t=this._baseState;return a(null===t.use),t.use=e,this},c.prototype.optional=function(){return this._baseState.optional=!0,this},c.prototype.def=function(e){var t=this._baseState;return a(null===t.default),t.default=e,t.optional=!0,this},c.prototype.explicit=function(e){var t=this._baseState;return a(null===t.explicit&&null===t.implicit),t.explicit=e,this},c.prototype.implicit=function(e){var t=this._baseState;return a(null===t.explicit&&null===t.implicit),t.implicit=e,this},c.prototype.obj=function(){var e=this._baseState,t=Array.prototype.slice.call(arguments);return e.obj=!0,0!==t.length&&this._useArgs(t),this},c.prototype.key=function(e){var t=this._baseState;return a(null===t.key),t.key=e,this},c.prototype.any=function(){return this._baseState.any=!0,this},c.prototype.choice=function(e){var t=this._baseState;return a(null===t.choice),t.choice=e,this._useArgs(Object.keys(e).map((function(t){return e[t]}))),this},c.prototype.contains=function(e){var t=this._baseState;return a(null===t.use),t.contains=e,this},c.prototype._decode=function(e,t){var r=this._baseState;if(null===r.parent)return e.wrapResult(r.children[0]._decode(e,t));var n,o=r.default,a=!0,s=null;if(null!==r.key&&(s=e.enterKey(r.key)),r.optional){var u=null;if(null!==r.explicit?u=r.explicit:null!==r.implicit?u=r.implicit:null!==r.tag&&(u=r.tag),null!==u||r.any){if(a=this._peekTag(e,u,r.any),e.isError(a))return a}else{var c=e.save();try{null===r.choice?this._decodeGeneric(r.tag,e,t):this._decodeChoice(e,t),a=!0}catch(e){a=!1}e.restore(c)}}if(r.obj&&a&&(n=e.enterObject()),a){if(null!==r.explicit){var f=this._decodeTag(e,r.explicit);if(e.isError(f))return f;e=f}var l=e.offset;if(null===r.use&&null===r.choice){if(r.any)c=e.save();var h=this._decodeTag(e,null!==r.implicit?r.implicit:r.tag,r.any);if(e.isError(h))return h;r.any?o=e.raw(c):e=h}if(t&&t.track&&null!==r.tag&&t.track(e.path(),l,e.length,\"tagged\"),t&&t.track&&null!==r.tag&&t.track(e.path(),e.offset,e.length,\"content\"),o=r.any?o:null===r.choice?this._decodeGeneric(r.tag,e,t):this._decodeChoice(e,t),e.isError(o))return o;if(r.any||null!==r.choice||null===r.children||r.children.forEach((function(r){r._decode(e,t)})),r.contains&&(\"octstr\"===r.tag||\"bitstr\"===r.tag)){var d=new i(o);o=this._getUse(r.contains,e._reporterState.obj)._decode(d,t)}}return r.obj&&a&&(o=e.leaveObject(n)),null===r.key||null===o&&!0!==a?null!==s&&e.exitKey(s):e.leaveKey(s,r.key,o),o},c.prototype._decodeGeneric=function(e,t,r){var n=this._baseState;return\"seq\"===e||\"set\"===e?null:\"seqof\"===e||\"setof\"===e?this._decodeList(t,e,n.args[0],r):/str$/.test(e)?this._decodeStr(t,e,r):\"objid\"===e&&n.args?this._decodeObjid(t,n.args[0],n.args[1],r):\"objid\"===e?this._decodeObjid(t,null,null,r):\"gentime\"===e||\"utctime\"===e?this._decodeTime(t,e,r):\"null_\"===e?this._decodeNull(t,r):\"bool\"===e?this._decodeBool(t,r):\"objDesc\"===e?this._decodeStr(t,e,r):\"int\"===e||\"enum\"===e?this._decodeInt(t,n.args&&n.args[0],r):null!==n.use?this._getUse(n.use,t._reporterState.obj)._decode(t,r):t.error(\"unknown tag: \"+e)},c.prototype._getUse=function(e,t){var r=this._baseState;return r.useDecoder=this._use(e,t),a(null===r.useDecoder._baseState.parent),r.useDecoder=r.useDecoder._baseState.children[0],r.implicit!==r.useDecoder._baseState.implicit&&(r.useDecoder=r.useDecoder.clone(),r.useDecoder._baseState.implicit=r.implicit),r.useDecoder},c.prototype._decodeChoice=function(e,t){var r=this._baseState,n=null,o=!1;return Object.keys(r.choice).some((function(i){var a=e.save(),s=r.choice[i];try{var u=s._decode(e,t);if(e.isError(u))return!1;n={type:i,value:u},o=!0}catch(t){return e.restore(a),!1}return!0}),this),o?n:e.error(\"Choice not matched\")},c.prototype._createEncoderBuffer=function(e){return new o(e,this.reporter)},c.prototype._encode=function(e,t,r){var n=this._baseState;if(null===n.default||n.default!==e){var o=this._encodeValue(e,t,r);if(void 0!==o&&!this._skipDefault(o,t,r))return o}},c.prototype._encodeValue=function(e,t,r){var o=this._baseState;if(null===o.parent)return o.children[0]._encode(e,t||new n);var i=null;if(this.reporter=t,o.optional&&void 0===e){if(null===o.default)return;e=o.default}var a=null,s=!1;if(o.any)i=this._createEncoderBuffer(e);else if(o.choice)i=this._encodeChoice(e,t);else if(o.contains)a=this._getUse(o.contains,r)._encode(e,t),s=!0;else if(o.children)a=o.children.map((function(r){if(\"null_\"===r._baseState.tag)return r._encode(null,t,e);if(null===r._baseState.key)return t.error(\"Child should have a key\");var n=t.enterKey(r._baseState.key);if(\"object\"!==_typeof2(e))return t.error(\"Child expected, but input is not object\");var o=r._encode(e[r._baseState.key],t,e);return t.leaveKey(n),o}),this).filter((function(e){return e})),a=this._createEncoderBuffer(a);else if(\"seqof\"===o.tag||\"setof\"===o.tag){if(!o.args||1!==o.args.length)return t.error(\"Too many args for : \"+o.tag);if(!Array.isArray(e))return t.error(\"seqof/setof, but data is not Array\");var u=this.clone();u._baseState.implicit=null,a=this._createEncoderBuffer(e.map((function(r){var n=this._baseState;return this._getUse(n.args[0],e)._encode(r,t)}),u))}else null!==o.use?i=this._getUse(o.use,r)._encode(e,t):(a=this._encodePrimitive(o.tag,e),s=!0);if(!o.any&&null===o.choice){var c=null!==o.implicit?o.implicit:o.tag,f=null===o.implicit?\"universal\":\"context\";null===c?null===o.use&&t.error(\"Tag could be omitted only for .use()\"):null===o.use&&(i=this._encodeComposite(c,s,f,a))}return null!==o.explicit&&(i=this._encodeComposite(o.explicit,!1,\"context\",i)),i},c.prototype._encodeChoice=function(e,t){var r=this._baseState,n=r.choice[e.type];return n||a(!1,e.type+\" not found in \"+JSON.stringify(Object.keys(r.choice))),n._encode(e.value,t)},c.prototype._encodePrimitive=function(e,t){var r=this._baseState;if(/str$/.test(e))return this._encodeStr(t,e);if(\"objid\"===e&&r.args)return this._encodeObjid(t,r.reverseArgs[0],r.args[1]);if(\"objid\"===e)return this._encodeObjid(t,null,null);if(\"gentime\"===e||\"utctime\"===e)return this._encodeTime(t,e);if(\"null_\"===e)return this._encodeNull();if(\"int\"===e||\"enum\"===e)return this._encodeInt(t,r.args&&r.reverseArgs[0]);if(\"bool\"===e)return this._encodeBool(t);if(\"objDesc\"===e)return this._encodeStr(t,e);throw new Error(\"Unsupported tag: \"+e)},c.prototype._isNumstr=function(e){return/^[0-9 ]*$/.test(e)},c.prototype._isPrintstr=function(e){return/^[A-Za-z0-9 '\\(\\)\\+,\\-\\.\\/:=\\?]*$/.test(e)}},{\"../base\":144,\"minimalistic-assert\":390}],146:[function(e,t,r){var n=e(\"inherits\");function o(e){this._reporterState={obj:null,path:[],options:e||{},errors:[]}}function i(e,t){this.path=e,this.rethrow(t)}r.Reporter=o,o.prototype.isError=function(e){return e instanceof i},o.prototype.save=function(){var e=this._reporterState;return{obj:e.obj,pathLen:e.path.length}},o.prototype.restore=function(e){var t=this._reporterState;t.obj=e.obj,t.path=t.path.slice(0,e.pathLen)},o.prototype.enterKey=function(e){return this._reporterState.path.push(e)},o.prototype.exitKey=function(e){var t=this._reporterState;t.path=t.path.slice(0,e-1)},o.prototype.leaveKey=function(e,t,r){var n=this._reporterState;this.exitKey(e),null!==n.obj&&(n.obj[t]=r)},o.prototype.path=function(){return this._reporterState.path.join(\"/\")},o.prototype.enterObject=function(){var e=this._reporterState,t=e.obj;return e.obj={},t},o.prototype.leaveObject=function(e){var t=this._reporterState,r=t.obj;return t.obj=e,r},o.prototype.error=function(e){var t,r=this._reporterState,n=e instanceof i;if(t=n?e:new i(r.path.map((function(e){return\"[\"+JSON.stringify(e)+\"]\"})).join(\"\"),e.message||e,e.stack),!r.options.partial)throw t;return n||r.errors.push(t),t},o.prototype.wrapResult=function(e){var t=this._reporterState;return t.options.partial?{result:this.isError(e)?null:e,errors:t.errors}:e},n(i,Error),i.prototype.rethrow=function(e){if(this.message=e+\" at: \"+(this.path||\"(shallow)\"),Error.captureStackTrace&&Error.captureStackTrace(this,i),!this.stack)try{throw new Error(this.message)}catch(e){this.stack=e.stack}return this}},{inherits:341}],147:[function(e,t,r){var n=e(\"../constants\");r.tagClass={0:\"universal\",1:\"application\",2:\"context\",3:\"private\"},r.tagClassByName=n._reverse(r.tagClass),r.tag={0:\"end\",1:\"bool\",2:\"int\",3:\"bitstr\",4:\"octstr\",5:\"null_\",6:\"objid\",7:\"objDesc\",8:\"external\",9:\"real\",10:\"enum\",11:\"embed\",12:\"utf8str\",13:\"relativeOid\",16:\"seq\",17:\"set\",18:\"numstr\",19:\"printstr\",20:\"t61str\",21:\"videostr\",22:\"ia5str\",23:\"utctime\",24:\"gentime\",25:\"graphstr\",26:\"iso646str\",27:\"genstr\",28:\"unistr\",29:\"charstr\",30:\"bmpstr\"},r.tagByName=n._reverse(r.tag)},{\"../constants\":148}],148:[function(e,t,r){var n=r;n._reverse=function(e){var t={};return Object.keys(e).forEach((function(r){(0|r)==r&&(r|=0);var n=e[r];t[n]=r})),t},n.der=e(\"./der\")},{\"./der\":147}],149:[function(e,t,r){var n=e(\"inherits\"),o=e(\"../../asn1\"),i=o.base,a=o.bignum,s=o.constants.der;function u(e){this.enc=\"der\",this.name=e.name,this.entity=e,this.tree=new c,this.tree._init(e.body)}function c(e){i.Node.call(this,\"der\",e)}function f(e,t){var r=e.readUInt8(t);if(e.isError(r))return r;var n=s.tagClass[r>>6],o=0==(32&r);if(31==(31&r)){var i=r;for(r=0;128==(128&i);){if(i=e.readUInt8(t),e.isError(i))return i;r<<=7,r|=127&i}}else r&=31;return{cls:n,primitive:o,tag:r,tagStr:s.tag[r]}}function l(e,t,r){var n=e.readUInt8(r);if(e.isError(n))return n;if(!t&&128===n)return null;if(0==(128&n))return n;var o=127&n;if(o>4)return e.error(\"length octect is too long\");n=0;for(var i=0;i=31)return n.error(\"Multi-octet tag encoding unsupported\");t||(o|=32);return o|=s.tagClassByName[r||\"universal\"]<<6}(e,t,r,this.reporter);if(n.length<128)return(i=new o(2))[0]=a,i[1]=n.length,this._createEncoderBuffer([i,n]);for(var u=1,c=n.length;c>=256;c>>=8)u++;(i=new o(2+u))[0]=a,i[1]=128|u;c=1+u;for(var f=n.length;f>0;c--,f>>=8)i[c]=255&f;return this._createEncoderBuffer([i,n])},c.prototype._encodeStr=function(e,t){if(\"bitstr\"===t)return this._createEncoderBuffer([0|e.unused,e.data]);if(\"bmpstr\"===t){for(var r=new o(2*e.length),n=0;n=40)return this.reporter.error(\"Second objid identifier OOB\");e.splice(0,2,40*e[0]+e[1])}var i=0;for(n=0;n=128;a>>=7)i++}var s=new o(i),u=s.length-1;for(n=e.length-1;n>=0;n--){a=e[n];for(s[u--]=127&a;(a>>=7)>0;)s[u--]=128|127&a}return this._createEncoderBuffer(s)},c.prototype._encodeTime=function(e,t){var r,n=new Date(e);return\"gentime\"===t?r=[f(n.getFullYear()),f(n.getUTCMonth()+1),f(n.getUTCDate()),f(n.getUTCHours()),f(n.getUTCMinutes()),f(n.getUTCSeconds()),\"Z\"].join(\"\"):\"utctime\"===t?r=[f(n.getFullYear()%100),f(n.getUTCMonth()+1),f(n.getUTCDate()),f(n.getUTCHours()),f(n.getUTCMinutes()),f(n.getUTCSeconds()),\"Z\"].join(\"\"):this.reporter.error(\"Encoding \"+t+\" time is not supported yet\"),this._encodeStr(r,\"octstr\")},c.prototype._encodeNull=function(){return this._createEncoderBuffer(\"\")},c.prototype._encodeInt=function(e,t){if(\"string\"==typeof e){if(!t)return this.reporter.error(\"String int or enum given, but no values map\");if(!t.hasOwnProperty(e))return this.reporter.error(\"Values map doesn't contain: \"+JSON.stringify(e));e=t[e]}if(\"number\"!=typeof e&&!o.isBuffer(e)){var r=e.toArray();!e.sign&&128&r[0]&&r.unshift(0),e=new o(r)}if(o.isBuffer(e)){var n=e.length;0===e.length&&n++;var i=new o(n);return e.copy(i),0===e.length&&(i[0]=0),this._createEncoderBuffer(i)}if(e<128)return this._createEncoderBuffer(e);if(e<256)return this._createEncoderBuffer([0,e]);n=1;for(var a=e;a>=256;a>>=8)n++;for(a=(i=new Array(n)).length-1;a>=0;a--)i[a]=255&e,e>>=8;return 128&i[0]&&i.unshift(0),this._createEncoderBuffer(new o(i))},c.prototype._encodeBool=function(e){return this._createEncoderBuffer(e?255:0)},c.prototype._use=function(e,t){return\"function\"==typeof e&&(e=e(t)),e._getEncoder(\"der\").tree},c.prototype._skipDefault=function(e,t,r){var n,o=this._baseState;if(null===o.default)return!1;var i=e.join();if(void 0===o.defaultBuffer&&(o.defaultBuffer=this._encodeValue(o.default,t,r).join()),i.length!==o.defaultBuffer.length)return!1;for(n=0;n0?a-4:a;for(r=0;r>16&255,u[f++]=t>>8&255,u[f++]=255&t;2===s&&(t=o[e.charCodeAt(r)]<<2|o[e.charCodeAt(r+1)]>>4,u[f++]=255&t);1===s&&(t=o[e.charCodeAt(r)]<<10|o[e.charCodeAt(r+1)]<<4|o[e.charCodeAt(r+2)]>>2,u[f++]=t>>8&255,u[f++]=255&t);return u},r.fromByteArray=function(e){for(var t,r=e.length,o=r%3,i=[],a=0,s=r-o;as?s:a+16383));1===o?(t=e[r-1],i.push(n[t>>2]+n[t<<4&63]+\"==\")):2===o&&(t=(e[r-2]<<8)+e[r-1],i.push(n[t>>10]+n[t>>4&63]+n[t<<2&63]+\"=\"));return i.join(\"\")};for(var n=[],o=[],i=\"undefined\"!=typeof Uint8Array?Uint8Array:Array,a=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",s=0,u=a.length;s0)throw new Error(\"Invalid string. Length must be a multiple of 4\");var r=e.indexOf(\"=\");return-1===r&&(r=t),[r,r===t?0:4-r%4]}function f(e,t,r){for(var o,i,a=[],s=t;s>18&63]+n[i>>12&63]+n[i>>6&63]+n[63&i]);return a.join(\"\")}o[\"-\".charCodeAt(0)]=62,o[\"_\".charCodeAt(0)]=63},{}],156:[function(e,t,r){!function(t,r){function n(e,t){if(!e)throw new Error(t||\"Assertion failed\")}function o(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}function i(e,t,r){if(i.isBN(e))return e;this.negative=0,this.words=null,this.length=0,this.red=null,null!==e&&(\"le\"!==t&&\"be\"!==t||(r=t,t=10),this._init(e||0,t||10,r||\"be\"))}var a;\"object\"===_typeof2(t)?t.exports=i:r.BN=i,i.BN=i,i.wordSize=26;try{a=e(\"buffer\").Buffer}catch(e){}function s(e,t,r){for(var n=0,o=Math.min(e.length,r),i=t;i=49&&a<=54?a-49+10:a>=17&&a<=22?a-17+10:15&a}return n}function u(e,t,r,n){for(var o=0,i=Math.min(e.length,r),a=t;a=49?s-49+10:s>=17?s-17+10:s}return o}i.isBN=function(e){return e instanceof i||null!==e&&\"object\"===_typeof2(e)&&e.constructor.wordSize===i.wordSize&&Array.isArray(e.words)},i.max=function(e,t){return e.cmp(t)>0?e:t},i.min=function(e,t){return e.cmp(t)<0?e:t},i.prototype._init=function(e,t,r){if(\"number\"==typeof e)return this._initNumber(e,t,r);if(\"object\"===_typeof2(e))return this._initArray(e,t,r);\"hex\"===t&&(t=16),n(t===(0|t)&&t>=2&&t<=36);var o=0;\"-\"===(e=e.toString().replace(/\\s+/g,\"\"))[0]&&o++,16===t?this._parseHex(e,o):this._parseBase(e,t,o),\"-\"===e[0]&&(this.negative=1),this.strip(),\"le\"===r&&this._initArray(this.toArray(),t,r)},i.prototype._initNumber=function(e,t,r){e<0&&(this.negative=1,e=-e),e<67108864?(this.words=[67108863&e],this.length=1):e<4503599627370496?(this.words=[67108863&e,e/67108864&67108863],this.length=2):(n(e<9007199254740992),this.words=[67108863&e,e/67108864&67108863,1],this.length=3),\"le\"===r&&this._initArray(this.toArray(),t,r)},i.prototype._initArray=function(e,t,r){if(n(\"number\"==typeof e.length),e.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(e.length/3),this.words=new Array(this.length);for(var o=0;o=0;o-=3)a=e[o]|e[o-1]<<8|e[o-2]<<16,this.words[i]|=a<>>26-s&67108863,(s+=24)>=26&&(s-=26,i++);else if(\"le\"===r)for(o=0,i=0;o>>26-s&67108863,(s+=24)>=26&&(s-=26,i++);return this.strip()},i.prototype._parseHex=function(e,t){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var r=0;r=t;r-=6)o=s(e,r,r+6),this.words[n]|=o<>>26-i&4194303,(i+=24)>=26&&(i-=26,n++);r+6!==t&&(o=s(e,t,r+6),this.words[n]|=o<>>26-i&4194303),this.strip()},i.prototype._parseBase=function(e,t,r){this.words=[0],this.length=1;for(var n=0,o=1;o<=67108863;o*=t)n++;n--,o=o/t|0;for(var i=e.length-r,a=i%n,s=Math.min(i,i-a)+r,c=0,f=r;f1&&0===this.words[this.length-1];)this.length--;return this._normSign()},i.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},i.prototype.inspect=function(){return(this.red?\"\"};var c=[\"\",\"0\",\"00\",\"000\",\"0000\",\"00000\",\"000000\",\"0000000\",\"00000000\",\"000000000\",\"0000000000\",\"00000000000\",\"000000000000\",\"0000000000000\",\"00000000000000\",\"000000000000000\",\"0000000000000000\",\"00000000000000000\",\"000000000000000000\",\"0000000000000000000\",\"00000000000000000000\",\"000000000000000000000\",\"0000000000000000000000\",\"00000000000000000000000\",\"000000000000000000000000\",\"0000000000000000000000000\"],f=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],l=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function h(e,t,r){r.negative=t.negative^e.negative;var n=e.length+t.length|0;r.length=n,n=n-1|0;var o=0|e.words[0],i=0|t.words[0],a=o*i,s=67108863&a,u=a/67108864|0;r.words[0]=s;for(var c=1;c>>26,l=67108863&u,h=Math.min(c,t.length-1),d=Math.max(0,c-e.length+1);d<=h;d++){var p=c-d|0;f+=(a=(o=0|e.words[p])*(i=0|t.words[d])+l)/67108864|0,l=67108863&a}r.words[c]=0|l,u=0|f}return 0!==u?r.words[c]=0|u:r.length--,r.strip()}i.prototype.toString=function(e,t){var r;if(t=0|t||1,16===(e=e||10)||\"hex\"===e){r=\"\";for(var o=0,i=0,a=0;a>>24-o&16777215)||a!==this.length-1?c[6-u.length]+u+r:u+r,(o+=2)>=26&&(o-=26,a--)}for(0!==i&&(r=i.toString(16)+r);r.length%t!=0;)r=\"0\"+r;return 0!==this.negative&&(r=\"-\"+r),r}if(e===(0|e)&&e>=2&&e<=36){var h=f[e],d=l[e];r=\"\";var p=this.clone();for(p.negative=0;!p.isZero();){var y=p.modn(d).toString(e);r=(p=p.idivn(d)).isZero()?y+r:c[h-y.length]+y+r}for(this.isZero()&&(r=\"0\"+r);r.length%t!=0;)r=\"0\"+r;return 0!==this.negative&&(r=\"-\"+r),r}n(!1,\"Base should be between 2 and 36\")},i.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&n(!1,\"Number can only safely store up to 53 bits\"),0!==this.negative?-e:e},i.prototype.toJSON=function(){return this.toString(16)},i.prototype.toBuffer=function(e,t){return n(void 0!==a),this.toArrayLike(a,e,t)},i.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},i.prototype.toArrayLike=function(e,t,r){var o=this.byteLength(),i=r||Math.max(1,o);n(o<=i,\"byte array longer than desired length\"),n(i>0,\"Requested array length <= 0\"),this.strip();var a,s,u=\"le\"===t,c=new e(i),f=this.clone();if(u){for(s=0;!f.isZero();s++)a=f.andln(255),f.iushrn(8),c[s]=a;for(;s=4096&&(r+=13,t>>>=13),t>=64&&(r+=7,t>>>=7),t>=8&&(r+=4,t>>>=4),t>=2&&(r+=2,t>>>=2),r+t},i.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,r=0;return 0==(8191&t)&&(r+=13,t>>>=13),0==(127&t)&&(r+=7,t>>>=7),0==(15&t)&&(r+=4,t>>>=4),0==(3&t)&&(r+=2,t>>>=2),0==(1&t)&&r++,r},i.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},i.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},i.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},i.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var r=0;re.length?this.clone().iand(e):e.clone().iand(this)},i.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},i.prototype.iuxor=function(e){var t,r;this.length>e.length?(t=this,r=e):(t=e,r=this);for(var n=0;ne.length?this.clone().ixor(e):e.clone().ixor(this)},i.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},i.prototype.inotn=function(e){n(\"number\"==typeof e&&e>=0);var t=0|Math.ceil(e/26),r=e%26;this._expand(t),r>0&&t--;for(var o=0;o0&&(this.words[o]=~this.words[o]&67108863>>26-r),this.strip()},i.prototype.notn=function(e){return this.clone().inotn(e)},i.prototype.setn=function(e,t){n(\"number\"==typeof e&&e>=0);var r=e/26|0,o=e%26;return this._expand(r+1),this.words[r]=t?this.words[r]|1<e.length?(r=this,n=e):(r=e,n=this);for(var o=0,i=0;i>>26;for(;0!==o&&i>>26;if(this.length=r.length,0!==o)this.words[this.length]=o,this.length++;else if(r!==this)for(;ie.length?this.clone().iadd(e):e.clone().iadd(this)},i.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var r,n,o=this.cmp(e);if(0===o)return this.negative=0,this.length=1,this.words[0]=0,this;o>0?(r=this,n=e):(r=e,n=this);for(var i=0,a=0;a>26,this.words[a]=67108863&t;for(;0!==i&&a>26,this.words[a]=67108863&t;if(0===i&&a>>13,d=0|a[1],p=8191&d,y=d>>>13,m=0|a[2],b=8191&m,v=m>>>13,g=0|a[3],w=8191&g,_=g>>>13,k=0|a[4],x=8191&k,S=k>>>13,O=0|a[5],E=8191&O,R=O>>>13,j=0|a[6],T=8191&j,C=j>>>13,P=0|a[7],A=8191&P,M=P>>>13,I=0|a[8],N=8191&I,D=I>>>13,B=0|a[9],F=8191&B,L=B>>>13,z=0|s[0],U=8191&z,H=z>>>13,V=0|s[1],W=8191&V,q=V>>>13,$=0|s[2],X=8191&$,K=$>>>13,Y=0|s[3],Z=8191&Y,G=Y>>>13,J=0|s[4],Q=8191&J,ee=J>>>13,te=0|s[5],re=8191&te,ne=te>>>13,oe=0|s[6],ie=8191&oe,ae=oe>>>13,se=0|s[7],ue=8191&se,ce=se>>>13,fe=0|s[8],le=8191&fe,he=fe>>>13,de=0|s[9],pe=8191&de,ye=de>>>13;r.negative=e.negative^t.negative,r.length=19;var me=(c+(n=Math.imul(l,U))|0)+((8191&(o=(o=Math.imul(l,H))+Math.imul(h,U)|0))<<13)|0;c=((i=Math.imul(h,H))+(o>>>13)|0)+(me>>>26)|0,me&=67108863,n=Math.imul(p,U),o=(o=Math.imul(p,H))+Math.imul(y,U)|0,i=Math.imul(y,H);var be=(c+(n=n+Math.imul(l,W)|0)|0)+((8191&(o=(o=o+Math.imul(l,q)|0)+Math.imul(h,W)|0))<<13)|0;c=((i=i+Math.imul(h,q)|0)+(o>>>13)|0)+(be>>>26)|0,be&=67108863,n=Math.imul(b,U),o=(o=Math.imul(b,H))+Math.imul(v,U)|0,i=Math.imul(v,H),n=n+Math.imul(p,W)|0,o=(o=o+Math.imul(p,q)|0)+Math.imul(y,W)|0,i=i+Math.imul(y,q)|0;var ve=(c+(n=n+Math.imul(l,X)|0)|0)+((8191&(o=(o=o+Math.imul(l,K)|0)+Math.imul(h,X)|0))<<13)|0;c=((i=i+Math.imul(h,K)|0)+(o>>>13)|0)+(ve>>>26)|0,ve&=67108863,n=Math.imul(w,U),o=(o=Math.imul(w,H))+Math.imul(_,U)|0,i=Math.imul(_,H),n=n+Math.imul(b,W)|0,o=(o=o+Math.imul(b,q)|0)+Math.imul(v,W)|0,i=i+Math.imul(v,q)|0,n=n+Math.imul(p,X)|0,o=(o=o+Math.imul(p,K)|0)+Math.imul(y,X)|0,i=i+Math.imul(y,K)|0;var ge=(c+(n=n+Math.imul(l,Z)|0)|0)+((8191&(o=(o=o+Math.imul(l,G)|0)+Math.imul(h,Z)|0))<<13)|0;c=((i=i+Math.imul(h,G)|0)+(o>>>13)|0)+(ge>>>26)|0,ge&=67108863,n=Math.imul(x,U),o=(o=Math.imul(x,H))+Math.imul(S,U)|0,i=Math.imul(S,H),n=n+Math.imul(w,W)|0,o=(o=o+Math.imul(w,q)|0)+Math.imul(_,W)|0,i=i+Math.imul(_,q)|0,n=n+Math.imul(b,X)|0,o=(o=o+Math.imul(b,K)|0)+Math.imul(v,X)|0,i=i+Math.imul(v,K)|0,n=n+Math.imul(p,Z)|0,o=(o=o+Math.imul(p,G)|0)+Math.imul(y,Z)|0,i=i+Math.imul(y,G)|0;var we=(c+(n=n+Math.imul(l,Q)|0)|0)+((8191&(o=(o=o+Math.imul(l,ee)|0)+Math.imul(h,Q)|0))<<13)|0;c=((i=i+Math.imul(h,ee)|0)+(o>>>13)|0)+(we>>>26)|0,we&=67108863,n=Math.imul(E,U),o=(o=Math.imul(E,H))+Math.imul(R,U)|0,i=Math.imul(R,H),n=n+Math.imul(x,W)|0,o=(o=o+Math.imul(x,q)|0)+Math.imul(S,W)|0,i=i+Math.imul(S,q)|0,n=n+Math.imul(w,X)|0,o=(o=o+Math.imul(w,K)|0)+Math.imul(_,X)|0,i=i+Math.imul(_,K)|0,n=n+Math.imul(b,Z)|0,o=(o=o+Math.imul(b,G)|0)+Math.imul(v,Z)|0,i=i+Math.imul(v,G)|0,n=n+Math.imul(p,Q)|0,o=(o=o+Math.imul(p,ee)|0)+Math.imul(y,Q)|0,i=i+Math.imul(y,ee)|0;var _e=(c+(n=n+Math.imul(l,re)|0)|0)+((8191&(o=(o=o+Math.imul(l,ne)|0)+Math.imul(h,re)|0))<<13)|0;c=((i=i+Math.imul(h,ne)|0)+(o>>>13)|0)+(_e>>>26)|0,_e&=67108863,n=Math.imul(T,U),o=(o=Math.imul(T,H))+Math.imul(C,U)|0,i=Math.imul(C,H),n=n+Math.imul(E,W)|0,o=(o=o+Math.imul(E,q)|0)+Math.imul(R,W)|0,i=i+Math.imul(R,q)|0,n=n+Math.imul(x,X)|0,o=(o=o+Math.imul(x,K)|0)+Math.imul(S,X)|0,i=i+Math.imul(S,K)|0,n=n+Math.imul(w,Z)|0,o=(o=o+Math.imul(w,G)|0)+Math.imul(_,Z)|0,i=i+Math.imul(_,G)|0,n=n+Math.imul(b,Q)|0,o=(o=o+Math.imul(b,ee)|0)+Math.imul(v,Q)|0,i=i+Math.imul(v,ee)|0,n=n+Math.imul(p,re)|0,o=(o=o+Math.imul(p,ne)|0)+Math.imul(y,re)|0,i=i+Math.imul(y,ne)|0;var ke=(c+(n=n+Math.imul(l,ie)|0)|0)+((8191&(o=(o=o+Math.imul(l,ae)|0)+Math.imul(h,ie)|0))<<13)|0;c=((i=i+Math.imul(h,ae)|0)+(o>>>13)|0)+(ke>>>26)|0,ke&=67108863,n=Math.imul(A,U),o=(o=Math.imul(A,H))+Math.imul(M,U)|0,i=Math.imul(M,H),n=n+Math.imul(T,W)|0,o=(o=o+Math.imul(T,q)|0)+Math.imul(C,W)|0,i=i+Math.imul(C,q)|0,n=n+Math.imul(E,X)|0,o=(o=o+Math.imul(E,K)|0)+Math.imul(R,X)|0,i=i+Math.imul(R,K)|0,n=n+Math.imul(x,Z)|0,o=(o=o+Math.imul(x,G)|0)+Math.imul(S,Z)|0,i=i+Math.imul(S,G)|0,n=n+Math.imul(w,Q)|0,o=(o=o+Math.imul(w,ee)|0)+Math.imul(_,Q)|0,i=i+Math.imul(_,ee)|0,n=n+Math.imul(b,re)|0,o=(o=o+Math.imul(b,ne)|0)+Math.imul(v,re)|0,i=i+Math.imul(v,ne)|0,n=n+Math.imul(p,ie)|0,o=(o=o+Math.imul(p,ae)|0)+Math.imul(y,ie)|0,i=i+Math.imul(y,ae)|0;var xe=(c+(n=n+Math.imul(l,ue)|0)|0)+((8191&(o=(o=o+Math.imul(l,ce)|0)+Math.imul(h,ue)|0))<<13)|0;c=((i=i+Math.imul(h,ce)|0)+(o>>>13)|0)+(xe>>>26)|0,xe&=67108863,n=Math.imul(N,U),o=(o=Math.imul(N,H))+Math.imul(D,U)|0,i=Math.imul(D,H),n=n+Math.imul(A,W)|0,o=(o=o+Math.imul(A,q)|0)+Math.imul(M,W)|0,i=i+Math.imul(M,q)|0,n=n+Math.imul(T,X)|0,o=(o=o+Math.imul(T,K)|0)+Math.imul(C,X)|0,i=i+Math.imul(C,K)|0,n=n+Math.imul(E,Z)|0,o=(o=o+Math.imul(E,G)|0)+Math.imul(R,Z)|0,i=i+Math.imul(R,G)|0,n=n+Math.imul(x,Q)|0,o=(o=o+Math.imul(x,ee)|0)+Math.imul(S,Q)|0,i=i+Math.imul(S,ee)|0,n=n+Math.imul(w,re)|0,o=(o=o+Math.imul(w,ne)|0)+Math.imul(_,re)|0,i=i+Math.imul(_,ne)|0,n=n+Math.imul(b,ie)|0,o=(o=o+Math.imul(b,ae)|0)+Math.imul(v,ie)|0,i=i+Math.imul(v,ae)|0,n=n+Math.imul(p,ue)|0,o=(o=o+Math.imul(p,ce)|0)+Math.imul(y,ue)|0,i=i+Math.imul(y,ce)|0;var Se=(c+(n=n+Math.imul(l,le)|0)|0)+((8191&(o=(o=o+Math.imul(l,he)|0)+Math.imul(h,le)|0))<<13)|0;c=((i=i+Math.imul(h,he)|0)+(o>>>13)|0)+(Se>>>26)|0,Se&=67108863,n=Math.imul(F,U),o=(o=Math.imul(F,H))+Math.imul(L,U)|0,i=Math.imul(L,H),n=n+Math.imul(N,W)|0,o=(o=o+Math.imul(N,q)|0)+Math.imul(D,W)|0,i=i+Math.imul(D,q)|0,n=n+Math.imul(A,X)|0,o=(o=o+Math.imul(A,K)|0)+Math.imul(M,X)|0,i=i+Math.imul(M,K)|0,n=n+Math.imul(T,Z)|0,o=(o=o+Math.imul(T,G)|0)+Math.imul(C,Z)|0,i=i+Math.imul(C,G)|0,n=n+Math.imul(E,Q)|0,o=(o=o+Math.imul(E,ee)|0)+Math.imul(R,Q)|0,i=i+Math.imul(R,ee)|0,n=n+Math.imul(x,re)|0,o=(o=o+Math.imul(x,ne)|0)+Math.imul(S,re)|0,i=i+Math.imul(S,ne)|0,n=n+Math.imul(w,ie)|0,o=(o=o+Math.imul(w,ae)|0)+Math.imul(_,ie)|0,i=i+Math.imul(_,ae)|0,n=n+Math.imul(b,ue)|0,o=(o=o+Math.imul(b,ce)|0)+Math.imul(v,ue)|0,i=i+Math.imul(v,ce)|0,n=n+Math.imul(p,le)|0,o=(o=o+Math.imul(p,he)|0)+Math.imul(y,le)|0,i=i+Math.imul(y,he)|0;var Oe=(c+(n=n+Math.imul(l,pe)|0)|0)+((8191&(o=(o=o+Math.imul(l,ye)|0)+Math.imul(h,pe)|0))<<13)|0;c=((i=i+Math.imul(h,ye)|0)+(o>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,n=Math.imul(F,W),o=(o=Math.imul(F,q))+Math.imul(L,W)|0,i=Math.imul(L,q),n=n+Math.imul(N,X)|0,o=(o=o+Math.imul(N,K)|0)+Math.imul(D,X)|0,i=i+Math.imul(D,K)|0,n=n+Math.imul(A,Z)|0,o=(o=o+Math.imul(A,G)|0)+Math.imul(M,Z)|0,i=i+Math.imul(M,G)|0,n=n+Math.imul(T,Q)|0,o=(o=o+Math.imul(T,ee)|0)+Math.imul(C,Q)|0,i=i+Math.imul(C,ee)|0,n=n+Math.imul(E,re)|0,o=(o=o+Math.imul(E,ne)|0)+Math.imul(R,re)|0,i=i+Math.imul(R,ne)|0,n=n+Math.imul(x,ie)|0,o=(o=o+Math.imul(x,ae)|0)+Math.imul(S,ie)|0,i=i+Math.imul(S,ae)|0,n=n+Math.imul(w,ue)|0,o=(o=o+Math.imul(w,ce)|0)+Math.imul(_,ue)|0,i=i+Math.imul(_,ce)|0,n=n+Math.imul(b,le)|0,o=(o=o+Math.imul(b,he)|0)+Math.imul(v,le)|0,i=i+Math.imul(v,he)|0;var Ee=(c+(n=n+Math.imul(p,pe)|0)|0)+((8191&(o=(o=o+Math.imul(p,ye)|0)+Math.imul(y,pe)|0))<<13)|0;c=((i=i+Math.imul(y,ye)|0)+(o>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,n=Math.imul(F,X),o=(o=Math.imul(F,K))+Math.imul(L,X)|0,i=Math.imul(L,K),n=n+Math.imul(N,Z)|0,o=(o=o+Math.imul(N,G)|0)+Math.imul(D,Z)|0,i=i+Math.imul(D,G)|0,n=n+Math.imul(A,Q)|0,o=(o=o+Math.imul(A,ee)|0)+Math.imul(M,Q)|0,i=i+Math.imul(M,ee)|0,n=n+Math.imul(T,re)|0,o=(o=o+Math.imul(T,ne)|0)+Math.imul(C,re)|0,i=i+Math.imul(C,ne)|0,n=n+Math.imul(E,ie)|0,o=(o=o+Math.imul(E,ae)|0)+Math.imul(R,ie)|0,i=i+Math.imul(R,ae)|0,n=n+Math.imul(x,ue)|0,o=(o=o+Math.imul(x,ce)|0)+Math.imul(S,ue)|0,i=i+Math.imul(S,ce)|0,n=n+Math.imul(w,le)|0,o=(o=o+Math.imul(w,he)|0)+Math.imul(_,le)|0,i=i+Math.imul(_,he)|0;var Re=(c+(n=n+Math.imul(b,pe)|0)|0)+((8191&(o=(o=o+Math.imul(b,ye)|0)+Math.imul(v,pe)|0))<<13)|0;c=((i=i+Math.imul(v,ye)|0)+(o>>>13)|0)+(Re>>>26)|0,Re&=67108863,n=Math.imul(F,Z),o=(o=Math.imul(F,G))+Math.imul(L,Z)|0,i=Math.imul(L,G),n=n+Math.imul(N,Q)|0,o=(o=o+Math.imul(N,ee)|0)+Math.imul(D,Q)|0,i=i+Math.imul(D,ee)|0,n=n+Math.imul(A,re)|0,o=(o=o+Math.imul(A,ne)|0)+Math.imul(M,re)|0,i=i+Math.imul(M,ne)|0,n=n+Math.imul(T,ie)|0,o=(o=o+Math.imul(T,ae)|0)+Math.imul(C,ie)|0,i=i+Math.imul(C,ae)|0,n=n+Math.imul(E,ue)|0,o=(o=o+Math.imul(E,ce)|0)+Math.imul(R,ue)|0,i=i+Math.imul(R,ce)|0,n=n+Math.imul(x,le)|0,o=(o=o+Math.imul(x,he)|0)+Math.imul(S,le)|0,i=i+Math.imul(S,he)|0;var je=(c+(n=n+Math.imul(w,pe)|0)|0)+((8191&(o=(o=o+Math.imul(w,ye)|0)+Math.imul(_,pe)|0))<<13)|0;c=((i=i+Math.imul(_,ye)|0)+(o>>>13)|0)+(je>>>26)|0,je&=67108863,n=Math.imul(F,Q),o=(o=Math.imul(F,ee))+Math.imul(L,Q)|0,i=Math.imul(L,ee),n=n+Math.imul(N,re)|0,o=(o=o+Math.imul(N,ne)|0)+Math.imul(D,re)|0,i=i+Math.imul(D,ne)|0,n=n+Math.imul(A,ie)|0,o=(o=o+Math.imul(A,ae)|0)+Math.imul(M,ie)|0,i=i+Math.imul(M,ae)|0,n=n+Math.imul(T,ue)|0,o=(o=o+Math.imul(T,ce)|0)+Math.imul(C,ue)|0,i=i+Math.imul(C,ce)|0,n=n+Math.imul(E,le)|0,o=(o=o+Math.imul(E,he)|0)+Math.imul(R,le)|0,i=i+Math.imul(R,he)|0;var Te=(c+(n=n+Math.imul(x,pe)|0)|0)+((8191&(o=(o=o+Math.imul(x,ye)|0)+Math.imul(S,pe)|0))<<13)|0;c=((i=i+Math.imul(S,ye)|0)+(o>>>13)|0)+(Te>>>26)|0,Te&=67108863,n=Math.imul(F,re),o=(o=Math.imul(F,ne))+Math.imul(L,re)|0,i=Math.imul(L,ne),n=n+Math.imul(N,ie)|0,o=(o=o+Math.imul(N,ae)|0)+Math.imul(D,ie)|0,i=i+Math.imul(D,ae)|0,n=n+Math.imul(A,ue)|0,o=(o=o+Math.imul(A,ce)|0)+Math.imul(M,ue)|0,i=i+Math.imul(M,ce)|0,n=n+Math.imul(T,le)|0,o=(o=o+Math.imul(T,he)|0)+Math.imul(C,le)|0,i=i+Math.imul(C,he)|0;var Ce=(c+(n=n+Math.imul(E,pe)|0)|0)+((8191&(o=(o=o+Math.imul(E,ye)|0)+Math.imul(R,pe)|0))<<13)|0;c=((i=i+Math.imul(R,ye)|0)+(o>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,n=Math.imul(F,ie),o=(o=Math.imul(F,ae))+Math.imul(L,ie)|0,i=Math.imul(L,ae),n=n+Math.imul(N,ue)|0,o=(o=o+Math.imul(N,ce)|0)+Math.imul(D,ue)|0,i=i+Math.imul(D,ce)|0,n=n+Math.imul(A,le)|0,o=(o=o+Math.imul(A,he)|0)+Math.imul(M,le)|0,i=i+Math.imul(M,he)|0;var Pe=(c+(n=n+Math.imul(T,pe)|0)|0)+((8191&(o=(o=o+Math.imul(T,ye)|0)+Math.imul(C,pe)|0))<<13)|0;c=((i=i+Math.imul(C,ye)|0)+(o>>>13)|0)+(Pe>>>26)|0,Pe&=67108863,n=Math.imul(F,ue),o=(o=Math.imul(F,ce))+Math.imul(L,ue)|0,i=Math.imul(L,ce),n=n+Math.imul(N,le)|0,o=(o=o+Math.imul(N,he)|0)+Math.imul(D,le)|0,i=i+Math.imul(D,he)|0;var Ae=(c+(n=n+Math.imul(A,pe)|0)|0)+((8191&(o=(o=o+Math.imul(A,ye)|0)+Math.imul(M,pe)|0))<<13)|0;c=((i=i+Math.imul(M,ye)|0)+(o>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,n=Math.imul(F,le),o=(o=Math.imul(F,he))+Math.imul(L,le)|0,i=Math.imul(L,he);var Me=(c+(n=n+Math.imul(N,pe)|0)|0)+((8191&(o=(o=o+Math.imul(N,ye)|0)+Math.imul(D,pe)|0))<<13)|0;c=((i=i+Math.imul(D,ye)|0)+(o>>>13)|0)+(Me>>>26)|0,Me&=67108863;var Ie=(c+(n=Math.imul(F,pe))|0)+((8191&(o=(o=Math.imul(F,ye))+Math.imul(L,pe)|0))<<13)|0;return c=((i=Math.imul(L,ye))+(o>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,u[0]=me,u[1]=be,u[2]=ve,u[3]=ge,u[4]=we,u[5]=_e,u[6]=ke,u[7]=xe,u[8]=Se,u[9]=Oe,u[10]=Ee,u[11]=Re,u[12]=je,u[13]=Te,u[14]=Ce,u[15]=Pe,u[16]=Ae,u[17]=Me,u[18]=Ie,0!==c&&(u[19]=c,r.length++),r};function p(e,t,r){return(new y).mulp(e,t,r)}function y(e,t){this.x=e,this.y=t}Math.imul||(d=h),i.prototype.mulTo=function(e,t){var r=this.length+e.length;return 10===this.length&&10===e.length?d(this,e,t):r<63?h(this,e,t):r<1024?function(e,t,r){r.negative=t.negative^e.negative,r.length=e.length+t.length;for(var n=0,o=0,i=0;i>>26)|0)>>>26,a&=67108863}r.words[i]=s,n=a,a=o}return 0!==n?r.words[i]=n:r.length--,r.strip()}(this,e,t):p(this,e,t)},y.prototype.makeRBT=function(e){for(var t=new Array(e),r=i.prototype._countBits(e)-1,n=0;n>=1;return n},y.prototype.permute=function(e,t,r,n,o,i){for(var a=0;a>>=1)o++;return 1<>>=13,r[2*a+1]=8191&i,i>>>=13;for(a=2*t;a>=26,t+=o/67108864|0,t+=i>>>26,this.words[r]=67108863&i}return 0!==t&&(this.words[r]=t,this.length++),this},i.prototype.muln=function(e){return this.clone().imuln(e)},i.prototype.sqr=function(){return this.mul(this)},i.prototype.isqr=function(){return this.imul(this.clone())},i.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),r=0;r>>o}return t}(e);if(0===t.length)return new i(1);for(var r=this,n=0;n=0);var t,r=e%26,o=(e-r)/26,i=67108863>>>26-r<<26-r;if(0!==r){var a=0;for(t=0;t>>26-r}a&&(this.words[t]=a,this.length++)}if(0!==o){for(t=this.length-1;t>=0;t--)this.words[t+o]=this.words[t];for(t=0;t=0),o=t?(t-t%26)/26:0;var i=e%26,a=Math.min((e-i)/26,this.length),s=67108863^67108863>>>i<a)for(this.length-=a,c=0;c=0&&(0!==f||c>=o);c--){var l=0|this.words[c];this.words[c]=f<<26-i|l>>>i,f=l&s}return u&&0!==f&&(u.words[u.length++]=f),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},i.prototype.ishrn=function(e,t,r){return n(0===this.negative),this.iushrn(e,t,r)},i.prototype.shln=function(e){return this.clone().ishln(e)},i.prototype.ushln=function(e){return this.clone().iushln(e)},i.prototype.shrn=function(e){return this.clone().ishrn(e)},i.prototype.ushrn=function(e){return this.clone().iushrn(e)},i.prototype.testn=function(e){n(\"number\"==typeof e&&e>=0);var t=e%26,r=(e-t)/26,o=1<=0);var t=e%26,r=(e-t)/26;if(n(0===this.negative,\"imaskn works only with positive numbers\"),this.length<=r)return this;if(0!==t&&r++,this.length=Math.min(r,this.length),0!==t){var o=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},i.prototype.isubn=function(e){if(n(\"number\"==typeof e),n(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(u/67108864|0),this.words[o+r]=67108863&i}for(;o>26,this.words[o+r]=67108863&i;if(0===s)return this.strip();for(n(-1===s),s=0,o=0;o>26,this.words[o]=67108863&i;return this.negative=1,this.strip()},i.prototype._wordDiv=function(e,t){var r=(this.length,e.length),n=this.clone(),o=e,a=0|o.words[o.length-1];0!==(r=26-this._countBits(a))&&(o=o.ushln(r),n.iushln(r),a=0|o.words[o.length-1]);var s,u=n.length-o.length;if(\"mod\"!==t){(s=new i(null)).length=u+1,s.words=new Array(s.length);for(var c=0;c=0;l--){var h=67108864*(0|n.words[o.length+l])+(0|n.words[o.length+l-1]);for(h=Math.min(h/a|0,67108863),n._ishlnsubmul(o,h,l);0!==n.negative;)h--,n.negative=0,n._ishlnsubmul(o,1,l),n.isZero()||(n.negative^=1);s&&(s.words[l]=h)}return s&&s.strip(),n.strip(),\"div\"!==t&&0!==r&&n.iushrn(r),{div:s||null,mod:n}},i.prototype.divmod=function(e,t,r){return n(!e.isZero()),this.isZero()?{div:new i(0),mod:new i(0)}:0!==this.negative&&0===e.negative?(s=this.neg().divmod(e,t),\"mod\"!==t&&(o=s.div.neg()),\"div\"!==t&&(a=s.mod.neg(),r&&0!==a.negative&&a.iadd(e)),{div:o,mod:a}):0===this.negative&&0!==e.negative?(s=this.divmod(e.neg(),t),\"mod\"!==t&&(o=s.div.neg()),{div:o,mod:s.mod}):0!=(this.negative&e.negative)?(s=this.neg().divmod(e.neg(),t),\"div\"!==t&&(a=s.mod.neg(),r&&0!==a.negative&&a.isub(e)),{div:s.div,mod:a}):e.length>this.length||this.cmp(e)<0?{div:new i(0),mod:this}:1===e.length?\"div\"===t?{div:this.divn(e.words[0]),mod:null}:\"mod\"===t?{div:null,mod:new i(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new i(this.modn(e.words[0]))}:this._wordDiv(e,t);var o,a,s},i.prototype.div=function(e){return this.divmod(e,\"div\",!1).div},i.prototype.mod=function(e){return this.divmod(e,\"mod\",!1).mod},i.prototype.umod=function(e){return this.divmod(e,\"mod\",!0).mod},i.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var r=0!==t.div.negative?t.mod.isub(e):t.mod,n=e.ushrn(1),o=e.andln(1),i=r.cmp(n);return i<0||1===o&&0===i?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},i.prototype.modn=function(e){n(e<=67108863);for(var t=(1<<26)%e,r=0,o=this.length-1;o>=0;o--)r=(t*r+(0|this.words[o]))%e;return r},i.prototype.idivn=function(e){n(e<=67108863);for(var t=0,r=this.length-1;r>=0;r--){var o=(0|this.words[r])+67108864*t;this.words[r]=o/e|0,t=o%e}return this.strip()},i.prototype.divn=function(e){return this.clone().idivn(e)},i.prototype.egcd=function(e){n(0===e.negative),n(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var o=new i(1),a=new i(0),s=new i(0),u=new i(1),c=0;t.isEven()&&r.isEven();)t.iushrn(1),r.iushrn(1),++c;for(var f=r.clone(),l=t.clone();!t.isZero();){for(var h=0,d=1;0==(t.words[0]&d)&&h<26;++h,d<<=1);if(h>0)for(t.iushrn(h);h-- >0;)(o.isOdd()||a.isOdd())&&(o.iadd(f),a.isub(l)),o.iushrn(1),a.iushrn(1);for(var p=0,y=1;0==(r.words[0]&y)&&p<26;++p,y<<=1);if(p>0)for(r.iushrn(p);p-- >0;)(s.isOdd()||u.isOdd())&&(s.iadd(f),u.isub(l)),s.iushrn(1),u.iushrn(1);t.cmp(r)>=0?(t.isub(r),o.isub(s),a.isub(u)):(r.isub(t),s.isub(o),u.isub(a))}return{a:s,b:u,gcd:r.iushln(c)}},i.prototype._invmp=function(e){n(0===e.negative),n(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var o,a=new i(1),s=new i(0),u=r.clone();t.cmpn(1)>0&&r.cmpn(1)>0;){for(var c=0,f=1;0==(t.words[0]&f)&&c<26;++c,f<<=1);if(c>0)for(t.iushrn(c);c-- >0;)a.isOdd()&&a.iadd(u),a.iushrn(1);for(var l=0,h=1;0==(r.words[0]&h)&&l<26;++l,h<<=1);if(l>0)for(r.iushrn(l);l-- >0;)s.isOdd()&&s.iadd(u),s.iushrn(1);t.cmp(r)>=0?(t.isub(r),a.isub(s)):(r.isub(t),s.isub(a))}return(o=0===t.cmpn(1)?a:s).cmpn(0)<0&&o.iadd(e),o},i.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),r=e.clone();t.negative=0,r.negative=0;for(var n=0;t.isEven()&&r.isEven();n++)t.iushrn(1),r.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;r.isEven();)r.iushrn(1);var o=t.cmp(r);if(o<0){var i=t;t=r,r=i}else if(0===o||0===r.cmpn(1))break;t.isub(r)}return r.iushln(n)},i.prototype.invm=function(e){return this.egcd(e).a.umod(e)},i.prototype.isEven=function(){return 0==(1&this.words[0])},i.prototype.isOdd=function(){return 1==(1&this.words[0])},i.prototype.andln=function(e){return this.words[0]&e},i.prototype.bincn=function(e){n(\"number\"==typeof e);var t=e%26,r=(e-t)/26,o=1<>>26,s&=67108863,this.words[a]=s}return 0!==i&&(this.words[a]=i,this.length++),this},i.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},i.prototype.cmpn=function(e){var t,r=e<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)t=1;else{r&&(e=-e),n(e<=67108863,\"Number is too big\");var o=0|this.words[0];t=o===e?0:oe.length)return 1;if(this.length=0;r--){var n=0|this.words[r],o=0|e.words[r];if(n!==o){no&&(t=1);break}}return t},i.prototype.gtn=function(e){return 1===this.cmpn(e)},i.prototype.gt=function(e){return 1===this.cmp(e)},i.prototype.gten=function(e){return this.cmpn(e)>=0},i.prototype.gte=function(e){return this.cmp(e)>=0},i.prototype.ltn=function(e){return-1===this.cmpn(e)},i.prototype.lt=function(e){return-1===this.cmp(e)},i.prototype.lten=function(e){return this.cmpn(e)<=0},i.prototype.lte=function(e){return this.cmp(e)<=0},i.prototype.eqn=function(e){return 0===this.cmpn(e)},i.prototype.eq=function(e){return 0===this.cmp(e)},i.red=function(e){return new k(e)},i.prototype.toRed=function(e){return n(!this.red,\"Already a number in reduction context\"),n(0===this.negative,\"red works only with positives\"),e.convertTo(this)._forceRed(e)},i.prototype.fromRed=function(){return n(this.red,\"fromRed works only with numbers in reduction context\"),this.red.convertFrom(this)},i.prototype._forceRed=function(e){return this.red=e,this},i.prototype.forceRed=function(e){return n(!this.red,\"Already a number in reduction context\"),this._forceRed(e)},i.prototype.redAdd=function(e){return n(this.red,\"redAdd works only with red numbers\"),this.red.add(this,e)},i.prototype.redIAdd=function(e){return n(this.red,\"redIAdd works only with red numbers\"),this.red.iadd(this,e)},i.prototype.redSub=function(e){return n(this.red,\"redSub works only with red numbers\"),this.red.sub(this,e)},i.prototype.redISub=function(e){return n(this.red,\"redISub works only with red numbers\"),this.red.isub(this,e)},i.prototype.redShl=function(e){return n(this.red,\"redShl works only with red numbers\"),this.red.shl(this,e)},i.prototype.redMul=function(e){return n(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,e),this.red.mul(this,e)},i.prototype.redIMul=function(e){return n(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,e),this.red.imul(this,e)},i.prototype.redSqr=function(){return n(this.red,\"redSqr works only with red numbers\"),this.red._verify1(this),this.red.sqr(this)},i.prototype.redISqr=function(){return n(this.red,\"redISqr works only with red numbers\"),this.red._verify1(this),this.red.isqr(this)},i.prototype.redSqrt=function(){return n(this.red,\"redSqrt works only with red numbers\"),this.red._verify1(this),this.red.sqrt(this)},i.prototype.redInvm=function(){return n(this.red,\"redInvm works only with red numbers\"),this.red._verify1(this),this.red.invm(this)},i.prototype.redNeg=function(){return n(this.red,\"redNeg works only with red numbers\"),this.red._verify1(this),this.red.neg(this)},i.prototype.redPow=function(e){return n(this.red&&!e.red,\"redPow(normalNum)\"),this.red._verify1(this),this.red.pow(this,e)};var m={k256:null,p224:null,p192:null,p25519:null};function b(e,t){this.name=e,this.p=new i(t,16),this.n=this.p.bitLength(),this.k=new i(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function v(){b.call(this,\"k256\",\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\")}function g(){b.call(this,\"p224\",\"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\")}function w(){b.call(this,\"p192\",\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\")}function _(){b.call(this,\"25519\",\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\")}function k(e){if(\"string\"==typeof e){var t=i._prime(e);this.m=t.p,this.prime=t}else n(e.gtn(1),\"modulus must be greater than 1\"),this.m=e,this.prime=null}function x(e){k.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new i(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}b.prototype._tmp=function(){var e=new i(null);return e.words=new Array(Math.ceil(this.n/13)),e},b.prototype.ireduce=function(e){var t,r=e;do{this.split(r,this.tmp),t=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(t>this.n);var n=t0?r.isub(this.p):r.strip(),r},b.prototype.split=function(e,t){e.iushrn(this.n,0,t)},b.prototype.imulK=function(e){return e.imul(this.k)},o(v,b),v.prototype.split=function(e,t){for(var r=Math.min(e.length,9),n=0;n>>22,o=i}o>>>=22,e.words[n-10]=o,0===o&&e.length>10?e.length-=10:e.length-=9},v.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,r=0;r>>=26,e.words[r]=o,t=n}return 0!==t&&(e.words[e.length++]=t),e},i._prime=function(e){if(m[e])return m[e];var t;if(\"k256\"===e)t=new v;else if(\"p224\"===e)t=new g;else if(\"p192\"===e)t=new w;else{if(\"p25519\"!==e)throw new Error(\"Unknown prime \"+e);t=new _}return m[e]=t,t},k.prototype._verify1=function(e){n(0===e.negative,\"red works only with positives\"),n(e.red,\"red works only with red numbers\")},k.prototype._verify2=function(e,t){n(0==(e.negative|t.negative),\"red works only with positives\"),n(e.red&&e.red===t.red,\"red works only with red numbers\")},k.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},k.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},k.prototype.add=function(e,t){this._verify2(e,t);var r=e.add(t);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},k.prototype.iadd=function(e,t){this._verify2(e,t);var r=e.iadd(t);return r.cmp(this.m)>=0&&r.isub(this.m),r},k.prototype.sub=function(e,t){this._verify2(e,t);var r=e.sub(t);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},k.prototype.isub=function(e,t){this._verify2(e,t);var r=e.isub(t);return r.cmpn(0)<0&&r.iadd(this.m),r},k.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},k.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},k.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},k.prototype.isqr=function(e){return this.imul(e,e.clone())},k.prototype.sqr=function(e){return this.mul(e,e)},k.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(n(t%2==1),3===t){var r=this.m.add(new i(1)).iushrn(2);return this.pow(e,r)}for(var o=this.m.subn(1),a=0;!o.isZero()&&0===o.andln(1);)a++,o.iushrn(1);n(!o.isZero());var s=new i(1).toRed(this),u=s.redNeg(),c=this.m.subn(1).iushrn(1),f=this.m.bitLength();for(f=new i(2*f*f).toRed(this);0!==this.pow(f,c).cmp(u);)f.redIAdd(u);for(var l=this.pow(f,o),h=this.pow(e,o.addn(1).iushrn(1)),d=this.pow(e,o),p=a;0!==d.cmp(s);){for(var y=d,m=0;0!==y.cmp(s);m++)y=y.redSqr();n(m=0;n--){for(var c=t.words[n],f=u-1;f>=0;f--){var l=c>>f&1;o!==r[0]&&(o=this.sqr(o)),0!==l||0!==a?(a<<=1,a|=l,(4===++s||0===n&&0===f)&&(o=this.mul(o,r[a]),s=0,a=0)):s=0}u=26}return o},k.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},k.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},i.mont=function(e){return new x(e)},o(x,k),x.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},x.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},x.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var r=e.imul(t),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),o=r.isub(n).iushrn(this.shift),i=o;return o.cmp(this.m)>=0?i=o.isub(this.m):o.cmpn(0)<0&&(i=o.iadd(this.m)),i._forceRed(this)},x.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new i(0)._forceRed(this);var r=e.mul(t),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),o=r.isub(n).iushrn(this.shift),a=o;return o.cmp(this.m)>=0?a=o.isub(this.m):o.cmpn(0)<0&&(a=o.iadd(this.m)),a._forceRed(this)},x.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(void 0===t||t,this)},{buffer:158}],157:[function(e,t,r){var n;function o(e){this.rand=e}if(t.exports=function(e){return n||(n=new o(null)),n.generate(e)},t.exports.Rand=o,o.prototype.generate=function(e){return this._rand(e)},o.prototype._rand=function(e){if(this.rand.getBytes)return this.rand.getBytes(e);for(var t=new Uint8Array(e),r=0;r>>24]^f[p>>>16&255]^l[y>>>8&255]^h[255&m]^t[b++],a=c[p>>>24]^f[y>>>16&255]^l[m>>>8&255]^h[255&d]^t[b++],s=c[y>>>24]^f[m>>>16&255]^l[d>>>8&255]^h[255&p]^t[b++],u=c[m>>>24]^f[d>>>16&255]^l[p>>>8&255]^h[255&y]^t[b++],d=i,p=a,y=s,m=u;return i=(n[d>>>24]<<24|n[p>>>16&255]<<16|n[y>>>8&255]<<8|n[255&m])^t[b++],a=(n[p>>>24]<<24|n[y>>>16&255]<<16|n[m>>>8&255]<<8|n[255&d])^t[b++],s=(n[y>>>24]<<24|n[m>>>16&255]<<16|n[d>>>8&255]<<8|n[255&p])^t[b++],u=(n[m>>>24]<<24|n[d>>>16&255]<<16|n[p>>>8&255]<<8|n[255&y])^t[b++],[i>>>=0,a>>>=0,s>>>=0,u>>>=0]}var s=[0,1,2,4,8,16,32,64,128,27,54],u=function(){for(var e=new Array(256),t=0;t<256;t++)e[t]=t<128?t<<1:t<<1^283;for(var r=[],n=[],o=[[],[],[],[]],i=[[],[],[],[]],a=0,s=0,u=0;u<256;++u){var c=s^s<<1^s<<2^s<<3^s<<4;c=c>>>8^255&c^99,r[a]=c,n[c]=a;var f=e[a],l=e[f],h=e[l],d=257*e[c]^16843008*c;o[0][a]=d<<24|d>>>8,o[1][a]=d<<16|d>>>16,o[2][a]=d<<8|d>>>24,o[3][a]=d,d=16843009*h^65537*l^257*f^16843008*a,i[0][c]=d<<24|d>>>8,i[1][c]=d<<16|d>>>16,i[2][c]=d<<8|d>>>24,i[3][c]=d,0===a?a=s=1:(a=f^e[e[e[h^f]]],s^=e[e[s]])}return{SBOX:r,INV_SBOX:n,SUB_MIX:o,INV_SUB_MIX:i}}();function c(e){this._key=o(e),this._reset()}c.blockSize=16,c.keySize=32,c.prototype.blockSize=c.blockSize,c.prototype.keySize=c.keySize,c.prototype._reset=function(){for(var e=this._key,t=e.length,r=t+6,n=4*(r+1),o=[],i=0;i>>24,a=u.SBOX[a>>>24]<<24|u.SBOX[a>>>16&255]<<16|u.SBOX[a>>>8&255]<<8|u.SBOX[255&a],a^=s[i/t|0]<<24):t>6&&i%t==4&&(a=u.SBOX[a>>>24]<<24|u.SBOX[a>>>16&255]<<16|u.SBOX[a>>>8&255]<<8|u.SBOX[255&a]),o[i]=o[i-t]^a}for(var c=[],f=0;f>>24]]^u.INV_SUB_MIX[1][u.SBOX[h>>>16&255]]^u.INV_SUB_MIX[2][u.SBOX[h>>>8&255]]^u.INV_SUB_MIX[3][u.SBOX[255&h]]}this._nRounds=r,this._keySchedule=o,this._invKeySchedule=c},c.prototype.encryptBlockRaw=function(e){return a(e=o(e),this._keySchedule,u.SUB_MIX,u.SBOX,this._nRounds)},c.prototype.encryptBlock=function(e){var t=this.encryptBlockRaw(e),r=n.allocUnsafe(16);return r.writeUInt32BE(t[0],0),r.writeUInt32BE(t[1],4),r.writeUInt32BE(t[2],8),r.writeUInt32BE(t[3],12),r},c.prototype.decryptBlock=function(e){var t=(e=o(e))[1];e[1]=e[3],e[3]=t;var r=a(e,this._invKeySchedule,u.INV_SUB_MIX,u.INV_SBOX,this._nRounds),i=n.allocUnsafe(16);return i.writeUInt32BE(r[0],0),i.writeUInt32BE(r[3],4),i.writeUInt32BE(r[2],8),i.writeUInt32BE(r[1],12),i},c.prototype.scrub=function(){i(this._keySchedule),i(this._invKeySchedule),i(this._key)},t.exports.AES=c},{\"safe-buffer\":445}],160:[function(e,t,r){var n=e(\"./aes\"),o=e(\"safe-buffer\").Buffer,i=e(\"cipher-base\"),a=e(\"inherits\"),s=e(\"./ghash\"),u=e(\"buffer-xor\"),c=e(\"./incr32\");function f(e,t,r,a){i.call(this);var u=o.alloc(4,0);this._cipher=new n.AES(t);var f=this._cipher.encryptBlock(u);this._ghash=new s(f),r=function(e,t,r){if(12===t.length)return e._finID=o.concat([t,o.from([0,0,0,1])]),o.concat([t,o.from([0,0,0,2])]);var n=new s(r),i=t.length,a=i%16;n.update(t),a&&(a=16-a,n.update(o.alloc(a,0))),n.update(o.alloc(8,0));var u=8*i,f=o.alloc(8);f.writeUIntBE(u,0,8),n.update(f),e._finID=n.state;var l=o.from(e._finID);return c(l),l}(this,r,f),this._prev=o.from(r),this._cache=o.allocUnsafe(0),this._secCache=o.allocUnsafe(0),this._decrypt=a,this._alen=0,this._len=0,this._mode=e,this._authTag=null,this._called=!1}a(f,i),f.prototype._update=function(e){if(!this._called&&this._alen){var t=16-this._alen%16;t<16&&(t=o.alloc(t,0),this._ghash.update(t))}this._called=!0;var r=this._mode.encrypt(this,e);return this._decrypt?this._ghash.update(e):this._ghash.update(r),this._len+=e.length,r},f.prototype._final=function(){if(this._decrypt&&!this._authTag)throw new Error(\"Unsupported state or unable to authenticate data\");var e=u(this._ghash.final(8*this._alen,8*this._len),this._cipher.encryptBlock(this._finID));if(this._decrypt&&function(e,t){var r=0;e.length!==t.length&&r++;for(var n=Math.min(e.length,t.length),o=0;o16)throw new Error(\"unable to decrypt data\");var r=-1;for(;++r16)return t=this.cache.slice(0,16),this.cache=this.cache.slice(16),t}else if(this.cache.length>=16)return t=this.cache.slice(0,16),this.cache=this.cache.slice(16),t;return null},l.prototype.flush=function(){if(this.cache.length)return this.cache},r.createDecipher=function(e,t){var r=i[e.toLowerCase()];if(!r)throw new TypeError(\"invalid suite type\");var n=c(t,!1,r.key,r.iv);return h(e,n.key,n.iv)},r.createDecipheriv=h},{\"./aes\":159,\"./authCipher\":160,\"./modes\":172,\"./streamCipher\":175,\"cipher-base\":189,evp_bytestokey:300,inherits:341,\"safe-buffer\":445}],163:[function(e,t,r){var n=e(\"./modes\"),o=e(\"./authCipher\"),i=e(\"safe-buffer\").Buffer,a=e(\"./streamCipher\"),s=e(\"cipher-base\"),u=e(\"./aes\"),c=e(\"evp_bytestokey\");function f(e,t,r){s.call(this),this._cache=new h,this._cipher=new u.AES(t),this._prev=i.from(r),this._mode=e,this._autopadding=!0}e(\"inherits\")(f,s),f.prototype._update=function(e){var t,r;this._cache.add(e);for(var n=[];t=this._cache.get();)r=this._mode.encrypt(this,t),n.push(r);return i.concat(n)};var l=i.alloc(16,16);function h(){this.cache=i.allocUnsafe(0)}function d(e,t,r){var s=n[e.toLowerCase()];if(!s)throw new TypeError(\"invalid suite type\");if(\"string\"==typeof t&&(t=i.from(t)),t.length!==s.key/8)throw new TypeError(\"invalid key length \"+t.length);if(\"string\"==typeof r&&(r=i.from(r)),\"GCM\"!==s.mode&&r.length!==s.iv)throw new TypeError(\"invalid iv length \"+r.length);return\"stream\"===s.type?new a(s.module,t,r):\"auth\"===s.type?new o(s.module,t,r):new f(s.module,t,r)}f.prototype._final=function(){var e=this._cache.flush();if(this._autopadding)return e=this._mode.encrypt(this,e),this._cipher.scrub(),e;if(!e.equals(l))throw this._cipher.scrub(),new Error(\"data not multiple of block length\")},f.prototype.setAutoPadding=function(e){return this._autopadding=!!e,this},h.prototype.add=function(e){this.cache=i.concat([this.cache,e])},h.prototype.get=function(){if(this.cache.length>15){var e=this.cache.slice(0,16);return this.cache=this.cache.slice(16),e}return null},h.prototype.flush=function(){for(var e=16-this.cache.length,t=i.allocUnsafe(e),r=-1;++r>>0,0),t.writeUInt32BE(e[1]>>>0,4),t.writeUInt32BE(e[2]>>>0,8),t.writeUInt32BE(e[3]>>>0,12),t}function a(e){this.h=e,this.state=n.alloc(16,0),this.cache=n.allocUnsafe(0)}a.prototype.ghash=function(e){for(var t=-1;++t0;t--)n[t]=n[t]>>>1|(1&n[t-1])<<31;n[0]=n[0]>>>1,r&&(n[0]=n[0]^225<<24)}this.state=i(o)},a.prototype.update=function(e){var t;for(this.cache=n.concat([this.cache,e]);this.cache.length>=16;)t=this.cache.slice(0,16),this.cache=this.cache.slice(16),this.ghash(t)},a.prototype.final=function(e,t){return this.cache.length&&this.ghash(n.concat([this.cache,o],16)),this.ghash(i([0,e,0,t])),this.state},t.exports=a},{\"safe-buffer\":445}],165:[function(e,t,r){t.exports=function(e){for(var t,r=e.length;r--;){if(255!==(t=e.readUInt8(r))){t++,e.writeUInt8(t,r);break}e.writeUInt8(0,r)}}},{}],166:[function(e,t,r){var n=e(\"buffer-xor\");r.encrypt=function(e,t){var r=n(t,e._prev);return e._prev=e._cipher.encryptBlock(r),e._prev},r.decrypt=function(e,t){var r=e._prev;e._prev=t;var o=e._cipher.decryptBlock(t);return n(o,r)}},{\"buffer-xor\":187}],167:[function(e,t,r){var n=e(\"safe-buffer\").Buffer,o=e(\"buffer-xor\");function i(e,t,r){var i=t.length,a=o(t,e._cache);return e._cache=e._cache.slice(i),e._prev=n.concat([e._prev,r?t:a]),a}r.encrypt=function(e,t,r){for(var o,a=n.allocUnsafe(0);t.length;){if(0===e._cache.length&&(e._cache=e._cipher.encryptBlock(e._prev),e._prev=n.allocUnsafe(0)),!(e._cache.length<=t.length)){a=n.concat([a,i(e,t,r)]);break}o=e._cache.length,a=n.concat([a,i(e,t.slice(0,o),r)]),t=t.slice(o)}return a}},{\"buffer-xor\":187,\"safe-buffer\":445}],168:[function(e,t,r){var n=e(\"safe-buffer\").Buffer;function o(e,t,r){for(var n,o,a=-1,s=0;++a<8;)n=t&1<<7-a?128:0,s+=(128&(o=e._cipher.encryptBlock(e._prev)[0]^n))>>a%8,e._prev=i(e._prev,r?n:o);return s}function i(e,t){var r=e.length,o=-1,i=n.allocUnsafe(e.length);for(e=n.concat([e,n.from([t])]);++o>7;return i}r.encrypt=function(e,t,r){for(var i=t.length,a=n.allocUnsafe(i),s=-1;++s=0||!r.umod(e.prime1)||!r.umod(e.prime2);)r=new n(o(t));return r}t.exports=i,i.getr=a}).call(this,e(\"buffer\").Buffer)},{\"bn.js\":156,buffer:188,randombytes:426}],180:[function(e,t,r){t.exports=e(\"./browser/algorithms.json\")},{\"./browser/algorithms.json\":181}],181:[function(e,t,r){t.exports={sha224WithRSAEncryption:{sign:\"rsa\",hash:\"sha224\",id:\"302d300d06096086480165030402040500041c\"},\"RSA-SHA224\":{sign:\"ecdsa/rsa\",hash:\"sha224\",id:\"302d300d06096086480165030402040500041c\"},sha256WithRSAEncryption:{sign:\"rsa\",hash:\"sha256\",id:\"3031300d060960864801650304020105000420\"},\"RSA-SHA256\":{sign:\"ecdsa/rsa\",hash:\"sha256\",id:\"3031300d060960864801650304020105000420\"},sha384WithRSAEncryption:{sign:\"rsa\",hash:\"sha384\",id:\"3041300d060960864801650304020205000430\"},\"RSA-SHA384\":{sign:\"ecdsa/rsa\",hash:\"sha384\",id:\"3041300d060960864801650304020205000430\"},sha512WithRSAEncryption:{sign:\"rsa\",hash:\"sha512\",id:\"3051300d060960864801650304020305000440\"},\"RSA-SHA512\":{sign:\"ecdsa/rsa\",hash:\"sha512\",id:\"3051300d060960864801650304020305000440\"},\"RSA-SHA1\":{sign:\"rsa\",hash:\"sha1\",id:\"3021300906052b0e03021a05000414\"},\"ecdsa-with-SHA1\":{sign:\"ecdsa\",hash:\"sha1\",id:\"\"},sha256:{sign:\"ecdsa\",hash:\"sha256\",id:\"\"},sha224:{sign:\"ecdsa\",hash:\"sha224\",id:\"\"},sha384:{sign:\"ecdsa\",hash:\"sha384\",id:\"\"},sha512:{sign:\"ecdsa\",hash:\"sha512\",id:\"\"},\"DSA-SHA\":{sign:\"dsa\",hash:\"sha1\",id:\"\"},\"DSA-SHA1\":{sign:\"dsa\",hash:\"sha1\",id:\"\"},DSA:{sign:\"dsa\",hash:\"sha1\",id:\"\"},\"DSA-WITH-SHA224\":{sign:\"dsa\",hash:\"sha224\",id:\"\"},\"DSA-SHA224\":{sign:\"dsa\",hash:\"sha224\",id:\"\"},\"DSA-WITH-SHA256\":{sign:\"dsa\",hash:\"sha256\",id:\"\"},\"DSA-SHA256\":{sign:\"dsa\",hash:\"sha256\",id:\"\"},\"DSA-WITH-SHA384\":{sign:\"dsa\",hash:\"sha384\",id:\"\"},\"DSA-SHA384\":{sign:\"dsa\",hash:\"sha384\",id:\"\"},\"DSA-WITH-SHA512\":{sign:\"dsa\",hash:\"sha512\",id:\"\"},\"DSA-SHA512\":{sign:\"dsa\",hash:\"sha512\",id:\"\"},\"DSA-RIPEMD160\":{sign:\"dsa\",hash:\"rmd160\",id:\"\"},ripemd160WithRSA:{sign:\"rsa\",hash:\"rmd160\",id:\"3021300906052b2403020105000414\"},\"RSA-RIPEMD160\":{sign:\"rsa\",hash:\"rmd160\",id:\"3021300906052b2403020105000414\"},md5WithRSAEncryption:{sign:\"rsa\",hash:\"md5\",id:\"3020300c06082a864886f70d020505000410\"},\"RSA-MD5\":{sign:\"rsa\",hash:\"md5\",id:\"3020300c06082a864886f70d020505000410\"}}},{}],182:[function(e,t,r){t.exports={\"1.3.132.0.10\":\"secp256k1\",\"1.3.132.0.33\":\"p224\",\"1.2.840.10045.3.1.1\":\"p192\",\"1.2.840.10045.3.1.7\":\"p256\",\"1.3.132.0.34\":\"p384\",\"1.3.132.0.35\":\"p521\"}},{}],183:[function(e,t,r){(function(r){var n=e(\"create-hash\"),o=e(\"stream\"),i=e(\"inherits\"),a=e(\"./sign\"),s=e(\"./verify\"),u=e(\"./algorithms.json\");function c(e){o.Writable.call(this);var t=u[e];if(!t)throw new Error(\"Unknown message digest\");this._hashType=t.hash,this._hash=n(t.hash),this._tag=t.id,this._signType=t.sign}function f(e){o.Writable.call(this);var t=u[e];if(!t)throw new Error(\"Unknown message digest\");this._hash=n(t.hash),this._tag=t.id,this._signType=t.sign}function l(e){return new c(e)}function h(e){return new f(e)}Object.keys(u).forEach((function(e){u[e].id=new r(u[e].id,\"hex\"),u[e.toLowerCase()]=u[e]})),i(c,o.Writable),c.prototype._write=function(e,t,r){this._hash.update(e),r()},c.prototype.update=function(e,t){return\"string\"==typeof e&&(e=new r(e,t)),this._hash.update(e),this},c.prototype.sign=function(e,t){this.end();var r=this._hash.digest(),n=a(r,e,this._hashType,this._signType,this._tag);return t?n.toString(t):n},i(f,o.Writable),f.prototype._write=function(e,t,r){this._hash.update(e),r()},f.prototype.update=function(e,t){return\"string\"==typeof e&&(e=new r(e,t)),this._hash.update(e),this},f.prototype.verify=function(e,t,n){\"string\"==typeof t&&(t=new r(t,n)),this.end();var o=this._hash.digest();return s(t,o,e,this._signType,this._tag)},t.exports={Sign:l,Verify:h,createSign:l,createVerify:h}}).call(this,e(\"buffer\").Buffer)},{\"./algorithms.json\":181,\"./sign\":184,\"./verify\":185,buffer:188,\"create-hash\":265,inherits:341,stream:456}],184:[function(e,t,r){(function(r){var n=e(\"create-hmac\"),o=e(\"browserify-rsa\"),i=e(\"elliptic\").ec,a=e(\"bn.js\"),s=e(\"parse-asn1\"),u=e(\"./curves.json\");function c(e,t,o,i){if((e=new r(e.toArray())).length0&&r.ishrn(n),r}function l(e,t,o){var i,a;do{for(i=new r(0);8*i.length=t)throw new Error(\"invalid sig\")}t.exports=function(e,t,u,c,f){var l=i(u);if(\"ec\"===l.type){if(\"ecdsa\"!==c&&\"ecdsa/rsa\"!==c)throw new Error(\"wrong public key type\");return function(e,t,r){var n=a[r.data.algorithm.curve.join(\".\")];if(!n)throw new Error(\"unknown curve \"+r.data.algorithm.curve.join(\".\"));var i=new o(n),s=r.data.subjectPrivateKey.data;return i.verify(t,e,s)}(e,t,l)}if(\"dsa\"===l.type){if(\"dsa\"!==c)throw new Error(\"wrong public key type\");return function(e,t,r){var o=r.data.p,a=r.data.q,u=r.data.g,c=r.data.pub_key,f=i.signature.decode(e,\"der\"),l=f.s,h=f.r;s(l,a),s(h,a);var d=n.mont(o),p=l.invm(a);return 0===u.toRed(d).redPow(new n(t).mul(p).mod(a)).fromRed().mul(c.toRed(d).redPow(h.mul(p).mod(a)).fromRed()).mod(o).mod(a).cmp(h)}(e,t,l)}if(\"rsa\"!==c&&\"ecdsa/rsa\"!==c)throw new Error(\"wrong public key type\");t=r.concat([f,t]);for(var h=l.modulus.byteLength(),d=[1],p=0;t.length+d.length+22147483647)throw new RangeError('The value \"'+e+'\" is invalid for option \"size\"');var r=new Uint8Array(e);return Object.setPrototypeOf(r,t.prototype),r}function t(e,t,r){if(\"number\"==typeof e){if(\"string\"==typeof t)throw new TypeError('The \"string\" argument must be of type string. Received type number');return c(e)}return s(e,t,r)}function s(e,r,n){if(\"string\"==typeof e)return function(e,r){\"string\"==typeof r&&\"\"!==r||(r=\"utf8\");if(!t.isEncoding(r))throw new TypeError(\"Unknown encoding: \"+r);var n=0|h(e,r),o=a(n),i=o.write(e,r);i!==n&&(o=o.slice(0,i));return o}(e,r);if(ArrayBuffer.isView(e))return f(e);if(null==e)throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+_typeof2(e));if(L(e,ArrayBuffer)||e&&L(e.buffer,ArrayBuffer))return function(e,r,n){if(r<0||e.byteLength=2147483647)throw new RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+2147483647..toString(16)+\" bytes\");return 0|e}function h(e,r){if(t.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||L(e,ArrayBuffer))return e.byteLength;if(\"string\"!=typeof e)throw new TypeError('The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+_typeof2(e));var n=e.length,o=arguments.length>2&&!0===arguments[2];if(!o&&0===n)return 0;for(var i=!1;;)switch(r){case\"ascii\":case\"latin1\":case\"binary\":return n;case\"utf8\":case\"utf-8\":return D(e).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return 2*n;case\"hex\":return n>>>1;case\"base64\":return B(e).length;default:if(i)return o?-1:D(e).length;r=(\"\"+r).toLowerCase(),i=!0}}function d(e,t,r){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return\"\";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return\"\";if((r>>>=0)<=(t>>>=0))return\"\";for(e||(e=\"utf8\");;)switch(e){case\"hex\":return R(this,t,r);case\"utf8\":case\"utf-8\":return S(this,t,r);case\"ascii\":return O(this,t,r);case\"latin1\":case\"binary\":return E(this,t,r);case\"base64\":return x(this,t,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return j(this,t,r);default:if(n)throw new TypeError(\"Unknown encoding: \"+e);e=(e+\"\").toLowerCase(),n=!0}}function p(e,t,r){var n=e[t];e[t]=e[r],e[r]=n}function y(e,r,n,o,i){if(0===e.length)return-1;if(\"string\"==typeof n?(o=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),z(n=+n)&&(n=i?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(i)return-1;n=e.length-1}else if(n<0){if(!i)return-1;n=0}if(\"string\"==typeof r&&(r=t.from(r,o)),t.isBuffer(r))return 0===r.length?-1:m(e,r,n,o,i);if(\"number\"==typeof r)return r&=255,\"function\"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,r,n):Uint8Array.prototype.lastIndexOf.call(e,r,n):m(e,[r],n,o,i);throw new TypeError(\"val must be string, number or Buffer\")}function m(e,t,r,n,o){var i,a=1,s=e.length,u=t.length;if(void 0!==n&&(\"ucs2\"===(n=String(n).toLowerCase())||\"ucs-2\"===n||\"utf16le\"===n||\"utf-16le\"===n)){if(e.length<2||t.length<2)return-1;a=2,s/=2,u/=2,r/=2}function c(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(o){var f=-1;for(i=r;is&&(r=s-u),i=r;i>=0;i--){for(var l=!0,h=0;ho&&(n=o):n=o;var i=t.length;n>i/2&&(n=i/2);for(var a=0;a>8,o=r%256,i.push(o),i.push(n);return i}(t,e.length-r),e,r,n)}function x(e,t,r){return 0===t&&r===e.length?n.fromByteArray(e):n.fromByteArray(e.slice(t,r))}function S(e,t,r){r=Math.min(e.length,r);for(var n=[],o=t;o239?4:c>223?3:c>191?2:1;if(o+l<=r)switch(l){case 1:c<128&&(f=c);break;case 2:128==(192&(i=e[o+1]))&&(u=(31&c)<<6|63&i)>127&&(f=u);break;case 3:i=e[o+1],a=e[o+2],128==(192&i)&&128==(192&a)&&(u=(15&c)<<12|(63&i)<<6|63&a)>2047&&(u<55296||u>57343)&&(f=u);break;case 4:i=e[o+1],a=e[o+2],s=e[o+3],128==(192&i)&&128==(192&a)&&128==(192&s)&&(u=(15&c)<<18|(63&i)<<12|(63&a)<<6|63&s)>65535&&u<1114112&&(f=u)}null===f?(f=65533,l=1):f>65535&&(f-=65536,n.push(f>>>10&1023|55296),f=56320|1023&f),n.push(f),o+=l}return function(e){var t=e.length;if(t<=4096)return String.fromCharCode.apply(String,e);var r=\"\",n=0;for(;nt&&(e+=\" ... \"),\"\"},i&&(t.prototype[i]=t.prototype.inspect),t.prototype.compare=function(e,r,n,o,i){if(L(e,Uint8Array)&&(e=t.from(e,e.offset,e.byteLength)),!t.isBuffer(e))throw new TypeError('The \"target\" argument must be one of type Buffer or Uint8Array. Received type '+_typeof2(e));if(void 0===r&&(r=0),void 0===n&&(n=e?e.length:0),void 0===o&&(o=0),void 0===i&&(i=this.length),r<0||n>e.length||o<0||i>this.length)throw new RangeError(\"out of range index\");if(o>=i&&r>=n)return 0;if(o>=i)return-1;if(r>=n)return 1;if(this===e)return 0;for(var a=(i>>>=0)-(o>>>=0),s=(n>>>=0)-(r>>>=0),u=Math.min(a,s),c=this.slice(o,i),f=e.slice(r,n),l=0;l>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n=\"utf8\")):(n=r,r=void 0)}var o=this.length-t;if((void 0===r||r>o)&&(r=o),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError(\"Attempt to write outside buffer bounds\");n||(n=\"utf8\");for(var i=!1;;)switch(n){case\"hex\":return b(this,e,t,r);case\"utf8\":case\"utf-8\":return v(this,e,t,r);case\"ascii\":return g(this,e,t,r);case\"latin1\":case\"binary\":return w(this,e,t,r);case\"base64\":return _(this,e,t,r);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return k(this,e,t,r);default:if(i)throw new TypeError(\"Unknown encoding: \"+n);n=(\"\"+n).toLowerCase(),i=!0}},t.prototype.toJSON=function(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};function O(e,t,r){var n=\"\";r=Math.min(e.length,r);for(var o=t;on)&&(r=n);for(var o=\"\",i=t;ir)throw new RangeError(\"Trying to access beyond buffer length\")}function C(e,r,n,o,i,a){if(!t.isBuffer(e))throw new TypeError('\"buffer\" argument must be a Buffer instance');if(r>i||re.length)throw new RangeError(\"Index out of range\")}function P(e,t,r,n,o,i){if(r+n>e.length)throw new RangeError(\"Index out of range\");if(r<0)throw new RangeError(\"Index out of range\")}function A(e,t,r,n,i){return t=+t,r>>>=0,i||P(e,0,r,4),o.write(e,t,r,n,23,4),r+4}function M(e,t,r,n,i){return t=+t,r>>>=0,i||P(e,0,r,8),o.write(e,t,r,n,52,8),r+8}t.prototype.slice=function(e,r){var n=this.length;(e=~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),(r=void 0===r?n:~~r)<0?(r+=n)<0&&(r=0):r>n&&(r=n),r>>=0,t>>>=0,r||T(e,t,this.length);for(var n=this[e],o=1,i=0;++i>>=0,t>>>=0,r||T(e,t,this.length);for(var n=this[e+--t],o=1;t>0&&(o*=256);)n+=this[e+--t]*o;return n},t.prototype.readUInt8=function(e,t){return e>>>=0,t||T(e,1,this.length),this[e]},t.prototype.readUInt16LE=function(e,t){return e>>>=0,t||T(e,2,this.length),this[e]|this[e+1]<<8},t.prototype.readUInt16BE=function(e,t){return e>>>=0,t||T(e,2,this.length),this[e]<<8|this[e+1]},t.prototype.readUInt32LE=function(e,t){return e>>>=0,t||T(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},t.prototype.readUInt32BE=function(e,t){return e>>>=0,t||T(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},t.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||T(e,t,this.length);for(var n=this[e],o=1,i=0;++i=(o*=128)&&(n-=Math.pow(2,8*t)),n},t.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||T(e,t,this.length);for(var n=t,o=1,i=this[e+--n];n>0&&(o*=256);)i+=this[e+--n]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*t)),i},t.prototype.readInt8=function(e,t){return e>>>=0,t||T(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},t.prototype.readInt16LE=function(e,t){e>>>=0,t||T(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},t.prototype.readInt16BE=function(e,t){e>>>=0,t||T(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},t.prototype.readInt32LE=function(e,t){return e>>>=0,t||T(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},t.prototype.readInt32BE=function(e,t){return e>>>=0,t||T(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},t.prototype.readFloatLE=function(e,t){return e>>>=0,t||T(e,4,this.length),o.read(this,e,!0,23,4)},t.prototype.readFloatBE=function(e,t){return e>>>=0,t||T(e,4,this.length),o.read(this,e,!1,23,4)},t.prototype.readDoubleLE=function(e,t){return e>>>=0,t||T(e,8,this.length),o.read(this,e,!0,52,8)},t.prototype.readDoubleBE=function(e,t){return e>>>=0,t||T(e,8,this.length),o.read(this,e,!1,52,8)},t.prototype.writeUIntLE=function(e,t,r,n){(e=+e,t>>>=0,r>>>=0,n)||C(this,e,t,r,Math.pow(2,8*r)-1,0);var o=1,i=0;for(this[t]=255&e;++i>>=0,r>>>=0,n)||C(this,e,t,r,Math.pow(2,8*r)-1,0);var o=r-1,i=1;for(this[t+o]=255&e;--o>=0&&(i*=256);)this[t+o]=e/i&255;return t+r},t.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,1,255,0),this[t]=255&e,t+1},t.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},t.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},t.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},t.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},t.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var o=Math.pow(2,8*r-1);C(this,e,t,r,o-1,-o)}var i=0,a=1,s=0;for(this[t]=255&e;++i>0)-s&255;return t+r},t.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t>>>=0,!n){var o=Math.pow(2,8*r-1);C(this,e,t,r,o-1,-o)}var i=r-1,a=1,s=0;for(this[t+i]=255&e;--i>=0&&(a*=256);)e<0&&0===s&&0!==this[t+i+1]&&(s=1),this[t+i]=(e/a>>0)-s&255;return t+r},t.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},t.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},t.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},t.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},t.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},t.prototype.writeFloatLE=function(e,t,r){return A(this,e,t,!0,r)},t.prototype.writeFloatBE=function(e,t,r){return A(this,e,t,!1,r)},t.prototype.writeDoubleLE=function(e,t,r){return M(this,e,t,!0,r)},t.prototype.writeDoubleBE=function(e,t,r){return M(this,e,t,!1,r)},t.prototype.copy=function(e,r,n,o){if(!t.isBuffer(e))throw new TypeError(\"argument should be a Buffer\");if(n||(n=0),o||0===o||(o=this.length),r>=e.length&&(r=e.length),r||(r=0),o>0&&o=this.length)throw new RangeError(\"Index out of range\");if(o<0)throw new RangeError(\"sourceEnd out of bounds\");o>this.length&&(o=this.length),e.length-r=0;--a)e[a+r]=this[a+n];else Uint8Array.prototype.set.call(e,this.subarray(n,o),r);return i},t.prototype.fill=function(e,r,n,o){if(\"string\"==typeof e){if(\"string\"==typeof r?(o=r,r=0,n=this.length):\"string\"==typeof n&&(o=n,n=this.length),void 0!==o&&\"string\"!=typeof o)throw new TypeError(\"encoding must be a string\");if(\"string\"==typeof o&&!t.isEncoding(o))throw new TypeError(\"Unknown encoding: \"+o);if(1===e.length){var i=e.charCodeAt(0);(\"utf8\"===o&&i<128||\"latin1\"===o)&&(e=i)}}else\"number\"==typeof e?e&=255:\"boolean\"==typeof e&&(e=Number(e));if(r<0||this.length>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),\"number\"==typeof e)for(a=r;a55295&&r<57344){if(!o){if(r>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(a+1===n){(t-=3)>-1&&i.push(239,191,189);continue}o=r;continue}if(r<56320){(t-=3)>-1&&i.push(239,191,189),o=r;continue}r=65536+(o-55296<<10|r-56320)}else o&&(t-=3)>-1&&i.push(239,191,189);if(o=null,r<128){if((t-=1)<0)break;i.push(r)}else if(r<2048){if((t-=2)<0)break;i.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;i.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error(\"Invalid code point\");if((t-=4)<0)break;i.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return i}function B(e){return n.toByteArray(function(e){if((e=(e=e.split(\"=\")[0]).trim().replace(I,\"\")).length<2)return\"\";for(;e.length%4!=0;)e+=\"=\";return e}(e))}function F(e,t,r,n){for(var o=0;o=t.length||o>=e.length);++o)t[o+r]=e[o];return o}function L(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function z(e){return e!=e}}).call(this,e(\"buffer\").Buffer)},{\"base64-js\":155,buffer:188,ieee754:339}],189:[function(e,t,r){var n=e(\"safe-buffer\").Buffer,o=e(\"stream\").Transform,i=e(\"string_decoder\").StringDecoder;function a(e){o.call(this),this.hashMode=\"string\"==typeof e,this.hashMode?this[e]=this._finalOrDigest:this.final=this._finalOrDigest,this._final&&(this.__final=this._final,this._final=null),this._decoder=null,this._encoding=null}e(\"inherits\")(a,o),a.prototype.update=function(e,t,r){\"string\"==typeof e&&(e=n.from(e,t));var o=this._update(e);return this.hashMode?this:(r&&(o=this._toString(o,r)),o)},a.prototype.setAutoPadding=function(){},a.prototype.getAuthTag=function(){throw new Error(\"trying to get auth tag in unsupported state\")},a.prototype.setAuthTag=function(){throw new Error(\"trying to set auth tag in unsupported state\")},a.prototype.setAAD=function(){throw new Error(\"trying to set aad in unsupported state\")},a.prototype._transform=function(e,t,r){var n;try{this.hashMode?this._update(e):this.push(this._update(e))}catch(e){n=e}finally{r(n)}},a.prototype._flush=function(e){var t;try{this.push(this.__final())}catch(e){t=e}e(t)},a.prototype._finalOrDigest=function(e){var t=this.__final()||n.alloc(0);return e&&(t=this._toString(t,e,!0)),t},a.prototype._toString=function(e,t,r){if(this._decoder||(this._decoder=new i(t),this._encoding=t),this._encoding!==t)throw new Error(\"can't switch encodings\");var n=this._decoder.write(e);return r&&(n+=this._decoder.end()),n},t.exports=a},{inherits:341,\"safe-buffer\":445,stream:456,string_decoder:470}],190:[function(e,t,r){t.exports=function(e){if(\"function\"!=typeof e)throw TypeError(String(e)+\" is not a function\");return e}},{}],191:[function(e,t,r){t.exports=function(e,t,r){if(!(e instanceof t))throw TypeError(\"Incorrect \"+(r?r+\" \":\"\")+\"invocation\");return e}},{}],192:[function(e,t,r){var n=e(\"../internals/is-object\");t.exports=function(e){if(!n(e))throw TypeError(String(e)+\" is not an object\");return e}},{\"../internals/is-object\":220}],193:[function(e,t,r){var n=e(\"../internals/to-indexed-object\"),o=e(\"../internals/to-length\"),i=e(\"../internals/to-absolute-index\"),a=function(e){return function(t,r,a){var s,u=n(t),c=o(u.length),f=i(a,c);if(e&&r!=r){for(;c>f;)if((s=u[f++])!=s)return!0}else for(;c>f;f++)if((e||f in u)&&u[f]===r)return e||f||0;return!e&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},{\"../internals/to-absolute-index\":251,\"../internals/to-indexed-object\":252,\"../internals/to-length\":254}],194:[function(e,t,r){var n=e(\"../internals/a-function\");t.exports=function(e,t,r){if(n(e),void 0===t)return e;switch(r){case 0:return function(){return e.call(t)};case 1:return function(r){return e.call(t,r)};case 2:return function(r,n){return e.call(t,r,n)};case 3:return function(r,n,o){return e.call(t,r,n,o)}}return function(){return e.apply(t,arguments)}}},{\"../internals/a-function\":190}],195:[function(e,t,r){var n=e(\"../internals/an-object\");t.exports=function(e,t,r,o){try{return o?t(n(r)[0],r[1]):t(r)}catch(t){var i=e.return;throw void 0!==i&&n(i.call(e)),t}}},{\"../internals/an-object\":192}],196:[function(e,t,r){var n=e(\"../internals/well-known-symbol\")(\"iterator\"),o=!1;try{var i=0,a={next:function(){return{done:!!i++}},return:function(){o=!0}};a[n]=function(){return this},Array.from(a,(function(){throw 2}))}catch(e){}t.exports=function(e,t){if(!t&&!o)return!1;var r=!1;try{var i={};i[n]=function(){return{next:function(){return{done:r=!0}}}},e(i)}catch(e){}return r}},{\"../internals/well-known-symbol\":259}],197:[function(e,t,r){var n={}.toString;t.exports=function(e){return n.call(e).slice(8,-1)}},{}],198:[function(e,t,r){var n=e(\"../internals/classof-raw\"),o=e(\"../internals/well-known-symbol\")(\"toStringTag\"),i=\"Arguments\"==n(function(){return arguments}());t.exports=function(e){var t,r,a;return void 0===e?\"Undefined\":null===e?\"Null\":\"string\"==typeof(r=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),o))?r:i?n(t):\"Object\"==(a=n(t))&&\"function\"==typeof t.callee?\"Arguments\":a}},{\"../internals/classof-raw\":197,\"../internals/well-known-symbol\":259}],199:[function(e,t,r){var n=e(\"../internals/has\"),o=e(\"../internals/own-keys\"),i=e(\"../internals/object-get-own-property-descriptor\"),a=e(\"../internals/object-define-property\");t.exports=function(e,t){for(var r=o(t),s=a.f,u=i.f,c=0;cp;p++)if((m=f?v(n(b=e[p])[0],b[1]):v(e[p]))&&m instanceof c)return m;return new c(!1)}h=d.call(e)}for(;!(b=h.next()).done;)if((m=u(h,v,b.value,f))&&m instanceof c)return m;return new c(!1)}).stop=function(e){return new c(!0,e)}},{\"../internals/an-object\":192,\"../internals/bind-context\":194,\"../internals/call-with-safe-iteration-closing\":195,\"../internals/get-iterator-method\":208,\"../internals/is-array-iterator-method\":218,\"../internals/to-length\":254}],223:[function(e,t,r){arguments[4][211][0].apply(r,arguments)},{dup:211}],224:[function(e,t,r){var n,o,i,a,s,u,c,f,l=e(\"../internals/global\"),h=e(\"../internals/object-get-own-property-descriptor\").f,d=e(\"../internals/classof-raw\"),p=e(\"../internals/task\").set,y=e(\"../internals/user-agent\"),m=l.MutationObserver||l.WebKitMutationObserver,b=l.process,v=l.Promise,g=\"process\"==d(b),w=h(l,\"queueMicrotask\"),_=w&&w.value;_||(n=function(){var e,t;for(g&&(e=b.domain)&&e.exit();o;){t=o.fn,o=o.next;try{t()}catch(e){throw o?a():i=void 0,e}}i=void 0,e&&e.enter()},g?a=function(){b.nextTick(n)}:m&&!/(iphone|ipod|ipad).*applewebkit/i.test(y)?(s=!0,u=document.createTextNode(\"\"),new m(n).observe(u,{characterData:!0}),a=function(){u.data=s=!s}):v&&v.resolve?(c=v.resolve(void 0),f=c.then,a=function(){f.call(c,n)}):a=function(){p.call(l,n)}),t.exports=_||function(e){var t={fn:e,next:void 0};i&&(i.next=t),o||(o=t,a()),i=t}},{\"../internals/classof-raw\":197,\"../internals/global\":209,\"../internals/object-get-own-property-descriptor\":231,\"../internals/task\":250,\"../internals/user-agent\":258}],225:[function(e,t,r){var n=e(\"../internals/global\");t.exports=n.Promise},{\"../internals/global\":209}],226:[function(e,t,r){var n=e(\"../internals/fails\");t.exports=!!Object.getOwnPropertySymbols&&!n((function(){return!String(Symbol())}))},{\"../internals/fails\":205}],227:[function(e,t,r){var n=e(\"../internals/global\"),o=e(\"../internals/function-to-string\"),i=n.WeakMap;t.exports=\"function\"==typeof i&&/native code/.test(o.call(i))},{\"../internals/function-to-string\":206,\"../internals/global\":209}],228:[function(e,t,r){var n=e(\"../internals/a-function\"),o=function(e){var t,r;this.promise=new e((function(e,n){if(void 0!==t||void 0!==r)throw TypeError(\"Bad Promise constructor\");t=e,r=n})),this.resolve=n(t),this.reject=n(r)};t.exports.f=function(e){return new o(e)}},{\"../internals/a-function\":190}],229:[function(e,t,r){var n=e(\"../internals/descriptors\"),o=e(\"../internals/fails\"),i=e(\"../internals/object-keys\"),a=e(\"../internals/object-get-own-property-symbols\"),s=e(\"../internals/object-property-is-enumerable\"),u=e(\"../internals/to-object\"),c=e(\"../internals/indexed-object\"),f=Object.assign;t.exports=!f||o((function(){var e={},t={},r=Symbol();return e[r]=7,\"abcdefghijklmnopqrst\".split(\"\").forEach((function(e){t[e]=e})),7!=f({},e)[r]||\"abcdefghijklmnopqrst\"!=i(f({},t)).join(\"\")}))?function(e,t){for(var r=u(e),o=arguments.length,f=1,l=a.f,h=s.f;o>f;)for(var d,p=c(arguments[f++]),y=l?i(p).concat(l(p)):i(p),m=y.length,b=0;m>b;)d=y[b++],n&&!h.call(p,d)||(r[d]=p[d]);return r}:f},{\"../internals/descriptors\":201,\"../internals/fails\":205,\"../internals/indexed-object\":216,\"../internals/object-get-own-property-symbols\":233,\"../internals/object-keys\":235,\"../internals/object-property-is-enumerable\":236,\"../internals/to-object\":255}],230:[function(e,t,r){var n=e(\"../internals/descriptors\"),o=e(\"../internals/ie8-dom-define\"),i=e(\"../internals/an-object\"),a=e(\"../internals/to-primitive\"),s=Object.defineProperty;r.f=n?s:function(e,t,r){if(i(e),t=a(t,!0),i(r),o)try{return s(e,t,r)}catch(e){}if(\"get\"in r||\"set\"in r)throw TypeError(\"Accessors not supported\");return\"value\"in r&&(e[t]=r.value),e}},{\"../internals/an-object\":192,\"../internals/descriptors\":201,\"../internals/ie8-dom-define\":215,\"../internals/to-primitive\":256}],231:[function(e,t,r){var n=e(\"../internals/descriptors\"),o=e(\"../internals/object-property-is-enumerable\"),i=e(\"../internals/create-property-descriptor\"),a=e(\"../internals/to-indexed-object\"),s=e(\"../internals/to-primitive\"),u=e(\"../internals/has\"),c=e(\"../internals/ie8-dom-define\"),f=Object.getOwnPropertyDescriptor;r.f=n?f:function(e,t){if(e=a(e),t=s(t,!0),c)try{return f(e,t)}catch(e){}if(u(e,t))return i(!o.f.call(e,t),e[t])}},{\"../internals/create-property-descriptor\":200,\"../internals/descriptors\":201,\"../internals/has\":210,\"../internals/ie8-dom-define\":215,\"../internals/object-property-is-enumerable\":236,\"../internals/to-indexed-object\":252,\"../internals/to-primitive\":256}],232:[function(e,t,r){var n=e(\"../internals/object-keys-internal\"),o=e(\"../internals/enum-bug-keys\").concat(\"length\",\"prototype\");r.f=Object.getOwnPropertyNames||function(e){return n(e,o)}},{\"../internals/enum-bug-keys\":203,\"../internals/object-keys-internal\":234}],233:[function(e,t,r){r.f=Object.getOwnPropertySymbols},{}],234:[function(e,t,r){var n=e(\"../internals/has\"),o=e(\"../internals/to-indexed-object\"),i=e(\"../internals/array-includes\").indexOf,a=e(\"../internals/hidden-keys\");t.exports=function(e,t){var r,s=o(e),u=0,c=[];for(r in s)!n(a,r)&&n(s,r)&&c.push(r);for(;t.length>u;)n(s,r=t[u++])&&(~i(c,r)||c.push(r));return c}},{\"../internals/array-includes\":193,\"../internals/has\":210,\"../internals/hidden-keys\":211,\"../internals/to-indexed-object\":252}],235:[function(e,t,r){var n=e(\"../internals/object-keys-internal\"),o=e(\"../internals/enum-bug-keys\");t.exports=Object.keys||function(e){return n(e,o)}},{\"../internals/enum-bug-keys\":203,\"../internals/object-keys-internal\":234}],236:[function(e,t,r){var n={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,i=o&&!n.call({1:2},1);r.f=i?function(e){var t=o(this,e);return!!t&&t.enumerable}:n},{}],237:[function(e,t,r){var n=e(\"../internals/get-built-in\"),o=e(\"../internals/object-get-own-property-names\"),i=e(\"../internals/object-get-own-property-symbols\"),a=e(\"../internals/an-object\");t.exports=n(\"Reflect\",\"ownKeys\")||function(e){var t=o.f(a(e)),r=i.f;return r?t.concat(r(e)):t}},{\"../internals/an-object\":192,\"../internals/get-built-in\":207,\"../internals/object-get-own-property-names\":232,\"../internals/object-get-own-property-symbols\":233}],238:[function(e,t,r){t.exports=e(\"../internals/global\")},{\"../internals/global\":209}],239:[function(e,t,r){t.exports=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}}},{}],240:[function(e,t,r){var n=e(\"../internals/an-object\"),o=e(\"../internals/is-object\"),i=e(\"../internals/new-promise-capability\");t.exports=function(e,t){if(n(e),o(t)&&t.constructor===e)return t;var r=i.f(e);return(0,r.resolve)(t),r.promise}},{\"../internals/an-object\":192,\"../internals/is-object\":220,\"../internals/new-promise-capability\":228}],241:[function(e,t,r){var n=e(\"../internals/redefine\");t.exports=function(e,t,r){for(var o in t)n(e,o,t[o],r);return e}},{\"../internals/redefine\":242}],242:[function(e,t,r){var n=e(\"../internals/global\"),o=e(\"../internals/shared\"),i=e(\"../internals/hide\"),a=e(\"../internals/has\"),s=e(\"../internals/set-global\"),u=e(\"../internals/function-to-string\"),c=e(\"../internals/internal-state\"),f=c.get,l=c.enforce,h=String(u).split(\"toString\");o(\"inspectSource\",(function(e){return u.call(e)})),(t.exports=function(e,t,r,o){var u=!!o&&!!o.unsafe,c=!!o&&!!o.enumerable,f=!!o&&!!o.noTargetGet;\"function\"==typeof r&&(\"string\"!=typeof t||a(r,\"name\")||i(r,\"name\",t),l(r).source=h.join(\"string\"==typeof t?t:\"\")),e!==n?(u?!f&&e[t]&&(c=!0):delete e[t],c?e[t]=r:i(e,t,r)):c?e[t]=r:s(t,r)})(Function.prototype,\"toString\",(function(){return\"function\"==typeof this&&f(this).source||u.call(this)}))},{\"../internals/function-to-string\":206,\"../internals/global\":209,\"../internals/has\":210,\"../internals/hide\":212,\"../internals/internal-state\":217,\"../internals/set-global\":244,\"../internals/shared\":248}],243:[function(e,t,r){t.exports=function(e){if(null==e)throw TypeError(\"Can't call method on \"+e);return e}},{}],244:[function(e,t,r){var n=e(\"../internals/global\"),o=e(\"../internals/hide\");t.exports=function(e,t){try{o(n,e,t)}catch(r){n[e]=t}return t}},{\"../internals/global\":209,\"../internals/hide\":212}],245:[function(e,t,r){var n=e(\"../internals/get-built-in\"),o=e(\"../internals/object-define-property\"),i=e(\"../internals/well-known-symbol\"),a=e(\"../internals/descriptors\"),s=i(\"species\");t.exports=function(e){var t=n(e),r=o.f;a&&t&&!t[s]&&r(t,s,{configurable:!0,get:function(){return this}})}},{\"../internals/descriptors\":201,\"../internals/get-built-in\":207,\"../internals/object-define-property\":230,\"../internals/well-known-symbol\":259}],246:[function(e,t,r){var n=e(\"../internals/object-define-property\").f,o=e(\"../internals/has\"),i=e(\"../internals/well-known-symbol\")(\"toStringTag\");t.exports=function(e,t,r){e&&!o(e=r?e:e.prototype,i)&&n(e,i,{configurable:!0,value:t})}},{\"../internals/has\":210,\"../internals/object-define-property\":230,\"../internals/well-known-symbol\":259}],247:[function(e,t,r){var n=e(\"../internals/shared\"),o=e(\"../internals/uid\"),i=n(\"keys\");t.exports=function(e){return i[e]||(i[e]=o(e))}},{\"../internals/shared\":248,\"../internals/uid\":257}],248:[function(e,t,r){var n=e(\"../internals/global\"),o=e(\"../internals/set-global\"),i=e(\"../internals/is-pure\"),a=n[\"__core-js_shared__\"]||o(\"__core-js_shared__\",{});(t.exports=function(e,t){return a[e]||(a[e]=void 0!==t?t:{})})(\"versions\",[]).push({version:\"3.2.1\",mode:i?\"pure\":\"global\",copyright:\"\\xa9 2019 Denis Pushkarev (zloirock.ru)\"})},{\"../internals/global\":209,\"../internals/is-pure\":221,\"../internals/set-global\":244}],249:[function(e,t,r){var n=e(\"../internals/an-object\"),o=e(\"../internals/a-function\"),i=e(\"../internals/well-known-symbol\")(\"species\");t.exports=function(e,t){var r,a=n(e).constructor;return void 0===a||null==(r=n(a)[i])?t:o(r)}},{\"../internals/a-function\":190,\"../internals/an-object\":192,\"../internals/well-known-symbol\":259}],250:[function(e,t,r){var n,o,i,a=e(\"../internals/global\"),s=e(\"../internals/fails\"),u=e(\"../internals/classof-raw\"),c=e(\"../internals/bind-context\"),f=e(\"../internals/html\"),l=e(\"../internals/document-create-element\"),h=a.location,d=a.setImmediate,p=a.clearImmediate,y=a.process,m=a.MessageChannel,b=a.Dispatch,v=0,g={},w=function(e){if(g.hasOwnProperty(e)){var t=g[e];delete g[e],t()}},_=function(e){return function(){w(e)}},k=function(e){w(e.data)},x=function(e){a.postMessage(e+\"\",h.protocol+\"//\"+h.host)};d&&p||(d=function(e){for(var t=[],r=1;arguments.length>r;)t.push(arguments[r++]);return g[++v]=function(){(\"function\"==typeof e?e:Function(e)).apply(void 0,t)},n(v),v},p=function(e){delete g[e]},\"process\"==u(y)?n=function(e){y.nextTick(_(e))}:b&&b.now?n=function(e){b.now(_(e))}:m?(i=(o=new m).port2,o.port1.onmessage=k,n=c(i.postMessage,i,1)):!a.addEventListener||\"function\"!=typeof postMessage||a.importScripts||s(x)?n=\"onreadystatechange\"in l(\"script\")?function(e){f.appendChild(l(\"script\")).onreadystatechange=function(){f.removeChild(this),w(e)}}:function(e){setTimeout(_(e),0)}:(n=x,a.addEventListener(\"message\",k,!1))),t.exports={set:d,clear:p}},{\"../internals/bind-context\":194,\"../internals/classof-raw\":197,\"../internals/document-create-element\":202,\"../internals/fails\":205,\"../internals/global\":209,\"../internals/html\":214}],251:[function(e,t,r){var n=e(\"../internals/to-integer\"),o=Math.max,i=Math.min;t.exports=function(e,t){var r=n(e);return r<0?o(r+t,0):i(r,t)}},{\"../internals/to-integer\":253}],252:[function(e,t,r){var n=e(\"../internals/indexed-object\"),o=e(\"../internals/require-object-coercible\");t.exports=function(e){return n(o(e))}},{\"../internals/indexed-object\":216,\"../internals/require-object-coercible\":243}],253:[function(e,t,r){var n=Math.ceil,o=Math.floor;t.exports=function(e){return isNaN(e=+e)?0:(e>0?o:n)(e)}},{}],254:[function(e,t,r){var n=e(\"../internals/to-integer\"),o=Math.min;t.exports=function(e){return e>0?o(n(e),9007199254740991):0}},{\"../internals/to-integer\":253}],255:[function(e,t,r){var n=e(\"../internals/require-object-coercible\");t.exports=function(e){return Object(n(e))}},{\"../internals/require-object-coercible\":243}],256:[function(e,t,r){var n=e(\"../internals/is-object\");t.exports=function(e,t){if(!n(e))return e;var r,o;if(t&&\"function\"==typeof(r=e.toString)&&!n(o=r.call(e)))return o;if(\"function\"==typeof(r=e.valueOf)&&!n(o=r.call(e)))return o;if(!t&&\"function\"==typeof(r=e.toString)&&!n(o=r.call(e)))return o;throw TypeError(\"Can't convert object to primitive value\")}},{\"../internals/is-object\":220}],257:[function(e,t,r){var n=0,o=Math.random();t.exports=function(e){return\"Symbol(\"+String(void 0===e?\"\":e)+\")_\"+(++n+o).toString(36)}},{}],258:[function(e,t,r){var n=e(\"../internals/get-built-in\");t.exports=n(\"navigator\",\"userAgent\")||\"\"},{\"../internals/get-built-in\":207}],259:[function(e,t,r){var n=e(\"../internals/global\"),o=e(\"../internals/shared\"),i=e(\"../internals/uid\"),a=e(\"../internals/native-symbol\"),s=n.Symbol,u=o(\"wks\");t.exports=function(e){return u[e]||(u[e]=a&&s[e]||(a?s:i)(\"Symbol.\"+e))}},{\"../internals/global\":209,\"../internals/native-symbol\":226,\"../internals/shared\":248,\"../internals/uid\":257}],260:[function(e,t,r){var n=e(\"../internals/export\"),o=e(\"../internals/object-assign\");n({target:\"Object\",stat:!0,forced:Object.assign!==o},{assign:o})},{\"../internals/export\":204,\"../internals/object-assign\":229}],261:[function(e,t,r){var n=e(\"../internals/export\"),o=e(\"../internals/to-object\"),i=e(\"../internals/object-keys\");n({target:\"Object\",stat:!0,forced:e(\"../internals/fails\")((function(){i(1)}))},{keys:function(e){return i(o(e))}})},{\"../internals/export\":204,\"../internals/fails\":205,\"../internals/object-keys\":235,\"../internals/to-object\":255}],262:[function(e,t,r){var n,o,i,a,s=e(\"../internals/export\"),u=e(\"../internals/is-pure\"),c=e(\"../internals/global\"),f=e(\"../internals/path\"),l=e(\"../internals/native-promise-constructor\"),h=e(\"../internals/redefine\"),d=e(\"../internals/redefine-all\"),p=e(\"../internals/set-to-string-tag\"),y=e(\"../internals/set-species\"),m=e(\"../internals/is-object\"),b=e(\"../internals/a-function\"),v=e(\"../internals/an-instance\"),g=e(\"../internals/classof-raw\"),w=e(\"../internals/iterate\"),_=e(\"../internals/check-correctness-of-iteration\"),k=e(\"../internals/species-constructor\"),x=e(\"../internals/task\").set,S=e(\"../internals/microtask\"),O=e(\"../internals/promise-resolve\"),E=e(\"../internals/host-report-errors\"),R=e(\"../internals/new-promise-capability\"),j=e(\"../internals/perform\"),T=e(\"../internals/user-agent\"),C=e(\"../internals/internal-state\"),P=e(\"../internals/is-forced\"),A=e(\"../internals/well-known-symbol\")(\"species\"),M=\"Promise\",I=C.get,N=C.set,D=C.getterFor(M),B=l,F=c.TypeError,L=c.document,z=c.process,U=c.fetch,H=z&&z.versions,V=H&&H.v8||\"\",W=R.f,q=W,$=\"process\"==g(z),X=!!(L&&L.createEvent&&c.dispatchEvent),K=P(M,(function(){var e=B.resolve(1),t=function(){},r=(e.constructor={})[A]=function(e){e(t,t)};return!(($||\"function\"==typeof PromiseRejectionEvent)&&(!u||e.finally)&&e.then(t)instanceof r&&0!==V.indexOf(\"6.6\")&&-1===T.indexOf(\"Chrome/66\"))})),Y=K||!_((function(e){B.all(e).catch((function(){}))})),Z=function(e){var t;return!(!m(e)||\"function\"!=typeof(t=e.then))&&t},G=function(e,t,r){if(!t.notified){t.notified=!0;var n=t.reactions;S((function(){for(var o=t.value,i=1==t.state,a=0;n.length>a;){var s,u,c,f=n[a++],l=i?f.ok:f.fail,h=f.resolve,d=f.reject,p=f.domain;try{l?(i||(2===t.rejection&&te(e,t),t.rejection=1),!0===l?s=o:(p&&p.enter(),s=l(o),p&&(p.exit(),c=!0)),s===f.promise?d(F(\"Promise-chain cycle\")):(u=Z(s))?u.call(s,h,d):h(s)):d(o)}catch(e){p&&!c&&p.exit(),d(e)}}t.reactions=[],t.notified=!1,r&&!t.rejection&&Q(e,t)}))}},J=function(e,t,r){var n,o;X?((n=L.createEvent(\"Event\")).promise=t,n.reason=r,n.initEvent(e,!1,!0),c.dispatchEvent(n)):n={promise:t,reason:r},(o=c[\"on\"+e])?o(n):\"unhandledrejection\"===e&&E(\"Unhandled promise rejection\",r)},Q=function(e,t){x.call(c,(function(){var r,n=t.value;if(ee(t)&&(r=j((function(){$?z.emit(\"unhandledRejection\",n,e):J(\"unhandledrejection\",e,n)})),t.rejection=$||ee(t)?2:1,r.error))throw r.value}))},ee=function(e){return 1!==e.rejection&&!e.parent},te=function(e,t){x.call(c,(function(){$?z.emit(\"rejectionHandled\",e):J(\"rejectionhandled\",e,t.value)}))},re=function(e,t,r,n){return function(o){e(t,r,o,n)}},ne=function(e,t,r,n){t.done||(t.done=!0,n&&(t=n),t.value=r,t.state=2,G(e,t,!0))},oe=function e(t,r,n,o){if(!r.done){r.done=!0,o&&(r=o);try{if(t===n)throw F(\"Promise can't be resolved itself\");var i=Z(n);i?S((function(){var o={done:!1};try{i.call(n,re(e,t,o,r),re(ne,t,o,r))}catch(e){ne(t,o,e,r)}})):(r.value=n,r.state=1,G(t,r,!1))}catch(e){ne(t,{done:!1},e,r)}}};K&&(B=function(e){v(this,B,M),b(e),n.call(this);var t=I(this);try{e(re(oe,this,t),re(ne,this,t))}catch(e){ne(this,t,e)}},(n=function(e){N(this,{type:M,done:!1,notified:!1,parent:!1,reactions:[],rejection:!1,state:0,value:void 0})}).prototype=d(B.prototype,{then:function(e,t){var r=D(this),n=W(k(this,B));return n.ok=\"function\"!=typeof e||e,n.fail=\"function\"==typeof t&&t,n.domain=$?z.domain:void 0,r.parent=!0,r.reactions.push(n),0!=r.state&&G(this,r,!1),n.promise},catch:function(e){return this.then(void 0,e)}}),o=function(){var e=new n,t=I(e);this.promise=e,this.resolve=re(oe,e,t),this.reject=re(ne,e,t)},R.f=W=function(e){return e===B||e===i?new o(e):q(e)},u||\"function\"!=typeof l||(a=l.prototype.then,h(l.prototype,\"then\",(function(e,t){var r=this;return new B((function(e,t){a.call(r,e,t)})).then(e,t)})),\"function\"==typeof U&&s({global:!0,enumerable:!0,forced:!0},{fetch:function(e){return O(B,U.apply(c,arguments))}}))),s({global:!0,wrap:!0,forced:K},{Promise:B}),p(B,M,!1,!0),y(M),i=f[M],s({target:M,stat:!0,forced:K},{reject:function(e){var t=W(this);return t.reject.call(void 0,e),t.promise}}),s({target:M,stat:!0,forced:u||K},{resolve:function(e){return O(u&&this===i?B:this,e)}}),s({target:M,stat:!0,forced:Y},{all:function(e){var t=this,r=W(t),n=r.resolve,o=r.reject,i=j((function(){var r=b(t.resolve),i=[],a=0,s=1;w(e,(function(e){var u=a++,c=!1;i.push(void 0),s++,r.call(t,e).then((function(e){c||(c=!0,i[u]=e,--s||n(i))}),o)})),--s||n(i)}));return i.error&&o(i.value),r.promise},race:function(e){var t=this,r=W(t),n=r.reject,o=j((function(){var o=b(t.resolve);w(e,(function(e){o.call(t,e).then(r.resolve,n)}))}));return o.error&&n(o.value),r.promise}})},{\"../internals/a-function\":190,\"../internals/an-instance\":191,\"../internals/check-correctness-of-iteration\":196,\"../internals/classof-raw\":197,\"../internals/export\":204,\"../internals/global\":209,\"../internals/host-report-errors\":213,\"../internals/internal-state\":217,\"../internals/is-forced\":219,\"../internals/is-object\":220,\"../internals/is-pure\":221,\"../internals/iterate\":222,\"../internals/microtask\":224,\"../internals/native-promise-constructor\":225,\"../internals/new-promise-capability\":228,\"../internals/path\":238,\"../internals/perform\":239,\"../internals/promise-resolve\":240,\"../internals/redefine\":242,\"../internals/redefine-all\":241,\"../internals/set-species\":245,\"../internals/set-to-string-tag\":246,\"../internals/species-constructor\":249,\"../internals/task\":250,\"../internals/user-agent\":258,\"../internals/well-known-symbol\":259}],263:[function(e,t,r){(function(e){function t(e){return Object.prototype.toString.call(e)}r.isArray=function(e){return Array.isArray?Array.isArray(e):\"[object Array]\"===t(e)},r.isBoolean=function(e){return\"boolean\"==typeof e},r.isNull=function(e){return null===e},r.isNullOrUndefined=function(e){return null==e},r.isNumber=function(e){return\"number\"==typeof e},r.isString=function(e){return\"string\"==typeof e},r.isSymbol=function(e){return\"symbol\"===_typeof2(e)},r.isUndefined=function(e){return void 0===e},r.isRegExp=function(e){return\"[object RegExp]\"===t(e)},r.isObject=function(e){return\"object\"===_typeof2(e)&&null!==e},r.isDate=function(e){return\"[object Date]\"===t(e)},r.isError=function(e){return\"[object Error]\"===t(e)||e instanceof Error},r.isFunction=function(e){return\"function\"==typeof e},r.isPrimitive=function(e){return null===e||\"boolean\"==typeof e||\"number\"==typeof e||\"string\"==typeof e||\"symbol\"===_typeof2(e)||void 0===e},r.isBuffer=e.isBuffer}).call(this,{isBuffer:e(\"../../is-buffer/index.js\")})},{\"../../is-buffer/index.js\":342}],264:[function(e,t,r){(function(r){var n=e(\"elliptic\"),o=e(\"bn.js\");t.exports=function(e){return new a(e)};var i={secp256k1:{name:\"secp256k1\",byteLength:32},secp224r1:{name:\"p224\",byteLength:28},prime256v1:{name:\"p256\",byteLength:32},prime192v1:{name:\"p192\",byteLength:24},ed25519:{name:\"ed25519\",byteLength:32},secp384r1:{name:\"p384\",byteLength:48},secp521r1:{name:\"p521\",byteLength:66}};function a(e){this.curveType=i[e],this.curveType||(this.curveType={name:e}),this.curve=new n.ec(this.curveType.name),this.keys=void 0}function s(e,t,n){Array.isArray(e)||(e=e.toArray());var o=new r(e);if(n&&o.lengthr)?t=(\"rmd160\"===e?new u:c(e)).update(t).digest():t.length64?t=e(t):t.length<64&&(t=o.concat([t,a],64));for(var r=this._ipad=o.allocUnsafe(64),n=this._opad=o.allocUnsafe(64),s=0;s<64;s++)r[s]=54^t[s],n[s]=92^t[s];this._hash=[r]}n(s,i),s.prototype._update=function(e){this._hash.push(e)},s.prototype._final=function(){var e=this._alg(o.concat(this._hash));return this._alg(o.concat([this._opad,e]))},t.exports=s},{\"cipher-base\":189,inherits:341,\"safe-buffer\":445}],269:[function(e,t,r){r.randomBytes=r.rng=r.pseudoRandomBytes=r.prng=e(\"randombytes\"),r.createHash=r.Hash=e(\"create-hash\"),r.createHmac=r.Hmac=e(\"create-hmac\");var n=e(\"browserify-sign/algos\"),o=Object.keys(n),i=[\"sha1\",\"sha224\",\"sha256\",\"sha384\",\"sha512\",\"md5\",\"rmd160\"].concat(o);r.getHashes=function(){return i};var a=e(\"pbkdf2\");r.pbkdf2=a.pbkdf2,r.pbkdf2Sync=a.pbkdf2Sync;var s=e(\"browserify-cipher\");r.Cipher=s.Cipher,r.createCipher=s.createCipher,r.Cipheriv=s.Cipheriv,r.createCipheriv=s.createCipheriv,r.Decipher=s.Decipher,r.createDecipher=s.createDecipher,r.Decipheriv=s.Decipheriv,r.createDecipheriv=s.createDecipheriv,r.getCiphers=s.getCiphers,r.listCiphers=s.listCiphers;var u=e(\"diffie-hellman\");r.DiffieHellmanGroup=u.DiffieHellmanGroup,r.createDiffieHellmanGroup=u.createDiffieHellmanGroup,r.getDiffieHellman=u.getDiffieHellman,r.createDiffieHellman=u.createDiffieHellman,r.DiffieHellman=u.DiffieHellman;var c=e(\"browserify-sign\");r.createSign=c.createSign,r.Sign=c.Sign,r.createVerify=c.createVerify,r.Verify=c.Verify,r.createECDH=e(\"create-ecdh\");var f=e(\"public-encrypt\");r.publicEncrypt=f.publicEncrypt,r.privateEncrypt=f.privateEncrypt,r.publicDecrypt=f.publicDecrypt,r.privateDecrypt=f.privateDecrypt;var l=e(\"randomfill\");r.randomFill=l.randomFill,r.randomFillSync=l.randomFillSync,r.createCredentials=function(){throw new Error([\"sorry, createCredentials is not implemented yet\",\"we accept pull requests\",\"https://github.com/crypto-browserify/crypto-browserify\"].join(\"\\n\"))},r.constants={DH_CHECK_P_NOT_SAFE_PRIME:2,DH_CHECK_P_NOT_PRIME:1,DH_UNABLE_TO_CHECK_GENERATOR:4,DH_NOT_SUITABLE_GENERATOR:8,NPN_ENABLED:1,ALPN_ENABLED:1,RSA_PKCS1_PADDING:1,RSA_SSLV23_PADDING:2,RSA_NO_PADDING:3,RSA_PKCS1_OAEP_PADDING:4,RSA_X931_PADDING:5,RSA_PKCS1_PSS_PADDING:6,POINT_CONVERSION_COMPRESSED:2,POINT_CONVERSION_UNCOMPRESSED:4,POINT_CONVERSION_HYBRID:6}},{\"browserify-cipher\":176,\"browserify-sign\":183,\"browserify-sign/algos\":180,\"create-ecdh\":264,\"create-hash\":265,\"create-hmac\":267,\"diffie-hellman\":279,pbkdf2:413,\"public-encrypt\":420,randombytes:426,randomfill:427}],270:[function(e,t,r){!function(e,n){\"object\"==_typeof2(r)&&void 0!==t?t.exports=n():\"function\"==typeof define&&define.amd?define(n):e.dayjs=n()}(this,(function(){var e=\"millisecond\",t=\"second\",r=\"minute\",n=\"hour\",o=\"day\",i=\"week\",a=\"month\",s=\"quarter\",u=\"year\",c=/^(\\d{4})-?(\\d{1,2})-?(\\d{0,2})[^0-9]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?.?(\\d{1,3})?$/,f=/\\[([^\\]]+)]|Y{2,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,l=function(e,t,r){var n=String(e);return!n||n.length>=t?e:\"\"+Array(t+1-n.length).join(r)+e},h={s:l,z:function(e){var t=-e.utcOffset(),r=Math.abs(t),n=Math.floor(r/60),o=r%60;return(t<=0?\"+\":\"-\")+l(n,2,\"0\")+\":\"+l(o,2,\"0\")},m:function(e,t){var r=12*(t.year()-e.year())+(t.month()-e.month()),n=e.clone().add(r,a),o=t-n<0,i=e.clone().add(r+(o?-1:1),a);return Number(-(r+(t-n)/(o?n-i:i-n))||0)},a:function(e){return e<0?Math.ceil(e)||0:Math.floor(e)},p:function(c){return{M:a,y:u,w:i,d:o,D:\"date\",h:n,m:r,s:t,ms:e,Q:s}[c]||String(c||\"\").toLowerCase().replace(/s$/,\"\")},u:function(e){return void 0===e}},d={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\")},p=\"en\",y={};y[p]=d;var m=function(e){return e instanceof w},b=function(e,t,r){var n;if(!e)return p;if(\"string\"==typeof e)y[e]&&(n=e),t&&(y[e]=t,n=e);else{var o=e.name;y[o]=e,n=o}return!r&&n&&(p=n),n||!r&&p},v=function(e,t,r){if(m(e))return e.clone();var n=t?\"string\"==typeof t?{format:t,pl:r}:t:{};return n.date=e,new w(n)},g=h;g.l=b,g.i=m,g.w=function(e,t){return v(e,{locale:t.$L,utc:t.$u,$offset:t.$offset})};var w=function(){function l(e){this.$L=this.$L||b(e.locale,null,!0),this.parse(e)}var h=l.prototype;return h.parse=function(e){this.$d=function(e){var t=e.date,r=e.utc;if(null===t)return new Date(NaN);if(g.u(t))return new Date;if(t instanceof Date)return new Date(t);if(\"string\"==typeof t&&!/Z$/i.test(t)){var n=t.match(c);if(n)return r?new Date(Date.UTC(n[1],n[2]-1,n[3]||1,n[4]||0,n[5]||0,n[6]||0,n[7]||0)):new Date(n[1],n[2]-1,n[3]||1,n[4]||0,n[5]||0,n[6]||0,n[7]||0)}return new Date(t)}(e),this.init()},h.init=function(){var e=this.$d;this.$y=e.getFullYear(),this.$M=e.getMonth(),this.$D=e.getDate(),this.$W=e.getDay(),this.$H=e.getHours(),this.$m=e.getMinutes(),this.$s=e.getSeconds(),this.$ms=e.getMilliseconds()},h.$utils=function(){return g},h.isValid=function(){return!(\"Invalid Date\"===this.$d.toString())},h.isSame=function(e,t){var r=v(e);return this.startOf(t)<=r&&r<=this.endOf(t)},h.isAfter=function(e,t){return v(e)68?1900:2e3)}],YYYY:[/\\d{4}/,i(\"year\")],Z:a,ZZ:a},u=function(e,r,n){try{var o=function(e){for(var r=e.match(t),n=r.length,o=0;o0?a-1:p.getMonth(),v=c||0,g=f||0,w=l||0,_=h||0;return n?new Date(Date.UTC(m,b,y,v,g,w,_)):new Date(m,b,y,v,g,w,_)}catch(e){return new Date(\"\")}};return function(t,r,n){var o=r.prototype,i=o.parse;o.parse=function(t){var r=t.date,o=t.format,a=t.pl,s=t.utc;this.$u=s,o?(e=a?n.Ls[a]:this.$locale(),this.$d=u(r,o,s),this.init(t),a&&(this.$L=a)):i.call(this,t)}}}))},{}],272:[function(e,t,r){var n,o;n=this,o=function(){return function(e,t,r){var n=(new Date).getTimezoneOffset(),o=t.prototype;r.utc=function(e,r){return new t({date:e,utc:!0,format:r})},o.utc=function(){return r(this.toDate(),{locale:this.$L,utc:!0})},o.local=function(){return r(this.toDate(),{locale:this.$L,utc:!1})};var i=o.parse;o.parse=function(e){e.utc&&(this.$u=!0),this.$utils().u(e.$offset)||(this.$offset=e.$offset),i.call(this,e)};var a=o.init;o.init=function(){if(this.$u){var e=this.$d;this.$y=e.getUTCFullYear(),this.$M=e.getUTCMonth(),this.$D=e.getUTCDate(),this.$W=e.getUTCDay(),this.$H=e.getUTCHours(),this.$m=e.getUTCMinutes(),this.$s=e.getUTCSeconds(),this.$ms=e.getUTCMilliseconds()}else a.call(this)};var s=o.utcOffset;o.utcOffset=function(e){var t=this.$utils().u;if(t(e))return this.$u?0:t(this.$offset)?s.call(this):this.$offset;var r,o=Math.abs(e)<=16?60*e:e;return 0!==e?(r=this.local().add(o+n,\"minute\")).$offset=o:r=this.utc(),r};var u=o.format;o.format=function(e){var t=e||(this.$u?\"YYYY-MM-DDTHH:mm:ss[Z]\":\"\");return u.call(this,t)},o.valueOf=function(){var e=this.$utils().u(this.$offset)?0:this.$offset+n;return this.$d.valueOf()-6e4*e},o.isUTC=function(){return!!this.$u},o.toISOString=function(){return this.toDate().toISOString()},o.toString=function(){return this.toDate().toUTCString()}}},\"object\"==_typeof2(r)&&void 0!==t?t.exports=o():\"function\"==typeof define&&define.amd?define(o):n.dayjs_plugin_utc=o()},{}],273:[function(e,t,r){r.utils=e(\"./des/utils\"),r.Cipher=e(\"./des/cipher\"),r.DES=e(\"./des/des\"),r.CBC=e(\"./des/cbc\"),r.EDE=e(\"./des/ede\")},{\"./des/cbc\":274,\"./des/cipher\":275,\"./des/des\":276,\"./des/ede\":277,\"./des/utils\":278}],274:[function(e,t,r){var n=e(\"minimalistic-assert\"),o=e(\"inherits\"),i={};function a(e){n.equal(e.length,8,\"Invalid IV length\"),this.iv=new Array(8);for(var t=0;t0;n--)t+=this._buffer(e,t),r+=this._flushBuffer(o,r);return t+=this._buffer(e,t),o},o.prototype.final=function(e){var t,r;return e&&(t=this.update(e)),r=\"encrypt\"===this.type?this._finalEncrypt():this._finalDecrypt(),t?t.concat(r):r},o.prototype._pad=function(e,t){if(0===t)return!1;for(;t>>1];r=a.r28shl(r,s),o=a.r28shl(o,s),a.pc2(r,o,e.keys,i)}},c.prototype._update=function(e,t,r,n){var o=this._desState,i=a.readUInt32BE(e,t),s=a.readUInt32BE(e,t+4);a.ip(i,s,o.tmp,0),i=o.tmp[0],s=o.tmp[1],\"encrypt\"===this.type?this._encrypt(o,i,s,o.tmp,0):this._decrypt(o,i,s,o.tmp,0),i=o.tmp[0],s=o.tmp[1],a.writeUInt32BE(r,i,n),a.writeUInt32BE(r,s,n+4)},c.prototype._pad=function(e,t){for(var r=e.length-t,n=t;n>>0,i=h}a.rip(s,i,n,o)},c.prototype._decrypt=function(e,t,r,n,o){for(var i=r,s=t,u=e.keys.length-2;u>=0;u-=2){var c=e.keys[u],f=e.keys[u+1];a.expand(i,e.tmp,0),c^=e.tmp[0],f^=e.tmp[1];var l=a.substitute(c,f),h=i;i=(s^a.permute(l))>>>0,s=h}a.rip(i,s,n,o)}},{\"../des\":273,inherits:341,\"minimalistic-assert\":390}],277:[function(e,t,r){var n=e(\"minimalistic-assert\"),o=e(\"inherits\"),i=e(\"../des\"),a=i.Cipher,s=i.DES;function u(e,t){n.equal(t.length,24,\"Invalid key length\");var r=t.slice(0,8),o=t.slice(8,16),i=t.slice(16,24);this.ciphers=\"encrypt\"===e?[s.create({type:\"encrypt\",key:r}),s.create({type:\"decrypt\",key:o}),s.create({type:\"encrypt\",key:i})]:[s.create({type:\"decrypt\",key:i}),s.create({type:\"encrypt\",key:o}),s.create({type:\"decrypt\",key:r})]}function c(e){a.call(this,e);var t=new u(this.type,this.options.key);this._edeState=t}o(c,a),t.exports=c,c.create=function(e){return new c(e)},c.prototype._update=function(e,t,r,n){var o=this._edeState;o.ciphers[0]._update(e,t,r,n),o.ciphers[1]._update(r,n,r,n),o.ciphers[2]._update(r,n,r,n)},c.prototype._pad=s.prototype._pad,c.prototype._unpad=s.prototype._unpad},{\"../des\":273,inherits:341,\"minimalistic-assert\":390}],278:[function(e,t,r){r.readUInt32BE=function(e,t){return(e[0+t]<<24|e[1+t]<<16|e[2+t]<<8|e[3+t])>>>0},r.writeUInt32BE=function(e,t,r){e[0+r]=t>>>24,e[1+r]=t>>>16&255,e[2+r]=t>>>8&255,e[3+r]=255&t},r.ip=function(e,t,r,n){for(var o=0,i=0,a=6;a>=0;a-=2){for(var s=0;s<=24;s+=8)o<<=1,o|=t>>>s+a&1;for(s=0;s<=24;s+=8)o<<=1,o|=e>>>s+a&1}for(a=6;a>=0;a-=2){for(s=1;s<=25;s+=8)i<<=1,i|=t>>>s+a&1;for(s=1;s<=25;s+=8)i<<=1,i|=e>>>s+a&1}r[n+0]=o>>>0,r[n+1]=i>>>0},r.rip=function(e,t,r,n){for(var o=0,i=0,a=0;a<4;a++)for(var s=24;s>=0;s-=8)o<<=1,o|=t>>>s+a&1,o<<=1,o|=e>>>s+a&1;for(a=4;a<8;a++)for(s=24;s>=0;s-=8)i<<=1,i|=t>>>s+a&1,i<<=1,i|=e>>>s+a&1;r[n+0]=o>>>0,r[n+1]=i>>>0},r.pc1=function(e,t,r,n){for(var o=0,i=0,a=7;a>=5;a--){for(var s=0;s<=24;s+=8)o<<=1,o|=t>>s+a&1;for(s=0;s<=24;s+=8)o<<=1,o|=e>>s+a&1}for(s=0;s<=24;s+=8)o<<=1,o|=t>>s+a&1;for(a=1;a<=3;a++){for(s=0;s<=24;s+=8)i<<=1,i|=t>>s+a&1;for(s=0;s<=24;s+=8)i<<=1,i|=e>>s+a&1}for(s=0;s<=24;s+=8)i<<=1,i|=e>>s+a&1;r[n+0]=o>>>0,r[n+1]=i>>>0},r.r28shl=function(e,t){return e<>>28-t};var n=[14,11,17,4,27,23,25,0,13,22,7,18,5,9,16,24,2,20,12,21,1,8,15,26,15,4,25,19,9,1,26,16,5,11,23,8,12,7,17,0,22,3,10,14,6,20,27,24];r.pc2=function(e,t,r,o){for(var i=0,a=0,s=n.length>>>1,u=0;u>>n[u]&1;for(u=s;u>>n[u]&1;r[o+0]=i>>>0,r[o+1]=a>>>0},r.expand=function(e,t,r){var n=0,o=0;n=(1&e)<<5|e>>>27;for(var i=23;i>=15;i-=4)n<<=6,n|=e>>>i&63;for(i=11;i>=3;i-=4)o|=e>>>i&63,o<<=6;o|=(31&e)<<1|e>>>31,t[r+0]=n>>>0,t[r+1]=o>>>0};var o=[14,0,4,15,13,7,1,4,2,14,15,2,11,13,8,1,3,10,10,6,6,12,12,11,5,9,9,5,0,3,7,8,4,15,1,12,14,8,8,2,13,4,6,9,2,1,11,7,15,5,12,11,9,3,7,14,3,10,10,0,5,6,0,13,15,3,1,13,8,4,14,7,6,15,11,2,3,8,4,14,9,12,7,0,2,1,13,10,12,6,0,9,5,11,10,5,0,13,14,8,7,10,11,1,10,3,4,15,13,4,1,2,5,11,8,6,12,7,6,12,9,0,3,5,2,14,15,9,10,13,0,7,9,0,14,9,6,3,3,4,15,6,5,10,1,2,13,8,12,5,7,14,11,12,4,11,2,15,8,1,13,1,6,10,4,13,9,0,8,6,15,9,3,8,0,7,11,4,1,15,2,14,12,3,5,11,10,5,14,2,7,12,7,13,13,8,14,11,3,5,0,6,6,15,9,0,10,3,1,4,2,7,8,2,5,12,11,1,12,10,4,14,15,9,10,3,6,15,9,0,0,6,12,10,11,1,7,13,13,8,15,9,1,4,3,5,14,11,5,12,2,7,8,2,4,14,2,14,12,11,4,2,1,12,7,4,10,7,11,13,6,1,8,5,5,0,3,15,15,10,13,3,0,9,14,8,9,6,4,11,2,8,1,12,11,7,10,1,13,14,7,2,8,13,15,6,9,15,12,0,5,9,6,10,3,4,0,5,14,3,12,10,1,15,10,4,15,2,9,7,2,12,6,9,8,5,0,6,13,1,3,13,4,14,14,0,7,11,5,3,11,8,9,4,14,3,15,2,5,12,2,9,8,5,12,15,3,10,7,11,0,14,4,1,10,7,1,6,13,0,11,8,6,13,4,13,11,0,2,11,14,7,15,4,0,9,8,1,13,10,3,14,12,3,9,5,7,12,5,2,10,15,6,8,1,6,1,6,4,11,11,13,13,8,12,1,3,4,7,10,14,7,10,9,15,5,6,0,8,15,0,14,5,2,9,3,2,12,13,1,2,15,8,13,4,8,6,10,15,3,11,7,1,4,10,12,9,5,3,6,14,11,5,0,0,14,12,9,7,2,7,2,11,1,4,14,1,7,9,4,12,10,14,8,2,13,0,15,6,12,10,9,13,0,15,3,3,5,5,6,8,11];r.substitute=function(e,t){for(var r=0,n=0;n<4;n++){r<<=4,r|=o[64*n+(e>>>18-6*n&63)]}for(n=0;n<4;n++){r<<=4,r|=o[256+64*n+(t>>>18-6*n&63)]}return r>>>0};var i=[16,25,12,11,3,20,4,15,31,17,9,6,27,14,1,22,30,24,8,18,0,5,29,23,13,19,2,26,10,21,28,7];r.permute=function(e){for(var t=0,r=0;r>>i[r]&1;return t>>>0},r.padSplit=function(e,t,r){for(var n=e.toString(2);n.lengthe;)r.ishrn(1);if(r.isEven()&&r.iadd(s),r.testn(1)||r.iadd(u),t.cmp(u)){if(!t.cmp(c))for(;r.mod(f).cmp(l);)r.iadd(d)}else for(;r.mod(i).cmp(h);)r.iadd(d);if(m(p=r.shrn(1))&&m(r)&&b(p)&&b(r)&&a.test(p)&&a.test(r))return r}}},{\"bn.js\":156,\"miller-rabin\":389,randombytes:426}],282:[function(e,t,r){t.exports={modp1:{gen:\"02\",prime:\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a63a3620ffffffffffffffff\"},modp2:{gen:\"02\",prime:\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece65381ffffffffffffffff\"},modp5:{gen:\"02\",prime:\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca237327ffffffffffffffff\"},modp14:{gen:\"02\",prime:\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aacaa68ffffffffffffffff\"},modp15:{gen:\"02\",prime:\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a93ad2caffffffffffffffff\"},modp16:{gen:\"02\",prime:\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c934063199ffffffffffffffff\"},modp17:{gen:\"02\",prime:\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dcc4024ffffffffffffffff\"},modp18:{gen:\"02\",prime:\"ffffffffffffffffc90fdaa22168c234c4c6628b80dc1cd129024e088a67cc74020bbea63b139b22514a08798e3404ddef9519b3cd3a431b302b0a6df25f14374fe1356d6d51c245e485b576625e7ec6f44c42e9a637ed6b0bff5cb6f406b7edee386bfb5a899fa5ae9f24117c4b1fe649286651ece45b3dc2007cb8a163bf0598da48361c55d39a69163fa8fd24cf5f83655d23dca3ad961c62f356208552bb9ed529077096966d670c354e4abc9804f1746c08ca18217c32905e462e36ce3be39e772c180e86039b2783a2ec07a28fb5c55df06f4c52c9de2bcbf6955817183995497cea956ae515d2261898fa051015728e5a8aaac42dad33170d04507a33a85521abdf1cba64ecfb850458dbef0a8aea71575d060c7db3970f85a6e1e4c7abf5ae8cdb0933d71e8c94e04a25619dcee3d2261ad2ee6bf12ffa06d98a0864d87602733ec86a64521f2b18177b200cbbe117577a615d6c770988c0bad946e208e24fa074e5ab3143db5bfce0fd108e4b82d120a92108011a723c12a787e6d788719a10bdba5b2699c327186af4e23c1a946834b6150bda2583e9ca2ad44ce8dbbbc2db04de8ef92e8efc141fbecaa6287c59474e6bc05d99b2964fa090c3a2233ba186515be7ed1f612970cee2d7afb81bdd762170481cd0069127d5b05aa993b4ea988d8fddc186ffb7dc90a6c08f4df435c93402849236c3fab4d27c7026c1d4dcb2602646dec9751e763dba37bdf8ff9406ad9e530ee5db382f413001aeb06a53ed9027d831179727b0865a8918da3edbebcf9b14ed44ce6cbaced4bb1bdb7f1447e6cc254b332051512bd7af426fb8f401378cd2bf5983ca01c64b92ecf032ea15d1721d03f482d7ce6e74fef6d55e702f46980c82b5a84031900b1c9e59e7c97fbec7e8f323a97a7e36cc88be0f1d45b7ff585ac54bd407b22b4154aacc8f6d7ebf48e1d814cc5ed20f8037e0a79715eef29be32806a1d58bb7c5da76f550aa3d8a1fbff0eb19ccb1a313d55cda56c9ec2ef29632387fe8d76e3c0468043e8f663f4860ee12bf2d5b0b7474d6e694f91e6dbe115974a3926f12fee5e438777cb6a932df8cd8bec4d073b931ba3bc832b68d9dd300741fa7bf8afc47ed2576f6936ba424663aab639c5ae4f5683423b4742bf1c978238f16cbe39d652de3fdb8befc848ad922222e04a4037c0713eb57a81a23f0c73473fc646cea306b4bcbc8862f8385ddfa9d4b7fa2c087e879683303ed5bdd3a062b3cf5b3a278a66d2a13f83f44f82ddf310ee074ab6a364597e899a0255dc164f31cc50846851df9ab48195ded7ea1b1d510bd7ee74d73faf36bc31ecfa268359046f4eb879f924009438b481c6cd7889a002ed5ee382bc9190da6fc026e479558e4475677e9aa9e3050e2765694dfc81f56e880b96e7160c980dd98edd3dfffffffffffffffff\"}}},{}],283:[function(e,t,r){var n=r;n.version=e(\"../package.json\").version,n.utils=e(\"./elliptic/utils\"),n.rand=e(\"brorand\"),n.curve=e(\"./elliptic/curve\"),n.curves=e(\"./elliptic/curves\"),n.ec=e(\"./elliptic/ec\"),n.eddsa=e(\"./elliptic/eddsa\")},{\"../package.json\":298,\"./elliptic/curve\":286,\"./elliptic/curves\":289,\"./elliptic/ec\":290,\"./elliptic/eddsa\":293,\"./elliptic/utils\":297,brorand:157}],284:[function(e,t,r){var n=e(\"bn.js\"),o=e(\"../utils\"),i=o.getNAF,a=o.getJSF,s=o.assert;function u(e,t){this.type=e,this.p=new n(t.p,16),this.red=t.prime?n.red(t.prime):n.mont(this.p),this.zero=new n(0).toRed(this.red),this.one=new n(1).toRed(this.red),this.two=new n(2).toRed(this.red),this.n=t.n&&new n(t.n,16),this.g=t.g&&this.pointFromJSON(t.g,t.gRed),this._wnafT1=new Array(4),this._wnafT2=new Array(4),this._wnafT3=new Array(4),this._wnafT4=new Array(4);var r=this.n&&this.p.div(this.n);!r||r.cmpn(100)>0?this.redN=null:(this._maxwellTrick=!0,this.redN=this.n.toRed(this.red))}function c(e,t){this.curve=e,this.type=t,this.precomputed=null}t.exports=u,u.prototype.point=function(){throw new Error(\"Not implemented\")},u.prototype.validate=function(){throw new Error(\"Not implemented\")},u.prototype._fixedNafMul=function(e,t){s(e.precomputed);var r=e._getDoubles(),n=i(t,1),o=(1<=u;t--)c=(c<<1)+n[t];a.push(c)}for(var f=this.jpoint(null,null,null),l=this.jpoint(null,null,null),h=o;h>0;h--){for(u=0;u=0;c--){for(t=0;c>=0&&0===a[c];c--)t++;if(c>=0&&t++,u=u.dblp(t),c<0)break;var f=a[c];s(0!==f),u=\"affine\"===e.type?f>0?u.mixedAdd(o[f-1>>1]):u.mixedAdd(o[-f-1>>1].neg()):f>0?u.add(o[f-1>>1]):u.add(o[-f-1>>1].neg())}return\"affine\"===e.type?u.toP():u},u.prototype._wnafMulAdd=function(e,t,r,n,o){for(var s=this._wnafT1,u=this._wnafT2,c=this._wnafT3,f=0,l=0;l=1;l-=2){var d=l-1,p=l;if(1===s[d]&&1===s[p]){var y=[t[d],null,null,t[p]];0===t[d].y.cmp(t[p].y)?(y[1]=t[d].add(t[p]),y[2]=t[d].toJ().mixedAdd(t[p].neg())):0===t[d].y.cmp(t[p].y.redNeg())?(y[1]=t[d].toJ().mixedAdd(t[p]),y[2]=t[d].add(t[p].neg())):(y[1]=t[d].toJ().mixedAdd(t[p]),y[2]=t[d].toJ().mixedAdd(t[p].neg()));var m=[-3,-1,-5,-7,0,7,5,1,3],b=a(r[d],r[p]);f=Math.max(b[0].length,f),c[d]=new Array(f),c[p]=new Array(f);for(var v=0;v=0;l--){for(var x=0;l>=0;){var S=!0;for(v=0;v=0&&x++,_=_.dblp(x),l<0)break;for(v=0;v0?O=u[v][E-1>>1]:E<0&&(O=u[v][-E-1>>1].neg()),_=\"affine\"===O.type?_.mixedAdd(O):_.add(O))}}for(l=0;l=Math.ceil((e.bitLength()+1)/t.step)},c.prototype._getDoubles=function(e,t){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;for(var r=[this],n=this,o=0;o\":\"\"},c.prototype.isInfinity=function(){return 0===this.x.cmpn(0)&&(0===this.y.cmp(this.z)||this.zOne&&0===this.y.cmp(this.curve.c))},c.prototype._extDbl=function(){var e=this.x.redSqr(),t=this.y.redSqr(),r=this.z.redSqr();r=r.redIAdd(r);var n=this.curve._mulA(e),o=this.x.redAdd(this.y).redSqr().redISub(e).redISub(t),i=n.redAdd(t),a=i.redSub(r),s=n.redSub(t),u=o.redMul(a),c=i.redMul(s),f=o.redMul(s),l=a.redMul(i);return this.curve.point(u,c,l,f)},c.prototype._projDbl=function(){var e,t,r,n=this.x.redAdd(this.y).redSqr(),o=this.x.redSqr(),i=this.y.redSqr();if(this.curve.twisted){var a=(c=this.curve._mulA(o)).redAdd(i);if(this.zOne)e=n.redSub(o).redSub(i).redMul(a.redSub(this.curve.two)),t=a.redMul(c.redSub(i)),r=a.redSqr().redSub(a).redSub(a);else{var s=this.z.redSqr(),u=a.redSub(s).redISub(s);e=n.redSub(o).redISub(i).redMul(u),t=a.redMul(c.redSub(i)),r=a.redMul(u)}}else{var c=o.redAdd(i);s=this.curve._mulC(this.z).redSqr(),u=c.redSub(s).redSub(s);e=this.curve._mulC(n.redISub(c)).redMul(u),t=this.curve._mulC(c).redMul(o.redISub(i)),r=c.redMul(u)}return this.curve.point(e,t,r)},c.prototype.dbl=function(){return this.isInfinity()?this:this.curve.extended?this._extDbl():this._projDbl()},c.prototype._extAdd=function(e){var t=this.y.redSub(this.x).redMul(e.y.redSub(e.x)),r=this.y.redAdd(this.x).redMul(e.y.redAdd(e.x)),n=this.t.redMul(this.curve.dd).redMul(e.t),o=this.z.redMul(e.z.redAdd(e.z)),i=r.redSub(t),a=o.redSub(n),s=o.redAdd(n),u=r.redAdd(t),c=i.redMul(a),f=s.redMul(u),l=i.redMul(u),h=a.redMul(s);return this.curve.point(c,f,h,l)},c.prototype._projAdd=function(e){var t,r,n=this.z.redMul(e.z),o=n.redSqr(),i=this.x.redMul(e.x),a=this.y.redMul(e.y),s=this.curve.d.redMul(i).redMul(a),u=o.redSub(s),c=o.redAdd(s),f=this.x.redAdd(this.y).redMul(e.x.redAdd(e.y)).redISub(i).redISub(a),l=n.redMul(u).redMul(f);return this.curve.twisted?(t=n.redMul(c).redMul(a.redSub(this.curve._mulA(i))),r=u.redMul(c)):(t=n.redMul(c).redMul(a.redSub(i)),r=this.curve._mulC(u).redMul(c)),this.curve.point(l,t,r)},c.prototype.add=function(e){return this.isInfinity()?e:e.isInfinity()?this:this.curve.extended?this._extAdd(e):this._projAdd(e)},c.prototype.mul=function(e){return this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve._wnafMul(this,e)},c.prototype.mulAdd=function(e,t,r){return this.curve._wnafMulAdd(1,[this,t],[e,r],2,!1)},c.prototype.jmulAdd=function(e,t,r){return this.curve._wnafMulAdd(1,[this,t],[e,r],2,!0)},c.prototype.normalize=function(){if(this.zOne)return this;var e=this.z.redInvm();return this.x=this.x.redMul(e),this.y=this.y.redMul(e),this.t&&(this.t=this.t.redMul(e)),this.z=this.curve.one,this.zOne=!0,this},c.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())},c.prototype.getX=function(){return this.normalize(),this.x.fromRed()},c.prototype.getY=function(){return this.normalize(),this.y.fromRed()},c.prototype.eq=function(e){return this===e||0===this.getX().cmp(e.getX())&&0===this.getY().cmp(e.getY())},c.prototype.eqXToP=function(e){var t=e.toRed(this.curve.red).redMul(this.z);if(0===this.x.cmp(t))return!0;for(var r=e.clone(),n=this.curve.redN.redMul(this.z);;){if(r.iadd(this.curve.n),r.cmp(this.curve.p)>=0)return!1;if(t.redIAdd(n),0===this.x.cmp(t))return!0}},c.prototype.toP=c.prototype.normalize,c.prototype.mixedAdd=c.prototype.add},{\"../utils\":297,\"./base\":284,\"bn.js\":156,inherits:341}],286:[function(e,t,r){var n=r;n.base=e(\"./base\"),n.short=e(\"./short\"),n.mont=e(\"./mont\"),n.edwards=e(\"./edwards\")},{\"./base\":284,\"./edwards\":285,\"./mont\":287,\"./short\":288}],287:[function(e,t,r){var n=e(\"bn.js\"),o=e(\"inherits\"),i=e(\"./base\"),a=e(\"../utils\");function s(e){i.call(this,\"mont\",e),this.a=new n(e.a,16).toRed(this.red),this.b=new n(e.b,16).toRed(this.red),this.i4=new n(4).toRed(this.red).redInvm(),this.two=new n(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}function u(e,t,r){i.BasePoint.call(this,e,\"projective\"),null===t&&null===r?(this.x=this.curve.one,this.z=this.curve.zero):(this.x=new n(t,16),this.z=new n(r,16),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)))}o(s,i),t.exports=s,s.prototype.validate=function(e){var t=e.normalize().x,r=t.redSqr(),n=r.redMul(t).redAdd(r.redMul(this.a)).redAdd(t);return 0===n.redSqrt().redSqr().cmp(n)},o(u,i.BasePoint),s.prototype.decodePoint=function(e,t){return this.point(a.toArray(e,t),1)},s.prototype.point=function(e,t){return new u(this,e,t)},s.prototype.pointFromJSON=function(e){return u.fromJSON(this,e)},u.prototype.precompute=function(){},u.prototype._encode=function(){return this.getX().toArray(\"be\",this.curve.p.byteLength())},u.fromJSON=function(e,t){return new u(e,t[0],t[1]||e.one)},u.prototype.inspect=function(){return this.isInfinity()?\"\":\"\"},u.prototype.isInfinity=function(){return 0===this.z.cmpn(0)},u.prototype.dbl=function(){var e=this.x.redAdd(this.z).redSqr(),t=this.x.redSub(this.z).redSqr(),r=e.redSub(t),n=e.redMul(t),o=r.redMul(t.redAdd(this.curve.a24.redMul(r)));return this.curve.point(n,o)},u.prototype.add=function(){throw new Error(\"Not supported on Montgomery curve\")},u.prototype.diffAdd=function(e,t){var r=this.x.redAdd(this.z),n=this.x.redSub(this.z),o=e.x.redAdd(e.z),i=e.x.redSub(e.z).redMul(r),a=o.redMul(n),s=t.z.redMul(i.redAdd(a).redSqr()),u=t.x.redMul(i.redISub(a).redSqr());return this.curve.point(s,u)},u.prototype.mul=function(e){for(var t=e.clone(),r=this,n=this.curve.point(null,null),o=[];0!==t.cmpn(0);t.iushrn(1))o.push(t.andln(1));for(var i=o.length-1;i>=0;i--)0===o[i]?(r=r.diffAdd(n,this),n=n.dbl()):(n=r.diffAdd(n,this),r=r.dbl());return n},u.prototype.mulAdd=function(){throw new Error(\"Not supported on Montgomery curve\")},u.prototype.jumlAdd=function(){throw new Error(\"Not supported on Montgomery curve\")},u.prototype.eq=function(e){return 0===this.getX().cmp(e.getX())},u.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this},u.prototype.getX=function(){return this.normalize(),this.x.fromRed()}},{\"../utils\":297,\"./base\":284,\"bn.js\":156,inherits:341}],288:[function(e,t,r){var n=e(\"../utils\"),o=e(\"bn.js\"),i=e(\"inherits\"),a=e(\"./base\"),s=n.assert;function u(e){a.call(this,\"short\",e),this.a=new o(e.a,16).toRed(this.red),this.b=new o(e.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=0===this.a.fromRed().cmpn(0),this.threeA=0===this.a.fromRed().sub(this.p).cmpn(-3),this.endo=this._getEndomorphism(e),this._endoWnafT1=new Array(4),this._endoWnafT2=new Array(4)}function c(e,t,r,n){a.BasePoint.call(this,e,\"affine\"),null===t&&null===r?(this.x=null,this.y=null,this.inf=!0):(this.x=new o(t,16),this.y=new o(r,16),n&&(this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.inf=!1)}function f(e,t,r,n){a.BasePoint.call(this,e,\"jacobian\"),null===t&&null===r&&null===n?(this.x=this.curve.one,this.y=this.curve.one,this.z=new o(0)):(this.x=new o(t,16),this.y=new o(r,16),this.z=new o(n,16)),this.x.red||(this.x=this.x.toRed(this.curve.red)),this.y.red||(this.y=this.y.toRed(this.curve.red)),this.z.red||(this.z=this.z.toRed(this.curve.red)),this.zOne=this.z===this.curve.one}i(u,a),t.exports=u,u.prototype._getEndomorphism=function(e){if(this.zeroA&&this.g&&this.n&&1===this.p.modn(3)){var t,r;if(e.beta)t=new o(e.beta,16).toRed(this.red);else{var n=this._getEndoRoots(this.p);t=(t=n[0].cmp(n[1])<0?n[0]:n[1]).toRed(this.red)}if(e.lambda)r=new o(e.lambda,16);else{var i=this._getEndoRoots(this.n);0===this.g.mul(i[0]).x.cmp(this.g.x.redMul(t))?r=i[0]:(r=i[1],s(0===this.g.mul(r).x.cmp(this.g.x.redMul(t))))}return{beta:t,lambda:r,basis:e.basis?e.basis.map((function(e){return{a:new o(e.a,16),b:new o(e.b,16)}})):this._getEndoBasis(r)}}},u.prototype._getEndoRoots=function(e){var t=e===this.p?this.red:o.mont(e),r=new o(2).toRed(t).redInvm(),n=r.redNeg(),i=new o(3).toRed(t).redNeg().redSqrt().redMul(r);return[n.redAdd(i).fromRed(),n.redSub(i).fromRed()]},u.prototype._getEndoBasis=function(e){for(var t,r,n,i,a,s,u,c,f,l=this.n.ushrn(Math.floor(this.n.bitLength()/2)),h=e,d=this.n.clone(),p=new o(1),y=new o(0),m=new o(0),b=new o(1),v=0;0!==h.cmpn(0);){var g=d.div(h);c=d.sub(g.mul(h)),f=m.sub(g.mul(p));var w=b.sub(g.mul(y));if(!n&&c.cmp(l)<0)t=u.neg(),r=p,n=c.neg(),i=f;else if(n&&2==++v)break;u=c,d=h,h=c,m=p,p=f,b=y,y=w}a=c.neg(),s=f;var _=n.sqr().add(i.sqr());return a.sqr().add(s.sqr()).cmp(_)>=0&&(a=t,s=r),n.negative&&(n=n.neg(),i=i.neg()),a.negative&&(a=a.neg(),s=s.neg()),[{a:n,b:i},{a:a,b:s}]},u.prototype._endoSplit=function(e){var t=this.endo.basis,r=t[0],n=t[1],o=n.b.mul(e).divRound(this.n),i=r.b.neg().mul(e).divRound(this.n),a=o.mul(r.a),s=i.mul(n.a),u=o.mul(r.b),c=i.mul(n.b);return{k1:e.sub(a).sub(s),k2:u.add(c).neg()}},u.prototype.pointFromX=function(e,t){(e=new o(e,16)).red||(e=e.toRed(this.red));var r=e.redSqr().redMul(e).redIAdd(e.redMul(this.a)).redIAdd(this.b),n=r.redSqrt();if(0!==n.redSqr().redSub(r).cmp(this.zero))throw new Error(\"invalid point\");var i=n.fromRed().isOdd();return(t&&!i||!t&&i)&&(n=n.redNeg()),this.point(e,n)},u.prototype.validate=function(e){if(e.inf)return!0;var t=e.x,r=e.y,n=this.a.redMul(t),o=t.redSqr().redMul(t).redIAdd(n).redIAdd(this.b);return 0===r.redSqr().redISub(o).cmpn(0)},u.prototype._endoWnafMulAdd=function(e,t,r){for(var n=this._endoWnafT1,o=this._endoWnafT2,i=0;i\":\"\"},c.prototype.isInfinity=function(){return this.inf},c.prototype.add=function(e){if(this.inf)return e;if(e.inf)return this;if(this.eq(e))return this.dbl();if(this.neg().eq(e))return this.curve.point(null,null);if(0===this.x.cmp(e.x))return this.curve.point(null,null);var t=this.y.redSub(e.y);0!==t.cmpn(0)&&(t=t.redMul(this.x.redSub(e.x).redInvm()));var r=t.redSqr().redISub(this.x).redISub(e.x),n=t.redMul(this.x.redSub(r)).redISub(this.y);return this.curve.point(r,n)},c.prototype.dbl=function(){if(this.inf)return this;var e=this.y.redAdd(this.y);if(0===e.cmpn(0))return this.curve.point(null,null);var t=this.curve.a,r=this.x.redSqr(),n=e.redInvm(),o=r.redAdd(r).redIAdd(r).redIAdd(t).redMul(n),i=o.redSqr().redISub(this.x.redAdd(this.x)),a=o.redMul(this.x.redSub(i)).redISub(this.y);return this.curve.point(i,a)},c.prototype.getX=function(){return this.x.fromRed()},c.prototype.getY=function(){return this.y.fromRed()},c.prototype.mul=function(e){return e=new o(e,16),this._hasDoubles(e)?this.curve._fixedNafMul(this,e):this.curve.endo?this.curve._endoWnafMulAdd([this],[e]):this.curve._wnafMul(this,e)},c.prototype.mulAdd=function(e,t,r){var n=[this,t],o=[e,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,o):this.curve._wnafMulAdd(1,n,o,2)},c.prototype.jmulAdd=function(e,t,r){var n=[this,t],o=[e,r];return this.curve.endo?this.curve._endoWnafMulAdd(n,o,!0):this.curve._wnafMulAdd(1,n,o,2,!0)},c.prototype.eq=function(e){return this===e||this.inf===e.inf&&(this.inf||0===this.x.cmp(e.x)&&0===this.y.cmp(e.y))},c.prototype.neg=function(e){if(this.inf)return this;var t=this.curve.point(this.x,this.y.redNeg());if(e&&this.precomputed){var r=this.precomputed,n=function(e){return e.neg()};t.precomputed={naf:r.naf&&{wnd:r.naf.wnd,points:r.naf.points.map(n)},doubles:r.doubles&&{step:r.doubles.step,points:r.doubles.points.map(n)}}}return t},c.prototype.toJ=function(){return this.inf?this.curve.jpoint(null,null,null):this.curve.jpoint(this.x,this.y,this.curve.one)},i(f,a.BasePoint),u.prototype.jpoint=function(e,t,r){return new f(this,e,t,r)},f.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var e=this.z.redInvm(),t=e.redSqr(),r=this.x.redMul(t),n=this.y.redMul(t).redMul(e);return this.curve.point(r,n)},f.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)},f.prototype.add=function(e){if(this.isInfinity())return e;if(e.isInfinity())return this;var t=e.z.redSqr(),r=this.z.redSqr(),n=this.x.redMul(t),o=e.x.redMul(r),i=this.y.redMul(t.redMul(e.z)),a=e.y.redMul(r.redMul(this.z)),s=n.redSub(o),u=i.redSub(a);if(0===s.cmpn(0))return 0!==u.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var c=s.redSqr(),f=c.redMul(s),l=n.redMul(c),h=u.redSqr().redIAdd(f).redISub(l).redISub(l),d=u.redMul(l.redISub(h)).redISub(i.redMul(f)),p=this.z.redMul(e.z).redMul(s);return this.curve.jpoint(h,d,p)},f.prototype.mixedAdd=function(e){if(this.isInfinity())return e.toJ();if(e.isInfinity())return this;var t=this.z.redSqr(),r=this.x,n=e.x.redMul(t),o=this.y,i=e.y.redMul(t).redMul(this.z),a=r.redSub(n),s=o.redSub(i);if(0===a.cmpn(0))return 0!==s.cmpn(0)?this.curve.jpoint(null,null,null):this.dbl();var u=a.redSqr(),c=u.redMul(a),f=r.redMul(u),l=s.redSqr().redIAdd(c).redISub(f).redISub(f),h=s.redMul(f.redISub(l)).redISub(o.redMul(c)),d=this.z.redMul(a);return this.curve.jpoint(l,h,d)},f.prototype.dblp=function(e){if(0===e)return this;if(this.isInfinity())return this;if(!e)return this.dbl();if(this.curve.zeroA||this.curve.threeA){for(var t=this,r=0;r=0)return!1;if(r.redIAdd(o),0===this.x.cmp(r))return!0}},f.prototype.inspect=function(){return this.isInfinity()?\"\":\"\"},f.prototype.isInfinity=function(){return 0===this.z.cmpn(0)}},{\"../utils\":297,\"./base\":284,\"bn.js\":156,inherits:341}],289:[function(e,t,r){var n,o=r,i=e(\"hash.js\"),a=e(\"./curve\"),s=e(\"./utils\").assert;function u(e){\"short\"===e.type?this.curve=new a.short(e):\"edwards\"===e.type?this.curve=new a.edwards(e):this.curve=new a.mont(e),this.g=this.curve.g,this.n=this.curve.n,this.hash=e.hash,s(this.g.validate(),\"Invalid curve\"),s(this.g.mul(this.n).isInfinity(),\"Invalid curve, G*N != O\")}function c(e,t){Object.defineProperty(o,e,{configurable:!0,enumerable:!0,get:function(){var r=new u(t);return Object.defineProperty(o,e,{configurable:!0,enumerable:!0,value:r}),r}})}o.PresetCurve=u,c(\"p192\",{type:\"short\",prime:\"p192\",p:\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\",a:\"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc\",b:\"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1\",n:\"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831\",hash:i.sha256,gRed:!1,g:[\"188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012\",\"07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811\"]}),c(\"p224\",{type:\"short\",prime:\"p224\",p:\"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\",a:\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe\",b:\"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4\",n:\"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d\",hash:i.sha256,gRed:!1,g:[\"b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21\",\"bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34\"]}),c(\"p256\",{type:\"short\",prime:null,p:\"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff\",a:\"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc\",b:\"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b\",n:\"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551\",hash:i.sha256,gRed:!1,g:[\"6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296\",\"4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5\"]}),c(\"p384\",{type:\"short\",prime:null,p:\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff\",a:\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc\",b:\"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef\",n:\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973\",hash:i.sha384,gRed:!1,g:[\"aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7\",\"3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f\"]}),c(\"p521\",{type:\"short\",prime:null,p:\"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff\",a:\"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc\",b:\"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00\",n:\"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409\",hash:i.sha512,gRed:!1,g:[\"000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66\",\"00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650\"]}),c(\"curve25519\",{type:\"mont\",prime:\"p25519\",p:\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\",a:\"76d06\",b:\"1\",n:\"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed\",hash:i.sha256,gRed:!1,g:[\"9\"]}),c(\"ed25519\",{type:\"edwards\",prime:\"p25519\",p:\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\",a:\"-1\",c:\"1\",d:\"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3\",n:\"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed\",hash:i.sha256,gRed:!1,g:[\"216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a\",\"6666666666666666666666666666666666666666666666666666666666666658\"]});try{n=e(\"./precomputed/secp256k1\")}catch(e){n=void 0}c(\"secp256k1\",{type:\"short\",prime:\"k256\",p:\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\",a:\"0\",b:\"7\",n:\"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141\",h:\"1\",hash:i.sha256,beta:\"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee\",lambda:\"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72\",basis:[{a:\"3086d221a7d46bcde86c90e49284eb15\",b:\"-e4437ed6010e88286f547fa90abfe4c3\"},{a:\"114ca50f7a8e2f3f657c1108d9d44cfd8\",b:\"3086d221a7d46bcde86c90e49284eb15\"}],gRed:!1,g:[\"79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798\",\"483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8\",n]})},{\"./curve\":286,\"./precomputed/secp256k1\":296,\"./utils\":297,\"hash.js\":326}],290:[function(e,t,r){var n=e(\"bn.js\"),o=e(\"hmac-drbg\"),i=e(\"../utils\"),a=e(\"../curves\"),s=e(\"brorand\"),u=i.assert,c=e(\"./key\"),f=e(\"./signature\");function l(e){if(!(this instanceof l))return new l(e);\"string\"==typeof e&&(u(a.hasOwnProperty(e),\"Unknown curve \"+e),e=a[e]),e instanceof a.PresetCurve&&(e={curve:e}),this.curve=e.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=e.curve.g,this.g.precompute(e.curve.n.bitLength()+1),this.hash=e.hash||e.curve.hash}t.exports=l,l.prototype.keyPair=function(e){return new c(this,e)},l.prototype.keyFromPrivate=function(e,t){return c.fromPrivate(this,e,t)},l.prototype.keyFromPublic=function(e,t){return c.fromPublic(this,e,t)},l.prototype.genKeyPair=function(e){e||(e={});for(var t=new o({hash:this.hash,pers:e.pers,persEnc:e.persEnc||\"utf8\",entropy:e.entropy||s(this.hash.hmacStrength),entropyEnc:e.entropy&&e.entropyEnc||\"utf8\",nonce:this.n.toArray()}),r=this.n.byteLength(),i=this.n.sub(new n(2));;){var a=new n(t.generate(r));if(!(a.cmp(i)>0))return a.iaddn(1),this.keyFromPrivate(a)}},l.prototype._truncateToN=function(e,t){var r=8*e.byteLength()-this.n.bitLength();return r>0&&(e=e.ushrn(r)),!t&&e.cmp(this.n)>=0?e.sub(this.n):e},l.prototype.sign=function(e,t,r,i){\"object\"===_typeof2(r)&&(i=r,r=null),i||(i={}),t=this.keyFromPrivate(t,r),e=this._truncateToN(new n(e,16));for(var a=this.n.byteLength(),s=t.getPrivate().toArray(\"be\",a),u=e.toArray(\"be\",a),c=new o({hash:this.hash,entropy:s,nonce:u,pers:i.pers,persEnc:i.persEnc||\"utf8\"}),l=this.n.sub(new n(1)),h=0;;h++){var d=i.k?i.k(h):new n(c.generate(this.n.byteLength()));if(!((d=this._truncateToN(d,!0)).cmpn(1)<=0||d.cmp(l)>=0)){var p=this.g.mul(d);if(!p.isInfinity()){var y=p.getX(),m=y.umod(this.n);if(0!==m.cmpn(0)){var b=d.invm(this.n).mul(m.mul(t.getPrivate()).iadd(e));if(0!==(b=b.umod(this.n)).cmpn(0)){var v=(p.getY().isOdd()?1:0)|(0!==y.cmp(m)?2:0);return i.canonical&&b.cmp(this.nh)>0&&(b=this.n.sub(b),v^=1),new f({r:m,s:b,recoveryParam:v})}}}}}},l.prototype.verify=function(e,t,r,o){e=this._truncateToN(new n(e,16)),r=this.keyFromPublic(r,o);var i=(t=new f(t,\"hex\")).r,a=t.s;if(i.cmpn(1)<0||i.cmp(this.n)>=0)return!1;if(a.cmpn(1)<0||a.cmp(this.n)>=0)return!1;var s,u=a.invm(this.n),c=u.mul(e).umod(this.n),l=u.mul(i).umod(this.n);return this.curve._maxwellTrick?!(s=this.g.jmulAdd(c,r.getPublic(),l)).isInfinity()&&s.eqXToP(i):!(s=this.g.mulAdd(c,r.getPublic(),l)).isInfinity()&&0===s.getX().umod(this.n).cmp(i)},l.prototype.recoverPubKey=function(e,t,r,o){u((3&r)===r,\"The recovery param is more than two bits\"),t=new f(t,o);var i=this.n,a=new n(e),s=t.r,c=t.s,l=1&r,h=r>>1;if(s.cmp(this.curve.p.umod(this.curve.n))>=0&&h)throw new Error(\"Unable to find sencond key candinate\");s=h?this.curve.pointFromX(s.add(this.curve.n),l):this.curve.pointFromX(s,l);var d=t.r.invm(i),p=i.sub(a).mul(d).umod(i),y=c.mul(d).umod(i);return this.g.mulAdd(p,s,y)},l.prototype.getKeyRecoveryParam=function(e,t,r,n){if(null!==(t=new f(t,n)).recoveryParam)return t.recoveryParam;for(var o=0;o<4;o++){var i;try{i=this.recoverPubKey(e,t,o)}catch(e){continue}if(i.eq(r))return o}throw new Error(\"Unable to find valid recovery factor\")}},{\"../curves\":289,\"../utils\":297,\"./key\":291,\"./signature\":292,\"bn.js\":156,brorand:157,\"hmac-drbg\":338}],291:[function(e,t,r){var n=e(\"bn.js\"),o=e(\"../utils\").assert;function i(e,t){this.ec=e,this.priv=null,this.pub=null,t.priv&&this._importPrivate(t.priv,t.privEnc),t.pub&&this._importPublic(t.pub,t.pubEnc)}t.exports=i,i.fromPublic=function(e,t,r){return t instanceof i?t:new i(e,{pub:t,pubEnc:r})},i.fromPrivate=function(e,t,r){return t instanceof i?t:new i(e,{priv:t,privEnc:r})},i.prototype.validate=function(){var e=this.getPublic();return e.isInfinity()?{result:!1,reason:\"Invalid public key\"}:e.validate()?e.mul(this.ec.curve.n).isInfinity()?{result:!0,reason:null}:{result:!1,reason:\"Public key * N != O\"}:{result:!1,reason:\"Public key is not a point\"}},i.prototype.getPublic=function(e,t){return\"string\"==typeof e&&(t=e,e=null),this.pub||(this.pub=this.ec.g.mul(this.priv)),t?this.pub.encode(t,e):this.pub},i.prototype.getPrivate=function(e){return\"hex\"===e?this.priv.toString(16,2):this.priv},i.prototype._importPrivate=function(e,t){this.priv=new n(e,t||16),this.priv=this.priv.umod(this.ec.curve.n)},i.prototype._importPublic=function(e,t){if(e.x||e.y)return\"mont\"===this.ec.curve.type?o(e.x,\"Need x coordinate\"):\"short\"!==this.ec.curve.type&&\"edwards\"!==this.ec.curve.type||o(e.x&&e.y,\"Need both x and y coordinate\"),void(this.pub=this.ec.curve.point(e.x,e.y));this.pub=this.ec.curve.decodePoint(e,t)},i.prototype.derive=function(e){return e.mul(this.priv).getX()},i.prototype.sign=function(e,t,r){return this.ec.sign(e,this,t,r)},i.prototype.verify=function(e,t){return this.ec.verify(e,t,this)},i.prototype.inspect=function(){return\"\"}},{\"../utils\":297,\"bn.js\":156}],292:[function(e,t,r){var n=e(\"bn.js\"),o=e(\"../utils\"),i=o.assert;function a(e,t){if(e instanceof a)return e;this._importDER(e,t)||(i(e.r&&e.s,\"Signature without r or s\"),this.r=new n(e.r,16),this.s=new n(e.s,16),void 0===e.recoveryParam?this.recoveryParam=null:this.recoveryParam=e.recoveryParam)}function s(){this.place=0}function u(e,t){var r=e[t.place++];if(!(128&r))return r;for(var n=15&r,o=0,i=0,a=t.place;i>>3);for(e.push(128|r);--r;)e.push(t>>>(r<<3)&255);e.push(t)}}t.exports=a,a.prototype._importDER=function(e,t){e=o.toArray(e,t);var r=new s;if(48!==e[r.place++])return!1;if(u(e,r)+r.place!==e.length)return!1;if(2!==e[r.place++])return!1;var i=u(e,r),a=e.slice(r.place,i+r.place);if(r.place+=i,2!==e[r.place++])return!1;var c=u(e,r);if(e.length!==c+r.place)return!1;var f=e.slice(r.place,c+r.place);return 0===a[0]&&128&a[1]&&(a=a.slice(1)),0===f[0]&&128&f[1]&&(f=f.slice(1)),this.r=new n(a),this.s=new n(f),this.recoveryParam=null,!0},a.prototype.toDER=function(e){var t=this.r.toArray(),r=this.s.toArray();for(128&t[0]&&(t=[0].concat(t)),128&r[0]&&(r=[0].concat(r)),t=c(t),r=c(r);!(r[0]||128&r[1]);)r=r.slice(1);var n=[2];f(n,t.length),(n=n.concat(t)).push(2),f(n,r.length);var i=n.concat(r),a=[48];return f(a,i.length),a=a.concat(i),o.encode(a,e)}},{\"../utils\":297,\"bn.js\":156}],293:[function(e,t,r){var n=e(\"hash.js\"),o=e(\"../curves\"),i=e(\"../utils\"),a=i.assert,s=i.parseBytes,u=e(\"./key\"),c=e(\"./signature\");function f(e){if(a(\"ed25519\"===e,\"only tested with ed25519 so far\"),!(this instanceof f))return new f(e);e=o[e].curve;this.curve=e,this.g=e.g,this.g.precompute(e.n.bitLength()+1),this.pointClass=e.point().constructor,this.encodingLength=Math.ceil(e.n.bitLength()/8),this.hash=n.sha512}t.exports=f,f.prototype.sign=function(e,t){e=s(e);var r=this.keyFromSecret(t),n=this.hashInt(r.messagePrefix(),e),o=this.g.mul(n),i=this.encodePoint(o),a=this.hashInt(i,r.pubBytes(),e).mul(r.priv()),u=n.add(a).umod(this.curve.n);return this.makeSignature({R:o,S:u,Rencoded:i})},f.prototype.verify=function(e,t,r){e=s(e),t=this.makeSignature(t);var n=this.keyFromPublic(r),o=this.hashInt(t.Rencoded(),n.pubBytes(),e),i=this.g.mul(t.S());return t.R().add(n.pub().mul(o)).eq(i)},f.prototype.hashInt=function(){for(var e=this.hash(),t=0;t=0;){var i;if(o.isOdd()){var a=o.andln(n-1);i=a>(n>>1)-1?(n>>1)-a:a,o.isubn(i)}else i=0;r.push(i);for(var s=0!==o.cmpn(0)&&0===o.andln(n-1)?t+1:1,u=1;u0||t.cmpn(-o)>0;){var i,a,s,u=e.andln(3)+n&3,c=t.andln(3)+o&3;if(3===u&&(u=-1),3===c&&(c=-1),0==(1&u))i=0;else i=3!==(s=e.andln(7)+n&7)&&5!==s||2!==c?u:-u;if(r[0].push(i),0==(1&c))a=0;else a=3!==(s=t.andln(7)+o&7)&&5!==s||2!==u?c:-c;r[1].push(a),2*n===i+1&&(n=1-n),2*o===a+1&&(o=1-o),e.iushrn(1),t.iushrn(1)}return r},n.cachedProperty=function(e,t,r){var n=\"_\"+t;e.prototype[t]=function(){return void 0!==this[n]?this[n]:this[n]=r.call(this)}},n.parseBytes=function(e){return\"string\"==typeof e?n.toArray(e,\"hex\"):e},n.intFromLE=function(e){return new o(e,\"hex\",\"le\")}},{\"bn.js\":156,\"minimalistic-assert\":390,\"minimalistic-crypto-utils\":391}],298:[function(e,t,r){t.exports={_from:\"elliptic@^6.0.0\",_id:\"elliptic@6.5.0\",_inBundle:!1,_integrity:\"sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg==\",_location:\"/elliptic\",_phantomChildren:{},_requested:{type:\"range\",registry:!0,raw:\"elliptic@^6.0.0\",name:\"elliptic\",escapedName:\"elliptic\",rawSpec:\"^6.0.0\",saveSpec:null,fetchSpec:\"^6.0.0\"},_requiredBy:[\"/browserify-sign\",\"/create-ecdh\"],_resolved:\"https://registry.npmjs.org/elliptic/-/elliptic-6.5.0.tgz\",_shasum:\"2b8ed4c891b7de3200e14412a5b8248c7af505ca\",_spec:\"elliptic@^6.0.0\",_where:\"/mnt/d/dev/git/exceljs/node_modules/browserify-sign\",author:{name:\"Fedor Indutny\",email:\"fedor@indutny.com\"},bugs:{url:\"https://github.com/indutny/elliptic/issues\"},bundleDependencies:!1,dependencies:{\"bn.js\":\"^4.4.0\",brorand:\"^1.0.1\",\"hash.js\":\"^1.0.0\",\"hmac-drbg\":\"^1.0.0\",inherits:\"^2.0.1\",\"minimalistic-assert\":\"^1.0.0\",\"minimalistic-crypto-utils\":\"^1.0.0\"},deprecated:!1,description:\"EC cryptography\",devDependencies:{brfs:\"^1.4.3\",coveralls:\"^2.11.3\",grunt:\"^0.4.5\",\"grunt-browserify\":\"^5.0.0\",\"grunt-cli\":\"^1.2.0\",\"grunt-contrib-connect\":\"^1.0.0\",\"grunt-contrib-copy\":\"^1.0.0\",\"grunt-contrib-uglify\":\"^1.0.1\",\"grunt-mocha-istanbul\":\"^3.0.1\",\"grunt-saucelabs\":\"^8.6.2\",istanbul:\"^0.4.2\",jscs:\"^2.9.0\",jshint:\"^2.6.0\",mocha:\"^2.1.0\"},files:[\"lib\"],homepage:\"https://github.com/indutny/elliptic\",keywords:[\"EC\",\"Elliptic\",\"curve\",\"Cryptography\"],license:\"MIT\",main:\"lib/elliptic.js\",name:\"elliptic\",repository:{type:\"git\",url:\"git+ssh://git@github.com/indutny/elliptic.git\"},scripts:{jscs:\"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js\",jshint:\"jscs benchmarks/*.js lib/*.js lib/**/*.js lib/**/**/*.js test/index.js\",lint:\"npm run jscs && npm run jshint\",test:\"npm run lint && npm run unit\",unit:\"istanbul test _mocha --reporter=spec test/index.js\",version:\"grunt dist && git add dist/\"},version:\"6.5.0\"}},{}],299:[function(e,t,r){var n=Object.create||function(e){var t=function(){};return t.prototype=e,new t},o=Object.keys||function(e){var t=[];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.push(r);return r},i=Function.prototype.bind||function(e){var t=this;return function(){return t.apply(e,arguments)}};function a(){this._events&&Object.prototype.hasOwnProperty.call(this,\"_events\")||(this._events=n(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0}t.exports=a,a.EventEmitter=a,a.prototype._events=void 0,a.prototype._maxListeners=void 0;var s,u=10;try{var c={};Object.defineProperty&&Object.defineProperty(c,\"x\",{value:0}),s=0===c.x}catch(e){s=!1}function f(e){return void 0===e._maxListeners?a.defaultMaxListeners:e._maxListeners}function l(e,t,r){if(t)e.call(r);else for(var n=e.length,o=_(e,n),i=0;i0&&s.length>i){s.warned=!0;var u=new Error(\"Possible EventEmitter memory leak detected. \"+s.length+' \"'+String(t)+'\" listeners added. Use emitter.setMaxListeners() to increase limit.');u.name=\"MaxListenersExceededWarning\",u.emitter=e,u.type=t,u.count=s.length,\"object\"===(\"undefined\"==typeof console?\"undefined\":_typeof2(console))&&console.warn&&console.warn(\"%s: %s\",u.name,u.message)}}else s=a[t]=r,++e._eventsCount;return e}function b(){if(!this.fired)switch(this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length){case 0:return this.listener.call(this.target);case 1:return this.listener.call(this.target,arguments[0]);case 2:return this.listener.call(this.target,arguments[0],arguments[1]);case 3:return this.listener.call(this.target,arguments[0],arguments[1],arguments[2]);default:for(var e=new Array(arguments.length),t=0;t1&&(t=arguments[1]),t instanceof Error)throw t;var u=new Error('Unhandled \"error\" event. ('+t+\")\");throw u.context=t,u}if(!(r=a[e]))return!1;var c=\"function\"==typeof r;switch(n=arguments.length){case 1:l(r,c,this);break;case 2:h(r,c,this,arguments[1]);break;case 3:d(r,c,this,arguments[1],arguments[2]);break;case 4:p(r,c,this,arguments[1],arguments[2],arguments[3]);break;default:for(o=new Array(n-1),i=1;i=0;a--)if(r[a]===t||r[a].listener===t){s=r[a].listener,i=a;break}if(i<0)return this;0===i?r.shift():function(e,t){for(var r=t,n=r+1,o=e.length;n=0;i--)this.removeListener(e,t[i]);return this},a.prototype.listeners=function(e){return g(this,e,!0)},a.prototype.rawListeners=function(e){return g(this,e,!1)},a.listenerCount=function(e,t){return\"function\"==typeof e.listenerCount?e.listenerCount(t):w.call(e,t)},a.prototype.listenerCount=w,a.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]}},{}],300:[function(e,t,r){var n=e(\"safe-buffer\").Buffer,o=e(\"md5.js\");t.exports=function(e,t,r,i){if(n.isBuffer(e)||(e=n.from(e,\"binary\")),t&&(n.isBuffer(t)||(t=n.from(t,\"binary\")),8!==t.length))throw new RangeError(\"salt should be Buffer with 8 byte length\");for(var a=r/8,s=n.alloc(a),u=n.alloc(i||0),c=n.alloc(0);a>0||i>0;){var f=new o;f.update(c),f.update(e),t&&f.update(t),c=f.digest();var l=0;if(a>0){var h=s.length-a;l=Math.min(a,c.length),c.copy(s,h,0,l),a-=l}if(l0){var d=u.length-i,p=Math.min(i,c.length-l);c.copy(u,d,l,l+p),i-=p}}return c.fill(0),{key:s,iv:u}}},{\"md5.js\":388,\"safe-buffer\":445}],301:[function(e,t,r){(function(t){function n(e){return(n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function o(e,t){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{};n(this,e),this.objectMode=!0,this.delimiter=\",\",this.rowDelimiter=\"\\n\",this.quote='\"',this.escape=this.quote,this.quoteColumns=!1,this.quoteHeaders=this.quoteColumns,this.headers=null,this.includeEndRowDelimiter=!1,this.transform=null,this.writeBOM=!1,this.BOM=\"\\ufeff\",this.alwaysWriteHeaders=!1,Object.assign(this,a||{}),void 0===(null===(t=a)||void 0===t?void 0:t.quoteHeaders)&&(this.quoteHeaders=this.quoteColumns),!0===(null===(r=a)||void 0===r?void 0:r.quote)?this.quote='\"':!1===(null===(o=a)||void 0===o?void 0:o.quote)&&(this.quote=\"\"),\"string\"!=typeof(null===(i=a)||void 0===i?void 0:i.escape)&&(this.escape=this.quote),this.shouldWriteHeaders=!!this.headers,this.headers=Array.isArray(this.headers)?this.headers:null,this.escapedQuote=\"\".concat(this.escape).concat(this.quote)}},{}],303:[function(e,t,r){function n(e,t){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:{},o=[],i=new s.Writable({write:function(e,t,r){o.push(e),r()}});return new Promise((function(a,s){i.on(\"error\",s).on(\"finish\",(function(){return a(t.concat(o))})),r.write(e,n).pipe(i)}))},r.writeToString=function(e,t){return r.writeToBuffer(e,t).then((function(e){return e.toString()}))},r.writeToPath=function(e,t,n){var o=u.createWriteStream(e,{encoding:\"utf8\"});return r.write(t,n).pipe(o)}}).call(this,e(\"buffer\").Buffer)},{\"./CsvFormatterStream\":301,\"./FormatterOptions\":302,\"./formatter\":305,buffer:188,fs:186,stream:456,util:475}],307:[function(e,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});var n=e(\"util\"),o=e(\"./parser\"),i=e(\"./formatter\");r.format=i.format,r.write=i.write,r.writeToStream=i.writeToStream,r.writeToBuffer=i.writeToBuffer,r.writeToString=i.writeToString,r.writeToPath=i.writeToPath;var a=e(\"./parser\");r.parse=a.parse,r.parseString=a.parseString,r.parseStream=a.parseStream,r.parseFile=a.parseFile,r.fromString=n.deprecate(o.parseString,\"csv.fromString has been deprecated in favor of csv.parseString\"),r.fromStream=n.deprecate(o.parseStream,\"csv.fromStream has been deprecated in favor of csv.parseStream\"),r.fromPath=n.deprecate(o.parseFile,\"csv.fromPath has been deprecated in favor of csv.parseFile\")},{\"./formatter\":306,\"./parser\":310,util:475}],308:[function(e,t,r){(function(t){function n(e){return(n=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e})(e)}function o(e,t){for(var r=0;r1?r-1:0),o=1;o=o||n.hasHitRowLimit)return r();if(n.parsedLineCount+=1,n.shouldSkipLine)return s();var u=e[a];n.rowCount+=1,n.parsedRowCount+=1;var c=n.rowCount;return n.transformRow(u,(function(e,t){if(e)return n.rowCount-=1,s(e);if(!t)return s(new Error(\"expected transform result\"));if(t.isValid){if(t.row)return n.pushRow(t.row,s)}else n.emit(\"data-invalid\",t.row,c,t.reason);return s()}))}(0)}},{key:\"transformRow\",value:function(e,t){var r=this;try{this.headerTransformer.transform(e,(function(n,o){return n?t(n):o?o.isValid?o.row?r.shouldEmitRows?r.rowTransformerValidator.transformAndValidate(o.row,t):(r.rowCount-=1,t(null,{row:null,isValid:!0})):(r.rowCount-=1,r.parsedRowCount-=1,t(null,{row:null,isValid:!0})):t(null,{isValid:!1,row:e}):t(new Error(\"Expected result from header transform\"))}))}catch(e){t(e)}}},{key:\"pushRow\",value:function(e,t){try{this.parserOptions.objectMode?this.push(e):this.push(JSON.stringify(e)),t()}catch(e){t(e)}}},{key:\"hasHitRowLimit\",get:function(){return this.parserOptions.limitRows&&this.rowCount>=this.parserOptions.maxRows}},{key:\"shouldEmitRows\",get:function(){return this.parsedRowCount>this.parserOptions.skipRows}},{key:\"shouldSkipLine\",get:function(){return this.parsedLineCount<=this.parserOptions.skipLines}}])&&o(n.prototype,l),p&&o(n,p),m}(l.Transform);r.default=p}).call(this,e(\"timers\").setImmediate)},{\"./parser\":320,\"./transforms\":323,stream:456,string_decoder:470,timers:471}],309:[function(e,t,r){var n=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r,\"__esModule\",{value:!0});var o=n(e(\"lodash.escaperegexp\")),i=n(e(\"lodash.isnil\"));r.ParserOptions=function e(t){var r;if(function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.objectMode=!0,this.delimiter=\",\",this.ignoreEmpty=!1,this.quote='\"',this.escape=null,this.escapeChar=this.quote,this.comment=null,this.supportsComments=!1,this.ltrim=!1,this.rtrim=!1,this.trim=!1,this.headers=null,this.renameHeaders=!1,this.strictColumnHandling=!1,this.discardUnmappedColumns=!1,this.carriageReturn=\"\\r\",this.encoding=\"utf8\",this.limitRows=!1,this.maxRows=0,this.skipLines=0,this.skipRows=0,Object.assign(this,t||{}),this.delimiter.length>1)throw new Error(\"delimiter option must be one character long\");this.escapedDelimiter=o.default(this.delimiter),this.escapeChar=null!=(r=this.escape)?r:this.quote,this.supportsComments=!i.default(this.comment),this.NEXT_TOKEN_REGEXP=new RegExp(\"([^\\\\s]|\\\\r\\\\n|\\\\n|\\\\r|\".concat(this.escapedDelimiter,\")\")),this.maxRows>0&&(this.limitRows=!0)}},{\"lodash.escaperegexp\":380,\"lodash.isnil\":385}],310:[function(e,t,r){function n(e){for(var t in e)r.hasOwnProperty(t)||(r[t]=e[t])}var o=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)Object.hasOwnProperty.call(e,r)&&(t[r]=e[r]);return t.default=e,t},i=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(r,\"__esModule\",{value:!0});var a=o(e(\"fs\")),s=e(\"stream\"),u=e(\"./ParserOptions\"),c=i(e(\"./CsvParserStream\")),f=e(\"./CsvParserStream\");r.CsvParserStream=f.default,n(e(\"./types\")),n(e(\"./ParserOptions\")),n(e(\"./parser\")),n(e(\"./transforms\")),r.parse=function(e){return new c.default(new u.ParserOptions(e))},r.parseStream=function(e,t){return e.pipe(new c.default(new u.ParserOptions(t)))},r.parseFile=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return a.createReadStream(e).pipe(new c.default(new u.ParserOptions(t)))},r.parseString=function(e,t){var r=new s.Readable;return r.push(e),r.push(null),r.pipe(new c.default(new u.ParserOptions(t)))}},{\"./CsvParserStream\":308,\"./ParserOptions\":309,\"./parser\":320,\"./transforms\":323,\"./types\":324,fs:186,stream:456}],311:[function(e,t,r){function n(e,t){for(var r=0;rthis.cursor}},{key:\"nextNonSpaceToken\",get:function(){var e=this.lineFromCursor,t=this.parserOptions.NEXT_TOKEN_REGEXP;if(-1===e.search(t))return null;var r=e.match(t);if(null==r)return null;var n=r[1],i=this.cursor+(r.index||0);return new o.Token({token:n,startCursor:i,endCursor:i+n.length-1})}},{key:\"nextCharacterToken\",get:function(){var e=this.cursor;return this.lineLength<=e?null:new o.Token({token:this.line[e],startCursor:e,endCursor:e})}},{key:\"lineFromCursor\",get:function(){return this.line.substr(this.cursor)}}])&&n(t.prototype,r),a&&n(t,a),e}();r.Scanner=a},{\"./Token\":314}],314:[function(e,t,r){function n(e,t){for(var r=0;rthis.headersLength){if(!t.strictColumnHandling)throw new Error(\"Unexpected Error: column header mismatch expected: \".concat(this.headersLength,\" columns got: \").concat(e.length));return{row:e,isValid:!1,reason:\"Column header mismatch expected: \".concat(this.headersLength,\" columns got: \").concat(e.length)}}return t.strictColumnHandling&&e.length1}));throw new Error(\"Duplicate headers found \".concat(JSON.stringify(o)))}this.headers=e,this.receivedHeaders=!0,this.headersLength=(null===(t=this.headers)||void 0===t?void 0:t.length)||0}}])&&n(t.prototype,r),o&&n(t,o),e}();r.default=c},{\"lodash.groupby\":381,\"lodash.isfunction\":384,\"lodash.isundefined\":386,\"lodash.uniq\":387}],322:[function(e,t,r){function n(e,t){for(var r=0;r=this._blockSize;){for(var i=this._blockOffset;i0;++a)this._length[a]+=s,(s=this._length[a]/4294967296|0)>0&&(this._length[a]-=4294967296*s);return this},i.prototype._update=function(){throw new Error(\"_update is not implemented\")},i.prototype.digest=function(e){if(this._finalized)throw new Error(\"Digest already called\");this._finalized=!0;var t=this._digest();void 0!==e&&(t=t.toString(e)),this._block.fill(0),this._blockOffset=0;for(var r=0;r<4;++r)this._length[r]=0;return t},i.prototype._digest=function(){throw new Error(\"_digest is not implemented\")},t.exports=i},{inherits:341,\"safe-buffer\":445,stream:456}],326:[function(e,t,r){var n=r;n.utils=e(\"./hash/utils\"),n.common=e(\"./hash/common\"),n.sha=e(\"./hash/sha\"),n.ripemd=e(\"./hash/ripemd\"),n.hmac=e(\"./hash/hmac\"),n.sha1=n.sha.sha1,n.sha256=n.sha.sha256,n.sha224=n.sha.sha224,n.sha384=n.sha.sha384,n.sha512=n.sha.sha512,n.ripemd160=n.ripemd.ripemd160},{\"./hash/common\":327,\"./hash/hmac\":328,\"./hash/ripemd\":329,\"./hash/sha\":330,\"./hash/utils\":337}],327:[function(e,t,r){var n=e(\"./utils\"),o=e(\"minimalistic-assert\");function i(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian=\"big\",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}r.BlockHash=i,i.prototype.update=function(e,t){if(e=n.toArray(e,t),this.pending?this.pending=this.pending.concat(e):this.pending=e,this.pendingTotal+=e.length,this.pending.length>=this._delta8){var r=(e=this.pending).length%this._delta8;this.pending=e.slice(e.length-r,e.length),0===this.pending.length&&(this.pending=null),e=n.join32(e,0,e.length-r,this.endian);for(var o=0;o>>24&255,n[o++]=e>>>16&255,n[o++]=e>>>8&255,n[o++]=255&e}else for(n[o++]=255&e,n[o++]=e>>>8&255,n[o++]=e>>>16&255,n[o++]=e>>>24&255,n[o++]=0,n[o++]=0,n[o++]=0,n[o++]=0,i=8;ithis.blockSize&&(e=(new this.Hash).update(e).digest()),o(e.length<=this.blockSize);for(var t=e.length;t>>3},r.g1_256=function(e){return n(e,17)^n(e,19)^e>>>10}},{\"../utils\":337}],337:[function(e,t,r){var n=e(\"minimalistic-assert\"),o=e(\"inherits\");function i(e,t){return 55296==(64512&e.charCodeAt(t))&&(!(t<0||t+1>=e.length)&&56320==(64512&e.charCodeAt(t+1)))}function a(e){return(e>>>24|e>>>8&65280|e<<8&16711680|(255&e)<<24)>>>0}function s(e){return 1===e.length?\"0\"+e:e}function u(e){return 7===e.length?\"0\"+e:6===e.length?\"00\"+e:5===e.length?\"000\"+e:4===e.length?\"0000\"+e:3===e.length?\"00000\"+e:2===e.length?\"000000\"+e:1===e.length?\"0000000\"+e:e}r.inherits=o,r.toArray=function(e,t){if(Array.isArray(e))return e.slice();if(!e)return[];var r=[];if(\"string\"==typeof e)if(t){if(\"hex\"===t)for((e=e.replace(/[^a-z0-9]+/gi,\"\")).length%2!=0&&(e=\"0\"+e),o=0;o>6|192,r[n++]=63&a|128):i(e,o)?(a=65536+((1023&a)<<10)+(1023&e.charCodeAt(++o)),r[n++]=a>>18|240,r[n++]=a>>12&63|128,r[n++]=a>>6&63|128,r[n++]=63&a|128):(r[n++]=a>>12|224,r[n++]=a>>6&63|128,r[n++]=63&a|128)}else for(o=0;o>>0}return a},r.split32=function(e,t){for(var r=new Array(4*e.length),n=0,o=0;n>>24,r[o+1]=i>>>16&255,r[o+2]=i>>>8&255,r[o+3]=255&i):(r[o+3]=i>>>24,r[o+2]=i>>>16&255,r[o+1]=i>>>8&255,r[o]=255&i)}return r},r.rotr32=function(e,t){return e>>>t|e<<32-t},r.rotl32=function(e,t){return e<>>32-t},r.sum32=function(e,t){return e+t>>>0},r.sum32_3=function(e,t,r){return e+t+r>>>0},r.sum32_4=function(e,t,r,n){return e+t+r+n>>>0},r.sum32_5=function(e,t,r,n,o){return e+t+r+n+o>>>0},r.sum64=function(e,t,r,n){var o=e[t],i=n+e[t+1]>>>0,a=(i>>0,e[t+1]=i},r.sum64_hi=function(e,t,r,n){return(t+n>>>0>>0},r.sum64_lo=function(e,t,r,n){return t+n>>>0},r.sum64_4_hi=function(e,t,r,n,o,i,a,s){var u=0,c=t;return u+=(c=c+n>>>0)>>0)>>0)>>0},r.sum64_4_lo=function(e,t,r,n,o,i,a,s){return t+n+i+s>>>0},r.sum64_5_hi=function(e,t,r,n,o,i,a,s,u,c){var f=0,l=t;return f+=(l=l+n>>>0)>>0)>>0)>>0)>>0},r.sum64_5_lo=function(e,t,r,n,o,i,a,s,u,c){return t+n+i+s+c>>>0},r.rotr64_hi=function(e,t,r){return(t<<32-r|e>>>r)>>>0},r.rotr64_lo=function(e,t,r){return(e<<32-r|t>>>r)>>>0},r.shr64_hi=function(e,t,r){return e>>>r},r.shr64_lo=function(e,t,r){return(e<<32-r|t>>>r)>>>0}},{inherits:341,\"minimalistic-assert\":390}],338:[function(e,t,r){var n=e(\"hash.js\"),o=e(\"minimalistic-crypto-utils\"),i=e(\"minimalistic-assert\");function a(e){if(!(this instanceof a))return new a(e);this.hash=e.hash,this.predResist=!!e.predResist,this.outLen=this.hash.outSize,this.minEntropy=e.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var t=o.toArray(e.entropy,e.entropyEnc||\"hex\"),r=o.toArray(e.nonce,e.nonceEnc||\"hex\"),n=o.toArray(e.pers,e.persEnc||\"hex\");i(t.length>=this.minEntropy/8,\"Not enough entropy. Minimum is: \"+this.minEntropy+\" bits\"),this._init(t,r,n)}t.exports=a,a.prototype._init=function(e,t,r){var n=e.concat(t).concat(r);this.K=new Array(this.outLen/8),this.V=new Array(this.outLen/8);for(var o=0;o=this.minEntropy/8,\"Not enough entropy. Minimum is: \"+this.minEntropy+\" bits\"),this._update(e.concat(r||[])),this._reseed=1},a.prototype.generate=function(e,t,r,n){if(this._reseed>this.reseedInterval)throw new Error(\"Reseed is required\");\"string\"!=typeof t&&(n=r,r=t,t=null),r&&(r=o.toArray(r,n||\"hex\"),this._update(r));for(var i=[];i.length>1,f=-7,l=r?o-1:0,h=r?-1:1,d=e[t+l];for(l+=h,i=d&(1<<-f)-1,d>>=-f,f+=s;f>0;i=256*i+e[t+l],l+=h,f-=8);for(a=i&(1<<-f)-1,i>>=-f,f+=n;f>0;a=256*a+e[t+l],l+=h,f-=8);if(0===i)i=1-c;else{if(i===u)return a?NaN:1/0*(d?-1:1);a+=Math.pow(2,n),i-=c}return(d?-1:1)*a*Math.pow(2,i-n)},r.write=function(e,t,r,n,o,i){var a,s,u,c=8*i-o-1,f=(1<>1,h=23===o?Math.pow(2,-24)-Math.pow(2,-77):0,d=n?0:i-1,p=n?1:-1,y=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,a=f):(a=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-a))<1&&(a--,u*=2),(t+=a+l>=1?h/u:h*Math.pow(2,1-l))*u>=2&&(a++,u/=2),a+l>=f?(s=0,a=f):a+l>=1?(s=(t*u-1)*Math.pow(2,o),a+=l):(s=t*Math.pow(2,l-1)*Math.pow(2,o),a=0));o>=8;e[r+d]=255&s,d+=p,s/=256,o-=8);for(a=a<0;e[r+d]=255&a,d+=p,a/=256,c-=8);e[r+d-p]|=128*y}},{}],340:[function(e,t,r){(function(e){var r,n,o=e.MutationObserver||e.WebKitMutationObserver;if(o){var i=0,a=new o(f),s=e.document.createTextNode(\"\");a.observe(s,{characterData:!0}),r=function(){s.data=i=++i%2}}else if(e.setImmediate||void 0===e.MessageChannel)r=\"document\"in e&&\"onreadystatechange\"in e.document.createElement(\"script\")?function(){var t=e.document.createElement(\"script\");t.onreadystatechange=function(){f(),t.onreadystatechange=null,t.parentNode.removeChild(t),t=null},e.document.documentElement.appendChild(t)}:function(){setTimeout(f,0)};else{var u=new e.MessageChannel;u.port1.onmessage=f,r=function(){u.port2.postMessage(0)}}var c=[];function f(){var e,t;n=!0;for(var r=c.length;r;){for(t=c,c=[],e=-1;++e\n * @license MIT\n */\nt.exports=function(e){return null!=e&&(n(e)||function(e){return\"function\"==typeof e.readFloatLE&&\"function\"==typeof e.slice&&n(e.slice(0,0))}(e)||!!e._isBuffer)}},{}],343:[function(e,t,r){var n={}.toString;t.exports=Array.isArray||function(e){return\"[object Array]\"==n.call(e)}},{}],344:[function(e,t,r){var n=e(\"./utils\"),o=e(\"./support\"),i=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";r.encode=function(e){for(var t,r,o,a,s,u,c,f=[],l=0,h=e.length,d=h,p=\"string\"!==n.getTypeOf(e);l>2,s=(3&t)<<4|r>>4,u=d>1?(15&r)<<2|o>>6:64,c=d>2?63&o:64,f.push(i.charAt(a)+i.charAt(s)+i.charAt(u)+i.charAt(c));return f.join(\"\")},r.decode=function(e){var t,r,n,a,s,u,c=0,f=0;if(\"data:\"===e.substr(0,\"data:\".length))throw new Error(\"Invalid base64 input, it looks like a data url.\");var l,h=3*(e=e.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\")).length/4;if(e.charAt(e.length-1)===i.charAt(64)&&h--,e.charAt(e.length-2)===i.charAt(64)&&h--,h%1!=0)throw new Error(\"Invalid base64 input, bad content length.\");for(l=o.uint8array?new Uint8Array(0|h):new Array(0|h);c>4,r=(15&a)<<4|(s=i.indexOf(e.charAt(c++)))>>2,n=(3&s)<<6|(u=i.indexOf(e.charAt(c++))),l[f++]=t,64!==s&&(l[f++]=r),64!==u&&(l[f++]=n);return l}},{\"./support\":373,\"./utils\":375}],345:[function(e,t,r){var n=e(\"./external\"),o=e(\"./stream/DataWorker\"),i=e(\"./stream/DataLengthProbe\"),a=e(\"./stream/Crc32Probe\");i=e(\"./stream/DataLengthProbe\");function s(e,t,r,n,o){this.compressedSize=e,this.uncompressedSize=t,this.crc32=r,this.compression=n,this.compressedContent=o}s.prototype={getContentWorker:function(){var e=new o(n.Promise.resolve(this.compressedContent)).pipe(this.compression.uncompressWorker()).pipe(new i(\"data_length\")),t=this;return e.on(\"end\",(function(){if(this.streamInfo.data_length!==t.uncompressedSize)throw new Error(\"Bug : uncompressed data size mismatch\")})),e},getCompressedWorker:function(){return new o(n.Promise.resolve(this.compressedContent)).withStreamInfo(\"compressedSize\",this.compressedSize).withStreamInfo(\"uncompressedSize\",this.uncompressedSize).withStreamInfo(\"crc32\",this.crc32).withStreamInfo(\"compression\",this.compression)}},s.createWorkerFrom=function(e,t,r){return e.pipe(new a).pipe(new i(\"uncompressedSize\")).pipe(t.compressWorker(r)).pipe(new i(\"compressedSize\")).withStreamInfo(\"compression\",t)},t.exports=s},{\"./external\":349,\"./stream/Crc32Probe\":368,\"./stream/DataLengthProbe\":369,\"./stream/DataWorker\":370}],346:[function(e,t,r){var n=e(\"./stream/GenericWorker\");r.STORE={magic:\"\\0\\0\",compressWorker:function(e){return new n(\"STORE compression\")},uncompressWorker:function(){return new n(\"STORE decompression\")}},r.DEFLATE=e(\"./flate\")},{\"./flate\":350,\"./stream/GenericWorker\":371}],347:[function(e,t,r){var n=e(\"./utils\");var o=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t){return void 0!==e&&e.length?\"string\"!==n.getTypeOf(e)?function(e,t,r,n){var i=o,a=n+r;e^=-1;for(var s=n;s>>8^i[255&(e^t[s])];return-1^e}(0|t,e,e.length,0):function(e,t,r,n){var i=o,a=n+r;e^=-1;for(var s=n;s>>8^i[255&(e^t.charCodeAt(s))];return-1^e}(0|t,e,e.length,0):0}},{\"./utils\":375}],348:[function(e,t,r){r.base64=!1,r.binary=!1,r.dir=!1,r.createFolders=!0,r.date=null,r.compression=null,r.compressionOptions=null,r.comment=null,r.unixPermissions=null,r.dosPermissions=null},{}],349:[function(e,t,r){var n=null;n=\"undefined\"!=typeof Promise?Promise:e(\"lie\"),t.exports={Promise:n}},{lie:379}],350:[function(e,t,r){var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Uint32Array,o=e(\"pako\"),i=e(\"./utils\"),a=e(\"./stream/GenericWorker\"),s=n?\"uint8array\":\"array\";function u(e,t){a.call(this,\"FlateWorker/\"+e),this._pako=null,this._pakoAction=e,this._pakoOptions=t,this.meta={}}r.magic=\"\\b\\0\",i.inherits(u,a),u.prototype.processChunk=function(e){this.meta=e.meta,null===this._pako&&this._createPako(),this._pako.push(i.transformTo(s,e.data),!1)},u.prototype.flush=function(){a.prototype.flush.call(this),null===this._pako&&this._createPako(),this._pako.push([],!0)},u.prototype.cleanUp=function(){a.prototype.cleanUp.call(this),this._pako=null},u.prototype._createPako=function(){this._pako=new o[this._pakoAction]({raw:!0,level:this._pakoOptions.level||-1});var e=this;this._pako.onData=function(t){e.push({data:t,meta:e.meta})}},r.compressWorker=function(e){return new u(\"Deflate\",e)},r.uncompressWorker=function(){return new u(\"Inflate\",{})}},{\"./stream/GenericWorker\":371,\"./utils\":375,pako:392}],351:[function(e,t,r){var n=e(\"../utils\"),o=e(\"../stream/GenericWorker\"),i=e(\"../utf8\"),a=e(\"../crc32\"),s=e(\"../signature\"),u=function(e,t){var r,n=\"\";for(r=0;r>>=8;return n},c=function(e,t,r,o,c,f){var l,h,d=e.file,p=e.compression,y=f!==i.utf8encode,m=n.transformTo(\"string\",f(d.name)),b=n.transformTo(\"string\",i.utf8encode(d.name)),v=d.comment,g=n.transformTo(\"string\",f(v)),w=n.transformTo(\"string\",i.utf8encode(v)),_=b.length!==d.name.length,k=w.length!==v.length,x=\"\",S=\"\",O=\"\",E=d.dir,R=d.date,j={crc32:0,compressedSize:0,uncompressedSize:0};t&&!r||(j.crc32=e.crc32,j.compressedSize=e.compressedSize,j.uncompressedSize=e.uncompressedSize);var T=0;t&&(T|=8),y||!_&&!k||(T|=2048);var C,P,A,M=0,I=0;E&&(M|=16),\"UNIX\"===c?(I=798,M|=(C=d.unixPermissions,P=E,A=C,C||(A=P?16893:33204),(65535&A)<<16)):(I=20,M|=63&(d.dosPermissions||0)),l=R.getUTCHours(),l<<=6,l|=R.getUTCMinutes(),l<<=5,l|=R.getUTCSeconds()/2,h=R.getUTCFullYear()-1980,h<<=4,h|=R.getUTCMonth()+1,h<<=5,h|=R.getUTCDate(),_&&(S=u(1,1)+u(a(m),4)+b,x+=\"up\"+u(S.length,2)+S),k&&(O=u(1,1)+u(a(g),4)+w,x+=\"uc\"+u(O.length,2)+O);var N=\"\";return N+=\"\\n\\0\",N+=u(T,2),N+=p.magic,N+=u(l,2),N+=u(h,2),N+=u(j.crc32,4),N+=u(j.compressedSize,4),N+=u(j.uncompressedSize,4),N+=u(m.length,2),N+=u(x.length,2),{fileRecord:s.LOCAL_FILE_HEADER+N+m+x,dirRecord:s.CENTRAL_FILE_HEADER+u(I,2)+N+u(g.length,2)+\"\\0\\0\\0\\0\"+u(M,4)+u(o,4)+m+x+g}},f=function(e){return s.DATA_DESCRIPTOR+u(e.crc32,4)+u(e.compressedSize,4)+u(e.uncompressedSize,4)};function l(e,t,r,n){o.call(this,\"ZipFileWorker\"),this.bytesWritten=0,this.zipComment=t,this.zipPlatform=r,this.encodeFileName=n,this.streamFiles=e,this.accumulate=!1,this.contentBuffer=[],this.dirRecords=[],this.currentSourceOffset=0,this.entriesCount=0,this.currentFile=null,this._sources=[]}n.inherits(l,o),l.prototype.push=function(e){var t=e.meta.percent||0,r=this.entriesCount,n=this._sources.length;this.accumulate?this.contentBuffer.push(e):(this.bytesWritten+=e.data.length,o.prototype.push.call(this,{data:e.data,meta:{currentFile:this.currentFile,percent:r?(t+100*(r-n-1))/r:100}}))},l.prototype.openedSource=function(e){this.currentSourceOffset=this.bytesWritten,this.currentFile=e.file.name;var t=this.streamFiles&&!e.file.dir;if(t){var r=c(e,t,!1,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);this.push({data:r.fileRecord,meta:{percent:0}})}else this.accumulate=!0},l.prototype.closedSource=function(e){this.accumulate=!1;var t=this.streamFiles&&!e.file.dir,r=c(e,t,!0,this.currentSourceOffset,this.zipPlatform,this.encodeFileName);if(this.dirRecords.push(r.dirRecord),t)this.push({data:f(e),meta:{percent:100}});else for(this.push({data:r.fileRecord,meta:{percent:0}});this.contentBuffer.length;)this.push(this.contentBuffer.shift());this.currentFile=null},l.prototype.flush=function(){for(var e=this.bytesWritten,t=0;t0?e.substring(0,t):\"\"},y=function(e){return\"/\"!==e.slice(-1)&&(e+=\"/\"),e},m=function(e,t){return t=void 0!==t?t:s.createFolders,e=y(e),this.files[e]||d.call(this,e,null,{dir:!0,createFolders:t}),this.files[e]};function b(e){return\"[object RegExp]\"===Object.prototype.toString.call(e)}var v={load:function(){throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\")},forEach:function(e){var t,r,n;for(t in this.files)this.files.hasOwnProperty(t)&&(n=this.files[t],(r=t.slice(this.root.length,t.length))&&t.slice(0,this.root.length)===this.root&&e(r,n))},filter:function(e){var t=[];return this.forEach((function(r,n){e(r,n)&&t.push(n)})),t},file:function(e,t,r){if(1===arguments.length){if(b(e)){var n=e;return this.filter((function(e,t){return!t.dir&&n.test(e)}))}var o=this.files[this.root+e];return o&&!o.dir?o:null}return e=this.root+e,d.call(this,e,t,r),this},folder:function(e){if(!e)return this;if(b(e))return this.filter((function(t,r){return r.dir&&e.test(t)}));var t=this.root+e,r=m.call(this,t),n=this.clone();return n.root=r.name,n},remove:function(e){e=this.root+e;var t=this.files[e];if(t||(\"/\"!==e.slice(-1)&&(e+=\"/\"),t=this.files[e]),t&&!t.dir)delete this.files[e];else for(var r=this.filter((function(t,r){return r.name.slice(0,e.length)===e})),n=0;n=0;--i)if(this.data[i]===t&&this.data[i+1]===r&&this.data[i+2]===n&&this.data[i+3]===o)return i-this.zero;return-1},o.prototype.readAndCheckSignature=function(e){var t=e.charCodeAt(0),r=e.charCodeAt(1),n=e.charCodeAt(2),o=e.charCodeAt(3),i=this.readData(4);return t===i[0]&&r===i[1]&&n===i[2]&&o===i[3]},o.prototype.readData=function(e){if(this.checkOffset(e),0===e)return[];var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=o},{\"../utils\":375,\"./DataReader\":361}],361:[function(e,t,r){var n=e(\"../utils\");function o(e){this.data=e,this.length=e.length,this.index=0,this.zero=0}o.prototype={checkOffset:function(e){this.checkIndex(this.index+e)},checkIndex:function(e){if(this.length=this.index;t--)r=(r<<8)+this.byteAt(t);return this.index+=e,r},readString:function(e){return n.transformTo(\"string\",this.readData(e))},readData:function(e){},lastIndexOfSignature:function(e){},readAndCheckSignature:function(e){},readDate:function(){var e=this.readInt(4);return new Date(Date.UTC(1980+(e>>25&127),(e>>21&15)-1,e>>16&31,e>>11&31,e>>5&63,(31&e)<<1))}},t.exports=o},{\"../utils\":375}],362:[function(e,t,r){var n=e(\"./Uint8ArrayReader\");function o(e){n.call(this,e)}e(\"../utils\").inherits(o,n),o.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=o},{\"../utils\":375,\"./Uint8ArrayReader\":364}],363:[function(e,t,r){var n=e(\"./DataReader\");function o(e){n.call(this,e)}e(\"../utils\").inherits(o,n),o.prototype.byteAt=function(e){return this.data.charCodeAt(this.zero+e)},o.prototype.lastIndexOfSignature=function(e){return this.data.lastIndexOf(e)-this.zero},o.prototype.readAndCheckSignature=function(e){return e===this.readData(4)},o.prototype.readData=function(e){this.checkOffset(e);var t=this.data.slice(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=o},{\"../utils\":375,\"./DataReader\":361}],364:[function(e,t,r){var n=e(\"./ArrayReader\");function o(e){n.call(this,e)}e(\"../utils\").inherits(o,n),o.prototype.readData=function(e){if(this.checkOffset(e),0===e)return new Uint8Array(0);var t=this.data.subarray(this.zero+this.index,this.zero+this.index+e);return this.index+=e,t},t.exports=o},{\"../utils\":375,\"./ArrayReader\":360}],365:[function(e,t,r){var n=e(\"../utils\"),o=e(\"../support\"),i=e(\"./ArrayReader\"),a=e(\"./StringReader\"),s=e(\"./NodeBufferReader\"),u=e(\"./Uint8ArrayReader\");t.exports=function(e){var t=n.getTypeOf(e);return n.checkSupport(t),\"string\"!==t||o.uint8array?\"nodebuffer\"===t?new s(e):o.uint8array?new u(n.transformTo(\"uint8array\",e)):new i(n.transformTo(\"array\",e)):new a(e)}},{\"../support\":373,\"../utils\":375,\"./ArrayReader\":360,\"./NodeBufferReader\":362,\"./StringReader\":363,\"./Uint8ArrayReader\":364}],366:[function(e,t,r){r.LOCAL_FILE_HEADER=\"PK\\x03\\x04\",r.CENTRAL_FILE_HEADER=\"PK\\x01\\x02\",r.CENTRAL_DIRECTORY_END=\"PK\\x05\\x06\",r.ZIP64_CENTRAL_DIRECTORY_LOCATOR=\"PK\\x06\\x07\",r.ZIP64_CENTRAL_DIRECTORY_END=\"PK\\x06\\x06\",r.DATA_DESCRIPTOR=\"PK\\x07\\b\"},{}],367:[function(e,t,r){var n=e(\"./GenericWorker\"),o=e(\"../utils\");function i(e){n.call(this,\"ConvertWorker to \"+e),this.destType=e}o.inherits(i,n),i.prototype.processChunk=function(e){this.push({data:o.transformTo(this.destType,e.data),meta:e.meta})},t.exports=i},{\"../utils\":375,\"./GenericWorker\":371}],368:[function(e,t,r){var n=e(\"./GenericWorker\"),o=e(\"../crc32\");function i(){n.call(this,\"Crc32Probe\"),this.withStreamInfo(\"crc32\",0)}e(\"../utils\").inherits(i,n),i.prototype.processChunk=function(e){this.streamInfo.crc32=o(e.data,this.streamInfo.crc32||0),this.push(e)},t.exports=i},{\"../crc32\":347,\"../utils\":375,\"./GenericWorker\":371}],369:[function(e,t,r){var n=e(\"../utils\"),o=e(\"./GenericWorker\");function i(e){o.call(this,\"DataLengthProbe for \"+e),this.propName=e,this.withStreamInfo(e,0)}n.inherits(i,o),i.prototype.processChunk=function(e){if(e){var t=this.streamInfo[this.propName]||0;this.streamInfo[this.propName]=t+e.data.length}o.prototype.processChunk.call(this,e)},t.exports=i},{\"../utils\":375,\"./GenericWorker\":371}],370:[function(e,t,r){var n=e(\"../utils\"),o=e(\"./GenericWorker\");function i(e){o.call(this,\"DataWorker\");var t=this;this.dataIsReady=!1,this.index=0,this.max=0,this.data=null,this.type=\"\",this._tickScheduled=!1,e.then((function(e){t.dataIsReady=!0,t.data=e,t.max=e&&e.length||0,t.type=n.getTypeOf(e),t.isPaused||t._tickAndRepeat()}),(function(e){t.error(e)}))}n.inherits(i,o),i.prototype.cleanUp=function(){o.prototype.cleanUp.call(this),this.data=null},i.prototype.resume=function(){return!!o.prototype.resume.call(this)&&(!this._tickScheduled&&this.dataIsReady&&(this._tickScheduled=!0,n.delay(this._tickAndRepeat,[],this)),!0)},i.prototype._tickAndRepeat=function(){this._tickScheduled=!1,this.isPaused||this.isFinished||(this._tick(),this.isFinished||(n.delay(this._tickAndRepeat,[],this),this._tickScheduled=!0))},i.prototype._tick=function(){if(this.isPaused||this.isFinished)return!1;var e=null,t=Math.min(this.max,this.index+16384);if(this.index>=this.max)return this.end();switch(this.type){case\"string\":e=this.data.substring(this.index,t);break;case\"uint8array\":e=this.data.subarray(this.index,t);break;case\"array\":case\"nodebuffer\":e=this.data.slice(this.index,t)}return this.index=t,this.push({data:e,meta:{percent:this.max?this.index/this.max*100:0}})},t.exports=i},{\"../utils\":375,\"./GenericWorker\":371}],371:[function(e,t,r){function n(e){this.name=e||\"default\",this.streamInfo={},this.generatedError=null,this.extraStreamInfo={},this.isPaused=!0,this.isFinished=!1,this.isLocked=!1,this._listeners={data:[],end:[],error:[]},this.previous=null}n.prototype={push:function(e){this.emit(\"data\",e)},end:function(){if(this.isFinished)return!1;this.flush();try{this.emit(\"end\"),this.cleanUp(),this.isFinished=!0}catch(e){this.emit(\"error\",e)}return!0},error:function(e){return!this.isFinished&&(this.isPaused?this.generatedError=e:(this.isFinished=!0,this.emit(\"error\",e),this.previous&&this.previous.error(e),this.cleanUp()),!0)},on:function(e,t){return this._listeners[e].push(t),this},cleanUp:function(){this.streamInfo=this.generatedError=this.extraStreamInfo=null,this._listeners=[]},emit:function(e,t){if(this._listeners[e])for(var r=0;r \"+e:e}},t.exports=n},{}],372:[function(e,t,r){(function(r){var n=e(\"../utils\"),o=e(\"./ConvertWorker\"),i=e(\"./GenericWorker\"),a=e(\"../base64\"),s=e(\"../support\"),u=e(\"../external\"),c=null;if(s.nodestream)try{c=e(\"../nodejs/NodejsStreamOutputAdapter\")}catch(e){}function f(e,t){return new u.Promise((function(o,i){var s=[],u=e._internalType,c=e._outputType,f=e._mimeType;e.on(\"data\",(function(e,r){s.push(e),t&&t(r)})).on(\"error\",(function(e){s=[],i(e)})).on(\"end\",(function(){try{var e=function(e,t,r){switch(e){case\"blob\":return n.newBlob(n.transformTo(\"arraybuffer\",t),r);case\"base64\":return a.encode(t);default:return n.transformTo(e,t)}}(c,function(e,t){var n,o=0,i=null,a=0;for(n=0;n=252?6:u>=248?5:u>=240?4:u>=224?3:u>=192?2:1;s[254]=s[254]=1;function c(){a.call(this,\"utf-8 decode\"),this.leftOver=null}function f(){a.call(this,\"utf-8 encode\")}r.utf8encode=function(e){return o.nodebuffer?i.newBufferFrom(e,\"utf-8\"):function(e){var t,r,n,i,a,s=e.length,u=0;for(i=0;i>>6,t[a++]=128|63&r):r<65536?(t[a++]=224|r>>>12,t[a++]=128|r>>>6&63,t[a++]=128|63&r):(t[a++]=240|r>>>18,t[a++]=128|r>>>12&63,t[a++]=128|r>>>6&63,t[a++]=128|63&r);return t}(e)},r.utf8decode=function(e){return o.nodebuffer?n.transformTo(\"nodebuffer\",e).toString(\"utf-8\"):function(e){var t,r,o,i,a=e.length,u=new Array(2*a);for(r=0,t=0;t4)u[r++]=65533,t+=i-1;else{for(o&=2===i?31:3===i?15:7;i>1&&t1?u[r++]=65533:o<65536?u[r++]=o:(o-=65536,u[r++]=55296|o>>10&1023,u[r++]=56320|1023&o)}return u.length!==r&&(u.subarray?u=u.subarray(0,r):u.length=r),n.applyFromCharCode(u)}(e=n.transformTo(o.uint8array?\"uint8array\":\"array\",e))},n.inherits(c,a),c.prototype.processChunk=function(e){var t=n.transformTo(o.uint8array?\"uint8array\":\"array\",e.data);if(this.leftOver&&this.leftOver.length){if(o.uint8array){var i=t;(t=new Uint8Array(i.length+this.leftOver.length)).set(this.leftOver,0),t.set(i,this.leftOver.length)}else t=this.leftOver.concat(t);this.leftOver=null}var a=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;r>=0&&128==(192&e[r]);)r--;return r<0||0===r?t:r+s[e[r]]>t?r:t}(t),u=t;a!==t.length&&(o.uint8array?(u=t.subarray(0,a),this.leftOver=t.subarray(a,t.length)):(u=t.slice(0,a),this.leftOver=t.slice(a,t.length))),this.push({data:r.utf8decode(u),meta:e.meta})},c.prototype.flush=function(){this.leftOver&&this.leftOver.length&&(this.push({data:r.utf8decode(this.leftOver),meta:{}}),this.leftOver=null)},r.Utf8DecodeWorker=c,n.inherits(f,a),f.prototype.processChunk=function(e){this.push({data:r.utf8encode(e.data),meta:e.meta})},r.Utf8EncodeWorker=f},{\"./nodejsUtils\":357,\"./stream/GenericWorker\":371,\"./support\":373,\"./utils\":375}],375:[function(e,t,r){var n=e(\"./support\"),o=e(\"./base64\"),i=e(\"./nodejsUtils\"),a=e(\"set-immediate-shim\"),s=e(\"./external\");function u(e){return e}function c(e,t){for(var r=0;r1;)try{return f.stringifyByChunk(e,n,t)}catch(e){t=Math.floor(t/2)}return f.stringifyByChar(e)}function h(e,t){for(var r=0;r1)throw new Error(\"Multi-volumes zip are not supported\")},readLocalFiles:function(){var e,t;for(e=0;e0)this.isSignature(t,i.CENTRAL_FILE_HEADER)||(this.reader.zero=n);else if(n<0)throw new Error(\"Corrupted zip: missing \"+Math.abs(n)+\" bytes.\")},prepareReader:function(e){this.reader=n(e)},load:function(e){this.prepareReader(e),this.readEndOfCentral(),this.readCentralDir(),this.readLocalFiles()}},t.exports=u},{\"./reader/readerFor\":365,\"./signature\":366,\"./support\":373,\"./utf8\":374,\"./utils\":375,\"./zipEntry\":377}],377:[function(e,t,r){var n=e(\"./reader/readerFor\"),o=e(\"./utils\"),i=e(\"./compressedObject\"),a=e(\"./crc32\"),s=e(\"./utf8\"),u=e(\"./compressions\"),c=e(\"./support\");function f(e,t){this.options=e,this.loadOptions=t}f.prototype={isEncrypted:function(){return 1==(1&this.bitFlag)},useUTF8:function(){return 2048==(2048&this.bitFlag)},readLocalPart:function(e){var t,r;if(e.skip(22),this.fileNameLength=e.readInt(2),r=e.readInt(2),this.fileName=e.readData(this.fileNameLength),e.skip(r),-1===this.compressedSize||-1===this.uncompressedSize)throw new Error(\"Bug or corrupted zip : didn't get enough informations from the central directory (compressedSize === -1 || uncompressedSize === -1)\");if(null===(t=function(e){for(var t in u)if(u.hasOwnProperty(t)&&u[t].magic===e)return u[t];return null}(this.compressionMethod)))throw new Error(\"Corrupted zip : compression \"+o.pretty(this.compressionMethod)+\" unknown (inner file : \"+o.transformTo(\"string\",this.fileName)+\")\");this.decompressed=new i(this.compressedSize,this.uncompressedSize,this.crc32,t,e.readData(this.compressedSize))},readCentralPart:function(e){this.versionMadeBy=e.readInt(2),e.skip(2),this.bitFlag=e.readInt(2),this.compressionMethod=e.readString(2),this.date=e.readDate(),this.crc32=e.readInt(4),this.compressedSize=e.readInt(4),this.uncompressedSize=e.readInt(4);var t=e.readInt(2);if(this.extraFieldsLength=e.readInt(2),this.fileCommentLength=e.readInt(2),this.diskNumberStart=e.readInt(2),this.internalFileAttributes=e.readInt(2),this.externalFileAttributes=e.readInt(4),this.localHeaderOffset=e.readInt(4),this.isEncrypted())throw new Error(\"Encrypted zip are not supported\");e.skip(t),this.readExtraFields(e),this.parseZIP64ExtraField(e),this.fileComment=e.readData(this.fileCommentLength)},processAttributes:function(){this.unixPermissions=null,this.dosPermissions=null;var e=this.versionMadeBy>>8;this.dir=!!(16&this.externalFileAttributes),0===e&&(this.dosPermissions=63&this.externalFileAttributes),3===e&&(this.unixPermissions=this.externalFileAttributes>>16&65535),this.dir||\"/\"!==this.fileNameStr.slice(-1)||(this.dir=!0)},parseZIP64ExtraField:function(e){if(this.extraFields[1]){var t=n(this.extraFields[1].value);this.uncompressedSize===o.MAX_VALUE_32BITS&&(this.uncompressedSize=t.readInt(8)),this.compressedSize===o.MAX_VALUE_32BITS&&(this.compressedSize=t.readInt(8)),this.localHeaderOffset===o.MAX_VALUE_32BITS&&(this.localHeaderOffset=t.readInt(8)),this.diskNumberStart===o.MAX_VALUE_32BITS&&(this.diskNumberStart=t.readInt(4))}},readExtraFields:function(e){var t,r,n,o=e.index+this.extraFieldsLength;for(this.extraFields||(this.extraFields={});e.index-1},ae.prototype.set=function(e,t){var r=this.__data__,n=le(r,e);return n<0?r.push([e,t]):r[n][1]=t,this},se.prototype.clear=function(){this.__data__={hash:new ie,map:new($||ae),string:new ie}},se.prototype.delete=function(e){return Oe(this,e).delete(e)},se.prototype.get=function(e){return Oe(this,e).get(e)},se.prototype.has=function(e){return Oe(this,e).has(e)},se.prototype.set=function(e,t){return Oe(this,e).set(e,t),this},ue.prototype.add=ue.prototype.push=function(e){return this.__data__.set(e,\"__lodash_hash_undefined__\"),this},ue.prototype.has=function(e){return this.__data__.has(e)},ce.prototype.clear=function(){this.__data__=new ae},ce.prototype.delete=function(e){return this.__data__.delete(e)},ce.prototype.get=function(e){return this.__data__.get(e)},ce.prototype.has=function(e){return this.__data__.has(e)},ce.prototype.set=function(e,t){var r=this.__data__;if(r instanceof ae){var n=r.__data__;if(!$||n.length<199)return n.push([e,t]),this;r=this.__data__=new se(n)}return r.set(e,t),this};var de,pe,ye=(de=function(e,t){return e&&me(e,t,Ye)},function(e,t){if(null==e)return e;if(!He(e))return de(e,t);for(var r=e.length,n=pe?r:-1,o=Object(e);(pe?n--:++ns))return!1;var c=i.get(e);if(c&&i.get(t))return c==t;var f=-1,l=!0,h=1&o?new ue:void 0;for(i.set(e,t),i.set(t,e);++f-1&&e%1==0&&e-1&&e%1==0&&e<=9007199254740991}function qe(e){var t=_typeof2(e);return!!e&&(\"object\"==t||\"function\"==t)}function $e(e){return!!e&&\"object\"==_typeof2(e)}function Xe(e){return\"symbol\"==_typeof2(e)||$e(e)&&\"[object Symbol]\"==F.call(e)}var Ke=k?function(e){return function(t){return e(t)}}(k):function(e){return $e(e)&&We(e.length)&&!!p[F.call(e)]};function Ye(e){return He(e)?fe(e):ke(e)}function Ze(e){return e}t.exports=Be}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],382:[function(e,t,r){var n=Object.prototype.toString;t.exports=function(e){return!0===e||!1===e||function(e){return!!e&&\"object\"==_typeof2(e)}(e)&&\"[object Boolean]\"==n.call(e)}},{}],383:[function(e,t,r){(function(e){var n=\"[object Arguments]\",o=\"[object Map]\",i=\"[object Object]\",a=\"[object Set]\",s=/^\\[object .+?Constructor\\]$/,u=/^(?:0|[1-9]\\d*)$/,c={};c[\"[object Float32Array]\"]=c[\"[object Float64Array]\"]=c[\"[object Int8Array]\"]=c[\"[object Int16Array]\"]=c[\"[object Int32Array]\"]=c[\"[object Uint8Array]\"]=c[\"[object Uint8ClampedArray]\"]=c[\"[object Uint16Array]\"]=c[\"[object Uint32Array]\"]=!0,c[n]=c[\"[object Array]\"]=c[\"[object ArrayBuffer]\"]=c[\"[object Boolean]\"]=c[\"[object DataView]\"]=c[\"[object Date]\"]=c[\"[object Error]\"]=c[\"[object Function]\"]=c[o]=c[\"[object Number]\"]=c[i]=c[\"[object RegExp]\"]=c[a]=c[\"[object String]\"]=c[\"[object WeakMap]\"]=!1;var f=\"object\"==_typeof2(e)&&e&&e.Object===Object&&e,l=\"object\"==(\"undefined\"==typeof self?\"undefined\":_typeof2(self))&&self&&self.Object===Object&&self,h=f||l||Function(\"return this\")(),d=\"object\"==_typeof2(r)&&r&&!r.nodeType&&r,p=d&&\"object\"==_typeof2(t)&&t&&!t.nodeType&&t,y=p&&p.exports===d,m=y&&f.process,b=function(){try{return m&&m.binding&&m.binding(\"util\")}catch(e){}}(),v=b&&b.isTypedArray;function g(e,t){for(var r=-1,n=null==e?0:e.length;++rs))return!1;var c=i.get(e);if(c&&i.get(t))return c==t;var f=-1,l=!0,h=2&r?new ie:void 0;for(i.set(e,t),i.set(t,e);++f-1},ne.prototype.set=function(e,t){var r=this.__data__,n=ue(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this},oe.prototype.clear=function(){this.size=0,this.__data__={hash:new re,map:new(W||ne),string:new re}},oe.prototype.delete=function(e){var t=me(this,e).delete(e);return this.size-=t?1:0,t},oe.prototype.get=function(e){return me(this,e).get(e)},oe.prototype.has=function(e){return me(this,e).has(e)},oe.prototype.set=function(e,t){var r=me(this,e),n=r.size;return r.set(e,t),this.size+=r.size==n?0:1,this},ie.prototype.add=ie.prototype.push=function(e){return this.__data__.set(e,\"__lodash_hash_undefined__\"),this},ie.prototype.has=function(e){return this.__data__.has(e)},ae.prototype.clear=function(){this.__data__=new ne,this.size=0},ae.prototype.delete=function(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r},ae.prototype.get=function(e){return this.__data__.get(e)},ae.prototype.has=function(e){return this.__data__.has(e)},ae.prototype.set=function(e,t){var r=this.__data__;if(r instanceof ne){var n=r.__data__;if(!W||n.length<199)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new oe(n)}return r.set(e,t),this.size=r.size,this};var ve=z?function(e){return null==e?[]:(e=Object(e),function(e,t){for(var r=-1,n=null==e?0:e.length,o=0,i=[];++r-1&&e%1==0&&e-1&&e%1==0&&e<=9007199254740991}function je(e){var t=_typeof2(e);return null!=e&&(\"object\"==t||\"function\"==t)}function Te(e){return null!=e&&\"object\"==_typeof2(e)}var Ce=v?function(e){return function(t){return e(t)}}(v):function(e){return Te(e)&&Re(e.length)&&!!c[ce(e)]};function Pe(e){return null!=(t=e)&&Re(t.length)&&!Ee(t)?se(e):de(e);var t}t.exports=function(e,t){return le(e,t)}}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],384:[function(e,t,r){(function(e){var r=\"object\"==_typeof2(e)&&e&&e.Object===Object&&e,n=\"object\"==(\"undefined\"==typeof self?\"undefined\":_typeof2(self))&&self&&self.Object===Object&&self,o=r||n||Function(\"return this\")(),i=Object.prototype,a=i.hasOwnProperty,s=i.toString,u=o.Symbol,c=u?u.toStringTag:void 0;function f(e){return null==e?void 0===e?\"[object Undefined]\":\"[object Null]\":c&&c in Object(e)?function(e){var t=a.call(e,c),r=e[c];try{e[c]=void 0;var n=!0}catch(e){}var o=s.call(e);n&&(t?e[c]=r:delete e[c]);return o}(e):function(e){return s.call(e)}(e)}t.exports=function(e){if(!function(e){var t=_typeof2(e);return null!=e&&(\"object\"==t||\"function\"==t)}(e))return!1;var t=f(e);return\"[object Function]\"==t||\"[object GeneratorFunction]\"==t||\"[object AsyncFunction]\"==t||\"[object Proxy]\"==t}}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],385:[function(e,t,r){t.exports=function(e){return null==e}},{}],386:[function(e,t,r){t.exports=function(e){return void 0===e}},{}],387:[function(e,t,r){(function(e){var r=/^\\[object .+?Constructor\\]$/,n=\"object\"==_typeof2(e)&&e&&e.Object===Object&&e,o=\"object\"==(\"undefined\"==typeof self?\"undefined\":_typeof2(self))&&self&&self.Object===Object&&self,i=n||o||Function(\"return this\")();function a(e,t){return!!(e?e.length:0)&&function(e,t,r){if(t!=t)return function(e,t,r,n){var o=e.length,i=r+(n?1:-1);for(;n?i--:++i-1}function s(e,t,r){for(var n=-1,o=e?e.length:0;++n-1},E.prototype.set=function(e,t){var r=this.__data__,n=T(r,e);return n<0?r.push([e,t]):r[n][1]=t,this},R.prototype.clear=function(){this.__data__={hash:new O,map:new(k||E),string:new O}},R.prototype.delete=function(e){return A(this,e).delete(e)},R.prototype.get=function(e){return A(this,e).get(e)},R.prototype.has=function(e){return A(this,e).has(e)},R.prototype.set=function(e,t){return A(this,e).set(e,t),this},j.prototype.add=j.prototype.push=function(e){return this.__data__.set(e,\"__lodash_hash_undefined__\"),this},j.prototype.has=function(e){return this.__data__.has(e)};var P=x&&1/f(new x([,-0]))[1]==1/0?function(e){return new x(e)}:function(){};function A(e,t){var r,n,o=e.__data__;return(\"string\"==(n=_typeof2(r=t))||\"number\"==n||\"symbol\"==n||\"boolean\"==n?\"__proto__\"!==r:null===r)?o[\"string\"==typeof t?\"string\":\"hash\"]:o.map}function M(e,t){var r=function(e,t){return null==e?void 0:e[t]}(e,t);return C(r)?r:void 0}function I(e){var t=_typeof2(e);return!!e&&(\"object\"==t||\"function\"==t)}t.exports=function(e){return e&&e.length?function(e,t,r){var n=-1,o=a,i=e.length,u=!0,l=[],h=l;if(r)u=!1,o=s;else if(i>=200){var d=t?null:P(e);if(d)return f(d);u=!1,o=c,h=new j}else h=t?[]:l;e:for(;++n>>32-t}function c(e,t,r,n,o,i,a){return u(e+(t&r|~t&n)+o+i|0,a)+t|0}function f(e,t,r,n,o,i,a){return u(e+(t&n|r&~n)+o+i|0,a)+t|0}function l(e,t,r,n,o,i,a){return u(e+(t^r^n)+o+i|0,a)+t|0}function h(e,t,r,n,o,i,a){return u(e+(r^(t|~n))+o+i|0,a)+t|0}n(s,o),s.prototype._update=function(){for(var e=a,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);var r=this._a,n=this._b,o=this._c,i=this._d;r=c(r,n,o,i,e[0],3614090360,7),i=c(i,r,n,o,e[1],3905402710,12),o=c(o,i,r,n,e[2],606105819,17),n=c(n,o,i,r,e[3],3250441966,22),r=c(r,n,o,i,e[4],4118548399,7),i=c(i,r,n,o,e[5],1200080426,12),o=c(o,i,r,n,e[6],2821735955,17),n=c(n,o,i,r,e[7],4249261313,22),r=c(r,n,o,i,e[8],1770035416,7),i=c(i,r,n,o,e[9],2336552879,12),o=c(o,i,r,n,e[10],4294925233,17),n=c(n,o,i,r,e[11],2304563134,22),r=c(r,n,o,i,e[12],1804603682,7),i=c(i,r,n,o,e[13],4254626195,12),o=c(o,i,r,n,e[14],2792965006,17),r=f(r,n=c(n,o,i,r,e[15],1236535329,22),o,i,e[1],4129170786,5),i=f(i,r,n,o,e[6],3225465664,9),o=f(o,i,r,n,e[11],643717713,14),n=f(n,o,i,r,e[0],3921069994,20),r=f(r,n,o,i,e[5],3593408605,5),i=f(i,r,n,o,e[10],38016083,9),o=f(o,i,r,n,e[15],3634488961,14),n=f(n,o,i,r,e[4],3889429448,20),r=f(r,n,o,i,e[9],568446438,5),i=f(i,r,n,o,e[14],3275163606,9),o=f(o,i,r,n,e[3],4107603335,14),n=f(n,o,i,r,e[8],1163531501,20),r=f(r,n,o,i,e[13],2850285829,5),i=f(i,r,n,o,e[2],4243563512,9),o=f(o,i,r,n,e[7],1735328473,14),r=l(r,n=f(n,o,i,r,e[12],2368359562,20),o,i,e[5],4294588738,4),i=l(i,r,n,o,e[8],2272392833,11),o=l(o,i,r,n,e[11],1839030562,16),n=l(n,o,i,r,e[14],4259657740,23),r=l(r,n,o,i,e[1],2763975236,4),i=l(i,r,n,o,e[4],1272893353,11),o=l(o,i,r,n,e[7],4139469664,16),n=l(n,o,i,r,e[10],3200236656,23),r=l(r,n,o,i,e[13],681279174,4),i=l(i,r,n,o,e[0],3936430074,11),o=l(o,i,r,n,e[3],3572445317,16),n=l(n,o,i,r,e[6],76029189,23),r=l(r,n,o,i,e[9],3654602809,4),i=l(i,r,n,o,e[12],3873151461,11),o=l(o,i,r,n,e[15],530742520,16),r=h(r,n=l(n,o,i,r,e[2],3299628645,23),o,i,e[0],4096336452,6),i=h(i,r,n,o,e[7],1126891415,10),o=h(o,i,r,n,e[14],2878612391,15),n=h(n,o,i,r,e[5],4237533241,21),r=h(r,n,o,i,e[12],1700485571,6),i=h(i,r,n,o,e[3],2399980690,10),o=h(o,i,r,n,e[10],4293915773,15),n=h(n,o,i,r,e[1],2240044497,21),r=h(r,n,o,i,e[8],1873313359,6),i=h(i,r,n,o,e[15],4264355552,10),o=h(o,i,r,n,e[6],2734768916,15),n=h(n,o,i,r,e[13],1309151649,21),r=h(r,n,o,i,e[4],4149444226,6),i=h(i,r,n,o,e[11],3174756917,10),o=h(o,i,r,n,e[2],718787259,15),n=h(n,o,i,r,e[9],3951481745,21),this._a=this._a+r|0,this._b=this._b+n|0,this._c=this._c+o|0,this._d=this._d+i|0},s.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=i.allocUnsafe(16);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e},t.exports=s},{\"hash-base\":325,inherits:341,\"safe-buffer\":445}],389:[function(e,t,r){var n=e(\"bn.js\"),o=e(\"brorand\");function i(e){this.rand=e||new o.Rand}t.exports=i,i.create=function(e){return new i(e)},i.prototype._randbelow=function(e){var t=e.bitLength(),r=Math.ceil(t/8);do{var o=new n(this.rand.generate(r))}while(o.cmp(e)>=0);return o},i.prototype._randrange=function(e,t){var r=t.sub(e);return e.add(this._randbelow(r))},i.prototype.test=function(e,t,r){var o=e.bitLength(),i=n.mont(e),a=new n(1).toRed(i);t||(t=Math.max(1,o/48|0));for(var s=e.subn(1),u=0;!s.testn(u);u++);for(var c=e.shrn(u),f=s.toRed(i);t>0;t--){var l=this._randrange(new n(2),s);r&&r(l);var h=l.toRed(i).redPow(c);if(0!==h.cmp(a)&&0!==h.cmp(f)){for(var d=1;d0;t--){var f=this._randrange(new n(2),a),l=e.gcd(f);if(0!==l.cmpn(1))return l;var h=f.toRed(o).redPow(u);if(0!==h.cmp(i)&&0!==h.cmp(c)){for(var d=1;d>8,a=255&o;i?r.push(i,a):r.push(a)}return r},n.zero2=o,n.toHex=i,n.encode=function(e,t){return\"hex\"===t?i(e):e}},{}],392:[function(e,t,r){var n={};(0,e(\"./lib/utils/common\").assign)(n,e(\"./lib/deflate\"),e(\"./lib/inflate\"),e(\"./lib/zlib/constants\")),t.exports=n},{\"./lib/deflate\":393,\"./lib/inflate\":394,\"./lib/utils/common\":395,\"./lib/zlib/constants\":398}],393:[function(e,t,r){var n=e(\"./zlib/deflate\"),o=e(\"./utils/common\"),i=e(\"./utils/strings\"),a=e(\"./zlib/messages\"),s=e(\"./zlib/zstream\"),u=Object.prototype.toString;function c(e){if(!(this instanceof c))return new c(e);this.options=o.assign({level:-1,method:8,chunkSize:16384,windowBits:15,memLevel:8,strategy:0,to:\"\"},e||{});var t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new s,this.strm.avail_out=0;var r=n.deflateInit2(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(0!==r)throw new Error(a[r]);if(t.header&&n.deflateSetHeader(this.strm,t.header),t.dictionary){var f;if(f=\"string\"==typeof t.dictionary?i.string2buf(t.dictionary):\"[object ArrayBuffer]\"===u.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,0!==(r=n.deflateSetDictionary(this.strm,f)))throw new Error(a[r]);this._dict_set=!0}}function f(e,t){var r=new c(t);if(r.push(e,!0),r.err)throw r.msg||a[r.err];return r.result}c.prototype.push=function(e,t){var r,a,s=this.strm,c=this.options.chunkSize;if(this.ended)return!1;a=t===~~t?t:!0===t?4:0,\"string\"==typeof e?s.input=i.string2buf(e):\"[object ArrayBuffer]\"===u.call(e)?s.input=new Uint8Array(e):s.input=e,s.next_in=0,s.avail_in=s.input.length;do{if(0===s.avail_out&&(s.output=new o.Buf8(c),s.next_out=0,s.avail_out=c),1!==(r=n.deflate(s,a))&&0!==r)return this.onEnd(r),this.ended=!0,!1;0!==s.avail_out&&(0!==s.avail_in||4!==a&&2!==a)||(\"string\"===this.options.to?this.onData(i.buf2binstring(o.shrinkBuf(s.output,s.next_out))):this.onData(o.shrinkBuf(s.output,s.next_out)))}while((s.avail_in>0||0===s.avail_out)&&1!==r);return 4===a?(r=n.deflateEnd(this.strm),this.onEnd(r),this.ended=!0,0===r):2!==a||(this.onEnd(0),s.avail_out=0,!0)},c.prototype.onData=function(e){this.chunks.push(e)},c.prototype.onEnd=function(e){0===e&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Deflate=c,r.deflate=f,r.deflateRaw=function(e,t){return(t=t||{}).raw=!0,f(e,t)},r.gzip=function(e,t){return(t=t||{}).gzip=!0,f(e,t)}},{\"./utils/common\":395,\"./utils/strings\":396,\"./zlib/deflate\":400,\"./zlib/messages\":405,\"./zlib/zstream\":407}],394:[function(e,t,r){var n=e(\"./zlib/inflate\"),o=e(\"./utils/common\"),i=e(\"./utils/strings\"),a=e(\"./zlib/constants\"),s=e(\"./zlib/messages\"),u=e(\"./zlib/zstream\"),c=e(\"./zlib/gzheader\"),f=Object.prototype.toString;function l(e){if(!(this instanceof l))return new l(e);this.options=o.assign({chunkSize:16384,windowBits:0,to:\"\"},e||{});var t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg=\"\",this.ended=!1,this.chunks=[],this.strm=new u,this.strm.avail_out=0;var r=n.inflateInit2(this.strm,t.windowBits);if(r!==a.Z_OK)throw new Error(s[r]);if(this.header=new c,n.inflateGetHeader(this.strm,this.header),t.dictionary&&(\"string\"==typeof t.dictionary?t.dictionary=i.string2buf(t.dictionary):\"[object ArrayBuffer]\"===f.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(r=n.inflateSetDictionary(this.strm,t.dictionary))!==a.Z_OK))throw new Error(s[r])}function h(e,t){var r=new l(t);if(r.push(e,!0),r.err)throw r.msg||s[r.err];return r.result}l.prototype.push=function(e,t){var r,s,u,c,l,h=this.strm,d=this.options.chunkSize,p=this.options.dictionary,y=!1;if(this.ended)return!1;s=t===~~t?t:!0===t?a.Z_FINISH:a.Z_NO_FLUSH,\"string\"==typeof e?h.input=i.binstring2buf(e):\"[object ArrayBuffer]\"===f.call(e)?h.input=new Uint8Array(e):h.input=e,h.next_in=0,h.avail_in=h.input.length;do{if(0===h.avail_out&&(h.output=new o.Buf8(d),h.next_out=0,h.avail_out=d),(r=n.inflate(h,a.Z_NO_FLUSH))===a.Z_NEED_DICT&&p&&(r=n.inflateSetDictionary(this.strm,p)),r===a.Z_BUF_ERROR&&!0===y&&(r=a.Z_OK,y=!1),r!==a.Z_STREAM_END&&r!==a.Z_OK)return this.onEnd(r),this.ended=!0,!1;h.next_out&&(0!==h.avail_out&&r!==a.Z_STREAM_END&&(0!==h.avail_in||s!==a.Z_FINISH&&s!==a.Z_SYNC_FLUSH)||(\"string\"===this.options.to?(u=i.utf8border(h.output,h.next_out),c=h.next_out-u,l=i.buf2string(h.output,u),h.next_out=c,h.avail_out=d-c,c&&o.arraySet(h.output,h.output,u,c,0),this.onData(l)):this.onData(o.shrinkBuf(h.output,h.next_out)))),0===h.avail_in&&0===h.avail_out&&(y=!0)}while((h.avail_in>0||0===h.avail_out)&&r!==a.Z_STREAM_END);return r===a.Z_STREAM_END&&(s=a.Z_FINISH),s===a.Z_FINISH?(r=n.inflateEnd(this.strm),this.onEnd(r),this.ended=!0,r===a.Z_OK):s!==a.Z_SYNC_FLUSH||(this.onEnd(a.Z_OK),h.avail_out=0,!0)},l.prototype.onData=function(e){this.chunks.push(e)},l.prototype.onEnd=function(e){e===a.Z_OK&&(\"string\"===this.options.to?this.result=this.chunks.join(\"\"):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg},r.Inflate=l,r.inflate=h,r.inflateRaw=function(e,t){return(t=t||{}).raw=!0,h(e,t)},r.ungzip=h},{\"./utils/common\":395,\"./utils/strings\":396,\"./zlib/constants\":398,\"./zlib/gzheader\":401,\"./zlib/inflate\":403,\"./zlib/messages\":405,\"./zlib/zstream\":407}],395:[function(e,t,r){var n=\"undefined\"!=typeof Uint8Array&&\"undefined\"!=typeof Uint16Array&&\"undefined\"!=typeof Int32Array;function o(e,t){return Object.prototype.hasOwnProperty.call(e,t)}r.assign=function(e){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var r=t.shift();if(r){if(\"object\"!==_typeof2(r))throw new TypeError(r+\"must be non-object\");for(var n in r)o(r,n)&&(e[n]=r[n])}}return e},r.shrinkBuf=function(e,t){return e.length===t?e:e.subarray?e.subarray(0,t):(e.length=t,e)};var i={arraySet:function(e,t,r,n,o){if(t.subarray&&e.subarray)e.set(t.subarray(r,r+n),o);else for(var i=0;i=252?6:s>=248?5:s>=240?4:s>=224?3:s>=192?2:1;function u(e,t){if(t<65534&&(e.subarray&&i||!e.subarray&&o))return String.fromCharCode.apply(null,n.shrinkBuf(e,t));for(var r=\"\",a=0;a>>6,t[a++]=128|63&r):r<65536?(t[a++]=224|r>>>12,t[a++]=128|r>>>6&63,t[a++]=128|63&r):(t[a++]=240|r>>>18,t[a++]=128|r>>>12&63,t[a++]=128|r>>>6&63,t[a++]=128|63&r);return t},r.buf2binstring=function(e){return u(e,e.length)},r.binstring2buf=function(e){for(var t=new n.Buf8(e.length),r=0,o=t.length;r4)c[n++]=65533,r+=i-1;else{for(o&=2===i?31:3===i?15:7;i>1&&r1?c[n++]=65533:o<65536?c[n++]=o:(o-=65536,c[n++]=55296|o>>10&1023,c[n++]=56320|1023&o)}return u(c,n)},r.utf8border=function(e,t){var r;for((t=t||e.length)>e.length&&(t=e.length),r=t-1;r>=0&&128==(192&e[r]);)r--;return r<0||0===r?t:r+a[e[r]]>t?r:t}},{\"./common\":395}],397:[function(e,t,r){t.exports=function(e,t,r,n){for(var o=65535&e|0,i=e>>>16&65535|0,a=0;0!==r;){r-=a=r>2e3?2e3:r;do{i=i+(o=o+t[n++]|0)|0}while(--a);o%=65521,i%=65521}return o|i<<16|0}},{}],398:[function(e,t,r){t.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],399:[function(e,t,r){var n=function(){for(var e,t=[],r=0;r<256;r++){e=r;for(var n=0;n<8;n++)e=1&e?3988292384^e>>>1:e>>>1;t[r]=e}return t}();t.exports=function(e,t,r,o){var i=n,a=o+r;e^=-1;for(var s=o;s>>8^i[255&(e^t[s])];return-1^e}},{}],400:[function(e,t,r){var n,o=e(\"../utils/common\"),i=e(\"./trees\"),a=e(\"./adler32\"),s=e(\"./crc32\"),u=e(\"./messages\");function c(e,t){return e.msg=u[t],t}function f(e){return(e<<1)-(e>4?9:0)}function l(e){for(var t=e.length;--t>=0;)e[t]=0}function h(e){var t=e.state,r=t.pending;r>e.avail_out&&(r=e.avail_out),0!==r&&(o.arraySet(e.output,t.pending_buf,t.pending_out,r,e.next_out),e.next_out+=r,t.pending_out+=r,e.total_out+=r,e.avail_out-=r,t.pending-=r,0===t.pending&&(t.pending_out=0))}function d(e,t){i._tr_flush_block(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,h(e.strm)}function p(e,t){e.pending_buf[e.pending++]=t}function y(e,t){e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t}function m(e,t){var r,n,o=e.max_chain_length,i=e.strstart,a=e.prev_length,s=e.nice_match,u=e.strstart>e.w_size-262?e.strstart-(e.w_size-262):0,c=e.window,f=e.w_mask,l=e.prev,h=e.strstart+258,d=c[i+a-1],p=c[i+a];e.prev_length>=e.good_match&&(o>>=2),s>e.lookahead&&(s=e.lookahead);do{if(c[(r=t)+a]===p&&c[r+a-1]===d&&c[r]===c[i]&&c[++r]===c[i+1]){i+=2,r++;do{}while(c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&c[++i]===c[++r]&&ia){if(e.match_start=t,a=n,n>=s)break;d=c[i+a-1],p=c[i+a]}}}while((t=l[t&f])>u&&0!=--o);return a<=e.lookahead?a:e.lookahead}function b(e){var t,r,n,i,u,c,f,l,h,d,p=e.w_size;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=p+(p-262)){o.arraySet(e.window,e.window,p,p,0),e.match_start-=p,e.strstart-=p,e.block_start-=p,t=r=e.hash_size;do{n=e.head[--t],e.head[t]=n>=p?n-p:0}while(--r);t=r=p;do{n=e.prev[--t],e.prev[t]=n>=p?n-p:0}while(--r);i+=p}if(0===e.strm.avail_in)break;if(c=e.strm,f=e.window,l=e.strstart+e.lookahead,h=i,d=void 0,(d=c.avail_in)>h&&(d=h),r=0===d?0:(c.avail_in-=d,o.arraySet(f,c.input,c.next_in,d,l),1===c.state.wrap?c.adler=a(c.adler,f,d,l):2===c.state.wrap&&(c.adler=s(c.adler,f,d,l)),c.next_in+=d,c.total_in+=d,d),e.lookahead+=r,e.lookahead+e.insert>=3)for(u=e.strstart-e.insert,e.ins_h=e.window[u],e.ins_h=(e.ins_h<=3&&(e.ins_h=(e.ins_h<=3)if(n=i._tr_tally(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=(e.ins_h<=3&&(e.ins_h=(e.ins_h<4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){o=e.strstart+e.lookahead-3,n=i._tr_tally(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=o&&(e.ins_h=(e.ins_h<15&&(s=2,n-=16),i<1||i>9||8!==r||n<8||n>15||t<0||t>9||a<0||a>4)return c(e,-2);8===n&&(n=9);var u=new _;return e.state=u,u.strm=e,u.wrap=s,u.gzhead=null,u.w_bits=n,u.w_size=1<e.pending_buf_size-5&&(r=e.pending_buf_size-5);;){if(e.lookahead<=1){if(b(e),0===e.lookahead&&0===t)return 1;if(0===e.lookahead)break}e.strstart+=e.lookahead,e.lookahead=0;var n=e.block_start+r;if((0===e.strstart||e.strstart>=n)&&(e.lookahead=e.strstart-n,e.strstart=n,d(e,!1),0===e.strm.avail_out))return 1;if(e.strstart-e.block_start>=e.w_size-262&&(d(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(d(e,!0),0===e.strm.avail_out?3:4):(e.strstart>e.block_start&&(d(e,!1),e.strm.avail_out),1)})),new w(4,4,8,4,v),new w(4,5,16,8,v),new w(4,6,32,32,v),new w(4,4,16,16,g),new w(8,16,32,32,g),new w(8,16,128,128,g),new w(8,32,128,256,g),new w(32,128,258,1024,g),new w(32,258,258,4096,g)],r.deflateInit=function(e,t){return S(e,t,8,15,8,0)},r.deflateInit2=S,r.deflateReset=x,r.deflateResetKeep=k,r.deflateSetHeader=function(e,t){return e&&e.state?2!==e.state.wrap?-2:(e.state.gzhead=t,0):-2},r.deflate=function(e,t){var r,o,a,u;if(!e||!e.state||t>5||t<0)return e?c(e,-2):-2;if(o=e.state,!e.output||!e.input&&0!==e.avail_in||666===o.status&&4!==t)return c(e,0===e.avail_out?-5:-2);if(o.strm=e,r=o.last_flush,o.last_flush=t,42===o.status)if(2===o.wrap)e.adler=0,p(o,31),p(o,139),p(o,8),o.gzhead?(p(o,(o.gzhead.text?1:0)+(o.gzhead.hcrc?2:0)+(o.gzhead.extra?4:0)+(o.gzhead.name?8:0)+(o.gzhead.comment?16:0)),p(o,255&o.gzhead.time),p(o,o.gzhead.time>>8&255),p(o,o.gzhead.time>>16&255),p(o,o.gzhead.time>>24&255),p(o,9===o.level?2:o.strategy>=2||o.level<2?4:0),p(o,255&o.gzhead.os),o.gzhead.extra&&o.gzhead.extra.length&&(p(o,255&o.gzhead.extra.length),p(o,o.gzhead.extra.length>>8&255)),o.gzhead.hcrc&&(e.adler=s(e.adler,o.pending_buf,o.pending,0)),o.gzindex=0,o.status=69):(p(o,0),p(o,0),p(o,0),p(o,0),p(o,0),p(o,9===o.level?2:o.strategy>=2||o.level<2?4:0),p(o,3),o.status=113);else{var m=8+(o.w_bits-8<<4)<<8;m|=(o.strategy>=2||o.level<2?0:o.level<6?1:6===o.level?2:3)<<6,0!==o.strstart&&(m|=32),m+=31-m%31,o.status=113,y(o,m),0!==o.strstart&&(y(o,e.adler>>>16),y(o,65535&e.adler)),e.adler=1}if(69===o.status)if(o.gzhead.extra){for(a=o.pending;o.gzindex<(65535&o.gzhead.extra.length)&&(o.pending!==o.pending_buf_size||(o.gzhead.hcrc&&o.pending>a&&(e.adler=s(e.adler,o.pending_buf,o.pending-a,a)),h(e),a=o.pending,o.pending!==o.pending_buf_size));)p(o,255&o.gzhead.extra[o.gzindex]),o.gzindex++;o.gzhead.hcrc&&o.pending>a&&(e.adler=s(e.adler,o.pending_buf,o.pending-a,a)),o.gzindex===o.gzhead.extra.length&&(o.gzindex=0,o.status=73)}else o.status=73;if(73===o.status)if(o.gzhead.name){a=o.pending;do{if(o.pending===o.pending_buf_size&&(o.gzhead.hcrc&&o.pending>a&&(e.adler=s(e.adler,o.pending_buf,o.pending-a,a)),h(e),a=o.pending,o.pending===o.pending_buf_size)){u=1;break}u=o.gzindexa&&(e.adler=s(e.adler,o.pending_buf,o.pending-a,a)),0===u&&(o.gzindex=0,o.status=91)}else o.status=91;if(91===o.status)if(o.gzhead.comment){a=o.pending;do{if(o.pending===o.pending_buf_size&&(o.gzhead.hcrc&&o.pending>a&&(e.adler=s(e.adler,o.pending_buf,o.pending-a,a)),h(e),a=o.pending,o.pending===o.pending_buf_size)){u=1;break}u=o.gzindexa&&(e.adler=s(e.adler,o.pending_buf,o.pending-a,a)),0===u&&(o.status=103)}else o.status=103;if(103===o.status&&(o.gzhead.hcrc?(o.pending+2>o.pending_buf_size&&h(e),o.pending+2<=o.pending_buf_size&&(p(o,255&e.adler),p(o,e.adler>>8&255),e.adler=0,o.status=113)):o.status=113),0!==o.pending){if(h(e),0===e.avail_out)return o.last_flush=-1,0}else if(0===e.avail_in&&f(t)<=f(r)&&4!==t)return c(e,-5);if(666===o.status&&0!==e.avail_in)return c(e,-5);if(0!==e.avail_in||0!==o.lookahead||0!==t&&666!==o.status){var v=2===o.strategy?function(e,t){for(var r;;){if(0===e.lookahead&&(b(e),0===e.lookahead)){if(0===t)return 1;break}if(e.match_length=0,r=i._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,r&&(d(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(d(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(d(e,!1),0===e.strm.avail_out)?1:2}(o,t):3===o.strategy?function(e,t){for(var r,n,o,a,s=e.window;;){if(e.lookahead<=258){if(b(e),e.lookahead<=258&&0===t)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(n=s[o=e.strstart-1])===s[++o]&&n===s[++o]&&n===s[++o]){a=e.strstart+258;do{}while(n===s[++o]&&n===s[++o]&&n===s[++o]&&n===s[++o]&&n===s[++o]&&n===s[++o]&&n===s[++o]&&n===s[++o]&&oe.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(r=i._tr_tally(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(r=i._tr_tally(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),r&&(d(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,4===t?(d(e,!0),0===e.strm.avail_out?3:4):e.last_lit&&(d(e,!1),0===e.strm.avail_out)?1:2}(o,t):n[o.level].func(o,t);if(3!==v&&4!==v||(o.status=666),1===v||3===v)return 0===e.avail_out&&(o.last_flush=-1),0;if(2===v&&(1===t?i._tr_align(o):5!==t&&(i._tr_stored_block(o,0,0,!1),3===t&&(l(o.head),0===o.lookahead&&(o.strstart=0,o.block_start=0,o.insert=0))),h(e),0===e.avail_out))return o.last_flush=-1,0}return 4!==t?0:o.wrap<=0?1:(2===o.wrap?(p(o,255&e.adler),p(o,e.adler>>8&255),p(o,e.adler>>16&255),p(o,e.adler>>24&255),p(o,255&e.total_in),p(o,e.total_in>>8&255),p(o,e.total_in>>16&255),p(o,e.total_in>>24&255)):(y(o,e.adler>>>16),y(o,65535&e.adler)),h(e),o.wrap>0&&(o.wrap=-o.wrap),0!==o.pending?0:1)},r.deflateEnd=function(e){var t;return e&&e.state?42!==(t=e.state.status)&&69!==t&&73!==t&&91!==t&&103!==t&&113!==t&&666!==t?c(e,-2):(e.state=null,113===t?c(e,-3):0):-2},r.deflateSetDictionary=function(e,t){var r,n,i,s,u,c,f,h,d=t.length;if(!e||!e.state)return-2;if(2===(s=(r=e.state).wrap)||1===s&&42!==r.status||r.lookahead)return-2;for(1===s&&(e.adler=a(e.adler,t,d,0)),r.wrap=0,d>=r.w_size&&(0===s&&(l(r.head),r.strstart=0,r.block_start=0,r.insert=0),h=new o.Buf8(r.w_size),o.arraySet(h,t,d-r.w_size,r.w_size,0),t=h,d=r.w_size),u=e.avail_in,c=e.next_in,f=e.input,e.avail_in=d,e.next_in=0,e.input=t,b(r);r.lookahead>=3;){n=r.strstart,i=r.lookahead-2;do{r.ins_h=(r.ins_h<>>=w=g>>>24,p-=w,0===(w=g>>>16&255))E[i++]=65535&g;else{if(!(16&w)){if(0==(64&w)){g=y[(65535&g)+(d&(1<>>=w,p-=w),p<15&&(d+=O[n++]<>>=w=g>>>24,p-=w,!(16&(w=g>>>16&255))){if(0==(64&w)){g=m[(65535&g)+(d&(1<u){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(d>>>=w,p-=w,k>(w=i-a)){if((w=k-w)>f&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break e}if(x=0,S=h,0===l){if(x+=c-w,w<_){_-=w;do{E[i++]=h[x++]}while(--w);x=i-k,S=E}}else if(l2;)E[i++]=S[x++],E[i++]=S[x++],E[i++]=S[x++],_-=3;_&&(E[i++]=S[x++],_>1&&(E[i++]=S[x++]))}else{x=i-k;do{E[i++]=E[x++],E[i++]=E[x++],E[i++]=E[x++],_-=3}while(_>2);_&&(E[i++]=E[x++],_>1&&(E[i++]=E[x++]))}break}}break}}while(n>3,d&=(1<<(p-=_<<3))-1,e.next_in=n,e.next_out=i,e.avail_in=n>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24)}function c(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new n.Buf16(320),this.work=new n.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function f(e){var t;return e&&e.state?(t=e.state,e.total_in=e.total_out=t.total=0,e.msg=\"\",t.wrap&&(e.adler=1&t.wrap),t.mode=1,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new n.Buf32(852),t.distcode=t.distdyn=new n.Buf32(592),t.sane=1,t.back=-1,0):-2}function l(e){var t;return e&&e.state?((t=e.state).wsize=0,t.whave=0,t.wnext=0,f(e)):-2}function h(e,t){var r,n;return e&&e.state?(n=e.state,t<0?(r=0,t=-t):(r=1+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?-2:(null!==n.window&&n.wbits!==t&&(n.window=null),n.wrap=r,n.wbits=t,l(e))):-2}function d(e,t){var r,n;return e?(n=new c,e.state=n,n.window=null,0!==(r=h(e,t))&&(e.state=null),r):-2}var p,y,m=!0;function b(e){if(m){var t;for(p=new n.Buf32(512),y=new n.Buf32(32),t=0;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(s(1,e.lens,0,288,p,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;s(2,e.lens,0,32,y,0,e.work,{bits:5}),m=!1}e.lencode=p,e.lenbits=9,e.distcode=y,e.distbits=5}function v(e,t,r,o){var i,a=e.state;return null===a.window&&(a.wsize=1<=a.wsize?(n.arraySet(a.window,t,r-a.wsize,a.wsize,0),a.wnext=0,a.whave=a.wsize):((i=a.wsize-a.wnext)>o&&(i=o),n.arraySet(a.window,t,r-o,i,a.wnext),(o-=i)?(n.arraySet(a.window,t,r-o,o,0),a.wnext=o,a.whave=a.wsize):(a.wnext+=i,a.wnext===a.wsize&&(a.wnext=0),a.whave>>8&255,r.check=i(r.check,N,2,0),y=0,m=0,r.mode=2;break}if(r.flags=0,r.head&&(r.head.done=!1),!(1&r.wrap)||(((255&y)<<8)+(y>>8))%31){e.msg=\"incorrect header check\",r.mode=30;break}if(8!=(15&y)){e.msg=\"unknown compression method\",r.mode=30;break}if(m-=4,C=8+(15&(y>>>=4)),0===r.wbits)r.wbits=C;else if(C>r.wbits){e.msg=\"invalid window size\",r.mode=30;break}r.dmax=1<>8&1),512&r.flags&&(N[0]=255&y,N[1]=y>>>8&255,r.check=i(r.check,N,2,0)),y=0,m=0,r.mode=3;case 3:for(;m<32;){if(0===d)break e;d--,y+=c[l++]<>>8&255,N[2]=y>>>16&255,N[3]=y>>>24&255,r.check=i(r.check,N,4,0)),y=0,m=0,r.mode=4;case 4:for(;m<16;){if(0===d)break e;d--,y+=c[l++]<>8),512&r.flags&&(N[0]=255&y,N[1]=y>>>8&255,r.check=i(r.check,N,2,0)),y=0,m=0,r.mode=5;case 5:if(1024&r.flags){for(;m<16;){if(0===d)break e;d--,y+=c[l++]<>>8&255,r.check=i(r.check,N,2,0)),y=0,m=0}else r.head&&(r.head.extra=null);r.mode=6;case 6:if(1024&r.flags&&((_=r.length)>d&&(_=d),_&&(r.head&&(C=r.head.extra_len-r.length,r.head.extra||(r.head.extra=new Array(r.head.extra_len)),n.arraySet(r.head.extra,c,l,_,C)),512&r.flags&&(r.check=i(r.check,c,_,l)),d-=_,l+=_,r.length-=_),r.length))break e;r.length=0,r.mode=7;case 7:if(2048&r.flags){if(0===d)break e;_=0;do{C=c[l+_++],r.head&&C&&r.length<65536&&(r.head.name+=String.fromCharCode(C))}while(C&&_>9&1,r.head.done=!0),e.adler=r.check=0,r.mode=12;break;case 10:for(;m<32;){if(0===d)break e;d--,y+=c[l++]<>>=7&m,m-=7&m,r.mode=27;break}for(;m<3;){if(0===d)break e;d--,y+=c[l++]<>>=1)){case 0:r.mode=14;break;case 1:if(b(r),r.mode=20,6===t){y>>>=2,m-=2;break e}break;case 2:r.mode=17;break;case 3:e.msg=\"invalid block type\",r.mode=30}y>>>=2,m-=2;break;case 14:for(y>>>=7&m,m-=7&m;m<32;){if(0===d)break e;d--,y+=c[l++]<>>16^65535)){e.msg=\"invalid stored block lengths\",r.mode=30;break}if(r.length=65535&y,y=0,m=0,r.mode=15,6===t)break e;case 15:r.mode=16;case 16:if(_=r.length){if(_>d&&(_=d),_>p&&(_=p),0===_)break e;n.arraySet(f,c,l,_,h),d-=_,l+=_,p-=_,h+=_,r.length-=_;break}r.mode=12;break;case 17:for(;m<14;){if(0===d)break e;d--,y+=c[l++]<>>=5,m-=5,r.ndist=1+(31&y),y>>>=5,m-=5,r.ncode=4+(15&y),y>>>=4,m-=4,r.nlen>286||r.ndist>30){e.msg=\"too many length or distance symbols\",r.mode=30;break}r.have=0,r.mode=18;case 18:for(;r.have>>=3,m-=3}for(;r.have<19;)r.lens[D[r.have++]]=0;if(r.lencode=r.lendyn,r.lenbits=7,A={bits:r.lenbits},P=s(0,r.lens,0,19,r.lencode,0,r.work,A),r.lenbits=A.bits,P){e.msg=\"invalid code lengths set\",r.mode=30;break}r.have=0,r.mode=19;case 19:for(;r.have>>16&255,E=65535&I,!((S=I>>>24)<=m);){if(0===d)break e;d--,y+=c[l++]<>>=S,m-=S,r.lens[r.have++]=E;else{if(16===E){for(M=S+2;m>>=S,m-=S,0===r.have){e.msg=\"invalid bit length repeat\",r.mode=30;break}C=r.lens[r.have-1],_=3+(3&y),y>>>=2,m-=2}else if(17===E){for(M=S+3;m>>=S)),y>>>=3,m-=3}else{for(M=S+7;m>>=S)),y>>>=7,m-=7}if(r.have+_>r.nlen+r.ndist){e.msg=\"invalid bit length repeat\",r.mode=30;break}for(;_--;)r.lens[r.have++]=C}}if(30===r.mode)break;if(0===r.lens[256]){e.msg=\"invalid code -- missing end-of-block\",r.mode=30;break}if(r.lenbits=9,A={bits:r.lenbits},P=s(1,r.lens,0,r.nlen,r.lencode,0,r.work,A),r.lenbits=A.bits,P){e.msg=\"invalid literal/lengths set\",r.mode=30;break}if(r.distbits=6,r.distcode=r.distdyn,A={bits:r.distbits},P=s(2,r.lens,r.nlen,r.ndist,r.distcode,0,r.work,A),r.distbits=A.bits,P){e.msg=\"invalid distances set\",r.mode=30;break}if(r.mode=20,6===t)break e;case 20:r.mode=21;case 21:if(d>=6&&p>=258){e.next_out=h,e.avail_out=p,e.next_in=l,e.avail_in=d,r.hold=y,r.bits=m,a(e,w),h=e.next_out,f=e.output,p=e.avail_out,l=e.next_in,c=e.input,d=e.avail_in,y=r.hold,m=r.bits,12===r.mode&&(r.back=-1);break}for(r.back=0;O=(I=r.lencode[y&(1<>>16&255,E=65535&I,!((S=I>>>24)<=m);){if(0===d)break e;d--,y+=c[l++]<>R)])>>>16&255,E=65535&I,!(R+(S=I>>>24)<=m);){if(0===d)break e;d--,y+=c[l++]<>>=R,m-=R,r.back+=R}if(y>>>=S,m-=S,r.back+=S,r.length=E,0===O){r.mode=26;break}if(32&O){r.back=-1,r.mode=12;break}if(64&O){e.msg=\"invalid literal/length code\",r.mode=30;break}r.extra=15&O,r.mode=22;case 22:if(r.extra){for(M=r.extra;m>>=r.extra,m-=r.extra,r.back+=r.extra}r.was=r.length,r.mode=23;case 23:for(;O=(I=r.distcode[y&(1<>>16&255,E=65535&I,!((S=I>>>24)<=m);){if(0===d)break e;d--,y+=c[l++]<>R)])>>>16&255,E=65535&I,!(R+(S=I>>>24)<=m);){if(0===d)break e;d--,y+=c[l++]<>>=R,m-=R,r.back+=R}if(y>>>=S,m-=S,r.back+=S,64&O){e.msg=\"invalid distance code\",r.mode=30;break}r.offset=E,r.extra=15&O,r.mode=24;case 24:if(r.extra){for(M=r.extra;m>>=r.extra,m-=r.extra,r.back+=r.extra}if(r.offset>r.dmax){e.msg=\"invalid distance too far back\",r.mode=30;break}r.mode=25;case 25:if(0===p)break e;if(_=w-p,r.offset>_){if((_=r.offset-_)>r.whave&&r.sane){e.msg=\"invalid distance too far back\",r.mode=30;break}_>r.wnext?(_-=r.wnext,k=r.wsize-_):k=r.wnext-_,_>r.length&&(_=r.length),x=r.window}else x=f,k=h-r.offset,_=r.length;_>p&&(_=p),p-=_,r.length-=_;do{f[h++]=x[k++]}while(--_);0===r.length&&(r.mode=21);break;case 26:if(0===p)break e;f[h++]=r.length,p--,r.mode=21;break;case 27:if(r.wrap){for(;m<32;){if(0===d)break e;d--,y|=c[l++]<=1&&0===N[E];E--);if(R>E&&(R=E),0===E)return c[f++]=20971520,c[f++]=20971520,h.bits=1,0;for(O=1;O0&&(0===e||1!==E))return-1;for(D[1]=0,x=1;x<15;x++)D[x+1]=D[x]+N[x];for(S=0;S852||2===e&&P>592)return 1;for(;;){g=x-T,l[S]v?(w=B[F+l[S]],_=M[I+l[S]]):(w=96,_=0),d=1<>T)+(p-=d)]=g<<24|w<<16|_|0}while(0!==p);for(d=1<>=1;if(0!==d?(A&=d-1,A+=d):A=0,S++,0==--N[x]){if(x===E)break;x=t[r+l[S]]}if(x>R&&(A&m)!==y){for(0===T&&(T=R),b+=O,C=1<<(j=x-T);j+T852||2===e&&P>592)return 1;c[y=A&m]=R<<24|j<<16|b-f|0}}return 0!==A&&(c[b+A]=x-T<<24|64<<16|0),h.bits=R,0}},{\"../utils/common\":395}],405:[function(e,t,r){t.exports={2:\"need dictionary\",1:\"stream end\",0:\"\",\"-1\":\"file error\",\"-2\":\"stream error\",\"-3\":\"data error\",\"-4\":\"insufficient memory\",\"-5\":\"buffer error\",\"-6\":\"incompatible version\"}},{}],406:[function(e,t,r){var n=e(\"../utils/common\");function o(e){for(var t=e.length;--t>=0;)e[t]=0}var i=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],a=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],s=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],u=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],c=new Array(576);o(c);var f=new Array(60);o(f);var l=new Array(512);o(l);var h=new Array(256);o(h);var d=new Array(29);o(d);var p,y,m,b=new Array(30);function v(e,t,r,n,o){this.static_tree=e,this.extra_bits=t,this.extra_base=r,this.elems=n,this.max_length=o,this.has_stree=e&&e.length}function g(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}function w(e){return e<256?l[e]:l[256+(e>>>7)]}function _(e,t){e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255}function k(e,t,r){e.bi_valid>16-r?(e.bi_buf|=t<>16-e.bi_valid,e.bi_valid+=r-16):(e.bi_buf|=t<>>=1,r<<=1}while(--t>0);return r>>>1}function O(e,t,r){var n,o,i=new Array(16),a=0;for(n=1;n<=15;n++)i[n]=a=a+r[n-1]<<1;for(o=0;o<=t;o++){var s=e[2*o+1];0!==s&&(e[2*o]=S(i[s]++,s))}}function E(e){var t;for(t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.last_lit=e.matches=0}function R(e){e.bi_valid>8?_(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0}function j(e,t,r,n){var o=2*t,i=2*r;return e[o]>1;r>=1;r--)T(e,i,r);o=u;do{r=e.heap[1],e.heap[1]=e.heap[e.heap_len--],T(e,i,1),n=e.heap[1],e.heap[--e.heap_max]=r,e.heap[--e.heap_max]=n,i[2*o]=i[2*r]+i[2*n],e.depth[o]=(e.depth[r]>=e.depth[n]?e.depth[r]:e.depth[n])+1,i[2*r+1]=i[2*n+1]=o,e.heap[1]=o++,T(e,i,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],function(e,t){var r,n,o,i,a,s,u=t.dyn_tree,c=t.max_code,f=t.stat_desc.static_tree,l=t.stat_desc.has_stree,h=t.stat_desc.extra_bits,d=t.stat_desc.extra_base,p=t.stat_desc.max_length,y=0;for(i=0;i<=15;i++)e.bl_count[i]=0;for(u[2*e.heap[e.heap_max]+1]=0,r=e.heap_max+1;r<573;r++)(i=u[2*u[2*(n=e.heap[r])+1]+1]+1)>p&&(i=p,y++),u[2*n+1]=i,n>c||(e.bl_count[i]++,a=0,n>=d&&(a=h[n-d]),s=u[2*n],e.opt_len+=s*(i+a),l&&(e.static_len+=s*(f[2*n+1]+a)));if(0!==y){do{for(i=p-1;0===e.bl_count[i];)i--;e.bl_count[i]--,e.bl_count[i+1]+=2,e.bl_count[p]--,y-=2}while(y>0);for(i=p;0!==i;i--)for(n=e.bl_count[i];0!==n;)(o=e.heap[--r])>c||(u[2*o+1]!==i&&(e.opt_len+=(i-u[2*o+1])*u[2*o],u[2*o+1]=i),n--)}}(e,t),O(i,c,e.bl_count)}function A(e,t,r){var n,o,i=-1,a=t[1],s=0,u=7,c=4;for(0===a&&(u=138,c=3),t[2*(r+1)+1]=65535,n=0;n<=r;n++)o=a,a=t[2*(n+1)+1],++s>=7;n<30;n++)for(b[n]=o<<7,e=0;e<1<0?(2===e.strm.data_type&&(e.strm.data_type=function(e){var t,r=4093624447;for(t=0;t<=31;t++,r>>>=1)if(1&r&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<256;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0}(e)),P(e,e.l_desc),P(e,e.d_desc),a=function(e){var t;for(A(e,e.dyn_ltree,e.l_desc.max_code),A(e,e.dyn_dtree,e.d_desc.max_code),P(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*u[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t}(e),o=e.opt_len+3+7>>>3,(i=e.static_len+3+7>>>3)<=o&&(o=i)):o=i=r+5,r+4<=o&&-1!==t?N(e,t,r,n):4===e.strategy||i===o?(k(e,2+(n?1:0),3),C(e,c,f)):(k(e,4+(n?1:0),3),function(e,t,r,n){var o;for(k(e,t-257,5),k(e,r-1,5),k(e,n-4,4),o=0;o>>8&255,e.pending_buf[e.d_buf+2*e.last_lit+1]=255&t,e.pending_buf[e.l_buf+e.last_lit]=255&r,e.last_lit++,0===t?e.dyn_ltree[2*r]++:(e.matches++,t--,e.dyn_ltree[2*(h[r]+256+1)]++,e.dyn_dtree[2*w(t)]++),e.last_lit===e.lit_bufsize-1},r._tr_align=function(e){k(e,2,3),x(e,256,c),function(e){16===e.bi_valid?(_(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}(e)}},{\"../utils/common\":395}],407:[function(e,t,r){t.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\"\",this.state=null,this.data_type=2,this.adler=0}},{}],408:[function(e,t,r){t.exports={\"2.16.840.1.101.3.4.1.1\":\"aes-128-ecb\",\"2.16.840.1.101.3.4.1.2\":\"aes-128-cbc\",\"2.16.840.1.101.3.4.1.3\":\"aes-128-ofb\",\"2.16.840.1.101.3.4.1.4\":\"aes-128-cfb\",\"2.16.840.1.101.3.4.1.21\":\"aes-192-ecb\",\"2.16.840.1.101.3.4.1.22\":\"aes-192-cbc\",\"2.16.840.1.101.3.4.1.23\":\"aes-192-ofb\",\"2.16.840.1.101.3.4.1.24\":\"aes-192-cfb\",\"2.16.840.1.101.3.4.1.41\":\"aes-256-ecb\",\"2.16.840.1.101.3.4.1.42\":\"aes-256-cbc\",\"2.16.840.1.101.3.4.1.43\":\"aes-256-ofb\",\"2.16.840.1.101.3.4.1.44\":\"aes-256-cfb\"}},{}],409:[function(e,t,r){var n=e(\"asn1.js\");r.certificate=e(\"./certificate\");var o=n.define(\"RSAPrivateKey\",(function(){this.seq().obj(this.key(\"version\").int(),this.key(\"modulus\").int(),this.key(\"publicExponent\").int(),this.key(\"privateExponent\").int(),this.key(\"prime1\").int(),this.key(\"prime2\").int(),this.key(\"exponent1\").int(),this.key(\"exponent2\").int(),this.key(\"coefficient\").int())}));r.RSAPrivateKey=o;var i=n.define(\"RSAPublicKey\",(function(){this.seq().obj(this.key(\"modulus\").int(),this.key(\"publicExponent\").int())}));r.RSAPublicKey=i;var a=n.define(\"SubjectPublicKeyInfo\",(function(){this.seq().obj(this.key(\"algorithm\").use(s),this.key(\"subjectPublicKey\").bitstr())}));r.PublicKey=a;var s=n.define(\"AlgorithmIdentifier\",(function(){this.seq().obj(this.key(\"algorithm\").objid(),this.key(\"none\").null_().optional(),this.key(\"curve\").objid().optional(),this.key(\"params\").seq().obj(this.key(\"p\").int(),this.key(\"q\").int(),this.key(\"g\").int()).optional())})),u=n.define(\"PrivateKeyInfo\",(function(){this.seq().obj(this.key(\"version\").int(),this.key(\"algorithm\").use(s),this.key(\"subjectPrivateKey\").octstr())}));r.PrivateKey=u;var c=n.define(\"EncryptedPrivateKeyInfo\",(function(){this.seq().obj(this.key(\"algorithm\").seq().obj(this.key(\"id\").objid(),this.key(\"decrypt\").seq().obj(this.key(\"kde\").seq().obj(this.key(\"id\").objid(),this.key(\"kdeparams\").seq().obj(this.key(\"salt\").octstr(),this.key(\"iters\").int())),this.key(\"cipher\").seq().obj(this.key(\"algo\").objid(),this.key(\"iv\").octstr()))),this.key(\"subjectPrivateKey\").octstr())}));r.EncryptedPrivateKey=c;var f=n.define(\"DSAPrivateKey\",(function(){this.seq().obj(this.key(\"version\").int(),this.key(\"p\").int(),this.key(\"q\").int(),this.key(\"g\").int(),this.key(\"pub_key\").int(),this.key(\"priv_key\").int())}));r.DSAPrivateKey=f,r.DSAparam=n.define(\"DSAparam\",(function(){this.int()}));var l=n.define(\"ECPrivateKey\",(function(){this.seq().obj(this.key(\"version\").int(),this.key(\"privateKey\").octstr(),this.key(\"parameters\").optional().explicit(0).use(h),this.key(\"publicKey\").optional().explicit(1).bitstr())}));r.ECPrivateKey=l;var h=n.define(\"ECParameters\",(function(){this.choice({namedCurve:this.objid()})}));r.signature=n.define(\"signature\",(function(){this.seq().obj(this.key(\"r\").int(),this.key(\"s\").int())}))},{\"./certificate\":410,\"asn1.js\":141}],410:[function(e,t,r){var n=e(\"asn1.js\"),o=n.define(\"Time\",(function(){this.choice({utcTime:this.utctime(),generalTime:this.gentime()})})),i=n.define(\"AttributeTypeValue\",(function(){this.seq().obj(this.key(\"type\").objid(),this.key(\"value\").any())})),a=n.define(\"AlgorithmIdentifier\",(function(){this.seq().obj(this.key(\"algorithm\").objid(),this.key(\"parameters\").optional(),this.key(\"curve\").objid().optional())})),s=n.define(\"SubjectPublicKeyInfo\",(function(){this.seq().obj(this.key(\"algorithm\").use(a),this.key(\"subjectPublicKey\").bitstr())})),u=n.define(\"RelativeDistinguishedName\",(function(){this.setof(i)})),c=n.define(\"RDNSequence\",(function(){this.seqof(u)})),f=n.define(\"Name\",(function(){this.choice({rdnSequence:this.use(c)})})),l=n.define(\"Validity\",(function(){this.seq().obj(this.key(\"notBefore\").use(o),this.key(\"notAfter\").use(o))})),h=n.define(\"Extension\",(function(){this.seq().obj(this.key(\"extnID\").objid(),this.key(\"critical\").bool().def(!1),this.key(\"extnValue\").octstr())})),d=n.define(\"TBSCertificate\",(function(){this.seq().obj(this.key(\"version\").explicit(0).int().optional(),this.key(\"serialNumber\").int(),this.key(\"signature\").use(a),this.key(\"issuer\").use(f),this.key(\"validity\").use(l),this.key(\"subject\").use(f),this.key(\"subjectPublicKeyInfo\").use(s),this.key(\"issuerUniqueID\").implicit(1).bitstr().optional(),this.key(\"subjectUniqueID\").implicit(2).bitstr().optional(),this.key(\"extensions\").explicit(3).seqof(h).optional())})),p=n.define(\"X509Certificate\",(function(){this.seq().obj(this.key(\"tbsCertificate\").use(d),this.key(\"signatureAlgorithm\").use(a),this.key(\"signatureValue\").bitstr())}));t.exports=p},{\"asn1.js\":141}],411:[function(e,t,r){var n=/Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r\\+\\/\\=]+)[\\n\\r]+/m,o=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m,i=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r\\+\\/\\=]+)-----END \\1-----$/m,a=e(\"evp_bytestokey\"),s=e(\"browserify-aes\"),u=e(\"safe-buffer\").Buffer;t.exports=function(e,t){var r,c=e.toString(),f=c.match(n);if(f){var l=\"aes\"+f[1],h=u.from(f[2],\"hex\"),d=u.from(f[3].replace(/[\\r\\n]/g,\"\"),\"base64\"),p=a(t,h.slice(0,8),parseInt(f[1],10)).key,y=[],m=s.createDecipheriv(l,p,h);y.push(m.update(d)),y.push(m.final()),r=u.concat(y)}else{var b=c.match(i);r=new u(b[2].replace(/[\\r\\n]/g,\"\"),\"base64\")}return{tag:c.match(o)[1],data:r}}},{\"browserify-aes\":161,evp_bytestokey:300,\"safe-buffer\":445}],412:[function(e,t,r){var n=e(\"./asn1\"),o=e(\"./aesid.json\"),i=e(\"./fixProc\"),a=e(\"browserify-aes\"),s=e(\"pbkdf2\"),u=e(\"safe-buffer\").Buffer;function c(e){var t;\"object\"!==_typeof2(e)||u.isBuffer(e)||(t=e.passphrase,e=e.key),\"string\"==typeof e&&(e=u.from(e));var r,c,f=i(e,t),l=f.tag,h=f.data;switch(l){case\"CERTIFICATE\":c=n.certificate.decode(h,\"der\").tbsCertificate.subjectPublicKeyInfo;case\"PUBLIC KEY\":switch(c||(c=n.PublicKey.decode(h,\"der\")),r=c.algorithm.algorithm.join(\".\")){case\"1.2.840.113549.1.1.1\":return n.RSAPublicKey.decode(c.subjectPublicKey.data,\"der\");case\"1.2.840.10045.2.1\":return c.subjectPrivateKey=c.subjectPublicKey,{type:\"ec\",data:c};case\"1.2.840.10040.4.1\":return c.algorithm.params.pub_key=n.DSAparam.decode(c.subjectPublicKey.data,\"der\"),{type:\"dsa\",data:c.algorithm.params};default:throw new Error(\"unknown key id \"+r)}throw new Error(\"unknown key type \"+l);case\"ENCRYPTED PRIVATE KEY\":h=function(e,t){var r=e.algorithm.decrypt.kde.kdeparams.salt,n=parseInt(e.algorithm.decrypt.kde.kdeparams.iters.toString(),10),i=o[e.algorithm.decrypt.cipher.algo.join(\".\")],c=e.algorithm.decrypt.cipher.iv,f=e.subjectPrivateKey,l=parseInt(i.split(\"-\")[1],10)/8,h=s.pbkdf2Sync(t,r,n,l,\"sha1\"),d=a.createDecipheriv(i,h,c),p=[];return p.push(d.update(f)),p.push(d.final()),u.concat(p)}(h=n.EncryptedPrivateKey.decode(h,\"der\"),t);case\"PRIVATE KEY\":switch(r=(c=n.PrivateKey.decode(h,\"der\")).algorithm.algorithm.join(\".\")){case\"1.2.840.113549.1.1.1\":return n.RSAPrivateKey.decode(c.subjectPrivateKey,\"der\");case\"1.2.840.10045.2.1\":return{curve:c.algorithm.curve,privateKey:n.ECPrivateKey.decode(c.subjectPrivateKey,\"der\").privateKey};case\"1.2.840.10040.4.1\":return c.algorithm.params.priv_key=n.DSAparam.decode(c.subjectPrivateKey,\"der\"),{type:\"dsa\",params:c.algorithm.params};default:throw new Error(\"unknown key id \"+r)}throw new Error(\"unknown key type \"+l);case\"RSA PUBLIC KEY\":return n.RSAPublicKey.decode(h,\"der\");case\"RSA PRIVATE KEY\":return n.RSAPrivateKey.decode(h,\"der\");case\"DSA PRIVATE KEY\":return{type:\"dsa\",params:n.DSAPrivateKey.decode(h,\"der\")};case\"EC PRIVATE KEY\":return{curve:(h=n.ECPrivateKey.decode(h,\"der\")).parameters.value,privateKey:h.privateKey};default:throw new Error(\"unknown key type \"+l)}}t.exports=c,c.signature=n.signature},{\"./aesid.json\":408,\"./asn1\":409,\"./fixProc\":411,\"browserify-aes\":161,pbkdf2:413,\"safe-buffer\":445}],413:[function(e,t,r){r.pbkdf2=e(\"./lib/async\"),r.pbkdf2Sync=e(\"./lib/sync\")},{\"./lib/async\":414,\"./lib/sync\":417}],414:[function(e,t,r){(function(r,n){var o,i=e(\"./precondition\"),a=e(\"./default-encoding\"),s=e(\"./sync\"),u=e(\"safe-buffer\").Buffer,c=n.crypto&&n.crypto.subtle,f={sha:\"SHA-1\",\"sha-1\":\"SHA-1\",sha1:\"SHA-1\",sha256:\"SHA-256\",\"sha-256\":\"SHA-256\",sha384:\"SHA-384\",\"sha-384\":\"SHA-384\",\"sha-512\":\"SHA-512\",sha512:\"SHA-512\"},l=[];function h(e,t,r,n,o){return c.importKey(\"raw\",e,{name:\"PBKDF2\"},!1,[\"deriveBits\"]).then((function(e){return c.deriveBits({name:\"PBKDF2\",salt:t,iterations:r,hash:{name:o}},e,n<<3)})).then((function(e){return u.from(e)}))}t.exports=function(e,t,d,p,y,m){\"function\"==typeof y&&(m=y,y=void 0);var b=f[(y=y||\"sha1\").toLowerCase()];if(!b||\"function\"!=typeof n.Promise)return r.nextTick((function(){var r;try{r=s(e,t,d,p,y)}catch(e){return m(e)}m(null,r)}));if(i(e,t,d,p),\"function\"!=typeof m)throw new Error(\"No callback provided to pbkdf2\");u.isBuffer(e)||(e=u.from(e,a)),u.isBuffer(t)||(t=u.from(t,a)),function(e,t){e.then((function(e){r.nextTick((function(){t(null,e)}))}),(function(e){r.nextTick((function(){t(e)}))}))}(function(e){if(n.process&&!n.process.browser)return Promise.resolve(!1);if(!c||!c.importKey||!c.deriveBits)return Promise.resolve(!1);if(void 0!==l[e])return l[e];var t=h(o=o||u.alloc(8),o,10,128,e).then((function(){return!0})).catch((function(){return!1}));return l[e]=t,t}(b).then((function(r){return r?h(e,t,d,p,b):s(e,t,d,p,y)})),m)}}).call(this,e(\"_process\"),\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"./default-encoding\":415,\"./precondition\":416,\"./sync\":417,_process:419,\"safe-buffer\":445}],415:[function(e,t,r){(function(e){var r;e.browser?r=\"utf-8\":r=parseInt(e.version.split(\".\")[0].slice(1),10)>=6?\"utf-8\":\"binary\";t.exports=r}).call(this,e(\"_process\"))},{_process:419}],416:[function(e,t,r){(function(e){var r=Math.pow(2,30)-1;function n(t,r){if(\"string\"!=typeof t&&!e.isBuffer(t))throw new TypeError(r+\" must be a buffer or string\")}t.exports=function(e,t,o,i){if(n(e,\"Password\"),n(t,\"Salt\"),\"number\"!=typeof o)throw new TypeError(\"Iterations not a number\");if(o<0)throw new TypeError(\"Bad iterations\");if(\"number\"!=typeof i)throw new TypeError(\"Key length not a number\");if(i<0||i>r||i!=i)throw new TypeError(\"Bad key length\")}}).call(this,{isBuffer:e(\"../../is-buffer/index.js\")})},{\"../../is-buffer/index.js\":342}],417:[function(e,t,r){var n=e(\"create-hash/md5\"),o=e(\"ripemd160\"),i=e(\"sha.js\"),a=e(\"./precondition\"),s=e(\"./default-encoding\"),u=e(\"safe-buffer\").Buffer,c=u.alloc(128),f={md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,rmd160:20,ripemd160:20};function l(e,t,r){var a=function(e){function t(t){return i(e).update(t).digest()}return\"rmd160\"===e||\"ripemd160\"===e?function(e){return(new o).update(e).digest()}:\"md5\"===e?n:t}(e),s=\"sha512\"===e||\"sha384\"===e?128:64;t.length>s?t=a(t):t.length1)for(var r=1;rp||new a(t).cmp(d.modulus)>=0)throw new Error(\"decryption error\");h=r?c(new a(t),d):s(t,d);var y=f.alloc(p-h.length);if(h=f.concat([y,h],p),4===l)return function(e,t){var r=e.modulus.byteLength(),n=u(\"sha1\").update(f.alloc(0)).digest(),a=n.length;if(0!==t[0])throw new Error(\"decryption error\");var s=t.slice(1,a+1),c=t.slice(a+1),l=i(s,o(c,a)),h=i(c,o(l,r-a-1));if(function(e,t){e=f.from(e),t=f.from(t);var r=0,n=e.length;e.length!==t.length&&(r++,n=Math.min(e.length,t.length));var o=-1;for(;++o=t.length){i++;break}var a=t.slice(2,o-1);(\"0002\"!==n.toString(\"hex\")&&!r||\"0001\"!==n.toString(\"hex\")&&r)&&i++;a.length<8&&i++;if(i)throw new Error(\"decryption error\");return t.slice(o)}(0,h,r);if(3===l)return h;throw new Error(\"unknown padding\")}},{\"./mgf\":421,\"./withPublic\":424,\"./xor\":425,\"bn.js\":156,\"browserify-rsa\":179,\"create-hash\":265,\"parse-asn1\":412,\"safe-buffer\":445}],423:[function(e,t,r){var n=e(\"parse-asn1\"),o=e(\"randombytes\"),i=e(\"create-hash\"),a=e(\"./mgf\"),s=e(\"./xor\"),u=e(\"bn.js\"),c=e(\"./withPublic\"),f=e(\"browserify-rsa\"),l=e(\"safe-buffer\").Buffer;t.exports=function(e,t,r){var h;h=e.padding?e.padding:r?1:4;var d,p=n(e);if(4===h)d=function(e,t){var r=e.modulus.byteLength(),n=t.length,c=i(\"sha1\").update(l.alloc(0)).digest(),f=c.length,h=2*f;if(n>r-h-2)throw new Error(\"message too long\");var d=l.alloc(r-n-h-2),p=r-f-1,y=o(f),m=s(l.concat([c,d,l.alloc(1,1),t],p),a(y,p)),b=s(y,a(m,f));return new u(l.concat([l.alloc(1),b,m],r))}(p,t);else if(1===h)d=function(e,t,r){var n,i=t.length,a=e.modulus.byteLength();if(i>a-11)throw new Error(\"message too long\");n=r?l.alloc(a-i-3,255):function(e){var t,r=l.allocUnsafe(e),n=0,i=o(2*e),a=0;for(;n=0)throw new Error(\"data too long for modulus\")}return r?f(d,p):c(d,p)}},{\"./mgf\":421,\"./withPublic\":424,\"./xor\":425,\"bn.js\":156,\"browserify-rsa\":179,\"create-hash\":265,\"parse-asn1\":412,randombytes:426,\"safe-buffer\":445}],424:[function(e,t,r){var n=e(\"bn.js\"),o=e(\"safe-buffer\").Buffer;t.exports=function(e,t){return o.from(e.toRed(n.mont(t.modulus)).redPow(new n(t.publicExponent)).fromRed().toArray())}},{\"bn.js\":156,\"safe-buffer\":445}],425:[function(e,t,r){t.exports=function(e,t){for(var r=e.length,n=-1;++n4294967295)throw new RangeError(\"requested too many random bytes\");var n=o.allocUnsafe(e);if(e>0)if(e>65536)for(var a=0;af||e<0)throw new TypeError(\"offset must be a uint32\");if(e>u||e>t)throw new RangeError(\"offset out of range\")}function h(e,t,r){if(\"number\"!=typeof e||e!=e)throw new TypeError(\"size must be a number\");if(e>f||e<0)throw new TypeError(\"size must be a uint32\");if(e+t>r||e>u)throw new RangeError(\"buffer too small\")}function d(e,r,n,o){if(t.browser){var i=e.buffer,s=new Uint8Array(i,r,n);return c.getRandomValues(s),o?void t.nextTick((function(){o(null,e)})):e}if(!o)return a(n).copy(e,r),e;a(n,(function(t,n){if(t)return o(t);n.copy(e,r),o(null,e)}))}c&&c.getRandomValues||!t.browser?(r.randomFill=function(e,t,r,o){if(!(s.isBuffer(e)||e instanceof n.Uint8Array))throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array');if(\"function\"==typeof t)o=t,t=0,r=e.length;else if(\"function\"==typeof r)o=r,r=e.length-t;else if(\"function\"!=typeof o)throw new TypeError('\"cb\" argument must be a function');return l(t,e.length),h(r,t,e.length),d(e,t,r,o)},r.randomFillSync=function(e,t,r){void 0===t&&(t=0);if(!(s.isBuffer(e)||e instanceof n.Uint8Array))throw new TypeError('\"buf\" argument must be a Buffer or Uint8Array');l(t,e.length),void 0===r&&(r=e.length-t);return h(r,t,e.length),d(e,t,r)}):(r.randomFill=o,r.randomFillSync=o)}).call(this,e(\"_process\"),\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{_process:419,randombytes:426,\"safe-buffer\":445}],428:[function(e,t,r){var n={};function o(e,t,r){r||(r=Error);var o=function(e){var r,n;function o(r,n,o){return e.call(this,function(e,r,n){return\"string\"==typeof t?t:t(e,r,n)}(r,n,o))||this}return n=e,(r=o).prototype=Object.create(n.prototype),r.prototype.constructor=r,r.__proto__=n,o}(r);o.prototype.name=r.name,o.prototype.code=e,n[e]=o}function i(e,t){if(Array.isArray(e)){var r=e.length;return e=e.map((function(e){return String(e)})),r>2?\"one of \".concat(t,\" \").concat(e.slice(0,r-1).join(\", \"),\", or \")+e[r-1]:2===r?\"one of \".concat(t,\" \").concat(e[0],\" or \").concat(e[1]):\"of \".concat(t,\" \").concat(e[0])}return\"of \".concat(t,\" \").concat(String(e))}o(\"ERR_INVALID_OPT_VALUE\",(function(e,t){return'The value \"'+t+'\" is invalid for option \"'+e+'\"'}),TypeError),o(\"ERR_INVALID_ARG_TYPE\",(function(e,t,r){var n,o,a,s;if(\"string\"==typeof t&&(o=\"not \",t.substr(!a||a<0?0:+a,o.length)===o)?(n=\"must not be\",t=t.replace(/^not /,\"\")):n=\"must be\",function(e,t,r){return(void 0===r||r>e.length)&&(r=e.length),e.substring(r-t.length,r)===t}(e,\" argument\"))s=\"The \".concat(e,\" \").concat(n,\" \").concat(i(t,\"type\"));else{var u=function(e,t,r){return\"number\"!=typeof r&&(r=0),!(r+t.length>e.length)&&-1!==e.indexOf(t,r)}(e,\".\")?\"property\":\"argument\";s='The \"'.concat(e,'\" ').concat(u,\" \").concat(n,\" \").concat(i(t,\"type\"))}return s+=\". Received type \".concat(_typeof2(r))}),TypeError),o(\"ERR_STREAM_PUSH_AFTER_EOF\",\"stream.push() after EOF\"),o(\"ERR_METHOD_NOT_IMPLEMENTED\",(function(e){return\"The \"+e+\" method is not implemented\"})),o(\"ERR_STREAM_PREMATURE_CLOSE\",\"Premature close\"),o(\"ERR_STREAM_DESTROYED\",(function(e){return\"Cannot call \"+e+\" after a stream was destroyed\"})),o(\"ERR_MULTIPLE_CALLBACK\",\"Callback called multiple times\"),o(\"ERR_STREAM_CANNOT_PIPE\",\"Cannot pipe, not readable\"),o(\"ERR_STREAM_WRITE_AFTER_END\",\"write after end\"),o(\"ERR_STREAM_NULL_VALUES\",\"May not write null values to stream\",TypeError),o(\"ERR_UNKNOWN_ENCODING\",(function(e){return\"Unknown encoding: \"+e}),TypeError),o(\"ERR_STREAM_UNSHIFT_AFTER_END_EVENT\",\"stream.unshift() after end event\"),t.exports.codes=n},{}],429:[function(e,t,r){(function(r){var n=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};t.exports=c;var o=e(\"./_stream_readable\"),i=e(\"./_stream_writable\");e(\"inherits\")(c,o);for(var a=n(i.prototype),s=0;s0)if(\"string\"==typeof t||a.objectMode||Object.getPrototypeOf(t)===s.prototype||(t=function(e){return s.from(e)}(t)),n)a.endEmitted?k(e,new _):R(e,a,t,!0);else if(a.ended)k(e,new g);else{if(a.destroyed)return!1;a.reading=!1,a.decoder&&!r?(t=a.decoder.write(t),a.objectMode||0!==t.length?R(e,a,t,!1):P(e,a)):R(e,a,t,!1)}else n||(a.reading=!1,P(e,a));return!a.ended&&(a.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=1073741824?e=1073741824:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function T(e){var t=e._readableState;c(\"emitReadable\",t.needReadable,t.emittedReadable),t.needReadable=!1,t.emittedReadable||(c(\"emitReadable\",t.flowing),t.emittedReadable=!0,r.nextTick(C,e))}function C(e){var t=e._readableState;c(\"emitReadable_\",t.destroyed,t.length,t.ended),t.destroyed||!t.length&&!t.ended||(e.emit(\"readable\"),t.emittedReadable=!1),t.needReadable=!t.flowing&&!t.ended&&t.length<=t.highWaterMark,D(e)}function P(e,t){t.readingMore||(t.readingMore=!0,r.nextTick(A,e,t))}function A(e,t){for(;!t.reading&&!t.ended&&(t.length0,t.resumeScheduled&&!t.paused?t.flowing=!0:e.listenerCount(\"data\")>0&&e.resume()}function I(e){c(\"readable nexttick read 0\"),e.read(0)}function N(e,t){c(\"resume\",t.reading),t.reading||e.read(0),t.resumeScheduled=!1,e.emit(\"resume\"),D(e),t.flowing&&!t.reading&&e.read(0)}function D(e){var t=e._readableState;for(c(\"flow\",t.flowing);t.flowing&&null!==e.read(););}function B(e,t){return 0===t.length?null:(t.objectMode?r=t.buffer.shift():!e||e>=t.length?(r=t.decoder?t.buffer.join(\"\"):1===t.buffer.length?t.buffer.first():t.buffer.concat(t.length),t.buffer.clear()):r=t.buffer.consume(e,t.decoder),r);var r}function F(e){var t=e._readableState;c(\"endReadable\",t.endEmitted),t.endEmitted||(t.ended=!0,r.nextTick(L,t,e))}function L(e,t){if(c(\"endReadableNT\",e.endEmitted,e.length),!e.endEmitted&&0===e.length&&(e.endEmitted=!0,t.readable=!1,t.emit(\"end\"),e.autoDestroy)){var r=t._writableState;(!r||r.autoDestroy&&r.finished)&&t.destroy()}}function z(e,t){for(var r=0,n=e.length;r=t.highWaterMark:t.length>0)||t.ended))return c(\"read: emitReadable\",t.length,t.ended),0===t.length&&t.ended?F(this):T(this),null;if(0===(e=j(e,t))&&t.ended)return 0===t.length&&F(this),null;var n,o=t.needReadable;return c(\"need readable\",o),(0===t.length||t.length-e0?B(e,t):null)?(t.needReadable=t.length<=t.highWaterMark,e=0):(t.length-=e,t.awaitDrain=0),0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&F(this)),null!==n&&this.emit(\"data\",n),n},O.prototype._read=function(e){k(this,new w(\"_read()\"))},O.prototype.pipe=function(e,t){var n=this,o=this._readableState;switch(o.pipesCount){case 0:o.pipes=e;break;case 1:o.pipes=[o.pipes,e];break;default:o.pipes.push(e)}o.pipesCount+=1,c(\"pipe count=%d opts=%j\",o.pipesCount,t);var a=(!t||!1!==t.end)&&e!==r.stdout&&e!==r.stderr?u:m;function s(t,r){c(\"onunpipe\"),t===n&&r&&!1===r.hasUnpiped&&(r.hasUnpiped=!0,c(\"cleanup\"),e.removeListener(\"close\",p),e.removeListener(\"finish\",y),e.removeListener(\"drain\",f),e.removeListener(\"error\",d),e.removeListener(\"unpipe\",s),n.removeListener(\"end\",u),n.removeListener(\"end\",m),n.removeListener(\"data\",h),l=!0,!o.awaitDrain||e._writableState&&!e._writableState.needDrain||f())}function u(){c(\"onend\"),e.end()}o.endEmitted?r.nextTick(a):n.once(\"end\",a),e.on(\"unpipe\",s);var f=function(e){return function(){var t=e._readableState;c(\"pipeOnDrain\",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&i(e,\"data\")&&(t.flowing=!0,D(e))}}(n);e.on(\"drain\",f);var l=!1;function h(t){c(\"ondata\");var r=e.write(t);c(\"dest.write\",r),!1===r&&((1===o.pipesCount&&o.pipes===e||o.pipesCount>1&&-1!==z(o.pipes,e))&&!l&&(c(\"false write response, pause\",o.awaitDrain),o.awaitDrain++),n.pause())}function d(t){c(\"onerror\",t),m(),e.removeListener(\"error\",d),0===i(e,\"error\")&&k(e,t)}function p(){e.removeListener(\"finish\",y),m()}function y(){c(\"onfinish\"),e.removeListener(\"close\",p),m()}function m(){c(\"unpipe\"),n.unpipe(e)}return n.on(\"data\",h),function(e,t,r){if(\"function\"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?Array.isArray(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,\"error\",d),e.once(\"close\",p),e.once(\"finish\",y),e.emit(\"pipe\",n),o.flowing||(c(\"pipe resume\"),n.resume()),e},O.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit(\"unpipe\",this,r)),this;if(!e){var n=t.pipes,o=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var i=0;i0,!1!==o.flowing&&this.resume()):\"readable\"===e&&(o.endEmitted||o.readableListening||(o.readableListening=o.needReadable=!0,o.flowing=!1,o.emittedReadable=!1,c(\"on readable\",o.length,o.reading),o.length?T(this):o.reading||r.nextTick(I,this))),n},O.prototype.addListener=O.prototype.on,O.prototype.removeListener=function(e,t){var n=a.prototype.removeListener.call(this,e,t);return\"readable\"===e&&r.nextTick(M,this),n},O.prototype.removeAllListeners=function(e){var t=a.prototype.removeAllListeners.apply(this,arguments);return\"readable\"!==e&&void 0!==e||r.nextTick(M,this),t},O.prototype.resume=function(){var e=this._readableState;return e.flowing||(c(\"resume\"),e.flowing=!e.readableListening,function(e,t){t.resumeScheduled||(t.resumeScheduled=!0,r.nextTick(N,e,t))}(this,e)),e.paused=!1,this},O.prototype.pause=function(){return c(\"call pause flowing=%j\",this._readableState.flowing),!1!==this._readableState.flowing&&(c(\"pause\"),this._readableState.flowing=!1,this.emit(\"pause\")),this._readableState.paused=!0,this},O.prototype.wrap=function(e){var t=this,r=this._readableState,n=!1;for(var o in e.on(\"end\",(function(){if(c(\"wrapped end\"),r.decoder&&!r.ended){var e=r.decoder.end();e&&e.length&&t.push(e)}t.push(null)})),e.on(\"data\",(function(o){(c(\"wrapped data\"),r.decoder&&(o=r.decoder.write(o)),r.objectMode&&null==o)||(r.objectMode||o&&o.length)&&(t.push(o)||(n=!0,e.pause()))})),e)void 0===this[o]&&\"function\"==typeof e[o]&&(this[o]=function(t){return function(){return e[t].apply(e,arguments)}}(o));for(var i=0;i-1))throw new _(e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(O.prototype,\"writableBuffer\",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}}),Object.defineProperty(O.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),O.prototype._write=function(e,t,r){r(new y(\"_write()\"))},O.prototype._writev=null,O.prototype.end=function(e,t,n){var o=this._writableState;return\"function\"==typeof e?(n=e,e=null,t=null):\"function\"==typeof t&&(n=t,t=null),null!=e&&this.write(e,t),o.corked&&(o.corked=1,this.uncork()),o.ending||function(e,t,n){t.ending=!0,P(e,t),n&&(t.finished?r.nextTick(n):e.once(\"finish\",n));t.ended=!0,e.writable=!1}(this,o,n),this},Object.defineProperty(O.prototype,\"writableLength\",{enumerable:!1,get:function(){return this._writableState.length}}),Object.defineProperty(O.prototype,\"destroyed\",{enumerable:!1,get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),O.prototype.destroy=l.destroy,O.prototype._undestroy=l.undestroy,O.prototype._destroy=function(e,t){t(e)}}).call(this,e(\"_process\"),\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"../errors\":428,\"./_stream_duplex\":429,\"./internal/streams/destroy\":436,\"./internal/streams/state\":440,\"./internal/streams/stream\":441,_process:419,buffer:188,inherits:341,\"util-deprecate\":472}],434:[function(e,t,r){(function(r){var n;function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var i=e(\"./end-of-stream\"),a=Symbol(\"lastResolve\"),s=Symbol(\"lastReject\"),u=Symbol(\"error\"),c=Symbol(\"ended\"),f=Symbol(\"lastPromise\"),l=Symbol(\"handlePromise\"),h=Symbol(\"stream\");function d(e,t){return{value:e,done:t}}function p(e){var t=e[a];if(null!==t){var r=e[h].read();null!==r&&(e[f]=null,e[a]=null,e[s]=null,t(d(r,!1)))}}function y(e){r.nextTick(p,e)}var m=Object.getPrototypeOf((function(){})),b=Object.setPrototypeOf((o(n={get stream(){return this[h]},next:function(){var e=this,t=this[u];if(null!==t)return Promise.reject(t);if(this[c])return Promise.resolve(d(void 0,!0));if(this[h].destroyed)return new Promise((function(t,n){r.nextTick((function(){e[u]?n(e[u]):t(d(void 0,!0))}))}));var n,o=this[f];if(o)n=new Promise(function(e,t){return function(r,n){e.then((function(){t[c]?r(d(void 0,!0)):t[l](r,n)}),n)}}(o,this));else{var i=this[h].read();if(null!==i)return Promise.resolve(d(i,!1));n=new Promise(this[l])}return this[f]=n,n}},Symbol.asyncIterator,(function(){return this})),o(n,\"return\",(function(){var e=this;return new Promise((function(t,r){e[h].destroy(null,(function(e){e?r(e):t(d(void 0,!0))}))}))})),n),m);t.exports=function(e){var t,r=Object.create(b,(o(t={},h,{value:e,writable:!0}),o(t,a,{value:null,writable:!0}),o(t,s,{value:null,writable:!0}),o(t,u,{value:null,writable:!0}),o(t,c,{value:e._readableState.endEmitted,writable:!0}),o(t,l,{value:function(e,t){var n=r[h].read();n?(r[f]=null,r[a]=null,r[s]=null,e(d(n,!1))):(r[a]=e,r[s]=t)},writable:!0}),t));return r[f]=null,i(e,(function(e){if(e&&\"ERR_STREAM_PREMATURE_CLOSE\"!==e.code){var t=r[s];return null!==t&&(r[f]=null,r[a]=null,r[s]=null,t(e)),void(r[u]=e)}var n=r[a];null!==n&&(r[f]=null,r[a]=null,r[s]=null,n(d(void 0,!0))),r[c]=!0})),e.on(\"readable\",y.bind(null,r)),r}}).call(this,e(\"_process\"))},{\"./end-of-stream\":437,_process:419}],435:[function(e,t,r){function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){for(var r=0;r0?this.tail.next=t:this.head=t,this.tail=t,++this.length}},{key:\"unshift\",value:function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length}},{key:\"shift\",value:function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}}},{key:\"clear\",value:function(){this.head=this.tail=null,this.length=0}},{key:\"join\",value:function(e){if(0===this.length)return\"\";for(var t=this.head,r=\"\"+t.data;t=t.next;)r+=e+t.data;return r}},{key:\"concat\",value:function(e){if(0===this.length)return a.alloc(0);for(var t,r,n,o=a.allocUnsafe(e>>>0),i=this.head,s=0;i;)t=i.data,r=o,n=s,a.prototype.copy.call(t,r,n),s+=i.data.length,i=i.next;return o}},{key:\"consume\",value:function(e,t){var r;return eo.length?o.length:e;if(i===o.length?n+=o:n+=o.slice(0,e),0==(e-=i)){i===o.length?(++r,t.next?this.head=t.next:this.head=this.tail=null):(this.head=t,t.data=o.slice(i));break}++r}return this.length-=r,n}},{key:\"_getBuffer\",value:function(e){var t=a.allocUnsafe(e),r=this.head,n=1;for(r.data.copy(t),e-=r.data.length;r=r.next;){var o=r.data,i=e>o.length?o.length:e;if(o.copy(t,t.length-e,0,i),0==(e-=i)){i===o.length?(++n,r.next?this.head=r.next:this.head=this.tail=null):(this.head=r,r.data=o.slice(i));break}++n}return this.length-=n,t}},{key:u,value:function(e,t){return s(this,function(e){for(var t=1;t0,(function(e){n||(n=e),e&&a.forEach(c),i||(a.forEach(c),o(n))}))}));return t.reduce(f)}},{\"../../../errors\":428,\"./end-of-stream\":437}],440:[function(e,t,r){var n=e(\"../../../errors\").codes.ERR_INVALID_OPT_VALUE;t.exports={getHighWaterMark:function(e,t,r,o){var i=function(e,t,r){return null!=e.highWaterMark?e.highWaterMark:t?e[r]:null}(t,o,r);if(null!=i){if(!isFinite(i)||Math.floor(i)!==i||i<0)throw new n(o?r:\"highWaterMark\",i);return Math.floor(i)}return e.objectMode?16:16384}}},{\"../../../errors\":428}],441:[function(e,t,r){t.exports=e(\"events\").EventEmitter},{events:299}],442:[function(e,t,r){(r=t.exports=e(\"./lib/_stream_readable.js\")).Stream=r,r.Readable=r,r.Writable=e(\"./lib/_stream_writable.js\"),r.Duplex=e(\"./lib/_stream_duplex.js\"),r.Transform=e(\"./lib/_stream_transform.js\"),r.PassThrough=e(\"./lib/_stream_passthrough.js\"),r.finished=e(\"./lib/internal/streams/end-of-stream.js\"),r.pipeline=e(\"./lib/internal/streams/pipeline.js\")},{\"./lib/_stream_duplex.js\":429,\"./lib/_stream_passthrough.js\":430,\"./lib/_stream_readable.js\":431,\"./lib/_stream_transform.js\":432,\"./lib/_stream_writable.js\":433,\"./lib/internal/streams/end-of-stream.js\":437,\"./lib/internal/streams/pipeline.js\":439}],443:[function(e,t,r){var n=function(e){var t=Object.prototype,r=t.hasOwnProperty,n=\"function\"==typeof Symbol?Symbol:{},o=n.iterator||\"@@iterator\",i=n.asyncIterator||\"@@asyncIterator\",a=n.toStringTag||\"@@toStringTag\";function s(e,t,r,n){var o=t&&t.prototype instanceof f?t:f,i=Object.create(o.prototype),a=new k(n||[]);return i._invoke=function(e,t,r){var n=\"suspendedStart\";return function(o,i){if(\"executing\"===n)throw new Error(\"Generator is already running\");if(\"completed\"===n){if(\"throw\"===o)throw i;return S()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var s=g(a,r);if(s){if(s===c)continue;return s}}if(\"next\"===r.method)r.sent=r._sent=r.arg;else if(\"throw\"===r.method){if(\"suspendedStart\"===n)throw n=\"completed\",r.arg;r.dispatchException(r.arg)}else\"return\"===r.method&&r.abrupt(\"return\",r.arg);n=\"executing\";var f=u(e,t,r);if(\"normal\"===f.type){if(n=r.done?\"completed\":\"suspendedYield\",f.arg===c)continue;return{value:f.arg,done:r.done}}\"throw\"===f.type&&(n=\"completed\",r.method=\"throw\",r.arg=f.arg)}}}(e,r,a),i}function u(e,t,r){try{return{type:\"normal\",arg:e.call(t,r)}}catch(e){return{type:\"throw\",arg:e}}}e.wrap=s;var c={};function f(){}function l(){}function h(){}var d={};d[o]=function(){return this};var p=Object.getPrototypeOf,y=p&&p(p(x([])));y&&y!==t&&r.call(y,o)&&(d=y);var m=h.prototype=f.prototype=Object.create(d);function b(e){[\"next\",\"throw\",\"return\"].forEach((function(t){e[t]=function(e){return this._invoke(t,e)}}))}function v(e,t){var n;this._invoke=function(o,i){function a(){return new t((function(n,a){!function n(o,i,a,s){var c=u(e[o],e,i);if(\"throw\"!==c.type){var f=c.arg,l=f.value;return l&&\"object\"===_typeof2(l)&&r.call(l,\"__await\")?t.resolve(l.__await).then((function(e){n(\"next\",e,a,s)}),(function(e){n(\"throw\",e,a,s)})):t.resolve(l).then((function(e){f.value=e,a(f)}),(function(e){return n(\"throw\",e,a,s)}))}s(c.arg)}(o,i,n,a)}))}return n=n?n.then(a,a):a()}}function g(e,t){var r=e.iterator[t.method];if(void 0===r){if(t.delegate=null,\"throw\"===t.method){if(e.iterator.return&&(t.method=\"return\",t.arg=void 0,g(e,t),\"throw\"===t.method))return c;t.method=\"throw\",t.arg=new TypeError(\"The iterator does not provide a 'throw' method\")}return c}var n=u(r,e.iterator,t.arg);if(\"throw\"===n.type)return t.method=\"throw\",t.arg=n.arg,t.delegate=null,c;var o=n.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,\"return\"!==t.method&&(t.method=\"next\",t.arg=void 0),t.delegate=null,c):o:(t.method=\"throw\",t.arg=new TypeError(\"iterator result is not an object\"),t.delegate=null,c)}function w(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function _(e){var t=e.completion||{};t.type=\"normal\",delete t.arg,e.completion=t}function k(e){this.tryEntries=[{tryLoc:\"root\"}],e.forEach(w,this),this.reset(!0)}function x(e){if(e){var t=e[o];if(t)return t.call(e);if(\"function\"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,i=function t(){for(;++n=0;--o){var i=this.tryEntries[o],a=i.completion;if(\"root\"===i.tryLoc)return n(\"end\");if(i.tryLoc<=this.prev){var s=r.call(i,\"catchLoc\"),u=r.call(i,\"finallyLoc\");if(s&&u){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,\"finallyLoc\")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),_(r),c}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if(\"throw\"===n.type){var o=n.arg;_(r)}return o}}throw new Error(\"illegal catch attempt\")},delegateYield:function(e,t,r){return this.delegate={iterator:x(e),resultName:t,nextLoc:r},\"next\"===this.method&&(this.arg=void 0),c}},e}(\"object\"===_typeof2(t)?t.exports:{});try{regeneratorRuntime=n}catch(e){Function(\"r\",\"regeneratorRuntime = r\")(n)}},{}],444:[function(e,t,r){var n=e(\"buffer\").Buffer,o=e(\"inherits\"),i=e(\"hash-base\"),a=new Array(16),s=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],u=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],c=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],f=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11],l=[0,1518500249,1859775393,2400959708,2840853838],h=[1352829926,1548603684,1836072691,2053994217,0];function d(){i.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520}function p(e,t){return e<>>32-t}function y(e,t,r,n,o,i,a,s){return p(e+(t^r^n)+i+a|0,s)+o|0}function m(e,t,r,n,o,i,a,s){return p(e+(t&r|~t&n)+i+a|0,s)+o|0}function b(e,t,r,n,o,i,a,s){return p(e+((t|~r)^n)+i+a|0,s)+o|0}function v(e,t,r,n,o,i,a,s){return p(e+(t&n|r&~n)+i+a|0,s)+o|0}function g(e,t,r,n,o,i,a,s){return p(e+(t^(r|~n))+i+a|0,s)+o|0}o(d,i),d.prototype._update=function(){for(var e=a,t=0;t<16;++t)e[t]=this._block.readInt32LE(4*t);for(var r=0|this._a,n=0|this._b,o=0|this._c,i=0|this._d,d=0|this._e,w=0|this._a,_=0|this._b,k=0|this._c,x=0|this._d,S=0|this._e,O=0;O<80;O+=1){var E,R;O<16?(E=y(r,n,o,i,d,e[s[O]],l[0],c[O]),R=g(w,_,k,x,S,e[u[O]],h[0],f[O])):O<32?(E=m(r,n,o,i,d,e[s[O]],l[1],c[O]),R=v(w,_,k,x,S,e[u[O]],h[1],f[O])):O<48?(E=b(r,n,o,i,d,e[s[O]],l[2],c[O]),R=b(w,_,k,x,S,e[u[O]],h[2],f[O])):O<64?(E=v(r,n,o,i,d,e[s[O]],l[3],c[O]),R=m(w,_,k,x,S,e[u[O]],h[3],f[O])):(E=g(r,n,o,i,d,e[s[O]],l[4],c[O]),R=y(w,_,k,x,S,e[u[O]],h[4],f[O])),r=d,d=i,i=p(o,10),o=n,n=E,w=S,S=x,x=p(k,10),k=_,_=R}var j=this._b+o+x|0;this._b=this._c+i+S|0,this._c=this._d+d+w|0,this._d=this._e+r+_|0,this._e=this._a+n+k|0,this._a=j},d.prototype._digest=function(){this._block[this._blockOffset++]=128,this._blockOffset>56&&(this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0),this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var e=n.alloc?n.alloc(20):new n(20);return e.writeInt32LE(this._a,0),e.writeInt32LE(this._b,4),e.writeInt32LE(this._c,8),e.writeInt32LE(this._d,12),e.writeInt32LE(this._e,16),e},t.exports=d},{buffer:188,\"hash-base\":325,inherits:341}],445:[function(e,t,r){var n=e(\"buffer\"),o=n.Buffer;function i(e,t){for(var r in e)t[r]=e[r]}function a(e,t,r){return o(e,t,r)}o.from&&o.alloc&&o.allocUnsafe&&o.allocUnsafeSlow?t.exports=n:(i(n,r),r.Buffer=a),i(o,a),a.from=function(e,t,r){if(\"number\"==typeof e)throw new TypeError(\"Argument must not be a number\");return o(e,t,r)},a.alloc=function(e,t,r){if(\"number\"!=typeof e)throw new TypeError(\"Argument must be a number\");var n=o(e);return void 0!==t?\"string\"==typeof r?n.fill(t,r):n.fill(t):n.fill(0),n},a.allocUnsafe=function(e){if(\"number\"!=typeof e)throw new TypeError(\"Argument must be a number\");return o(e)},a.allocUnsafeSlow=function(e){if(\"number\"!=typeof e)throw new TypeError(\"Argument must be a number\");return n.SlowBuffer(e)}},{buffer:188}],446:[function(e,t,r){Object.defineProperty(r,\"__esModule\",{value:!0});var n=e(\"xmlchars/xml/1.0/ed5\"),o=e(\"xmlchars/xml/1.1/ed2\"),i=e(\"xmlchars/xmlns/1.0/ed3\"),a=n.isS,s=n.isChar,u=n.isNameStartChar,c=n.isNameChar,f=n.S_LIST,l=n.NAME_RE,h=o.isChar,d=i.isNCNameStartChar,p=i.isNCNameChar,y=i.NC_NAME_RE,m=\"http://www.w3.org/XML/1998/namespace\",b=\"http://www.w3.org/2000/xmlns/\",v={__proto__:null,xml:m,xmlns:b},g={__proto__:null,amp:\"&\",gt:\">\",lt:\"<\",quot:'\"',apos:\"'\"},w=61,_=63,k=function(e){return 34===e||39===e},x=[34,39],S=[].concat(x,[91,62]),O=[].concat(x,[60,93]),E=[w,_].concat(_toConsumableArray2(f)),R=[].concat(_toConsumableArray2(f),[62,38,60]);function j(e,t,r){switch(t){case\"xml\":r!==m&&e.fail(\"xml prefix must be bound to \".concat(m,\".\"));break;case\"xmlns\":r!==b&&e.fail(\"xmlns prefix must be bound to \".concat(b,\".\"))}switch(r){case b:e.fail(\"\"===t?\"the default namespace may not be set to \".concat(r,\".\"):'may not assign a prefix (even \"xmlns\") to the URI '.concat(b,\".\"));break;case m:switch(t){case\"xml\":break;case\"\":e.fail(\"the default namespace may not be set to \".concat(r,\".\"));break;default:e.fail(\"may not assign the xml namespace to another prefix.\")}}}var T=function(e){return y.test(e)},C=function(e){return l.test(e)};r.EVENTS=[\"xmldecl\",\"text\",\"processinginstruction\",\"doctype\",\"comment\",\"opentagstart\",\"attribute\",\"opentag\",\"closetag\",\"cdata\",\"error\",\"end\",\"ready\"];var P={xmldecl:\"xmldeclHandler\",text:\"textHandler\",processinginstruction:\"piHandler\",doctype:\"doctypeHandler\",comment:\"commentHandler\",opentagstart:\"openTagStartHandler\",attribute:\"attributeHandler\",opentag:\"openTagHandler\",closetag:\"closeTagHandler\",cdata:\"cdataHandler\",error:\"errorHandler\",end:\"endHandler\",ready:\"readyHandler\"},A=function(){function e(t){_classCallCheck2(this,e),this.opt=null!=t?t:{},this.fragmentOpt=!!this.opt.fragment;var r=this.xmlnsOpt=!!this.opt.xmlns;if(this.trackPosition=!1!==this.opt.position,this.fileName=this.opt.fileName,r){this.nameStartCheck=d,this.nameCheck=p,this.isName=T,this.processAttribs=this.processAttribsNS,this.pushAttrib=this.pushAttribNS,this.ns=Object.assign({__proto__:null},v);var n=this.opt.additionalNamespaces;null!=n&&(!function(e,t){for(var r=0,n=Object.keys(t);r0&&(r+=\":\"),r+=\"\".concat(this.line,\":\").concat(this.column)),r.length>0&&(r+=\": \"),new Error(r+e)}},{key:\"fail\",value:function(e){var t=this.makeError(e),r=this.errorHandler;if(void 0===r)throw t;return r(t),this}},{key:\"write\",value:function(e){if(this.closed)return this.fail(\"cannot write after close; assign an onready handler.\");var t=!1;null===e?(t=!0,e=\"\"):\"object\"===_typeof2(e)&&(e=e.toString()),void 0!==this.carriedFromPrevious&&(e=\"\".concat(this.carriedFromPrevious).concat(e),this.carriedFromPrevious=void 0);var r=e.length,n=e.charCodeAt(r-1);!t&&(13===n||n>=55296&&n<=56319)&&(this.carriedFromPrevious=e[r-1],r--,e=e.slice(0,r));var o=this.stateTable;for(this.chunk=e,this.i=0;this.i=e.length)return-1;var r=e.charCodeAt(t);if(this.column++,r<55296){if(r>=32||9===r)return r;switch(r){case 10:return this.line++,this.column=0,this.positionAtNewLine=this.position,10;case 13:return 10===e.charCodeAt(t+1)&&(this.i=t+2),this.line++,this.column=0,this.positionAtNewLine=this.position,-2;default:return this.fail(\"disallowed character.\"),r}}if(r>56319)return r>=57344&&r<=65533||this.fail(\"disallowed character.\"),r;var n=65536+1024*(r-55296)+(e.charCodeAt(t+1)-56320);return this.i=t+2,n>1114111&&this.fail(\"disallowed character.\"),n}},{key:\"getCode11\",value:function(){var e=this.chunk,t=this.i;if(this.prevI=t,this.i=t+1,t>=e.length)return-1;var r=e.charCodeAt(t);if(this.column++,r<55296){if(r>31&&r<127||r>159&&8232!==r||9===r)return r;switch(r){case 10:return this.line++,this.column=0,this.positionAtNewLine=this.position,10;case 13:var n=e.charCodeAt(t+1);10!==n&&133!==n||(this.i=t+2);case 133:case 8232:return this.line++,this.column=0,this.positionAtNewLine=this.position,-2;default:return this.fail(\"disallowed character.\"),r}}if(r>56319)return r>=57344&&r<=65533||this.fail(\"disallowed character.\"),r;var o=65536+1024*(r-55296)+(e.charCodeAt(t+1)-56320);return this.i=t+2,o>1114111&&this.fail(\"disallowed character.\"),o}},{key:\"getCodeNorm\",value:function(){var e=this.getCode();return-2===e?10:e}},{key:\"unget\",value:function(){this.i=this.prevI,this.column--}},{key:\"captureTo\",value:function(e){for(var t=this.i,r=this.chunk;;){var n=this.getCode(),o=-2===n,i=o?10:n;if(-1===i||e.includes(i))return this.text+=r.slice(t,this.prevI),i;o&&(this.text+=\"\".concat(r.slice(t,this.prevI),\"\\n\"),t=this.i)}}},{key:\"captureToChar\",value:function(e){for(var t=this.i,r=this.chunk;;){var n=this.getCode();switch(n){case-2:this.text+=\"\".concat(r.slice(t,this.prevI),\"\\n\"),t=this.i,n=10;break;case-1:return this.text+=r.slice(t),!1}if(n===e)return this.text+=r.slice(t,this.prevI),!0}}},{key:\"captureNameChars\",value:function(){for(var e=this.chunk,t=this.i;;){var r=this.getCode();if(-1===r)return this.name+=e.slice(t),-1;if(!c(r))return this.name+=e.slice(t,this.prevI),-2===r?10:r}}},{key:\"skipSpaces\",value:function(){for(;;){var e=this.getCodeNorm();if(-1===e||!a(e))return e}}},{key:\"setXMLVersion\",value:function(e){this.currentXMLVersion=e,\"1.0\"===e?(this.isChar=s,this.getCode=this.getCode10):(this.isChar=h,this.getCode=this.getCode11)}},{key:\"sBegin\",value:function(){65279===this.chunk.charCodeAt(0)&&(this.i++,this.column++),this.state=1}},{key:\"sBeginWhitespace\",value:function(){var e=this.i,t=this.skipSpaces();switch(this.prevI!==e&&(this.xmlDeclPossible=!1),t){case 60:if(this.state=15,0!==this.text.length)throw new Error(\"no-empty text at start\");break;case-1:break;default:this.unget(),this.state=13,this.xmlDeclPossible=!1}}},{key:\"sDoctype\",value:function(){var e,t=this.captureTo(S);switch(t){case 62:null===(e=this.doctypeHandler)||void 0===e||e.call(this,this.text),this.text=\"\",this.state=13,this.doctype=!0;break;case-1:break;default:this.text+=String.fromCodePoint(t),91===t?this.state=4:k(t)&&(this.state=3,this.q=t)}}},{key:\"sDoctypeQuote\",value:function(){var e=this.q;this.captureToChar(e)&&(this.text+=String.fromCodePoint(e),this.q=null,this.state=2)}},{key:\"sDTD\",value:function(){var e=this.captureTo(O);-1!==e&&(this.text+=String.fromCodePoint(e),93===e?this.state=2:60===e?this.state=6:k(e)&&(this.state=5,this.q=e))}},{key:\"sDTDQuoted\",value:function(){var e=this.q;this.captureToChar(e)&&(this.text+=String.fromCodePoint(e),this.state=4,this.q=null)}},{key:\"sDTDOpenWaka\",value:function(){var e=this.getCodeNorm();switch(this.text+=String.fromCodePoint(e),e){case 33:this.state=7,this.openWakaBang=\"\";break;case _:this.state=11;break;default:this.state=4}}},{key:\"sDTDOpenWakaBang\",value:function(){var e=String.fromCodePoint(this.getCodeNorm()),t=this.openWakaBang+=e;this.text+=e,\"-\"!==t&&(this.state=\"--\"===t?8:4,this.openWakaBang=\"\")}},{key:\"sDTDComment\",value:function(){this.captureToChar(45)&&(this.text+=\"-\",this.state=9)}},{key:\"sDTDCommentEnding\",value:function(){var e=this.getCodeNorm();this.text+=String.fromCodePoint(e),this.state=45===e?10:8}},{key:\"sDTDCommentEnded\",value:function(){var e=this.getCodeNorm();this.text+=String.fromCodePoint(e),62===e?this.state=4:(this.fail(\"malformed comment.\"),this.state=8)}},{key:\"sDTDPI\",value:function(){this.captureToChar(_)&&(this.text+=\"?\",this.state=12)}},{key:\"sDTDPIEnding\",value:function(){var e=this.getCodeNorm();this.text+=String.fromCodePoint(e),62===e&&(this.state=4)}},{key:\"sText\",value:function(){0!==this.tags.length?this.handleTextInRoot():this.handleTextOutsideRoot()}},{key:\"sEntity\",value:function(){var e=this.i,t=this.chunk;e:for(;;)switch(this.getCode()){case-2:this.entity+=\"\".concat(t.slice(e,this.prevI),\"\\n\"),e=this.i;break;case 59:var r=this.entity+t.slice(e,this.prevI);if(this.state=this.entityReturnState,\"\"===r)return this.fail(\"empty entity name.\"),void(this.text+=\"&;\");this.text+=this.parseEntity(r),this.entity=\"\";break e;case-1:this.entity+=t.slice(e);break e}}},{key:\"sOpenWaka\",value:function(){var e=this.getCode();if(u(e))this.state=34,this.unget(),this.xmlDeclPossible=!1;else switch(e){case 47:this.state=43,this.xmlDeclPossible=!1;break;case 33:this.state=16,this.openWakaBang=\"\",this.xmlDeclPossible=!1;break;case _:this.state=23;break;default:this.fail(\"disallowed character in tag name\"),this.state=13,this.xmlDeclPossible=!1}}},{key:\"sOpenWakaBang\",value:function(){switch(this.openWakaBang+=String.fromCodePoint(this.getCodeNorm()),this.openWakaBang){case\"[CDATA[\":this.sawRoot||this.reportedTextBeforeRoot||(this.fail(\"text data outside of root node.\"),this.reportedTextBeforeRoot=!0),this.closedRoot&&!this.reportedTextAfterRoot&&(this.fail(\"text data outside of root node.\"),this.reportedTextAfterRoot=!0),this.state=20,this.openWakaBang=\"\";break;case\"--\":this.state=17,this.openWakaBang=\"\";break;case\"DOCTYPE\":this.state=2,(this.doctype||this.sawRoot)&&this.fail(\"inappropriately located doctype declaration.\"),this.openWakaBang=\"\";break;default:this.openWakaBang.length>=7&&this.fail(\"incorrect syntax.\")}}},{key:\"sComment\",value:function(){this.captureToChar(45)&&(this.state=18)}},{key:\"sCommentEnding\",value:function(){var e,t=this.getCodeNorm();45===t?(this.state=19,null===(e=this.commentHandler)||void 0===e||e.call(this,this.text),this.text=\"\"):(this.text+=\"-\".concat(String.fromCodePoint(t)),this.state=17)}},{key:\"sCommentEnded\",value:function(){var e=this.getCodeNorm();62!==e?(this.fail(\"malformed comment.\"),this.text+=\"--\".concat(String.fromCodePoint(e)),this.state=17):this.state=13}},{key:\"sCData\",value:function(){this.captureToChar(93)&&(this.state=21)}},{key:\"sCDataEnding\",value:function(){var e=this.getCodeNorm();93===e?this.state=22:(this.text+=\"]\".concat(String.fromCodePoint(e)),this.state=20)}},{key:\"sCDataEnding2\",value:function(){var e,t=this.getCodeNorm();switch(t){case 62:null===(e=this.cdataHandler)||void 0===e||e.call(this,this.text),this.text=\"\",this.state=13;break;case 93:this.text+=\"]\";break;default:this.text+=\"]]\".concat(String.fromCodePoint(t)),this.state=20}}},{key:\"sPIFirstChar\",value:function(){var e=this.getCodeNorm();this.nameStartCheck(e)?(this.piTarget+=String.fromCodePoint(e),this.state=24):e===_||a(e)?(this.fail(\"processing instruction without a target.\"),this.state=e===_?26:25):(this.fail(\"disallowed character in processing instruction name.\"),this.piTarget+=String.fromCodePoint(e),this.state=24)}},{key:\"sPIRest\",value:function(){for(var e=this.chunk,t=this.i;;){var r=this.getCodeNorm();if(-1===r)return void(this.piTarget+=e.slice(t));if(!this.nameCheck(r)){this.piTarget+=e.slice(t,this.prevI);var n=r===_;n||a(r)?\"xml\"===this.piTarget?(this.xmlDeclPossible||this.fail(\"an XML declaration must be at the start of the document.\"),this.state=n?33:27):this.state=n?26:25:(this.fail(\"disallowed character in processing instruction name.\"),this.piTarget+=String.fromCodePoint(r));break}}}},{key:\"sPIBody\",value:function(){if(0===this.text.length){var e=this.getCodeNorm();e===_?this.state=26:a(e)||(this.text=String.fromCodePoint(e))}else this.captureToChar(_)&&(this.state=26)}},{key:\"sPIEnding\",value:function(){var e,t=this.getCodeNorm();if(62===t){var r=this.piTarget;\"xml\"===r.toLowerCase()&&this.fail(\"the XML declaration must appear at the start of the document.\"),null===(e=this.piHandler)||void 0===e||e.call(this,{target:r,body:this.text}),this.piTarget=this.text=\"\",this.state=13}else t===_?this.text+=\"?\":(this.text+=\"?\".concat(String.fromCodePoint(t)),this.state=25);this.xmlDeclPossible=!1}},{key:\"sXMLDeclNameStart\",value:function(){var e=this.skipSpaces();e!==_?-1!==e&&(this.state=28,this.name=String.fromCodePoint(e)):this.state=33}},{key:\"sXMLDeclName\",value:function(){var e=this.captureTo(E);if(e===_)return this.state=33,this.name+=this.text,this.text=\"\",void this.fail(\"XML declaration is incomplete.\");if(a(e)||e===w){if(this.name+=this.text,this.text=\"\",!this.xmlDeclExpects.includes(this.name))switch(this.name.length){case 0:this.fail(\"did not expect any more name/value pairs.\");break;case 1:this.fail(\"expected the name \".concat(this.xmlDeclExpects[0],\".\"));break;default:this.fail(\"expected one of \".concat(this.xmlDeclExpects.join(\", \")))}this.state=e===w?30:29}}},{key:\"sXMLDeclEq\",value:function(){var e=this.getCodeNorm();if(e===_)return this.state=33,void this.fail(\"XML declaration is incomplete.\");a(e)||(e!==w&&this.fail(\"value required.\"),this.state=30)}},{key:\"sXMLDeclValueStart\",value:function(){var e=this.getCodeNorm();if(e===_)return this.state=33,void this.fail(\"XML declaration is incomplete.\");a(e)||(k(e)?this.q=e:(this.fail(\"value must be quoted.\"),this.q=32),this.state=31)}},{key:\"sXMLDeclValue\",value:function(){var e=this.captureTo([this.q,_]);if(e===_)return this.state=33,this.text=\"\",void this.fail(\"XML declaration is incomplete.\");if(-1!==e){var t=this.text;switch(this.text=\"\",this.name){case\"version\":this.xmlDeclExpects=[\"encoding\",\"standalone\"];var r=t;this.xmlDecl.version=r,/^1\\.[0-9]+$/.test(r)?this.opt.forceXMLVersion||this.setXMLVersion(r):this.fail(\"version number must match /^1\\\\.[0-9]+$/.\");break;case\"encoding\":/^[A-Za-z][A-Za-z0-9._-]*$/.test(t)||this.fail(\"encoding value must match /^[A-Za-z0-9][A-Za-z0-9._-]*$/.\"),this.xmlDeclExpects=[\"standalone\"],this.xmlDecl.encoding=t;break;case\"standalone\":\"yes\"!==t&&\"no\"!==t&&this.fail('standalone value must match \"yes\" or \"no\".'),this.xmlDeclExpects=[],this.xmlDecl.standalone=t}this.name=\"\",this.state=32}}},{key:\"sXMLDeclSeparator\",value:function(){var e=this.getCodeNorm();e!==_?(a(e)||(this.fail(\"whitespace required.\"),this.unget()),this.state=27):this.state=33}},{key:\"sXMLDeclEnding\",value:function(){var e;62===this.getCodeNorm()?(\"xml\"!==this.piTarget?this.fail(\"processing instructions are not allowed before root.\"):\"version\"!==this.name&&this.xmlDeclExpects.includes(\"version\")&&this.fail(\"XML declaration must contain a version.\"),null===(e=this.xmldeclHandler)||void 0===e||e.call(this,this.xmlDecl),this.name=\"\",this.piTarget=this.text=\"\",this.state=13):this.fail(\"The character ? is disallowed anywhere in XML declarations.\"),this.xmlDeclPossible=!1}},{key:\"sOpenTag\",value:function(){var e,t=this.captureNameChars();if(-1!==t){var r=this.tag={name:this.name,attributes:Object.create(null)};switch(this.name=\"\",this.xmlnsOpt&&(this.topNS=r.ns=Object.create(null)),null===(e=this.openTagStartHandler)||void 0===e||e.call(this,r),this.sawRoot=!0,!this.fragmentOpt&&this.closedRoot&&this.fail(\"documents may contain only one root.\"),t){case 62:this.openTag();break;case 47:this.state=35;break;default:a(t)||this.fail(\"disallowed character in tag name.\"),this.state=36}}}},{key:\"sOpenTagSlash\",value:function(){62===this.getCode()?this.openSelfClosingTag():(this.fail(\"forward-slash in opening tag not followed by >.\"),this.state=36)}},{key:\"sAttrib\",value:function(){var e=this.skipSpaces();-1!==e&&(u(e)?(this.unget(),this.state=37):62===e?this.openTag():47===e?this.state=35:this.fail(\"disallowed character in attribute name.\"))}},{key:\"sAttribName\",value:function(){var e=this.captureNameChars();e===w?this.state=39:a(e)?this.state=38:62===e?(this.fail(\"attribute without value.\"),this.pushAttrib(this.name,this.name),this.name=this.text=\"\",this.openTag()):-1!==e&&this.fail(\"disallowed character in attribute name.\")}},{key:\"sAttribNameSawWhite\",value:function(){var e=this.skipSpaces();switch(e){case-1:return;case w:this.state=39;break;default:this.fail(\"attribute without value.\"),this.text=\"\",this.name=\"\",62===e?this.openTag():u(e)?(this.unget(),this.state=37):(this.fail(\"disallowed character in attribute name.\"),this.state=36)}}},{key:\"sAttribValue\",value:function(){var e=this.getCodeNorm();k(e)?(this.q=e,this.state=40):a(e)||(this.fail(\"unquoted attribute value.\"),this.state=42,this.unget())}},{key:\"sAttribValueQuoted\",value:function(){for(var e=this.q,t=this.chunk,r=this.i;;)switch(this.getCode()){case e:return this.pushAttrib(this.name,this.text+t.slice(r,this.prevI)),this.name=this.text=\"\",this.q=null,void(this.state=41);case 38:return this.text+=t.slice(r,this.prevI),this.state=14,void(this.entityReturnState=40);case 10:case-2:case 9:this.text+=\"\".concat(t.slice(r,this.prevI),\" \"),r=this.i;break;case 60:return this.text+=t.slice(r,this.prevI),void this.fail(\"disallowed character.\");case-1:return void(this.text+=t.slice(r))}}},{key:\"sAttribValueClosed\",value:function(){var e=this.getCodeNorm();a(e)?this.state=36:62===e?this.openTag():47===e?this.state=35:u(e)?(this.fail(\"no whitespace between attributes.\"),this.unget(),this.state=37):this.fail(\"disallowed character in attribute name.\")}},{key:\"sAttribValueUnquoted\",value:function(){var e=this.captureTo(R);switch(e){case 38:this.state=14,this.entityReturnState=42;break;case 60:this.fail(\"disallowed character.\");break;case-1:break;default:this.text.includes(\"]]>\")&&this.fail('the string \"]]>\" is disallowed in char data.'),this.pushAttrib(this.name,this.text),this.name=this.text=\"\",62===e?this.openTag():this.state=36}}},{key:\"sCloseTag\",value:function(){var e=this.captureNameChars();62===e?this.closeTag():a(e)?this.state=44:-1!==e&&this.fail(\"disallowed character in closing tag.\")}},{key:\"sCloseTagSawWhite\",value:function(){switch(this.skipSpaces()){case 62:this.closeTag();break;case-1:break;default:this.fail(\"disallowed character in closing tag.\")}}},{key:\"handleTextInRoot\",value:function(){var e=this.i,t=this.forbiddenState,r=this.chunk,n=this.textHandler;e:for(;;)switch(this.getCode()){case 60:if(this.state=15,void 0!==n){var o=this.text,i=r.slice(e,this.prevI);0!==o.length?(n(o+i),this.text=\"\"):0!==i.length&&n(i)}t=0;break e;case 38:this.state=14,this.entityReturnState=13,void 0!==n&&(this.text+=r.slice(e,this.prevI)),t=0;break e;case 93:switch(t){case 0:t=1;break;case 1:t=2;break;case 2:break;default:throw new Error(\"impossible state\")}break;case 62:2===t&&this.fail('the string \"]]>\" is disallowed in char data.'),t=0;break;case-2:void 0!==n&&(this.text+=\"\".concat(r.slice(e,this.prevI),\"\\n\")),e=this.i,t=0;break;case-1:void 0!==n&&(this.text+=r.slice(e));break e;default:t=0}this.forbiddenState=t}},{key:\"handleTextOutsideRoot\",value:function(){var e=this.i,t=this.chunk,r=this.textHandler,n=!1;e:for(;;){var o=this.getCode();switch(o){case 60:if(this.state=15,void 0!==r){var i=this.text,s=t.slice(e,this.prevI);0!==i.length?(r(i+s),this.text=\"\"):0!==s.length&&r(s)}break e;case 38:this.state=14,this.entityReturnState=13,void 0!==r&&(this.text+=t.slice(e,this.prevI)),n=!0;break e;case-2:void 0!==r&&(this.text+=\"\".concat(t.slice(e,this.prevI),\"\\n\")),e=this.i;break;case-1:void 0!==r&&(this.text+=t.slice(e));break e;default:a(o)||(n=!0)}}n&&(this.sawRoot||this.reportedTextBeforeRoot||(this.fail(\"text data outside of root node.\"),this.reportedTextBeforeRoot=!0),this.closedRoot&&!this.reportedTextAfterRoot&&(this.fail(\"text data outside of root node.\"),this.reportedTextAfterRoot=!0))}},{key:\"pushAttribNS\",value:function(e,t){var r,n=this.qname(e),o=n.prefix,i=n.local,a={name:e,prefix:o,local:i,value:t};if(this.attribList.push(a),null===(r=this.attributeHandler)||void 0===r||r.call(this,a),\"xmlns\"===o){var s=t.trim();\"1.0\"===this.currentXMLVersion&&\"\"===s&&this.fail(\"invalid attempt to undefine prefix in XML 1.0\"),this.topNS[i]=s,j(this,i,s)}else if(\"xmlns\"===e){var u=t.trim();this.topNS[\"\"]=u,j(this,\"\",u)}}},{key:\"pushAttribPlain\",value:function(e,t){var r,n={name:e,value:t};this.attribList.push(n),null===(r=this.attributeHandler)||void 0===r||r.call(this,n)}},{key:\"end\",value:function(){var e,t;this.sawRoot||this.fail(\"document must contain a root element.\");for(var r=this.tags;r.length>0;){var n=r.pop();this.fail(\"unclosed tag: \".concat(n.name))}0!==this.state&&13!==this.state&&this.fail(\"unexpected end.\");var o=this.text;return 0!==o.length&&(null===(e=this.textHandler)||void 0===e||e.call(this,o),this.text=\"\"),this._closed=!0,null===(t=this.endHandler)||void 0===t||t.call(this),this._init(),this}},{key:\"resolve\",value:function(e){var t,r,n=this.topNS[e];if(void 0!==n)return n;for(var o=this.tags,i=o.length-1;i>=0;i--)if(void 0!==(n=o[i].ns[e]))return n;return void 0!==(n=this.ns[e])?n:null===(r=(t=this.opt).resolvePrefix)||void 0===r?void 0:r.call(t,e)}},{key:\"qname\",value:function(e){var t=e.indexOf(\":\");if(-1===t)return{prefix:\"\",local:e};var r=e.slice(t+1),n=e.slice(0,t);return(\"\"===n||\"\"===r||r.includes(\":\"))&&this.fail(\"malformed name: \".concat(e,\".\")),{prefix:n,local:r}}},{key:\"processAttribsNS\",value:function(){var e,t=this.attribList,r=this.tag,n=this.qname(r.name),o=n.prefix,i=n.local;r.prefix=o,r.local=i;var a=r.uri=null!==(e=this.resolve(o))&&void 0!==e?e:\"\";if(\"\"!==o&&(\"xmlns\"===o&&this.fail('tags may not have \"xmlns\" as prefix.'),\"\"===a&&(this.fail(\"unbound namespace prefix: \".concat(JSON.stringify(o),\".\")),r.uri=o)),0!==t.length){var s,u=r.attributes,c=new Set,f=_createForOfIteratorHelper2(t);try{for(f.s();!(s=f.n()).done;){var l=s.value,h=l.name,d=l.prefix,p=l.local,y=void 0,m=void 0;\"\"===d?(y=\"xmlns\"===h?b:\"\",m=h):(void 0===(y=this.resolve(d))&&(this.fail(\"unbound namespace prefix: \".concat(JSON.stringify(d),\".\")),y=d),m=\"{\".concat(y,\"}\").concat(p)),c.has(m)&&this.fail(\"duplicate attribute: \".concat(m,\".\")),c.add(m),l.uri=y,u[h]=l}}catch(e){f.e(e)}finally{f.f()}this.attribList=[]}}},{key:\"processAttribsPlain\",value:function(){var e,t=this.attribList,r=this.tag.attributes,n=_createForOfIteratorHelper2(t);try{for(n.s();!(e=n.n()).done;){var o=e.value,i=o.name,a=o.value;void 0!==r[i]&&this.fail(\"duplicate attribute: \".concat(i,\".\")),r[i]=a}}catch(e){n.e(e)}finally{n.f()}this.attribList=[]}},{key:\"openTag\",value:function(){var e;this.processAttribs();var t=this.tags,r=this.tag;r.isSelfClosing=!1,null===(e=this.openTagHandler)||void 0===e||e.call(this,r),t.push(r),this.state=13,this.name=\"\"}},{key:\"openSelfClosingTag\",value:function(){var e,t,r;this.processAttribs();var n=this.tags,o=this.tag;o.isSelfClosing=!0,null===(e=this.openTagHandler)||void 0===e||e.call(this,o),null===(t=this.closeTagHandler)||void 0===t||t.call(this,o),null===(this.tag=null!==(r=n[n.length-1])&&void 0!==r?r:null)&&(this.closedRoot=!0),this.state=13,this.name=\"\"}},{key:\"closeTag\",value:function(){var e=this.tags,t=this.name;if(this.state=13,this.name=\"\",\"\"===t)return this.fail(\"weird empty close tag.\"),void(this.text+=\"\");for(var r=this.closeTagHandler,n=e.length;n-- >0;){var o=this.tag=e.pop();if(this.topNS=o.ns,null==r||r(o),o.name===t)break;this.fail(\"unexpected close tag.\")}0===n?this.closedRoot=!0:n<0&&(this.fail(\"unmatched closing tag: \".concat(t,\".\")),this.text+=\"\"))}},{key:\"parseEntity\",value:function(e){if(\"#\"!==e[0]){var t=this.ENTITIES[e];return void 0!==t?t:(this.fail(this.isName(e)?\"undefined entity.\":\"disallowed character in entity name.\"),\"&\".concat(e,\";\"))}var r=NaN;return\"x\"===e[1]&&/^#x[0-9a-f]+$/i.test(e)?r=parseInt(e.slice(2),16):/^#[0-9]+$/.test(e)&&(r=parseInt(e.slice(1),10)),this.isChar(r)?String.fromCodePoint(r):(this.fail(\"malformed character entity.\"),\"&\".concat(e,\";\"))}},{key:\"closed\",get:function(){return this._closed}},{key:\"position\",get:function(){return this.chunkPosition+this.i}},{key:\"columnIndex\",get:function(){return this.position-this.positionAtNewLine}}]),e}();r.SaxesParser=A},{\"xmlchars/xml/1.0/ed5\":482,\"xmlchars/xml/1.1/ed2\":483,\"xmlchars/xmlns/1.0/ed3\":484}],447:[function(e,t,r){(function(e){t.exports=\"function\"==typeof e?e:function(){var e=[].slice.apply(arguments);e.splice(1,0,0),setTimeout.apply(null,e)}}).call(this,e(\"timers\").setImmediate)},{timers:471}],448:[function(e,t,r){var n=e(\"safe-buffer\").Buffer;function o(e,t){this._block=n.alloc(e),this._finalSize=t,this._blockSize=e,this._len=0}o.prototype.update=function(e,t){\"string\"==typeof e&&(t=t||\"utf8\",e=n.from(e,t));for(var r=this._block,o=this._blockSize,i=e.length,a=this._len,s=0;s=this._finalSize&&(this._update(this._block),this._block.fill(0));var r=8*this._len;if(r<=4294967295)this._block.writeUInt32BE(r,this._blockSize-4);else{var n=(4294967295&r)>>>0,o=(r-n)/4294967296;this._block.writeUInt32BE(o,this._blockSize-8),this._block.writeUInt32BE(n,this._blockSize-4)}this._update(this._block);var i=this._hash();return e?i.toString(e):i},o.prototype._update=function(){throw new Error(\"_update must be implemented by subclass\")},t.exports=o},{\"safe-buffer\":445}],449:[function(e,t,r){(r=t.exports=function(e){e=e.toLowerCase();var t=r[e];if(!t)throw new Error(e+\" is not supported (we accept pull requests)\");return new t}).sha=e(\"./sha\"),r.sha1=e(\"./sha1\"),r.sha224=e(\"./sha224\"),r.sha256=e(\"./sha256\"),r.sha384=e(\"./sha384\"),r.sha512=e(\"./sha512\")},{\"./sha\":450,\"./sha1\":451,\"./sha224\":452,\"./sha256\":453,\"./sha384\":454,\"./sha512\":455}],450:[function(e,t,r){var n=e(\"inherits\"),o=e(\"./hash\"),i=e(\"safe-buffer\").Buffer,a=[1518500249,1859775393,-1894007588,-899497514],s=new Array(80);function u(){this.init(),this._w=s,o.call(this,64,56)}function c(e){return e<<30|e>>>2}function f(e,t,r,n){return 0===e?t&r|~t&n:2===e?t&r|t&n|r&n:t^r^n}n(u,o),u.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},u.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,o=0|this._b,i=0|this._c,s=0|this._d,u=0|this._e,l=0;l<16;++l)r[l]=e.readInt32BE(4*l);for(;l<80;++l)r[l]=r[l-3]^r[l-8]^r[l-14]^r[l-16];for(var h=0;h<80;++h){var d=~~(h/20),p=0|((t=n)<<5|t>>>27)+f(d,o,i,s)+u+r[h]+a[d];u=s,s=i,i=c(o),o=n,n=p}this._a=n+this._a|0,this._b=o+this._b|0,this._c=i+this._c|0,this._d=s+this._d|0,this._e=u+this._e|0},u.prototype._hash=function(){var e=i.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e},t.exports=u},{\"./hash\":448,inherits:341,\"safe-buffer\":445}],451:[function(e,t,r){var n=e(\"inherits\"),o=e(\"./hash\"),i=e(\"safe-buffer\").Buffer,a=[1518500249,1859775393,-1894007588,-899497514],s=new Array(80);function u(){this.init(),this._w=s,o.call(this,64,56)}function c(e){return e<<5|e>>>27}function f(e){return e<<30|e>>>2}function l(e,t,r,n){return 0===e?t&r|~t&n:2===e?t&r|t&n|r&n:t^r^n}n(u,o),u.prototype.init=function(){return this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878,this._e=3285377520,this},u.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,o=0|this._b,i=0|this._c,s=0|this._d,u=0|this._e,h=0;h<16;++h)r[h]=e.readInt32BE(4*h);for(;h<80;++h)r[h]=(t=r[h-3]^r[h-8]^r[h-14]^r[h-16])<<1|t>>>31;for(var d=0;d<80;++d){var p=~~(d/20),y=c(n)+l(p,o,i,s)+u+r[d]+a[p]|0;u=s,s=i,i=f(o),o=n,n=y}this._a=n+this._a|0,this._b=o+this._b|0,this._c=i+this._c|0,this._d=s+this._d|0,this._e=u+this._e|0},u.prototype._hash=function(){var e=i.allocUnsafe(20);return e.writeInt32BE(0|this._a,0),e.writeInt32BE(0|this._b,4),e.writeInt32BE(0|this._c,8),e.writeInt32BE(0|this._d,12),e.writeInt32BE(0|this._e,16),e},t.exports=u},{\"./hash\":448,inherits:341,\"safe-buffer\":445}],452:[function(e,t,r){var n=e(\"inherits\"),o=e(\"./sha256\"),i=e(\"./hash\"),a=e(\"safe-buffer\").Buffer,s=new Array(64);function u(){this.init(),this._w=s,i.call(this,64,56)}n(u,o),u.prototype.init=function(){return this._a=3238371032,this._b=914150663,this._c=812702999,this._d=4144912697,this._e=4290775857,this._f=1750603025,this._g=1694076839,this._h=3204075428,this},u.prototype._hash=function(){var e=a.allocUnsafe(28);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e},t.exports=u},{\"./hash\":448,\"./sha256\":453,inherits:341,\"safe-buffer\":445}],453:[function(e,t,r){var n=e(\"inherits\"),o=e(\"./hash\"),i=e(\"safe-buffer\").Buffer,a=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],s=new Array(64);function u(){this.init(),this._w=s,o.call(this,64,56)}function c(e,t,r){return r^e&(t^r)}function f(e,t,r){return e&t|r&(e|t)}function l(e){return(e>>>2|e<<30)^(e>>>13|e<<19)^(e>>>22|e<<10)}function h(e){return(e>>>6|e<<26)^(e>>>11|e<<21)^(e>>>25|e<<7)}function d(e){return(e>>>7|e<<25)^(e>>>18|e<<14)^e>>>3}n(u,o),u.prototype.init=function(){return this._a=1779033703,this._b=3144134277,this._c=1013904242,this._d=2773480762,this._e=1359893119,this._f=2600822924,this._g=528734635,this._h=1541459225,this},u.prototype._update=function(e){for(var t,r=this._w,n=0|this._a,o=0|this._b,i=0|this._c,s=0|this._d,u=0|this._e,p=0|this._f,y=0|this._g,m=0|this._h,b=0;b<16;++b)r[b]=e.readInt32BE(4*b);for(;b<64;++b)r[b]=0|(((t=r[b-2])>>>17|t<<15)^(t>>>19|t<<13)^t>>>10)+r[b-7]+d(r[b-15])+r[b-16];for(var v=0;v<64;++v){var g=m+h(u)+c(u,p,y)+a[v]+r[v]|0,w=l(n)+f(n,o,i)|0;m=y,y=p,p=u,u=s+g|0,s=i,i=o,o=n,n=g+w|0}this._a=n+this._a|0,this._b=o+this._b|0,this._c=i+this._c|0,this._d=s+this._d|0,this._e=u+this._e|0,this._f=p+this._f|0,this._g=y+this._g|0,this._h=m+this._h|0},u.prototype._hash=function(){var e=i.allocUnsafe(32);return e.writeInt32BE(this._a,0),e.writeInt32BE(this._b,4),e.writeInt32BE(this._c,8),e.writeInt32BE(this._d,12),e.writeInt32BE(this._e,16),e.writeInt32BE(this._f,20),e.writeInt32BE(this._g,24),e.writeInt32BE(this._h,28),e},t.exports=u},{\"./hash\":448,inherits:341,\"safe-buffer\":445}],454:[function(e,t,r){var n=e(\"inherits\"),o=e(\"./sha512\"),i=e(\"./hash\"),a=e(\"safe-buffer\").Buffer,s=new Array(160);function u(){this.init(),this._w=s,i.call(this,128,112)}n(u,o),u.prototype.init=function(){return this._ah=3418070365,this._bh=1654270250,this._ch=2438529370,this._dh=355462360,this._eh=1731405415,this._fh=2394180231,this._gh=3675008525,this._hh=1203062813,this._al=3238371032,this._bl=914150663,this._cl=812702999,this._dl=4144912697,this._el=4290775857,this._fl=1750603025,this._gl=1694076839,this._hl=3204075428,this},u.prototype._hash=function(){var e=a.allocUnsafe(48);function t(t,r,n){e.writeInt32BE(t,n),e.writeInt32BE(r,n+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),e},t.exports=u},{\"./hash\":448,\"./sha512\":455,inherits:341,\"safe-buffer\":445}],455:[function(e,t,r){var n=e(\"inherits\"),o=e(\"./hash\"),i=e(\"safe-buffer\").Buffer,a=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591],s=new Array(160);function u(){this.init(),this._w=s,o.call(this,128,112)}function c(e,t,r){return r^e&(t^r)}function f(e,t,r){return e&t|r&(e|t)}function l(e,t){return(e>>>28|t<<4)^(t>>>2|e<<30)^(t>>>7|e<<25)}function h(e,t){return(e>>>14|t<<18)^(e>>>18|t<<14)^(t>>>9|e<<23)}function d(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^e>>>7}function p(e,t){return(e>>>1|t<<31)^(e>>>8|t<<24)^(e>>>7|t<<25)}function y(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^e>>>6}function m(e,t){return(e>>>19|t<<13)^(t>>>29|e<<3)^(e>>>6|t<<26)}function b(e,t){return e>>>0>>0?1:0}n(u,o),u.prototype.init=function(){return this._ah=1779033703,this._bh=3144134277,this._ch=1013904242,this._dh=2773480762,this._eh=1359893119,this._fh=2600822924,this._gh=528734635,this._hh=1541459225,this._al=4089235720,this._bl=2227873595,this._cl=4271175723,this._dl=1595750129,this._el=2917565137,this._fl=725511199,this._gl=4215389547,this._hl=327033209,this},u.prototype._update=function(e){for(var t=this._w,r=0|this._ah,n=0|this._bh,o=0|this._ch,i=0|this._dh,s=0|this._eh,u=0|this._fh,v=0|this._gh,g=0|this._hh,w=0|this._al,_=0|this._bl,k=0|this._cl,x=0|this._dl,S=0|this._el,O=0|this._fl,E=0|this._gl,R=0|this._hl,j=0;j<32;j+=2)t[j]=e.readInt32BE(4*j),t[j+1]=e.readInt32BE(4*j+4);for(;j<160;j+=2){var T=t[j-30],C=t[j-30+1],P=d(T,C),A=p(C,T),M=y(T=t[j-4],C=t[j-4+1]),I=m(C,T),N=t[j-14],D=t[j-14+1],B=t[j-32],F=t[j-32+1],L=A+D|0,z=P+N+b(L,A)|0;z=(z=z+M+b(L=L+I|0,I)|0)+B+b(L=L+F|0,F)|0,t[j]=z,t[j+1]=L}for(var U=0;U<160;U+=2){z=t[U],L=t[U+1];var H=f(r,n,o),V=f(w,_,k),W=l(r,w),q=l(w,r),$=h(s,S),X=h(S,s),K=a[U],Y=a[U+1],Z=c(s,u,v),G=c(S,O,E),J=R+X|0,Q=g+$+b(J,R)|0;Q=(Q=(Q=Q+Z+b(J=J+G|0,G)|0)+K+b(J=J+Y|0,Y)|0)+z+b(J=J+L|0,L)|0;var ee=q+V|0,te=W+H+b(ee,q)|0;g=v,R=E,v=u,E=O,u=s,O=S,s=i+Q+b(S=x+J|0,x)|0,i=o,x=k,o=n,k=_,n=r,_=w,r=Q+te+b(w=J+ee|0,J)|0}this._al=this._al+w|0,this._bl=this._bl+_|0,this._cl=this._cl+k|0,this._dl=this._dl+x|0,this._el=this._el+S|0,this._fl=this._fl+O|0,this._gl=this._gl+E|0,this._hl=this._hl+R|0,this._ah=this._ah+r+b(this._al,w)|0,this._bh=this._bh+n+b(this._bl,_)|0,this._ch=this._ch+o+b(this._cl,k)|0,this._dh=this._dh+i+b(this._dl,x)|0,this._eh=this._eh+s+b(this._el,S)|0,this._fh=this._fh+u+b(this._fl,O)|0,this._gh=this._gh+v+b(this._gl,E)|0,this._hh=this._hh+g+b(this._hl,R)|0},u.prototype._hash=function(){var e=i.allocUnsafe(64);function t(t,r,n){e.writeInt32BE(t,n),e.writeInt32BE(r,n+4)}return t(this._ah,this._al,0),t(this._bh,this._bl,8),t(this._ch,this._cl,16),t(this._dh,this._dl,24),t(this._eh,this._el,32),t(this._fh,this._fl,40),t(this._gh,this._gl,48),t(this._hh,this._hl,56),e},t.exports=u},{\"./hash\":448,inherits:341,\"safe-buffer\":445}],456:[function(e,t,r){t.exports=o;var n=e(\"events\").EventEmitter;function o(){n.call(this)}e(\"inherits\")(o,n),o.Readable=e(\"readable-stream/readable.js\"),o.Writable=e(\"readable-stream/writable.js\"),o.Duplex=e(\"readable-stream/duplex.js\"),o.Transform=e(\"readable-stream/transform.js\"),o.PassThrough=e(\"readable-stream/passthrough.js\"),o.Stream=o,o.prototype.pipe=function(e,t){var r=this;function o(t){e.writable&&!1===e.write(t)&&r.pause&&r.pause()}function i(){r.readable&&r.resume&&r.resume()}r.on(\"data\",o),e.on(\"drain\",i),e._isStdio||t&&!1===t.end||(r.on(\"end\",s),r.on(\"close\",u));var a=!1;function s(){a||(a=!0,e.end())}function u(){a||(a=!0,\"function\"==typeof e.destroy&&e.destroy())}function c(e){if(f(),0===n.listenerCount(this,\"error\"))throw e}function f(){r.removeListener(\"data\",o),e.removeListener(\"drain\",i),r.removeListener(\"end\",s),r.removeListener(\"close\",u),r.removeListener(\"error\",c),e.removeListener(\"error\",c),r.removeListener(\"end\",f),r.removeListener(\"close\",f),e.removeListener(\"close\",f)}return r.on(\"error\",c),e.on(\"error\",c),r.on(\"end\",f),r.on(\"close\",f),e.on(\"close\",f),e.emit(\"pipe\",r),e}},{events:299,inherits:341,\"readable-stream/duplex.js\":457,\"readable-stream/passthrough.js\":466,\"readable-stream/readable.js\":467,\"readable-stream/transform.js\":468,\"readable-stream/writable.js\":469}],457:[function(e,t,r){t.exports=e(\"./lib/_stream_duplex.js\")},{\"./lib/_stream_duplex.js\":458}],458:[function(e,t,r){var n=e(\"process-nextick-args\"),o=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};t.exports=l;var i=e(\"core-util-is\");i.inherits=e(\"inherits\");var a=e(\"./_stream_readable\"),s=e(\"./_stream_writable\");i.inherits(l,a);for(var u=o(s.prototype),c=0;c0?(\"string\"==typeof t||a.objectMode||Object.getPrototypeOf(t)===c.prototype||(t=function(e){return c.from(e)}(t)),n?a.endEmitted?e.emit(\"error\",new Error(\"stream.unshift() after end event\")):_(e,a,t,!0):a.ended?e.emit(\"error\",new Error(\"stream.push() after EOF\")):(a.reading=!1,a.decoder&&!r?(t=a.decoder.write(t),a.objectMode||0!==t.length?_(e,a,t,!1):O(e,a)):_(e,a,t,!1))):n||(a.reading=!1));return function(e){return!e.ended&&(e.needReadable||e.lengtht.highWaterMark&&(t.highWaterMark=function(e){return e>=8388608?e=8388608:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function x(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(d(\"emitReadable\",t.flowing),t.emittedReadable=!0,t.sync?o.nextTick(S,e):S(e))}function S(e){d(\"emit readable\"),e.emit(\"readable\"),T(e)}function O(e,t){t.readingMore||(t.readingMore=!0,o.nextTick(E,e,t))}function E(e,t){for(var r=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(r=t.decoder?t.buffer.join(\"\"):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):r=function(e,t,r){var n;ei.length?i.length:e;if(a===i.length?o+=i:o+=i.slice(0,e),0===(e-=a)){a===i.length?(++n,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=i.slice(a));break}++n}return t.length-=n,o}(e,t):function(e,t){var r=c.allocUnsafe(e),n=t.head,o=1;n.data.copy(r),e-=n.data.length;for(;n=n.next;){var i=n.data,a=e>i.length?i.length:e;if(i.copy(r,r.length-e,0,a),0===(e-=a)){a===i.length?(++o,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=i.slice(a));break}++o}return t.length-=o,r}(e,t);return n}(e,t.buffer,t.decoder),r);var r}function P(e){var t=e._readableState;if(t.length>0)throw new Error('\"endReadable()\" called on non-empty stream');t.endEmitted||(t.ended=!0,o.nextTick(A,t,e))}function A(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit(\"end\"))}function M(e,t){for(var r=0,n=e.length;r=t.highWaterMark||t.ended))return d(\"read: emitReadable\",t.length,t.ended),0===t.length&&t.ended?P(this):x(this),null;if(0===(e=k(e,t))&&t.ended)return 0===t.length&&P(this),null;var n,o=t.needReadable;return d(\"need readable\",o),(0===t.length||t.length-e0?C(e,t):null)?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),r!==e&&t.ended&&P(this)),null!==n&&this.emit(\"data\",n),n},g.prototype._read=function(e){this.emit(\"error\",new Error(\"_read() is not implemented\"))},g.prototype.pipe=function(e,t){var n=this,i=this._readableState;switch(i.pipesCount){case 0:i.pipes=e;break;case 1:i.pipes=[i.pipes,e];break;default:i.pipes.push(e)}i.pipesCount+=1,d(\"pipe count=%d opts=%j\",i.pipesCount,t);var u=(!t||!1!==t.end)&&e!==r.stdout&&e!==r.stderr?f:g;function c(t,r){d(\"onunpipe\"),t===n&&r&&!1===r.hasUnpiped&&(r.hasUnpiped=!0,d(\"cleanup\"),e.removeListener(\"close\",b),e.removeListener(\"finish\",v),e.removeListener(\"drain\",l),e.removeListener(\"error\",m),e.removeListener(\"unpipe\",c),n.removeListener(\"end\",f),n.removeListener(\"end\",g),n.removeListener(\"data\",y),h=!0,!i.awaitDrain||e._writableState&&!e._writableState.needDrain||l())}function f(){d(\"onend\"),e.end()}i.endEmitted?o.nextTick(u):n.once(\"end\",u),e.on(\"unpipe\",c);var l=function(e){return function(){var t=e._readableState;d(\"pipeOnDrain\",t.awaitDrain),t.awaitDrain&&t.awaitDrain--,0===t.awaitDrain&&s(e,\"data\")&&(t.flowing=!0,T(e))}}(n);e.on(\"drain\",l);var h=!1;var p=!1;function y(t){d(\"ondata\"),p=!1,!1!==e.write(t)||p||((1===i.pipesCount&&i.pipes===e||i.pipesCount>1&&-1!==M(i.pipes,e))&&!h&&(d(\"false write response, pause\",n._readableState.awaitDrain),n._readableState.awaitDrain++,p=!0),n.pause())}function m(t){d(\"onerror\",t),g(),e.removeListener(\"error\",m),0===s(e,\"error\")&&e.emit(\"error\",t)}function b(){e.removeListener(\"finish\",v),g()}function v(){d(\"onfinish\"),e.removeListener(\"close\",b),g()}function g(){d(\"unpipe\"),n.unpipe(e)}return n.on(\"data\",y),function(e,t,r){if(\"function\"==typeof e.prependListener)return e.prependListener(t,r);e._events&&e._events[t]?a(e._events[t])?e._events[t].unshift(r):e._events[t]=[r,e._events[t]]:e.on(t,r)}(e,\"error\",m),e.once(\"close\",b),e.once(\"finish\",v),e.emit(\"pipe\",n),i.flowing||(d(\"pipe resume\"),n.resume()),e},g.prototype.unpipe=function(e){var t=this._readableState,r={hasUnpiped:!1};if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes||(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit(\"unpipe\",this,r)),this;if(!e){var n=t.pipes,o=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var i=0;i-1?o:i.nextTick;v.WritableState=b;var c=e(\"core-util-is\");c.inherits=e(\"inherits\");var f={deprecate:e(\"util-deprecate\")},l=e(\"./internal/streams/stream\"),h=e(\"safe-buffer\").Buffer,d=n.Uint8Array||function(){};var p,y=e(\"./internal/streams/destroy\");function m(){}function b(t,r){s=s||e(\"./_stream_duplex\"),t=t||{};var n=r instanceof s;this.objectMode=!!t.objectMode,n&&(this.objectMode=this.objectMode||!!t.writableObjectMode);var o=t.highWaterMark,c=t.writableHighWaterMark,f=this.objectMode?16:16384;this.highWaterMark=o||0===o?o:n&&(c||0===c)?c:f,this.highWaterMark=Math.floor(this.highWaterMark),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var l=!1===t.decodeStrings;this.decodeStrings=!l,this.defaultEncoding=t.defaultEncoding||\"utf8\",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(e){!function(e,t){var r=e._writableState,n=r.sync,o=r.writecb;if(function(e){e.writing=!1,e.writecb=null,e.length-=e.writelen,e.writelen=0}(r),t)!function(e,t,r,n,o){--t.pendingcb,r?(i.nextTick(o,n),i.nextTick(S,e,t),e._writableState.errorEmitted=!0,e.emit(\"error\",n)):(o(n),e._writableState.errorEmitted=!0,e.emit(\"error\",n),S(e,t))}(e,r,n,t,o);else{var a=k(r);a||r.corked||r.bufferProcessing||!r.bufferedRequest||_(e,r),n?u(w,e,r,a,o):w(e,r,a,o)}}(r,e)},this.writecb=null,this.writelen=0,this.bufferedRequest=null,this.lastBufferedRequest=null,this.pendingcb=0,this.prefinished=!1,this.errorEmitted=!1,this.bufferedRequestCount=0,this.corkedRequestsFree=new a(this)}function v(t){if(s=s||e(\"./_stream_duplex\"),!(p.call(v,this)||this instanceof s))return new v(t);this._writableState=new b(t,this),this.writable=!0,t&&(\"function\"==typeof t.write&&(this._write=t.write),\"function\"==typeof t.writev&&(this._writev=t.writev),\"function\"==typeof t.destroy&&(this._destroy=t.destroy),\"function\"==typeof t.final&&(this._final=t.final)),l.call(this)}function g(e,t,r,n,o,i,a){t.writelen=n,t.writecb=a,t.writing=!0,t.sync=!0,r?e._writev(o,t.onwrite):e._write(o,i,t.onwrite),t.sync=!1}function w(e,t,r,n){r||function(e,t){0===t.length&&t.needDrain&&(t.needDrain=!1,e.emit(\"drain\"))}(e,t),t.pendingcb--,n(),S(e,t)}function _(e,t){t.bufferProcessing=!0;var r=t.bufferedRequest;if(e._writev&&r&&r.next){var n=t.bufferedRequestCount,o=new Array(n),i=t.corkedRequestsFree;i.entry=r;for(var s=0,u=!0;r;)o[s]=r,r.isBuf||(u=!1),r=r.next,s+=1;o.allBuffers=u,g(e,t,!0,t.length,o,\"\",i.finish),t.pendingcb++,t.lastBufferedRequest=null,i.next?(t.corkedRequestsFree=i.next,i.next=null):t.corkedRequestsFree=new a(t),t.bufferedRequestCount=0}else{for(;r;){var c=r.chunk,f=r.encoding,l=r.callback;if(g(e,t,!1,t.objectMode?1:c.length,c,f,l),r=r.next,t.bufferedRequestCount--,t.writing)break}null===r&&(t.lastBufferedRequest=null)}t.bufferedRequest=r,t.bufferProcessing=!1}function k(e){return e.ending&&0===e.length&&null===e.bufferedRequest&&!e.finished&&!e.writing}function x(e,t){e._final((function(r){t.pendingcb--,r&&e.emit(\"error\",r),t.prefinished=!0,e.emit(\"prefinish\"),S(e,t)}))}function S(e,t){var r=k(t);return r&&(!function(e,t){t.prefinished||t.finalCalled||(\"function\"==typeof e._final?(t.pendingcb++,t.finalCalled=!0,i.nextTick(x,e,t)):(t.prefinished=!0,e.emit(\"prefinish\")))}(e,t),0===t.pendingcb&&(t.finished=!0,e.emit(\"finish\"))),r}c.inherits(v,l),b.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(b.prototype,\"buffer\",{get:f.deprecate((function(){return this.getBuffer()}),\"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.\",\"DEP0003\")})}catch(e){}}(),\"function\"==typeof Symbol&&Symbol.hasInstance&&\"function\"==typeof Function.prototype[Symbol.hasInstance]?(p=Function.prototype[Symbol.hasInstance],Object.defineProperty(v,Symbol.hasInstance,{value:function(e){return!!p.call(this,e)||this===v&&(e&&e._writableState instanceof b)}})):p=function(e){return e instanceof this},v.prototype.pipe=function(){this.emit(\"error\",new Error(\"Cannot pipe, not readable\"))},v.prototype.write=function(e,t,r){var n,o=this._writableState,a=!1,s=!o.objectMode&&(n=e,h.isBuffer(n)||n instanceof d);return s&&!h.isBuffer(e)&&(e=function(e){return h.from(e)}(e)),\"function\"==typeof t&&(r=t,t=null),s?t=\"buffer\":t||(t=o.defaultEncoding),\"function\"!=typeof r&&(r=m),o.ended?function(e,t){var r=new Error(\"write after end\");e.emit(\"error\",r),i.nextTick(t,r)}(this,r):(s||function(e,t,r,n){var o=!0,a=!1;return null===r?a=new TypeError(\"May not write null values to stream\"):\"string\"==typeof r||void 0===r||t.objectMode||(a=new TypeError(\"Invalid non-string/buffer chunk\")),a&&(e.emit(\"error\",a),i.nextTick(n,a),o=!1),o}(this,o,e,r))&&(o.pendingcb++,a=function(e,t,r,n,o,i){if(!r){var a=function(e,t,r){e.objectMode||!1===e.decodeStrings||\"string\"!=typeof t||(t=h.from(t,r));return t}(t,n,o);n!==a&&(r=!0,o=\"buffer\",n=a)}var s=t.objectMode?1:n.length;t.length+=s;var u=t.length-1))throw new TypeError(\"Unknown encoding: \"+e);return this._writableState.defaultEncoding=e,this},Object.defineProperty(v.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function(){return this._writableState.highWaterMark}}),v.prototype._write=function(e,t,r){r(new Error(\"_write() is not implemented\"))},v.prototype._writev=null,v.prototype.end=function(e,t,r){var n=this._writableState;\"function\"==typeof e?(r=e,e=null,t=null):\"function\"==typeof t&&(r=t,t=null),null!=e&&this.write(e,t),n.corked&&(n.corked=1,this.uncork()),n.ending||n.finished||function(e,t,r){t.ending=!0,S(e,t),r&&(t.finished?i.nextTick(r):e.once(\"finish\",r));t.ended=!0,e.writable=!1}(this,n,r)},Object.defineProperty(v.prototype,\"destroyed\",{get:function(){return void 0!==this._writableState&&this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}}),v.prototype.destroy=y.destroy,v.prototype._undestroy=y.undestroy,v.prototype._destroy=function(e,t){this.end(),t(e)}}).call(this,e(\"_process\"),\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{},e(\"timers\").setImmediate)},{\"./_stream_duplex\":458,\"./internal/streams/destroy\":464,\"./internal/streams/stream\":465,_process:419,\"core-util-is\":263,inherits:341,\"process-nextick-args\":418,\"safe-buffer\":445,timers:471,\"util-deprecate\":472}],463:[function(e,t,r){var n=e(\"safe-buffer\").Buffer,o=e(\"util\");t.exports=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}(this,e),this.head=null,this.tail=null,this.length=0}return e.prototype.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length},e.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},e.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},e.prototype.clear=function(){this.head=this.tail=null,this.length=0},e.prototype.join=function(e){if(0===this.length)return\"\";for(var t=this.head,r=\"\"+t.data;t=t.next;)r+=e+t.data;return r},e.prototype.concat=function(e){if(0===this.length)return n.alloc(0);if(1===this.length)return this.head.data;for(var t,r,o,i=n.allocUnsafe(e>>>0),a=this.head,s=0;a;)t=a.data,r=i,o=s,t.copy(r,o),s+=a.data.length,a=a.next;return i},e}(),o&&o.inspect&&o.inspect.custom&&(t.exports.prototype[o.inspect.custom]=function(){var e=o.inspect({length:this.length});return this.constructor.name+\" \"+e})},{\"safe-buffer\":445,util:158}],464:[function(e,t,r){var n=e(\"process-nextick-args\");function o(e,t){e.emit(\"error\",t)}t.exports={destroy:function(e,t){var r=this,i=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return i||a?(t?t(e):!e||this._writableState&&this._writableState.errorEmitted||n.nextTick(o,this,e),this):(this._readableState&&(this._readableState.destroyed=!0),this._writableState&&(this._writableState.destroyed=!0),this._destroy(e||null,(function(e){!t&&e?(n.nextTick(o,r,e),r._writableState&&(r._writableState.errorEmitted=!0)):t&&t(e)})),this)},undestroy:function(){this._readableState&&(this._readableState.destroyed=!1,this._readableState.reading=!1,this._readableState.ended=!1,this._readableState.endEmitted=!1),this._writableState&&(this._writableState.destroyed=!1,this._writableState.ended=!1,this._writableState.ending=!1,this._writableState.finished=!1,this._writableState.errorEmitted=!1)}}},{\"process-nextick-args\":418}],465:[function(e,t,r){arguments[4][441][0].apply(r,arguments)},{dup:441,events:299}],466:[function(e,t,r){t.exports=e(\"./readable\").PassThrough},{\"./readable\":467}],467:[function(e,t,r){(r=t.exports=e(\"./lib/_stream_readable.js\")).Stream=r,r.Readable=r,r.Writable=e(\"./lib/_stream_writable.js\"),r.Duplex=e(\"./lib/_stream_duplex.js\"),r.Transform=e(\"./lib/_stream_transform.js\"),r.PassThrough=e(\"./lib/_stream_passthrough.js\")},{\"./lib/_stream_duplex.js\":458,\"./lib/_stream_passthrough.js\":459,\"./lib/_stream_readable.js\":460,\"./lib/_stream_transform.js\":461,\"./lib/_stream_writable.js\":462}],468:[function(e,t,r){t.exports=e(\"./readable\").Transform},{\"./readable\":467}],469:[function(e,t,r){t.exports=e(\"./lib/_stream_writable.js\")},{\"./lib/_stream_writable.js\":462}],470:[function(e,t,r){var n=e(\"safe-buffer\").Buffer,o=n.isEncoding||function(e){switch((e=\"\"+e)&&e.toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":case\"raw\":return!0;default:return!1}};function i(e){var t;switch(this.encoding=function(e){var t=function(e){if(!e)return\"utf8\";for(var t;;)switch(e){case\"utf8\":case\"utf-8\":return\"utf8\";case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return\"utf16le\";case\"latin1\":case\"binary\":return\"latin1\";case\"base64\":case\"ascii\":case\"hex\":return e;default:if(t)return;e=(\"\"+e).toLowerCase(),t=!0}}(e);if(\"string\"!=typeof t&&(n.isEncoding===o||!o(e)))throw new Error(\"Unknown encoding: \"+e);return t||e}(e),this.encoding){case\"utf16le\":this.text=u,this.end=c,t=4;break;case\"utf8\":this.fillLast=s,t=4;break;case\"base64\":this.text=f,this.end=l,t=3;break;default:return this.write=h,void(this.end=d)}this.lastNeed=0,this.lastTotal=0,this.lastChar=n.allocUnsafe(t)}function a(e){return e<=127?0:e>>5==6?2:e>>4==14?3:e>>3==30?4:e>>6==2?-1:-2}function s(e){var t=this.lastTotal-this.lastNeed,r=function(e,t,r){if(128!=(192&t[0]))return e.lastNeed=0,\"\\ufffd\";if(e.lastNeed>1&&t.length>1){if(128!=(192&t[1]))return e.lastNeed=1,\"\\ufffd\";if(e.lastNeed>2&&t.length>2&&128!=(192&t[2]))return e.lastNeed=2,\"\\ufffd\"}}(this,e);return void 0!==r?r:this.lastNeed<=e.length?(e.copy(this.lastChar,t,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal)):(e.copy(this.lastChar,t,0,e.length),void(this.lastNeed-=e.length))}function u(e,t){if((e.length-t)%2==0){var r=e.toString(\"utf16le\",t);if(r){var n=r.charCodeAt(r.length-1);if(n>=55296&&n<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=e[e.length-1],e.toString(\"utf16le\",t,e.length-1)}function c(e){var t=e&&e.length?this.write(e):\"\";if(this.lastNeed){var r=this.lastTotal-this.lastNeed;return t+this.lastChar.toString(\"utf16le\",0,r)}return t}function f(e,t){var r=(e.length-t)%3;return 0===r?e.toString(\"base64\",t):(this.lastNeed=3-r,this.lastTotal=3,1===r?this.lastChar[0]=e[e.length-1]:(this.lastChar[0]=e[e.length-2],this.lastChar[1]=e[e.length-1]),e.toString(\"base64\",t,e.length-r))}function l(e){var t=e&&e.length?this.write(e):\"\";return this.lastNeed?t+this.lastChar.toString(\"base64\",0,3-this.lastNeed):t}function h(e){return e.toString(this.encoding)}function d(e){return e&&e.length?this.write(e):\"\"}r.StringDecoder=i,i.prototype.write=function(e){if(0===e.length)return\"\";var t,r;if(this.lastNeed){if(void 0===(t=this.fillLast(e)))return\"\";r=this.lastNeed,this.lastNeed=0}else r=0;return r=0)return o>0&&(e.lastNeed=o-1),o;if(--n=0)return o>0&&(e.lastNeed=o-2),o;if(--n=0)return o>0&&(2===o?o=0:e.lastNeed=o-3),o;return 0}(this,e,t);if(!this.lastNeed)return e.toString(\"utf8\",t);this.lastTotal=r;var n=e.length-(r-this.lastNeed);return e.copy(this.lastChar,0,n),e.toString(\"utf8\",t,n)},i.prototype.fillLast=function(e){if(this.lastNeed<=e.length)return e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);e.copy(this.lastChar,this.lastTotal-this.lastNeed,0,e.length),this.lastNeed-=e.length}},{\"safe-buffer\":445}],471:[function(e,t,r){(function(t,n){var o=e(\"process/browser.js\").nextTick,i=Function.prototype.apply,a=Array.prototype.slice,s={},u=0;function c(e,t){this._id=e,this._clearFn=t}r.setTimeout=function(){return new c(i.call(setTimeout,window,arguments),clearTimeout)},r.setInterval=function(){return new c(i.call(setInterval,window,arguments),clearInterval)},r.clearTimeout=r.clearInterval=function(e){e.close()},c.prototype.unref=c.prototype.ref=function(){},c.prototype.close=function(){this._clearFn.call(window,this._id)},r.enroll=function(e,t){clearTimeout(e._idleTimeoutId),e._idleTimeout=t},r.unenroll=function(e){clearTimeout(e._idleTimeoutId),e._idleTimeout=-1},r._unrefActive=r.active=function(e){clearTimeout(e._idleTimeoutId);var t=e._idleTimeout;t>=0&&(e._idleTimeoutId=setTimeout((function(){e._onTimeout&&e._onTimeout()}),t))},r.setImmediate=\"function\"==typeof t?t:function(e){var t=u++,n=!(arguments.length<2)&&a.call(arguments,1);return s[t]=!0,o((function(){s[t]&&(n?e.apply(null,n):e.call(null),r.clearImmediate(t))})),t},r.clearImmediate=\"function\"==typeof n?n:function(e){delete s[e]}}).call(this,e(\"timers\").setImmediate,e(\"timers\").clearImmediate)},{\"process/browser.js\":419,timers:471}],472:[function(e,t,r){(function(e){function r(t){try{if(!e.localStorage)return!1}catch(e){return!1}var r=e.localStorage[t];return null!=r&&\"true\"===String(r).toLowerCase()}t.exports=function(e,t){if(r(\"noDeprecation\"))return e;var n=!1;return function(){if(!n){if(r(\"throwDeprecation\"))throw new Error(t);r(\"traceDeprecation\")?console.trace(t):console.warn(t),n=!0}return e.apply(this,arguments)}}}).call(this,\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{}],473:[function(e,t,r){\"function\"==typeof Object.create?t.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}},{}],474:[function(e,t,r){t.exports=function(e){return e&&\"object\"===_typeof2(e)&&\"function\"==typeof e.copy&&\"function\"==typeof e.fill&&\"function\"==typeof e.readUInt8}},{}],475:[function(e,t,r){(function(t,n){var o=/%[sdj%]/g;r.format=function(e){if(!b(e)){for(var t=[],r=0;r=i)return e;switch(e){case\"%s\":return String(n[r++]);case\"%d\":return Number(n[r++]);case\"%j\":try{return JSON.stringify(n[r++])}catch(e){return\"[Circular]\"}default:return e}})),u=n[r];r=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),p(t)?n.showHidden=t:t&&r._extend(n,t),v(n.showHidden)&&(n.showHidden=!1),v(n.depth)&&(n.depth=2),v(n.colors)&&(n.colors=!1),v(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=u),f(n,e,n.depth)}function u(e,t){var r=s.styles[t];return r?\"\\x1b[\"+s.colors[r][0]+\"m\"+e+\"\\x1b[\"+s.colors[r][1]+\"m\":e}function c(e,t){return e}function f(e,t,n){if(e.customInspect&&t&&x(t.inspect)&&t.inspect!==r.inspect&&(!t.constructor||t.constructor.prototype!==t)){var o=t.inspect(n,e);return b(o)||(o=f(e,o,n)),o}var i=function(e,t){if(v(t))return e.stylize(\"undefined\",\"undefined\");if(b(t)){var r=\"'\"+JSON.stringify(t).replace(/^\"|\"$/g,\"\").replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"')+\"'\";return e.stylize(r,\"string\")}if(m(t))return e.stylize(\"\"+t,\"number\");if(p(t))return e.stylize(\"\"+t,\"boolean\");if(y(t))return e.stylize(\"null\",\"null\")}(e,t);if(i)return i;var a=Object.keys(t),s=function(e){var t={};return e.forEach((function(e,r){t[e]=!0})),t}(a);if(e.showHidden&&(a=Object.getOwnPropertyNames(t)),k(t)&&(a.indexOf(\"message\")>=0||a.indexOf(\"description\")>=0))return l(t);if(0===a.length){if(x(t)){var u=t.name?\": \"+t.name:\"\";return e.stylize(\"[Function\"+u+\"]\",\"special\")}if(g(t))return e.stylize(RegExp.prototype.toString.call(t),\"regexp\");if(_(t))return e.stylize(Date.prototype.toString.call(t),\"date\");if(k(t))return l(t)}var c,w=\"\",S=!1,O=[\"{\",\"}\"];(d(t)&&(S=!0,O=[\"[\",\"]\"]),x(t))&&(w=\" [Function\"+(t.name?\": \"+t.name:\"\")+\"]\");return g(t)&&(w=\" \"+RegExp.prototype.toString.call(t)),_(t)&&(w=\" \"+Date.prototype.toUTCString.call(t)),k(t)&&(w=\" \"+l(t)),0!==a.length||S&&0!=t.length?n<0?g(t)?e.stylize(RegExp.prototype.toString.call(t),\"regexp\"):e.stylize(\"[Object]\",\"special\"):(e.seen.push(t),c=S?function(e,t,r,n,o){for(var i=[],a=0,s=t.length;a=0&&0,e+t.replace(/\\u001b\\[\\d\\d?m/g,\"\").length+1}),0)>60)return r[0]+(\"\"===t?\"\":t+\"\\n \")+\" \"+e.join(\",\\n \")+\" \"+r[1];return r[0]+t+\" \"+e.join(\", \")+\" \"+r[1]}(c,w,O)):O[0]+w+O[1]}function l(e){return\"[\"+Error.prototype.toString.call(e)+\"]\"}function h(e,t,r,n,o,i){var a,s,u;if((u=Object.getOwnPropertyDescriptor(t,o)||{value:t[o]}).get?s=u.set?e.stylize(\"[Getter/Setter]\",\"special\"):e.stylize(\"[Getter]\",\"special\"):u.set&&(s=e.stylize(\"[Setter]\",\"special\")),j(n,o)||(a=\"[\"+o+\"]\"),s||(e.seen.indexOf(u.value)<0?(s=y(r)?f(e,u.value,null):f(e,u.value,r-1)).indexOf(\"\\n\")>-1&&(s=i?s.split(\"\\n\").map((function(e){return\" \"+e})).join(\"\\n\").substr(2):\"\\n\"+s.split(\"\\n\").map((function(e){return\" \"+e})).join(\"\\n\")):s=e.stylize(\"[Circular]\",\"special\")),v(a)){if(i&&o.match(/^\\d+$/))return s;(a=JSON.stringify(\"\"+o)).match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?(a=a.substr(1,a.length-2),a=e.stylize(a,\"name\")):(a=a.replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"').replace(/(^\"|\"$)/g,\"'\"),a=e.stylize(a,\"string\"))}return a+\": \"+s}function d(e){return Array.isArray(e)}function p(e){return\"boolean\"==typeof e}function y(e){return null===e}function m(e){return\"number\"==typeof e}function b(e){return\"string\"==typeof e}function v(e){return void 0===e}function g(e){return w(e)&&\"[object RegExp]\"===S(e)}function w(e){return\"object\"===_typeof2(e)&&null!==e}function _(e){return w(e)&&\"[object Date]\"===S(e)}function k(e){return w(e)&&(\"[object Error]\"===S(e)||e instanceof Error)}function x(e){return\"function\"==typeof e}function S(e){return Object.prototype.toString.call(e)}function O(e){return e<10?\"0\"+e.toString(10):e.toString(10)}r.debuglog=function(e){if(v(i)&&(i=t.env.NODE_DEBUG||\"\"),e=e.toUpperCase(),!a[e])if(new RegExp(\"\\\\b\"+e+\"\\\\b\",\"i\").test(i)){var n=t.pid;a[e]=function(){var t=r.format.apply(r,arguments);console.error(\"%s %d: %s\",e,n,t)}}else a[e]=function(){};return a[e]},r.inspect=s,s.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},s.styles={special:\"cyan\",number:\"yellow\",boolean:\"yellow\",undefined:\"grey\",null:\"bold\",string:\"green\",date:\"magenta\",regexp:\"red\"},r.isArray=d,r.isBoolean=p,r.isNull=y,r.isNullOrUndefined=function(e){return null==e},r.isNumber=m,r.isString=b,r.isSymbol=function(e){return\"symbol\"===_typeof2(e)},r.isUndefined=v,r.isRegExp=g,r.isObject=w,r.isDate=_,r.isError=k,r.isFunction=x,r.isPrimitive=function(e){return null===e||\"boolean\"==typeof e||\"number\"==typeof e||\"string\"==typeof e||\"symbol\"===_typeof2(e)||void 0===e},r.isBuffer=e(\"./support/isBuffer\");var E=[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"];function R(){var e=new Date,t=[O(e.getHours()),O(e.getMinutes()),O(e.getSeconds())].join(\":\");return[e.getDate(),E[e.getMonth()],t].join(\" \")}function j(e,t){return Object.prototype.hasOwnProperty.call(e,t)}r.log=function(){console.log(\"%s - %s\",R(),r.format.apply(r,arguments))},r.inherits=e(\"inherits\"),r._extend=function(e,t){if(!t||!w(t))return e;for(var r=Object.keys(t),n=r.length;n--;)e[r[n]]=t[r[n]];return e}}).call(this,e(\"_process\"),\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:\"undefined\"!=typeof window?window:{})},{\"./support/isBuffer\":474,_process:419,inherits:473}],476:[function(e,t,r){var n=e(\"./v1\"),o=e(\"./v4\"),i=o;i.v1=n,i.v4=o,t.exports=i},{\"./v1\":479,\"./v4\":480}],477:[function(e,t,r){for(var n=[],o=0;o<256;++o)n[o]=(o+256).toString(16).substr(1);t.exports=function(e,t){var r=t||0,o=n;return[o[e[r++]],o[e[r++]],o[e[r++]],o[e[r++]],\"-\",o[e[r++]],o[e[r++]],\"-\",o[e[r++]],o[e[r++]],\"-\",o[e[r++]],o[e[r++]],\"-\",o[e[r++]],o[e[r++]],o[e[r++]],o[e[r++]],o[e[r++]],o[e[r++]]].join(\"\")}},{}],478:[function(e,t,r){var n=\"undefined\"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||\"undefined\"!=typeof msCrypto&&\"function\"==typeof window.msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto);if(n){var o=new Uint8Array(16);t.exports=function(){return n(o),o}}else{var i=new Array(16);t.exports=function(){for(var e,t=0;t<16;t++)0==(3&t)&&(e=4294967296*Math.random()),i[t]=e>>>((3&t)<<3)&255;return i}}},{}],479:[function(e,t,r){var n,o,i=e(\"./lib/rng\"),a=e(\"./lib/bytesToUuid\"),s=0,u=0;t.exports=function(e,t,r){var c=t&&r||0,f=t||[],l=(e=e||{}).node||n,h=void 0!==e.clockseq?e.clockseq:o;if(null==l||null==h){var d=i();null==l&&(l=n=[1|d[0],d[1],d[2],d[3],d[4],d[5]]),null==h&&(h=o=16383&(d[6]<<8|d[7]))}var p=void 0!==e.msecs?e.msecs:(new Date).getTime(),y=void 0!==e.nsecs?e.nsecs:u+1,m=p-s+(y-u)/1e4;if(m<0&&void 0===e.clockseq&&(h=h+1&16383),(m<0||p>s)&&void 0===e.nsecs&&(y=0),y>=1e4)throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");s=p,u=y,o=h;var b=(1e4*(268435455&(p+=122192928e5))+y)%4294967296;f[c++]=b>>>24&255,f[c++]=b>>>16&255,f[c++]=b>>>8&255,f[c++]=255&b;var v=p/4294967296*1e4&268435455;f[c++]=v>>>8&255,f[c++]=255&v,f[c++]=v>>>24&15|16,f[c++]=v>>>16&255,f[c++]=h>>>8|128,f[c++]=255&h;for(var g=0;g<6;++g)f[c+g]=l[g];return t||a(f)}},{\"./lib/bytesToUuid\":477,\"./lib/rng\":478}],480:[function(e,t,r){var n=e(\"./lib/rng\"),o=e(\"./lib/bytesToUuid\");t.exports=function(e,t,r){var i=t&&r||0;\"string\"==typeof e&&(t=\"binary\"===e?new Array(16):null,e=null);var a=(e=e||{}).random||(e.rng||n)();if(a[6]=15&a[6]|64,a[8]=63&a[8]|128,t)for(var s=0;s<16;++s)t[i+s]=a[s];return t||o(a)}},{\"./lib/bytesToUuid\":477,\"./lib/rng\":478}],481:[function(require,module,exports){var indexOf=function(e,t){if(e.indexOf)return e.indexOf(t);for(var r=0;r=65&&e<=90||e>=97&&e<=122||58===e||95===e||8204===e||8205===e||e>=192&&e<=214||e>=216&&e<=246||e>=248&&e<=767||e>=880&&e<=893||e>=895&&e<=8191||e>=8304&&e<=8591||e>=11264&&e<=12271||e>=12289&&e<=55295||e>=63744&&e<=64975||e>=65008&&e<=65533||e>=65536&&e<=983039}r.S_LIST=[32,10,13,9],r.isChar=function(e){return e>=32&&e<=55295||10===e||13===e||9===e||e>=57344&&e<=65533||e>=65536&&e<=1114111},r.isS=function(e){return 32===e||10===e||13===e||9===e},r.isNameStartChar=n,r.isNameChar=function(e){return n(e)||e>=48&&e<=57||45===e||46===e||183===e||e>=768&&e<=879||e>=8255&&e<=8256}},{}],483:[function(e,t,r){\n/**\n * Character classes and associated utilities for the 2nd edition of XML 1.1.\n *\n * @author Louis-Dominique Dubeau\n * @license MIT\n * @copyright Louis-Dominique Dubeau\n */\nObject.defineProperty(r,\"__esModule\",{value:!0}),r.CHAR=\"\\x01-\\ud7ff\\ue000-\\ufffd\\ud800\\udc00-\\udbff\\udfff\",r.RESTRICTED_CHAR=\"\\x01-\\b\\v\\f\\x0e-\\x1f\\x7f-\\x84\\x86-\\x9f\",r.S=\" \\t\\r\\n\",r.NAME_START_CHAR=\":A-Z_a-z\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02ff\\u0370-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd\\ud800\\udc00-\\udb7f\\udfff\",r.NAME_CHAR=\"-\"+r.NAME_START_CHAR+\".0-9\\xb7\\u0300-\\u036f\\u203f-\\u2040\",r.CHAR_RE=new RegExp(\"^[\"+r.CHAR+\"]$\",\"u\"),r.RESTRICTED_CHAR_RE=new RegExp(\"^[\"+r.RESTRICTED_CHAR+\"]$\",\"u\"),r.S_RE=new RegExp(\"^[\"+r.S+\"]+$\",\"u\"),r.NAME_START_CHAR_RE=new RegExp(\"^[\"+r.NAME_START_CHAR+\"]$\",\"u\"),r.NAME_CHAR_RE=new RegExp(\"^[\"+r.NAME_CHAR+\"]$\",\"u\"),r.NAME_RE=new RegExp(\"^[\"+r.NAME_START_CHAR+\"][\"+r.NAME_CHAR+\"]*$\",\"u\"),r.NMTOKEN_RE=new RegExp(\"^[\"+r.NAME_CHAR+\"]+$\",\"u\");function n(e){return e>=65&&e<=90||e>=97&&e<=122||58===e||95===e||8204===e||8205===e||e>=192&&e<=214||e>=216&&e<=246||e>=248&&e<=767||e>=880&&e<=893||e>=895&&e<=8191||e>=8304&&e<=8591||e>=11264&&e<=12271||e>=12289&&e<=55295||e>=63744&&e<=64975||e>=65008&&e<=65533||e>=65536&&e<=983039}r.S_LIST=[32,10,13,9],r.isChar=function(e){return e>=1&&e<=55295||e>=57344&&e<=65533||e>=65536&&e<=1114111},r.isRestrictedChar=function(e){return e>=1&&e<=8||11===e||12===e||e>=14&&e<=31||e>=127&&e<=132||e>=134&&e<=159},r.isCharAndNotRestricted=function(e){return 9===e||10===e||13===e||e>31&&e<127||133===e||e>159&&e<=55295||e>=57344&&e<=65533||e>=65536&&e<=1114111},r.isS=function(e){return 32===e||10===e||13===e||9===e},r.isNameStartChar=n,r.isNameChar=function(e){return n(e)||e>=48&&e<=57||45===e||46===e||183===e||e>=768&&e<=879||e>=8255&&e<=8256}},{}],484:[function(e,t,r){function n(e){return e>=65&&e<=90||95===e||e>=97&&e<=122||e>=192&&e<=214||e>=216&&e<=246||e>=248&&e<=767||e>=880&&e<=893||e>=895&&e<=8191||e>=8204&&e<=8205||e>=8304&&e<=8591||e>=11264&&e<=12271||e>=12289&&e<=55295||e>=63744&&e<=64975||e>=65008&&e<=65533||e>=65536&&e<=983039}\n/**\n * Character class utilities for XML NS 1.0 edition 3.\n *\n * @author Louis-Dominique Dubeau\n * @license MIT\n * @copyright Louis-Dominique Dubeau\n */\nObject.defineProperty(r,\"__esModule\",{value:!0}),r.NC_NAME_START_CHAR=\"A-Z_a-z\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\u02ff\\u0370-\\u037d\\u037f-\\u1fff\\u200c-\\u200d\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd\\ud800\\udc00-\\udb7f\\udfff\",r.NC_NAME_CHAR=\"-\"+r.NC_NAME_START_CHAR+\".0-9\\xb7\\u0300-\\u036f\\u203f-\\u2040\",r.NC_NAME_START_CHAR_RE=new RegExp(\"^[\"+r.NC_NAME_START_CHAR+\"]$\",\"u\"),r.NC_NAME_CHAR_RE=new RegExp(\"^[\"+r.NC_NAME_CHAR+\"]$\",\"u\"),r.NC_NAME_RE=new RegExp(\"^[\"+r.NC_NAME_START_CHAR+\"][\"+r.NC_NAME_CHAR+\"]*$\",\"u\"),r.isNCNameStartChar=n,r.isNCNameChar=function(e){return n(e)||45===e||46===e||e>=48&&e<=57||183===e||e>=768&&e<=879||e>=8255&&e<=8256}},{}]},{},[15])(15)}));","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";","import { Component, ElementRef, NgZone, ViewChild } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\nimport _ from \"lodash\";\nimport { NzMessageService } from \"ng-zorro-antd/message\";\nimport { first, filter } from \"rxjs/operators\";\nimport {\n BUILDING_SIDE,\n CONNECTION_TYPE,\n CUTOUT_ENABLE,\n EXISTING_BUILDING_CONFIG,\n FASCIA_BRACKET_FIT,\n RAKECUT_TYPE,\n} from \"src/app/app.constants\";\nimport { ICost } from \"src/app/core/models\";\nimport SelectionManager from \"src/app-ribspan/core/selection.manager\";\nimport { UI } from \"src/app-ribspan/core/ui\";\nimport { CutOutManager } from \"src/app-ribspan/core/UI/cutOut.manager\";\nimport { EditLength2Manager } from \"src/app-ribspan/core/UI/editLength2.manager\";\nimport { EditWallManager } from \"src/app-ribspan/core/UI/editWall.manager\";\nimport { EditWidth2Manager } from \"src/app-ribspan/core/UI/editWidth2.manager\";\nimport UIRakecutManager from \"src/app-ribspan/core/UI/rakecut\";\nimport { environment } from \"src/environments/environment\";\nimport {\n Box3,\n BoxHelper,\n Color,\n DirectionalLight,\n PerspectiveCamera,\n Scene,\n Vector3,\n WebGLRenderer,\n} from \"three\";\nimport { OrbitControls } from \"three/examples/jsm/controls/OrbitControls\";\nimport {\n ACTIVE_LEFT_MENU,\n APP_VERSION,\n CONFIG,\n GEOMETRY_CATEGORY,\n GEOMETRY_TYPE,\n INIT,\n OFFSET_GUTTER_TO_WALL,\n PANEL_TYPE,\n PATIOS_ROOF_TYPE,\n RELEASE_DATE,\n STATUS_TEXT,\n TEMPLATE,\n} from \"src/app/app.config\";\nimport { DimensionManager } from \"src/app-ribspan/core/dimension.manager\";\nimport { EaveManager } from \"src/app-ribspan/core/eave.manager\";\nimport { ExistingRoofManager } from \"src/app-ribspan/core/existing-roof.manager\";\nimport { ExistingWallManager } from \"src/app-ribspan/core/existing-wall.manager\";\nimport { FasciaManager } from \"src/app-ribspan/core/fascia.manager\";\nimport { GeometryManager } from \"src/app-ribspan/core/geometry.manager\";\nimport { GroundManager } from \"src/app-ribspan/core/ground.manager\";\nimport { MaterialManager } from \"src/app-ribspan/core/material.manager\";\nimport { Objects } from \"src/app-ribspan/core/objects\";\nimport { PatiosManager } from \"src/app-ribspan/core/patios.manager\";\nimport { Printing2DManager } from \"src/app-ribspan/core/printing2d.manager\";\nimport { UIManager } from \"src/app-ribspan/core/ui.manager\";\nimport { Util } from \"src/app-ribspan/core/utils\";\nimport { User } from \"src/app/models\";\nimport {\n AuthenticationService,\n JobService,\n PrintingService,\n} from \"src/app/services\";\nimport { UserService } from \"src/app/services/user.service\";\nimport { Album } from \"src/app/models/Album\";\nimport { Lightbox } from \"ngx-lightbox\";\nimport { DialogBOMComponent } from \"src/app/component/dialog-bom/dialog-bom.component\";\nimport { DialogAddCostComponent } from \"src/app/component/dialog-add-cost/dialog-add-cost.component\";\nimport { SliderInputComponent } from \"src/app/component/slider-input/slider-input.component\";\nimport { DropDownInputComponent } from \"src/app/component/dropdown-input/dropdown-input.component\";\nimport { DropDownInputCustomComponent } from \"src/app/component/dropdown-input-custom/dropdown-input-custom.component\";\nimport { DialogEditBayComponent } from \"src/app/component/dialog-edit-bay/dialog-edit-bay.component\";\nimport { SwitchInputComponent } from \"src/app/component/switch-input/switch-input.component\";\nimport { CheckboxInputComponent } from \"src/app/component/checkbox-input/checkbox-input.component\";\nimport { DialogRakeCutComponent } from \"src/app/component/dialog-rakecut/dialog-rakecut.component\";\nimport { DialogDimensionComponent } from \"src/app/component/dialog-dimension/dialog-dimension.component\";\nimport { DialogConfirmComponent } from \"src/app/component/dialog-confirm/dialog-confirm.component\";\nimport { PanelBOMComponent } from \"src/app/component/panel-bom/panel-bom.component\";\nimport { ToggleButtonComponent } from \"src/app/component/toggle-button/toggle-button.component\";\nimport { CutBeamManager } from \"src/app-ribspan/core/UI/cutBeam.manager\";\n\ndeclare var $: any;\n\n@Component({\n templateUrl: \"./home.component.html\",\n styleUrls: [\"./home.component.scss\"],\n})\nexport class HomeComponent {\n @ViewChild(\"rendererCanvas\", { static: true })\n public rendererCanvas: ElementRef;\n @ViewChild(\"viewerContainer\", { static: true })\n public viewerContainer: ElementRef;\n @ViewChild(\"sldEaveWidth\", { static: true })\n public sldEaveWidth: SliderInputComponent;\n @ViewChild(\"sldEaveHeight\", { static: true })\n public sldExistingWallHeight: SliderInputComponent;\n @ViewChild(\"sldFasciaDepth\", { static: true })\n public sldFasciaDepth: SliderInputComponent;\n\n @ViewChild(\"sldBaySize\", { static: true })\n public sldBaySize: SliderInputComponent;\n @ViewChild(\"sldSpan\", { static: true }) public sldSpan: SliderInputComponent;\n\n @ViewChild(\"sldExistingLength\", { static: true })\n public sldExistingLength: SliderInputComponent;\n @ViewChild(\"sldExistingLength2\", { static: true })\n public sldExistingLength2: SliderInputComponent;\n\n @ViewChild(\"sldExistingWidth1\", { static: true })\n public sldExistingWidth1: SliderInputComponent;\n @ViewChild(\"sldExistingWidth2\", { static: true })\n public sldExistingWidth2: SliderInputComponent;\n\n @ViewChild(\"sltExistingType\", { static: true })\n public sltExistingType: DropDownInputComponent;\n @ViewChild(\"sltStructureType\", { static: true })\n public sltStructureType: DropDownInputComponent;\n @ViewChild(\"sltWindClass\", { static: true })\n public sltWindClass: DropDownInputComponent;\n @ViewChild(\"sltWallType\", { static: true })\n public sltWallType: DropDownInputComponent;\n @ViewChild(\"sltExistingRoofType\", { static: true })\n public sltExistingRoofType: DropDownInputComponent;\n\n @ViewChild(\"sldMultiSpan\", { static: true })\n public sldMultiSpan: SliderInputComponent;\n @ViewChild(\"sldBuildingHeight\", { static: true })\n public sldBuildingHeight: SliderInputComponent;\n @ViewChild(\"sldFrontOverhang\", { static: true })\n public sldFrontOverhang: SliderInputComponent;\n @ViewChild(\"sldBackOverhang\", { static: true })\n public sldBackOverhang: SliderInputComponent;\n @ViewChild(\"sldLeftOverhang\", { static: true })\n public sldLeftOverhang: SliderInputComponent;\n @ViewChild(\"sldRightOverhang\", { static: true })\n public sldRightOverhang: SliderInputComponent;\n @ViewChild(\"sltRoofPitch\", { static: true })\n public sltRoofPitch: DropDownInputCustomComponent;\n @ViewChild(\"sldFlyOverBracketHeight\", { static: true })\n public sldFlyOverBracketHeight: SliderInputComponent;\n @ViewChild(\"sldNoOfBay\", { static: true })\n public sldNoOfBay: SliderInputComponent;\n @ViewChild(\"dialogEditBay\", { static: true })\n public dialogEditBay: DialogEditBayComponent;\n\n @ViewChild(\"sltPitch\", { static: true })\n public sltExistingRoofPitch: DropDownInputComponent;\n @ViewChild(\"sldRoofOverallLength\", { static: true })\n public sldRoofOverallLength: SliderInputComponent;\n @ViewChild(\"sldRoofOverallWidth\", { static: true })\n public sldRoofOverallWidth: SliderInputComponent;\n @ViewChild(\"sldMinHeight\", { static: true })\n public sldMinHeight: SliderInputComponent;\n @ViewChild(\"sltFlatBottom\", { static: true })\n public sltFlatBottom: DropDownInputComponent;\n @ViewChild(\"sltZFlashingType\", { static: true })\n public sltZFlashingType: DropDownInputComponent;\n // -----------------------\n @ViewChild(\"sltLeftCutType\", { static: true })\n public sltLeftCutType: DropDownInputComponent;\n @ViewChild(\"sltRightCutType\", { static: true })\n public sltRightCutType: DropDownInputComponent;\n @ViewChild(\"sldLeftCutVertical\", { static: true })\n public sldLeftCutVertical: SliderInputComponent;\n @ViewChild(\"sldLeftCutHorizontal\", { static: true })\n public sldLeftCutHorizontal: SliderInputComponent;\n @ViewChild(\"sldRightCutVertical\", { static: true })\n public sldRightCutVertical: SliderInputComponent;\n @ViewChild(\"sldRightCutHorizontal\", { static: true })\n public sldRightCutHorizontal: SliderInputComponent;\n // -----------------------\n @ViewChild(\"sltRoofSheetingType\", { static: true })\n public sltRoofSheetingType: DropDownInputComponent;\n @ViewChild(\"sltBaseFixingType\", { static: true })\n public sltBaseFixingType: DropDownInputComponent;\n @ViewChild(\"sltRoofThickness\", { static: true })\n public sltRoofThickness: DropDownInputComponent;\n @ViewChild(\"sltBargeType\", { static: true })\n public sltBargeType: DropDownInputComponent;\n\n @ViewChild(\"sltDownpipeType\", { static: true })\n public sltDownpipeType: DropDownInputComponent;\n @ViewChild(\"sltGutterType\", { static: true })\n public sltGutterType: DropDownInputComponent;\n @ViewChild(\"sltBeamType\", { static: true })\n public sltBeamType: DropDownInputComponent;\n @ViewChild(\"sltBeamSize\", { static: true })\n public sltBeamSize: DropDownInputComponent;\n @ViewChild(\"sltHouseBeamSize\", { static: true })\n public sltHouseBeamSize: DropDownInputComponent;\n @ViewChild(\"sltReceiverType\", { static: true })\n public sltReceiverType: DropDownInputComponent;\n @ViewChild(\"sltColumnType\", { static: true })\n public sltColumnType: DropDownInputComponent;\n\n @ViewChild(\"sltColourRoof\", { static: true })\n public sltColourRoof: DropDownInputComponent;\n @ViewChild(\"sltColourBarge\", { static: true })\n public sltColourBarge: DropDownInputComponent;\n @ViewChild(\"sltColourGutter\", { static: true })\n public sltColourGutter: DropDownInputComponent;\n @ViewChild(\"sltColourZFlashing\", { static: true })\n public sltColourZFlashing: DropDownInputComponent;\n @ViewChild(\"sltColourPost\", { static: true })\n public sltColourPost: DropDownInputComponent;\n @ViewChild(\"sltColourBeam\", { static: true })\n public sltColourBeam: DropDownInputComponent;\n @ViewChild(\"sltColourBracket\", { static: true })\n public sltColourBracket: DropDownInputComponent;\n @ViewChild(\"sltColourFasciaBracket\", { static: true })\n public sltColourFasciaBracket: DropDownInputComponent;\n @ViewChild(\"sltColourDownpipe\", { static: true })\n public sltColourDownpipe: DropDownInputComponent;\n\n @ViewChild(\"sltCutOut\", { static: true })\n public sltCutOut: DropDownInputComponent;\n\n @ViewChild(\"sltPanelDirection\", { static: true })\n public sltPanelDirection: SwitchInputComponent;\n @ViewChild(\"sltPanelDirectionShow\", { static: true })\n public sltPanelDirectionShow: CheckboxInputComponent;\n @ViewChild(\"sltBeamLayoutShow\", { static: true })\n public sltBeamLayoutShow: CheckboxInputComponent;\n @ViewChild(\"sltDripBarge\", { static: true })\n public sltDripBarge: CheckboxInputComponent;\n @ViewChild(\"sltFasciaUpstandBrackets\", { static: true })\n public sltFasciaUpstandBrackets: DropDownInputComponent;\n @ViewChild(\"sltUpFasciaUpstandBracket\", { static: true })\n public sltUpFasciaUpstandBracket: CheckboxInputComponent;\n @ViewChild(\"chkRapidSetCement\", { static: true })\n public chkRapidSetCement: CheckboxInputComponent;\n @ViewChild(\"chkHasHouseBeam\", { static: true })\n public chkHasHouseBeam: CheckboxInputComponent;\n\n @ViewChild(\"dialogRakeCut\", { static: true })\n dialogRakeCut: DialogRakeCutComponent;\n @ViewChild(\"dialogDimension\", { static: true })\n dialogDimension: DialogDimensionComponent;\n @ViewChild(\"dialogComfirm\", { static: true })\n dialogComfirm: DialogConfirmComponent;\n @ViewChild(\"dialogAddCost\", { static: true })\n dialogAddCost: DialogAddCostComponent;\n @ViewChild(\"dialogBOM\", { static: true }) dialogBOM: DialogBOMComponent;\n @ViewChild(\"panelBOM\", { static: true }) panelBOM: PanelBOMComponent;\n\n @ViewChild(\"btnTurnOffRakeCutLeft\", { static: true })\n btnTurnOffRakeCutLeft: ToggleButtonComponent;\n @ViewChild(\"btnTurnOffRakeCutRight\", { static: true })\n btnTurnOffRakeCutRight: ToggleButtonComponent;\n @ViewChild(\"btnTurnOffCutout\", { static: true })\n btnTurnOffCutout: ToggleButtonComponent;\n @ViewChild(\"btnTurnOnPanel\", { static: true })\n btnTurnOnPanel: ToggleButtonComponent;\n @ViewChild(\"btnEnableControl\", { static: true })\n btnEnableControl: ToggleButtonComponent;\n\n static ins: HomeComponent;\n\n public objects: Objects;\n public env = CONFIG;\n\n public utils: Util;\n\n public scene: THREE.Scene;\n public canvas: HTMLCanvasElement;\n public renderer: THREE.WebGLRenderer;\n public camera: THREE.PerspectiveCamera;\n public control: OrbitControls;\n // private control: TrackballControls;\n\n private frameId: number = null;\n\n public loadCompleted = false;\n public oldOverhangBack: number = 0;\n public geometryManager: GeometryManager;\n private materialManager: MaterialManager;\n public eaveManager: EaveManager;\n public existingWallManager: ExistingWallManager;\n public fasciaManager: FasciaManager;\n public existingRoofManager: ExistingRoofManager;\n public uiManager: UIManager;\n public printingManager: Printing2DManager;\n\n public patiosManager: PatiosManager;\n\n // public flyOverManager: PatiosFlyOverManager;\n // public backFlyOverManager: PatiosBackFlyOverManager;\n // private freeStandingManager: PatiosFreeStandingManager;\n // private existingBuildingManager: ExistingBuildingManager;\n // private toFasciaManager: ToFasciaManager;\n\n // private columnAndPurlinManager: ColumnAndPurlinManager;\n // private roofManager: RoofManager;\n public groundManager: GroundManager;\n public dimensionManager: DimensionManager;\n\n public resizeEventHandle: any;\n\n public sldExistingWidth2Visible = true;\n public sldExistingLength2Visible = true;\n currentUser: User;\n public isVisible = false;\n isVisibleMoreInfo: boolean = false;\n isVisibleOpenModal = false;\n isVisibleProperty = !environment.production;\n isVisibleDiscount = false;\n isSaveAs = 0; // 0: none, 1: Copy, 2: Revised\n public addCostInstallDes = \"\";\n public isUploading = false;\n costList: ICost[] = [];\n dataOPEN: any;\n jobNoSearch = \"\";\n cusNameSearch = \"\";\n isSearching = false;\n isOpening = false;\n isPricing = false;\n isError = false;\n isAdmin = false;\n statusError = \"\";\n public statusText = STATUS_TEXT.NEW;\n maxSpan = 0;\n maxSpanText = \"\";\n public maxThickness = \"\";\n maxBaySizeText = \"\";\n maxBaySize = 0;\n maxBeamSizeText = \"\";\n beamSizeList = [];\n houseBeamSizeList = [];\n thicknessList = [];\n baseFixingTypeList = [];\n columnTypeList = [];\n public oldBuildingInfo = null;\n currentStep = 0;\n currentStepNew = 0;\n newOpenType = 0;\n existingHouseType = -1;\n roofPercent: string = \"\";\n version: string = APP_VERSION;\n releaseDate: string = RELEASE_DATE;\n rightToLeft: boolean = false;\n public flyoverBracketNumber: 3;\n public flyoverBracketNumberCutOut: 3;\n public fasciaBracketNumber: 3;\n public fasciaBracketNumberCutOut: 3;\n public currentBuildingInfo = null;\n public currentQuoteInfo = null;\n public roofHeight: number = 0;\n public upFasciaBracketList = null;\n public _patiosRoofType = PATIOS_ROOF_TYPE.FLAT_ROOF;\n public _isFBRoof: boolean = false;\n public panelType = PANEL_TYPE.RIBSPAN;\n\n private _albums: Array = [];\n\n set patiosRoofType(value: string) {\n let oldVal = this._patiosRoofType;\n this._patiosRoofType = value;\n if (oldVal != this._patiosRoofType) {\n this.uiManager.onStructureTypeChanged(\n null,\n this.sltStructureType.currentValue\n );\n this.uiManager.setBeamSize();\n this.uiManager.setMaxSpan();\n this.uiManager.validateCutout();\n }\n }\n get patiosRoofType(): string {\n return this._patiosRoofType;\n }\n\n set isFBRoof(value: boolean) {\n if (value != this._isFBRoof) {\n this._isFBRoof = value;\n this.uiManager.setBeamSize();\n this.uiManager.setMaxSpan();\n\n this.uiManager.onStructureTypeChanged(\n null,\n this.sltStructureType.currentValue\n );\n }\n }\n get isFBRoof(): boolean {\n return this._isFBRoof;\n }\n\n public get patiosBoundingBox(): Box3 {\n let boxHelper = new BoxHelper(this.patiosManager.patiosGroup);\n return boxHelper.geometry.boundingBox;\n }\n\n public APP_CONFIG = {\n activeLeftMenu: ACTIVE_LEFT_MENU,\n };\n\n public constructor(\n private ngZone: NgZone,\n public printService: PrintingService,\n private router: Router,\n private authenticationService: AuthenticationService,\n public message: NzMessageService,\n private jobService: JobService,\n private userService: UserService,\n private uiRakecutMgr: UIRakecutManager,\n public selectionMgr: SelectionManager,\n // public uiRakecutLeft: WidthManager\n public uiEditWall: EditWallManager,\n public uiEditLength2: EditLength2Manager,\n public uiEditWidth2: EditWidth2Manager,\n public uiCutout: CutOutManager,\n public uiCutBeam: CutBeamManager,\n private _lightbox: Lightbox\n ) {\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.geometryManager.init(this);\n this.materialManager = MaterialManager.Instance();\n this.eaveManager = new EaveManager();\n this.existingWallManager = new ExistingWallManager();\n this.fasciaManager = new FasciaManager();\n this.existingRoofManager = new ExistingRoofManager();\n this.objects = new Objects();\n this.groundManager = new GroundManager();\n this.dimensionManager = DimensionManager.Instance();\n this.printingManager = new Printing2DManager(this);\n this.authenticationService.currentUser.subscribe(\n (x) => (this.currentUser = x)\n );\n this.upFasciaBracketList = this.objects.fasciaBracketList.filter(\n (el) => el.id != 0\n );\n\n this.resizeEventHandle = this.resize.bind(this);\n\n window[\"APP\"] = this;\n\n console.log(`App version: ${APP_VERSION}`);\n console.log(`Release date: ${RELEASE_DATE}`);\n\n HomeComponent.ins = this;\n }\n logout() {\n this.authenticationService.logout();\n this.router.navigate([\"/login\"]);\n }\n public ngOnInit(): void {\n if (!this.currentUser || !this.currentUser.user) {\n this.authenticationService.logout();\n this.router.navigate([\"/login\"]);\n return;\n }\n this.initObject();\n }\n public ngAfterViewInit(): void {\n $(\".ui.accordion\").accordion();\n this.init3D().then(() => {\n this.uiManager = new UIManager(this);\n // this.sldBaySize.addAction(this.onBaySizeChanged.bind(this));\n\n this.uiRakecutMgr.init();\n\n this.geometryManager\n .loadAll()\n .then(() => {\n return Promise.all([\n this.eaveManager.init(this),\n this.existingWallManager.init(this),\n this.fasciaManager.init(this),\n this.existingRoofManager.init(this),\n this.groundManager.init(this),\n this.dimensionManager.init(this),\n this.materialManager.init(this),\n this.selectionMgr.init(),\n // this.uiRakecutLeft.init()\n this.uiEditWall.init(),\n this.uiEditLength2.init(),\n this.uiEditWidth2.init(),\n this.uiCutout.init(),\n this.uiCutBeam.init(),\n ]);\n })\n .then(() => {\n return Promise.all([\n this.existingWallManager.optimize(),\n this.eaveManager.optimize(),\n this.fasciaManager.optimize(),\n this.existingRoofManager.optimize(),\n this.groundManager.optimize(),\n this.dimensionManager.optimize(),\n ]);\n })\n .then(() => {\n return Promise.all([\n this.existingWallManager.load(),\n this.eaveManager.load(),\n this.fasciaManager.load(),\n this.existingRoofManager.load(),\n this.selectionMgr.enable(),\n // this.dimensionManager.load(),\n // this.uiRakecutLeft.load()\n this.uiEditWall.load(),\n this.uiEditLength2.load(),\n this.uiEditWidth2.load(),\n this.uiCutout.load(),\n this.uiCutBeam.load(),\n ]);\n })\n .then(() => {\n // Init for Test\n this.sltExistingType.setSelected(INIT.EXISTING_TYPE);\n this.sltRoofPitch.setSelected(CONFIG.patiosPitch.default);\n //this.sltStructureType.setSelected(INIT.CONNECTION_TYPE);\n\n this.uiManager.load();\n this.renderStatic();\n this.newOpenType = 0;\n\n this.loadCompleted = true;\n if (environment.production) {\n this.isVisibleOpenModal = true;\n }\n });\n // this.test();\n });\n }\n\n public ngOnDestroy() {\n if (this.frameId != null) {\n cancelAnimationFrame(this.frameId);\n }\n }\n\n private init3D(): Promise {\n // The first step is to get the reference of the canvas element from our HTML document\n this.canvas = this.rendererCanvas.nativeElement;\n\n this.canvas.width = this.viewerContainer.nativeElement.clientWidth;\n this.canvas.height = this.viewerContainer.nativeElement.clientHeight;\n\n this.renderer = new WebGLRenderer({\n canvas: this.canvas,\n // alpha: true, // transparent background\n antialias: true, // smooth edges\n preserveDrawingBuffer: true,\n });\n this.renderer.setSize(this.canvas.width, this.canvas.height);\n this.renderer.localClippingEnabled = true;\n // this.renderer.gammaOutput = true;\n // this.renderer.setClearColor( 0x000000 );\n // this.renderer.setPixelRatio( window.devicePixelRatio );\n // this.renderer.shadowMap.enabled = true;\n\n // create the scene\n this.scene = new Scene();\n this.scene.background = new Color(0xcce0ff);\n // this.scene.fog = new THREE.Fog(0xcce0ff, 500, 10000);\n\n // Camera\n this.camera = new PerspectiveCamera(\n 75,\n this.canvas.width / this.canvas.height,\n 100,\n 100000\n );\n this.camera.position.set(0, 1000, 12967);\n // this.camera.position.set(91.02454523941192, 18.45966896006735, 5.692036175338248);\n this.scene.add(this.camera);\n\n this.addShadowedLight(0, 0, 10000, 0xffffff, 0.7);\n this.addShadowedLight(0, 0, -10000, 0xffffff, 0.7);\n this.addShadowedLight(0, 10000, 0, 0xffffff, 0.7);\n this.addShadowedLight(0, -10000, 0, 0xffffff, 0.7);\n this.addShadowedLight(10000, 0, 0, 0xffffff, 0.7);\n this.addShadowedLight(-10000, 0, 0, 0xffffff, 0.7);\n\n // control\n // this.control = new TrackballControls(this.camera, this.renderer.domElement);\n this.control = new OrbitControls(this.camera, this.renderer.domElement);\n // this.control.enableDamping = true; // an animation loop is required when either damping or auto-rotation are enabled\n // this.control.dampingFactor = 0.05;\n // this.control.screenSpacePanning = false;\n //this.control.minDistance = 100;\n this.control.maxDistance = 50000; // max zoom\n this.control.maxPolarAngle = this.utils.degreesToRadians(90);\n\n window[\"scene\"] = this.scene;\n window[\"camera\"] = this.camera;\n\n this.animate();\n return Promise.resolve();\n }\n\n public showEditBay() {\n this.dialogEditBay.show(true);\n }\n\n private addShadowedLight(x, y, z, color, intensity): void {\n const directionalLight = new DirectionalLight(color, intensity);\n directionalLight.position.set(x, y, z);\n this.scene.add(directionalLight);\n }\n private animate(): void {\n // We have to run this outside angular zones,\n // because it could trigger heavy changeDetection cycles.\n this.ngZone.runOutsideAngular(() => {\n if (document.readyState !== \"loading\") {\n this.render();\n } else {\n window.addEventListener(\"DOMContentLoaded\", () => {\n this.render();\n });\n }\n\n window.addEventListener(\"resize\", this.resizeEventHandle);\n\n this.control.addEventListener(\"change\", this.renderStatic.bind(this));\n });\n }\n private render(): void {\n // this.frameId = requestAnimationFrame(() => {\n // this.render();\n // });\n // //this.control.update();\n // this.renderer.render(this.scene, this.camera);\n }\n public renderStatic() {\n this.renderer.render(this.scene, this.camera);\n }\n private resize(): void {\n const width = this.viewerContainer.nativeElement.clientWidth;\n const height = this.viewerContainer.nativeElement.clientHeight;\n\n this.canvas.width = width;\n this.canvas.height = height;\n\n this.camera.aspect = width / height;\n this.camera.updateProjectionMatrix();\n\n this.renderer.setSize(width, height);\n\n this.renderStatic();\n }\n round(number, precision = 0) {\n return _.round(number, precision);\n }\n public calcQuoteInfo(): Promise {\n return Promise.resolve().then(() => {\n const _quoteInfo = { ...this.currentQuoteInfo.quoteInfo };\n let _gst = 0;\n let _totalPrice = 0;\n if (this.currentQuoteInfo.clientInfo.supplyType === \"supply_only\") {\n _gst = this.round(\n ((_quoteInfo.nett +\n _quoteInfo.addCostInstall +\n _quoteInfo.supplyOnlyKits) *\n 10) /\n 100,\n 2\n );\n _totalPrice = this.round(\n _quoteInfo.nett +\n _quoteInfo.addCostInstall +\n _quoteInfo.supplyOnlyKits +\n _gst,\n 100\n );\n } else {\n _gst = this.round(\n ((_quoteInfo.nett +\n _quoteInfo.addCostInstall +\n _quoteInfo.fasciaInstall +\n _quoteInfo.flyOverInstall +\n _quoteInfo.installMaterial +\n _quoteInfo.perPostInstall +\n _quoteInfo.addCost) *\n 10) /\n 100,\n 2\n );\n _totalPrice = this.round(\n _quoteInfo.nett +\n _quoteInfo.addCostInstall +\n _quoteInfo.fasciaInstall +\n _quoteInfo.flyOverInstall +\n _quoteInfo.installMaterial +\n _quoteInfo.perPostInstall +\n _quoteInfo.addCost +\n _gst,\n 2\n );\n }\n const _info = {\n ...this.currentQuoteInfo.quoteInfo,\n gst: _gst,\n totalPrice: _totalPrice,\n total0: _totalPrice,\n };\n this.jobService\n .calcQuoteInfo(_info)\n .pipe(first())\n .subscribe(\n (data) => {\n if (data.statusCode === 200) {\n this.currentQuoteInfo.quoteInfo = data.data;\n } else {\n this.message.error(data.message);\n }\n },\n (error) => {\n this.message.error(error);\n this.isUploading = false;\n }\n );\n });\n // return Promise.resolve();\n }\n\n calcPayment(): void {\n /** wait for refresh value */\n const _values = { ...this.currentQuoteInfo.quoteInfo };\n let _totalPriceTmp = 0;\n let _discount = _values.discount;\n let _deposit = this.currentQuoteInfo.quoteInfo.deposit;\n let _stage1 = this.currentQuoteInfo.quoteInfo.stage1;\n let _stage2 = this.currentQuoteInfo.quoteInfo.stage2;\n let _finalPayment = 0;\n _totalPriceTmp = this.currentQuoteInfo.quoteInfo.total0;\n\n if (_values.discountPer > 0) {\n _discount = this.round((_totalPriceTmp * _values.discountPer) / 100, 2);\n }\n _totalPriceTmp -= _discount;\n if (_values.depositPer > 0) {\n _deposit = this.round((_totalPriceTmp * _values.depositPer) / 100, 2);\n } else {\n _deposit = 0;\n }\n if (_values.stage1Per > 0) {\n _stage1 = this.round((_totalPriceTmp * _values.stage1Per) / 100, 2);\n } else {\n _stage1 = 0;\n }\n if (_values.stage2Per > 0) {\n _stage2 = this.round((_totalPriceTmp * _values.stage2Per) / 100, 2);\n } else {\n _stage2 = 0;\n }\n _finalPayment = this.round(\n _totalPriceTmp - _deposit - _stage1 - _stage2,\n 2\n );\n if (_finalPayment < 0) {\n _finalPayment = 0;\n }\n // --------------\n if (\n _values.depositPer + _values.stage1Per + _values.stage2Per === 100 &&\n _finalPayment > 0\n ) {\n _stage1 = this.round(_stage1 + _finalPayment, 2);\n _finalPayment = 0;\n }\n // --------------\n if (\n this.round(_deposit + _stage1 + _stage2 + _finalPayment, 2) >\n _totalPriceTmp\n ) {\n _stage1 -=\n this.round(_deposit + _stage1 + _stage2 + _finalPayment, 2) -\n _totalPriceTmp;\n }\n //\n this.currentQuoteInfo.quoteInfo = {\n ...this.currentQuoteInfo.quoteInfo,\n totalPrice: _totalPriceTmp,\n discount: _discount,\n deposit: _deposit,\n stage1: _stage1,\n stage2: _stage2,\n finalPayment: _finalPayment,\n discountPer: _values.discountPer,\n depositPer: _values.depositPer,\n stage1Per: _values.stage1Per,\n stage2Per: _values.stage2Per,\n addCostInstall: _values.addCostInstall,\n };\n }\n getRoofPercent(value) {\n return new Promise((resolve) => {\n const _count = Math.ceil(value / 762);\n const _ret = `${this.round((value * 100) / (_count * 762), 2)}% (${\n _count * 762\n })`;\n resolve(_ret);\n }).then((value) => (this.roofPercent = value));\n }\n public getMaxOverhang(): number {\n // N2 N3\n if (UI.windClass == 0 || UI.windClass == 1) {\n return 900;\n }\n // N4\n else if (UI.windClass == 2) {\n return 600;\n } else {\n return 600;\n }\n }\n public onSetMaxValue(): void {\n const _maxRibspanOverhang = this.getMaxOverhang();\n\n if (\n HomeComponent.ins.patiosRoofType == PATIOS_ROOF_TYPE.GABLE_ROOF &&\n !HomeComponent.ins.isFBRoof\n ) {\n this.sldLeftOverhang.setMax(this.round(_maxRibspanOverhang));\n this.sldRightOverhang.setMax(this.round(_maxRibspanOverhang));\n if (this.dialogEditBay.listBay.length > 0) {\n const _maxBay = _.maxBy(this.dialogEditBay.listBay, \"value\").value;\n const _fasciaUpstand = this.sltFasciaUpstandBrackets.currentValue;\n if (_fasciaUpstand != 0) {\n const _beamType = this.sltBeamType.currentValue;\n const _beamSize = this.sltBeamSize.currentText;\n const _size =\n _beamType == 1\n ? _beamSize.substring(0, 3)\n : _beamSize.substring(2, 5);\n let _sizeInt = parseInt(_size);\n if (_sizeInt) {\n let _maxValue = 1200;\n if (_sizeInt >= 210) _maxValue = 1500;\n else if (_sizeInt <= 110) _maxValue = 900;\n this.sldFrontOverhang.setMax(_maxValue);\n this.sldBackOverhang.setMax(_maxValue);\n }\n } else {\n this.sldFrontOverhang.setMax(this.round(_maxBay / 4));\n this.sldBackOverhang.setMax(this.round(_maxBay / 4));\n }\n }\n } else {\n this.sldFrontOverhang.setMax(this.round(_maxRibspanOverhang));\n this.sldBackOverhang.setMax(this.round(_maxRibspanOverhang));\n if (this.dialogEditBay.listBay.length > 0) {\n const _maxBay = _.maxBy(this.dialogEditBay.listBay, \"value\").value;\n const _fasciaUpstand = this.sltFasciaUpstandBrackets.currentValue;\n if (_fasciaUpstand != 0) {\n const _beamType = this.sltBeamType.currentValue;\n const _beamSize = this.sltBeamSize.currentText;\n const _size =\n _beamType == 1\n ? _beamSize.substring(0, 3)\n : _beamSize.substring(2, 5);\n let _sizeInt = parseInt(_size);\n if (_sizeInt) {\n let _maxValue = 1200;\n if (_sizeInt >= 210) _maxValue = 1500;\n else if (_sizeInt <= 110) _maxValue = 900;\n this.sldLeftOverhang.setMax(_maxValue);\n this.sldRightOverhang.setMax(_maxValue);\n }\n } else {\n this.sldLeftOverhang.setMax(this.round(_maxBay / 4));\n this.sldRightOverhang.setMax(this.round(_maxBay / 4));\n }\n }\n }\n }\n public calcPostSpacingInfoWhenOverallRoofLengthChanged(): Promise {\n const _info = {\n ...this.currentBuildingInfo,\n buildingInfo: this.bindBuildingInfo(),\n clientInfo: this.currentQuoteInfo.clientInfo,\n quoteInfo: this.currentQuoteInfo.quoteInfo,\n };\n // const _info = {\n // buildingInfo: {\n // existingType: UI.existingType,\n // structureType: UI.structureType,\n // beamSize: UI.beamSize,\n // span: UI.span,\n // multiSpan: UI.multiSpan,\n // windClass: UI.windClass,\n // roofOverallLength: UI.roofOverallLength,\n // },\n // };\n this.jobService\n .calcRibSpanInfo(_info)\n .pipe(first())\n .subscribe((data) => {\n if (data.data.ribSpanInfo) {\n const { maxPostSpacing, noOfPost } = data.data.ribSpanInfo;\n // Set max baysize before set num of bay\n if (this.maxBaySize != maxPostSpacing) {\n this.maxBaySize = maxPostSpacing;\n this.maxBaySizeText = `${maxPostSpacing} max`;\n }\n let overhangLength = UI.overhangLeft + UI.overhangRight;\n if (\n HomeComponent.ins.patiosRoofType == PATIOS_ROOF_TYPE.GABLE_ROOF &&\n HomeComponent.ins.isFBRoof\n ) {\n overhangLength = UI.overhangFront + UI.overhangBack;\n }\n const current3DOverallRoofLength = UI.totalBayLength + overhangLength;\n // If no of bay change, auto seperate list bays. If no change, keep it.\n // If user input overall, we must set listbay from noOfPost\n if (\n UI.noOfBays != noOfPost + 1 ||\n current3DOverallRoofLength != UI.roofOverallLength\n ) {\n const baySpacing =\n (UI.roofOverallLength - overhangLength) / (noOfPost + 1);\n HomeComponent.ins.sldBaySize.setValue(baySpacing);\n // HomeComponent.ins.sldNoOfBay.setValue(noOfPost + 1);\n HomeComponent.ins.sldNoOfBay.setValue(\n noOfPost === 0 ? 1 : noOfPost\n );\n }\n }\n });\n return Promise.resolve();\n }\n public calcRibSpanInfo(): Promise {\n const _info = {\n ...this.currentBuildingInfo,\n buildingInfo: this.bindBuildingInfo(),\n clientInfo: this.currentQuoteInfo.clientInfo,\n quoteInfo: this.currentQuoteInfo.quoteInfo,\n };\n this.jobService\n .calcRibSpanInfo(_info)\n .pipe(first())\n .subscribe((data) => {\n if (data.data.ribSpanInfo) {\n const { noOfInternalRafter, noOfInternalBeam } =\n data.data.ribSpanInfo;\n this.patiosManager.loadRafterBeamAndInternalBeam({\n numOfInternalRafter: noOfInternalRafter,\n numOfSpanBeam: noOfInternalBeam,\n numOfMultiSpanBeam: 0,\n });\n // After call loadRafterBeamAndInternalBeam, some object will be change, need to calc BOM again.\n HomeComponent.ins.uiManager.onUIChanged(null, null);\n }\n });\n return Promise.resolve();\n }\n public onCalcPrice(): Promise {\n if (!this.currentBuildingInfo.isOpen) {\n this.isPricing = true;\n this.currentBuildingInfo.quoteInfo.totalPrice = 0;\n }\n\n const _info = {\n ...this.currentBuildingInfo,\n buildingInfo: this.bindBuildingInfo(),\n clientInfo: this.currentQuoteInfo.clientInfo,\n quoteInfo: this.currentQuoteInfo.quoteInfo,\n };\n if (!environment.production) {\n this.patiosManager.loadBracket(2);\n this.patiosManager.loadBracketCutout(2);\n return Promise.resolve();\n }\n if (\n (_info.buildingInfo.listPosts.length === 0 &&\n _info.buildingInfo.existingType.value !== 3) ||\n this.currentBuildingInfo.isOpen\n ) {\n return Promise.resolve();\n }\n const _structureType = _info.buildingInfo.structureType.value;\n if (_structureType === 0 || _structureType === 3) {\n if (\n _info.buildingInfo.existingLength +\n _info.buildingInfo.existingLength2 *\n (_info.buildingInfo.existingType.value === 3 ? 2 : 1) <\n _info.buildingInfo.roofOverallLength\n ) {\n this.isError = true;\n this.statusError =\n \"The Patios length greater than existing building. Please check existing building length.\";\n return Promise.resolve();\n }\n }\n\n if (_info.buildingInfo.minHeight < 1900) {\n this.isError = true;\n this.statusError =\n \"Min. Height Under Beam must be greater than or equal to 1900mm.\";\n return Promise.resolve();\n }\n if (_info.buildingInfo.columnType.value < 0) {\n this.isError = true;\n this.statusError = `Patios Height is over ${\n _info.buildingInfo.structureType.value === 4 ? \"3600mm\" : \"4000mm\"\n }.`;\n return Promise.resolve();\n }\n if (\n _info.buildingInfo.roofSheetingType.value === 2 &&\n _info.buildingInfo.roofPitch < 5\n ) {\n this.isError = true;\n this.statusError = `${_info.buildingInfo.roofSheetingType.text} must be greater than or equal to 5 degrees pitch`;\n return Promise.resolve();\n }\n\n if (\n this.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF &&\n UI.span > this.maxSpan\n ) {\n this.isError = true;\n this.statusError = `Span must be less than max span!`;\n return Promise.resolve();\n }\n\n if (\n this.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF &&\n UI.structureType == CONNECTION_TYPE.EXISTING &&\n UI.height + (UI.span / 2) * this.utils.tan(UI.patiosPitch) >\n UI.existingWallHeight\n ) {\n this.isError = true;\n this.statusError = `Roof top must be lower eave height!`;\n return Promise.resolve();\n }\n\n this.jobService\n .calcBOMByPara(_info)\n .pipe(first())\n .subscribe(\n (data) => {\n const maxInfo = { ...data.data.maxInfo };\n if (data.statusCode === 200) {\n this.currentBuildingInfo.quoteInfo = { ...data.data.quoteInfo };\n this.currentBuildingInfo.BOMInfo = [...data.data.BOMInfo];\n this.currentBuildingInfo.additionalBOM = [\n ...data.data.additionalBOM,\n ];\n this.currentQuoteInfo.quoteInfo = { ...data.data.quoteInfo };\n this.isError = false;\n this.statusError = \"\";\n } else {\n if (data.data.error) {\n this.message.error(data.data.error);\n this.isError = true;\n this.statusError = data.data.error;\n // console.log('onCalcPrice :', data.data.error);\n } else {\n this.message.error(maxInfo.error);\n this.isError = true;\n this.statusError = maxInfo.error;\n // console.log('onCalcPrice :', _maxInfo.error);\n }\n }\n if (this.patiosRoofType === PATIOS_ROOF_TYPE.FLAT_ROOF) {\n let _isChanged = false;\n if (maxInfo.beamSize.value === 0) {\n this.beamSizeList = this.objects.beamSizeList.filter(\n (f) => f.id == 0 && f.beamType == this.sltBeamType.currentValue\n );\n this.sltBeamSize.setSelected(0);\n _isChanged = true;\n } else {\n this.beamSizeList = this.objects.beamSizeList.filter(\n (f) =>\n f.id >= maxInfo.minBeamSize.value &&\n f.beamType == this.sltBeamType.currentValue\n );\n if (this.sltBeamSize.currentValue < maxInfo.beamSize.value) {\n this.sltBeamSize.setSelected(maxInfo.beamSize.value);\n _isChanged = true;\n }\n }\n //House beam\n if (this.chkHasHouseBeam.currentValue) {\n if (maxInfo.houseBeamSize.value === 0) {\n this.houseBeamSizeList = this.objects.beamSizeList.filter(\n (f) =>\n f.id == 0 && f.beamType == this.sltBeamType.currentValue\n );\n this.sltBeamSize.setSelected(0);\n _isChanged = true;\n } else {\n this.houseBeamSizeList = this.objects.beamSizeList.filter(\n (f) =>\n f.id >= maxInfo.minHouseBeamSize.value &&\n f.beamType == this.sltBeamType.currentValue\n );\n if (\n this.sltHouseBeamSize.currentValue <\n maxInfo.houseBeamSize.value\n ) {\n this.sltHouseBeamSize.setSelected(\n maxInfo.houseBeamSize.value\n );\n _isChanged = true;\n }\n }\n } else {\n this.houseBeamSizeList = this.beamSizeList;\n this.sltHouseBeamSize.setSelected(this.sltBeamSize.currentValue);\n }\n\n if (_isChanged) {\n setTimeout(() => {\n this.patiosManager.load();\n }, 700);\n }\n }\n if (maxInfo.thickness.value === 0) {\n this.thicknessList = this.objects.thicknessList.filter(\n (f) => f.id == 0\n );\n this.sltRoofThickness.setSelectedAndHandleEvent(0);\n } else {\n this.thicknessList = this.objects.thicknessList.filter(\n (f) => f.id >= maxInfo.minThickness.value\n );\n if (this.sltRoofThickness.currentValue < maxInfo.thickness.value) {\n this.sltRoofThickness.setSelectedAndHandleEvent(\n maxInfo.thickness.value\n );\n }\n }\n if (this.patiosRoofType === PATIOS_ROOF_TYPE.FLAT_ROOF) {\n this.maxSpan = maxInfo.maxSpan;\n this.maxSpanText = maxInfo.maxSpanText;\n }\n // this.maxBaySizeText = maxInfo.maxBaySizeText;\n this.maxThickness = maxInfo.maxThickness;\n this.maxBeamSizeText = maxInfo.maxBeamSizeText;\n this.flyoverBracketNumber = maxInfo.flyoverBracketNumber;\n this.flyoverBracketNumberCutOut = maxInfo.flyoverBracketNumberCutOut;\n this.fasciaBracketNumber = maxInfo.fasciaBracketNumber;\n this.fasciaBracketNumberCutOut = maxInfo.fasciaBracketNumberCutOut;\n\n if ([3, 5, 6].includes(UI.structureType)) {\n if (\n HomeComponent.ins.patiosRoofType ===\n PATIOS_ROOF_TYPE.GABLE_ROOF &&\n HomeComponent.ins.isFBRoof\n ) {\n // Phan nay ve braket cua mai gable phia sau\n // this.patiosManager.loadBracket(this.fasciaBracketNumberCutOut);\n this.patiosManager.loadBracket(UI.span >= 4000 ? 3 : 2);\n\n // Phan nay ve braket cua mai cutout\n this.patiosManager.loadBracketCutout(\n this.fasciaBracketNumberCutOut\n );\n\n // Load braket mai chiu luc\n this.patiosManager.loadSideGableBracket(this.fasciaBracketNumber);\n } else {\n this.patiosManager.loadBracket(this.fasciaBracketNumber);\n this.patiosManager.loadBracketCutout(\n this.fasciaBracketNumberCutOut\n );\n }\n } else {\n if (\n HomeComponent.ins.patiosRoofType ===\n PATIOS_ROOF_TYPE.GABLE_ROOF &&\n HomeComponent.ins.isFBRoof\n ) {\n // Phan nay ve braket cua mai gable phia sau\n // this.patiosManager.loadBracket(this.flyoverBracketNumber);\n this.patiosManager.loadBracket(UI.span >= 4000 ? 3 : 2);\n\n // Phan nay ve braket cua mai cutout\n this.patiosManager.loadBracketCutout(\n this.flyoverBracketNumberCutOut\n );\n\n // Load braket mai chiu luc\n this.patiosManager.loadSideGableBracket(\n this.flyoverBracketNumber\n );\n } else {\n this.patiosManager.loadBracket(this.flyoverBracketNumber);\n this.patiosManager.loadBracketCutout(\n this.flyoverBracketNumberCutOut\n );\n }\n }\n this.isPricing = false;\n },\n (error) => {\n this.message.error(error);\n this.isError = true;\n this.statusError = error;\n this.isUploading = false;\n }\n );\n return Promise.resolve();\n }\n public onSupplyTypeChange(): Promise {\n const _info = {\n ...this.currentBuildingInfo,\n buildingInfo: this.bindBuildingInfo(),\n clientInfo: {\n ...this.currentQuoteInfo.clientInfo,\n },\n quoteInfo: this.currentQuoteInfo.quoteInfo,\n };\n if (_info.buildingInfo.listPosts.length === 0) {\n return;\n }\n this.jobService\n .calcBOMByPara(_info)\n .pipe(first())\n .subscribe(\n (data) => {\n if (data.statusCode === 200) {\n this.currentQuoteInfo.quoteInfo = data.data.quoteInfo;\n } else {\n this.message.error(data.message);\n console.log(\"onSupplyTypeChange :\", data.message);\n }\n },\n (error) => {\n this.message.error(error);\n console.log(\"onSupplyTypeChange :\", error);\n this.isUploading = false;\n }\n );\n return Promise.resolve();\n }\n onNewConnectionType(type: number): void {\n if (type == 4) {\n this.isFBRoof = false;\n }\n if (this.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF) {\n this.sltStructureType.setSelected(type);\n\n this.uiManager.onStructureTypeChanged(null, type);\n }\n // if (type < 5) {\n if (type == 4) {\n this.existingHouseType = 0;\n }\n this.initObject();\n if (type === 5 || type == 6) {\n this.currentBuildingInfo.buildingInfo.backFascia = type === 6;\n this.currentBuildingInfo.buildingInfo.fasciaBracketHeight =\n type === 5 || type === 6\n ? this.env.fasciaUpstandBrackets.max\n : this.env.fasciaUpstandBrackets.default;\n } else if (type === 3) {\n this.currentBuildingInfo.buildingInfo.fasciaBracketHeight = 0;\n }\n this.currentBuildingInfo.buildingInfo.structureType.value = type;\n //HACK: Existing Type: Alway minHeight > 1900mm\n if (type === CONNECTION_TYPE.EXISTING) {\n this.currentBuildingInfo.buildingInfo.eaveHeight =\n this.currentBuildingInfo.buildingInfo.buildingHeight +\n EXISTING_BUILDING_CONFIG.BUILDING_HEIGHT_OFFSET;\n }\n this.uiManager.loadFromObject(this.currentBuildingInfo.buildingInfo);\n if (this.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF) {\n this.sltRoofPitch.setSelected(10);\n\n if (this.isFBRoof && UI.structureType == CONNECTION_TYPE.EXISTING) {\n this.sldExistingWallHeight.setValue(4000);\n }\n } else {\n this.sltRoofPitch.setSelected(2);\n }\n this.isVisibleOpenModal = false;\n this.statusText = STATUS_TEXT.NEW;\n this.isSaveAs = 0;\n // }\n }\n onNewExistingHouseType(type: number, FBRoof: boolean = false): void {\n let isReload = false;\n if (\n this.isFBRoof !== FBRoof &&\n (type == this.existingHouseType || this.existingHouseType == -1)\n ) {\n isReload = true;\n }\n this.existingHouseType = type;\n this.currentStepNew = 1;\n this.isFBRoof = FBRoof;\n if (isReload) {\n this.uiManager.onStructureTypeChanged(null, type);\n }\n }\n onShowOpenModal(type: number): void {\n this.newOpenType = type === 0 ? 0 : 1;\n this.existingHouseType = -1;\n this.currentStepNew = 0;\n this.isSearching = false;\n this.isOpening = false;\n this.isVisibleOpenModal = true;\n }\n // Save\n onShowSaveModal(): void {\n this.isVisibleDiscount = false;\n this.isVisibleMoreInfo = false;\n // Validation checks\n this.currentBuildingInfo = {\n ...this.currentBuildingInfo,\n buildingInfo: { ...this.bindBuildingInfo() },\n };\n if (this.currentBuildingInfo.isOpen && this.isSaveAs === 0) {\n this.message.error(\n 'This project could not be saved because it is existed project, please \"Save As\" to edit as new project.'\n );\n }\n if (this.isError) {\n this.message.error(this.statusError);\n return;\n }\n this.panelBOM.onRefresh();\n this.isPricing = true;\n this.jobService\n .checkData(this.currentBuildingInfo)\n .pipe(first())\n .subscribe(\n (cb) => {\n if (cb.statusCode === 200) {\n if (cb.data.status) {\n this.currentQuoteInfo = {\n clientInfo: {\n ...this.currentBuildingInfo.clientInfo,\n date:\n this.isSaveAs > 0\n ? new Date()\n : this.currentBuildingInfo.clientInfo.date,\n },\n quoteInfo: { ...this.currentBuildingInfo.quoteInfo },\n };\n this.addCostInstallDes =\n this.currentQuoteInfo.quoteInfo.costList.length > 0\n ? this.currentQuoteInfo.quoteInfo.costList[0].description\n : \"\";\n this.currentStep = 0;\n this.isUploading = false;\n if (!this.currentQuoteInfo.quoteInfo.customText) {\n this.currentQuoteInfo.quoteInfo.customText = cb.data.customText;\n }\n this.currentBuildingInfo.buildingInfo.flyoverBracketNumber =\n cb.data.maxInfo.flyoverBracketNumber;\n this.currentBuildingInfo.buildingInfo.flyoverBracketNumberCutOut =\n cb.data.maxInfo.flyoverBracketNumberCutOut;\n this.currentBuildingInfo.buildingInfo.fasciaBracketNumber =\n cb.data.maxInfo.fasciaBracketNumber;\n this.currentBuildingInfo.buildingInfo.fasciaBracketNumberCutOut =\n cb.data.maxInfo.fasciaBracketNumberCutOut;\n if (\n this.currentBuildingInfo._id === null &&\n this.isSaveAs === 0\n ) {\n this.jobService\n .genJobNo({ userId: this.currentUser.user._id })\n .pipe(first())\n .subscribe(\n (cbJob) => {\n if (cbJob.statusCode === 200) {\n this.isPricing = false;\n this.currentQuoteInfo.clientInfo.jobNo = cbJob.data;\n this.isVisible = true;\n this.isError = false;\n this.statusError = \"\";\n }\n },\n (error) => {\n this.message.error(error);\n this.isError = true;\n this.statusError = error;\n }\n );\n } else {\n this.isPricing = false;\n this.isVisible = true;\n }\n } else {\n this.message.error(cb.data.error);\n this.isError = true;\n this.statusError = cb.data.error;\n // console.log('onShowSaveModal :', cb.data.error);\n }\n } else {\n this.message.error(cb.message);\n this.isError = true;\n this.statusError = cb.message;\n // console.log('onShowSaveModal :', cb.message);\n }\n },\n (error) => {\n this.message.error(error);\n this.isError = true;\n this.statusError = error;\n }\n );\n // End check\n }\n\n onNext(): void {\n if (this.currentQuoteInfo.clientInfo.jobNo === \"\") {\n this.message.warning(\"Please input your Job No.!\");\n return;\n }\n if (this.currentQuoteInfo.clientInfo.cusName === \"\") {\n this.message.warning(\"Please input your Client Name!\");\n return;\n }\n this.currentStep += 1;\n }\n onPre(): void {\n this.currentStep -= 1;\n }\n onNextNew(): void {\n this.currentStepNew = 1;\n }\n onPreNew(): void {\n this.currentStepNew = 0;\n }\n onCustomTextChange(text, type) {\n let info = null;\n if (type === 0) {\n info = { depositText: text };\n } else if (type === 1) {\n info = { stage1Text: text };\n } else {\n info = { stage2Text: text };\n }\n this.userService\n .updateCustomText(this.currentUser.user._id, info)\n .subscribe((rs) => {});\n }\n onSaveAs(type: number): void {\n if (this.currentBuildingInfo._id === null) {\n this.message.warning(\n `You can't [${\n type === 1 ? \"Copy\" : \"Revised\"\n }] because [Job No.] is empty.`\n );\n return;\n }\n this.onQuickSaveAs(type, this.currentBuildingInfo._id);\n }\n onQuickSaveAs(type: number, id: any): void {\n this.isOpening = true;\n this.jobService\n .copyOrRevisedById(id, type)\n .pipe(first())\n .subscribe(\n (data) => {\n if (data.statusCode === 200) {\n this.currentBuildingInfo = { ...data.data.list, _id: null };\n if (!this.currentBuildingInfo.quoteInfo.costList) {\n this.currentBuildingInfo.quoteInfo.costList = [];\n }\n if (!this.currentBuildingInfo.additionalBOM) {\n this.currentBuildingInfo.additionalBOM = [];\n }\n if (\n this.currentBuildingInfo.quoteInfo.costList.length === 0 &&\n this.currentBuildingInfo.quoteInfo.addCostInstall > 0\n ) {\n this.currentBuildingInfo.quoteInfo.costList.push({\n index: 1,\n description: \"\",\n value: this.currentBuildingInfo.quoteInfo.addCostInstall,\n });\n }\n this.currentQuoteInfo = {\n clientInfo: { ...data.data.list.clientInfo },\n quoteInfo: { ...data.data.list.quoteInfo },\n };\n this.currentQuoteInfo.quoteInfo.costList = [\n ...this.currentBuildingInfo.quoteInfo.costList,\n ];\n const _structureType =\n data.data.list.buildingInfo.structureType.value;\n\n this.uiManager\n .loadFromObject(data.data.list.buildingInfo)\n .then(() => {\n const _maxInfo = { ...data.data.maxInfo };\n if (this.patiosRoofType === PATIOS_ROOF_TYPE.FLAT_ROOF) {\n if (_maxInfo.beamSize.value === 0) {\n this.beamSizeList = this.objects.beamSizeList.filter(\n (f) =>\n f.id == 0 && f.beamType == this.sltBeamType.currentValue\n );\n this.sltBeamSize.setSelected(0);\n } else {\n this.beamSizeList = this.objects.beamSizeList.filter(\n (f) =>\n f.id >= _maxInfo.minBeamSize.value &&\n f.beamType == this.sltBeamType.currentValue\n );\n if (\n this.sltBeamSize.currentValue < _maxInfo.beamSize.value\n ) {\n this.sltBeamSize.setSelected(_maxInfo.beamSize.value);\n }\n }\n //House beam\n if (this.chkHasHouseBeam.currentValue) {\n if (_maxInfo.houseBeamSize.value === 0) {\n this.houseBeamSizeList = this.objects.beamSizeList.filter(\n (f) =>\n f.id == 0 &&\n f.beamType == this.sltBeamType.currentValue\n );\n this.sltHouseBeamSize.setSelected(0);\n } else {\n this.houseBeamSizeList = this.objects.beamSizeList.filter(\n (f) =>\n f.id >= _maxInfo.minHouseBeamSize.value &&\n f.beamType == this.sltBeamType.currentValue\n );\n if (\n this.sltHouseBeamSize.currentValue <\n _maxInfo.houseBeamSize.value\n ) {\n this.sltHouseBeamSize.setSelected(\n _maxInfo.houseBeamSize.value\n );\n }\n }\n } else {\n this.houseBeamSizeList = this.beamSizeList;\n this.sltHouseBeamSize.setSelected(\n this.sltBeamSize.currentValue\n );\n }\n }\n\n if (_maxInfo.thickness.value === 0) {\n this.thicknessList = this.objects.thicknessList.filter(\n (f) => f.id == 0\n );\n this.sltRoofThickness.setSelectedAndHandleEvent(0);\n } else {\n this.thicknessList = this.objects.thicknessList.filter(\n (f) => f.id >= _maxInfo.minThickness.value\n );\n if (\n this.sltRoofThickness.currentValue <\n _maxInfo.thickness.value\n ) {\n this.sltRoofThickness.setSelectedAndHandleEvent(\n _maxInfo.thickness.value\n );\n }\n }\n if (this.patiosRoofType === PATIOS_ROOF_TYPE.FLAT_ROOF) {\n this.maxSpan = _maxInfo.maxSpan;\n this.maxSpanText = _maxInfo.maxSpanText;\n }\n // this.maxBaySizeText = _maxInfo.maxBaySizeText;\n this.maxThickness = _maxInfo.maxThickness;\n this.maxBeamSizeText = _maxInfo.maxBeamSizeText;\n this.flyoverBracketNumber = _maxInfo.flyoverBracketNumber;\n this.flyoverBracketNumberCutOut =\n _maxInfo.flyoverBracketNumberCutOut;\n this.currentBuildingInfo.buildingInfo.flyoverBracketNumber =\n this.flyoverBracketNumber;\n this.currentBuildingInfo.buildingInfo.flyoverBracketNumberCutOut =\n this.flyoverBracketNumberCutOut;\n this.fasciaBracketNumber = _maxInfo.fasciaBracketNumber;\n this.fasciaBracketNumberCutOut =\n _maxInfo.fasciaBracketNumberCutOut;\n this.currentBuildingInfo.buildingInfo.fasciaBracketNumber =\n this.fasciaBracketNumber;\n this.currentBuildingInfo.buildingInfo.fasciaBracketNumberCutOut =\n this.fasciaBracketNumberCutOut;\n if (_structureType == 3) {\n if (\n HomeComponent.ins.patiosRoofType ===\n PATIOS_ROOF_TYPE.GABLE_ROOF &&\n HomeComponent.ins.isFBRoof\n ) {\n // Phan nay ve braket cua mai gable phia sau\n // this.patiosManager.loadBracket(this.fasciaBracketNumberCutOut);\n this.patiosManager.loadBracket(UI.span >= 4000 ? 3 : 2);\n\n // Phan nay ve braket cua mai cutout\n this.patiosManager.loadBracketCutout(\n this.fasciaBracketNumber\n );\n\n // Load braket mai chiu luc\n this.patiosManager.loadSideGableBracket(\n this.fasciaBracketNumber\n );\n } else {\n //Fascia\n this.patiosManager.loadBracket(this.fasciaBracketNumber);\n this.patiosManager.loadBracketCutout(\n this.fasciaBracketNumberCutOut\n );\n }\n }\n if (_structureType == 1 || _structureType == 2) {\n if (\n HomeComponent.ins.patiosRoofType ===\n PATIOS_ROOF_TYPE.GABLE_ROOF &&\n HomeComponent.ins.isFBRoof\n ) {\n // Phan nay ve braket cua mai gable phia sau\n // this.patiosManager.loadBracket(this.flyoverBracketNumberCutOut);\n this.patiosManager.loadBracket(UI.span >= 4000 ? 3 : 2);\n\n // Phan nay ve braket cua mai cutout\n this.patiosManager.loadBracketCutout(\n this.flyoverBracketNumber\n );\n\n // Load braket mai chiu luc\n this.patiosManager.loadSideGableBracket(\n this.flyoverBracketNumber\n );\n } else {\n this.patiosManager.loadBracket(this.flyoverBracketNumber);\n this.patiosManager.loadBracketCutout(\n this.flyoverBracketNumberCutOut\n );\n }\n }\n\n this.isVisibleOpenModal = false;\n this.isSaveAs = type;\n this.statusText =\n type === 1 ? STATUS_TEXT.COPY : STATUS_TEXT.REVISE;\n this.message.info(\"Operation completed successfully!\");\n // set oldValue\n this.oldBuildingInfo = _.clone(\n this.currentBuildingInfo.buildingInfo\n );\n //\n });\n } else {\n this.message.error(data.data.error);\n }\n this.isOpening = false;\n },\n (error) => {\n this.isOpening = false;\n console.log(\"error :\", error);\n }\n );\n }\n onOpenFiles(type: number): void {\n const _diff = this.compareObject();\n if (_.isEmpty(_diff) || this.currentBuildingInfo.isOpen) {\n if (!this.currentBuildingInfo.files) {\n this.message.warning(\"File does not exist.\");\n return;\n }\n let _url = \"\";\n if (type === 1) {\n _url = `${environment.uploadUrl}/${this.currentBuildingInfo.files.engineeringFile}`;\n } else {\n _url = `${environment.uploadUrl}/${this.currentBuildingInfo.files.quotationFile}`;\n }\n const _link = document.createElement(\"a\");\n _link.href = _url;\n _link.target = \"_blank\";\n\n document.body.appendChild(_link);\n _link.click();\n _link.remove();\n } else {\n this.message.warning(\"You have to save before to print\");\n }\n }\n onUpdateJobFiles(info): void {\n this.jobService\n .updateJobFiles(info.id, info)\n .pipe(first())\n .subscribe(\n (data) => {\n if (data.statusCode === 200) {\n this.currentBuildingInfo = {\n ...this.currentBuildingInfo,\n files: info.files,\n };\n this.currentStep = 3;\n this.isVisible = false;\n this.isUploading = false;\n this.message.success(data.message);\n } else {\n this.message.error(data.message);\n }\n },\n (error) => {\n this.message.error(error);\n this.isUploading = false;\n }\n );\n }\n onUpload(): void {\n const _depositPer = this.currentQuoteInfo.quoteInfo.depositPer || 0;\n const _stage1Per = this.currentQuoteInfo.quoteInfo.stage1Per || 0;\n const _stage2Per = this.currentQuoteInfo.quoteInfo.stage2Per || 0;\n if (_depositPer + _stage1Per + _stage2Per > 100) {\n this.message.error(\"% Deposit + % Stage 1 + % Stage 2 > 100%\");\n return;\n }\n this.isUploading = true;\n this.currentQuoteInfo.clientInfo.jobNo =\n this.currentQuoteInfo.clientInfo.jobNo.toUpperCase();\n const info = {\n ...this.currentBuildingInfo,\n isSaveAs: this.isSaveAs,\n clientInfo: {\n ...this.currentQuoteInfo.clientInfo,\n },\n quoteInfo: {\n ...this.currentQuoteInfo.quoteInfo,\n },\n };\n this.currentStep = 3;\n if (this.isSaveAs > 0) {\n this.currentBuildingInfo._id = null;\n }\n if (this.currentBuildingInfo._id === null) {\n // New\n this.jobService\n .createJob(info)\n .pipe(first())\n .subscribe(\n (data) => {\n if (data.statusCode === 200) {\n this.currentBuildingInfo = { ...data.data.item };\n this.currentQuoteInfo = {\n quoteInfo: { ...this.currentBuildingInfo.quoteInfo },\n clientInfo: { ...this.currentBuildingInfo.clientInfo },\n };\n let _maxSpan = _.toNumber(\n this.maxThickness.replace(\"max (capacity)\", \"\")\n );\n if (this.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF) {\n _maxSpan = this.maxSpan;\n }\n const _info = {\n ...data.data.jobInfo,\n maxSpan: _maxSpan,\n listBay: data.data.item.buildingInfo.listBay,\n };\n const _jobInfo = {\n ..._info,\n uploadFolder: environment.uploadFolder,\n pathLogo: `${environment.mediaFolder}/${data.data.jobInfo.pathLogo}`,\n pathPDF:\n data.data.jobInfo.pathPDF !== \"\"\n ? `${environment.mediaFolder}/${data.data.jobInfo.pathPDF}`\n : \"\",\n };\n this.statusText = STATUS_TEXT.SAVE;\n this.isSaveAs = 0;\n //set oldValue\n this.oldBuildingInfo = _.clone(\n this.currentBuildingInfo.buildingInfo\n );\n //\n if (this.sltPanelDirectionShow.currentValue) {\n this.sltPanelDirectionShow.setValue(false);\n setTimeout(() => {\n this.printingManager.print(_jobInfo);\n }, 1000);\n } else {\n this.printingManager.print(_jobInfo);\n }\n } else {\n this.message.error(data.message);\n }\n },\n (error) => {\n this.message.error(error);\n this.isUploading = false;\n }\n );\n } else {\n // Edit\n this.jobService\n .UpdateJob(this.currentBuildingInfo._id, info)\n .pipe(first())\n .subscribe(\n (data) => {\n if (data.statusCode === 200) {\n this.currentBuildingInfo = { ...data.data.item };\n this.currentQuoteInfo = {\n quoteInfo: { ...this.currentBuildingInfo.quoteInfo },\n clientInfo: { ...this.currentBuildingInfo.clientInfo },\n };\n const _maxSpan = _.toNumber(\n this.maxThickness.replace(\"max (capacity)\", \"\")\n );\n const _info = {\n ...data.data.jobInfo,\n maxSpan: _maxSpan,\n listBay: data.data.item.buildingInfo.listBay,\n };\n const _jobInfo = {\n ..._info,\n uploadFolder: environment.uploadFolder,\n pathLogo: `${environment.mediaFolder}/${data.data.jobInfo.pathLogo}`,\n pathPDF:\n data.data.jobInfo.pathPDF !== \"\"\n ? `${environment.mediaFolder}/${data.data.jobInfo.pathPDF}`\n : \"\",\n };\n this.isSaveAs = 0;\n //set oldValue\n this.oldBuildingInfo = _.clone(\n this.currentBuildingInfo.buildingInfo\n );\n //\n if (this.sltPanelDirectionShow.currentValue) {\n this.sltPanelDirectionShow.setValue(false);\n setTimeout(() => {\n this.printingManager.print(_jobInfo);\n }, 1000);\n } else {\n this.printingManager.print(_jobInfo);\n }\n } else {\n this.message.error(data.message);\n }\n },\n (error) => {\n this.message.error(error);\n this.isUploading = false;\n }\n );\n }\n }\n print2D() {\n // this.sldBuildingHeight.setMax(4000);\n this.printingManager.printTest();\n\n // this.sltColumnType.setSelected(\"2\");\n\n //this.sldNoOfBay.setValue(2);\n //console.log(this.dialogEditBay.totalBaySize, this.sldExistingLength.currentValue + this.sldExistingLength2.currentValue *2 + this.existingWallManager.geo_existingWallW1.width*2 + 200);\n }\n getPosts(_groups: any) {\n let _posts = [];\n _posts = _groups.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.SUPERIOR_POST\n );\n const _patios = _groups.filter(\n (x) => x.userData.category === GEOMETRY_CATEGORY.PATIOS\n );\n _patios.map((value) => {\n _posts.push(\n ...value.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.SUPERIOR_POST\n )\n );\n return value;\n });\n const listPosts = [];\n _posts.reduce(function (res, value) {\n if (!res[value.scale.y]) {\n res[value.scale.y] = {\n length: value.scale.y,\n qty: 0,\n };\n listPosts.push(res[value.scale.y]);\n }\n res[value.scale.y].qty += 1;\n return res;\n }, {});\n return listPosts;\n }\n\n public bindBuildingInfo(): any {\n const groups = this.scene.children.filter(\n (x) =>\n (x.userData.category === GEOMETRY_CATEGORY.PATIOS &&\n x.children.length > 0) ||\n x.userData.type === GEOMETRY_TYPE.SUPERIOR_POST ||\n x.userData.type === GEOMETRY_TYPE.FLY_OVER_BRACKET ||\n x.userData.type === GEOMETRY_TYPE.RECEIVER_CHANEL ||\n x.userData.type === GEOMETRY_TYPE.ROOF_PANEL ||\n x.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET ||\n x.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET_EXT ||\n x.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET_CUTOUT ||\n x.userData.type === GEOMETRY_TYPE.RIDGE_CAPPING ||\n x.userData.type === GEOMETRY_TYPE.SUPERIOR_CENTER_POST\n );\n const listPosts = this.getPosts(groups);\n let cutoutCondition =\n this.sltCutOut.currentValue == CUTOUT_ENABLE.YES &&\n this.sltExistingType.currentValue != BUILDING_SIDE.NONE &&\n this.sldExistingLength2.currentValue > 0;\n let rakeCutCondition =\n this.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE ||\n this.sltRightCutType.currentValue != RAKECUT_TYPE.NONE;\n let elementArray = {\n extFlyoverBrackets: [],\n flyoverBrackets: [],\n flyoverBracketCutOuts: [],\n fasciaBrackets: [],\n fasciaBracketCutouts: [],\n };\n if (this.patiosRoofType === PATIOS_ROOF_TYPE.FLAT_ROOF) {\n elementArray = this.utils.getInfoFromGeometry(\n this,\n groups,\n this.geometryManager,\n cutoutCondition,\n rakeCutCondition\n );\n } else {\n elementArray = this.utils.getInfoFromGeometryGableRoof(\n this,\n groups,\n this.geometryManager,\n cutoutCondition,\n rakeCutCondition\n );\n }\n\n const _bottomColourValue = this.sltColourRoof.items.find(\n (f) => f.id == this.sltColourRoof.currentValue\n )?.bottomValue;\n\n //Bottom Colour\n\n const _structureType = _.toNumber(this.sltStructureType.currentValue);\n const _existingType = _.toNumber(this.sltExistingType.currentValue);\n\n const _buildingInfo = {\n patiosRoofType: this.patiosRoofType,\n isFBRoof: this.isFBRoof,\n listPosts,\n existingType: {\n value: _existingType,\n text: this.sltExistingType.currentText,\n },\n existingLength: this.sldExistingLength.currentValue,\n existingLength2: this.sldExistingLength2.currentValue,\n existingWidth1: this.sldExistingWidth1.currentValue,\n existingWidth2: this.sldExistingWidth2.currentValue,\n existingRoofPitch: _.toNumber(this.sltExistingRoofPitch.currentValue),\n fasciaDepth: this.sldFasciaDepth.currentValue,\n eaveHeight: this.sldExistingWallHeight.currentValue,\n eaveWidth: this.sldEaveWidth.currentValue,\n wallType: {\n value: _.toNumber(this.sltWallType.currentValue),\n text: this.sltWallType.currentText,\n },\n existingRoofType: {\n value: _.toNumber(this.sltExistingRoofType.currentValue),\n text: this.sltExistingRoofType.currentText,\n },\n flyoverBracketHeight: this.sldFlyOverBracketHeight.currentValue,\n extFlyoverBracketNumber: elementArray.extFlyoverBrackets, // _extFlyoverBrackets,\n flyoverBracketNumber: elementArray.flyoverBrackets, // _flyoverBrackets,\n flyoverBracketNumberCutOut: elementArray.flyoverBracketCutOuts, // _flyoverBracketsCutOut,\n fasciaBracketHeight: _.toNumber(\n this.sltFasciaUpstandBrackets.currentValue\n ),\n fasciaBracketNumber: elementArray.fasciaBrackets,\n fasciaBracketNumberCutOut: elementArray.fasciaBracketCutouts,\n // -------------\n backFascia: this.sltUpFasciaUpstandBracket.currentValue,\n rightToLeft: this.sltPanelDirection.currentValue,\n structureType: {\n value: _structureType,\n text: this.sltStructureType.currentText,\n },\n windClass: {\n value: _.toNumber(this.sltWindClass.currentValue),\n text: this.sltWindClass.currentText,\n },\n span: this.sldSpan.currentValue,\n multiSpan: this.sldMultiSpan.currentValue,\n buildingHeight: this.sldBuildingHeight.currentValue,\n frontOverhang: this.sldFrontOverhang.currentValue,\n backOverhang: this.sldBackOverhang.currentValue,\n baySize: this.sldBaySize.currentValue,\n noOfBay: this.sldNoOfBay.currentValue,\n roofPitch: _.toNumber(this.sltRoofPitch.currentValue),\n leftOverhang: this.sldLeftOverhang.currentValue,\n rightOverhang: this.sldRightOverhang.currentValue,\n roofOverallLength: this.sldRoofOverallLength.currentValue,\n roofOverallWidth: this.sldRoofOverallWidth.currentValue,\n minHeight: this.sldMinHeight.currentValue,\n isRapidSetCement: this.chkRapidSetCement.currentValue,\n hasHouseBeam: this.chkHasHouseBeam.currentValue,\n isDripBarge: this.sltDripBarge.currentValue,\n cutOut: {\n value: _.toNumber(this.sltCutOut.currentValue),\n text: this.sltCutOut.currentText,\n },\n //--------RakeCut\n leftCutType: {\n value: _.toNumber(this.sltLeftCutType.currentValue),\n text: this.sltLeftCutType.currentText,\n },\n rightCutType: {\n value: _.toNumber(this.sltRightCutType.currentValue),\n text: this.sltRightCutType.currentText,\n },\n leftCutVertical: this.sldLeftCutVertical.currentValue,\n leftCutHorizontal: this.sldLeftCutHorizontal.currentValue,\n rightCutVertical: this.sldRightCutVertical.currentValue,\n rightCutHorizontal: this.sldRightCutHorizontal.currentValue,\n //--------\n listBay: this.dialogEditBay.listBay,\n // -----------------------------\n roofSheetingType: {\n value: _.toNumber(this.sltRoofSheetingType.currentValue),\n text: this.sltRoofSheetingType.currentText,\n },\n thickness: {\n value: _.toNumber(this.sltRoofThickness.currentValue),\n text: this.sltRoofThickness.currentText,\n },\n flatBottom: {\n value: _.toNumber(this.sltFlatBottom.currentValue),\n text: this.sltFlatBottom.currentText,\n },\n bargeType: {\n value: _.toNumber(this.sltBargeType.currentValue),\n text: this.sltBargeType.currentText,\n },\n receiverType: {\n value: _.toNumber(this.sltReceiverType.currentValue),\n text: this.sltReceiverType.currentText,\n },\n zFlashingType: {\n value: _.toNumber(this.sltZFlashingType.currentValue),\n text: this.sltZFlashingType.currentText,\n },\n downpipeType: {\n value: _.toNumber(this.sltDownpipeType.currentValue),\n text: this.sltDownpipeType.currentText,\n },\n gutterType: {\n value: _.toNumber(this.sltGutterType.currentValue),\n text: this.sltGutterType.currentText,\n },\n beamType: {\n value: _.toNumber(this.sltBeamType.currentValue),\n text: this.sltBeamType.currentText,\n },\n columnType: {\n value: _.toNumber(this.sltColumnType.currentValue),\n text: this.sltColumnType.currentText,\n },\n baseFixingType: {\n value: _.toNumber(this.sltBaseFixingType.currentValue),\n text: this.sltBaseFixingType.currentText,\n },\n beamSize: {\n value: _.toNumber(this.sltBeamSize.currentValue),\n text: this.sltBeamSize.currentText,\n },\n houseBeamSize: {\n value: _.toNumber(this.sltHouseBeamSize.currentValue),\n text: this.sltHouseBeamSize.currentText,\n },\n // ------------------------\n colourBottomRoof: {\n value: _.toNumber(this.sltColourRoof.currentValue),\n text: _bottomColourValue,\n },\n colourRoof: {\n value: _.toNumber(this.sltColourRoof.currentValue),\n text: this.sltColourRoof.currentText,\n },\n colourBarge: {\n value: _.toNumber(this.sltColourBarge.currentValue),\n text: this.sltColourBarge.currentText,\n },\n colourGutter: {\n value: _.toNumber(this.sltColourGutter.currentValue),\n text: this.sltColourGutter.currentText,\n },\n colourZFlashing: {\n value: _.toNumber(this.sltColourZFlashing.currentValue),\n text: this.sltColourZFlashing.currentText,\n },\n colourPost: {\n value: _.toNumber(this.sltColourPost.currentValue),\n text: this.sltColourPost.currentText,\n },\n colourBeam: {\n value: _.toNumber(this.sltColourBeam.currentValue),\n text: this.sltColourBeam.currentText,\n },\n colourBracket: {\n value: _.toNumber(this.sltColourBracket.currentValue),\n text: this.sltColourBracket.currentText,\n },\n colourFasciaBracket: {\n value: _.toNumber(this.sltColourFasciaBracket.currentValue),\n text: this.sltColourFasciaBracket.currentText,\n },\n colourDownpipe: {\n value: _.toNumber(this.sltColourDownpipe.currentValue),\n text: this.sltColourDownpipe.currentText,\n },\n userData: elementArray,\n roofHeight: this.roofHeight,\n panelType: this.panelType,\n };\n return _buildingInfo;\n }\n onCancel(): void {\n this.isVisible = false;\n this.isVisibleOpenModal = false;\n this.isSaveAs = 0;\n }\n\n public onShowAddCostClick(): void {\n if (!this.currentBuildingInfo.isOpen) {\n const _costList = this.currentQuoteInfo.quoteInfo.costList\n ? [...this.currentQuoteInfo.quoteInfo.costList]\n : [];\n if (_costList.length === 0) {\n _costList.push({ index: 1, description: \"\", value: 0 });\n }\n this.dialogAddCost.show(true, _costList);\n }\n }\n\n compareObject(): any {\n const _temp = this.bindBuildingInfo();\n delete _temp.userData;\n delete _temp.roofHeight;\n const _old = _.clone(this.oldBuildingInfo);\n const diff = _.omitBy(_temp, function (v, k) {\n const _value = _.get(_old, k);\n const _equal = _.isEqual(v, _value);\n return _equal;\n });\n return diff;\n }\n onViewBOM(): void {\n const _diff = this.compareObject();\n if (\n (this.currentBuildingInfo._id !== null && _.isEmpty(_diff)) ||\n this.currentBuildingInfo.isOpen\n ) {\n this.dialogBOM.show(\n true,\n this.currentBuildingInfo._id,\n this.currentBuildingInfo.clientInfo.jobNo,\n this.isAdmin,\n this.currentUser\n );\n } else {\n this.message.warning(\"You have to save before to print BOM\");\n }\n }\n\n onViewBOMTest(): void {\n this.dialogBOM.showTest(\n true,\n this.currentUser,\n this.currentBuildingInfo.BOMInfo,\n this.currentBuildingInfo.additionalBOM,\n this.currentBuildingInfo.quoteInfo\n );\n }\n\n public onAddBOM(price) {\n this.currentBuildingInfo.additionalBOM.push(price);\n this.onResetIdx();\n this.onCalcPrice();\n }\n public onDeleteBOM(data) {\n this.currentBuildingInfo.additionalBOM =\n this.currentBuildingInfo.additionalBOM.filter((f) => f.idx !== data.idx);\n this.onResetIdx();\n this.onCalcPrice();\n }\n\n onResetIdx() {\n const maxIdx = _.maxBy(this.currentBuildingInfo.BOMInfo, \"idx\");\n const _maxIdx = maxIdx.idx + 1;\n this.currentBuildingInfo.additionalBOM =\n this.currentBuildingInfo.additionalBOM.map((m, index) => {\n return { ...m, idx: _maxIdx + index };\n });\n }\n\n onSearch(): void {\n this.isSearching = true;\n const info = {\n userId: this.currentUser.user._id,\n jobNo: this.jobNoSearch.toUpperCase(),\n cusName: this.cusNameSearch,\n };\n this.jobService\n .getJobByUserId(info)\n .pipe(first())\n .subscribe(\n (data) => {\n this.dataOPEN = data.data.list;\n this.isSearching = false;\n },\n (error) => {\n console.log(\"error :\", error);\n this.isSearching = false;\n }\n );\n }\n onOpenById(id: any): void {\n this.isSearching = true;\n this.jobService\n .getById(id)\n .pipe(first())\n .subscribe(\n (data) => {\n this.currentBuildingInfo = { ...data.data.list, isOpen: true };\n if (!this.currentBuildingInfo.quoteInfo.costList) {\n this.currentBuildingInfo.quoteInfo.costList = [];\n }\n if (!this.currentBuildingInfo.additionalBOM) {\n this.currentBuildingInfo.additionalBOM = [];\n }\n if (\n this.currentBuildingInfo.quoteInfo.costList.length === 0 &&\n this.currentBuildingInfo.quoteInfo.addCostInstall > 0\n ) {\n this.currentBuildingInfo.quoteInfo.costList.push({\n index: 1,\n description: \"\",\n value: this.currentBuildingInfo.quoteInfo.addCostInstall,\n });\n }\n this.currentQuoteInfo = {\n clientInfo: { ...data.data.list.clientInfo },\n quoteInfo: { ...data.data.list.quoteInfo },\n };\n this.currentQuoteInfo.quoteInfo.costList = [\n ...this.currentBuildingInfo.quoteInfo.costList,\n ];\n const _structureType =\n data.data.list.buildingInfo.structureType.value;\n this.flyoverBracketNumber =\n data.data.list.buildingInfo.flyoverBracketNumber;\n this.flyoverBracketNumberCutOut =\n data.data.list.buildingInfo.flyoverBracketNumberCutOut;\n this.fasciaBracketNumber =\n data.data.list.buildingInfo.fasciaBracketNumber || 0;\n this.fasciaBracketNumberCutOut =\n data.data.list.buildingInfo.fasciaBracketNumberCutOut || 0;\n this.uiManager\n .loadFromObject(data.data.list.buildingInfo)\n .then(() => {\n if (_structureType === 1 || _structureType === 2) {\n if (\n HomeComponent.ins.patiosRoofType ===\n PATIOS_ROOF_TYPE.GABLE_ROOF &&\n HomeComponent.ins.isFBRoof\n ) {\n // Phan nay ve braket cua mai gable phia sau\n // this.patiosManager.loadBracket(this.flyoverBracketNumberCutOut);\n this.patiosManager.loadBracket(UI.span >= 4000 ? 3 : 2);\n\n // Phan nay ve braket cua mai cutout\n this.patiosManager.loadBracketCutout(\n this.flyoverBracketNumber\n );\n\n // Load braket mai chiu luc\n this.patiosManager.loadSideGableBracket(\n this.flyoverBracketNumber\n );\n } else {\n this.patiosManager.loadBracket(this.flyoverBracketNumber);\n this.patiosManager.loadBracketCutout(\n this.flyoverBracketNumberCutOut\n );\n }\n }\n if (_structureType == 3) {\n if (\n HomeComponent.ins.patiosRoofType ===\n PATIOS_ROOF_TYPE.GABLE_ROOF &&\n HomeComponent.ins.isFBRoof\n ) {\n // Phan nay ve braket cua mai gable phia sau\n // this.patiosManager.loadBracket(this.fasciaBracketNumberCutOut);\n this.patiosManager.loadBracket(UI.span >= 4000 ? 3 : 2);\n\n // Phan nay ve braket cua mai cutout\n this.patiosManager.loadBracketCutout(\n this.fasciaBracketNumber\n );\n\n // Load braket mai chiu luc\n this.patiosManager.loadSideGableBracket(\n this.fasciaBracketNumber\n );\n } else {\n this.patiosManager.loadBracket(this.fasciaBracketNumber);\n this.patiosManager.loadBracketCutout(\n this.fasciaBracketNumberCutOut\n );\n }\n }\n this.isVisibleOpenModal = false;\n this.statusText = STATUS_TEXT.COPY;\n this.isSearching = false;\n // set oldValue\n this.oldBuildingInfo = _.clone(\n this.currentBuildingInfo.buildingInfo\n );\n //\n });\n },\n (error) => {\n console.log(\"error :\", error);\n this.isSearching = false;\n }\n );\n }\n\n onOpenPropertyClick(): void {\n this.isVisibleProperty = !this.isVisibleProperty;\n setTimeout(() => {\n this.resizeEventHandle();\n }, 300);\n }\n onRoofSheetingTypeChanged(): void {\n this.sltBargeType.setSelected(this.sltRoofSheetingType.currentValue);\n this.sltReceiverType.setSelected(this.sltRoofSheetingType.currentValue);\n this.sltZFlashingType.setSelected(this.sltRoofSheetingType.currentValue);\n }\n\n private initObject() {\n this.isAdmin =\n this.currentUser.user.roles === this.objects.roles.admin ? true : false;\n if (this.patiosRoofType === PATIOS_ROOF_TYPE.FLAT_ROOF) {\n this.maxSpan = this.env.span.max;\n }\n this.maxBaySize = this.env.baySize.max;\n this.maxBaySizeText = `${this.env.baySize.max} max`;\n this.beamSizeList = this.objects.beamSizeList.filter(\n (f) => f.beamType == 0\n );\n this.houseBeamSizeList = this.objects.beamSizeList.filter(\n (f) => f.beamType == 0\n );\n this.thicknessList = [...this.objects.thicknessList];\n this.baseFixingTypeList = [...this.objects.baseFixingTypeList];\n const _template = TEMPLATE.find(\n (f) =>\n f.type === (this.existingHouseType === -1 ? 1 : this.existingHouseType)\n );\n // Old Job\n this.currentBuildingInfo = {\n _id: null,\n userId: this.currentUser.user._id,\n isOpen: false,\n buildingInfo: {\n ..._template,\n patiosRoofType: this.patiosRoofType,\n isFBRoof: this.isFBRoof,\n existingRoofPitch: this.env.existingRoofPitch.default,\n fasciaDepth: this.env.fasciaDepth.default,\n eaveHeight: this.env.eaveHeight.default,\n eaveWidth: this.env.eaveWidth.default,\n flyoverBracketHeight: this.env.flyOverBracketHeight.default,\n fasciaBracketHeight: this.env.fasciaUpstandBrackets.default,\n backFascia: false,\n hasHouseBeam: false,\n multiSpan: this.env.multiSpan.default,\n buildingHeight: this.env.height.default,\n frontOverhang: this.env.frontOverhang.default,\n backOverhang: this.env.backOverhang.default,\n roofOverallLength: this.env.baySize.default,\n roofPitch: 2,\n leftOverhang: this.env.leftOverhang.default,\n rightOverhang: this.env.rightOverhang.default,\n //RakeCut\n leftCutType: {\n value: 0,\n },\n rightCutType: {\n value: 0,\n },\n leftCutVertical: this.env.rakeCutVertical.default,\n leftCutHorizontal: this.env.rakeCutHorizontal.default,\n rightCutVertical: this.env.rakeCutVertical.default,\n rightCutHorizontal: this.env.rakeCutHorizontal.default,\n //\n rightToLeft: false,\n roofOverallWidth:\n this.env.span.default +\n this.env.frontOverhang.default +\n this.env.backOverhang.default,\n minHeight: 0,\n colourDownpipe: {\n value: 14214630,\n },\n colourBracket: {\n value: 15000277,\n },\n colourFasciaBracket: {\n value: 15000277,\n },\n colourBeam: {\n value: 15000277,\n },\n colourPost: {\n value: 15000277,\n },\n colourZFlashing: {\n value: 15000277,\n },\n colourGutter: {\n value: 15000277,\n },\n colourBarge: {\n value: 15000277,\n },\n colourRoof: {\n value: 15000277,\n },\n beamSize: {\n value: 1,\n },\n houseBeamSize: {\n value: 1,\n },\n baseFixingType: {\n value: 0,\n },\n columnType: {\n value: 0,\n },\n beamType: {\n value: 0,\n },\n gutterType: {\n value: 0,\n },\n downpipeType: {\n value: 0,\n },\n zFlashingType: {\n value: 0,\n },\n receiverType: {\n value: 0,\n },\n bargeType: {\n value: 0,\n },\n flatBottom: {\n value: 15000277,\n },\n thickness: {\n value: 1,\n },\n roofSheetingType: {\n value: 0,\n },\n windClass: {\n value: 0,\n },\n structureType: {\n value: 3,\n },\n wallType: {\n value: 0,\n },\n roofType: {\n value: 0,\n },\n panelType: this.panelType,\n },\n clientInfo: {\n jobNo: \"\",\n cusName: \"\",\n address: \"\",\n suburb: \"\",\n state: \"\",\n postcode: \"\",\n email: \"\",\n phone: \"\",\n supplyType: \"supply_install\",\n date: new Date(),\n },\n quoteInfo: {\n nett: 0,\n total0: 0,\n totalPrice: 0,\n discountPer: 0,\n discount: 0,\n depositPer: 0,\n stage1Per: 0,\n stage2Per: 0,\n deposit: 0,\n stage1: 0,\n stage2: 0,\n finalPayment: 0,\n addCostInstall: 0,\n userNote: \"\",\n note: \"\",\n gst: 0,\n fasciaInstall: 0,\n flyOverInstall: 0,\n installMaterial: 0,\n supplyOnlyKits: 0,\n perPostInstall: 0,\n addCost: 0,\n costList: [],\n customText: null,\n },\n additionalBOM: [],\n };\n // Current Job\n this.currentQuoteInfo = { ...this.currentBuildingInfo };\n // this.dataBOM = { quoteInfo: { ...this.currentBuildingInfo.quoteInfo } };\n }\n onApplyToAll(): void {\n this.sltColourBarge.setSelected(this.sltColourRoof.currentValue);\n this.sltColourZFlashing.setSelected(this.sltColourRoof.currentValue);\n this.sltColourGutter.setSelected(this.sltColourRoof.currentValue);\n }\n\n public setPatiosWidth(totalWidth: number) {\n let realWidth = totalWidth;\n if (\n UI.structureType == CONNECTION_TYPE.EXISTING &&\n UI.existingType == BUILDING_SIDE.BOTH &&\n this.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF &&\n this.isFBRoof\n ) {\n realWidth =\n totalWidth -\n UI.overhangLeft -\n UI.overhangRight -\n OFFSET_GUTTER_TO_WALL * 2;\n }\n if (\n UI.structureType == CONNECTION_TYPE.FASCIA_UPSTAND &&\n UI.existingType == BUILDING_SIDE.BOTH &&\n this.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF &&\n this.isFBRoof\n ) {\n realWidth = Math.ceil(totalWidth - 2 * FASCIA_BRACKET_FIT);\n }\n let baySize = realWidth;\n let noOfBay = 1;\n if (realWidth > CONFIG.baySize.max) {\n noOfBay = Math.ceil(realWidth / CONFIG.baySize.max);\n baySize = Math.ceil(realWidth / noOfBay);\n }\n if (\n this.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF &&\n this.isFBRoof &&\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n this.sldSpan.setValueAndHandleEvent(realWidth, true);\n }\n if (\n this.patiosRoofType === PATIOS_ROOF_TYPE.FLAT_ROOF ||\n (this.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF && !this.isFBRoof)\n ) {\n this.sldBaySize.setValue(baySize);\n this.sldNoOfBay.setValue(noOfBay);\n }\n }\n public onBtnRakeCutLeftClick(e) {\n HomeComponent.ins.sltLeftCutType.setSelected(0);\n }\n public onBtnRakeCutRightClick(e) {\n HomeComponent.ins.sltRightCutType.setSelected(0);\n }\n public onBtnCutoutClick(e) {\n HomeComponent.ins.sltCutOut.setSelected(0);\n }\n public onsltUpFasciaUpstandBracketChange(e) {\n if (UI.upstandBraketType == 0 && UI.isUpFasciaUpstandardBracket) {\n HomeComponent.ins.sltFasciaUpstandBrackets.setSelected(150);\n HomeComponent.ins.patiosManager.load();\n }\n }\n\n onChangeToInsulatedPanel(): void {\n this.router.navigateByUrl(\"/\");\n }\n\n onShowThumbnailClick(data): void {\n this._albums.length = 0;\n var _url = `${environment.uploadUrl}/${data.files.thumbnailFile}`;\n const album: Album = {\n src: _url,\n caption: `${data?.clientInfo?.cusName} [#${data?.clientInfo?.jobNo}]`,\n thumb: _url,\n };\n\n this._albums.push(album);\n this._lightbox.open(this._albums, 0);\n }\n}\n","\n\n\n \n \n \n New\n \n \n \n \n \n \n\n \n \n \n \n
\n \n
\n

Patios Roof Type:

\n
\n
\n \n \n \n \n \n \n \n
\n
\n
\n\n \n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n \n
\n
\n
\n \n \n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n \n
\n
\n
\n \n \n \n
\n \n
\n
\n
\n \n
\n
\n
\n \n
\n \n
\n
\n
\n \n
\n
\n
\n \n
\n \n
\n
\n
\n \n
\n
\n
\n \n \n\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n
\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n \n \n
\n \n
\n
\n
\n
\n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n \n \n \n
\n \n
\n
\n
\n
\n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n \n \n
\n \n \n
\n \n
\n
\n
\n
\n
\n

EXISTING BUILDING

\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

FLY OVER

\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n

BACK FLY OVER

\n
\n
\n
\n
\n \n \n
\n \n
\n
\n
\n
\n
\n

TO FASCIA

\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

FASCIA UPSTAND BRACKET

\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n

BACK FASCIA

\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n 0\"\n >\n \n Back\n \n \n
\n
\n \n \n Open\n \n
\n
\n

Job No.:

\n
\n
\n \n
\n
\n
\n

Client Name:

\n
\n
\n \n
\n
\n
\n \n \n Search\n \n \n
\n
\n \n \n \n \n Quote No.\n Quote Date\n Client Name\n User Name\n Prod.\n Total Price\n Action\n \n \n \n \n {{ data.clientInfo.jobNo }}\n {{ data.clientInfo.date | date : \"dd/MM/yyyy\" }}\n {{ data.clientInfo.cusName }}\n {{ data.userId.fullName }}\n \n {{\n data?.buildingInfo?.panelType\n }}\n \n \n {{\n data?.buildingInfo?.panelType\n }}\n \n \n {{ data.quoteInfo.totalPrice | currency }}\n \n \n \n
\n Switch to Insulated\n
\n \n \n
\n \n \n
\n \n \n
\n \n
\n \n \n
\n \n
\n \n \n \n \n \n
\n \n
\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n
\n
\n

Job No.

\n
\n
\n \n
\n
\n
\n

Date

\n
\n
\n \n \n
\n
\n \n
\n
\n

Client Name

\n
\n
\n \n
\n
\n
\n

Site Address

\n
\n
\n \n
\n
\n \n
\n
\n

Suburb

\n
\n
\n \n
\n
\n
\n

State

\n
\n
\n \n
\n
\n \n
\n
\n

Postcode

\n
\n
\n \n
\n
\n
\n

Email Address

\n
\n
\n \n
\n
\n \n
\n
\n

Phone

\n
\n
\n \n
\n
\n
\n

Supply Type

\n
\n
\n \n \n \n \n
\n
\n
\n \n \n \n \n \n \n
\n \n \n
\n Note\n \n
\n
\n Price\n \n \n
\n Nett\n
\n
\n {{ currentQuoteInfo.quoteInfo.nett | currency }}\n
\n
\n \n \n
\n Off Fascia Install\n
\n
\n {{\n currentQuoteInfo.quoteInfo.fasciaInstall | currency\n }}\n
\n \n \n \n
\n Fly Over Install\n
\n
\n {{\n currentQuoteInfo.quoteInfo.flyOverInstall | currency\n }}\n
\n \n \n \n
\n Install Mark up on material\n
\n
\n {{\n currentQuoteInfo.quoteInfo.installMaterial | currency\n }}\n
\n \n \n \n
\n Per post install\n
\n
\n {{\n currentQuoteInfo.quoteInfo.perPostInstall | currency\n }}\n
\n \n \n \n
\n Std Additional Costs\n
\n
\n {{ currentQuoteInfo.quoteInfo.addCost | currency }}\n
\n \n \n \n
\n Mark up on Supply Kits\n
\n
\n {{\n currentQuoteInfo.quoteInfo.supplyOnlyKits | currency\n }}\n
\n \n \n
\n
\n Additional Cost Install\n
\n
\n \n \n \n Add More\n \n \n {{ addCostInstallDes }}\n
\n
\n {{\n currentQuoteInfo.quoteInfo.addCostInstall | currency\n }}\n
\n
\n \n
\n
\n GST\n
\n
\n {{ currentQuoteInfo.quoteInfo.gst | currency }}\n
\n
\n \n
\n
\n Total Price\n
\n \n
\n {{ currentQuoteInfo.quoteInfo.totalPrice | currency }}\n
\n
\n \n
\n
\n

\n \n
\n
\n \n \n \n
\n
\n \n
\n
\n {{ currentQuoteInfo.quoteInfo.deposit | currency }}\n
\n
\n \n
\n
\n

\n \n
\n
\n \n \n \n
\n
\n \n
\n
\n {{ currentQuoteInfo.quoteInfo.stage1 | currency }}\n
\n
\n \n
\n
\n

\n \n
\n
\n \n \n \n
\n
\n \n
\n
\n {{ currentQuoteInfo.quoteInfo.stage2 | currency }}\n
\n
\n \n
\n
\n Final Payment\n
\n
\n \n
\n
\n {{\n currentQuoteInfo.quoteInfo.finalPayment | currency\n }}\n
\n
\n \n \n
\n Discount\n
\n
\n \n \n \n
\n
\n \n
\n
\n \n \n \n 0\"\n >{{ currentQuoteInfo.quoteInfo.discount | currency }}\n
\n \n \n \n\n \n \n \n
\n
\n

Uploading, Please wait...

\n
\n
\n \n
\n
\n 0 && currentStep < 3\"\n >\n \n Previous\n \n \n Next Step\n \n \n 0)\n \"\n >\n \n {{ isUploading ? \"Uploading...\" : \"Save & Upload\" }}\n \n
\n
\n 0)\n \"\n >More Information\n 0)\n \"\n nzCheckedChildren=\"Show\"\n nzUnCheckedChildren=\"Hide\"\n class=\"margin-right-5\"\n >\n
\n
\n\n\n\n
\n
\n
\n \n Existing House Detail\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 0 &&\n sldExistingLength2Visible\n ? ''\n : 'none'\n \"\n >\n \n \n \n 0 &&\n sldExistingWidth2Visible\n ? ''\n : 'none'\n \"\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Existing House
- Roof Type:\n \n
- Type:\n \n
- Length (L1):\n \n
- Width (W1):\n \n
- Length (L2):\n \n
- Width (W2):\n \n
Pitch:\n \n
Fascia depth:\n \n
Eave Height:\n \n \n
Eave Width:\n \n
Wall Type:\n \n
Cutout:\n \n
\n
\n
\n \n Patios Information\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Connection Type:\n \n
Superior Flyover Bracket:\n \n \n \n
Fascia Upstand Brackets:\n \n \n
Up Fascia Upstandard Bracket:\n \n \n \n
Wind Class:\n \n
Span (S):\n \n \n
\n {{ maxSpanText }}\n
\n
Multi Span (S2):\n \n
Patios Height (H):\n \n
Front Overhang (O):\n \n
Back Overhang (O2):\n \n
Bay Size - Nominal (B):\n \n
\n {{ maxBaySizeText }}\n
\n
No Of Bay:\n \n
Roof Pitch:\n \n
\n {{\n patiosRoofType === \"flat\"\n ? \"Beam Left Overhang:\"\n : \"Left Overhang:\"\n }}\n \n \n
\n {{\n patiosRoofType === \"flat\"\n ? \"Beam Right Overhang:\"\n : \"Right Overhang:\"\n }}\n \n \n
Roof Overall Length:\n \n \n \n \n \n
\n {{ roofPercent }}\n
\n \n
Roof Overall Width:\n \n {{\n sldRoofOverallWidth.currentValue\n }}\n
Min. Height Under Beam:\n \n {{ sldMinHeight.currentValue }}\n
Rake Cut
- Left Cut\n \n \n
+ Vertical\n \n
+ Horizontal\n \n
- Right Cut\n \n \n
+ Vertical\n \n
+ Horizontal\n \n
\n
\n
\n \n Material Detail\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Roof Sheeting Type:\n \n \n
Thickness:\n \n \n
\n {{ maxThickness }}\n
\n
Flat Bottom Colour:\n \n \n
Barge Type:\n \n \n
Drip Barge:\n \n
Receiver Type:\n \n \n
Z Flashing Type:\n \n \n
Downpipe Type:\n \n \n
Gutter Type:\n \n \n
Beam Type:\n \n \n
Beam Size:\n \n \n
\n {{ maxBeamSizeText }}\n
\n
\n House Beam Size:\n \n \n
Column Type:\n \n \n
Base Fixing Type:\n \n \n
\n Rapid Set Cement:\n (5 bags per post)\n \n \n \n
\n \n
\n \n Color Selections\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Roof:\n \n \n \n
Barge:\n \n \n
Gutter:\n \n \n
Z Flashing:\n \n \n
Post:\n \n \n
Beam:\n \n \n
Flyover Bracket:\n \n \n
Fascia Upstand Bracket:\n \n \n
Downpipe:\n \n \n
\n \n Apply To All\n \n
\n \n \n \n\n\n \n\n\n
\n
\n
\n
\n \n
Options
\n \n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
- Panel Direction
- Panel Layout\n \n
- Beam Layout\n \n
- Edit Bay\n \n
\n
\n
\n
\n
\n
\n

\n Total Price:\n {{\n currentBuildingInfo.quoteInfo.totalPrice | currency\n }}\n

\n
\n
\n \n \n \n \n \n
\n \n
\n
\n SPC Software:\n {{ version }}\n
\n
\n\n\n\n\n\n\n\n\n\n\n
\n \n
\n","export * from './home.component';","import { Injectable } from \"@angular/core\";\nimport { BUILDING_SIDE, CONNECTION_TYPE, CUTOUT_ENABLE, EXISTING_BUILDING_CONFIG, FASCIA_BRACKET_FIT, FIT_FLYOVER_BRAKET_ON_ROOF, OBJECT_TYPE } from \"src/app/app.constants\";\nimport { Vector3 } from \"three\";\nimport { BaseManager } from \"src/app-ribspan/core/base.manager\";\nimport SelectionManager from \"../selection.manager\";\nimport { UI } from \"src/app-ribspan/core/ui\";\nimport { HomeComponent } from \"src/app-ribspan/containers/home\";\nimport ArrowControl from \"src/app-ribspan/models/ArrowControl.model\";\nimport { MaterialManager } from \"../material.manager\";\nimport { UIControl } from \"src/app-ribspan/models/uicontrol.model\";\nimport { PATIOS_ROOF_TYPE } from \"src/app/app.config\";\nimport _ from \"lodash\"\nimport { Util } from \"../utils\";\nimport { GeometryManager } from \"../geometry.manager\";\n\n@Injectable({ providedIn: 'root' })\nexport class CutBeamManager extends BaseManager {\n controls = [\n UI.Controls.LENGTH1,\n UI.Controls.LENGTH2,\n UI.Controls.WIDTH1,\n UI.Controls.WIDTH2,\n UI.Controls.EXISTING_TYPE,\n UI.Controls.SPAN,\n UI.Controls.MULTI_SPAN,\n UI.Controls.OVERHANG_FRONT,\n UI.Controls.BAYS,\n UI.Controls.OVERHANG_RIGHT,\n UI.Controls.EAVE_WIDTH,\n UI.Controls.STRUCTURE_TYPE,\n UI.Controls.CUTOUT,\n UI.Controls.PATIOS_ROOF_PITCH,\n UI.Controls.FASCIA_DEPTH,\n UI.Controls.EXISTING_ROOF_PITCH,\n UI.Controls.FLYOVER_BRAKET_HEIGHT,\n UI.Controls.FASCIA_UPSTAND_BRAKET,\n UI.Controls.EXISTING_WALL_HEIGHT,\n UI.Controls.ROOF_SHEETING_TYPE,\n UI.Controls.ROOF_THICKNESS\n ]\n \n userData = undefined;\n offset = 200;\n addControlOptions = undefined;\n private utils: Util;\n\n constructor(private selMgr: SelectionManager){\n super()\n this.utils = new Util();\n }\n\n init(): Promise {\n return super.init().then(() => {\n this.userData = { type: OBJECT_TYPE.CUT_BEAM }\n this.addControlOptions = {\n container: this.container,\n userData: { type: OBJECT_TYPE.CUT_BEAM }\n }\n })\n }\n\n \n\n load(): Promise{\n return new Promise(resolve => {\n this.container.children = [];\n this.addControl();\n HomeComponent.ins.renderStatic();\n\n resolve()\n })\n }\n \n addControl(){\n this.container.children = [];\n let offsetZ = UI.span + UI.multiSpan - UI.existingWidth1 / 2;\n let offsetX = - UI.totalBayLength / 2;\n\n if (UI.patiosRoofType == PATIOS_ROOF_TYPE.GABLE_ROOF && HomeComponent.ins.isFBRoof) {\n offsetX = UI.span / 2;\n if(\n UI.structureType == CONNECTION_TYPE.FASCIA\n ) {\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n offsetX += UI.eaveWidth\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n offsetX -= UI.eaveWidth\n }\n } else if(\n UI.structureType == CONNECTION_TYPE.FASCIA_UPSTAND\n || UI.structureType == CONNECTION_TYPE.BACK_FASCIA_UPSTAND\n ) {\n if(UI.existingType == BUILDING_SIDE.LEFT) {\n offsetX += UI.eaveWidth + FASCIA_BRACKET_FIT\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n offsetX -= UI.eaveWidth + FASCIA_BRACKET_FIT\n }\n }\n let diff = UI.existingLength1 - UI.span;\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n if(UI.cutOutType == CUTOUT_ENABLE.YES) {\n offsetX -= (diff / 2 + UI.existingLength2)\n } else {\n offsetX -= (diff / 2)\n }\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n if(UI.cutOutType == CUTOUT_ENABLE.YES) {\n offsetX -= (- diff / 2 - UI.existingLength2)\n } else {\n offsetX -= (- diff / 2)\n }\n }\n\n offsetZ = - UI.existingWidth1 / 2;\n if(\n UI.structureType == CONNECTION_TYPE.FASCIA\n ) {\n offsetZ += UI.eaveWidth\n } else if(\n UI.structureType == CONNECTION_TYPE.FASCIA_UPSTAND\n || UI.structureType == CONNECTION_TYPE.BACK_FASCIA_UPSTAND\n ) {\n offsetZ += UI.eaveWidth + FASCIA_BRACKET_FIT\n } else if(\n UI.structureType == CONNECTION_TYPE.FLY_OVER\n || UI.structureType == CONNECTION_TYPE.BLACK_FLY_OVER\n ) {\n offsetZ -= 65\n }\n\n let offsetY = EXISTING_BUILDING_CONFIG.FIT_FROM_TOP_TO_CUTBEAM;\n if(UI.structureType == CONNECTION_TYPE.FLY_OVER) {\n offsetY += UI.eaveHeight + 150 + this.totalHeightFromEaveHeightToTopOfFlyoverBraket()\n } else if(UI.structureType == CONNECTION_TYPE.EXISTING) {\n offsetY += UI.height\n } else if(UI.structureType == CONNECTION_TYPE.FASCIA_UPSTAND) {\n offsetY += UI.eaveHeight + +UI.upstandBraketType + 150\n }\n\n for (let i = 0; i < UI.listBay.length; i++) {\n offsetZ += UI.listBay[i].value\n if (i == UI.listBay.length - 1) {\n return\n }\n\n if (UI.listBay[i].isCut) {\n this.addControlOptions.material = MaterialManager.Instance().UI_CONTROL_EXIT_CUTBEAM;\n } else {\n this.addControlOptions.material = MaterialManager.Instance().UI_CONTROL_CUTBEAM;\n }\n\n new UIControl(\n [0.08,0.08,0.08], \n [offsetX + this.offset, offsetY, offsetZ], \n {\n ...this.addControlOptions,\n userData: {\n type: OBJECT_TYPE.CUT_BEAM,\n bayIndex: i\n }\n }\n );\n }\n } else {\n if(\n UI.structureType == CONNECTION_TYPE.FASCIA\n ) {\n offsetZ += UI.eaveWidth\n } else if(\n UI.structureType == CONNECTION_TYPE.FASCIA_UPSTAND\n || UI.structureType == CONNECTION_TYPE.BACK_FASCIA_UPSTAND\n ) {\n offsetZ += UI.eaveWidth + FASCIA_BRACKET_FIT\n }\n\n if(\n UI.structureType == CONNECTION_TYPE.FASCIA\n ) {\n if (UI.existingType == BUILDING_SIDE.LEFT && !HomeComponent.ins.uiManager.calcShouldSnapRoofToExistingWhenCutout()) {\n offsetX += UI.eaveWidth\n } else if (UI.existingType == BUILDING_SIDE.RIGHT && !HomeComponent.ins.uiManager.calcShouldSnapRoofToExistingWhenCutout()) {\n offsetX -= UI.eaveWidth\n }\n } else if(\n UI.structureType == CONNECTION_TYPE.FASCIA_UPSTAND\n || UI.structureType == CONNECTION_TYPE.BACK_FASCIA_UPSTAND\n ) {\n if(UI.existingType == BUILDING_SIDE.LEFT) {\n offsetX += UI.eaveWidth + FASCIA_BRACKET_FIT\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n offsetX -= UI.eaveWidth + FASCIA_BRACKET_FIT\n }\n }\n let diff = UI.existingLength1 - UI.totalBayLength;\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n if(UI.cutOutType == CUTOUT_ENABLE.YES) {\n offsetX -= (diff / 2 + UI.existingLength2)\n } else {\n offsetX -= (diff / 2)\n }\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n if(UI.cutOutType == CUTOUT_ENABLE.YES) {\n offsetX -= (- diff / 2 - UI.existingLength2)\n } else {\n offsetX -= (- diff / 2)\n }\n }\n\n if(UI.structureType == CONNECTION_TYPE.FREE_STANDING && UI.patiosRoofType == PATIOS_ROOF_TYPE.GABLE_ROOF) {\n offsetZ = (UI.span + UI.multiSpan) / 2\n }\n\n let offsetY = EXISTING_BUILDING_CONFIG.FIT_FROM_TOP_TO_CUTBEAM;\n if(UI.patiosRoofType == PATIOS_ROOF_TYPE.FLAT_ROOF) {\n if(UI.structureType == CONNECTION_TYPE.EXISTING) {\n offsetY += UI.height - this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan)\n } else if(UI.structureType == CONNECTION_TYPE.FLY_OVER) {\n offsetY += UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() - this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan)\n } else if(UI.structureType == CONNECTION_TYPE.BLACK_FLY_OVER) {\n offsetY += UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan)\n } else if(UI.structureType == CONNECTION_TYPE.FASCIA) {\n offsetY += UI.eaveHeight - this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan)\n } else if(UI.structureType == CONNECTION_TYPE.FASCIA_UPSTAND) {\n offsetY += UI.eaveHeight + +UI.upstandBraketType - this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan)\n } else if(UI.structureType == CONNECTION_TYPE.BACK_FASCIA_UPSTAND) {\n offsetY += UI.eaveHeight + +UI.upstandBraketType + 100 - this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan)\n } else if(UI.structureType == CONNECTION_TYPE.FREE_STANDING) {\n offsetY += UI.height - 100 - this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan)\n }\n } else {\n if(UI.structureType == CONNECTION_TYPE.FLY_OVER) {\n offsetY += UI.eaveHeight + 150 + this.totalHeightFromEaveHeightToTopOfFlyoverBraket()\n } else if(UI.structureType == CONNECTION_TYPE.FASCIA_UPSTAND) {\n offsetY += UI.eaveHeight + +UI.upstandBraketType + 150\n } else if(UI.structureType == CONNECTION_TYPE.FREE_STANDING) {\n offsetY += UI.eaveHeight\n }\n }\n\n\n for (let i = 0; i < UI.listBay.length; i++) {\n offsetX += UI.listBay[i].value\n if (i == UI.listBay.length - 1) {\n return\n }\n \n if (UI.listBay[i].isCut) {\n this.addControlOptions.material = MaterialManager.Instance().UI_CONTROL_EXIT_CUTBEAM;\n } else {\n this.addControlOptions.material = MaterialManager.Instance().UI_CONTROL_CUTBEAM;\n }\n \n new UIControl(\n [0.08,0.08,0.08], \n [offsetX, offsetY, offsetZ + this.offset], \n {\n ...this.addControlOptions,\n userData: {\n type: OBJECT_TYPE.CUT_BEAM,\n bayIndex: i\n }\n }\n );\n }\n }\n }\n\n private totalHeightFromEaveHeightToTopOfExistingRoof() {\n const height =\n this.geometryManager.EAVE.EAVE.height +\n UI.fasciaDepth +\n UI.eaveWidth * this.utils.tan(UI.existingRoofPitch) +\n this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.height /\n this.utils.cos(UI.existingRoofPitch);\n \n return height;\n }\n private totalHeightFromEaveHeightToTopOfFlyoverBraket() {\n const height =\n this.totalHeightFromEaveHeightToTopOfExistingRoof() +\n UI.braketHeight -\n FIT_FLYOVER_BRAKET_ON_ROOF;\n \n return height;\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { OBJECT_TYPE } from \"src/app/app.constants\";\nimport { Vector3 } from \"three\";\nimport { BaseManager } from \"src/app-ribspan/core/base.manager\";\nimport SelectionManager from \"../selection.manager\";\nimport { UI } from \"src/app-ribspan/core/ui\";\nimport { HomeComponent } from \"src/app-ribspan/containers/home\";\nimport ClickControl from \"src/app-ribspan/models/ClickControl.model\";\nimport { PATIOS_ROOF_TYPE } from \"src/app/app.config\";\n\n@Injectable({ providedIn: 'root' })\nexport class CutOutManager extends BaseManager {\n controls = [\n 'sldEaveWidth',\n 'sldExistingWallHeight',\n 'sldFasciaDepth',\n 'sldBaySize',\n 'sldExistingLength',\n 'sldExistingLength2',\n 'sldExistingWidth1',\n 'sldExistingWidth2',\n 'sltExistingType',\n 'sltStructureType',\n 'sltWindClass',\n 'sltWallType',\n 'sltExistingRoofType',\n 'sldMultiSpan',\n 'sldBuildingHeight',\n 'sldFrontOverhang',\n 'sldBackOverhang',\n 'sldLeftOverhang',\n 'sldRightOverhang',\n 'sltRoofPitch',\n 'sldFlyOverBracketHeight',\n 'sldNoOfBay',\n 'dialogEditBay',\n 'sltExistingRoofPitch',\n 'sldRoofOverallLength',\n 'sldRoofOverallWidth',\n 'sldMinHeight',\n 'sltLeftCutType',\n 'sltRightCutType',\n 'sldLeftCutVertical',\n 'sldLeftCutHorizontal',\n 'sldRightCutVertical',\n 'sldRightCutHorizontal',\n 'sltFlatBottom',\n 'sltZFlashingType',\n 'sltRoofSheetingType',\n 'sltBaseFixingType',\n 'sltRoofThickness',\n 'sltBargeType',\n 'sltDownpipeType',\n 'sltGutterType',\n 'sltBeamType',\n 'sltBeamSize',\n 'sltReceiverType',\n 'sltColumnType',\n 'sltColourRoof',\n 'sltColourBarge',\n 'sltColourGutter',\n 'sltColourZFlashing',\n 'sltColourPost',\n 'sltColourBeam',\n 'sltColourBracket',\n 'sltColourFasciaBracket',\n 'sltColourDownpipe',\n 'sltFasciaUpstandBrackets',\n ]\n \n userData = undefined;\n offset = 200;\n startX = 0;\n\n constructor(private selMgr: SelectionManager){\n super()\n }\n\n init(): Promise {\n return super.init().then(() => {\n this.userData = { type: OBJECT_TYPE.CLICK_CONTROL_CUTOUT }\n })\n }\n\n \n\n load(): Promise{\n return new Promise(resolve => {\n this.addControl();\n HomeComponent.ins.renderStatic();\n\n resolve()\n })\n }\n \n addControl(){\n this.container.children = [];\n\n if(this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF){\n return\n }\n\n let cutoutCondition =\n HomeComponent.ins.sltExistingType.currentValue != 0 &&\n HomeComponent.ins.patiosManager.cutoutCondition &&\n HomeComponent.ins.sldExistingWidth1.currentValue > 0 &&\n HomeComponent.ins.sldExistingLength2.currentValue > 0;\n\n if (cutoutCondition) {\n let offsetZ = UI.span + UI.multiSpan + UI.overhangFront - UI.existingWidth1 / 2 - (UI.span + UI.multiSpan + UI.overhangFront - UI.existingWidth1) / 2 ;\n if(UI.cutOutType == 0){\n if(UI.existingType == 1 || UI.existingType == 3){\n new ClickControl(\n this.container, \n { \n pos: new Vector3(- UI.existingLength1 / 2 - this.offset, 0, offsetZ),\n userData: {...this.userData, left: true},\n rotation: new Vector3(Math.PI / 2, 0, Math.PI)\n }\n );\n }\n if(UI.existingType == 2 || UI.existingType == 3){\n new ClickControl(\n this.container, \n { \n pos: new Vector3( UI.existingLength1 / 2 + this.offset, 0, offsetZ),\n userData: {...this.userData, right: true},\n rotation: new Vector3(Math.PI / 2, 0, 0)\n }\n );\n }\n }\n }\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { OBJECT_TYPE } from \"src/app/app.constants\";\nimport { Vector3 } from \"three\";\nimport { BaseManager } from \"src/app-ribspan/core/base.manager\";\nimport SelectionManager from \"../selection.manager\";\nimport { UI } from \"src/app-ribspan/core/ui\";\nimport { HomeComponent } from \"src/app-ribspan/containers/home\";\nimport ArrowControl from \"src/app-ribspan/models/ArrowControl.model\";\n\n@Injectable({ providedIn: 'root' })\nexport class EditLength2Manager extends BaseManager {\n controls = [\n UI.Controls.LENGTH1,\n UI.Controls.LENGTH2,\n UI.Controls.WIDTH1,\n UI.Controls.WIDTH2,\n UI.Controls.EXISTING_TYPE\n ]\n \n userData = undefined;\n offset = 400;\n startX = 0;\n\n constructor(private selMgr: SelectionManager){\n super()\n }\n\n init(): Promise {\n return super.init().then(() => {\n this.userData = { type: OBJECT_TYPE.UI_CONTROL_LENGTH2 }\n this.selMgr.addEventListener( 'dragstart', ( event ) => {\n this.startX = event.object.position.x;\n });\n this.selMgr.addEventListener ( 'drag', this.onDrag.bind(this), this.container)\n })\n }\n\n \n\n load(): Promise{\n return new Promise(resolve => {\n this.addControl();\n HomeComponent.ins.renderStatic();\n\n resolve()\n })\n }\n \n addControl(){\n this.container.children = [];\n if(UI.existingLength2){\n return\n }\n if( (UI.existingType == 1 || UI.existingType == 3) && UI.existingWidth1 > 620){\n new ArrowControl(\n this.container, \n { \n pos: new Vector3(- UI.existingLength1 / 2 - this.offset, 0, UI.existingWidth1 / 2),\n userData: {...this.userData, left: true},\n rotation: new Vector3(Math.PI / 2, 0, 0)\n }\n );\n }\n if( (UI.existingType == 2 || UI.existingType == 3) && UI.existingWidth1 > 620){\n new ArrowControl(\n this.container, \n { \n pos: new Vector3( UI.existingLength1 / 2 + this.offset, 0, UI.existingWidth1 / 2),\n userData: {...this.userData, right: true},\n rotation: new Vector3(Math.PI / 2, 0, Math.PI)\n }\n );\n }\n }\n\n onDrag(event){\n if(event.object?.userData?.type === OBJECT_TYPE.UI_CONTROL_LENGTH2){\n event.object.position.y = 0;\n if(event.object?.userData?.left){\n event.object.position.z = UI.existingWidth1 / 2;\n if(event.object.position.x > - UI.existingLength1 / 2 - this.offset){\n event.object.position.x = - UI.existingLength1 / 2 - this.offset;\n return\n }\n }\n if(event.object?.userData?.right){\n event.object.position.z = UI.existingWidth1 / 2;\n if(event.object.position.x < UI.existingLength1 / 2 + this.offset){\n event.object.position.x = UI.existingLength1 / 2 + this.offset;\n return\n }\n }\n let distance = Math.floor(event.object.position.x - UI.existingLength1 / 2 - this.offset);\n if(event.object?.userData?.left){\n distance = Math.floor(- UI.existingLength1 / 2 - this.offset - event.object.position.x);\n }\n \n if (distance > HomeComponent.ins.sldExistingLength2.maxValue){\n distance = HomeComponent.ins.sldExistingLength2.maxValue\n } else if (distance < HomeComponent.ins.sldExistingLength2.minValue){\n distance = HomeComponent.ins.sldExistingLength2.minValue\n }\n HomeComponent.ins.sldExistingLength2.setValue(distance);\n }\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { OBJECT_TYPE } from \"src/app/app.constants\";\nimport { BaseManager } from \"src/app-ribspan/core/base.manager\";\nimport SelectionManager from \"../selection.manager\";\nimport { UI } from \"src/app-ribspan/core/ui\";\nimport { HomeComponent } from \"src/app-ribspan/containers/home\";\nimport { MaterialManager } from \"../material.manager\";\nimport { DeleteControl } from \"src/app-ribspan/models/DeleteControl.model\";\n@Injectable({ providedIn: 'root' })\nexport class EditWallManager extends BaseManager {\n controls = [\n UI.Controls.LENGTH1,\n UI.Controls.LENGTH2,\n UI.Controls.WIDTH1,\n UI.Controls.WIDTH2,\n UI.Controls.EXISTING_TYPE\n ]\n \n addControlOptions = undefined;\n offset = 1000;\n offsetY = 0;\n\n constructor(private selMgr: SelectionManager){\n super()\n }\n\n init(): Promise {\n return super.init().then(() => {\n this.addControlOptions = {\n container: this.container,\n userData: { type: OBJECT_TYPE.UI_CONTROL_EDIT_WALL_LENGTH1 }\n }\n })\n }\n\n \n\n load(): Promise{\n return new Promise(resolve => {\n this.addControl();\n HomeComponent.ins.renderStatic();\n\n resolve()\n })\n }\n \n addControl(){\n this.container.children = [];\n this.addControlOptions.material = MaterialManager.Instance().UI_CONTROL_DELETE;\n if(UI.existingType == 1 || UI.existingType == 3){\n if(UI.existingWidth1){\n let x = - UI.existingLength1 / 2 - this.offset - 200;\n if(UI.existingLength2){\n x = - UI.existingLength1 / 2 - UI.existingLength2 - 200;\n }\n if(UI.existingWidth2 && UI.existingWidth2 >= 600){\n x = - UI.existingLength1 / 2 - UI.existingLength2 - this.offset - 200;\n } else if(UI.existingWidth2 && UI.existingWidth2 < 600){\n x = - UI.existingLength1 / 2 - UI.existingLength2 - this.offset / 2 - 200;\n } \n let z = 0;\n new DeleteControl([0.06,0.06,0.06], [x, this.offsetY, z], {...this.addControlOptions, userData: { type: OBJECT_TYPE.UI_CONTROL_EDIT_WALL_WIDTH1, left: true }});\n }\n if(UI.existingLength2){\n let x = - UI.existingLength1 / 2 - UI.existingLength2 / 2;\n let z = - UI.existingWidth1 / 2 - this.offset;\n new DeleteControl([0.06,0.06,0.06], [ x, this.offsetY, z], {...this.addControlOptions, userData: { type: OBJECT_TYPE.UI_CONTROL_EDIT_WALL_LENGTH2, left: true }});\n }\n if(UI.existingWidth2){\n let x = - UI.existingLength1 / 2 - UI.existingLength2 - this.offset / 2 - 200;\n if(UI.existingWidth2 > 600){\n x = - UI.existingLength1 / 2 - UI.existingLength2 - this.offset - 200;\n }\n let z = UI.existingWidth1 / 2 + UI.existingWidth2 / 2;\n new DeleteControl([0.06,0.06,0.06], [x, this.offsetY, z], {...this.addControlOptions, userData: { type: OBJECT_TYPE.UI_CONTROL_EDIT_WALL_WIDTH2, left: true }});\n }\n }\n if(UI.existingType == 2 || UI.existingType == 3){\n if(UI.existingWidth1){\n let x = UI.existingLength1 / 2 + this.offset + 200;\n if(UI.existingLength2){\n x = UI.existingLength1 / 2 + UI.existingLength2 + 200;\n }\n if(UI.existingWidth2){\n x = UI.existingLength1 / 2 + UI.existingLength2 + this.offset + 200;\n }\n let z = 0;\n new DeleteControl([0.06,0.06,0.06], [x, this.offsetY, z], {...this.addControlOptions, userData: { type: OBJECT_TYPE.UI_CONTROL_EDIT_WALL_WIDTH1, right: true }});\n }\n if(UI.existingLength2){\n let x = UI.existingLength1 / 2 + UI.existingLength2 / 2;\n let z = - UI.existingWidth1 / 2 - this.offset;\n new DeleteControl([0.06,0.06,0.06], [ x, this.offsetY, z], {...this.addControlOptions, userData: { type: OBJECT_TYPE.UI_CONTROL_EDIT_WALL_LENGTH2, right: true }});\n }\n if(UI.existingWidth2){\n let x = UI.existingLength1 / 2 + UI.existingLength2 + this.offset + 200;\n let z = UI.existingWidth1 / 2 + UI.existingWidth2 / 2;\n new DeleteControl([0.06,0.06,0.06], [x, this.offsetY, z], {...this.addControlOptions, userData: { type: OBJECT_TYPE.UI_CONTROL_EDIT_WALL_WIDTH2, right: true }});\n }\n }\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { OBJECT_TYPE } from \"src/app/app.constants\";\nimport { Vector3 } from \"three\";\nimport { BaseManager } from \"src/app-ribspan/core/base.manager\";\nimport SelectionManager from \"../selection.manager\";\nimport { UI } from \"src/app-ribspan/core/ui\";\nimport { HomeComponent } from \"src/app-ribspan/containers/home\";\nimport ArrowControl from \"src/app-ribspan/models/ArrowControl.model\";\n\n@Injectable({ providedIn: 'root' })\nexport class EditWidth2Manager extends BaseManager {\n controls = [\n UI.Controls.LENGTH1,\n UI.Controls.LENGTH2,\n UI.Controls.WIDTH1,\n UI.Controls.WIDTH2,\n UI.Controls.EXISTING_TYPE\n ]\n \n userData = undefined;\n offset = 400;\n startX = 0;\n\n constructor(private selMgr: SelectionManager){\n super()\n }\n\n init(): Promise {\n return super.init().then(() => {\n this.userData = { type: OBJECT_TYPE.UI_CONTROL_WIDTH2 }\n this.selMgr.addEventListener( 'dragstart', ( event ) => {\n this.startX = event.object.position.x;\n });\n this.selMgr.addEventListener ( 'drag', this.onDrag.bind(this), this.container)\n })\n }\n\n \n\n load(): Promise{\n return new Promise(resolve => {\n this.addControl();\n HomeComponent.ins.renderStatic();\n\n resolve()\n })\n }\n \n addControl(){\n this.container.children = [];\n if(UI.existingWidth2){\n return\n }\n if( (UI.existingType == 1 || UI.existingType == 3) && UI.existingLength2 >= 1200){\n new ArrowControl(\n this.container, \n { \n pos: new Vector3(- UI.existingLength1 / 2 - UI.existingLength2, 0, UI.existingWidth1 / 2 + this.offset),\n userData: {...this.userData, left: true},\n rotation: new Vector3(Math.PI / 2, 0, - Math.PI / 2)\n }\n );\n }\n if( (UI.existingType == 2 || UI.existingType == 3) && UI.existingLength2 >= 1200){\n new ArrowControl(\n this.container, \n { \n pos: new Vector3( UI.existingLength1 / 2 + UI.existingLength2, 0, UI.existingWidth1 / 2 + this.offset),\n userData: {...this.userData, right: true},\n rotation: new Vector3(Math.PI / 2, 0, - Math.PI / 2)\n }\n );\n }\n }\n\n onDrag(event){\n if(event.object?.userData?.type === OBJECT_TYPE.UI_CONTROL_WIDTH2){\n event.object.position.y = 0;\n if(event.object?.userData?.left){\n event.object.position.x = - UI.existingLength1 / 2 - UI.existingLength2;\n if(event.object.position.z < UI.existingWidth1 / 2 + this.offset){\n event.object.position.z = UI.existingWidth1 / 2 + this.offset;\n return\n }\n }\n if(event.object?.userData?.right){\n event.object.position.x = UI.existingLength1 / 2 + UI.existingLength2;\n if(event.object.position.z < UI.existingWidth1 / 2 + this.offset){\n event.object.position.z = UI.existingWidth1 / 2 + this.offset;\n return\n }\n }\n let distance = Math.floor(event.object.position.z - UI.existingWidth1 / 2 - this.offset);\n \n if (distance > HomeComponent.ins.sldExistingWidth2.maxValue){\n distance = HomeComponent.ins.sldExistingWidth2.maxValue\n } else if (distance < HomeComponent.ins.sldExistingWidth2.minValue){\n distance = HomeComponent.ins.sldExistingWidth2.minValue\n }\n HomeComponent.ins.sldExistingWidth2.setValue(distance);\n }\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport HighLightBox from \"src/app-ribspan/models/HighlightBox\";\nimport SelectionManager from \"../selection.manager\";\nimport { UI } from \"../ui\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport default class UIRakecutManager {\n box1: HighLightBox\n updateFnc = this.update.bind(this)\n constructor(private selMgr: SelectionManager){\n\n }\n public init(){\n // HomeComponent.ins.sldBuildingHeight.addAction(this.updateFnc)\n // HomeComponent.ins.sltRoofPitch.addAction(this.updateFnc)\n \n // this.box1 = new HighLightBox(HomeComponent.ins.scene, {\n // x: -(UI.totalBayLength / 2 + UI.overhangLeft), \n // y: UI.height - UI.frontHeight, \n // z: UI.span + UI.multiSpan, \n // selectionManager: this.selMgr\n // })\n }\n\n update(){\n this.box1.position.set(-(UI.totalBayLength / 2 + UI.overhangLeft), UI.height, UI.span + UI.multiSpan)\n }\n}","// import { AppComponent } from \"src/app/app.component\";\nimport {\n BUILDING_SIDE,\n CUTOUT_ENABLE,\n EXISTING_BUILDING_CONFIG,\n FIT_FLYOVER_BRAKET_ON_ROOF,\n RAKECUT_TYPE,\n EXISTING_BUILDING_CONFIG as CONST,\n MIN_INTERNAL_BEAM_LENGTH,\n} from \"src/app/app.constants\";\nimport {\n Box3,\n BoxBufferGeometry,\n BoxHelper,\n BufferGeometry,\n Color,\n Float32BufferAttribute,\n Geometry,\n Group,\n Line3,\n LineSegments,\n Matrix4,\n Mesh,\n Plane,\n PlaneHelper,\n Vector3,\n} from \"three\";\nimport { PatiosBackFlyOverManager } from \".\";\nimport { GEOMETRY_CATEGORY, GEOMETRY_TYPE, INIT } from \"src/app/app.config\";\nimport {\n HomeComponent as AppComponent,\n HomeComponent,\n} from \"src/app-ribspan/containers/home/home.component\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport {\n GeometryInfo,\n LineType,\n Print2DView,\n Printing2DGeometry,\n Printing2DLine,\n ViewType,\n} from \"src/app/core/models\";\nimport { Util, getBeamEndCapCode } from \"../utils\";\nimport { UI } from \"../ui\";\nimport _ from \"lodash\";\n\nexport class ColumnAndPurlinManager {\n private scene: Group;\n private APP: AppComponent;\n private MANAGER: PatiosBackFlyOverManager;\n private downpipeGroup: Group;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private geo_superiorPost: GeometryInfo;\n public geo_superiorBeam: GeometryInfo;\n public geo_superiorHouseBeam: GeometryInfo;\n private geo_beamRakecutLeft: GeometryInfo;\n private geo_beamRakecutRight: GeometryInfo;\n private geo_beamStepRakecutLeft: GeometryInfo;\n private geo_beamStepRakecutRight: GeometryInfo;\n private geo_beamEndCap: GeometryInfo;\n private geo_houseBeamEndCap: GeometryInfo;\n public geo_bracket: GeometryInfo;\n private geo_groundBase: GeometryInfo;\n private geo_downPipe: GeometryInfo;\n private geo_downPipeL: GeometryInfo;\n\n private geoBeamJoint: GeometryInfo;\n private geoHouseBeamJoint: GeometryInfo;\n\n private eventHandleId: any;\n private objectSizeChangedHandle: any;\n\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n\n public extraOffsetZ: number;\n private geo_RafterBeam: GeometryInfo;\n private geo_rafterBeamEndCap: GeometryInfo;\n\n private frontPostHeight: number;\n\n private deferHandle;\n private deferTimeout = EXISTING_BUILDING_CONFIG.CUTOUT_DEFFER_TIME_OUT;\n\n public numberOfBracketBack = INIT.DEFAULT_BRACKET_NUMBER;\n public numberOfBracketCutout = INIT.DEFAULT_BRACKET_CUTOUT_NUMBER;\n\n private cutoutExistingBothLength: number;\n private beamLeftCutSizeInfo: any;\n private beamRightCutSizeInfo: any;\n\n constructor(app: AppComponent, backFlyOverManager: PatiosBackFlyOverManager) {\n this.APP = app;\n this.MANAGER = backFlyOverManager;\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n\n this.scene = backFlyOverManager.patiosGroup;\n\n this.registerEvent();\n }\n\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n let bracketHeight = this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n let bracketWidth = this.geometryManager.FLY_OVER_BRACKET.S65x3.width;\n\n this.geo_bracket = new GeometryInfo();\n this.geo_bracket.geometry =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.geometry\n .clone()\n .rotateX(Math.PI / 2)\n .translate(bracketWidth / 2, bracketHeight / 2, bracketWidth / 2);\n this.geo_bracket.width =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.width;\n this.geo_bracket.length =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.length;\n this.geo_bracket.height =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n this.geo_superiorBeam = this.geometryManager.getBeam();\n this.geo_superiorBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_superiorBeam.length / 2,\n this.geo_superiorBeam.height / 2,\n this.geo_superiorBeam.width / 2\n );\n\n this.geoBeamJoint = this.geometryManager.getBeamJoint();\n this.geoHouseBeamJoint = this.geometryManager.getHouseBeamJoint();\n\n this.geo_RafterBeam = this.geometryManager.getBeam();\n this.geo_RafterBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_RafterBeam.length / 2,\n this.geo_RafterBeam.height / 2,\n this.geo_RafterBeam.width / 2\n );\n\n this.geo_rafterBeamEndCap = this.geometryManager.getBeamEndCap();\n this.geo_rafterBeamEndCap.geometry.translate(\n 0,\n this.geo_rafterBeamEndCap.height / 2,\n this.geo_rafterBeamEndCap.length / 2\n );\n\n this.geo_superiorHouseBeam = this.geometryManager.getHouseBeam();\n this.geo_superiorHouseBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_superiorHouseBeam.length / 2,\n this.geo_superiorHouseBeam.height / 2,\n this.geo_superiorHouseBeam.width / 2\n );\n\n this.geo_beamRakecutLeft = this.geometryManager.getBeam();\n this.geo_beamRakecutLeft.geometry.translate(\n this.geo_beamRakecutLeft.width / 2,\n this.geo_beamRakecutLeft.height / 2,\n -this.geo_beamRakecutLeft.length / 2\n );\n\n this.geo_beamRakecutRight = this.geometryManager.getBeam();\n this.geo_beamRakecutRight.geometry.translate(\n -this.geo_beamRakecutRight.width / 2,\n this.geo_beamRakecutRight.height / 2,\n -this.geo_beamRakecutRight.length / 2\n );\n\n this.geo_beamStepRakecutLeft = this.geometryManager.getBeam();\n this.geo_beamStepRakecutLeft.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_beamStepRakecutLeft.length / 2,\n this.geo_beamStepRakecutLeft.height / 2,\n -this.geo_beamStepRakecutLeft.width / 2\n );\n\n this.geo_beamStepRakecutRight = this.geometryManager.getBeam();\n this.geo_beamStepRakecutRight.geometry\n .rotateY(Math.PI / 2)\n .translate(\n -this.geo_beamStepRakecutRight.length / 2,\n this.geo_beamStepRakecutRight.height / 2,\n -this.geo_beamStepRakecutRight.width / 2\n );\n\n this.geo_beamEndCap = this.geometryManager.getBeamEndCap();\n this.geo_beamEndCap.geometry.translate(\n 0,\n this.geo_beamEndCap.height / 2,\n 0\n );\n\n this.geo_houseBeamEndCap = this.geometryManager.getHouseBeamEndCap();\n this.geo_houseBeamEndCap.geometry.translate(\n 0,\n this.geo_houseBeamEndCap.height / 2,\n 0\n );\n\n this.geo_superiorPost = this.geometryManager.getPost();\n this.geo_superiorPost.geometry\n .rotateX(Math.PI / 2)\n .translate(\n this.geo_superiorPost.width / 2,\n this.geo_superiorPost.height / 2,\n this.geo_superiorPost.width / 2\n );\n\n this.geo_groundBase = new GeometryInfo();\n this.geo_groundBase.width = 1000;\n this.geo_groundBase.height = 1;\n this.geo_groundBase.length = 1000;\n this.geo_groundBase.geometry = new BoxBufferGeometry(\n this.geo_groundBase.width,\n this.geo_groundBase.height,\n this.geo_groundBase.length\n );\n this.geo_groundBase.geometry.translate(\n 0,\n 0,\n this.geo_groundBase.length / 2\n );\n\n this.geo_downPipe = this.geometryManager.getDownPipe();\n this.geo_downPipeL = this.geometryManager.getDownPipeL();\n\n this.scene.remove(\n ...this.scene.children.filter(\n (c) => c.userData.type == GEOMETRY_TYPE.DOWNPIPE\n )\n );\n this.downpipeGroup = new Group();\n this.downpipeGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeGroup);\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET &&\n !x.userData.position.back\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.SUPERIOR_POST &&\n !x.userData.position.back\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.GROUND_BASE\n )\n );\n\n //test\n this.APP.scene.remove(\n ...this.APP.scene.children.filter(\n (o) =>\n o.userData.type == \"OUTLINE\" || o.userData.type == \"COLUMN_OUTLINE\"\n )\n );\n\n this.beamLeftCutSizeInfo = this.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.LEFT\n );\n this.beamRightCutSizeInfo = this.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.RIGHT\n );\n\n this.downpipeGroup.children = [];\n\n this.extraOffsetZ =\n this.APP.existingWallManager.geo_existingWallL1.width +\n this.APP.eaveManager.backOverhang;\n\n this.cutoutExistingBothLength =\n (UI.totalBayLength - this.APP.sldExistingLength.currentValue) / 2;\n\n this.addSuperiorBeam({ front: true });\n this.addSuperiorBeam({ back: true });\n this.addBeamAngelRakecut();\n this.addBeamStepRakecut();\n if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.MANAGER.cutoutCondition\n ) {\n this.addSuperiorBeam({ cutout: true });\n }\n if (UI.multiSpan > 0) {\n this.addSuperiorBeam({ multiSpan: true });\n }\n this.addGround();\n const fitX = this.getContainerOffsetXToFitBraketToExistingWall();\n let offsetX = -UI.totalBayLength / 2;\n let first = true;\n let last = false;\n for (let i = 0; i <= this.APP.dialogEditBay.listBay.length; i++) {\n if (i == this.APP.dialogEditBay.listBay.length) {\n last = true;\n }\n //this.addPostOrBracket(offsetX, { back: true, first, last});\n this.addPostOrBracket(offsetX, {\n front: true,\n first,\n last,\n left: first,\n right: last,\n });\n\n if (UI.multiSpan > 0) {\n this.addPostOrBracket(offsetX, {\n multiSpan: true,\n first,\n last,\n left: first,\n right: last,\n });\n }\n if (i < this.APP.dialogEditBay.listBay.length) {\n let b = this.APP.dialogEditBay.listBay[i];\n offsetX += b.value;\n }\n first = false;\n }\n offsetX = -UI.totalBayLength / 2;\n first = true;\n last = false;\n for (let i = 0; i <= this.APP.dialogEditBay.listBay.length; i++) {\n if (i == this.APP.dialogEditBay.listBay.length) {\n last = true;\n }\n this.addPostAngleRakecut(offsetX + fitX, {\n first,\n last,\n left: first,\n right: last,\n });\n\n if (i < this.APP.dialogEditBay.listBay.length) {\n let b = this.APP.dialogEditBay.listBay[i];\n offsetX += b.value;\n }\n first = false;\n }\n\n this.addPostOrBracketBack();\n this.addPostOrBracketBackCutout();\n this.addPostStepRakecut();\n this.showBeamOutline();\n this.updateUI();\n resolve();\n });\n }\n public showBeamOutline() {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.BEAM_OUTLINE\n )\n );\n\n if (!UI.beamLayoutShow) return;\n\n const objs = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n const meshes = [];\n objs.forEach((el) => {\n if (el.type == \"Group\") {\n meshes.push(\n ...el.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n }\n });\n\n for (let o of meshes) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n o as Mesh,\n 10\n );\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n\n var line = new LineSegments(\n outlineGeo,\n MaterialManager.Instance().BEAM_OUTLINE\n );\n line.userData = { type: GEOMETRY_TYPE.BEAM_OUTLINE };\n this.APP.scene.add(line);\n }\n }\n public getCutoutRoofLengthToGenerateCutoutRafterBeam() {\n let extraWallWidth =\n this.APP.existingWallManager.geo_existingWallW1.width +\n CONST.EAVE_OFFSET_BACK;\n let beamLength =\n UI.existingLength2 -\n this.APP.existingWallManager.geo_existingWallW1.width;\n\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n if (UI.existingWidth2 > 0) {\n } else {\n beamLength -= extraWallWidth;\n }\n\n beamLength += this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width;\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n if (UI.existingWidth2 > 0) {\n } else {\n beamLength -= extraWallWidth;\n }\n\n beamLength += this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width;\n } else if (UI.existingType == BUILDING_SIDE.BOTH) {\n beamLength = UI.existingLength2 - extraWallWidth;\n\n if (UI.existingWidth2 > 0) {\n beamLength = UI.existingLength2;\n }\n }\n\n return beamLength;\n }\n private getContainerOffsetXToFitBraketToExistingWall() {\n let fitX = 0;\n if (UI.existingType == BUILDING_SIDE.RIGHT) {\n fitX = -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n this.geo_bracket.width\n );\n }\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n fitX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n this.geo_bracket.width;\n }\n\n return fitX;\n }\n public addEndRafterBeam(info: any) {\n const { numOfInternalRafter, numOfSpanBeam, numOfMultiSpanBeam } = info;\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM ||\n x.userData.type == GEOMETRY_TYPE.SUPERIOR_INTERNAL_BEAM\n )\n );\n const fitX = this.getContainerOffsetXToFitBraketToExistingWall();\n\n const fitIfNotWidth2 =\n this.APP.existingWallManager.geo_existingWallW1.width +\n CONST.EAVE_OFFSET_BACK;\n\n let endMainLeftX = -UI.totalBayLength / 2 + fitX;\n let endMainRightX = UI.totalBayLength / 2 + fitX;\n if (UI.cutOutType == CUTOUT_ENABLE.YES && this.MANAGER.cutoutCondition) {\n // Enable cut out\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n endMainLeftX =\n -UI.totalBayLength / 2 +\n fitX +\n UI.existingLength2 -\n (UI.existingWidth2 > 0 ? 0 : fitIfNotWidth2);\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n endMainRightX =\n UI.totalBayLength / 2 +\n fitX -\n UI.existingLength2 +\n (UI.existingWidth2 > 0 ? 0 : fitIfNotWidth2);\n } else if (UI.existingType == BUILDING_SIDE.BOTH) {\n endMainLeftX =\n -UI.totalBayLength / 2 +\n fitX +\n UI.existingLength2 -\n (UI.existingWidth2 > 0 ? 0 : fitIfNotWidth2);\n endMainRightX =\n UI.totalBayLength / 2 +\n fitX -\n UI.existingLength2 +\n (UI.existingWidth2 > 0 ? 0 : fitIfNotWidth2);\n }\n }\n\n // Add end rafter for two end side\n // Left side\n this.addRafterSuperiorBeam(endMainLeftX, {\n span: true,\n first: true,\n last: false,\n });\n if (UI.multiSpan) {\n this.addRafterSuperiorBeam(endMainLeftX, {\n multiSpan: true,\n first: true,\n last: false,\n });\n }\n\n // Right side\n this.addRafterSuperiorBeam(endMainRightX, {\n span: true,\n first: false,\n last: true,\n });\n if (UI.multiSpan) {\n this.addRafterSuperiorBeam(endMainRightX, {\n multiSpan: true,\n first: false,\n last: true,\n });\n }\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n this.addRafterSuperiorBeam(\n -UI.totalBayLength / 2 + fitX + UI.rakeCutLeftHor,\n { rakeCutLeft: true, first: true, last: false }\n );\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n this.addRafterSuperiorBeam(\n UI.totalBayLength / 2 + fitX - UI.rakeCutRightHor,\n { rakeCutRight: true, first: false, last: true }\n );\n }\n\n this.addInternalRafterBeam(\n numOfInternalRafter,\n numOfSpanBeam,\n numOfMultiSpanBeam\n );\n\n if (UI.cutOutType == CUTOUT_ENABLE.YES && this.MANAGER.cutoutCondition) {\n // Add rafter beam for cut out\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n endMainLeftX = -UI.totalBayLength / 2 + fitX;\n this.addRafterSuperiorBeam(endMainLeftX, {\n cutOutForSpan: true,\n first: true,\n last: false,\n });\n if (UI.multiSpan) {\n this.addRafterSuperiorBeam(endMainLeftX, {\n cutOutForMultiSpan: true,\n first: true,\n last: false,\n });\n }\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n endMainRightX = UI.totalBayLength / 2 + fitX;\n this.addRafterSuperiorBeam(endMainRightX, {\n cutOutForSpan: true,\n first: false,\n last: true,\n });\n if (UI.multiSpan) {\n this.addRafterSuperiorBeam(endMainRightX, {\n cutOutForMultiSpan: true,\n first: false,\n last: true,\n });\n }\n } else if (UI.existingType == BUILDING_SIDE.BOTH) {\n endMainLeftX = -UI.totalBayLength / 2 + fitX;\n this.addRafterSuperiorBeam(endMainLeftX, {\n cutOutForSpan: true,\n first: true,\n last: false,\n });\n if (UI.multiSpan) {\n this.addRafterSuperiorBeam(endMainLeftX, {\n cutOutForMultiSpan: true,\n first: true,\n last: false,\n });\n }\n\n endMainRightX = UI.totalBayLength / 2 + fitX;\n this.addRafterSuperiorBeam(endMainRightX, {\n cutOutForSpan: true,\n first: false,\n last: true,\n });\n if (UI.multiSpan) {\n this.addRafterSuperiorBeam(endMainRightX, {\n cutOutForMultiSpan: true,\n first: false,\n last: true,\n });\n }\n }\n }\n\n // Add rafter beam for rake cut step\n }\n private addInternalRafterBeam(\n numOfRafter: number,\n numOfSpanBeam: number,\n numOfMultiSpanBeam: number\n ) {\n let fitX = this.getContainerOffsetXToFitBraketToExistingWall();\n\n const fitIfNotWidth2 =\n this.APP.existingWallManager.geo_existingWallW1.width +\n CONST.EAVE_OFFSET_BACK;\n let offsetX = -UI.totalBayLength / 2 + fitX;\n let mainRoofLength = UI.totalBayLength;\n let endCutoutLeft = -UI.totalBayLength / 2 + fitX;\n if (UI.cutOutType == CUTOUT_ENABLE.YES && this.MANAGER.cutoutCondition) {\n // Enable cut out\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n mainRoofLength =\n UI.totalBayLength -\n UI.existingLength2 +\n (UI.existingWidth2 > 0 ? 0 : fitIfNotWidth2);\n offsetX =\n -UI.totalBayLength / 2 +\n fitX +\n UI.existingLength2 -\n (UI.existingWidth2 > 0 ? 0 : fitIfNotWidth2);\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n mainRoofLength =\n UI.totalBayLength -\n UI.existingLength2 +\n (UI.existingWidth2 > 0 ? 0 : fitIfNotWidth2);\n } else if (UI.existingType == BUILDING_SIDE.BOTH) {\n mainRoofLength =\n UI.totalBayLength -\n 2 * UI.existingLength2 +\n (UI.existingWidth2 > 0 ? 0 : 2 * fitIfNotWidth2);\n offsetX =\n -UI.totalBayLength / 2 +\n fitX +\n UI.existingLength2 -\n (UI.existingWidth2 > 0 ? 0 : fitIfNotWidth2);\n }\n }\n\n const mainRoofLeft = offsetX;\n const mainRoofRight = offsetX + mainRoofLength;\n let listRafterPos = [];\n const rafterSpacing = UI.totalBayLength / (numOfRafter + 1);\n const maxBeamOverhang = this.utils.getMaximumBeamOverhang();\n for (let i = 0; i < numOfRafter; i++) {\n const offsetXRafter = endCutoutLeft + (i + 1) * rafterSpacing;\n if (\n UI.existingType == BUILDING_SIDE.LEFT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n if (\n offsetXRafter > mainRoofLeft - maxBeamOverhang &&\n offsetXRafter < mainRoofLeft + maxBeamOverhang\n ) {\n continue;\n }\n }\n if (\n UI.existingType == BUILDING_SIDE.RIGHT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n if (\n offsetXRafter > mainRoofRight - maxBeamOverhang &&\n offsetXRafter < mainRoofRight + maxBeamOverhang\n ) {\n continue;\n }\n }\n listRafterPos.push({\n offsetX: offsetXRafter,\n isMainRoof:\n offsetXRafter >= mainRoofLeft && offsetXRafter <= mainRoofRight,\n });\n }\n\n listRafterPos = this.utils.reSeperateRafterPosition(\n listRafterPos,\n offsetX,\n offsetX + mainRoofLength,\n endCutoutLeft,\n endCutoutLeft + UI.totalBayLength\n );\n\n listRafterPos.forEach((el) => {\n if (el.isMainRoof) {\n this.addRafterSuperiorBeam(el.offsetX, {\n span: true,\n first: false,\n last: false,\n });\n if (UI.multiSpan) {\n this.addRafterSuperiorBeam(el.offsetX, {\n multiSpan: true,\n first: false,\n last: false,\n });\n }\n } else {\n this.addRafterSuperiorBeam(el.offsetX, {\n cutOutForSpan: true,\n first: false,\n last: false,\n });\n if (UI.multiSpan) {\n this.addRafterSuperiorBeam(el.offsetX, {\n cutOutForMultiSpan: true,\n first: false,\n last: false,\n });\n }\n }\n });\n\n // Add internal beam in here\n this.addInternalBeam(listRafterPos, numOfSpanBeam, numOfMultiSpanBeam);\n }\n private addInternalBeam(\n listRafterPos,\n numOfSpanBeam: number = 0,\n numOfMultiSpanBeam: number = 0\n ) {\n const startZ = -(UI.existingWidth1 / 2 + this.extraOffsetZ);\n if (UI.span > 0) {\n const internalBeamSpacing = UI.span / (numOfSpanBeam + 1);\n for (let i = 0; i < numOfSpanBeam; i++) {\n this.addInternalSuperiorBeam(\n listRafterPos,\n startZ + internalBeamSpacing * (i + 1)\n );\n }\n }\n if (UI.multiSpan > 0) {\n const internalBeamSpacing = UI.multiSpan / (numOfMultiSpanBeam + 1);\n for (let i = 0; i < numOfMultiSpanBeam; i++) {\n this.addInternalSuperiorBeam(\n listRafterPos,\n startZ + UI.span + internalBeamSpacing * (i + 1)\n );\n }\n }\n }\n public addInternalSuperiorBeam(listRafterPos, offsetZ: number) {\n let fitX = this.getContainerOffsetXToFitBraketToExistingWall();\n const fitIfNotWidth2 =\n this.APP.existingWallManager.geo_existingWallW1.width +\n CONST.EAVE_OFFSET_BACK;\n\n let endMainLeftX = -UI.totalBayLength / 2 + fitX;\n let endMainRightX = UI.totalBayLength / 2 + fitX;\n let endCutoutLeft = -UI.totalBayLength / 2 + fitX;\n let endCutoutRight = UI.totalBayLength / 2 + fitX;\n if (UI.cutOutType == CUTOUT_ENABLE.YES && this.MANAGER.cutoutCondition) {\n // Enable cut out\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n endMainLeftX =\n -UI.totalBayLength / 2 +\n fitX +\n UI.existingLength2 -\n (UI.existingWidth2 > 0 ? 0 : fitIfNotWidth2);\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n endMainRightX =\n UI.totalBayLength / 2 +\n fitX -\n UI.existingLength2 +\n (UI.existingWidth2 > 0 ? 0 : fitIfNotWidth2);\n } else if (UI.existingType == BUILDING_SIDE.BOTH) {\n endMainLeftX =\n -UI.totalBayLength / 2 +\n fitX +\n UI.existingLength2 -\n (UI.existingWidth2 > 0 ? 0 : fitIfNotWidth2);\n endMainRightX =\n UI.totalBayLength / 2 +\n fitX -\n UI.existingLength2 +\n (UI.existingWidth2 > 0 ? 0 : fitIfNotWidth2);\n }\n }\n\n // Main roof\n const beamWidth = this.geo_superiorBeam.width;\n const mainRafter = listRafterPos.filter((el) => el.isMainRoof);\n\n for (let i = 0; i <= mainRafter.length; i++) {\n let startX = endMainLeftX;\n if (i > 0) {\n startX = mainRafter[i - 1].offsetX;\n }\n let endX = endMainRightX;\n if (i < mainRafter.length) {\n endX = mainRafter[i].offsetX;\n }\n\n if (i == 0) {\n startX += beamWidth;\n } else {\n startX += beamWidth / 2;\n }\n\n if (i == mainRafter.length) {\n endX -= beamWidth;\n } else {\n endX -= beamWidth / 2;\n }\n this.addInternalBeamFromStartToEnd(startX, endX, offsetZ);\n }\n\n if (UI.cutOutType == CUTOUT_ENABLE.YES && this.MANAGER.cutoutCondition) {\n if (\n UI.existingType == BUILDING_SIDE.LEFT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n const cutoutRoofLength =\n this.getCutoutRoofLengthToGenerateCutoutRafterBeam();\n const cutoutLeftRafter = listRafterPos.filter(\n (el) =>\n !el.isMainRoof && el.offsetX < endCutoutLeft + cutoutRoofLength\n );\n\n if (offsetZ > UI.existingWidth1 / 2 - this.extraOffsetZ) {\n for (let i = 0; i <= cutoutLeftRafter.length; i++) {\n let startX = endCutoutLeft;\n if (i > 0) {\n startX = cutoutLeftRafter[i - 1].offsetX;\n }\n let endX = endCutoutLeft + cutoutRoofLength;\n if (i < cutoutLeftRafter.length) {\n endX = cutoutLeftRafter[i].offsetX;\n }\n\n if (i == 0) {\n startX += beamWidth;\n } else {\n startX += beamWidth / 2;\n }\n\n if (i == cutoutLeftRafter.length) {\n } else {\n endX -= beamWidth / 2;\n }\n this.addInternalBeamFromStartToEnd(startX, endX, offsetZ);\n }\n }\n }\n\n if (\n UI.existingType == BUILDING_SIDE.RIGHT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n const cutoutRoofLength =\n this.getCutoutRoofLengthToGenerateCutoutRafterBeam();\n const cutoutRightRafter = listRafterPos.filter(\n (el) =>\n !el.isMainRoof && el.offsetX > endCutoutRight - cutoutRoofLength\n );\n\n if (\n offsetZ >\n UI.existingWidth1 / 2 - this.extraOffsetZ + beamWidth * 2\n ) {\n for (let i = 0; i <= cutoutRightRafter.length; i++) {\n let startX = endCutoutRight - cutoutRoofLength;\n if (i > 0) {\n startX = cutoutRightRafter[i - 1].offsetX;\n }\n let endX = endCutoutRight;\n if (i < cutoutRightRafter.length) {\n endX = cutoutRightRafter[i].offsetX;\n }\n\n if (i == 0) {\n startX += 0;\n } else {\n startX += beamWidth / 2;\n }\n\n if (i == cutoutRightRafter.length) {\n endX -= beamWidth;\n } else {\n endX -= beamWidth / 2;\n }\n this.addInternalBeamFromStartToEnd(startX, endX, offsetZ);\n }\n }\n }\n }\n }\n public addInternalBeamFromStartToEnd(startX, endX, offsetZ) {\n const { fromX, toX, visible } = this.cutInternalBeamWithRakeCut(\n startX,\n endX,\n offsetZ\n );\n\n if (!visible) {\n return;\n }\n\n // Only add internal beam when beam length is greater than 200\n if (Math.abs(toX - fromX) < MIN_INTERNAL_BEAM_LENGTH) {\n return;\n }\n\n const beamWidth = this.geo_RafterBeam.width;\n const beamHeight = this.geo_superiorBeam.height;\n let scaleX = Math.abs(toX - fromX) / this.geo_superiorBeam.length;\n\n let views: Print2DView[] = [\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n const offsetY =\n UI.eaveHeight +\n this.getBracketHeight(\n offsetZ + UI.existingWidth1 / 2 + this.extraOffsetZ - beamWidth / 2\n );\n\n let mesh = new Mesh(\n this.geo_superiorBeam.geometry,\n MaterialManager.Instance().BEAM\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_INTERNAL_BEAM,\n views: views,\n };\n mesh.position.set(fromX, 0, 0);\n mesh.scale.setX(scaleX);\n\n let capL = new Mesh(\n this.geo_beamEndCap.geometry,\n UI.beamLayoutShow\n ? MaterialManager.Instance().BRACKET_WARNING.clone()\n : MaterialManager.Instance().BEAM.clone()\n );\n capL.position.set(\n fromX + this.geo_beamEndCap.length / 2 - 2,\n -this.geo_beamEndCap.height + beamHeight,\n this.geo_beamEndCap.width / 2\n );\n capL.rotateY(Math.PI / 2);\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let capR = new Mesh(\n this.geo_beamEndCap.geometry,\n UI.beamLayoutShow\n ? MaterialManager.Instance().BRACKET_WARNING.clone()\n : MaterialManager.Instance().BEAM.clone()\n );\n capR.position.set(\n toX - this.geo_beamEndCap.length / 2 + 2,\n -this.geo_beamEndCap.height + beamHeight,\n this.geo_beamEndCap.width / 2\n );\n capR.rotateY(-Math.PI / 2);\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_INTERNAL_BEAM,\n views: views,\n };\n beamGroup.position.set(0, offsetY, offsetZ - beamWidth / 2);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n\n this.scene.add(beamGroup);\n }\n private cutInternalBeamWithRakeCut(startX, endX, offsetZ) {\n // startZ is start point of rafter beam\n // startZ > endZ\n const fromX = Math.min(startX, endX);\n const toX = Math.max(startX, endX);\n const beamWidth = this.geo_superiorBeam.width;\n const fitX = this.getContainerOffsetXToFitBraketToExistingWall();\n const offsetZFrontBeam =\n UI.span + UI.multiSpan - UI.existingWidth1 / 2 - this.extraOffsetZ;\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n const rakeCutVerLength =\n this.beamLeftCutSizeInfo.v + this.beamLeftCutSizeInfo.k_;\n const rakeCutHorLength = this.beamLeftCutSizeInfo.l;\n\n const beamLine = new Line3(\n new Vector3(toX, 0, offsetZ + beamWidth / 2),\n new Vector3(fromX, 0, offsetZ + beamWidth / 2)\n );\n const beamRakeCutLength = Math.sqrt(\n Math.pow(rakeCutHorLength, 2) + Math.pow(rakeCutVerLength, 2)\n );\n const cosAngleFrontHor = rakeCutHorLength / beamRakeCutLength;\n\n const startRakeCut = new Vector3(\n -UI.totalBayLength / 2 + fitX,\n 0,\n offsetZFrontBeam - rakeCutVerLength - beamWidth / cosAngleFrontHor\n );\n const endRakeCut = new Vector3(\n -UI.totalBayLength / 2 + fitX + rakeCutHorLength,\n 0,\n offsetZFrontBeam - beamWidth / cosAngleFrontHor\n );\n const rakeCutLine = new Line3(startRakeCut, endRakeCut);\n const intersection = this.utils.getIntersectionOnAPoint(\n beamLine,\n rakeCutLine\n );\n\n if (intersection) {\n if (\n this.utils.isPositive(beamLine.start, beamLine.end, intersection) &&\n this.utils.isPositive(\n rakeCutLine.start,\n rakeCutLine.end,\n intersection\n ) &&\n intersection.x >= fromX &&\n intersection.x <= toX\n ) {\n return {\n fromX: intersection.x,\n toX,\n visible: true,\n };\n } else {\n if (intersection.x > fromX && intersection.x > toX) {\n return {\n fromX,\n toX,\n visible: false,\n };\n }\n }\n }\n } else if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n const beamLine = new Line3(\n new Vector3(fromX, 0, offsetZ + beamWidth / 2),\n new Vector3(toX, 0, offsetZ + beamWidth / 2)\n );\n const startRakeCut = new Vector3(\n -UI.totalBayLength / 2 + fitX + UI.rakeCutLeftHor + beamWidth,\n 0,\n offsetZFrontBeam\n );\n const endRakeCut = new Vector3(\n -UI.totalBayLength / 2 + fitX + UI.rakeCutLeftHor + beamWidth,\n 0,\n offsetZFrontBeam - UI.rakeCutLeftVer - beamWidth\n );\n\n const rakeCutLine = new Line3(endRakeCut, startRakeCut);\n const intersection = this.utils.getIntersectionOnAPoint(\n beamLine,\n rakeCutLine,\n true\n );\n\n if (intersection) {\n if (\n this.utils.isPositive(beamLine.start, beamLine.end, intersection) &&\n this.utils.isPositive(\n rakeCutLine.start,\n rakeCutLine.end,\n intersection\n ) &&\n intersection.x >= fromX &&\n intersection.x <= toX\n ) {\n return {\n fromX: intersection.x,\n toX,\n visible: true,\n };\n } else {\n if (intersection.x > fromX && intersection.x > toX) {\n return {\n fromX,\n toX,\n visible: false,\n };\n }\n }\n }\n }\n\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n const rakeCutVerLength =\n this.beamRightCutSizeInfo.v + this.beamRightCutSizeInfo.k_;\n const rakeCutHorLength = this.beamRightCutSizeInfo.l;\n\n const beamLine = new Line3(\n new Vector3(fromX, 0, offsetZ + beamWidth / 2),\n new Vector3(toX, 0, offsetZ + beamWidth / 2)\n );\n const beamRakeCutLength = Math.sqrt(\n Math.pow(rakeCutHorLength, 2) + Math.pow(rakeCutVerLength, 2)\n );\n const cosAngleFrontHor = rakeCutHorLength / beamRakeCutLength;\n\n const startRakeCut = new Vector3(\n UI.totalBayLength / 2 + fitX,\n 0,\n offsetZFrontBeam - rakeCutVerLength - beamWidth / cosAngleFrontHor\n );\n const endRakeCut = new Vector3(\n UI.totalBayLength / 2 + fitX - rakeCutHorLength,\n 0,\n offsetZFrontBeam - beamWidth / cosAngleFrontHor\n );\n const rakeCutLine = new Line3(startRakeCut, endRakeCut);\n const intersection = this.utils.getIntersectionOnAPoint(\n beamLine,\n rakeCutLine\n );\n\n if (intersection) {\n if (\n this.utils.isPositive(beamLine.start, beamLine.end, intersection) &&\n this.utils.isPositive(\n rakeCutLine.start,\n rakeCutLine.end,\n intersection\n ) &&\n intersection.x >= fromX &&\n intersection.x <= toX\n ) {\n return {\n fromX,\n toX: intersection.x,\n visible: true,\n };\n } else {\n if (intersection.x < fromX && intersection.x < toX) {\n return {\n fromX,\n toX,\n visible: false,\n };\n }\n }\n }\n } else if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n const beamLine = new Line3(\n new Vector3(toX, 0, offsetZ + beamWidth / 2),\n new Vector3(fromX, 0, offsetZ + beamWidth / 2)\n );\n const startRakeCut = new Vector3(\n UI.totalBayLength / 2 + fitX - UI.rakeCutRightHor - beamWidth,\n 0,\n offsetZFrontBeam\n );\n const endRakeCut = new Vector3(\n UI.totalBayLength / 2 + fitX - UI.rakeCutRightHor - beamWidth,\n 0,\n offsetZFrontBeam - UI.rakeCutRightVer - beamWidth\n );\n\n const rakeCutLine = new Line3(endRakeCut, startRakeCut);\n const intersection = this.utils.getIntersectionOnAPoint(\n beamLine,\n rakeCutLine,\n true\n );\n\n if (intersection) {\n if (\n this.utils.isPositive(beamLine.start, beamLine.end, intersection) &&\n this.utils.isPositive(\n rakeCutLine.start,\n rakeCutLine.end,\n intersection\n ) &&\n intersection.x >= fromX &&\n intersection.x <= toX\n ) {\n return {\n fromX,\n toX: intersection.x,\n visible: true,\n };\n } else {\n if (intersection.x < fromX && intersection.x < toX) {\n return {\n fromX,\n toX,\n visible: false,\n };\n }\n }\n }\n }\n\n return {\n fromX,\n toX,\n visible: true,\n };\n }\n /**\n *\n * @param offsetX : Position x of rafter beam\n */\n public addRafterSuperiorBeam(offsetX, userDataPos: any) {\n const beamWidth = this.geo_superiorBeam.width;\n const beamHeight = this.geo_RafterBeam.height;\n const beamGeoLength = this.geo_RafterBeam.length;\n let mesh;\n let beamLength =\n (UI.span -\n (UI.multiSpan\n ? this.geo_superiorBeam.width * 1.5\n : this.geo_superiorBeam.width * 2)) /\n this.utils.cos(UI.patiosPitch);\n if (userDataPos.multiSpan) {\n beamLength =\n (UI.multiSpan - beamWidth * 1.5) / this.utils.cos(UI.patiosPitch);\n } else if (userDataPos.cutOutForSpan) {\n if (\n UI.multiSpan == 0 &&\n UI.span - UI.existingWidth1 - 2 * beamWidth <= 0\n ) {\n return;\n } else if (\n UI.multiSpan > 0 &&\n UI.span - UI.existingWidth1 - 1.5 * beamWidth <= 0\n ) {\n return;\n }\n\n if (UI.multiSpan == 0) {\n beamLength =\n (UI.span - beamWidth * 2 - UI.existingWidth1) /\n this.utils.cos(UI.patiosPitch);\n } else {\n beamLength =\n (UI.span - beamWidth * 1.5 - UI.existingWidth1) /\n this.utils.cos(UI.patiosPitch);\n }\n } else if (userDataPos.cutOutForMultiSpan) {\n if (UI.span + UI.multiSpan - UI.existingWidth1 - 2 * beamWidth <= 0) {\n return;\n }\n\n if (UI.existingWidth1 > UI.span) {\n beamLength =\n (UI.span + UI.multiSpan - beamWidth * 2 - UI.existingWidth1) /\n this.utils.cos(UI.patiosPitch);\n } else {\n beamLength =\n (UI.multiSpan - beamWidth * 1.5) / this.utils.cos(UI.patiosPitch);\n }\n } else if (userDataPos.rakeCutLeft) {\n beamLength =\n (UI.rakeCutLeftVer - beamWidth) / this.utils.cos(UI.patiosPitch);\n } else if (userDataPos.rakeCutRight) {\n beamLength =\n (UI.rakeCutRightVer - beamWidth) / this.utils.cos(UI.patiosPitch);\n }\n\n let offsetZ = 0;\n let offsetY = 0;\n\n // Scene position z move back\n // The plane be translated\n let shouldCutByRakeCut = true;\n if (userDataPos.span || userDataPos.cutOutForSpan) {\n offsetY =\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n (UI.span - (UI.multiSpan ? beamWidth / 2 : beamWidth)) *\n this.utils.tan(UI.patiosPitch);\n offsetZ =\n UI.span -\n (UI.multiSpan ? beamWidth / 2 : beamWidth) -\n UI.existingWidth1 / 2 -\n this.extraOffsetZ;\n } else if (\n userDataPos.multiSpan ||\n userDataPos.cutOutForMultiSpan ||\n userDataPos.rakeCutLeft ||\n userDataPos.rakeCutRight\n ) {\n if (userDataPos.rakeCutLeft || userDataPos.rakeCutRight) {\n shouldCutByRakeCut = false;\n }\n offsetY =\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n (UI.span + UI.multiSpan - beamWidth) * this.utils.tan(UI.patiosPitch);\n offsetZ =\n UI.span +\n UI.multiSpan -\n beamWidth -\n UI.existingWidth1 / 2 -\n this.extraOffsetZ;\n }\n\n let offsetXRafter = offsetX;\n if (userDataPos.last) {\n offsetXRafter = offsetX - this.geo_RafterBeam.width;\n } else if (!userDataPos.first && !userDataPos.last) {\n offsetXRafter = offsetX - this.geo_RafterBeam.width / 2;\n }\n\n if (shouldCutByRakeCut) {\n const { newStartZ, newLength, fitYForNewStartZPoint } =\n this.cutRafterBeamWithRakeCut(offsetZ, offsetXRafter, beamLength);\n if (!_.isNil(newStartZ)) {\n offsetZ = newStartZ;\n }\n if (!_.isNil(newLength)) {\n beamLength = newLength;\n }\n if (!_.isNil(fitYForNewStartZPoint)) {\n offsetY -= fitYForNewStartZPoint;\n }\n }\n\n const fitBeamWidthToCut = beamHeight * this.utils.tan(UI.patiosPitch);\n let scaleX = (beamLength + fitBeamWidthToCut) / beamGeoLength;\n\n let views: Print2DView[] = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n let material = this.getRafterBeamMaterial(userDataPos, offsetZ, beamLength);\n mesh = new Mesh(this.geo_RafterBeam.geometry, material);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM,\n position: userDataPos,\n views: views,\n };\n mesh.position.set(-fitBeamWidthToCut, 0, 0);\n mesh.scale.setX(scaleX);\n\n let { capL, capR } = this.getBeamEndCapForRafterBeam(0, beamLength);\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM,\n position: userDataPos,\n views: views,\n };\n\n beamGroup.position.set(offsetXRafter, offsetY, offsetZ);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n\n beamGroup.rotateY(Math.PI / 2);\n\n beamGroup.rotateZ(this.utils.degreesToRadians(-UI.patiosPitch));\n\n this.scene.add(beamGroup);\n }\n private cutRafterBeamWithRakeCut(offsetZ, offsetX, beamLength) {\n // startZ is start point of rafter beam\n // startZ > endZ\n const beamWidth = this.geo_superiorBeam.width;\n let startZ = offsetZ;\n let endZ = offsetZ - beamLength * this.utils.cos(UI.patiosPitch);\n const fitX = this.getContainerOffsetXToFitBraketToExistingWall();\n const offsetZFrontBeam =\n UI.span + UI.multiSpan - UI.existingWidth1 / 2 - this.extraOffsetZ;\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n const rakeCutVerLength =\n this.beamLeftCutSizeInfo.v + this.beamLeftCutSizeInfo.k_;\n const rakeCutHorLength = this.beamLeftCutSizeInfo.l;\n\n const beamLine = new Line3(\n new Vector3(offsetX, 0, startZ),\n new Vector3(offsetX, 0, endZ)\n );\n const beamRakeCutLength = Math.sqrt(\n Math.pow(rakeCutHorLength, 2) + Math.pow(rakeCutVerLength, 2)\n );\n const cosAngleFrontHor = rakeCutHorLength / beamRakeCutLength;\n\n const startRakeCut = new Vector3(\n -UI.totalBayLength / 2 + fitX,\n 0,\n offsetZFrontBeam - rakeCutVerLength - beamWidth / cosAngleFrontHor\n );\n const endRakeCut = new Vector3(\n -UI.totalBayLength / 2 + fitX + rakeCutHorLength,\n 0,\n offsetZFrontBeam - beamWidth / cosAngleFrontHor\n );\n\n const intersection = this.utils.getIntersectionOnAPoint(\n beamLine,\n new Line3(startRakeCut, endRakeCut)\n );\n\n if (intersection && intersection.z < startZ) {\n const newStartZ = intersection.z;\n const newLength =\n Math.abs(newStartZ - endZ) / this.utils.cos(UI.patiosPitch);\n const fitYForNewStartZPoint =\n Math.abs(startZ - newStartZ) * this.utils.tan(UI.patiosPitch);\n\n return { newStartZ, newLength, fitYForNewStartZPoint };\n }\n } else if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n const beamLine = new Line3(\n new Vector3(offsetX + 2, 0, startZ),\n new Vector3(offsetX + 2, 0, endZ)\n );\n const startRakeCut = new Vector3(\n -UI.totalBayLength / 2 + fitX,\n 0,\n offsetZFrontBeam - UI.rakeCutLeftVer - beamWidth\n );\n const endRakeCut = new Vector3(\n -UI.totalBayLength / 2 + fitX + UI.rakeCutLeftHor + beamWidth,\n 0,\n offsetZFrontBeam - UI.rakeCutLeftVer - beamWidth\n );\n\n const intersection = this.utils.getIntersectionOnAPoint(\n beamLine,\n new Line3(endRakeCut, startRakeCut),\n true\n );\n\n if (intersection && intersection.z < startZ) {\n const newStartZ = intersection.z;\n const newLength =\n Math.abs(newStartZ - endZ) / this.utils.cos(UI.patiosPitch);\n const fitYForNewStartZPoint =\n Math.abs(startZ - newStartZ) * this.utils.tan(UI.patiosPitch);\n\n return { newStartZ, newLength, fitYForNewStartZPoint };\n }\n }\n\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n const rakeCutVerLength =\n this.beamRightCutSizeInfo.v + this.beamRightCutSizeInfo.k_;\n const rakeCutHorLength = this.beamRightCutSizeInfo.l;\n\n const beamLine = new Line3(\n new Vector3(offsetX + beamWidth, 0, startZ),\n new Vector3(offsetX + beamWidth, 0, endZ)\n );\n const beamRakeCutLength = Math.sqrt(\n Math.pow(rakeCutHorLength, 2) + Math.pow(rakeCutVerLength, 2)\n );\n const cosAngleFrontHor = rakeCutHorLength / beamRakeCutLength;\n\n const startRakeCut = new Vector3(\n UI.totalBayLength / 2 + fitX,\n 0,\n offsetZFrontBeam - rakeCutVerLength - beamWidth / cosAngleFrontHor\n );\n const endRakeCut = new Vector3(\n UI.totalBayLength / 2 + fitX - rakeCutHorLength,\n 0,\n offsetZFrontBeam - beamWidth / cosAngleFrontHor\n );\n\n const intersection = this.utils.getIntersectionOnAPoint(\n beamLine,\n new Line3(startRakeCut, endRakeCut)\n );\n\n if (intersection && intersection.z < startZ) {\n const newStartZ = intersection.z;\n const newLength =\n Math.abs(newStartZ - endZ) / this.utils.cos(UI.patiosPitch);\n const fitYForNewStartZPoint =\n Math.abs(startZ - newStartZ) * this.utils.tan(UI.patiosPitch);\n\n return { newStartZ, newLength, fitYForNewStartZPoint };\n }\n } else if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n const beamLine = new Line3(\n new Vector3(offsetX + beamWidth - 2, 0, startZ),\n new Vector3(offsetX + beamWidth - 2, 0, endZ)\n );\n const startRakeCut = new Vector3(\n UI.totalBayLength / 2 + fitX,\n 0,\n offsetZFrontBeam - UI.rakeCutRightVer - beamWidth\n );\n const endRakeCut = new Vector3(\n UI.totalBayLength / 2 + fitX - UI.rakeCutRightHor - beamWidth,\n 0,\n offsetZFrontBeam - UI.rakeCutRightVer - beamWidth\n );\n\n const intersection = this.utils.getIntersectionOnAPoint(\n beamLine,\n new Line3(endRakeCut, startRakeCut),\n true\n );\n\n if (intersection && intersection.z < startZ) {\n const newStartZ = intersection.z;\n const newLength =\n Math.abs(newStartZ - endZ) / this.utils.cos(UI.patiosPitch);\n const fitYForNewStartZPoint =\n Math.abs(startZ - newStartZ) * this.utils.tan(UI.patiosPitch);\n\n return { newStartZ, newLength, fitYForNewStartZPoint };\n }\n }\n\n return { newStartZ: null, newLength: null, fitYForNewStartZPoint: null };\n }\n private getRafterBeamMaterial(userDataPos, offsetZ, beamLength) {\n let material = MaterialManager.Instance().BEAM.clone();\n\n const beamWidth = this.geo_superiorBeam.width;\n const braketWidth = this.geo_bracket.width;\n\n let cutFrontZ = offsetZ + this.extraOffsetZ - braketWidth;\n let cutBackZ =\n offsetZ +\n this.extraOffsetZ -\n braketWidth -\n beamLength * this.utils.cos(UI.patiosPitch);\n\n if (cutFrontZ != 0 || cutBackZ != 0) {\n let nBottom = new Vector3(0, 0, -1).normalize();\n let pBottom = new Vector3(0, 0, cutFrontZ);\n let planeBottom = new Plane().setFromNormalAndCoplanarPoint(\n nBottom,\n pBottom\n );\n\n let nVer = new Vector3(0, 0, 1).normalize();\n let pVer = new Vector3(0, 0, cutBackZ);\n let planeVer = new Plane().setFromNormalAndCoplanarPoint(nVer, pVer);\n\n material.clippingPlanes = [planeBottom, planeVer];\n }\n\n return material;\n }\n private getBeamEndCapForRafterBeam(offsetXL, offsetXR) {\n let capL;\n let capR;\n let matEndCap = this.getRafterBeamEndCapMaterial();\n\n let checkExec = /\\w{1}\\d{1,3}x(\\d{1,3})/.exec(this.geo_RafterBeam.name);\n let beamSize = checkExec && checkExec.length == 2 ? checkExec[1] : \"\";\n let lowerBraketName = getBeamEndCapCode(\n this.geo_rafterBeamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n );\n let higherBraketName = getBeamEndCapCode(\n this.geo_rafterBeamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n );\n\n capL = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capL.position.set(offsetXL - 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capL.scale.setY(\n (this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length * this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capL.rotateY(Math.PI / 2);\n capL.rotateX(-this.utils.degreesToRadians(UI.patiosPitch));\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: lowerBraketName,\n };\n\n capR = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capR.position.set(\n offsetXR + 2,\n -this.geo_rafterBeamEndCap.length * this.utils.tan(UI.patiosPitch),\n this.geo_rafterBeamEndCap.width / 2\n );\n capR.scale.setY(\n (this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length * this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capR.rotateY(-Math.PI / 2);\n capR.rotateX(this.utils.degreesToRadians(UI.patiosPitch));\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: higherBraketName,\n };\n\n return {\n capL,\n capR,\n };\n }\n private getRafterBeamEndCapMaterial() {\n const matEndCap = UI.beamLayoutShow\n ? MaterialManager.Instance().BRACKET_WARNING.clone()\n : MaterialManager.Instance().BEAM.clone();\n let heightPlane =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height;\n let planeTop = new Plane(new Vector3(0, -1, 0));\n let matrixTranslateTop = new Matrix4().makeTranslation(0, heightPlane, 0);\n let matrixRotateTop = new Matrix4().makeRotationX(\n -this.utils.degreesToRadians(UI.patiosPitch)\n ); //tao voi z pitch do\n let matrixTotalTop = matrixTranslateTop.multiply(matrixRotateTop);\n planeTop.applyMatrix4(matrixTotalTop);\n\n let heightRealBottom =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket();\n\n let planeBottom = new Plane(new Vector3(0, 1, 0));\n let matrixTranslateBottom = new Matrix4().makeTranslation(\n 0,\n heightRealBottom,\n 0\n );\n let matrixRotateBottom = new Matrix4().makeRotationX(\n -this.utils.degreesToRadians(UI.patiosPitch)\n ); //tao voi z pitch do\n let matrixTotalBottom = matrixTranslateBottom.multiply(matrixRotateBottom);\n planeBottom.applyMatrix4(matrixTotalBottom);\n\n planeTop.translate(\n new Vector3(\n 0,\n 0,\n -UI.existingWidth1 / 2 - this.extraOffsetZ + this.scene.position.z\n )\n );\n planeBottom.translate(\n new Vector3(\n 0,\n 0,\n -UI.existingWidth1 / 2 - this.extraOffsetZ + this.scene.position.z\n )\n );\n matEndCap.clippingPlanes = [planeTop, planeBottom];\n\n return matEndCap;\n }\n private getBraketMaterial(height: number) {\n if (height > HomeComponent.ins.sldFlyOverBracketHeight.maxValue) {\n return MaterialManager.Instance().BRACKET_WARNING;\n } else {\n return MaterialManager.Instance().BRACKET;\n }\n }\n private totalHeightFromEaveHeightToTopOfExistingRoof() {\n const height =\n this.geometryManager.EAVE.EAVE.height +\n UI.fasciaDepth +\n UI.eaveWidth * this.utils.tan(UI.existingRoofPitch) +\n this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.height /\n this.utils.cos(UI.existingRoofPitch);\n\n return height;\n }\n private totalHeightFromEaveHeightToTopOfFlyoverBraket() {\n const height =\n this.totalHeightFromEaveHeightToTopOfExistingRoof() +\n UI.braketHeight -\n FIT_FLYOVER_BRAKET_ON_ROOF;\n\n return height;\n }\n public houseBeamHeight() {\n return this.geo_superiorBeam.height - this.geo_superiorHouseBeam.height;\n }\n private updateUI() {\n this.APP.sldMinHeight.setValue(_.round(this.frontPostHeight, 0));\n }\n public getSection(): Printing2DGeometry {\n let objs = this.scene.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_POST ||\n o.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET\n );\n\n //objs = [...objs];\n\n let lsGeometries: Printing2DLine[] = [];\n\n for (let o of objs) {\n let box = new BoxHelper(o);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n //this.scene.add(box);\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: outlineGeo.vertices,\n views: o.userData.views,\n });\n }\n\n let beamGroups = this.scene.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM ||\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_INTERNAL_BEAM\n );\n for (let g of beamGroups) {\n for (let c of g.children) {\n c.updateMatrix();\n\n let objCloned = c.clone();\n objCloned.applyMatrix4(new Matrix4().getInverse(c.matrix));\n\n const planView = _.find(\n g.userData.views,\n (el) => el.viewType == ViewType.PLAN\n );\n if (planView) {\n this.utils.getPlanVerticesOfBeam(c as Mesh, lsGeometries, [planView]);\n }\n\n let box = new BoxHelper(objCloned);\n c.updateWorldMatrix(true, true);\n box.geometry.applyMatrix4(c.matrixWorld);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo.vertices,\n views: _.filter(\n g.userData.views,\n (el) => el.viewType != ViewType.PLAN\n ),\n });\n }\n }\n\n let rafterBeamGroups = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n );\n for (let o of rafterBeamGroups) {\n o.children.forEach((el) => {\n this.utils.getOutlineRafterBeam(el as Mesh, lsGeometries);\n });\n }\n\n return { lines: lsGeometries, texts: [] };\n }\n\n public simplifyGeo(geo: BufferGeometry): Geometry {\n let vertices = geo.getAttribute(\"position\").array;\n let lineGeo = new Geometry();\n for (let i = 0; i < vertices.length; i += 3) {\n lineGeo.vertices.push(\n new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2])\n );\n }\n\n //2-3\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n //3-7\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n //7-6\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n //6-2\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n\n //1-4\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n //4-8\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n //8-5\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n //5-1\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n\n //let line = new LineSegments(lineGeo, new LineBasicMaterial({color: new Color('red')}));\n //this.scene.add(line);\n return lineGeo;\n }\n private addGround() {\n let offsetZ =\n UI.existingWidth1 / 2 +\n this.extraOffsetZ +\n this.APP.sldBackOverhang.currentValue;\n let width = UI.totalBayLength + UI.overhangLeft + UI.overhangRight;\n let length =\n UI.span +\n UI.multiSpan +\n UI.overhangFront +\n this.APP.sldBackOverhang.currentValue;\n\n let base = new Mesh(\n this.geo_groundBase.geometry,\n MaterialManager.Instance().BASE\n );\n base.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GROUND_BASE,\n };\n base.position.set(0, 0, -offsetZ);\n base.scale.set(\n width / this.geo_groundBase.width,\n 1,\n length / this.geo_groundBase.length\n );\n\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2;\n if (UI.existingType == 1) {\n base.position.setX(offsetX);\n }\n if (UI.existingType == 2) {\n base.position.setX(-offsetX);\n }\n\n this.scene.add(base);\n }\n private addPostOrBracket(offsetX: number, userDataPos: any): void {\n let meshPost = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n meshPost.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let offsetY =\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfExistingRoof() -\n FIT_FLYOVER_BRAKET_ON_ROOF;\n\n let postOffsetZ = 0;\n let bracketOffsetZ = 0;\n\n let scalePostY = 1;\n let scaleBracketY = 1;\n\n let views: Print2DView[];\n\n if (userDataPos.front) {\n postOffsetZ = UI.span - UI.existingWidth1 / 2 - this.extraOffsetZ;\n bracketOffsetZ = UI.span - UI.existingWidth1 / 2 - this.extraOffsetZ;\n if (UI.multiSpan > 0) {\n postOffsetZ -= this.geo_superiorPost.width / 2;\n bracketOffsetZ -= this.geometryManager.FLY_OVER_BRACKET.S65x3.width / 2;\n } else {\n postOffsetZ -= this.geo_superiorPost.width;\n bracketOffsetZ -= this.geometryManager.FLY_OVER_BRACKET.S65x3.width;\n }\n\n this.frontPostHeight = UI.eaveHeight + this.getBracketHeight(UI.span);\n scalePostY = this.frontPostHeight / this.geo_superiorPost.height;\n scaleBracketY =\n (this.getBracketHeight(UI.span) -\n this.totalHeightFromEaveHeightToTopOfExistingRoof() +\n FIT_FLYOVER_BRAKET_ON_ROOF) /\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n if (userDataPos.multiSpan) {\n postOffsetZ =\n UI.multiSpan +\n UI.span -\n UI.existingWidth1 / 2 -\n this.geo_superiorPost.width -\n this.extraOffsetZ;\n bracketOffsetZ =\n UI.multiSpan +\n UI.span -\n UI.existingWidth1 / 2 -\n this.geometryManager.FLY_OVER_BRACKET.S65x3.width -\n this.extraOffsetZ;\n scalePostY =\n (UI.eaveHeight + this.getBracketHeight(UI.span + UI.multiSpan)) /\n this.geo_superiorPost.height;\n scaleBracketY =\n (this.getBracketHeight(UI.span + UI.multiSpan) -\n this.totalHeightFromEaveHeightToTopOfExistingRoof() +\n FIT_FLYOVER_BRAKET_ON_ROOF) /\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n meshPost.userData.views = views;\n\n let bracketOffsetX = offsetX;\n let postOffsetX = offsetX;\n if (userDataPos.first) {\n } else if (userDataPos.last) {\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n } else {\n bracketOffsetX -= this.geo_bracket.width / 2;\n postOffsetX -= this.geo_superiorPost.width / 2;\n }\n\n let exceedMoveBackLimit = false;\n //Rakecut\n if (\n this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE ||\n this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP\n ) {\n let moveToBack = false;\n if (UI.multiSpan > 0) {\n if (userDataPos.multiSpan && userDataPos.first) {\n moveToBack = true;\n }\n } else {\n if (!userDataPos.multiSpan && userDataPos.first) {\n moveToBack = true;\n }\n }\n\n if (moveToBack) {\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n let moveBack = UI.rakeCutLeftVer;\n if (moveBack > 0) {\n postOffsetZ -= moveBack;\n bracketOffsetZ -= moveBack;\n let length = UI.span + UI.multiSpan - moveBack;\n scalePostY =\n this.utils.getHeightByAngle(\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n length,\n UI.patiosPitch,\n 1\n ) / this.geo_superiorPost.height;\n scaleBracketY =\n (this.getBracketHeight(\n UI.span + UI.multiSpan - UI.rakeCutLeftVer\n ) -\n this.totalHeightFromEaveHeightToTopOfExistingRoof() +\n FIT_FLYOVER_BRAKET_ON_ROOF) /\n this.geo_bracket.height;\n }\n } else if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n postOffsetX -= UI.overhangLeft;\n bracketOffsetX -= UI.overhangLeft;\n postOffsetZ -=\n this.beamLeftCutSizeInfo.v + this.beamLeftCutSizeInfo.k_;\n bracketOffsetZ -=\n this.beamLeftCutSizeInfo.v + this.beamLeftCutSizeInfo.k_;\n let length =\n UI.span +\n UI.multiSpan -\n (this.beamLeftCutSizeInfo.v + this.beamLeftCutSizeInfo.k_);\n scalePostY =\n this.utils.getHeightByAngle(\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n length,\n UI.patiosPitch,\n 1\n ) / this.geo_superiorPost.height;\n scaleBracketY =\n (this.getBracketHeight(\n UI.span +\n UI.multiSpan -\n (this.beamLeftCutSizeInfo.v + this.beamLeftCutSizeInfo.k_)\n ) -\n this.totalHeightFromEaveHeightToTopOfExistingRoof() +\n FIT_FLYOVER_BRAKET_ON_ROOF) /\n this.geo_bracket.height;\n if (\n UI.rakeCutLeftVer + this.beamLeftCutSizeInfo.k_ >\n this.MANAGER.patiosLength\n ) {\n exceedMoveBackLimit = true;\n }\n }\n\n //if rake cut is on then do not add post left and right\n //left and right post will be added in individual function\n //return;\n }\n }\n if (\n UI.rakeCutRightType == RAKECUT_TYPE.ANGLE ||\n UI.rakeCutRightType == RAKECUT_TYPE.STEP\n ) {\n let moveToBack = false;\n if (UI.multiSpan > 0) {\n if (userDataPos.multiSpan && userDataPos.last) {\n moveToBack = true;\n }\n } else {\n if (!userDataPos.multiSpan && userDataPos.last) {\n moveToBack = true;\n }\n }\n\n if (moveToBack) {\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n postOffsetX += UI.overhangRight;\n bracketOffsetX += UI.overhangRight;\n postOffsetZ -=\n this.beamRightCutSizeInfo.v + this.beamRightCutSizeInfo.k_;\n bracketOffsetZ -=\n this.beamRightCutSizeInfo.v + this.beamRightCutSizeInfo.k_;\n\n let length =\n UI.span +\n UI.multiSpan -\n (this.beamRightCutSizeInfo.v + this.beamRightCutSizeInfo.k_);\n scalePostY =\n this.utils.getHeightByAngle(\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n length,\n UI.patiosPitch,\n 1\n ) / this.geo_superiorPost.height;\n scaleBracketY =\n (this.getBracketHeight(\n UI.span +\n UI.multiSpan -\n (this.beamRightCutSizeInfo.v + this.beamRightCutSizeInfo.k_)\n ) -\n this.totalHeightFromEaveHeightToTopOfExistingRoof() +\n FIT_FLYOVER_BRAKET_ON_ROOF) /\n this.geo_bracket.height;\n if (\n UI.rakeCutRightVer + this.beamRightCutSizeInfo.k_ >\n this.MANAGER.patiosLength\n ) {\n exceedMoveBackLimit = true;\n }\n } else if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n let moveBack = UI.rakeCutRightVer;\n if (moveBack > 0) {\n postOffsetZ -= moveBack;\n bracketOffsetZ -= moveBack;\n let length = UI.span + UI.multiSpan - moveBack;\n scalePostY =\n this.utils.getHeightByAngle(\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n length,\n UI.patiosPitch,\n 1\n ) / this.geo_superiorPost.height;\n scaleBracketY =\n (this.getBracketHeight(\n UI.span + UI.multiSpan - UI.rakeCutRightVer\n ) -\n this.totalHeightFromEaveHeightToTopOfExistingRoof() +\n FIT_FLYOVER_BRAKET_ON_ROOF) /\n this.geo_bracket.height;\n }\n }\n\n //if rake cut is on then do not add post left and right\n //left and right post will be added in individual function\n //return;\n }\n }\n //End rakecut\n\n //post can not go behind existing wall\n if (exceedMoveBackLimit) {\n return;\n }\n\n meshPost.position.set(postOffsetX, 0, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n\n let meshBracket = new Mesh(\n this.geo_bracket.geometry,\n this.getBraketMaterial(\n scaleBracketY * this.geometryManager.FLY_OVER_BRACKET.S65x3.height\n )\n );\n meshBracket.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n meshBracket.userData.views = views;\n meshBracket.position.set(bracketOffsetX, offsetY, bracketOffsetZ);\n meshBracket.scale.setY(scaleBracketY);\n\n let boxPost = new Box3().setFromObject(meshPost);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n if (isIntersect) {\n if (\n meshBracket.userData.position.left &&\n UI.existingType != BUILDING_SIDE.BOTH\n ) {\n meshBracket.translateX(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n );\n } else if (\n meshBracket.userData.position.right &&\n UI.existingType != BUILDING_SIDE.BOTH\n ) {\n meshBracket.translateX(\n -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n )\n );\n }\n this.scene.add(meshBracket);\n } else {\n if (UI.existingType == 1) {\n meshPost.translateX(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n );\n } else if (UI.existingType == 2) {\n meshPost.translateX(\n -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n )\n );\n }\n this.scene.add(meshPost);\n }\n }\n public addPostOrBracketBack(): void {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET &&\n x.userData.position.back\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.SUPERIOR_POST &&\n x.userData.position.back\n )\n );\n\n let first = true;\n let last = false;\n let offsetX = -UI.totalBayLength / 2;\n let userDataPos = { back: true };\n\n let bracketDistance = UI.totalBayLength / (this.numberOfBracketBack - 1);\n let extraWalWidth =\n this.APP.existingWallManager.geo_existingWallL1.width +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES &&\n this.MANAGER.cutoutCondition\n ) {\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n if (UI.existingWidth2 > 0) {\n offsetX += UI.existingLength2;\n bracketDistance =\n (UI.totalBayLength - UI.existingLength2) /\n (this.numberOfBracketBack - 1);\n } else {\n offsetX += UI.existingLength2 - extraWalWidth;\n bracketDistance =\n (UI.totalBayLength - UI.existingLength2 + extraWalWidth) /\n (this.numberOfBracketBack - 1);\n }\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n bracketDistance =\n (UI.totalBayLength - UI.existingLength2 + extraWalWidth) /\n (this.numberOfBracketBack - 1);\n if (UI.existingWidth2 > 0) {\n bracketDistance =\n (UI.totalBayLength - UI.existingLength2) /\n (this.numberOfBracketBack - 1);\n }\n } else if (UI.existingType == BUILDING_SIDE.BOTH) {\n offsetX += this.cutoutExistingBothLength - extraWalWidth;\n bracketDistance =\n (this.APP.sldExistingLength.currentValue + extraWalWidth * 2) /\n (this.numberOfBracketBack - 1);\n }\n }\n\n for (let i = 0; i < this.numberOfBracketBack; i++) {\n if (i == this.numberOfBracketBack - 1) {\n last = true;\n }\n\n let meshPost = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n meshPost.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let offsetY =\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfExistingRoof() -\n FIT_FLYOVER_BRAKET_ON_ROOF;\n\n let postOffsetZ = 0;\n let bracketOffsetZ = 0;\n\n let scalePostY = 1;\n let scaleBracketY = 1;\n\n let views: Print2DView[];\n\n postOffsetZ = -UI.existingWidth1 / 2 - this.extraOffsetZ;\n bracketOffsetZ = -UI.existingWidth1 / 2 - this.extraOffsetZ;\n scalePostY =\n (UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket()) /\n this.geo_superiorPost.height;\n scaleBracketY =\n (UI.braketHeight + this.houseBeamHeight()) / this.geo_bracket.height;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n meshPost.userData.views = views;\n\n let bracketOffsetX = offsetX;\n let postOffsetX = offsetX;\n if (first) {\n } else if (last) {\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n } else {\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n }\n\n meshPost.position.set(postOffsetX, 0, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n\n let meshBracket = new Mesh(\n this.geo_bracket.geometry,\n this.getBraketMaterial(scaleBracketY * this.geo_bracket.height)\n );\n meshBracket.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n meshBracket.userData.views = views;\n meshBracket.position.set(bracketOffsetX, offsetY, bracketOffsetZ);\n meshBracket.scale.setY(scaleBracketY);\n\n //Check intersect eave\n let boxPost = new Box3().setFromObject(meshPost);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n if (isIntersect) {\n if (i == 0 && (UI.existingType == 1 || UI.existingType == 3)) {\n meshBracket.translateX(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.MANAGER.columnAndPurlinManager.geo_bracket?.width || 0) / 2\n );\n } else if (last && (UI.existingType == 2 || UI.existingType == 3)) {\n meshBracket.translateX(\n -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.MANAGER.columnAndPurlinManager.geo_bracket?.width || 0) / 2\n )\n );\n }\n this.scene.add(meshBracket);\n } else {\n this.scene.add(meshPost);\n }\n\n if (i < this.numberOfBracketBack) {\n offsetX += bracketDistance;\n }\n first = false;\n }\n }\n public addPostOrBracketBackCutout(): void {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET &&\n x.userData.position.back &&\n x.userData.position.cutout\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.SUPERIOR_POST &&\n x.userData.position.back &&\n x.userData.position.cutout\n )\n );\n\n if (\n this.APP.sltCutOut.currentValue != CUTOUT_ENABLE.YES ||\n !this.MANAGER.cutoutCondition\n )\n return;\n\n let first = true;\n let last = false;\n let offsetXL = -UI.totalBayLength / 2;\n let offsetXR = UI.totalBayLength / 2;\n let userDataPos = { back: true, cutout: true };\n\n let extraWalWidth =\n this.APP.existingWallManager.geo_existingWallL1.width +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n let bracketDistance =\n (UI.existingLength2 - extraWalWidth) / (this.numberOfBracketCutout - 1);\n if (UI.existingWidth2 > 0) {\n bracketDistance = UI.existingLength2 / (this.numberOfBracketCutout - 1);\n }\n\n if (\n UI.existingType == BUILDING_SIDE.LEFT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n for (let i = 0; i < this.numberOfBracketCutout; i++) {\n if (i == this.numberOfBracketCutout - 1) {\n last = true;\n }\n\n let meshPost = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n meshPost.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let offsetY =\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfExistingRoof() -\n FIT_FLYOVER_BRAKET_ON_ROOF;\n\n let postOffsetZ =\n -UI.existingWidth1 / 2 - this.extraOffsetZ + UI.existingWidth1;\n let bracketOffsetZ =\n -UI.existingWidth1 / 2 - this.extraOffsetZ + UI.existingWidth1;\n\n let views: Print2DView[];\n\n let scalePostY =\n this.utils.getHeightByAngle(\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.existingWidth1,\n UI.patiosPitch,\n 1\n ) / this.geo_superiorPost.height;\n let scaleBracketY =\n (this.utils.getHeightByAngle(\n UI.braketHeight,\n UI.existingWidth1,\n UI.patiosPitch,\n 1\n ) +\n this.houseBeamHeight()) /\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n meshPost.userData.views = views;\n\n let bracketOffsetX = offsetXL;\n let postOffsetX = offsetXL - this.geo_bracket.width;\n\n if (first) {\n } else if (last) {\n // Move to dodge internal rafter beam\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n } else {\n bracketOffsetX -= this.geo_bracket.width / 2;\n postOffsetX -= this.geo_superiorPost.width / 2;\n }\n\n meshPost.position.set(postOffsetX, 0, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n\n let meshBracket = new Mesh(\n this.geo_bracket.geometry,\n this.getBraketMaterial(\n scaleBracketY * this.geometryManager.FLY_OVER_BRACKET.S65x3.height\n )\n );\n meshBracket.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n meshBracket.userData.views = views;\n meshBracket.position.set(bracketOffsetX, offsetY, bracketOffsetZ);\n meshBracket.scale.setY(scaleBracketY);\n\n //Check intersect eave\n let boxPost = new Box3().setFromObject(meshPost);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n if (isIntersect) {\n if (UI.existingType == 1) {\n meshBracket.translateX(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n );\n }\n this.scene.add(meshBracket);\n } else {\n this.scene.add(meshPost);\n }\n\n if (i < this.numberOfBracketCutout) {\n offsetXL += bracketDistance;\n }\n first = false;\n }\n }\n\n if (\n UI.existingType == BUILDING_SIDE.RIGHT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n first = true;\n for (let i = 0; i < this.numberOfBracketCutout; i++) {\n if (i == this.numberOfBracketCutout - 1) {\n last = true;\n }\n\n let meshPost = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n meshPost.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let offsetY =\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfExistingRoof() -\n FIT_FLYOVER_BRAKET_ON_ROOF;\n\n let postOffsetZ =\n -UI.existingWidth1 / 2 - this.extraOffsetZ + UI.existingWidth1;\n let bracketOffsetZ =\n -UI.existingWidth1 / 2 - this.extraOffsetZ + UI.existingWidth1;\n\n let views: Print2DView[];\n\n let scalePostY =\n this.utils.getHeightByAngle(\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.existingWidth1,\n UI.patiosPitch,\n 1\n ) / this.geo_superiorPost.height;\n let scaleBracketY =\n (this.utils.getHeightByAngle(\n UI.braketHeight,\n UI.existingWidth1,\n UI.patiosPitch,\n 1\n ) +\n this.houseBeamHeight()) /\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n views = [\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n meshPost.userData.views = views;\n\n let bracketOffsetX = offsetXR;\n let postOffsetX = offsetXR;\n if (first) {\n if (\n UI.existingType == BUILDING_SIDE.RIGHT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n }\n } else if (last) {\n // Dodge internal rafter beam\n // bracketOffsetX -= this.geo_bracket.width;\n // postOffsetX -= this.geo_superiorPost.width;\n } else {\n bracketOffsetX -= this.geo_bracket.width / 2;\n postOffsetX -= this.geo_superiorPost.width / 2;\n }\n\n meshPost.position.set(postOffsetX, 0, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n\n let meshBracket = new Mesh(\n this.geo_bracket.geometry,\n this.getBraketMaterial(\n scaleBracketY * this.geometryManager.FLY_OVER_BRACKET.S65x3.height\n )\n );\n meshBracket.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n meshBracket.userData.views = views;\n meshBracket.position.set(bracketOffsetX, offsetY, bracketOffsetZ);\n meshBracket.scale.setY(scaleBracketY);\n\n //Check intersect eave\n let boxPost = new Box3().setFromObject(meshPost);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n if (isIntersect) {\n if (UI.existingType == 2) {\n meshBracket.translateX(\n -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n )\n );\n }\n this.scene.add(meshBracket);\n } else {\n this.scene.add(meshPost);\n }\n\n if (i < this.numberOfBracketCutout) {\n offsetXR -= bracketDistance;\n }\n first = false;\n }\n }\n }\n public addPostAngleRakecut(offsetX: number, userDataPos: any) {\n if (\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.ANGLE &&\n UI.rakeCutRightType != RAKECUT_TYPE.ANGLE\n ) {\n return;\n }\n\n //let height = (this.APP.sldBuildingHeight.currentValue - this.getHeightByRoofPitch(true) - (this.beamInfo.height));\n let postOffsetZ =\n UI.multiSpan +\n UI.span -\n UI.existingWidth1 / 2 -\n this.geo_superiorPost.width -\n this.extraOffsetZ;\n let bracketOffsetZ =\n UI.multiSpan +\n UI.span -\n UI.existingWidth1 / 2 -\n this.geometryManager.FLY_OVER_BRACKET.S65x3.width -\n this.extraOffsetZ;\n let scalePostY =\n (UI.eaveHeight + this.getBracketHeight(UI.span + UI.multiSpan)) /\n this.geo_superiorPost.height;\n let scaleBracketY =\n this.getBracketHeight(UI.span + UI.multiSpan) / this.geo_bracket.height;\n let offsetY = UI.eaveHeight;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n if (userDataPos.first) {\n let postLeft = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n postLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n postLeft.position.set(\n offsetX + this.beamLeftCutSizeInfo.l,\n 0,\n postOffsetZ\n );\n postLeft.scale.setY(scalePostY);\n\n let bracketLeft = new Mesh(\n this.geo_bracket.geometry,\n this.getBraketMaterial(scaleBracketY * this.geo_bracket.height)\n );\n bracketLeft.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n views: views,\n };\n bracketLeft.position.set(\n offsetX + this.beamLeftCutSizeInfo.l,\n offsetY,\n bracketOffsetZ\n );\n bracketLeft.scale.setY(scaleBracketY);\n\n let boxPost = new Box3().setFromObject(postLeft);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n let isIntersectPost = false;\n this.scene.children\n .filter((el) => el.userData.type == GEOMETRY_TYPE.SUPERIOR_POST)\n .forEach((el) => {\n el.updateWorldMatrix(true, true);\n let boxEl = new Box3().setFromObject(el);\n if (boxPost.intersectsBox(boxEl)) {\n isIntersectPost = true;\n }\n });\n\n if (isIntersect && !isIntersectPost) {\n this.scene.add(bracketLeft);\n } else if (!isIntersectPost) {\n this.scene.add(postLeft);\n }\n }\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n if (userDataPos.last) {\n let postLeft = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n postLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n postLeft.position.set(\n offsetX - this.beamRightCutSizeInfo.l - this.geo_superiorPost.width,\n 0,\n postOffsetZ\n );\n postLeft.scale.setY(scalePostY);\n\n let bracketLeft = new Mesh(\n this.geo_bracket.geometry,\n this.getBraketMaterial(scaleBracketY * this.geo_bracket.height)\n );\n bracketLeft.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n views: views,\n };\n bracketLeft.position.set(\n offsetX - this.beamRightCutSizeInfo.l - this.geo_superiorBeam.width,\n offsetY,\n bracketOffsetZ\n );\n bracketLeft.scale.setY(scaleBracketY);\n\n let boxPost = new Box3().setFromObject(postLeft);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n let isIntersectPost = false;\n this.scene.children\n .filter((el) => el.userData.type == GEOMETRY_TYPE.SUPERIOR_POST)\n .forEach((el) => {\n el.updateWorldMatrix(true, true);\n let boxEl = new Box3().setFromObject(el);\n if (boxPost.intersectsBox(boxEl)) {\n isIntersectPost = true;\n }\n });\n\n if (isIntersect && !isIntersectPost) {\n this.scene.add(bracketLeft);\n } else if (!isIntersectPost) {\n this.scene.add(postLeft);\n }\n }\n }\n }\n private addPostStepRakecut() {\n if (\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.STEP &&\n UI.rakeCutRightType != RAKECUT_TYPE.STEP\n ) {\n return;\n }\n\n const fitX = this.getContainerOffsetXToFitBraketToExistingWall();\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n let userDataPos = { rakecut: true };\n\n let offsetXL = -UI.totalBayLength / 2 + fitX;\n let offsetXR = UI.totalBayLength / 2 - this.geo_superiorPost.width + fitX;\n let offsetZF =\n UI.span +\n UI.multiSpan -\n UI.existingWidth1 / 2 -\n this.extraOffsetZ -\n this.geo_superiorPost.width;\n let scaleYF =\n this.utils.getHeightByAngle(\n UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n 1\n ) / this.geo_superiorPost.height;\n\n let moveRight = UI.rakeCutLeftHor - UI.overhangLeft;\n if (moveRight > 0) {\n offsetXL += moveRight;\n }\n\n let moveLeft = UI.rakeCutRightHor - UI.overhangRight;\n if (moveLeft > 0) {\n offsetXR -= moveLeft;\n }\n\n let posts: Array = [];\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n let offsetZB = offsetZF;\n let scaleYB = scaleYF;\n let moveBack = UI.rakeCutLeftVer;\n if (moveBack > 0) {\n offsetZB -= moveBack;\n scaleYB =\n this.utils.getHeightByAngle(\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n 1\n ) / this.geo_superiorPost.height;\n }\n\n let postFront = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n postFront.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: { ...userDataPos, left: true },\n views: views,\n };\n postFront.position.set(offsetXL, 0, offsetZF);\n postFront.scale.setY(scaleYF);\n posts.push(postFront);\n\n let postBack = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n postBack.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: { ...userDataPos, left: true },\n views: views,\n };\n postBack.position.set(offsetXL, 0, offsetZB);\n postBack.scale.setY(scaleYB);\n posts.push(postBack);\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n let offsetZB = offsetZF;\n let scaleYB = scaleYF;\n let moveBack = UI.rakeCutRightVer;\n if (moveBack > 0) {\n offsetZB -= moveBack;\n scaleYB =\n this.utils.getHeightByAngle(\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n 1\n ) / this.geo_superiorPost.height;\n }\n\n let postFront = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n postFront.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: { ...userDataPos, right: true },\n views: views,\n };\n postFront.position.set(offsetXR, 0, offsetZF);\n postFront.scale.setY(scaleYF);\n //this.scene.add(postFront);\n posts.push(postFront);\n\n let postBack = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n postBack.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: { ...userDataPos, right: true },\n views: views,\n };\n postBack.position.set(offsetXR, 0, offsetZB);\n postBack.scale.setY(scaleYB);\n //this.scene.add(postBack);\n posts.push(postBack);\n }\n\n for (let post of posts) {\n let boxPost = new Box3().setFromObject(post);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n if (isIntersect) {\n let height =\n post.scale.y * this.geo_superiorPost.height - UI.eaveHeight;\n let scaleY = height / this.geo_bracket.height;\n\n let bracket = new Mesh(\n this.geo_bracket.geometry,\n this.getBraketMaterial(height)\n );\n bracket.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n bracket.position.set(post.position.x, UI.eaveHeight, post.position.z);\n bracket.scale.setY(scaleY);\n this.scene.add(bracket);\n } else {\n this.scene.add(post);\n }\n }\n }\n public addSuperiorBeam(userDataPos: any) {\n let offsetZ = 0;\n let offsetY = 0;\n let offsetX = -UI.totalBayLength / 2 - UI.overhangLeft;\n\n const beamWidth = this.geo_superiorBeam.width;\n const offsetFitYWhenRoofUpstand =\n beamWidth * this.utils.tan(UI.patiosPitch);\n let beamLength = UI.totalBayLength + UI.overhangLeft + UI.overhangRight;\n let extraWallWidth =\n this.APP.existingWallManager.geo_existingWallW1.width +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n let views: Print2DView[];\n\n if (userDataPos.front) {\n offsetY =\n UI.eaveHeight +\n this.getBracketHeight(UI.span) -\n offsetFitYWhenRoofUpstand;\n offsetZ = UI.span - UI.existingWidth1 / 2 - this.extraOffsetZ;\n\n if (UI.multiSpan > 0) {\n offsetZ -= this.geo_superiorBeam.width / 2;\n } else {\n offsetZ -= this.geo_superiorBeam.width;\n }\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.back) {\n offsetY =\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.houseBeamHeight();\n offsetZ = -UI.existingWidth1 / 2 - this.extraOffsetZ;\n\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES &&\n this.MANAGER.cutoutCondition\n ) {\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n if (UI.existingWidth2 > 0) {\n offsetX += UI.existingLength2;\n beamLength =\n UI.totalBayLength +\n UI.overhangLeft +\n UI.overhangRight -\n UI.existingLength2;\n } else {\n offsetX += UI.existingLength2 - extraWallWidth;\n beamLength =\n UI.totalBayLength +\n UI.overhangLeft +\n UI.overhangRight -\n UI.existingLength2 +\n extraWallWidth;\n }\n\n offsetX += UI.overhangLeft;\n beamLength -= UI.overhangLeft;\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n beamLength =\n UI.totalBayLength +\n UI.overhangLeft +\n UI.overhangRight -\n UI.existingLength2 +\n extraWallWidth;\n if (UI.existingWidth2 > 0) {\n beamLength =\n UI.totalBayLength +\n UI.overhangLeft +\n UI.overhangRight -\n UI.existingLength2;\n }\n\n //offsetX -= UI.overhangRight;\n beamLength -= UI.overhangRight;\n } else if (UI.existingType == BUILDING_SIDE.BOTH) {\n offsetX +=\n (UI.totalBayLength -\n (this.APP.sldExistingLength.currentValue +\n this.APP.existingWallManager.geo_existingWallW1.width * 2)) /\n 2 -\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n beamLength =\n this.APP.sldExistingLength.currentValue +\n this.APP.existingWallManager.geo_existingWallW1.width * 2 +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK * 2;\n }\n }\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.multiSpan) {\n offsetY =\n UI.eaveHeight +\n this.getBracketHeight(UI.span + UI.multiSpan) -\n offsetFitYWhenRoofUpstand;\n offsetZ =\n UI.multiSpan +\n UI.span -\n UI.existingWidth1 / 2 -\n this.geo_superiorBeam.width -\n this.extraOffsetZ;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.cutout) {\n offsetY =\n UI.eaveHeight +\n this.getBracketHeight(UI.existingWidth1) +\n this.houseBeamHeight() -\n offsetFitYWhenRoofUpstand;\n offsetZ = UI.existingWidth1 / 2 - this.extraOffsetZ;\n beamLength =\n UI.existingLength2 -\n this.APP.existingWallManager.geo_existingWallW1.width;\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n if (UI.existingWidth2 > 0) {\n // beamLength += extraWallWidth;\n } else {\n beamLength -= extraWallWidth;\n }\n\n beamLength +=\n UI.overhangLeft +\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width;\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n views = [\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n offsetX =\n UI.totalBayLength / 2 +\n UI.overhangRight -\n UI.existingLength2 -\n CONST.EAVE_OFFSET_BACK +\n extraWallWidth;\n if (UI.existingWidth2 > 0) {\n // beamLength += extraWallWidth;\n offsetX =\n UI.totalBayLength / 2 +\n UI.overhangRight -\n UI.existingLength2 -\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK +\n extraWallWidth;\n } else {\n offsetX =\n UI.totalBayLength / 2 +\n UI.overhangRight -\n UI.existingLength2 +\n this.APP.existingWallManager.geo_existingWallW1.width +\n extraWallWidth;\n beamLength -= extraWallWidth;\n }\n\n offsetX -=\n UI.overhangRight +\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width;\n beamLength +=\n UI.overhangRight +\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width;\n } else if (UI.existingType == BUILDING_SIDE.BOTH) {\n beamLength = UI.existingLength2 - extraWallWidth;\n\n if (UI.existingWidth2 > 0) {\n beamLength = UI.existingLength2;\n }\n }\n }\n\n //rake cut\n if (\n (UI.multiSpan <= 0 && userDataPos.front) ||\n (UI.multiSpan > 0 && userDataPos.multiSpan)\n ) {\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n offsetX += this.beamLeftCutSizeInfo.l;\n beamLength -= this.beamLeftCutSizeInfo.l;\n } else if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n offsetX += UI.rakeCutLeftHor;\n beamLength -= UI.rakeCutLeftHor;\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n beamLength -= this.beamRightCutSizeInfo.l;\n } else if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n beamLength -= UI.rakeCutRightHor;\n }\n }\n\n const fitX = this.getContainerOffsetXToFitBraketToExistingWall();\n offsetX += fitX;\n if (userDataPos.front || userDataPos.multiSpan) {\n this.cutStandardBeamByCutBeamWithinBayControl(\n this.geo_superiorBeam,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetX, offsetY, offsetZ),\n new Vector3(),\n views,\n 1,\n userDataPos,\n this.geoHouseBeamJoint\n );\n } else {\n this.cutStandardBeamToEqualLengthBeam(\n userDataPos.back || userDataPos.cutout\n ? this.geo_superiorHouseBeam\n : this.geo_superiorBeam,\n userDataPos.back || userDataPos.cutout\n ? this.geo_houseBeamEndCap\n : this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetX, offsetY, offsetZ),\n new Vector3(),\n views,\n 1,\n userDataPos,\n userDataPos.back || userDataPos.cutout\n ? this.geoHouseBeamJoint\n : this.geoBeamJoint\n );\n }\n\n //Add one more beam cutout right\n if (userDataPos.cutout && UI.existingType == 3) {\n offsetX = UI.totalBayLength / 2 - beamLength;\n this.cutStandardBeamToEqualLengthBeam(\n this.geo_superiorHouseBeam,\n this.geo_houseBeamEndCap,\n beamLength,\n new Vector3(offsetX, offsetY, offsetZ),\n new Vector3(),\n views,\n 1,\n userDataPos,\n this.geoHouseBeamJoint\n );\n }\n }\n private cutStandardBeamToEqualLengthBeam(\n beamGeo: GeometryInfo,\n beamCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n userDataPos: any,\n jointGeo: GeometryInfo\n ) {\n const beamStartX = pos.x;\n const beamEndX = pos.x + length;\n\n const numOfBeam = Math.ceil(\n length / EXISTING_BUILDING_CONFIG.MAXIMUM_LENGTH_PER_BEAM\n );\n const lengthPerBeam = Math.abs(beamEndX - beamStartX) / numOfBeam;\n for (let i = 0; i < numOfBeam; i++) {\n let beamGroup = this.utils.createBeamGroup(\n beamGeo,\n beamCapGeo,\n lengthPerBeam,\n new Vector3(beamStartX + lengthPerBeam * i, pos.y, pos.z),\n rot,\n views,\n directionOffset,\n userDataPos,\n UI.beamLayoutShow,\n {\n hasStartCap: UI.beamType == 0 && i == 0,\n hasEndCap:\n UI.beamType == 0 &&\n (i == numOfBeam - 1 || (i == 0 && numOfBeam == 1)),\n hasStartJoint: i !== 0,\n hasEndJoint: false,\n jointGeo: jointGeo,\n }\n );\n this.scene.add(beamGroup);\n }\n }\n private cutStandardBeamByCutBeamWithinBayControl(\n beamGeo: GeometryInfo,\n beamCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n userDataPos: any,\n jointGeo\n ) {\n const fitX = this.getContainerOffsetXToFitBraketToExistingWall();\n // Map list cut beam here\n const beamStartX = pos.x;\n const beamEndX = pos.x + length;\n\n let endOfBayX = -UI.totalBayLength / 2 + fitX;\n let startCutBeamX = beamStartX;\n let endCutBeamX = beamStartX;\n\n const beams = this.utils.getListSeperateBeamsByBays(\n endOfBayX,\n beamStartX,\n beamEndX,\n endCutBeamX,\n startCutBeamX\n );\n\n for (let i = 0; i < beams.length; i++) {\n endCutBeamX = beams[i][1];\n startCutBeamX = beams[i][0];\n let beamGroup = this.utils.createBeamGroup(\n beamGeo,\n beamCapGeo,\n endCutBeamX - startCutBeamX,\n new Vector3(startCutBeamX, pos.y, pos.z),\n rot,\n views,\n directionOffset,\n userDataPos,\n UI.beamLayoutShow,\n {\n hasStartCap: UI.beamType == 0 && i == 0,\n hasEndCap:\n UI.beamType == 0 &&\n (i == beams.length - 1 || (i == 0 && beams.length == 1)),\n hasStartJoint: i !== 0,\n hasEndJoint: false,\n jointGeo: jointGeo,\n }\n );\n this.scene.add(beamGroup);\n }\n }\n private addBeamAngelRakecut() {\n if (\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.ANGLE &&\n UI.rakeCutRightType != RAKECUT_TYPE.ANGLE\n ) {\n return;\n }\n\n const beamWidth = this.geo_superiorBeam.width;\n let offsetZ =\n UI.multiSpan + UI.span - UI.existingWidth1 / 2 - this.extraOffsetZ;\n let offsetY = this.utils.getHeightByAngle(\n UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.span + UI.multiSpan - beamWidth,\n UI.patiosPitch,\n 1\n );\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n let beamLength = this.beamLeftCutSizeInfo.m;\n\n //beam lenght can not go behind existing wall\n if (\n UI.rakeCutLeftVer + this.beamLeftCutSizeInfo.k_ >\n this.MANAGER.patiosLength\n ) {\n beamLength -= this.beamLeftCutSizeInfo.b;\n }\n\n let scaleZ = beamLength / this.geo_beamRakecutLeft.length;\n\n let offsetXStart = 0;\n let offsetXEnd = beamLength;\n let rotY = Math.atan(UI.rakeCutLeftHor / UI.rakeCutLeftVer);\n let rotX = this.utils.degreesToRadians(UI.patiosPitch);\n\n let offsetX =\n -UI.totalBayLength / 2 - UI.overhangLeft + this.beamLeftCutSizeInfo.l;\n const mesh = new Mesh(\n this.geo_beamRakecutLeft.geometry,\n MaterialManager.Instance().BEAM\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n };\n mesh.scale.setZ(scaleZ);\n\n let capL = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n capL.position.set(\n this.geo_beamEndCap.width / 2,\n 0,\n -(offsetXEnd + this.geo_beamEndCap.length / 2 - 2)\n );\n\n let capR = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capR.position.set(\n this.geo_beamEndCap.width / 2,\n 0,\n offsetXStart - this.geo_beamEndCap.length / 2 + 2\n );\n capR.rotateY(Math.PI);\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n angle: true,\n };\n if (UI.existingType == BUILDING_SIDE.RIGHT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.geo_bracket?.width || 0);\n offsetX -= fitZ;\n }\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.geo_bracket?.width || 0);\n offsetX += fitZ;\n }\n beamGroup.position.set(offsetX, offsetY, offsetZ);\n beamGroup.rotation.set(-rotX, rotY, 0);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n this.scene.add(beamGroup);\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n let beamLength = this.beamRightCutSizeInfo.m;\n\n //beam lenght can not go behind existing wall\n if (\n UI.rakeCutRightVer + this.beamRightCutSizeInfo.k_ >\n this.MANAGER.patiosLength\n ) {\n beamLength -= this.beamRightCutSizeInfo.b;\n }\n\n let scaleZ = beamLength / this.geo_beamRakecutLeft.length;\n\n let offsetXStart = 0;\n let offsetXEnd = beamLength;\n let rotY = Math.atan(UI.rakeCutRightHor / UI.rakeCutRightVer);\n let rotX = this.utils.degreesToRadians(UI.patiosPitch);\n\n let offsetX =\n UI.totalBayLength / 2 + UI.overhangRight - this.beamRightCutSizeInfo.l;\n const mesh = new Mesh(\n this.geo_beamRakecutRight.geometry,\n MaterialManager.Instance().BEAM\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n };\n mesh.scale.setZ(scaleZ);\n\n let capL = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capL.position.set(\n -this.geo_beamEndCap.width / 2,\n 0,\n -(offsetXEnd + this.geo_beamEndCap.length / 2 - 2)\n );\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let capR = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capR.position.set(\n -this.geo_beamEndCap.width / 2,\n 0,\n offsetXStart - this.geo_beamEndCap.length / 2 + 2\n );\n capR.rotateY(Math.PI);\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n angle: true,\n };\n if (UI.existingType == BUILDING_SIDE.RIGHT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.geo_bracket?.width || 0);\n offsetX -= fitZ;\n }\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.geo_bracket?.width || 0);\n offsetX += fitZ;\n }\n beamGroup.position.set(offsetX, offsetY, offsetZ);\n beamGroup.rotation.set(-rotX, -rotY, 0);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n this.scene.add(beamGroup);\n }\n }\n private addBeamStepRakecut() {\n if (\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.STEP &&\n UI.rakeCutRightType != RAKECUT_TYPE.STEP\n ) {\n return;\n }\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n let offsetXL = -UI.totalBayLength / 2 - UI.overhangLeft;\n let offsetXR = UI.totalBayLength / 2 + UI.overhangRight;\n\n const beamWidth = this.geo_superiorBeam.width;\n\n let offsetY = this.utils.getHeightByAngle(\n UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.span + UI.multiSpan - beamWidth,\n UI.patiosPitch,\n 1\n );\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n let offsetZ =\n UI.span + UI.multiSpan - this.extraOffsetZ - UI.existingWidth1 / 2;\n let moveBack = UI.rakeCutLeftVer;\n if (moveBack > 0) {\n offsetZ -= moveBack;\n offsetY = this.utils.getHeightByAngle(\n UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.span + UI.multiSpan - moveBack - beamWidth,\n UI.patiosPitch,\n 1\n );\n }\n\n let beamLength = UI.rakeCutLeftHor + this.geo_superiorPost.width;\n if (UI.rakeCutLeftHor < UI.overhangLeft) {\n beamLength = UI.overhangLeft + this.geo_superiorPost.width;\n }\n\n let scaleX = beamLength / this.geo_beamStepRakecutLeft.length;\n\n let beam = new Mesh(\n this.geo_beamStepRakecutLeft.geometry,\n MaterialManager.Instance().BEAM\n );\n beam.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n };\n beam.scale.setX(scaleX);\n\n let capL = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capL.position.set(\n this.geo_beamEndCap.length / 2 - 2,\n 0,\n -this.geo_beamEndCap.width / 2\n );\n capL.rotateY(Math.PI / 2);\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let capR = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capR.position.set(\n beamLength + this.geo_beamEndCap.length / 2 - 2,\n 0,\n -this.geo_beamEndCap.width / 2\n );\n capR.rotateY(-Math.PI / 2);\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n };\n const fitX = this.getContainerOffsetXToFitBraketToExistingWall();\n offsetXL += fitX;\n beamGroup.position.set(offsetXL, offsetY, offsetZ);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(beam, capL, capR);\n } else {\n beamGroup.add(beam);\n }\n this.scene.add(beamGroup);\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n let offsetZ =\n UI.span + UI.multiSpan - this.extraOffsetZ - UI.existingWidth1 / 2;\n let moveBack = UI.rakeCutRightVer;\n if (moveBack > 0) {\n offsetZ -= moveBack;\n offsetY = this.utils.getHeightByAngle(\n UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.span + UI.multiSpan - moveBack - beamWidth,\n UI.patiosPitch,\n 1\n );\n }\n\n let beamLength = UI.rakeCutRightHor + this.geo_superiorPost.width;\n if (UI.rakeCutRightHor < UI.overhangRight) {\n beamLength = UI.overhangRight + this.geo_superiorPost.width;\n }\n\n let scaleX = beamLength / this.geo_beamStepRakecutRight.length;\n\n let beam = new Mesh(\n this.geo_beamStepRakecutRight.geometry,\n MaterialManager.Instance().BEAM\n );\n beam.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n };\n beam.scale.setX(scaleX);\n\n let capL = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capL.position.set(\n -(beamLength + this.geo_beamEndCap.length / 2 - 2),\n 0,\n -this.geo_beamEndCap.width / 2\n );\n capL.rotateY(Math.PI / 2);\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let capR = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capR.position.set(\n -(this.geo_beamEndCap.length / 2 - 2),\n 0,\n -this.geo_beamEndCap.width / 2\n );\n capR.rotateY(-Math.PI / 2);\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n };\n const fitX = this.getContainerOffsetXToFitBraketToExistingWall();\n offsetXR += fitX;\n beamGroup.position.set(offsetXR, offsetY, offsetZ);\n //beamGroup.rotateY(Math.PI);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(beam, capL, capR);\n } else {\n beamGroup.add(beam);\n }\n\n this.scene.add(beamGroup);\n }\n }\n public getBracketHeight(offset): number {\n return (\n this.utils.tan(UI.patiosPitch) * offset +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket()\n );\n }\n\n public destroy(): void {\n this.unregisterEvent();\n }\n\n private registerEvent(): void {\n this.eventHandleId = this.uiChangedDefer.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldExistingWallHeight,\n this.APP.sldEaveWidth,\n this.APP.sldFasciaDepth,\n\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n\n this.APP.sltExistingType,\n this.APP.dialogEditBay,\n\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldFlyOverBracketHeight,\n\n this.APP.sltColourBeam,\n this.APP.sltColourPost,\n this.APP.sltColourBracket,\n this.APP.sltColourFasciaBracket,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n ];\n //this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n\n this.controlsToRegisterEvent2 = [\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltHouseBeamSize,\n this.APP.sltColumnType,\n ];\n this.controlsToRegisterEvent2.forEach((c) =>\n c.addAction(this.objectSizeChangedHandle)\n );\n }\n private unregisterEvent(): void {\n // this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n // this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach((c) =>\n c.removeAction(this.objectSizeChangedHandle)\n );\n this.controlsToRegisterEvent2 = undefined;\n }\n\n private objectSizeChanged(pre: number, cur: number) {\n this.optimize().then(() => {\n this.load();\n this.MANAGER.loadRafterBeamAndInternalBeam(\n this.MANAGER.rafterBeamAndInternalBeamInfo\n );\n });\n }\n uiChangedDefer(previousValue: number, currentValue: number) {\n if (this.APP.sltCutOut.currentValue == 1) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => {\n this.load();\n }, this.deferTimeout);\n } else {\n this.load();\n }\n }\n}\n","import { Scene, Mesh, Object3D, Material, Group, FontLoader, TextBufferGeometry, PlaneBufferGeometry, Vector3, BoxHelper, Box3Helper, Matrix4, Box3, Geometry, LineSegments, LineBasicMaterial, Color, BoxBufferGeometry, Line, MeshBasicMaterial, Line3, Points, PointsMaterial, BufferGeometry } from \"three\";\nimport { HomeComponent as AppComponent, HomeComponent } from 'src/app-ribspan/containers/home/home.component';\nimport { Util } from '../utils';\nimport { MaterialManager } from '../material.manager';\nimport { GeometryInfo, ViewType, LineType, IBay, Printing2DGeometry, Printing2DLine, Print2DText, Printing2DGeometryType } from 'src/app/core/models';\nimport { GEOMETRY_TYPE, DIMENSION_LOCATION, DIMENSION_LABEL_TYPE } from 'src/app/app.config';\nimport { environment } from 'src/environments/environment';\nimport { PatiosBackFlyOverManager } from '.';\nimport { GeometryManager } from '../geometry.manager';\nimport { FIT_DIMENSION, FIT_DIMENSION_FAR, BUILDING_SIDE, PANEL_DIRECTION, RAKECUT_TYPE, FIT_FLYOVER_BRAKET_ON_ROOF } from 'src/app/app.constants';\nimport Dimension, { AddDimensionOptions } from \"src/app-ribspan/models/Dimension\";\nimport { UI } from \"../ui\";\n\nexport class DimensionManager {\n private scene: Scene;\n private APP: AppComponent;\n private MANAGER: PatiosBackFlyOverManager;\n public listText: THREE.Object3D[] = [];\n private utils: Util;\n\n private eventHandleId: any;\n\n private material: Material;\n\n private materialManager: MaterialManager;\n\n private dimensionPatiosFrontBottom: Object3D;\n private dimensionPatiosFrontRight: Object3D;\n\n private dimensionPatiosRightBottom: Object3D;\n private dimensionPatiosRightLeft: Object3D;\n private dimensionPatiosRightRight: Object3D;\n\n private dimensionPatiosLeftBottom: Object3D;\n private dimensionPatiosLeftRight: Object3D;\n private dimensionPatiosLeftLeft: Object3D;\n\n private dimensionPatiosPlanRight: Object3D;\n private dimensionPatiosPlanBottom: Object3D;\n private dimensionPatiosPlanLeft: Object3D;\n private dimensionPlanMiddle: Object3D;\n private dimensionPlanMidleLeft: Object3D;\n\n private dimensionPatiosLowerHeightDim: Object3D;\n private dimensionPatiosFlyOverBraketHeightDim: Object3D;\n\n private lineCapGeo: GeometryInfo;\n private lineGeo: GeometryInfo;\n private textGeo: TextBufferGeometry;\n\n private dimensionDistance = 1500;\n private dimensionDistance2 = 500;\n private dimensionDistance3 = 300;\n\n private textDistance = 5000;\n\n private totalBaySize: number;\n private box: Box3;\n\n private font: any\n private textParameter: any;\n private isReady = false;\n\n private controlsToRegisterEvent: Array;\n private geometryManager: GeometryManager;\n\n private options : AddDimensionOptions;\n private startPos: Vector3;\n private startMatrix: Matrix4;\n private startBayLength: number;\n\n constructor(app: AppComponent, manager: PatiosBackFlyOverManager) {\n this.utils = new Util();\n this.materialManager = MaterialManager.Instance();\n this.APP = app;\n this.MANAGER = manager;\n this.scene = this.APP.scene;\n this.material = MaterialManager.Instance().DIMENSION_TEXT;\n this.geometryManager = GeometryManager.Instance();\n //this.registerEvent();\n }\n\n\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n this.lineGeo = this.geometryManager.getDimensionLine();\n this.lineCapGeo = this.geometryManager.getDimensionCap();\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.unload();\n \n var loader = new FontLoader();\n\n this.dimensionPatiosFrontBottom = new Group();\n this.dimensionPatiosFrontBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n // this.dimensionPatiosFrontBottom.rotation.set(0, Math.PI, 0);\n this.dimensionPatiosFrontBottom.visible = false;\n\n this.dimensionPatiosFrontRight = new Group();\n this.dimensionPatiosFrontRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosFrontRight.rotation.set(0, 0, -Math.PI / 2);\n this.dimensionPatiosFrontRight.visible = false;\n\n this.dimensionPatiosRightBottom = new Group();\n this.dimensionPatiosRightBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightBottom.rotation.set(0, -Math.PI / 2, 0);\n this.dimensionPatiosRightBottom.visible = false;\n\n this.dimensionPatiosRightLeft = new Group();\n this.dimensionPatiosRightLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightLeft.rotation.set(0, -Math.PI / 2, -Math.PI / 2);\n this.dimensionPatiosRightLeft.visible = false;\n\n this.dimensionPatiosRightRight = new Group();\n this.dimensionPatiosRightRight.rotation.set(0, -Math.PI / 2, -Math.PI / 2);\n this.dimensionPatiosRightRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightRight.visible = false;\n\n this.dimensionPatiosLeftBottom = new Group();\n this.dimensionPatiosLeftBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftBottom.rotation.set(0, -Math.PI / 2, 0);\n this.dimensionPatiosLeftBottom.visible = false;\n\n this.dimensionPatiosLeftRight = new Group();\n this.dimensionPatiosLeftRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftRight.rotation.set(Math.PI / 2, -Math.PI / 2, 0);\n this.dimensionPatiosLeftRight.visible = false;\n\n this.dimensionPatiosLeftLeft = new Group();\n this.dimensionPatiosLeftLeft.rotation.set(0, -Math.PI / 2, Math.PI / 2);\n this.dimensionPatiosLeftLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftLeft.visible = false;\n\n //testing\n // [\n // this.dimensionPatiosFrontBottom,\n // this.dimensionPatiosFrontRight,\n // this.dimensionPatiosRightBottom,\n // this.dimensionPatiosRightLeft,\n // this.dimensionPatiosRightRight,\n // this.dimensionPatiosLeftBottom,\n // this.dimensionPatiosLeftRight,\n // this.dimensionPatiosLeftLeft,\n // ].forEach(g => { g.visible = true });\n\n this.dimensionPatiosPlanRight = new Group();\n this.dimensionPatiosPlanRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosPlanRight.rotation.set(-Math.PI / 2, Math.PI, -Math.PI / 2);\n\n this.dimensionPatiosPlanBottom = new Group();\n this.dimensionPatiosPlanBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosPlanBottom.rotation.set(-Math.PI / 2, 0, 0);\n\n this.dimensionPatiosPlanLeft = new Group();\n this.dimensionPatiosPlanLeft.userData = { type: GEOMETRY_TYPE.DIMENSION , position: { left: true } };\n this.dimensionPatiosPlanLeft.rotation.set(-Math.PI / 2, 0, -Math.PI / 2);\n\n this.dimensionPlanMiddle = new Group();\n this.dimensionPlanMidleLeft = new Group();\n\n this.dimensionPatiosLowerHeightDim = new Group();\n this.dimensionPatiosLowerHeightDim.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLowerHeightDim.rotation.set(0, 0, Math.PI / 2);\n \n this.dimensionPatiosFlyOverBraketHeightDim = new Group();\n this.dimensionPatiosFlyOverBraketHeightDim.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosFlyOverBraketHeightDim.rotation.set(0, 0, Math.PI / 2);\n\n this.scene.add(this.dimensionPatiosPlanRight);\n this.scene.add(this.dimensionPatiosPlanLeft);\n this.scene.add(this.dimensionPatiosFrontRight);\n this.APP.patiosManager.patiosGroup.add(\n this.dimensionPatiosFrontBottom,\n //this.dimensionPatiosFrontRight,\n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom,\n this.dimensionPatiosLeftRight,\n this.dimensionPatiosLeftLeft,\n this.dimensionPatiosPlanBottom,\n this.dimensionPlanMiddle,\n this.dimensionPlanMidleLeft,\n this.dimensionPatiosLowerHeightDim,\n this.dimensionPatiosFlyOverBraketHeightDim,\n );\n\n loader.load(environment.modelBaseUrl + '/assets/fonts/helvetiker_regular.typeface.json', (font) => {\n this.font = font;\n\n this.textParameter = {\n font: this.font,\n size: 200,\n height: 5,\n curveSegments: 10\n };\n this.options = {\n container: HomeComponent.ins.scene,\n start: new Vector3(),\n end: new Vector3(),\n linePos: new Vector3(),\n views: [],\n allowDrag: true,\n textParameter: this.textParameter,\n textPos: new Vector3(),\n labelType: null,\n fitZ: 10,\n hasTextClone: false,\n axis: 'x',\n lineLength: 0,\n subtype: null,\n textUserData: null,\n onDragCallback: this.onDimDrag.bind(this),\n onDragStartCallback: this.onDimDragStart.bind(this),\n }\n\n this.isReady = true;\n this.draw();\n resolve();\n })\n });\n }\n\n public unload() {\n this.scene.remove(this.dimensionPatiosPlanRight);\n this.scene.remove(this.dimensionPatiosPlanLeft);\n this.scene.remove(this.dimensionPatiosFrontRight);\n if (this.APP.patiosManager && this.APP.patiosManager.patiosGroup) {\n this.APP.patiosManager.patiosGroup.remove(\n this.dimensionPatiosFrontBottom,\n //this.dimensionPatiosFrontRight,\n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom,\n this.dimensionPatiosLeftRight,\n this.dimensionPatiosLeftLeft,\n this.dimensionPatiosPlanBottom,\n this.dimensionPlanMiddle,\n this.dimensionPlanMidleLeft,\n this.dimensionPatiosLowerHeightDim,\n this.dimensionPatiosFlyOverBraketHeightDim,\n );\n }\n }\n\n public draw() {\n if (!this.isReady) {\n return;\n }\n this.dimensionPatiosLowerHeightDim.children = this.dimensionPatiosLowerHeightDim.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.LOWER_HEIGHT_DIM\n );\n this.dimensionPatiosFlyOverBraketHeightDim.children = this.dimensionPatiosFlyOverBraketHeightDim.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.BRAKET_HEIGHT_DIM\n );\n // this.dimensionPatiosPlanBottom.remove(...this.dimensionPatiosPlanBottom.children);\n // this.dimensionPatiosPlanRight.remove(...this.dimensionPatiosPlanRight.children);\n // this.dimensionPatiosPlanLeft.remove(...this.dimensionPatiosPlanLeft.children);\n this.dimensionPatiosPlanBottom.children = this.dimensionPatiosPlanBottom.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.LEFT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.RIGHT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY\n );\n this.dimensionPatiosPlanRight.children = this.dimensionPatiosPlanRight.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.MULTI_SPAN\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.FRONT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.BACK_OVERHANG\n );\n this.dimensionPatiosPlanLeft.children = this.dimensionPatiosPlanLeft.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL \n )\n this.dimensionPatiosFrontBottom.remove(...this.dimensionPatiosFrontBottom.children);\n this.dimensionPatiosFrontRight.remove(...this.dimensionPatiosFrontRight.children);\n this.dimensionPatiosLeftBottom.remove(...this.dimensionPatiosLeftBottom.children);\n this.dimensionPatiosLeftRight.remove(...this.dimensionPatiosLeftRight.children);\n this.dimensionPatiosLeftLeft.remove(...this.dimensionPatiosLeftLeft.children);\n this.dimensionPatiosRightBottom.remove(...this.dimensionPatiosRightBottom.children);\n this.dimensionPatiosRightLeft.remove(...this.dimensionPatiosRightLeft.children);\n this.dimensionPatiosRightRight.remove(...this.dimensionPatiosRightRight.children);\n this.dimensionPlanMiddle.remove(...this.dimensionPlanMiddle.children);\n this.dimensionPlanMidleLeft.remove(...this.dimensionPlanMidleLeft.children);\n\n\n this.totalBaySize = 0;\n for (let b of this.APP.dialogEditBay.listBay) {\n this.totalBaySize += b.value;\n }\n\n this.box = this.utils.getSceneBox();\n\n this.drawDimensionLowerHeightDim();\n this.drawDimensionFlyOverBraketHeightDim();\n\n this.drawDimensionPatiosPlanBottom();\n this.drawDimensionPatiosPlanRight();\n this.drawDimensionPatiosPlanLeft();\n\n this.drawDimensionPatiosFrontBottom();\n this.drawDimensionPatiosFrontRight();\n\n this.drawDimensionPatiosLeftBottom();\n this.drawDimensionPatiosLeftRight();\n this.drawDimensionPatiosLeftLeft();\n\n this.drawDimensionPatiosRightBottom();\n this.drawDimensionPatiosRightLeft();\n this.drawDimensionPatiosRightRight();\n\n this.drawDimensionMidle();\n this.drawDimensionMidleLeft();\n \n //this.getOutlines();\n\n this.APP.dimensionManager.draw();\n }\n private totalHeightFromEaveHeightToTopOfExistingRoof(){\n const height = \n this.geometryManager.EAVE.EAVE.height \n + UI.fasciaDepth \n + UI.eaveWidth * this.utils.tan(UI.existingRoofPitch) \n + this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.height / this.utils.cos(UI.existingRoofPitch)\n \n return height\n }\n private totalHeightFromEaveHeightToTopOfFlyoverBraket(){\n const height = this.totalHeightFromEaveHeightToTopOfExistingRoof() + UI.braketHeight - FIT_FLYOVER_BRAKET_ON_ROOF;\n \n return height\n }\n private drawDimensionFlyOverBraketHeightDim(){\n const bracketHeight =(UI.braketHeight + this.MANAGER.columnAndPurlinManager.houseBeamHeight())\n const offsetZBackPos = - UI.existingWidth1 / 2 - this.MANAGER.columnAndPurlinManager.extraOffsetZ - FIT_DIMENSION_FAR;\n\n this.dimensionPatiosFlyOverBraketHeightDim.position.set(0, UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfExistingRoof() - FIT_FLYOVER_BRAKET_ON_ROOF + bracketHeight / 2, offsetZBackPos);\n\n let textStr = this.utils.getDimensionValue(bracketHeight);\n let options : AddDimensionOptions = {\n ... this.options,\n lineLength: bracketHeight,\n container: this.dimensionPatiosFlyOverBraketHeightDim,\n views: [],\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, -200, 0),\n textRotation: new Vector3(Math.PI, 0, 0),\n labelType: DIMENSION_LABEL_TYPE.BRAKET_HEIGHT_DIM,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [] },\n allowDrag: false\n }\n let dimBay = this.dimensionPatiosFlyOverBraketHeightDim.children.find(el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.BRAKET_HEIGHT_DIM\n ) as Dimension;\n if(!dimBay){\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n\n private drawDimensionLowerHeightDim(){\n const frontPostHeight = UI.eaveHeight +\n this.MANAGER.columnAndPurlinManager.getBracketHeight(UI.span + UI.multiSpan)\n const offsetZFrontPos = UI.span + UI.multiSpan - UI.existingWidth1 / 2 - this.MANAGER.columnAndPurlinManager.extraOffsetZ + FIT_DIMENSION;\n\n this.dimensionPatiosLowerHeightDim.position.set(0, frontPostHeight / 2, offsetZFrontPos);\n\n let textStr = this.utils.getDimensionValue(frontPostHeight);\n let options : AddDimensionOptions = {\n ... this.options,\n lineLength: frontPostHeight,\n container: this.dimensionPatiosLowerHeightDim,\n views: [],\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, 200, 0),\n labelType: DIMENSION_LABEL_TYPE.LOWER_HEIGHT_DIM,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [] },\n allowDrag: false\n }\n let dimBay = this.dimensionPatiosLowerHeightDim.children.find(el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.LOWER_HEIGHT_DIM\n ) as Dimension;\n if(!dimBay){\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n private drawDimensionMidleLeft() {\n let offsetX = 0;\n let offsetZ = -this.APP.sldExistingWidth1.currentValue / 2 + 500;\n let origin = new Vector3(0, 0, 0);\n let head = new Vector3(0, 0, 1000);\n let hand1 = new Vector3(-50, 0, 950);\n let hand2 = new Vector3(50, 0, 950);\n\n //arrow\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n //let material = new LineBasicMaterial({ color: 0x0000ff });\n let geoLine = new Geometry();\n geoLine.vertices.push(origin);\n geoLine.vertices.push(head);\n\n geoLine.vertices.push(head);\n geoLine.vertices.push(hand1);\n\n geoLine.vertices.push(hand1);\n geoLine.vertices.push(hand2);\n\n geoLine.vertices.push(hand2);\n geoLine.vertices.push(head);\n let dim = new Line(geoLine);\n dim.userData = { type: \"Arrow\", views: views };\n\n //text of degree\n let textStr = \"Panel direction\";\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, 0, 0) };\n text.position.setZ(500);\n text.position.setX(200);\n\n dim.visible = false;\n text.visible = false;\n\n this.dimensionPlanMidleLeft.add(dim);\n this.dimensionPlanMidleLeft.add(text);\n\n\n if (this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT) {\n text.position.set(-200, 0, 500);\n this.dimensionPlanMidleLeft.rotation.set(0, -Math.PI / 2, 0);\n this.dimensionPlanMidleLeft.position.set(offsetX + 500, 0, offsetZ);\n }\n else {\n this.dimensionPlanMidleLeft.rotation.set(0, Math.PI / 2, 0);\n this.dimensionPlanMidleLeft.position.set(-offsetX - 500, 0, offsetZ);\n }\n }\n private drawDimensionMidle() {\n let offsetZ = this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue / 2 - this.APP.sldExistingWidth1.currentValue / 2;\n let origin = new Vector3(0, 0, 0);\n let head = new Vector3(0, 0, -1000);\n let hand1 = new Vector3(-50, 0, -950);\n let hand2 = new Vector3(50, 0, -950);\n\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n let material = new LineBasicMaterial({ color: 0x0000ff });\n let geoLine = new Geometry();\n geoLine.vertices.push(origin);\n geoLine.vertices.push(head);\n\n geoLine.vertices.push(head);\n geoLine.vertices.push(hand1);\n\n geoLine.vertices.push(hand1);\n geoLine.vertices.push(hand2);\n\n geoLine.vertices.push(hand2);\n geoLine.vertices.push(head);\n let dim = new Line(geoLine, material);\n dim.userData = { type: \"Arrow\", views: views };\n\n\n //text of degree\n let textStr = this.APP.sltRoofPitch.currentValue + ' degree';\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, Math.PI / 2, 0) };\n text.position.setZ(-500);\n text.position.setX(200);\n\n dim.visible = false;\n text.visible = false;\n\n this.dimensionPlanMiddle.add(dim);\n this.dimensionPlanMiddle.add(text);\n\n this.dimensionPlanMiddle.position.set(0, 0, offsetZ);\n }\n private drawDimensionPatiosPlanBottom() {\n let offsetX = -this.totalBaySize / 2;\n //let offsetZ = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance3 - this.APP.sldExistingWidth1.currentValue/2;\n //if(this.APP.sldExistingWidth1.currentValue > this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue){\n // offsetZ = this.APP.sldExistingWidth1.currentValue/2 + this.dimensionDistance2;\n // if(this.APP.sldExistingLength2.currentValue > 0){\n // offsetZ += 500;\n // }\n //}\n\n //let offsetZ = this.box.max.z + this.dimensionDistance2;\n\n\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n\n //this.dimensionPatiosPlanBottom.position.setZ(offsetZ);\n\n this.dimensionPatiosPlanBottom.children = this.dimensionPatiosPlanBottom.children.filter(el => \n el.userData?.groupType != DIMENSION_LABEL_TYPE.BAY\n || (el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY && el.userData?.bayNum < HomeComponent.ins.dialogEditBay.listBay.length)\n );\n\n for (let i = 0; i <= this.APP.dialogEditBay.listBay.length; i++) {\n let b: IBay = { index: 0, value: 0, isCut: false };\n if (i < this.APP.dialogEditBay.listBay.length) {\n b = this.APP.dialogEditBay.listBay[i];\n }\n\n // let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n // cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n // cap2.position.setX(offsetX);\n // this.dimensionPatiosPlanBottom.add(cap2);\n\n if (i < this.APP.dialogEditBay.listBay.length) {\n let textStr = this.utils.getDimensionValue(b.value);\n let options : AddDimensionOptions = {... this.options,\n lineLength: b.value,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(offsetX + b.value / 2, 0, 0),\n textPos: new Vector3(offsetX + b.value / 2, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.BAY,\n bayNum: i,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, position: { bottom: true } }\n }\n let dimBay = this.dimensionPatiosPlanBottom.children.find(el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY \n && el.userData?.bayNum == i\n ) as Dimension;\n if(!dimBay){\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n offsetX += b.value;\n }\n\n //rakecut\n if(this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE){\n let _offsetX = -this.APP.dialogEditBay.totalBaySize/2 + this.APP.sldLeftCutHorizontal.currentValue/2 - this.APP.sldLeftOverhang.currentValue;\n let options : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldLeftCutHorizontal.currentValue,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(_offsetX, 500, 0),\n textPos: new Vector3(_offsetX, 300, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL,\n subtype: GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT\n }\n let dimRake = this.dimensionPatiosPlanBottom.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL) as Dimension;\n if(!dimRake){\n new Dimension(options);\n } else {\n dimRake.update(options);\n }\n } else {\n this.dimensionPatiosPlanBottom.children = this.dimensionPatiosPlanBottom.children.filter(el => el.userData?.groupType != DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL)\n }\n if(this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE){\n let _offsetX = this.APP.dialogEditBay.totalBaySize/2 - this.APP.sldRightCutHorizontal.currentValue/2 + this.APP.sldRightOverhang.currentValue;\n let options : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldRightCutHorizontal.currentValue,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(_offsetX, 500, 0),\n textPos: new Vector3(_offsetX, 500-200, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL,\n subtype: GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT\n }\n let dimRake = this.dimensionPatiosPlanBottom.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL) as Dimension;\n if(!dimRake){\n new Dimension(options);\n } else {\n dimRake.update(options);\n }\n } else {\n this.dimensionPatiosPlanBottom.children = this.dimensionPatiosPlanBottom.children.filter(el => el.userData?.groupType != DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL)\n }\n \n\n //Left over hang\n this.addOverhang(this.dimensionPatiosPlanBottom, offsetX, this.APP.sldLeftOverhang.currentValue, views, \"Left\", 0, \"z\", DIMENSION_LABEL_TYPE.LEFT_OVERHANG);\n this.addOverhang(this.dimensionPatiosPlanBottom, offsetX, this.APP.sldRightOverhang.currentValue, views, \"Right\", 0, \"z\", DIMENSION_LABEL_TYPE.RIGHT_OVERHANG);\n\n this.repositionDimension(this.dimensionPatiosPlanBottom, DIMENSION_LOCATION.PLAN_BOTTOM);\n }\n onDimDrag(event){\n this.utils.handlerDimDragEvent(event, this.startPos, this.startMatrix, this.startBayLength);\n this.startPos = event.object.position.clone();\n }\n onDimDragStart(event){\n this.startPos = event.object.position.clone();\n this.startMatrix = event.object.matrixWorld.clone();\n if(event.object.userData?.dimType === DIMENSION_LABEL_TYPE.BAY){\n let bayNum = event.object.userData.bayNum;\n this.startBayLength = UI.listBay[+bayNum].value;\n }\n }\n private drawDimensionPatiosPlanRight() {\n\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n let offsetDimensionZ = this.APP.sldSpan.currentValue / 2\n - this.APP.sldExistingWidth1.currentValue / 2\n - this.APP.existingWallManager.geo_existingWallL1.width\n - this.APP.eaveManager.backOverhang;\n\n //let _dimensionDistane = this.dimensionDistance2;\n //if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n // if(this.APP.sldExistingWidth1.currentValue > 0){\n // _dimensionDistane = this.dimensionDistance;\n // }\n //}\n\n //let offsetDimensionX = this.getOffsetLeft(this.dimensionPatiosPlanRight) + this.dimensionDistance2; //this.box.max.x + this.dimensionDistance2;\n //let offsetDimensionX = this.totalBaySize/2 + this.APP.patiosManager.patiosGroup.position.x + _dimensionDistane;\n //if(this.APP.sldExistingLength.currentValue/2 > this.totalBaySize/2){\n // offsetDimensionX = this.APP.sldExistingLength.currentValue/2 + _dimensionDistane;\n //}\n\n //if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n // offsetDimensionX += this.APP.sldExistingLength2.currentValue;\n //}\n\n let dimLength = this.APP.sldSpan.currentValue;\n\n let textStr = this.utils.getDimensionValue(this.APP.sldSpan.currentValue);\n let options : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldSpan.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.SPAN,\n hasTextClone: false,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneRotation: new Vector3(0, Math.PI, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, -Math.PI, 0),\n fitZ: -10\n }\n let dimSpan = this.dimensionPatiosPlanRight.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN) as Dimension;\n if(!dimSpan){\n new Dimension(options);\n } else {\n dimSpan.update(options);\n }\n\n if (this.APP.sldMultiSpan.currentValue > 0) {\n let offsetX = this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue;\n // - this.APP.sldExistingWidth1.currentValue/2 \n // - this.APP.existingWallManager.geo_existingWallL1.width \n // - this.APP.eaveManager.backOverhang;\n dimLength += this.APP.sldMultiSpan.currentValue;\n\n let optionsMul : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldMultiSpan.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue / 2, 0, 0),\n textPos: new Vector3(this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue / 2, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.MULTI_SPAN,\n hasTextClone: false,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneRotation: new Vector3(0, Math.PI, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, -Math.PI, 0),\n fitZ: -10\n }\n let dimMul = this.dimensionPatiosPlanRight.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.MULTI_SPAN) as Dimension;\n if(!dimMul){\n new Dimension(optionsMul);\n } else {\n dimMul.update(optionsMul);\n }\n } else {\n this.dimensionPatiosPlanRight.children = this.dimensionPatiosPlanRight.children.filter(el => el.userData?.groupType != DIMENSION_LABEL_TYPE.MULTI_SPAN)\n }\n\n let extraDistance = 0;\n //----Rake cut\n if(this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE){\n extraDistance = 500;\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n\n let offsetZ = dimLength/2 + UI.multiSpan / 2 + this.APP.sldFrontOverhang.currentValue - this.APP.sldRightCutVertical.currentValue/2;\n\n let optionsRake : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldRightCutVertical.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(offsetZ, 500, 0),\n textPos: new Vector3(offsetZ, 300, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL,\n textRotation: new Vector3( 0, Math.PI, 0),\n fitZ: -10,\n subtype: GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT\n }\n let dimRake = this.dimensionPatiosPlanRight.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL) as Dimension;\n if(!dimRake){\n new Dimension(optionsRake);\n } else {\n dimRake.update(optionsRake);\n }\n } else {\n this.dimensionPatiosPlanRight.children = this.dimensionPatiosPlanRight.children.filter(el => el.userData?.groupType != DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL)\n }\n //----End rake cut\n\n\n let offsetRight = this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue;\n let offsetLeft = this.APP.sldSpan.currentValue / 2;// + this.APP.sldMultiSpan.currentValue;\n\n this.addOverhang(this.dimensionPatiosPlanRight, offsetRight, this.APP.sldFrontOverhang.currentValue, views, \"Right\", Math.PI, \"y\", DIMENSION_LABEL_TYPE.FRONT_OVERHANG);\n this.addOverhang(this.dimensionPatiosPlanRight, offsetLeft, this.APP.sldBackOverhang.currentValue, views, \"Left\", Math.PI, \"y\", DIMENSION_LABEL_TYPE.BACK_OVERHANG);\n\n //this.dimensionPatiosPlanRight.position.set(this.MANAGER.boundingBox.max.x + this.dimensionDistance2, 0, offsetDimensionZ);\n // let offsetDimensionX = this.getOffsetLeft(this.dimensionPatiosPlanRight);\n //this.dimensionPatiosPlanRight.position.set(0, 0, offsetDimensionZ);\n\n this.repositionDimension(this.dimensionPatiosPlanRight, DIMENSION_LOCATION.PLAN_RIGHT, extraDistance);\n }\n private drawDimensionPatiosPlanLeft(){\n if(this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.NONE){\n this.dimensionPatiosPlanLeft.children = this.dimensionPatiosPlanLeft.children.filter(el => el.userData?.groupType != DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL)\n return;\n }\n\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n\n let offsetDimensionZ = this.APP.sldSpan.currentValue\n + this.APP.sldMultiSpan.currentValue\n + this.APP.sldFrontOverhang.currentValue\n - this.APP.sldExistingWidth1.currentValue / 2\n - this.APP.existingWallManager.geo_existingWallL1.width\n - this.APP.eaveManager.backOverhang\n - this.APP.sldLeftCutVertical.currentValue/2;\n \n let optionsRake : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldLeftCutVertical.currentValue,\n container: this.dimensionPatiosPlanLeft,\n views: views,\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL,\n }\n let dimRake = this.dimensionPatiosPlanLeft.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL) as Dimension;\n if(!dimRake){\n new Dimension(optionsRake);\n } else {\n dimRake.update(optionsRake);\n }\n\n //let offsetDimensionX = this.MANAGER.boundingBox.min.x - this.dimensionDistance2;\n this.dimensionPatiosPlanLeft.position.set(0, 0, offsetDimensionZ);\n this.repositionDimension(this.dimensionPatiosPlanLeft, DIMENSION_LOCATION.PLAN_LEFT);\n }\n private drawDimensionPatiosFrontBottom() {\n let dimOffsetY = -this.dimensionDistance2;\n this.dimensionPatiosFrontBottom.position.set(0, dimOffsetY, 0);\n\n let views = [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosPlanBottom.children.forEach( groupDim => {\n groupDim.children.filter(c => c.userData.subtype != GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT).forEach(e => {\n let dim = e.clone();\n dim.userData['views'] = views;\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.rotation.set(0, Math.PI, 0);\n dim.userData['rotation'] = new Vector3(0, 0, 0);\n dim.userData['position'] = {...e.userData.position, bottom: true};\n }\n this.dimensionPatiosFrontBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosFrontRight() {\n let views = [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }];\n\n const dimLength = UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.MANAGER.columnAndPurlinManager.geo_superiorBeam.height + (this.utils.tan(this.APP.sltRoofPitch.currentValue) * (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue))\n\n let offsetLength = dimLength / 2;\n let scaleLength = dimLength / this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(dimLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, 0, -Math.PI / 2) };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosFrontRight.add(line, cap1, cap2, text, ...this.utils.addArrowForLine(line));\n\n //reposition the dimension\n this.repositionDimension(this.dimensionPatiosFrontRight, DIMENSION_LOCATION.FRONT_RIGHT);\n }\n private repositionDimension(dimension, location, extraDistance = 0){\n this.APP.scene.remove(...this.APP.scene.children.filter(c => c.userData.type == location));\n this.APP.scene.remove(...this.APP.scene.children.filter(c => c.userData.type == location));\n\n let patiosBox = this.MANAGER.boundingBox;\n \n if(location == DIMENSION_LOCATION.FRONT_RIGHT){\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.max.x;\n dimBox.max.x = patiosBox.max.x + 500;\n dimBox.max.z = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && !c.userData.position.length1 && !c.userData.position.length2)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && !c.userData.position.length1 && !c.userData.position.length2)\n );\n\n if(this.APP.sldExistingWidth2.currentValue > 0){\n objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && !c.userData.position.length1)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && !c.userData.position.length1)\n );\n }\n \n // for(let e of objs){\n // let boxModelHelper = new BoxHelper(e);\n // boxModelHelper.userData = {type: 'BOX_HELPER_'};\n // this.scene.add(boxModelHelper);\n // }\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(100,0,0))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n let dimOffsetY = (UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.MANAGER.columnAndPurlinManager.geo_superiorBeam.height + (this.utils.tan(this.APP.sltRoofPitch.currentValue) * (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue))) / 2;\n dimension.position.set(dimBox.max.x + extraDistance, dimOffsetY, 0);\n }\n else if(location == DIMENSION_LOCATION.PLAN_LEFT){\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.min.x - 500;\n dimBox.max.x = patiosBox.min.x;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF || c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(-100,0,0))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n \n dimension.position.setX(dimBox.min.x + extraDistance);\n }\n else if(location == DIMENSION_LOCATION.PLAN_RIGHT){\n let offsetDimensionZ = this.APP.sldSpan.currentValue / 2\n - this.APP.sldExistingWidth1.currentValue / 2\n - this.APP.existingWallManager.geo_existingWallL1.width\n - this.APP.eaveManager.backOverhang;\n dimension.position.setZ(offsetDimensionZ);\n\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.max.x;\n dimBox.max.x = patiosBox.max.x + 500;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL)\n );\n\n // for(let e of objs){\n // let boxModelHelper = new BoxHelper(e);\n // boxModelHelper.userData = {type: location};\n // this.scene.add(boxModelHelper);\n // }\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(100,0,0))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setX(dimBox.max.x + extraDistance);\n dimension.translateX(this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + this.APP.eaveManager.backOverhang - ( this.MANAGER.columnAndPurlinManager.geo_bracket?.width || 0));\n }\n else if(location == DIMENSION_LOCATION.PLAN_BOTTOM){\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL)\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n if (this.APP.sltExistingType.currentValue == 1) {\n dimension.position.setX(this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + (this.MANAGER.columnAndPurlinManager.geo_bracket?.width || 0)/2)\n } else if(this.APP.sltExistingType.currentValue == 2) {\n dimension.position.setX( -(this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + (this.MANAGER.columnAndPurlinManager.geo_bracket?.width || 0)/2))\n } else {\n dimension.position.setX(0)\n }\n \n dimension.position.setZ(dimBox.max.z + extraDistance);\n }\n else if(location == DIMENSION_LOCATION.LEFT_RIGHT){\n let dimOffsetY = UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.MANAGER.columnAndPurlinManager.geo_superiorBeam.height + (this.utils.tan(this.APP.sltRoofPitch.currentValue) * (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue));\n dimension.position.setY(dimOffsetY / 2);\n\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n dimBox.min.x = -10000;\n dimBox.max.x = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && c.userData.position?.left)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && c.userData.position?.left)\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setZ(dimBox.max.z + extraDistance);\n }\n else if(location == DIMENSION_LOCATION.RIGHT_LEFT){\n let dimOffsetY = this.dimensionPatiosLeftRight.position.y;\n dimension.position.setY(dimOffsetY);\n\n let dimBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosLeftRight);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n \n dimBox.min.x = -10000;\n dimBox.max.x = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && c.userData.position?.right)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && c.userData.position?.right)\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setZ(dimBox.max.z + extraDistance);\n }\n }\n private drawDimensionPatiosLeftBottom() {\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z - (this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + this.APP.eaveManager.backOverhang - ( this.MANAGER.columnAndPurlinManager.geo_bracket?.width || 0));\n\n this.dimensionPatiosLeftBottom.position.set(0, dimOffsetY, dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n this.dimensionPatiosPlanRight.children.forEach( groupDim => {\n groupDim.children.forEach(e => {\n if(e.userData?.subType == GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT)\n return;\n \n let dim = e.clone();\n dim.userData['views'] = views;\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.rotation.set(0, 0, 0);\n dim.userData['views'] = [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }];\n dim.userData['rotation'] = new Vector3(0, 0, 0);\n dim.userData['position'] = {...e.userData.position, bottom: true}; \n }\n this.dimensionPatiosLeftBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosLeftRight() {\n let dimOffsetY = UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.MANAGER.columnAndPurlinManager.geo_superiorBeam.height + (this.utils.tan(this.APP.sltRoofPitch.currentValue) * (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue));\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n let offsetLength = dimOffsetY;\n let scaleLength = offsetLength / this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength / 2);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength / 2);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }], rotation: new Vector3(-Math.PI / 2, 0, 0) };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosLeftRight.add(line, cap1, cap2, text, ...this.utils.addArrowForLine(line));\n\n this.repositionDimension(this.dimensionPatiosLeftRight, DIMENSION_LOCATION.LEFT_RIGHT);\n }\n private drawDimensionPatiosRightBottom() {\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z - (this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + this.APP.eaveManager.backOverhang - ( this.MANAGER.columnAndPurlinManager.geo_bracket?.width || 0));\n\n this.dimensionPatiosRightBottom.position.set(0, dimOffsetY, dimOffsetZ);\n\n let views = [{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosPlanRight.children.forEach(groupDim => {\n groupDim.children.forEach(e => {\n if(e.userData?.subType == GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT)\n return;\n \n let dim = e.clone();\n dim.userData['views'] = views;\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.userData['rotation'] = new Vector3(0, 0, 0);\n dim.userData['position'] = {...e.userData.position, bottom: true};\n }\n this.dimensionPatiosRightBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosRightLeft() {\n let views = [{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosLeftRight.children.forEach(e => {\n let dim = e.clone();\n dim.userData['views'] = views;\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.userData['rotation'] = new Vector3(Math.PI / 2, 0, 0);\n dim.rotation.set(0, Math.PI, 0);\n }\n this.dimensionPatiosRightLeft.add(dim);\n });\n\n this.repositionDimension(this.dimensionPatiosRightLeft, DIMENSION_LOCATION.RIGHT_LEFT);\n }\n private drawDimensionPatiosLeftLeft() {\n let dimOffsetY = UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.MANAGER.columnAndPurlinManager.geo_superiorBeam.height;\n let dimOffsetZ = this.APP.sldExistingWidth1.currentValue / 2 + 1800;\n\n this.dimensionPatiosLeftLeft.position.set(0, dimOffsetY / 2, -dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n let offsetLength = dimOffsetY;\n let scaleLength = offsetLength / this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength / 2);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength / 2);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }], rotation: new Vector3(Math.PI / 2, 0, 0) };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosLeftLeft.add(line, cap1, cap2, text, ...this.utils.addArrowForLine(line));\n }\n private drawDimensionPatiosRightRight() {\n let dimOffsetY = UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.MANAGER.columnAndPurlinManager.geo_superiorBeam.height;\n let dimOffsetZ = this.APP.sldExistingWidth1.currentValue / 2 + 1800;\n\n this.dimensionPatiosRightRight.position.set(0, dimOffsetY / 2, -dimOffsetZ);\n\n let views = [{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosLeftLeft.children.forEach(e => {\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n let dim = e.clone();\n dim.userData['views'] = views;\n dim.userData['rotation'] = new Vector3(-Math.PI / 2, 0, 0);\n dim.rotation.set(0, Math.PI, 0);\n dim.position.set(dim.position.x, -dim.position.y, dim.position.z);\n this.dimensionPatiosRightRight.add(dim);\n }\n });\n }\n private addOverhang(groupDim: Object3D, offset: number, overhangValue: number, views: any, side: string, rotateText: number, axis: string, labelType?: string) {\n if (overhangValue == 0){\n let dim = groupDim.children.find(el => el.userData?.groupType == labelType) as Dimension;\n if(dim){\n groupDim.remove(dim)\n }\n return;\n }\n\n let textStr = this.utils.getDimensionValue(overhangValue);\n\n let textRotation = new Vector3();\n let textUserData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, position: { overhang: true }};\n if (axis === \"z\") {\n textRotation.setZ(rotateText);\n textUserData['rotation'] = new Vector3(0, 0, -rotateText / 2);\n textUserData['position']['bottom'] = true;\n }\n else if (axis === \"y\") {\n textRotation.setY(rotateText);\n textUserData['rotation'] = new Vector3(0, -rotateText / 2, 0);\n }\n else if (axis === \"x\") {\n textRotation.setX(rotateText);\n textUserData['rotation'] = new Vector3(-rotateText / 2, 0, 0);\n }\n\n let linePos = new Vector3();\n if (side === \"Left\") {\n linePos.setX(-offset - overhangValue / 2);\n }\n else if (side === \"Right\") {\n linePos.setX(offset + overhangValue / 2);\n }\n let fitZ = 0;\n if(labelType){\n if(axis === 'z'){\n fitZ = 10;\n } else if(axis === 'y'){\n fitZ = -10;\n }\n }\n let options : AddDimensionOptions = {... this.options,\n lineLength: overhangValue,\n container: groupDim,\n views: views,\n linePos: linePos,\n textPos: linePos.clone().setY(linePos.y - 200),\n labelType: labelType ? labelType : null,\n fitZ: fitZ,\n textRotation: textRotation,\n textUserData: textUserData\n }\n let dim = groupDim.children.find(el => el.userData?.groupType == labelType) as Dimension;\n if(!dim){\n new Dimension(options);\n } else {\n dim.update(options)\n }\n }\n private getTextCover(textGeo: TextBufferGeometry, labelType: string, pos: Vector3, fitZ = 0, bayNum?: number){\n let textSize = new Vector3();\n textGeo.boundingBox.getSize(textSize)\n \n let textCover = new Mesh(new BoxBufferGeometry(textSize.x, textSize.y, textSize.z))\n textCover.position.set(pos.x , pos.y, pos.z + fitZ);\n textCover.userData = { type: GEOMETRY_TYPE.TEXT_COVER, labelType };\n if(bayNum !== undefined){\n textCover.userData['bayNum'] = bayNum;\n }\n textCover.material['opacity'] = 0;\n textCover.material['transparent'] = true;\n \n return textCover\n }\n\n public getOutlines(): Printing2DGeometry {\n let lsGeometries: Printing2DLine[] = [];\n let lsText: Print2DText[] = [];\n\n for (let dim of [\n ...this.dimensionPatiosPlanBottom.children,\n ...this.dimensionPatiosPlanRight.children,\n ...this.dimensionPatiosPlanLeft.children,\n ...this.dimensionPatiosFrontBottom.children,\n ...this.dimensionPatiosFrontRight.children,\n ...this.dimensionPatiosLeftBottom.children,\n ...this.dimensionPatiosLeftRight.children,\n ...this.dimensionPatiosRightBottom.children,\n ...this.dimensionPatiosRightLeft.children,\n ...this.dimensionPlanMiddle.children,\n ...this.dimensionPatiosLeftLeft.children,\n ...this.dimensionPatiosRightRight.children,\n ...this.dimensionPlanMidleLeft.children\n ]) {\n if (!dim.userData.views) {\n console.log(\"TEXT NO VIEW\", dim);\n continue;\n }\n \n if(dim.type == 'Group'){\n dim.children.forEach(el => {\n el.updateMatrix();\n let _clone = el.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(el.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n \n el.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(el.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(el.matrixWorld);\n\n let textRotation = el.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, el, pos, textRotation, points)\n })\n } else{\n dim.updateMatrix();\n let _clone = dim.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(dim.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n \n dim.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(dim.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(dim.matrixWorld);\n\n let textRotation = dim.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, dim, pos, textRotation, points)\n }\n }\n return { lines: lsGeometries, texts: lsText };\n }\n private getDimInfo(lsGeometries: Printing2DLine[], lsText: Print2DText[], dim: Object3D, pos: Vector3, textRotation: Vector3, points: Vector3[]){\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && dim.userData.views && dim.userData.value) {\n let box = new Box3().setFromObject(dim.parent);\n let startEnd = this.utils.getStartEndPoint(box);\n let line = new Line3(startEnd[0], startEnd[1]);\n\n let projectPoint = new Vector3();\n line.closestPointToPoint(pos, true, projectPoint);\n let _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(10));\n\n if(dim.userData.position?.bottom){\n if(dim.userData.position?.overhang){\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(180));\n }\n else{\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(120));\n }\n }\n else{\n if(dim.userData.position?.overhang){\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(100));\n }\n }\n\n let p = new Vector3().applyMatrix4(dim.matrixWorld);\n\n lsText.push({\n value: dim.userData.value,\n position: p,\n rotation: textRotation,\n views: dim.userData.views\n });\n\n \n }\n else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_LINE) {\n // this.scene.add(new LineSegments(new Geometry().setFromPoints(points), new LineBasicMaterial({color: new Color('red')})));\n\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_CAP) {\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n else if (dim.userData.type == \"Arrow\") {\n let geo = ((dim as Line).geometry as Geometry).clone();\n geo.applyMatrix4(dim.matrixWorld);\n lsGeometries.push({\n vertices: geo.vertices,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n }\n public destroy(): void {\n this.unregisterEvent();\n this.unload();\n }\n\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldFrontOverhang,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sldExistingWallHeight,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sldFlyOverBracketHeight,\n this.APP.sltRoofPitch\n ];\n\n this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n }\n\n public uiChanged(preVal: number, curVal: number): void {\n this.draw();\n }\n\n private calulateBoundingBox(){\n //this.APP.scene.remove(...this.APP.scene.children.filter(c => c.userData.type == 'BOX_HELPER_'));\n let patiosBox = this.MANAGER.boundingBox;\n \n // let planRightBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosPlanRight);\n // planRightBox.min.x = patiosBox.max.x;\n // planRightBox.max.x = patiosBox.max.x + 500;\n // planRightBox.max.y = 10000;\n \n let planLeftBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosPlanLeft);\n planLeftBox.min.x = patiosBox.min.x - 500;\n planLeftBox.max.x = patiosBox.min.x;\n planLeftBox.max.y = 10000;\n\n // let planBottomBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosPlanBottom);\n // let planBottomBoxWidth = planBottomBox.max.z - planBottomBox.min.z;\n // planBottomBox.min.z = patiosBox.max.z;\n // planBottomBox.max.z = patiosBox.max.z + planBottomBoxWidth;\n // planBottomBox.max.y = 10000;\n \n let objs = [];\n\n objs = this.APP.scene.children.filter(c =>\n c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF || c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n\n // for(let e of objs){\n // let boxModelHelper = new BoxHelper(e);\n // boxModelHelper.userData = {type: 'BOX_HELPER_'};\n // this.scene.add(boxModelHelper);\n // }\n\n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n // if(planRightBox.intersectsBox(objBox)){\n // intersectBox = true;\n // planRightBox.translate(new Vector3(100,0,0))\n // }\n if(planLeftBox.intersectsBox(objBox)){\n intersectBox = true;\n planLeftBox.translate(new Vector3(-100,0,0))\n }\n // if(planBottomBox.intersectsBox(objBox)){\n // intersectBox = true;\n // planBottomBox.translate(new Vector3(0,0,100))\n // }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(planRightBox);\n // boxHelper.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper);\n\n // let boxHelper2 = new Box3Helper(planLeftBox);\n // boxHelper2.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper2);\n\n // let boxHelper3 = new Box3Helper(planBottomBox);\n // boxHelper3.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper3);\n \n return { left: planLeftBox.min.x };\n }\n}\n","import { GEOMETRY_CATEGORY } from \"src/app/app.config\";\nimport {\n BUILDING_SIDE,\n CUTOUT_ENABLE,\n EXISTING_BUILDING_CONFIG,\n RAKECUT_TYPE,\n} from \"src/app/app.constants\";\nimport { Box3, Group, Vector3 } from \"three\";\nimport { HomeComponent as AppComponent } from \"src/app-ribspan/containers/home/home.component\";\nimport { Printing2DGeometry } from \"src/app/core/models\";\nimport {\n PatiosManager,\n RafterBeamAndInternalBeamInfo,\n} from \"../patios.manager\";\nimport { ColumnAndPurlinManager } from \"./column-and-purlin.manager\";\nimport { DimensionManager } from \"./dimension.manager\";\nimport { RoofManager } from \"./roof.manager\";\n\nexport class PatiosBackFlyOverManager implements PatiosManager {\n public columnAndPurlinManager: ColumnAndPurlinManager;\n private roofManager: RoofManager;\n public patiosGroup: Group;\n public boundingBox: Box3;\n private updateEventHandle: any;\n //private existingTypeChangedEventtHandle: any;\n public dimesionManager: DimensionManager;\n private controlsToRegisterEvent: Array;\n public ignoreBayEvent: boolean = false;\n public rafterBeamAndInternalBeamInfo: RafterBeamAndInternalBeamInfo = {\n numOfInternalRafter: 0,\n numOfSpanBeam: 0,\n numOfMultiSpanBeam: 0,\n };\n\n patiosWidth: number;\n patiosLength: number;\n public get cutoutCondition(): boolean {\n return (\n [this.APP.sldSpan, this.APP.sldMultiSpan, this.APP.sldFrontOverhang]\n .map((x) => x.currentValue)\n .reduce((a, b) => a + b, 0) -\n this.APP.sldExistingWidth1.currentValue >=\n EXISTING_BUILDING_CONFIG.CUTOUT_ALLOW\n );\n }\n public get rakecutCondition(): boolean {\n let patiosWidth =\n this.APP.dialogEditBay.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n let patiosLength =\n this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue;\n\n return false;\n }\n private APP: AppComponent;\n private deferHandle;\n private deferTimeout = EXISTING_BUILDING_CONFIG.CUTOUT_DEFFER_TIME_OUT;\n public firstLoad = true;\n\n constructor(app: AppComponent) {\n this.APP = app;\n\n this.patiosGroup = new Group();\n this.patiosGroup.userData = {\n isGroup: true,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n app.scene.add(this.patiosGroup);\n\n this.columnAndPurlinManager = new ColumnAndPurlinManager(app, this);\n this.roofManager = new RoofManager(app, this);\n this.dimesionManager = new DimensionManager(app, this);\n\n this.registerEvents();\n }\n\n load(): Promise {\n return Promise.all([\n this.columnAndPurlinManager.optimize(),\n this.roofManager.optimize(),\n this.dimesionManager.optimize(),\n ]).then(() => {\n this.columnAndPurlinManager.load();\n this.roofManager.load();\n this.dimesionManager.load();\n });\n }\n loadBracket(bracketQuantity: number): void {\n this.columnAndPurlinManager.numberOfBracketBack = bracketQuantity;\n this.columnAndPurlinManager.addPostOrBracketBack();\n }\n loadBracketCutout(bracketQuantity: number): void {\n this.columnAndPurlinManager.numberOfBracketCutout = bracketQuantity;\n this.columnAndPurlinManager.addPostOrBracketBackCutout();\n }\n loadSideGableBracket(bracketQuantity: number): void {}\n loadRafterBeamAndInternalBeam(info: RafterBeamAndInternalBeamInfo): void {\n this.rafterBeamAndInternalBeamInfo = info;\n this.columnAndPurlinManager.addEndRafterBeam(info);\n }\n getOutlines(): Printing2DGeometry {\n let dimensionOutline = this.dimesionManager.getOutlines();\n return {\n lines: [\n ...this.columnAndPurlinManager.getSection().lines,\n ...this.roofManager.getOutLines().lines,\n ...dimensionOutline.lines,\n ],\n texts: dimensionOutline.texts,\n };\n }\n\n public destroy(): void {\n this.columnAndPurlinManager.destroy();\n this.roofManager.destroy();\n this.dimesionManager.destroy();\n this.unRegisterEvent();\n }\n\n registerEvents() {\n this.updateEventHandle = this.updateDefer.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sltCutOut,\n this.APP.sldFrontOverhang,\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltHouseBeamSize,\n this.APP.sltColourBarge,\n this.APP.sltColourGutter,\n this.APP.sltColourDownpipe,\n this.APP.sltColourRoof,\n this.APP.sldSpan,\n this.APP.sldExistingWallHeight,\n this.APP.sldEaveWidth,\n this.APP.sldFasciaDepth,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldFlyOverBracketHeight,\n this.APP.sltColourBeam,\n this.APP.sltColourPost,\n this.APP.sltColourBracket,\n this.APP.sltColourFasciaBracket,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n this.APP.sltLeftCutType,\n this.APP.sldLeftCutVertical,\n this.APP.sldLeftCutHorizontal,\n this.APP.sltRightCutType,\n this.APP.sldRightCutVertical,\n this.APP.sldRightCutHorizontal,\n this.APP.sltPanelDirection,\n this.APP.sltPanelDirectionShow,\n this.APP.sltBeamLayoutShow,\n this.APP.sltExistingRoofPitch,\n this.APP.btnTurnOnPanel,\n ];\n this.controlsToRegisterEvent.forEach((c) => {\n c.addAction(this.updateEventHandle);\n });\n }\n unRegisterEvent() {\n this.controlsToRegisterEvent.forEach((c) =>\n c.removeAction(this.updateEventHandle)\n );\n }\n\n updateDefer(previousValue: number, currentValue: number) {\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES ||\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE ||\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE\n ) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => {\n this.update(previousValue, currentValue);\n }, this.deferTimeout);\n } else {\n this.update(previousValue, currentValue);\n }\n }\n update(preVal: number, curVal: number) {\n let totalBaySize = this.APP.dialogEditBay.totalBaySize;\n let diff = this.APP.sldExistingLength.currentValue - totalBaySize;\n this.patiosWidth =\n totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n this.patiosLength =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue;\n let extraWallWidth =\n this.APP.existingWallManager.geo_existingWallW1.width +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n this.patiosGroup.position.setX(\n -diff / 2 -\n this.APP.sldExistingLength2.currentValue -\n extraWallWidth\n );\n } else {\n this.patiosGroup.position.setX(\n -diff / 2 - this.APP.sldExistingLength2.currentValue\n );\n }\n } else {\n this.patiosGroup.position.setX(-diff / 2 - extraWallWidth);\n }\n } else if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n this.patiosGroup.position.setX(\n diff / 2 + this.APP.sldExistingLength2.currentValue\n );\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n this.patiosGroup.position.setX(\n diff / 2 + this.APP.sldExistingLength2.currentValue + extraWallWidth\n );\n } else {\n this.patiosGroup.position.setX(\n diff / 2 + this.APP.sldExistingLength2.currentValue\n );\n }\n } else {\n this.patiosGroup.position.setX(diff / 2 + extraWallWidth);\n }\n } else {\n this.patiosGroup.position.setX(0);\n }\n\n this.patiosGroup.position.setZ(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n this.APP.eaveManager.backOverhang -\n (this.columnAndPurlinManager.geo_bracket?.width || 0)\n );\n\n Promise.all([\n this.roofManager.load(),\n this.columnAndPurlinManager.load(),\n ]).then(() => {\n // this.boundingBox = this.APP.utils.getObjectsBoundingBox(\n // this.patiosGroup.children.filter(c => c.userData.type != GEOMETRY_TYPE.DIMENSION && c.userData.type != GEOMETRY_TYPE.ROOF_PATIOS)\n // );\n //test\n // this.APP.scene.remove(...this.APP.scene.children.filter(c => c.userData.type == 'BOX_HELPRE'));\n // let boxHelper = new Box3Helper(this.boundingBox);\n // boxHelper.userData = { type: 'BOX_HELPRE' };\n // this.APP.scene.add(boxHelper);\n this.loadRafterBeamAndInternalBeam(this.rafterBeamAndInternalBeamInfo);\n this.boundingBox = this.getPatiosBox();\n this.dimesionManager.draw();\n });\n }\n public getPatiosBox(): Box3 {\n let left =\n -this.APP.dialogEditBay.totalBaySize / 2 -\n this.APP.sldLeftOverhang.currentValue;\n let right =\n this.APP.dialogEditBay.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue;\n let front =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue;\n let back = 0;\n let height = this.APP.sldBuildingHeight.currentValue;\n let extraOffsetZ =\n this.APP.existingWallManager.geo_existingWallL1.width +\n this.APP.eaveManager.backOverhang;\n\n let box = new Box3();\n box = box.expandByPoint(new Vector3(left, 0, front));\n box = box.expandByPoint(new Vector3(right, height, back));\n box.translate(new Vector3(0, 0, -extraOffsetZ));\n\n if (this.APP.sltExistingType.currentValue == 1) {\n let diff =\n (this.APP.sldExistingLength.currentValue -\n this.APP.dialogEditBay.totalBaySize) /\n 2;\n box.translate(new Vector3(-diff, 0, 0));\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n box.translate(new Vector3(this.APP.sldLeftOverhang.currentValue, 0, 0));\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n box.translate(\n new Vector3(-this.APP.sldExistingLength2.currentValue, 0, 0)\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 2) {\n let diff =\n (this.APP.sldExistingLength.currentValue -\n this.APP.dialogEditBay.totalBaySize) /\n 2;\n box.translate(new Vector3(diff, 0, 0));\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n box.translate(new Vector3(-this.APP.sldRightOverhang.currentValue, 0, 0));\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n box.translate(\n new Vector3(this.APP.sldExistingLength2.currentValue, 0, 0)\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 3) {\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n }\n // if (!environment.production) {\n // this.APP.scene.remove(...this.APP.scene.children.filter(o => o.userData.type == 'BOXHELPER'));\n // let boxHelper = new Box3Helper(box);\n // boxHelper.userData = { type: \"BOXHELPER\" };\n // this.APP.scene.add(boxHelper);\n // }\n\n return box;\n }\n}\n","import {\n BUILDING_SIDE,\n CUTOUT_ENABLE,\n EXISTING_BUILDING_CONFIG,\n PANEL_DIRECTION,\n RAKECUT_TYPE,\n RIBSPAN_PANEL_WIDTH,\n RIBSPAN_BARGE_FIT,\n FIT_FLYOVER_BRAKET_ON_ROOF\n} from \"src/app/app.constants\";\nimport HighLightBox from \"src/app-ribspan/models/HighlightBox\";\nimport {\n BoxBufferGeometry,\n BoxHelper,\n BufferGeometry,\n Color,\n Geometry,\n Group,\n LineSegments,\n Material,\n Matrix4,\n Mesh,\n MeshLambertMaterial,\n Object3D,\n Plane,\n Vector3,\n} from \"three\";\nimport { CSG } from \"three-csg-ts\";\nimport { PatiosBackFlyOverManager } from \".\";\nimport { GEOMETRY_CATEGORY, GEOMETRY_TYPE } from \"src/app/app.config\";\nimport { HomeComponent as AppComponent } from \"src/app-ribspan/containers/home/home.component\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport {\n GeometryInfo,\n LineType,\n Print2DView,\n Printing2DGeometry,\n Printing2DLine,\n ViewType,\n} from \"src/app/core/models\";\nimport { UI } from \"../ui\";\nimport { Util } from \"../utils\";\n\nexport class RoofManager {\n private scene: Group;\n private APP: AppComponent;\n private MANAGER: PatiosBackFlyOverManager;\n private material: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private geo_RoofPanel: GeometryInfo;\n private geo_roofPanelBargeCappingLeft: GeometryInfo;\n private geo_roofPanelBargeCappingRight: GeometryInfo;\n private geo_roofPanelBargeCappingFront: GeometryInfo;\n private geo_bargeCutoutLeftHor: GeometryInfo;\n private geo_bargeCutoutRightHor: GeometryInfo;\n private geo_bargeRakecutLeft: GeometryInfo;\n private geo_bargeRakecutRight: GeometryInfo;\n //private geo_roofPanelBargeCappingBack: BufferGeometry;\n private geo_gutterFront: GeometryInfo;\n private geo_gutterCap: GeometryInfo;\n\n private roofGroup: Group;\n\n private eventHandleId: any;\n private objectSizeChangedHandle: any;\n\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n\n private totalBaySize: number;\n private extraOffsetZ: number;\n\n private mesh_CutoutLeft: Mesh;\n private csg_cutoutLeft: CSG;\n private mesh_CutoutRight: Mesh;\n private csg_cutoutRight: CSG;\n private geo_cutoutLeft: BoxBufferGeometry;\n private geo_cutoutRight: BoxBufferGeometry;\n private geo_rakecutLeft: BoxBufferGeometry;\n private geo_rakecutRight: BoxBufferGeometry;\n private mesh_rakecutLeft: Mesh;\n private mesh_rakecutRight: Mesh;\n private csg_rakecutLeft: CSG;\n private csg_rakecutRight: CSG;\n private geo_downPipe: GeometryInfo;\n\n private roofWidth: number;\n private roofLength: number;\n\n private deferHandle;\n private deferTimeout = EXISTING_BUILDING_CONFIG.CUTOUT_DEFFER_TIME_OUT;\n private cutoutExistingBothLength: number;\n\n constructor(app: AppComponent, backFlyOverManager: PatiosBackFlyOverManager) {\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.APP = app;\n this.MANAGER = backFlyOverManager;\n this.scene = new Group();\n backFlyOverManager.patiosGroup.add(this.scene);\n this.material = MaterialManager.Instance().ROOF;\n\n this.registerEvent();\n }\n\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n this.geo_RoofPanel = this.geometryManager.getRoofRibspanPanel();\n this.geo_RoofPanel.geometry.translate(-this.geo_RoofPanel.width / 2, this.geo_RoofPanel.height / 2, -this.geo_RoofPanel.length / 2);\n this.geo_RoofPanel.geometry.rotateY(Math.PI)\n this.utils.changeGeoColor(this.geo_RoofPanel.geometry, new Vector3(0, 1, 0), UI.roofColor.toString());\n\n //Barge capping\n this.geo_roofPanelBargeCappingLeft = this.geometryManager.getRibspanBarge();\n this.geo_roofPanelBargeCappingLeft.geometry\n .rotateY(Math.PI)\n .translate(\n this.geo_roofPanelBargeCappingLeft.width / 2 - 3,\n this.geo_roofPanelBargeCappingLeft.height / 2 - RIBSPAN_BARGE_FIT,\n this.geo_roofPanelBargeCappingLeft.length / 2\n );\n\n this.geo_roofPanelBargeCappingRight = this.geometryManager.getRibspanBarge();\n this.geo_roofPanelBargeCappingRight.geometry.translate(\n -this.geo_roofPanelBargeCappingLeft.width / 2 + 3,\n this.geo_roofPanelBargeCappingLeft.height / 2 - RIBSPAN_BARGE_FIT,\n this.geo_roofPanelBargeCappingLeft.length / 2\n );\n\n this.geo_roofPanelBargeCappingFront = this.geometryManager.getRibspanBarge();\n this.geo_roofPanelBargeCappingFront.geometry\n .rotateY(-Math.PI / 2)\n .translate(\n this.geo_roofPanelBargeCappingLeft.length / 2,\n this.geo_roofPanelBargeCappingLeft.height / 2 - RIBSPAN_BARGE_FIT,\n -this.geo_roofPanelBargeCappingLeft.width / 2\n );\n\n this.geo_bargeRakecutLeft = this.geometryManager.getRibspanBarge();\n this.geo_bargeRakecutLeft.geometry\n .rotateY(Math.PI)\n .translate(\n this.geo_bargeRakecutLeft.width / 2,\n this.geo_bargeRakecutLeft.height / 2 - RIBSPAN_BARGE_FIT,\n -this.geo_bargeRakecutLeft.length / 2\n );\n\n this.geo_bargeRakecutRight = this.geometryManager.getRibspanBarge();\n this.geo_bargeRakecutRight.geometry.translate(\n -this.geo_bargeRakecutRight.width / 2,\n this.geo_bargeRakecutRight.height / 2 - RIBSPAN_BARGE_FIT,\n -this.geo_bargeRakecutRight.length / 2\n );\n\n //Gutter\n this.geo_gutterFront = this.geometryManager.getGutter();\n this.geo_gutterFront.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_gutterFront.length / 2,\n -20,\n this.geo_gutterFront.width / 2\n );\n\n //Gutter cap\n this.geo_gutterCap = this.geometryManager.getGuterEndCap();\n this.geo_gutterCap.geometry\n .rotateY(Math.PI / 2)\n .translate(0, -20, this.geo_gutterCap.length / 2);\n\n this.geo_cutoutLeft = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_cutoutLeft.translate(-500, 500, -500);\n this.geo_cutoutRight = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_cutoutRight.translate(500, 500, -500);\n\n this.geo_rakecutLeft = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_rakecutLeft.translate(-500, 500, 500);\n this.geo_rakecutRight = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_rakecutRight.translate(500, 500, 500);\n\n //Barge cutout left\n this.geo_bargeCutoutLeftHor = this.geometryManager.getRibspanBarge();\n this.geo_bargeCutoutLeftHor.geometry\n .rotateY(Math.PI / 2)\n .translate(\n -this.geo_bargeCutoutLeftHor.length / 2,\n this.geo_bargeCutoutLeftHor.height / 2 - RIBSPAN_BARGE_FIT,\n this.geo_bargeCutoutLeftHor.width / 2\n );\n\n //Barge cutout right\n this.geo_bargeCutoutRightHor = this.geometryManager.getRibspanBarge();\n this.geo_bargeCutoutRightHor.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_bargeCutoutRightHor.length / 2,\n this.geo_bargeCutoutRightHor.height / 2 - RIBSPAN_BARGE_FIT,\n this.geo_bargeCutoutRightHor.width / 2\n );\n\n this.geo_downPipe = this.geometryManager.getDownPipe();\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.ROOF_PATIOS\n )\n );\n this.APP.scene.remove(\n ...this.APP.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SHEET_OUTLINE\n )\n );\n\n this.APP.scene.remove(\n ...this.APP.scene.children.filter((x) => x.userData.type == \"RAKECUT\")\n );\n this.APP.scene.remove(\n ...this.APP.scene.children.filter((x) => x.userData.type == \"HELPER\")\n );\n\n this.extraOffsetZ = this.APP.existingWallManager.geo_existingWallL1.width + this.APP.eaveManager.backOverhang;\n\n this.totalBaySize = this.APP.dialogEditBay.totalBaySize;\n\n this.roofLength =\n UI.span +\n UI.multiSpan +\n UI.overhangFront;\n this.cutoutExistingBothLength =\n (this.totalBaySize -\n (this.APP.sldExistingLength.currentValue +\n this.APP.existingWallManager.geo_existingWallW1.width * 2)) /\n 2;\n\n this.addRoof();\n this.addCutout();\n this.addAngelRakeCut();\n this.addStepRakecut();\n if (UI.rakeCutLeftType == 0) {\n new HighLightBox(this.roofGroup, {\n min: {\n x: -(UI.totalBayLength / 2 + UI.overhangLeft),\n y: 0,\n z: UI.span + UI.multiSpan + UI.overhangBack + UI.overhangFront,\n },\n max: {\n x: -(UI.totalBayLength / 2 + UI.overhangLeft) + 300,\n y: 0,\n z:\n UI.span + UI.multiSpan + UI.overhangBack + UI.overhangFront - 300,\n },\n userData: { side: BUILDING_SIDE.LEFT },\n });\n }\n if (UI.rakeCutRightType == 0) {\n new HighLightBox(this.roofGroup, {\n min: {\n x: UI.totalBayLength / 2 + UI.overhangRight - 300,\n y: 0,\n z: UI.span + UI.multiSpan + UI.overhangBack + UI.overhangFront,\n },\n max: {\n x: UI.totalBayLength / 2 + UI.overhangRight,\n y: 0,\n z:\n UI.span + UI.multiSpan + UI.overhangBack + UI.overhangFront - 300,\n },\n userData: { side: BUILDING_SIDE.RIGHT },\n });\n }\n\n let offsetLeft =\n this.totalBaySize / 2 +\n UI.overhangLeft -\n this.MANAGER.patiosGroup.position.x;\n let offsetRight =\n this.totalBaySize / 2 +\n UI.overhangRight +\n this.MANAGER.patiosGroup.position.x;\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndPurlinManager.geo_bracket?.width || 0);\n offsetRight -= offsetX;\n offsetLeft += offsetX;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndPurlinManager.geo_bracket?.width || 0);\n offsetLeft += offsetX;\n offsetRight += offsetX;\n }\n let clipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let clipingPlaneRight = new Plane(new Vector3(-1, 0, 0), offsetRight);\n\n this.material.clippingPlanes = [clipingPlaneLeft, clipingPlaneRight];\n MaterialManager.Instance().ROOF_BASE.clippingPlanes = [\n clipingPlaneLeft,\n clipingPlaneRight,\n ];\n let width =\n this.totalBaySize +\n UI.overhangLeft +\n UI.overhangRight;\n this.roofWidth = width;\n this.roofLength =\n UI.span +\n UI.multiSpan +\n UI.overhangBack +\n UI.overhangFront;\n let roofSheetingCount = Math.ceil(width / RIBSPAN_PANEL_WIDTH);\n let offsetX = -(\n this.totalBaySize / 2 +\n UI.overhangLeft\n );\n\n //panel direction\n let panelDirectionOfset = 1;\n if (\n this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT\n ) {\n offsetX =\n this.totalBaySize / 2 +\n UI.overhangRight -\n RIBSPAN_PANEL_WIDTH;\n panelDirectionOfset = -1;\n } else if (\n this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.LEFT_TO_RIGHT\n ) {\n offsetX = -(\n this.totalBaySize / 2 +\n UI.overhangLeft\n );\n }\n\n if (\n UI.cutOutType == 1 &&\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT &&\n this.MANAGER.cutoutCondition\n ) {\n let totalPanelLength = 0;\n for (let index = 0; index < roofSheetingCount; index++) {\n totalPanelLength += RIBSPAN_PANEL_WIDTH;\n this.addRoofSheeting(offsetX, [this.csg_cutoutLeft]);\n offsetX += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n } else if (\n UI.cutOutType == 1 &&\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT &&\n this.MANAGER.cutoutCondition\n ) {\n let totalPanelLength = 0;\n for (let index = 0; index < roofSheetingCount; index++) {\n totalPanelLength += RIBSPAN_PANEL_WIDTH;\n this.addRoofSheeting(offsetX, [this.csg_cutoutRight]);\n offsetX += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n } else if (\n UI.cutOutType == CUTOUT_ENABLE.YES &&\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH &&\n this.MANAGER.cutoutCondition\n ) {\n for (let index = 0; index < roofSheetingCount; index++) {\n this.addRoofSheeting(offsetX, [\n this.csg_cutoutLeft,\n this.csg_cutoutRight,\n ]);\n offsetX += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n } else {\n for (let index = 0; index < roofSheetingCount; index++) {\n this.addRoofSheeting(offsetX, []);\n offsetX += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n }\n\n this.addBargeCapping();\n this.addBargeAngelRakecut();\n this.addBargeStepRakecut();\n this.addGutter();\n\n this.showPanelOutline();\n\n this.scene.visible = UI.showRoof\n\n resolve();\n });\n }\n private getHeightByRoofPitch(userDataPos: any): number {\n if (userDataPos.isSpan) {\n return (\n this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n UI.span\n );\n } else if (userDataPos.isMultiSpan) {\n return (\n this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n (UI.span + UI.multiSpan)\n );\n } else {\n return (\n this.utils.tan(this.APP.sltRoofPitch.currentValue) * this.roofLength\n );\n }\n }\n public getOutLines(): Printing2DGeometry {\n let objs = this.roofGroup.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n );\n\n let gutterGroupObjs = this.roofGroup.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS\n );\n let gutterObjs: Object3D[] = [];\n for (let group of gutterGroupObjs) {\n gutterObjs.push(...group.children);\n }\n objs = [...objs, ...gutterObjs];\n\n let lsGeometries: Printing2DLine[] = [];\n\n let offsetLeft =\n this.totalBaySize / 2 +\n UI.overhangLeft -\n this.MANAGER.patiosGroup.position.x;\n let offsetRight =\n this.totalBaySize / 2 +\n UI.overhangRight +\n this.MANAGER.patiosGroup.position.x;\n let roofClipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let roofClipingPlaneRight = new Plane(new Vector3(-1, 0, 0), offsetRight);\n\n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n o as Mesh,\n 60\n );\n\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n outlineGeo.translate(0, 5000, 0);\n\n if (\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ) {\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneRight);\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n }\n\n // var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"SHEETING_OUTLINE\"};\n // this.APP.scene.add( line );\n\n let simplifiedGeo = this.simplifyGeo(outlineGeo);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: simplifiedGeo.vertices,\n views: o.userData.views,\n });\n }\n\n lsGeometries.push({\n objectType: GEOMETRY_TYPE.ROOF_COVER,\n vertices: this.makeRoofPolygon(),\n color: this.utils.convertHexColorToRgb(`#${new Color(UI.panelColor).getHexString()}`),\n views: [\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ]\n });\n\n return { lines: lsGeometries, texts: [] };\n }\n makeRoofPolygon() {\n const polygon = this.utils.getRoofCoverPolygonForLRRoof()\n this.roofGroup.updateWorldMatrix(true, true)\n return polygon.map(el => (el as Vector3).applyMatrix4(this.roofGroup.matrixWorld))\n }\n public showPanelOutline() {\n if (this.APP.sltPanelDirectionShow.currentValue == false) return;\n\n let objs = this.roofGroup.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n );\n\n let offsetLeft =\n this.totalBaySize / 2 +\n UI.overhangLeft -\n this.MANAGER.patiosGroup.position.x;\n let offsetRight =\n this.totalBaySize / 2 +\n UI.overhangRight +\n this.MANAGER.patiosGroup.position.x;\n let roofClipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let roofClipingPlaneRight = new Plane(new Vector3(-1, 0, 0), offsetRight);\n\n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n o as Mesh,\n 60\n );\n\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n //outlineGeo.translate(0, 1000, 0);\n\n if (\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ) {\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneRight);\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n }\n\n var line = new LineSegments(\n outlineGeo,\n MaterialManager.Instance().MESH_OUTLINE\n );\n line.userData = { type: GEOMETRY_TYPE.SHEET_OUTLINE };\n this.APP.scene.add(line);\n }\n }\n public showPanelOutLineTest() {\n // if(this.APP.sltPanelDirectionShow.currentValue == false)\n // return;\n\n //console.log('show layout');\n\n let objs = this.roofGroup.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n );\n\n let offsetLeft =\n this.totalBaySize / 2 +\n UI.overhangLeft -\n this.MANAGER.patiosGroup.position.x;\n let offsetRight =\n this.totalBaySize / 2 +\n UI.overhangRight +\n this.MANAGER.patiosGroup.position.x;\n let roofClipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let roofClipingPlaneRight = new Plane(new Vector3(-1, 0, 0), offsetRight);\n\n let flag = false;\n\n //for (let i = 0; i < objs.length-1; i+=2)\n //for(let o of objs)\n {\n // let o1 = objs[i];\n // let o2 = objs[i+1];\n\n // o1.material = objs[i].material.clone();\n // o2.material = objs[i+1].material.clone();\n\n // if(flag){\n // o1.material.color = new Color('gray');\n // o2.material.color = new Color('gray');\n // }\n // else{\n // o1.material.color = new Color('white');\n // o2.material.color = new Color('white');\n // }\n\n // flag = !flag;\n\n let o = objs[7];\n //let newGeo = BufferGeometryUtils.toTrianglesDrawMode(new BufferGeometry().fromGeometry((o as Mesh).geometry), TrianglesDrawMode);\n\n let tmpGeo = (o as Mesh).geometry as Geometry;\n tmpGeo.computeFaceNormals();\n tmpGeo.mergeVertices();\n tmpGeo.computeVertexNormals();\n //let simpifiedGeo = this.modifier.modify(tmpGeo, Math.floor(tmpGeo.vertices.length * 0.9));\n\n // let simplified = o.clone() as Mesh;\n // simplified.material = (simplified.material as MeshPhongMaterial).clone();\n // simplified.material.flatShading = true;\n\n //const count = Math.floor( newGeo.attributes['position'].count * 0.9 ); // number of vertices to remove\n //newGeo = this.modifier.modify( newGeo, count );\n\n // var rs = ((o as Mesh).geometry as Geometry).mergeVertices();\n // console.log('result merge vertice', rs);\n\n //let newMesh = new Mesh(simpifiedGeo);\n\n //let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(newMesh, 90);\n\n //o.updateWorldMatrix(true, true);\n //outlineGeo.applyMatrix4(o.matrixWorld);\n //outlineGeo.translate(0, 1000, 0);\n\n // if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE) {\n // outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneRight);\n // outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n // }\n\n // var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: GEOMETRY_TYPE.SHEET_OUTLINE};\n // this.APP.scene.add( line );\n\n // const wireframe = new WireframeGeometry( simpifiedGeo );\n // let line2 = new LineSegments( wireframe );\n // line2.userData = {type: GEOMETRY_TYPE.SHEET_OUTLINE};\n // line2.material.depthTest = false;\n // line2.material.opacity = 0.25;\n // line2.material.transparent = true;\n\n // o.updateMatrixWorld();\n // line2.applyMatrix4(o.matrixWorld);\n\n // line2.translateY(1000);\n\n // this.APP.scene.add(line2);\n }\n }\n public simplifyGeo(geo: BufferGeometry): Geometry {\n let simplifiedGeo = new Geometry();\n let vertices = geo.getAttribute(\"position\").array;\n for (let i = 0; i < vertices.length; i += 3) {\n simplifiedGeo.vertices.push(\n new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2])\n );\n }\n return simplifiedGeo;\n }\n public addRoof() {\n this.roofGroup = null;\n this.roofGroup = new Group();\n this.roofGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.ROOF_PATIOS,\n };\n\n let offsetY = this.getRoofOffsetY();\n let offsetZ = -(\n UI.existingWidth1 / 2 +\n UI.overhangBack +\n this.extraOffsetZ\n );\n\n this.roofGroup.position.setY(offsetY);\n this.roofGroup.position.setZ(offsetZ);\n this.roofGroup.rotateX(\n this.utils.degreesToRadians(-this.APP.sltRoofPitch.currentValue)\n );\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndPurlinManager.geo_bracket?.width || 0);\n this.roofGroup.position.setX(-offsetX);\n }\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndPurlinManager.geo_bracket?.width || 0);\n this.roofGroup.position.setX(offsetX);\n }\n\n this.scene.add(this.roofGroup);\n }\n public addRoofSheeting(offsetX: number, csgObjs: CSG[]) {\n let mesh: Mesh = new Mesh(this.geo_RoofPanel.geometry, this.material);\n\n const panelLength = (UI.span +\n UI.overhangFront +\n UI.overhangBack +\n UI.multiSpan) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue)\n const startZOfPanel = UI.span +\n UI.overhangFront +\n UI.overhangBack +\n UI.multiSpan\n\n let scaleZ =\n panelLength /\n this.geo_RoofPanel.length;\n \n let offsetY = 0;\n let offsetZ = 0;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setZ(scaleZ);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.ROOF_PANEL,\n views: views,\n };\n let cutoutCondition =\n UI.cutOutType == 1 &&\n UI.existingType != 0 &&\n UI.existingLength2 > 0;\n let rakeCutCondition =\n UI.rakeCutLeftType != RAKECUT_TYPE.NONE ||\n UI.rakeCutRightType != RAKECUT_TYPE.NONE;\n\n if (cutoutCondition || rakeCutCondition) {\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n mesh.position.set(\n offsetX + this.MANAGER.patiosGroup.position.x,\n offsetY,\n offsetZ + this.roofGroup.position.z - (panelLength - startZOfPanel)\n );\n mesh.updateMatrix();\n\n let meshResult = mesh.clone();\n\n if (cutoutCondition) {\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(\n CSG.fromMesh(meshResult).subtract(csgObj),\n mesh.matrix\n );\n }\n }\n if (rakeCutCondition) {\n if (UI.rakeCutLeftType != RAKECUT_TYPE.NONE) {\n meshResult = CSG.toMesh(\n CSG.fromMesh(meshResult).subtract(this.csg_rakecutLeft),\n mesh.matrix\n );\n }\n if (UI.rakeCutRightType != RAKECUT_TYPE.NONE) {\n meshResult = CSG.toMesh(\n CSG.fromMesh(meshResult).subtract(this.csg_rakecutRight),\n mesh.matrix\n );\n }\n }\n\n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix));\n meshResult.applyMatrix4(matrixBefore);\n\n let buferGeo = new BufferGeometry().fromGeometry((meshResult as Mesh).geometry as Geometry);\n this.utils.changeGeoColor(buferGeo, new Vector3(0, 1, 0), UI.roofColor.toString());\n let newGeo = new Geometry().fromBufferGeometry(buferGeo);\n (meshResult as Mesh).geometry = newGeo;\n\n this.roofGroup.add(meshResult);\n } else {\n this.roofGroup.add(mesh);\n }\n }\n\n addBargeCappingCutRight() {\n //right\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n let offsetRight =\n this.totalBaySize / 2 +\n UI.overhangRight -\n UI.existingLength2;\n let scaleZ =\n (UI.existingWidth1 +\n this.APP.existingWallManager.geo_existingWallL2.width +\n 20) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue) /\n this.geo_roofPanelBargeCappingLeft.length;\n let mesh = new Mesh(\n this.geo_roofPanelBargeCappingRight.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.setX(offsetRight);\n mesh.scale.setZ(scaleZ);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n\n //back\n let offsetLeft = offsetRight + UI.existingLength2;\n let scaleX =\n UI.existingLength2 /\n this.geo_roofPanelBargeCappingFront.length;\n let offsetZ =\n UI.existingWidth1 +\n this.APP.existingWallManager.geo_existingWallL2.width +\n 10;\n mesh = new Mesh(\n this.geo_roofPanelBargeCappingFront.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.setX(offsetLeft);\n mesh.position.setZ(offsetZ);\n mesh.rotateY(Math.PI);\n mesh.scale.setX(scaleX);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n\n this.roofGroup.add(mesh);\n }\n addBargeCappingCutLeft() {\n //left\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n let offsetLeft =\n this.totalBaySize / 2 +\n UI.overhangLeft -\n UI.existingLength2;\n let scaleZ =\n (UI.existingWidth1 +\n this.APP.existingWallManager.geo_existingWallL2.width +\n 50) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue) /\n this.geo_roofPanelBargeCappingLeft.length;\n let mesh = new Mesh(\n this.geo_roofPanelBargeCappingLeft.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.setX(-offsetLeft);\n mesh.scale.setZ(scaleZ);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n\n //back\n let scaleX =\n UI.existingLength2 /\n this.geo_roofPanelBargeCappingFront.length;\n let offsetZ =\n UI.existingWidth1 +\n this.APP.existingWallManager.geo_existingWallL2.width +\n 10;\n mesh = new Mesh(\n this.geo_roofPanelBargeCappingFront.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.setX(-offsetLeft);\n mesh.position.setZ(offsetZ);\n mesh.rotateY(Math.PI);\n mesh.scale.setX(scaleX);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n\n this.roofGroup.add(mesh);\n }\n private addBargeCapping() {\n let mesh: Mesh;\n\n let extraWallWidth =\n this.APP.existingWallManager.geo_existingWallW1.width +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n\n let offsetXF = -(\n this.totalBaySize / 2 +\n UI.overhangLeft\n );\n let offsetXL1 =\n -(this.totalBaySize / 2 + UI.overhangLeft) +\n UI.existingLength2 -\n extraWallWidth;\n let offsetXL2 = -(\n this.totalBaySize / 2 +\n UI.overhangLeft\n );\n\n let offsetXR1 =\n this.totalBaySize / 2 +\n UI.overhangRight -\n UI.existingLength2 +\n this.APP.existingWallManager.geo_existingWallW1.width +\n 100;\n let offsetXR2 =\n this.totalBaySize / 2 + UI.overhangRight;\n\n let offsetZL = 0;\n let offsetZR = 0;\n let offsetZFront =\n (UI.span +\n UI.multiSpan +\n UI.overhangFront +\n UI.overhangBack) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n let bargeFrontLength = this.roofWidth;\n\n let scaleCutoutVer =\n this.utils.getHypotenuseByCos(\n UI.existingWidth1 +\n this.geo_roofPanelBargeCappingLeft.width,\n this.APP.sltRoofPitch.currentValue\n ) / this.geo_roofPanelBargeCappingLeft.length;\n //let scaleCutoutHor = (UI.existingLength2 - extraWallWidth) / this.geo_bargeCutoutLeftHor.length;\n\n let bargeLeftLength = this.roofLength;\n let bargeRightLength = this.roofLength;\n\n let offsetY = 0;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n //cutout\n if (\n UI.cutOutType == 1 &&\n UI.existingLength2 > 0 &&\n this.MANAGER.cutoutCondition &&\n (this.APP.sltExistingType.currentValue == 1 ||\n this.APP.sltExistingType.currentValue == 3)\n ) {\n bargeLeftLength -= UI.existingWidth1;\n offsetZL += this.utils.getHypotenuseByCos(\n UI.existingWidth1,\n this.APP.sltRoofPitch.currentValue\n );\n\n let bargeCutoutHorLength =\n UI.existingLength2 +\n UI.overhangLeft -\n extraWallWidth;\n\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n offsetXL1 += extraWallWidth;\n //scaleCutoutHor = (UI.existingLength2 ) / this.geo_bargeCutoutLeftHor.length;\n bargeCutoutHorLength += extraWallWidth;\n }\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n offsetXL1 =\n -this.APP.sldExistingLength.currentValue / 2 -\n this.APP.existingWallManager.geo_existingWallW1.width -\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n //scaleCutoutHor = ((this.roofWidth - (this.APP.sldExistingLength.currentValue + this.APP.existingWallManager.geo_existingWallW1.width * 2)) / 2 - EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK) / this.geo_bargeCutoutLeftHor.length;\n bargeCutoutHorLength =\n (this.roofWidth -\n (this.APP.sldExistingLength.currentValue +\n this.APP.existingWallManager.geo_existingWallW1.width * 2)) /\n 2 -\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n }\n\n offsetXL1 +=\n UI.overhangLeft -\n EXISTING_BUILDING_CONFIG.BARGE_ROOF_OFFSET_X;\n\n //scaleCutoutHor = bargeCutoutHorLength/this.geo_bargeCutoutLeftHor.length;\n\n //cutout Hor\n let offsetZ = this.utils.getHypotenuseByCos(\n UI.existingWidth1,\n this.APP.sltRoofPitch.currentValue\n );\n mesh = new Mesh(\n this.geo_bargeCutoutLeftHor.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXL1, offsetY, offsetZ);\n mesh.scale.setX(\n bargeCutoutHorLength / this.geo_bargeCutoutLeftHor.length\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n\n //cutout Ver\n mesh = new Mesh(\n this.geo_roofPanelBargeCappingLeft.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXL1, offsetY, 0);\n mesh.scale.setZ(scaleCutoutVer);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n }\n if (\n UI.cutOutType == 1 &&\n UI.existingLength2 > 0 &&\n this.MANAGER.cutoutCondition &&\n (this.APP.sltExistingType.currentValue == 2 ||\n this.APP.sltExistingType.currentValue == 3)\n ) {\n bargeRightLength -= UI.existingWidth1;\n let bargeCutoutHorLength =\n UI.existingLength2 +\n UI.overhangRight -\n extraWallWidth;\n offsetZR += this.utils.getHypotenuseByCos(\n UI.existingWidth1,\n this.APP.sltRoofPitch.currentValue\n );\n\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n offsetXR1 -= extraWallWidth;\n //scaleCutoutHor = (UI.existingLength2 ) / this.geo_bargeCutoutLeftHor.length;\n bargeCutoutHorLength += extraWallWidth;\n }\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n offsetXR1 =\n this.APP.sldExistingLength.currentValue / 2 +\n this.APP.existingWallManager.geo_existingWallW1.width +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n //scaleCutoutHor = ((this.roofWidth - (this.APP.sldExistingLength.currentValue + this.APP.existingWallManager.geo_existingWallW1.width * 2)) / 2 - EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK) / this.geo_bargeCutoutLeftHor.length;\n bargeCutoutHorLength =\n (this.roofWidth -\n (this.APP.sldExistingLength.currentValue +\n this.APP.existingWallManager.geo_existingWallW1.width * 2)) /\n 2 -\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n }\n\n offsetXR1 -=\n UI.overhangRight -\n EXISTING_BUILDING_CONFIG.BARGE_ROOF_OFFSET_X;\n\n //cutout hor\n let offsetZ = this.utils.getHypotenuseByCos(\n UI.existingWidth1,\n this.APP.sltRoofPitch.currentValue\n );\n mesh = new Mesh(\n this.geo_bargeCutoutRightHor.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXR1, offsetY, offsetZ);\n mesh.scale.setX(\n bargeCutoutHorLength / this.geo_bargeCutoutLeftHor.length\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n\n //cutout ver\n mesh = new Mesh(\n this.geo_roofPanelBargeCappingRight.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXR1, offsetY, 0);\n mesh.scale.setZ(scaleCutoutVer);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n }\n if (\n UI.cutOutType == 1 &&\n UI.existingLength2 > 0 &&\n this.MANAGER.cutoutCondition &&\n this.APP.sltExistingType.currentValue == 3\n ) {\n }\n\n //Rakecut\n if (\n UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE ||\n UI.rakeCutLeftType == RAKECUT_TYPE.STEP\n ) {\n offsetXF += UI.rakeCutLeftHor;\n bargeLeftLength -= UI.rakeCutLeftVer;\n bargeFrontLength -= UI.rakeCutLeftHor;\n }\n if (\n UI.rakeCutRightType == RAKECUT_TYPE.ANGLE ||\n UI.rakeCutRightType == RAKECUT_TYPE.STEP\n ) {\n bargeRightLength -= UI.rakeCutRightVer;\n bargeFrontLength -= UI.rakeCutRightHor;\n }\n\n let scaleXF = bargeFrontLength / this.geo_roofPanelBargeCappingFront.length;\n let scaleZLeft =\n this.utils.getHypotenuseByCos(\n bargeLeftLength,\n this.APP.sltRoofPitch.currentValue\n ) / this.geo_roofPanelBargeCappingLeft.length;\n let scaleZRight =\n this.utils.getHypotenuseByCos(\n bargeRightLength,\n this.APP.sltRoofPitch.currentValue\n ) / this.geo_roofPanelBargeCappingLeft.length;\n\n //left\n mesh = new Mesh(\n this.geo_roofPanelBargeCappingLeft.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXL2, offsetY, offsetZL);\n mesh.scale.setZ(scaleZLeft);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n\n this.roofGroup.add(mesh);\n\n //right\n mesh = new Mesh(\n this.geo_roofPanelBargeCappingRight.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXR2, offsetY, offsetZR);\n mesh.scale.setZ(scaleZRight);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n\n //front\n mesh = new Mesh(\n this.geo_roofPanelBargeCappingFront.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXF, 0, offsetZFront + 2);\n mesh.scale.setX(scaleXF);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n\n this.roofGroup.add(mesh);\n }\n private addBargeAngelRakecut() {\n if (\n UI.rakeCutLeftType != RAKECUT_TYPE.ANGLE &&\n UI.rakeCutRightType != RAKECUT_TYPE.ANGLE\n ) {\n return;\n }\n\n let offsetY = 0;\n let offsetZ =\n (UI.span +\n UI.multiSpan +\n UI.overhangFront +\n UI.overhangBack) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n let length = Math.sqrt(\n Math.pow(UI.rakeCutLeftVer, 2) +\n Math.pow(UI.rakeCutLeftHor, 2)\n );\n let scaleZ = length / this.geo_bargeRakecutLeft.length;\n\n let rotY = Math.atan(\n UI.rakeCutLeftHor /\n UI.rakeCutLeftVer\n );\n\n let offsetX =\n -this.totalBaySize / 2 -\n UI.overhangLeft +\n UI.rakeCutLeftHor;\n let mesh = new Mesh(\n this.geo_bargeRakecutLeft.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setZ(scaleZ);\n mesh.rotateY(rotY);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n let length = Math.sqrt(\n Math.pow(UI.rakeCutRightVer, 2) +\n Math.pow(UI.rakeCutRightHor, 2)\n );\n let scaleZ = length / this.geo_bargeRakecutLeft.length;\n\n let rotY = Math.atan(\n UI.rakeCutRightHor /\n UI.rakeCutRightVer\n );\n\n let offsetX =\n this.totalBaySize / 2 +\n UI.overhangRight -\n UI.rakeCutRightHor;\n let mesh = new Mesh(\n this.geo_bargeRakecutRight.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setZ(scaleZ);\n mesh.rotateY(-rotY);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n }\n }\n private addBargeStepRakecut() {\n if (\n UI.rakeCutLeftType != RAKECUT_TYPE.STEP &&\n UI.rakeCutRightType != RAKECUT_TYPE.STEP\n ) {\n return;\n }\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n let offsetXL =\n this.APP.dialogEditBay.totalBaySize / 2 +\n UI.overhangLeft;\n let offsetXR =\n this.APP.dialogEditBay.totalBaySize / 2 +\n UI.overhangRight;\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n let offsetZ = this.utils.getHypotenuseByCos(\n UI.span +\n UI.multiSpan +\n UI.overhangFront +\n UI.overhangBack -\n UI.rakeCutLeftVer,\n this.APP.sltRoofPitch.currentValue\n );\n let scaleZ =\n (UI.rakeCutLeftVer +\n this.geo_roofPanelBargeCappingLeft.width) /\n this.geo_roofPanelBargeCappingLeft.length;\n let scaleX =\n UI.rakeCutLeftHor /\n this.geo_roofPanelBargeCappingLeft.length;\n\n let bargeVer = new Mesh(\n this.geo_roofPanelBargeCappingLeft.geometry,\n MaterialManager.Instance().BARGE\n );\n bargeVer.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n bargeVer.position.set(\n -offsetXL + UI.rakeCutLeftHor,\n 0,\n offsetZ - this.geo_roofPanelBargeCappingLeft.width\n );\n bargeVer.scale.set(1, 1, scaleZ);\n\n let bargeHor = new Mesh(\n this.geo_roofPanelBargeCappingLeft.geometry,\n MaterialManager.Instance().BARGE\n );\n bargeHor.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n bargeHor.position.set(-offsetXL, 0, offsetZ);\n bargeHor.scale.set(1, 1, scaleX);\n bargeHor.rotateY(Math.PI / 2);\n\n this.roofGroup.add(bargeVer, bargeHor);\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n let offsetZ = this.utils.getHypotenuseByCos(\n UI.span +\n UI.multiSpan +\n UI.overhangFront +\n UI.overhangBack -\n UI.rakeCutRightVer,\n UI.patiosPitch\n );\n let scaleZ =\n (UI.rakeCutRightVer +\n this.geo_roofPanelBargeCappingLeft.width) /\n this.geo_roofPanelBargeCappingLeft.length;\n let scaleX =\n UI.rakeCutRightHor /\n this.geo_roofPanelBargeCappingLeft.length;\n\n let bargeVer = new Mesh(\n this.geo_roofPanelBargeCappingRight.geometry,\n MaterialManager.Instance().BARGE\n );\n bargeVer.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n bargeVer.position.set(\n offsetXR - UI.rakeCutRightHor,\n 0,\n offsetZ - this.geo_roofPanelBargeCappingLeft.width\n );\n bargeVer.scale.set(1, 1, scaleZ);\n\n let bargeHor = new Mesh(\n this.geo_roofPanelBargeCappingRight.geometry,\n MaterialManager.Instance().BARGE\n );\n bargeHor.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n bargeHor.position.set(offsetXR, 0, offsetZ);\n bargeHor.scale.set(1, 1, scaleX);\n bargeHor.rotateY(-Math.PI / 2);\n\n this.roofGroup.add(bargeVer, bargeHor);\n }\n }\n public addGutter() {\n let offsetX = -(\n this.totalBaySize / 2 +\n UI.overhangLeft\n );\n let offsetZ = -100;\n let offsetY = 0;\n let gutterLength =\n this.totalBaySize +\n UI.overhangLeft +\n UI.overhangRight;\n let extraWallWidth =\n this.APP.existingWallManager.geo_existingWallW1.width +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n\n //cutout\n if (\n UI.cutOutType == CUTOUT_ENABLE.YES &&\n this.MANAGER.cutoutCondition\n ) {\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n offsetX += UI.existingLength2;\n gutterLength -= UI.existingLength2;\n } else {\n offsetX += UI.existingLength2 - extraWallWidth;\n gutterLength -=\n UI.existingLength2 - extraWallWidth;\n }\n offsetX += UI.overhangLeft;\n gutterLength -= UI.overhangLeft;\n } else if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n gutterLength -= UI.existingLength2;\n } else {\n gutterLength -=\n UI.existingLength2 - extraWallWidth;\n }\n //offsetX -= UI.overhangRight;\n gutterLength -= UI.overhangRight;\n } else if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n offsetX +=\n this.cutoutExistingBothLength -\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n gutterLength =\n this.APP.sldExistingLength.currentValue + extraWallWidth * 2;\n }\n }\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n //back\n let gutterGroup = this.utils.createGutterGroup(\n this.geo_gutterFront,\n this.geo_gutterCap,\n gutterLength,\n new Vector3(offsetX, offsetY, offsetZ),\n new Vector3(\n this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue),\n 0,\n 0\n ),\n views,\n 1,\n true,\n true\n );\n\n this.addDownPipe(gutterGroup, gutterLength);\n\n this.roofGroup.add(gutterGroup);\n }\n private addDownPipe(gutterGroup: Group, gutterLength: number) {\n let meshPipe = new Mesh(\n this.geo_downPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipe.userData = { type: GEOMETRY_TYPE.DOWNPIPE_NOZZLE };\n meshPipe.scale.setY(100 / this.geo_downPipe.height);\n meshPipe.position.set(100, -190, this.geo_downPipe.width / 2 + 20);\n\n gutterGroup.add(meshPipe);\n }\n private totalHeightFromEaveHeightToTopOfExistingRoof(){\n const height = \n this.geometryManager.EAVE.EAVE.height \n + UI.fasciaDepth \n + UI.eaveWidth * this.utils.tan(UI.existingRoofPitch) \n + this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.height / this.utils.cos(UI.existingRoofPitch)\n\n return height\n }\n private totalHeightFromEaveHeightToTopOfFlyoverBraket(){\n const height = this.totalHeightFromEaveHeightToTopOfExistingRoof() + UI.braketHeight - FIT_FLYOVER_BRAKET_ON_ROOF;\n\n return height\n }\n public getRoofOffsetY() {\n return (\n this.APP.sldExistingWallHeight.currentValue +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geometryManager.getBeam().height -\n this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n UI.overhangBack\n );\n }\n\n public destroy(): void {\n this.unregisterEvent();\n }\n public onColorChanged() {\n if(this.utils && this.geo_RoofPanel.geometry){\n this.utils.changeGeoColor(this.geo_RoofPanel.geometry, new Vector3(0, 1, 0), UI.roofColor.toString());\n }\n }\n private registerEvent(): void {\n this.eventHandleId = this.onColorChanged.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sltColourRoof\n ];\n this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n\n this.controlsToRegisterEvent2 = [\n this.APP.sltRoofSheetingType,\n this.APP.sltRoofThickness,\n this.APP.sltBargeType,\n this.APP.sltDripBarge,\n this.APP.sltGutterType,\n ];\n this.controlsToRegisterEvent2.forEach((c) =>\n c.addAction(this.objectSizeChangedHandle)\n );\n }\n private unregisterEvent(): void {\n this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach((c) =>\n c.removeAction(this.objectSizeChangedHandle)\n );\n this.controlsToRegisterEvent2 = undefined;\n }\n private objectSizeChanged(preVal: number, curVal: number) {\n this.optimize().then(() => {\n this.load();\n });\n }\n private addCutout() {\n if (UI.cutOutType == 1) {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter((x) => x.userData.type == \"CUTOUT\")\n );\n\n let offsetX =\n this.APP.sldExistingLength.currentValue / 2 +\n this.APP.existingWallManager.geo_existingWallL2.width +\n 100;\n let offsetY = 0;\n let offsetZ = UI.existingWidth1 / 2 - UI.existingWallW1.width - this.APP.eaveManager.backOverhang - UI.overhangBack;\n\n let scaleX = (UI.existingLength2 + 5000) / 1000;\n if (scaleX == 0) scaleX = 1;\n let scaleY = (this.APP.sldExistingWallHeight.currentValue + 5000) / 1000;\n let scaleZ =\n (UI.existingWidth1 +\n UI.overhangBack +\n 5000) /\n 1000;\n if (scaleZ == 0) scaleZ = 1;\n\n // if(this.APP.sltExistingType.currentValue == 3){\n // offsetX -= 100;\n // }\n\n if (\n this.APP.sltExistingType.currentValue == 1 ||\n this.APP.sltExistingType.currentValue == 3\n ) {\n this.mesh_CutoutLeft = new Mesh(\n this.geo_cutoutLeft,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.mesh_CutoutLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"CUTOUT\",\n };\n\n this.mesh_CutoutLeft.position.set(-offsetX, offsetY, offsetZ);\n this.mesh_CutoutLeft.scale.set(scaleX, scaleY, scaleZ);\n\n //this.APP.scene.add(this.mesh_CutoutLeft);\n\n this.mesh_CutoutLeft.updateMatrix();\n this.csg_cutoutLeft = CSG.fromMesh(this.mesh_CutoutLeft);\n }\n if (\n this.APP.sltExistingType.currentValue == 2 ||\n this.APP.sltExistingType.currentValue == 3\n ) {\n this.mesh_CutoutRight = new Mesh(\n this.geo_cutoutRight,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.mesh_CutoutRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"CUTOUT\",\n };\n\n this.mesh_CutoutRight.position.set(offsetX, offsetY, offsetZ);\n this.mesh_CutoutRight.scale.set(scaleX, scaleY, scaleZ);\n\n //this.APP.scene.add(this.mesh_CutoutRight);\n\n this.mesh_CutoutRight.updateMatrix();\n this.csg_cutoutRight = CSG.fromMesh(this.mesh_CutoutRight);\n }\n }\n }\n private addAngelRakeCut() {\n let offsetXL =\n -this.totalBaySize / 2 -\n UI.overhangLeft +\n this.MANAGER.patiosGroup.position.x;\n let offsetXR =\n this.totalBaySize / 2 +\n UI.overhangRight +\n this.MANAGER.patiosGroup.position.x;\n let offsetY = -100;\n\n let offsetZ =\n UI.span +\n UI.multiSpan +\n UI.overhangFront -\n this.extraOffsetZ -\n UI.existingWidth1 / 2;\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n let angle = Math.atan(\n UI.rakeCutLeftHor /\n UI.rakeCutLeftVer\n );\n this.mesh_rakecutLeft = new Mesh(\n this.geo_rakecutLeft,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.mesh_rakecutLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"RAKECUT\",\n };\n\n this.mesh_rakecutLeft.position.set(\n offsetXL,\n offsetY,\n offsetZ - UI.rakeCutLeftVer\n );\n this.mesh_rakecutLeft.scale.set(5, 5, 5);\n this.mesh_rakecutLeft.rotateY(angle);\n\n // this.APP.scene.add(this.mesh_rakecutLeft);\n\n this.mesh_rakecutLeft.updateMatrix();\n this.csg_rakecutLeft = CSG.fromMesh(this.mesh_rakecutLeft);\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n let angle = Math.atan(\n UI.rakeCutRightHor /\n UI.rakeCutRightVer\n );\n this.mesh_rakecutRight = new Mesh(\n this.geo_rakecutRight,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.mesh_rakecutRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"RAKECUT\",\n };\n\n this.mesh_rakecutRight.position.set(\n offsetXR,\n offsetY,\n offsetZ - UI.rakeCutRightVer\n );\n this.mesh_rakecutRight.scale.set(5, 5, 5);\n this.mesh_rakecutRight.rotateY(-angle);\n\n // this.APP.scene.add(this.mesh_rakecutRight);\n\n this.mesh_rakecutRight.updateMatrix();\n this.csg_rakecutRight = CSG.fromMesh(this.mesh_rakecutRight);\n }\n }\n private addStepRakecut() {\n let offsetXL =\n -this.totalBaySize / 2 -\n UI.overhangLeft +\n this.MANAGER.patiosGroup.position.x;\n let offsetXR =\n this.totalBaySize / 2 +\n UI.overhangRight +\n this.MANAGER.patiosGroup.position.x;\n let offsetY = -100; //this.APP.sldExistingWallHeight.currentValue;\n\n let offsetZ =\n UI.span +\n UI.multiSpan +\n UI.overhangFront -\n this.extraOffsetZ -\n UI.existingWidth1 / 2;\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n this.mesh_rakecutLeft = new Mesh(\n this.geo_rakecutLeft,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.mesh_rakecutLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"RAKECUT\",\n };\n\n this.mesh_rakecutLeft.position.set(\n offsetXL + UI.rakeCutLeftHor,\n offsetY,\n offsetZ - UI.rakeCutLeftVer\n );\n this.mesh_rakecutLeft.scale.set(5, 5, 5);\n\n // this.APP.scene.add(this.mesh_rakecutLeft);\n\n this.mesh_rakecutLeft.updateMatrix();\n this.csg_rakecutLeft = CSG.fromMesh(this.mesh_rakecutLeft);\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n this.mesh_rakecutRight = new Mesh(\n this.geo_rakecutRight,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.mesh_rakecutRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"RAKECUT\",\n };\n\n this.mesh_rakecutRight.position.set(\n offsetXR - UI.rakeCutRightHor,\n offsetY,\n offsetZ - UI.rakeCutRightVer\n );\n this.mesh_rakecutRight.scale.set(5, 5, 5);\n\n // this.APP.scene.add(this.mesh_rakecutRight);\n\n this.mesh_rakecutRight.updateMatrix();\n this.csg_rakecutRight = CSG.fromMesh(this.mesh_rakecutRight);\n }\n }\n uiChangedDefer(previousValue: number, currentValue: number) {\n if (UI.cutOutType == 1) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => {\n this.load();\n }, this.deferTimeout);\n } else {\n this.load();\n }\n }\n}\n","import { Observable, Subject } from \"rxjs\";\nimport { debounce, debounceTime, map, takeLast } from \"rxjs/operators\";\nimport { Group, Material, Object3D } from \"three\";\nimport { GeometryManager } from \"src/app-ribspan/core/geometry.manager\";\nimport { MaterialManager } from \"src/app-ribspan/core/material.manager\";\nimport { HomeComponent } from \"src/app-ribspan/containers/home\";\nimport { registerEvents } from \"./ui.manager\";\nexport interface IManager {\n init: () => Promise\n optimize: () => Promise\n load: () => Promise\n onUIChange: () => void\n // calculate: () => Promise\n}\nexport class BaseManager implements IManager {\n controls = []\n controlsReload = []\n\n onUIChangePtr = this.onUIChange.bind(this)\n onGeometryChangePtr = this.onGeometryChange.bind(this)\n\n APP: HomeComponent\n geometryManager: GeometryManager;\n materialMgr = MaterialManager.Instance()\n container: Group = undefined\n subject: Subject\n \n constructor() {\n this.geometryManager = GeometryManager.Instance();\n\n this.subject = new Subject()\n this.subject.pipe(debounceTime(500)).subscribe(() => { \n console.log('subject debounce run')\n this.optimize().then(() => {this.load()}).then(()=>{\n HomeComponent.ins.renderStatic();\n })\n })\n }\n\n init(): Promise {\n this.APP = HomeComponent.ins\n\n return new Promise(resolve => {\n this.container = new Group()\n HomeComponent.ins.scene.add(this.container)\n registerEvents(this.controls, this.onUIChangePtr)\n registerEvents(this.controlsReload, this.onGeometryChangePtr)\n resolve()\n })\n }\n\n load(): Promise {\n return new Promise((resolve) => {\n this.container.children = []\n\n resolve()\n })\n }\n optimize(): Promise { return Promise.resolve() }\n // calculate(): Promise{ return Promise.resolve() }\n onUIChange(): void {\n this.load()\n }\n onGeometryChange(): void {\n this.subject.next()\n }\n\n\n registerEvents(controls, handler){\n controls.forEach(ctrl => {\n ctrl.addAction(handler)\n });\n }\n}","import { Box3, BoxBufferGeometry, FontLoader, Geometry, Group, Line, Line3, Material, Matrix4, Mesh, Object3D, Scene, TextBufferGeometry, TextGeometryParameters, Vector3 } from \"three\";\nimport { environment as env } from '../../environments/environment';\nimport { DIMENSION_LABEL_TYPE, GEOMETRY_TYPE, PATIOS_ROOF_TYPE } from 'src/app/app.config';\nimport { BUILDING_SIDE, CONNECTION_TYPE, EXISTING_BUILDING_CONFIG } from 'src/app/app.constants';\nimport { HomeComponent as AppComponent, HomeComponent } from 'src/app-ribspan/containers/home/home.component';\nimport Dimension, { AddDimensionOptions } from 'src/app-ribspan/models/Dimension';\nimport { GeometryManager } from './geometry.manager';\nimport { MaterialManager } from './material.manager';\nimport { GeometryInfo, LineType, Print2DText, Printing2DGeometry, Printing2DLine, ViewType } from 'src/app/core/models';\nimport { UI } from \"./ui\";\nimport { Util } from \"./utils\";\n\n// declare var KIEU_GABLE = {\n// NONE: -1,\n// FRONT: 0,\n// BACK: 1,\n// BOTH: 2\n// }\n\nexport class DimensionManager {\n private scene: Scene;\n private material: Material;\n private APP: AppComponent;\n public listText: THREE.Object3D[] = [];\n private utils: Util;\n\n private materialManager: MaterialManager;\n\n private dimensionPlanLeft: Object3D;\n private dimensionPlanTop: Object3D;\n private dimensionFrontLeft: Object3D;\n private dimensionFrontTop: Object3D;\n private dimensionLeftLeft: Object3D;\n private dimensionLeftTop: Object3D;\n\n private dimensionEaveHeight: Object3D;\n \n private dimensionRightTop: Object3D;\n private dimensionRightRight: Object3D;\n\n private lineCapGeo: GeometryInfo;\n private lineGeo: GeometryInfo;\n private textGeo: TextBufferGeometry;\n\n private dimensionDistance = 1500;\n private dimensionDistance2 = 500;\n\n private textDistance = 5000;\n\n private totalBaySize: number;\n private box: Box3;\n private startPos: Vector3;\n\n private font: any;\n private isReady = false;\n private textParameter: TextGeometryParameters;\n private geometryManager: GeometryManager;\n\n private options : AddDimensionOptions;\n\n private static instance: DimensionManager;\n static Instance(): DimensionManager{\n if (!DimensionManager.instance) {\n DimensionManager.instance = new DimensionManager();\n }\n return DimensionManager.instance;\n }\n\n private constructor() {\n this.utils = new Util();\n this.materialManager = MaterialManager.Instance();\n this.geometryManager = GeometryManager.Instance();\n }\n\n public init(app: AppComponent): Promise{\n this.APP = app;\n this.scene = this.APP.scene;\n this.material = MaterialManager.Instance().DIMENSION_TEXT;\n\n this.dimensionPlanTop = new Group();\n this.dimensionPlanTop.rotation.set(Math.PI/2,Math.PI,0);\n this.dimensionPlanTop.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.scene.add(this.dimensionPlanTop);\n\n this.dimensionPlanLeft = new Group();\n this.dimensionPlanLeft.rotation.set(-Math.PI/2, 0, -Math.PI/2);\n this.dimensionPlanLeft.userData = { type: GEOMETRY_TYPE.DIMENSION, position: { planLeft: true } };\n this.scene.add(this.dimensionPlanLeft);\n\n this.dimensionEaveHeight = new Group();\n this.dimensionEaveHeight.rotation.set(0, -Math.PI/2, Math.PI/2);\n this.dimensionEaveHeight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.scene.add(this.dimensionEaveHeight);\n\n this.dimensionRightTop = new Group(); \n this.dimensionRightTop.rotation.set(0,-Math.PI/2,0);\n this.dimensionRightTop.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionRightTop.visible = false;\n this.scene.add(this.dimensionRightTop);\n\n this.dimensionRightRight = new Group();\n this.dimensionRightRight.rotation.set(0,-Math.PI/2,-Math.PI/2);\n this.dimensionRightRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionRightRight.visible = false;\n this.scene.add(this.dimensionRightRight);\n\n this.dimensionLeftTop = new Group(); \n this.dimensionLeftTop.rotation.set(0,-Math.PI/2,0);\n this.dimensionLeftTop.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionLeftTop.visible = false;\n this.scene.add(this.dimensionLeftTop);\n\n this.dimensionLeftLeft = new Group();\n this.dimensionLeftLeft.rotation.set(0,-Math.PI/2,-Math.PI/2);\n this.dimensionLeftLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionLeftLeft.visible = false;\n this.scene.add(this.dimensionLeftLeft);\n\n this.dimensionFrontTop = new Group();\n this.dimensionFrontTop.rotation.set(0,Math.PI,0);\n this.dimensionFrontTop.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionFrontTop.visible = false;\n this.scene.add(this.dimensionFrontTop);\n\n this.dimensionFrontLeft = new Group();\n this.dimensionFrontLeft.rotation.set(0,0,Math.PI/2);\n this.dimensionFrontLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionFrontLeft.visible = false;\n this.scene.add(this.dimensionFrontLeft);\n\n //test\n // [\n // this.dimensionPlanTop,\n // this.dimensionPlanLeft,\n // this.dimensionRightTop,\n // this.dimensionRightRight,\n // this.dimensionLeftTop,\n // this.dimensionLeftLeft,\n // this.dimensionFrontTop,\n // this.dimensionFrontLeft\n // ].forEach(d => {d.visible = true});\n\n // app.sldSpan.addAction(this.onUIChanged.bind(this));\n // app.sldMultiSpan.addAction(this.onUIChanged.bind(this));\n // app.sldFrontOverhang.addAction(this.onUIChanged.bind(this));\n // app.sldExistingWidth1.addAction(this.onUIChanged.bind(this));\n // app.sldExistingWidth2.addAction(this.onUIChanged.bind(this));\n // app.sldExistingLength.addAction(this.onUIChanged.bind(this));\n // app.sldExistingLength2.addAction(this.onUIChanged.bind(this));\n // app.sltExistingType.addAction(this.onUIChanged.bind(this));\n // app.sldExistingWallHeight.addAction(this.onUIChanged.bind(this));\n // app.dialogEditBay.addAction(this.onUIChanged.bind(this));\n // app.sltStructureType.addAction(this.onUIChanged.bind(this));\n // app.sldLeftOverhang.addAction(this.onUIChanged.bind(this));\n // app.sldRightOverhang.addAction(this.onUIChanged.bind(this));\n\n return new Promise((resolve, reject) => {\n resolve();\n });\n }\n public optimize() : Promise{\n return new Promise((resolve, reject) => {\n this.lineGeo = this.geometryManager.getDimensionLine();\n this.lineCapGeo = this.geometryManager.getDimensionCap();\n\n resolve();\n });\n }\n public load(): Promise { \n return new Promise((resolve, reject) => {\n var loader = new FontLoader();\n loader.load( env.modelBaseUrl + '/assets/fonts/helvetiker_regular.typeface.json', (font) => {\n this.font = font;\n\n this.textParameter = {\n font: this.font,\n size: 200,\n height: 5,\n curveSegments: 10\n };\n this.options = {\n container: HomeComponent.ins.scene,\n start: new Vector3(),\n end: new Vector3(),\n linePos: new Vector3(),\n views: [],\n allowDrag: true,\n textParameter: this.textParameter,\n textPos: new Vector3(),\n labelType: null,\n fitZ: 10,\n hasTextClone: false,\n axis: 'x',\n lineLength: 0,\n onDragCallback: this.onDimDrag.bind(this),\n onDragStartCallback: this.onDimDragStart.bind(this)\n }\n\n this.isReady = true;\n this.draw(); \n\n resolve();\n })\n });\n }\n\n public unload(){\n this.scene.remove(this.dimensionPlanTop);\n this.scene.remove(this.dimensionPlanLeft);\n this.scene.remove(this.dimensionRightTop);\n this.scene.remove(this.dimensionRightRight);\n this.scene.remove(this.dimensionLeftTop);\n this.scene.remove(this.dimensionLeftLeft);\n this.scene.remove(this.dimensionFrontTop);\n this.scene.remove(this.dimensionFrontLeft);\n this.scene.remove(this.dimensionEaveHeight);\n }\n \n public draw(){\n if (!this.isReady) {\n return;\n }\n\n this.dimensionPlanTop.children = this.dimensionPlanTop.children.filter( el =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.LENGTH_1\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.LENGTH_2\n );\n this.dimensionPlanLeft.children = this.dimensionPlanLeft.children.filter( el =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.WIDTH_1\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.WIDTH_2\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.EAVE_WIDTH\n );\n this.dimensionEaveHeight.children = this.dimensionEaveHeight.children.filter( el =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.EAVE_HEIGHT_DIM\n );\n this.dimensionFrontTop.children = [];\n this.dimensionFrontLeft.children = [];\n this.dimensionLeftTop.children = [];\n this.dimensionLeftLeft.children = [];\n this.dimensionRightTop.children = [];\n this.dimensionRightRight.children = [];\n\n this.scene.remove(...this.scene.children.filter(c => c.userData.type == GEOMETRY_TYPE.DIRECTION_TEXT));\n \n this.totalBaySize = 0;\n for(let b of this.APP.dialogEditBay.listBay){\n this.totalBaySize += b.value;\n }\n\n this.box = this.utils.getSceneBox();\n \n this.addText(\"LEFT\", {position: {trai: true}});\n this.addText(\"RIGHT\", {position: {phai: true}});\n this.addText(\"FRONT\", {position: {truoc: true}});\n this.addText(\"BACK\", {position: {sau: true}});\n\n if(UI.structureType == CONNECTION_TYPE.FREE_STANDING){\n this.dimensionPlanTop.children = [];\n this.dimensionPlanLeft.children = [];\n this.dimensionEaveHeight.children = [];\n return;\n }\n\n this.drawDimensionPlanTop({length1: true}); \n if(this.APP.sldExistingLength2.currentValue > 0){\n this.drawDimensionPlanTop({length2: true});\n } else {\n this.dimensionPlanTop.children = this.dimensionPlanTop.children.filter(el => el.userData?.groupType !== DIMENSION_LABEL_TYPE.LENGTH_2)\n }\n \n this.drawDimensionPlanLeft({eaveWidth: true});\n //WIDTH 1 AND WIDTH 2 IN LEFT\n if(this.APP.sltExistingType.currentValue != 0 && this.APP.sltExistingType.currentValue != 4){\n if(this.APP.sldExistingWidth1.currentValue > 0){\n this.drawDimensionPlanLeft({width1: true});\n } else {\n this.dimensionPlanLeft.children = this.dimensionPlanLeft.children.filter(el => \n el.userData?.groupType !== DIMENSION_LABEL_TYPE.WIDTH_1\n )\n }\n if(this.APP.sldExistingWidth2.currentValue > 0){\n this.drawDimensionPlanLeft({width2: true});\n } else {\n this.dimensionPlanLeft.children = this.dimensionPlanLeft.children.filter(el => \n el.userData?.groupType !== DIMENSION_LABEL_TYPE.WIDTH_2\n )\n }\n } else {\n this.dimensionPlanLeft.children = this.dimensionPlanLeft.children.filter(el => \n el.userData?.groupType !== DIMENSION_LABEL_TYPE.WIDTH_1\n && el.userData?.groupType !== DIMENSION_LABEL_TYPE.WIDTH_2\n )\n }\n\n this.drawDimensionEaveHeight();\n \n this.drawDimensionFrontTop();\n this.drawDimensionFrontLeft();\n\n this.drawDimensionLeftTop();\n this.drawDimensionLeftLeft();\n \n this.drawDimensionRightTop();\n this.drawDimensionRightRight();\n\n let offset = this.calulateBoundingBox();\n this.dimensionPlanLeft.position.setX(offset.left);\n\n //this.getOutlines();\n }\n\n private drawDimensionPlanTop(userDataPos){\n let offsetZ = this.APP.sldExistingWidth1.currentValue/2 + this.dimensionDistance;\n this.dimensionPlanTop.position.setZ(-offsetZ);\n\n let views = [ { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS } ];\n\n if(userDataPos.length1){\n let offsetX = this.APP.sldExistingLength.currentValue/2;\n let scaleX = this.APP.sldExistingLength.currentValue/this.lineGeo.length;\n\n // NO delete\n //if(this.APP.sltExistingType.currentValue == 1 && this.APP.sldExistingWidth1.currentValue > 0){\n // cap1.position.setX(-offsetX);\n \n // offsetX = this.APP.sldExistingLength.currentValue/2 + this.APP.existingWallManager.geo_existingWallW1.width;\n // cap2.position.setX(offsetX);\n \n // scaleX = (this.APP.sldExistingLength.currentValue + this.APP.existingWallManager.geo_existingWallW1.width)/this.lineGeo.length;\n // line.scale.setX(scaleX);\n // line.position.setX(this.APP.existingWallManager.geo_existingWallW1.width/2);\n //}\n //else if(this.APP.sltExistingType.currentValue == 2 && this.APP.sldExistingWidth1.currentValue > 0){\n // cap1.position.setX(offsetX);\n \n // offsetX = this.APP.sldExistingLength.currentValue/2 + this.APP.existingWallManager.geo_existingWallW1.width;\n // cap2.position.setX(-offsetX);\n \n // scaleX = (this.APP.sldExistingLength.currentValue + this.APP.existingWallManager.geo_existingWallW1.width)/this.lineGeo.length;\n // line.scale.setX(scaleX);\n // line.position.setX(-this.APP.existingWallManager.geo_existingWallW1.width/2);\n //}\n //else if(this.APP.sltExistingType.currentValue == 3 && this.APP.sldExistingWidth1.currentValue > 0){\n // offsetX = this.APP.sldExistingLength.currentValue/2 + this.APP.existingWallManager.geo_existingWallW1.width;\n // cap1.position.setX(offsetX);\n // cap2.position.setX(-offsetX);\n \n // scaleX = (this.APP.sldExistingLength.currentValue + this.APP.existingWallManager.geo_existingWallW1.width*2)/this.lineGeo.length;\n // line.scale.setX(scaleX);\n //}\n \n let textStr = this.utils.getDimensionValue(this.APP.sldExistingLength.currentValue);\n let options : AddDimensionOptions = {... this.options,\n lineLength: this.APP.sldExistingLength.currentValue,\n container: this.dimensionPlanTop,\n views: views,\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.LENGTH_1,\n hasTextClone: true,\n textCloneUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0,0,0) },\n textCloneRotation: new Vector3(Math.PI,Math.PI,0),\n textCloneVisible: false\n }\n let dim = this.dimensionPlanTop.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.LENGTH_1) as Dimension;\n if(!dim){\n new Dimension(options);\n } else {\n dim.update(options);\n }\n }\n else if(userDataPos.length2){\n let offsetX = this.APP.sldExistingLength.currentValue/2 + this.APP.sldExistingLength2.currentValue;\n let textOffsetX = this.APP.sldExistingLength2.currentValue/2 + this.APP.sldExistingLength.currentValue/2;\n let scaleX = this.APP.sldExistingLength2.currentValue/this.lineGeo.length;\n\n let textStr = this.utils.getDimensionValue(this.APP.sldExistingLength2.currentValue);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n if(this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3){\n let options : AddDimensionOptions = {... this.options,\n container: this.dimensionPlanTop,\n views: views,\n textPos: new Vector3( textOffsetX, -200, 0),\n linePos: new Vector3( textOffsetX, 0, 0),\n lineLength: this.APP.sldExistingLength2.currentValue,\n labelType: DIMENSION_LABEL_TYPE.LENGTH_2,\n hasTextClone: true,\n textCloneUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0,0,0) },\n textCloneRotation: new Vector3(Math.PI,Math.PI,0),\n textCloneVisible: false,\n side: BUILDING_SIDE.LEFT\n }\n let dim = this.dimensionPlanTop.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.LENGTH_2 && el.userData?.side == BUILDING_SIDE.LEFT) as Dimension;\n if(!dim){\n new Dimension(options);\n } else {\n dim.update(options);\n }\n } else {\n this.dimensionPlanTop.children = this.dimensionPlanTop.children.filter(el => el.userData?.groupType !== DIMENSION_LABEL_TYPE.LENGTH_2 || (el.userData?.groupType !== DIMENSION_LABEL_TYPE.LENGTH_2 && el.userData?.side !== BUILDING_SIDE.LEFT))\n }\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n let options : AddDimensionOptions = {... this.options,\n container: this.dimensionPlanTop,\n views: views,\n textPos: new Vector3( -textOffsetX, -200, 0),\n linePos: new Vector3( -textOffsetX, 0, 0),\n lineLength: this.APP.sldExistingLength2.currentValue,\n labelType: DIMENSION_LABEL_TYPE.LENGTH_2,\n hasTextClone: true,\n textCloneUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0,0,0) },\n textCloneRotation: new Vector3(Math.PI,Math.PI,0),\n textCloneVisible: false,\n side: BUILDING_SIDE.RIGHT\n }\n let dim = this.dimensionPlanTop.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.LENGTH_2 && el.userData?.side == BUILDING_SIDE.RIGHT) as Dimension;\n if(!dim){\n new Dimension(options);\n } else {\n dim.update(options);\n }\n } else {\n this.dimensionPlanTop.children = this.dimensionPlanTop.children.filter(el => el.userData?.groupType !== DIMENSION_LABEL_TYPE.LENGTH_2 || (el.userData?.groupType == DIMENSION_LABEL_TYPE.LENGTH_2 && el.userData?.side !== BUILDING_SIDE.RIGHT))\n }\n }\n }\n onDimDrag(event){\n if(event.object.userData?.dimType == DIMENSION_LABEL_TYPE.LENGTH_1){\n const obj = event.object as Mesh\n obj.position.z = 0\n obj.updateMatrixWorld()\n const pos = obj.position.clone();\n event.object.position.z = 0;\n event.object.position.y = 0;\n if (event.object.position.x < - HomeComponent.ins.sldExistingLength.maxValue / 2){\n event.object.position.x = - HomeComponent.ins.sldExistingLength.maxValue / 2\n } else if (event.object.position.x > HomeComponent.ins.sldExistingLength.maxValue / 2){\n event.object.position.x = HomeComponent.ins.sldExistingLength.maxValue / 2\n }\n if(event.object.userData?.left){\n if(event.object.position.x < HomeComponent.ins.sldExistingLength.minValue / 2){\n event.object.position.x = HomeComponent.ins.sldExistingLength.minValue / 2\n }\n }\n if(event.object.userData?.right){\n if(event.object.position.x > - HomeComponent.ins.sldExistingLength.minValue / 2){\n event.object.position.x = - HomeComponent.ins.sldExistingLength.minValue / 2\n }\n }\n\n let distance = HomeComponent.ins.sldExistingLength.currentValue;\n if(obj.userData.left){\n if(pos.x > this.startPos.x){\n distance = HomeComponent.ins.sldExistingLength.currentValue + 2 * (pos.x - this.startPos.x);\n } else if (pos.x < this.startPos.x){\n distance = HomeComponent.ins.sldExistingLength.currentValue - 2 * (- pos.x + this.startPos.x);\n }\n } else {\n if(pos.x > this.startPos.x){\n distance = HomeComponent.ins.sldExistingLength.currentValue - 2 * (pos.x - this.startPos.x);\n } else if (pos.x < this.startPos.x){\n distance = HomeComponent.ins.sldExistingLength.currentValue + 2 * (- pos.x + this.startPos.x);\n }\n }\n distance = Math.round(distance / 10) * 10;\n if(distance < HomeComponent.ins.sldExistingLength.minValue){\n distance = HomeComponent.ins.sldExistingLength.minValue;\n }\n if(distance > HomeComponent.ins.sldExistingLength.maxValue){\n distance = HomeComponent.ins.sldExistingLength.maxValue\n }\n if(HomeComponent.ins.sldExistingLength._isDisable){\n HomeComponent.ins.sldExistingLength.setValue(UI.existingLength1);\n } else {\n HomeComponent.ins.sldExistingLength.setValue(distance);\n }\n } else if ( event.object.userData?.dimType == DIMENSION_LABEL_TYPE.LENGTH_2 ){\n const obj = event.object as Mesh\n obj.position.z = 0\n obj.updateMatrixWorld()\n const pos = obj.position.clone();\n event.object.position.z = 0;\n event.object.position.y = 0;\n if(this.startPos.x < 0){\n if (event.object.position.x < - UI.existingLength1 / 2 - HomeComponent.ins.sldExistingLength2.maxValue){\n event.object.position.x = - UI.existingLength1 / 2 - HomeComponent.ins.sldExistingLength2.maxValue\n } \n if (event.object.position.x > - UI.existingLength1 / 2){\n event.object.position.x = - UI.existingLength1 / 2\n }\n if(event.object.userData?.right){\n if(event.object.position.x > - UI.existingLength1 / 2 - HomeComponent.ins.sldExistingLength2.minValue){\n event.object.position.x = - UI.existingLength1 / 2 - HomeComponent.ins.sldExistingLength2.minValue\n }\n }\n if(event.object.userData?.left){\n if(event.object.position.x < - UI.existingLength1 / 2){\n event.object.position.x = - UI.existingLength1 / 2\n }\n }\n }\n if(this.startPos.x > 0){\n if (event.object.position.x > UI.existingLength1 / 2 + HomeComponent.ins.sldExistingLength2.maxValue){\n event.object.position.x = UI.existingLength1 / 2 + HomeComponent.ins.sldExistingLength2.maxValue\n } \n if (event.object.position.x < UI.existingLength1 / 2){\n event.object.position.x = UI.existingLength1 / 2\n }\n if(event.object.userData?.left){\n if(event.object.position.x < UI.existingLength1 / 2 + HomeComponent.ins.sldExistingLength2.minValue){\n event.object.position.x = UI.existingLength1 / 2 + HomeComponent.ins.sldExistingLength2.minValue\n }\n }\n if(event.object.userData?.right){\n if(event.object.position.x > UI.existingLength1 / 2){\n event.object.position.x = UI.existingLength1 / 2\n }\n }\n }\n let distance = HomeComponent.ins.sldExistingLength2.currentValue;\n if(this.startPos.x < 0){\n // RIGHT\n if(obj.userData.left){\n if(pos.x > this.startPos.x){\n distance = HomeComponent.ins.sldExistingLength2.currentValue + (pos.x - this.startPos.x);\n } else if (obj.position.x < this.startPos.x){\n distance = HomeComponent.ins.sldExistingLength2.currentValue - (- pos.x + this.startPos.x);\n }\n } else {\n if(pos.x > this.startPos.x){\n distance = HomeComponent.ins.sldExistingLength2.currentValue - (pos.x - this.startPos.x);\n } else if (pos.x < this.startPos.x){\n distance = HomeComponent.ins.sldExistingLength2.currentValue + (- pos.x + this.startPos.x);\n }\n }\n } else if(this.startPos.x > 0){\n // LEFT\n if(obj.userData.left){\n if(pos.x > this.startPos.x){\n distance = HomeComponent.ins.sldExistingLength2.currentValue + (pos.x - this.startPos.x);\n } else if (pos.x < this.startPos.x){\n distance = HomeComponent.ins.sldExistingLength2.currentValue - (- pos.x + this.startPos.x);\n }\n } else {\n if(pos.x > this.startPos.x){\n distance = HomeComponent.ins.sldExistingLength2.currentValue - (pos.x - this.startPos.x);\n } else if (pos.x < this.startPos.x){\n distance = HomeComponent.ins.sldExistingLength2.currentValue + (- pos.x + this.startPos.x);\n }\n }\n }\n distance = Math.round(distance / 10) * 10;\n if(distance < HomeComponent.ins.sldExistingLength2.minValue){\n distance = HomeComponent.ins.sldExistingLength2.minValue;\n }\n if(distance > HomeComponent.ins.sldExistingLength2.maxValue){\n distance = HomeComponent.ins.sldExistingLength2.maxValue\n }\n HomeComponent.ins.sldExistingLength2.setValue(distance);\n } else if ( event.object.userData?.dimType == DIMENSION_LABEL_TYPE.WIDTH_1 ){\n const obj = event.object as Mesh\n obj.position.z = 0\n obj.updateMatrixWorld()\n const pos = obj.position.clone();\n event.object.position.z = 0;\n event.object.position.y = 0;\n if (event.object.position.x < - HomeComponent.ins.sldExistingWidth1.maxValue / 2){\n event.object.position.x = - HomeComponent.ins.sldExistingWidth1.maxValue / 2\n } else if (event.object.position.x > HomeComponent.ins.sldExistingWidth1.maxValue / 2){\n event.object.position.x = HomeComponent.ins.sldExistingWidth1.maxValue / 2\n }\n if(event.object.userData?.left){\n if(event.object.position.x < HomeComponent.ins.sldExistingWidth1.minValue / 2){\n event.object.position.x = HomeComponent.ins.sldExistingWidth1.minValue / 2\n }\n }\n if(event.object.userData?.right){\n if(event.object.position.x > - HomeComponent.ins.sldExistingWidth1.minValue / 2){\n event.object.position.x = - HomeComponent.ins.sldExistingWidth1.minValue / 2\n }\n }\n let distance = HomeComponent.ins.sldExistingWidth1.currentValue;\n if(obj.userData.left){\n if(pos.x > this.startPos.x){\n distance = HomeComponent.ins.sldExistingWidth1.currentValue + 2 * (pos.x - this.startPos.x);\n } else if (pos.x < this.startPos.x){\n distance = HomeComponent.ins.sldExistingWidth1.currentValue - 2 * (- pos.x + this.startPos.x);\n }\n } else {\n if(pos.x > this.startPos.x){\n distance = HomeComponent.ins.sldExistingWidth1.currentValue - 2 * (pos.x - this.startPos.x);\n } else if (pos.x < this.startPos.x){\n distance = HomeComponent.ins.sldExistingWidth1.currentValue + 2 * (- pos.x + this.startPos.x);\n }\n }\n distance = Math.round(distance / 10) * 10;\n if(distance < HomeComponent.ins.sldExistingWidth1.minValue){\n distance = HomeComponent.ins.sldExistingWidth1.minValue;\n }\n if(distance > HomeComponent.ins.sldExistingWidth1.maxValue){\n distance = HomeComponent.ins.sldExistingWidth1.maxValue\n }\n HomeComponent.ins.sldExistingWidth1.setValue(distance);\n } else if ( event.object.userData?.dimType == DIMENSION_LABEL_TYPE.WIDTH_2 ){\n const obj = event.object as Mesh\n obj.position.z = 0\n obj.updateMatrixWorld()\n const pos = obj.position.clone();\n event.object.position.z = 0;\n event.object.position.y = 0;\n if (event.object.position.x < UI.existingWidth1 / 2){\n event.object.position.x = UI.existingWidth1 / 2\n } else if (event.object.position.x > UI.existingWidth1 / 2 + HomeComponent.ins.sldExistingWidth2.maxValue){\n event.object.position.x = UI.existingWidth1 / 2 + HomeComponent.ins.sldExistingWidth2.maxValue\n }\n if(event.object.userData?.left){\n if(event.object.position.x < UI.existingWidth1 / 2 + HomeComponent.ins.sldExistingWidth2.minValue / 2){\n event.object.position.x = UI.existingWidth1 / 2 + HomeComponent.ins.sldExistingWidth2.minValue / 2\n }\n }\n if(event.object.userData?.right){\n if(event.object.position.x > UI.existingWidth1 / 2){\n event.object.position.x = UI.existingWidth1 / 2\n }\n }\n let distance = HomeComponent.ins.sldExistingWidth2.currentValue;\n if(obj.userData?.left){\n if(pos.x > this.startPos.x){\n distance = HomeComponent.ins.sldExistingWidth2.currentValue + (pos.x - this.startPos.x);\n } else if (obj.position.x < this.startPos.x){\n distance = HomeComponent.ins.sldExistingWidth2.currentValue - (- pos.x + this.startPos.x);\n }\n } else {\n if(pos.x > this.startPos.x){\n distance = HomeComponent.ins.sldExistingWidth2.currentValue - (pos.x - this.startPos.x);\n } else if (pos.x < this.startPos.x){\n distance = HomeComponent.ins.sldExistingWidth2.currentValue + (- pos.x + this.startPos.x);\n }\n }\n console.log('posx', pos.x, this.startPos.x,distance)\n distance = Math.round(distance / 10) * 10;\n if(distance < HomeComponent.ins.sldExistingWidth2.minValue){\n distance = HomeComponent.ins.sldExistingWidth2.minValue;\n }\n if(distance > HomeComponent.ins.sldExistingWidth2.maxValue){\n distance = HomeComponent.ins.sldExistingWidth2.maxValue\n }\n HomeComponent.ins.sldExistingWidth2.setValue(distance);\n } else if ( event.object.userData?.dimType == DIMENSION_LABEL_TYPE.EAVE_HEIGHT_DIM ){\n const obj = event.object as Mesh\n obj.position.z = 0\n obj.updateMatrixWorld()\n const pos = obj.position.clone();\n event.object.position.z = 0;\n event.object.position.y = 0;\n if (event.object.position.x < - HomeComponent.ins.sldExistingWallHeight.maxValue / 2){\n event.object.position.x = - HomeComponent.ins.sldExistingWallHeight.maxValue / 2\n } else if (event.object.position.x > HomeComponent.ins.sldExistingWallHeight.maxValue / 2){\n event.object.position.x = HomeComponent.ins.sldExistingWallHeight.maxValue / 2\n }\n if(event.object.userData?.left){\n if(event.object.position.x < HomeComponent.ins.sldExistingWallHeight.minValue / 2){\n event.object.position.x = HomeComponent.ins.sldExistingWallHeight.minValue / 2\n }\n }\n if(event.object.userData?.right){\n if(event.object.position.x > - HomeComponent.ins.sldExistingWallHeight.minValue / 2){\n event.object.position.x = - HomeComponent.ins.sldExistingWallHeight.minValue / 2\n }\n }\n let distance = HomeComponent.ins.sldExistingWallHeight.currentValue;\n if(obj.userData.left){\n if(pos.x > this.startPos.x){\n distance = HomeComponent.ins.sldExistingWallHeight.currentValue + (pos.x - this.startPos.x);\n } else if (pos.x < this.startPos.x){\n distance = HomeComponent.ins.sldExistingWallHeight.currentValue - (- pos.x + this.startPos.x);\n }\n } else {\n if(pos.x > this.startPos.x){\n distance = HomeComponent.ins.sldExistingWallHeight.currentValue - (pos.x - this.startPos.x);\n } else if (pos.x < this.startPos.x){\n distance = HomeComponent.ins.sldExistingWallHeight.currentValue + (- pos.x + this.startPos.x);\n }\n }\n distance = Math.round(distance / 10) * 10;\n if(distance < HomeComponent.ins.sldExistingWallHeight.minValue){\n distance = HomeComponent.ins.sldExistingWallHeight.minValue;\n }\n if(distance > HomeComponent.ins.sldExistingWallHeight.maxValue){\n distance = HomeComponent.ins.sldExistingWallHeight.maxValue\n }\n HomeComponent.ins.sldExistingWallHeight.setValue(distance);\n }\n this.startPos = event.object.position.clone()\n }\n onDimDragStart(event){\n this.startPos = event.object.position.clone();\n }\n private drawDimensionEaveHeight() {\n let _dimensionDistane = this.dimensionDistance2;\n if(UI.existingType == BUILDING_SIDE.LEFT || UI.existingType == BUILDING_SIDE.RIGHT){\n _dimensionDistane = this.dimensionDistance;\n }\n\n let dimensionOffsetX = this.box.min.x - this.dimensionDistance2;\n if (UI.structureType == CONNECTION_TYPE.FASCIA || UI.structureType == CONNECTION_TYPE.FASCIA_UPSTAND) {\n if (UI.existingType == 2) {\n dimensionOffsetX -= UI.eaveWidth;\n }\n }\n this.dimensionEaveHeight.position.set(dimensionOffsetX, UI.eaveHeight / 2, -UI.existingWidth1 / 2);\n\n let textStr = this.utils.getDimensionValue(UI.eaveHeight);\n let options : AddDimensionOptions = {\n ... this.options,\n lineLength: UI.eaveHeight,\n container: this.dimensionEaveHeight,\n views: [],\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, 200, 0),\n labelType: DIMENSION_LABEL_TYPE.EAVE_HEIGHT_DIM,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [] },\n allowDrag: true\n }\n let dimBay = this.dimensionEaveHeight.children.find(el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.EAVE_HEIGHT_DIM\n ) as Dimension;\n if(!dimBay){\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n private drawDimensionPlanLeft(userDataPos){\n let _dimensionDistane = this.dimensionDistance2;\n if(this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3){\n _dimensionDistane = this.dimensionDistance;\n }\n\n //let dimensionOffsetX = this.APP.sldExistingLength.currentValue/2 + this.APP.sldExistingLength2.currentValue + _dimensionDistane;\n let dimensionOffsetX = this.box.min.x - this.dimensionDistance2;\n\n if (this.APP.sltStructureType.currentValue == 3 || this.APP.sltStructureType.currentValue == 5) {\n if (this.APP.sltExistingType.currentValue == 2) {\n dimensionOffsetX -= this.APP.sldEaveWidth.currentValue;\n }\n }\n\n //if(this.APP.sltExistingType.currentValue == 2){\n // dimensionOffsetX -= this.APP.sldExistingLength2.currentValue;\n //}\n\n this.dimensionPlanLeft.position.setX(dimensionOffsetX);\n\n let views = [ { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS } ];\n\n if(userDataPos.eaveWidth){\n\n let textStr = this.utils.getDimensionValue(this.APP.sldEaveWidth.currentValue);\n let options : AddDimensionOptions = {... this.options,\n lineLength: this.APP.sldEaveWidth.currentValue,\n container: this.dimensionPlanLeft,\n views: views,\n textPos: this.APP.sltExistingType.currentValue == 0 ? new Vector3(this.APP.sldEaveWidth.currentValue/2, - 200, 0) : new Vector3( - this.APP.sldExistingWidth1.currentValue/2 + this.APP.sldEaveWidth.currentValue/2, 200, 0),\n linePos: this.APP.sltExistingType.currentValue == 0 ? new Vector3(this.APP.sldEaveWidth.currentValue/2, 0, 0) : new Vector3( - this.APP.sldExistingWidth1.currentValue/2 + this.APP.sldEaveWidth.currentValue/2, 400, 0),\n labelType: DIMENSION_LABEL_TYPE.EAVE_WIDTH,\n hasTextClone: false,\n textCloneUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0,Math.PI/2,0) },\n textCloneRotation: new Vector3(Math.PI,Math.PI,0),\n textCloneVisible: false,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: this.APP.sldEaveWidth.currentValue.toString(), views: views, rotation: new Vector3(0,Math.PI/2,0) },\n allowDrag: false,\n visible: false\n }\n let dim = this.dimensionPlanLeft.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.EAVE_WIDTH) as Dimension;\n if(!dim){\n new Dimension(options);\n } else {\n dim.update(options);\n }\n }\n\n if(userDataPos.width1){\n let offsetZ = this.APP.sldExistingWidth1.currentValue/2;\n let scaleZ = this.APP.sldExistingWidth1.currentValue/this.lineGeo.length;\n\n let textStr = this.utils.getDimensionValue(this.APP.sldExistingWidth1.currentValue);\n let options : AddDimensionOptions = {... this.options,\n lineLength: this.APP.sldExistingWidth1.currentValue,\n container: this.dimensionPlanLeft,\n views: views,\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.WIDTH_1,\n hasTextClone: false,\n textCloneUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0,Math.PI/2,0) },\n textCloneRotation: new Vector3(Math.PI,Math.PI,0),\n textCloneVisible: false,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: this.APP.sldExistingWidth1.currentValue.toString(), views: views, rotation: new Vector3(0,Math.PI/2,0) }\n }\n let dim = this.dimensionPlanLeft.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.WIDTH_1) as Dimension;\n if(!dim){\n new Dimension(options);\n } else {\n dim.update(options);\n }\n }\n if(userDataPos.width2){\n let textStr = this.utils.getDimensionValue(this.APP.sldExistingWidth2.currentValue);\n let options : AddDimensionOptions = {... this.options,\n container: this.dimensionPlanLeft,\n views: views,\n textPos: new Vector3( this.APP.sldExistingWidth1.currentValue/2 + this.APP.sldExistingWidth2.currentValue/2, -200, 0),\n linePos: new Vector3( this.APP.sldExistingWidth1.currentValue/2 + this.APP.sldExistingWidth2.currentValue/2, 0, 0),\n lineLength: this.APP.sldExistingWidth2.currentValue,\n labelType: DIMENSION_LABEL_TYPE.WIDTH_2,\n hasTextClone: false,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0,Math.PI/2,0) },\n textCloneUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0,Math.PI/2,0) },\n textCloneRotation: new Vector3(Math.PI,Math.PI,0),\n textCloneVisible: false\n }\n let dim = this.dimensionPlanLeft.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.WIDTH_2) as Dimension;\n if(!dim){\n new Dimension(options);\n } else {\n dim.update(options);\n }\n }\n }\n private drawDimensionFrontLeft(){\n // if(this.APP.sltExistingType.currentValue == 0){\n // return;\n // }\n\n let dimensionOffsetX = this.APP.sldExistingLength.currentValue/2 + this.APP.sldExistingLength2.currentValue + this.dimensionDistance2;\n\n if(this.APP.sltExistingType.currentValue == 2){\n dimensionOffsetX -= this.APP.sldExistingLength2.currentValue;\n }\n \n this.dimensionFrontLeft.position.set(-dimensionOffsetX,this.APP.sldExistingWallHeight.currentValue/2,0);\n\n let offsetY = this.APP.sldExistingWallHeight.currentValue/2;\n let scaleY = this.APP.sldExistingWallHeight.currentValue/this.lineGeo.length;\n\n let views = [ { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS } ];\n\n if(this.APP.sltExistingType.currentValue == 0)\n views = null;\n \n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetY);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetY);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n line.scale.setX(scaleY);\n\n let textStr = this.utils.getDimensionValue(this.APP.sldExistingWallHeight.currentValue);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, rotation: new Vector3(0,0,Math.PI/2), views: views };\n text.position.setY(200);\n \n this.dimensionFrontLeft.add(line, cap1, cap2, text, ...this.utils.addArrowForLine(line));\n }\n private drawDimensionFrontTop(){ \n if(this.APP.sltExistingType.currentValue == 0){\n return;\n }\n \n let offsetY = this.APP.sldExistingWallHeight.currentValue + this.APP.sldFlyOverBracketHeight.currentValue + EXISTING_BUILDING_CONFIG.EXTRA_BRACKET_HEIGHT + this.dimensionDistance2;\n \n if (this.APP.sltStructureType.currentValue == 0 || this.APP.sltStructureType.currentValue == 3 || this.APP.sltStructureType.currentValue == 5) {\n if (this.APP.sldExistingWidth1.currentValue == 0) {\n offsetY = this.APP.sldBuildingHeight.currentValue + this.dimensionDistance2;\n }\n }\n\n if(this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF && this.APP.isFBRoof){\n if(UI.structureType === CONNECTION_TYPE.FLY_OVER){\n offsetY = UI.eaveHeight\n + UI.braketHeight\n + this.geometryManager.getBeam().height\n + this.utils.tan(UI.patiosPitch) * (UI.span / 2)\n + this.dimensionDistance2\n }\n if(UI.structureType === CONNECTION_TYPE.FASCIA_UPSTAND){\n offsetY = UI.existingWallHeight\n + +UI.upstandBraketType\n + this.geometryManager.getBeam().height\n + this.utils.tan(UI.patiosPitch) * (UI.span / 2)\n + this.dimensionDistance2\n }\n if(UI.structureType === CONNECTION_TYPE.EXISTING){\n offsetY = UI.existingWallHeight + this.dimensionDistance2\n }\n }\n if(this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF && !this.APP.isFBRoof){\n if(UI.structureType === CONNECTION_TYPE.FLY_OVER){\n offsetY = UI.eaveHeight\n + UI.braketHeight\n + this.geometryManager.getBeam().height\n + this.utils.tan(UI.patiosPitch) * ((UI.span + UI.multiSpan) / 2)\n + this.dimensionDistance2\n }\n if(UI.structureType === CONNECTION_TYPE.FASCIA_UPSTAND){\n offsetY = UI.existingWallHeight\n + +UI.upstandBraketType\n + this.geometryManager.getBeam().height\n + this.utils.tan(UI.patiosPitch) * ((UI.span + UI.multiSpan) / 2)\n + this.dimensionDistance2\n }\n if(UI.structureType === CONNECTION_TYPE.FREE_STANDING){\n offsetY = this.APP.sldBuildingHeight.currentValue + this.utils.tan(this.APP.sltRoofPitch.currentValue) * (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2 + this.dimensionDistance2\n }\n }\n\n this.dimensionFrontTop.position.setY(offsetY);\n\n let views = [ { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPlanTop.children.forEach( dimGroup => {\n dimGroup.children.forEach(c => {\n let clone = c.clone();\n clone.visible = false;\n clone.userData['views'] = views;\n \n if(c.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && c.visible){\n clone.position.setY(-c.position.y);\n clone.rotation.set(0, Math.PI, 0);\n } else if(c.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && !c.visible){\n return;\n }\n this.dimensionFrontTop.add(clone);\n })\n })\n }\n private drawDimensionLeftTop() {\n let offsetY = this.APP.sldExistingWallHeight.currentValue + this.APP.sldFlyOverBracketHeight.currentValue + EXISTING_BUILDING_CONFIG.EXTRA_BRACKET_HEIGHT + this.dimensionDistance2\n if(this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF && this.APP.isFBRoof){\n if(UI.structureType === CONNECTION_TYPE.FLY_OVER){\n offsetY = UI.eaveHeight\n + UI.braketHeight\n + this.geometryManager.getBeam().height\n + this.utils.tan(UI.patiosPitch) * (UI.span / 2)\n + this.dimensionDistance2\n }\n if(UI.structureType === CONNECTION_TYPE.FASCIA_UPSTAND){\n offsetY = UI.existingWallHeight\n + +UI.upstandBraketType\n + this.geometryManager.getBeam().height\n + this.utils.tan(UI.patiosPitch) * (UI.span / 2)\n + this.dimensionDistance2\n }\n if(UI.structureType === CONNECTION_TYPE.EXISTING){\n offsetY = UI.existingWallHeight + this.dimensionDistance2\n }\n }\n if(this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF && !this.APP.isFBRoof){\n if(UI.structureType === CONNECTION_TYPE.FLY_OVER){\n offsetY = UI.eaveHeight\n + UI.braketHeight\n + this.geometryManager.getBeam().height\n + this.utils.tan(UI.patiosPitch) * ((UI.span + UI.multiSpan) / 2)\n + this.dimensionDistance2\n }\n if(UI.structureType === CONNECTION_TYPE.FASCIA_UPSTAND){\n offsetY = UI.existingWallHeight\n + +UI.upstandBraketType\n + this.geometryManager.getBeam().height\n + this.utils.tan(UI.patiosPitch) * ((UI.span + UI.multiSpan) / 2)\n + this.dimensionDistance2\n }\n if(UI.structureType === CONNECTION_TYPE.FREE_STANDING){\n offsetY = this.APP.sldBuildingHeight.currentValue + this.utils.tan(this.APP.sltRoofPitch.currentValue) * (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2 + this.dimensionDistance2\n }\n }\n this.dimensionLeftTop.position.setY(offsetY);\n //this.dimensionTopLeft.position.setY(-1000);\n\n let views = [];\n\n \n this.dimensionPlanLeft.children.forEach( dimGroup => {\n if(this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3){\n views = [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }];\n } else if(dimGroup.userData.groupType == DIMENSION_LABEL_TYPE.EAVE_WIDTH){\n views = [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }];\n } else {\n views = [];\n }\n dimGroup.children.forEach(c => {\n let clone = c.clone();\n clone.userData['views'] = views;\n \n if(views.length != 0 && c.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && c.visible && dimGroup.userData.groupType == DIMENSION_LABEL_TYPE.EAVE_WIDTH){\n clone.position.setY(c.position.y + 400);\n } else if(views.length != 0 && c.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && c.visible){\n clone.position.setY(-c.position.y);\n } else if(c.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && !c.visible){\n return;\n }\n this.dimensionLeftTop.add(clone);\n })\n })\n }\n private drawDimensionRightTop(){\n let offsetY = this.APP.sldExistingWallHeight.currentValue + this.APP.sldFlyOverBracketHeight.currentValue + EXISTING_BUILDING_CONFIG.EXTRA_BRACKET_HEIGHT + this.dimensionDistance2\n if(this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF && this.APP.isFBRoof){\n if(UI.structureType === CONNECTION_TYPE.FLY_OVER){\n offsetY = UI.eaveHeight\n + UI.braketHeight\n + this.geometryManager.getBeam().height\n + this.utils.tan(UI.patiosPitch) * (UI.span / 2)\n + this.dimensionDistance2\n }\n if(UI.structureType === CONNECTION_TYPE.FASCIA_UPSTAND){\n offsetY = UI.existingWallHeight\n + +UI.upstandBraketType\n + this.geometryManager.getBeam().height\n + this.utils.tan(UI.patiosPitch) * (UI.span / 2)\n + this.dimensionDistance2\n }\n if(UI.structureType === CONNECTION_TYPE.EXISTING){\n offsetY = UI.existingWallHeight + this.dimensionDistance2\n }\n }\n if(this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF && !this.APP.isFBRoof){\n if(UI.structureType === CONNECTION_TYPE.FLY_OVER){\n offsetY = UI.eaveHeight\n + UI.braketHeight\n + this.geometryManager.getBeam().height\n + this.utils.tan(UI.patiosPitch) * ((UI.span + UI.multiSpan) / 2)\n + this.dimensionDistance2\n }\n if(UI.structureType === CONNECTION_TYPE.FASCIA_UPSTAND){\n offsetY = UI.existingWallHeight\n + +UI.upstandBraketType\n + this.geometryManager.getBeam().height\n + this.utils.tan(UI.patiosPitch) * ((UI.span + UI.multiSpan) / 2)\n + this.dimensionDistance2\n }\n if(UI.structureType === CONNECTION_TYPE.FREE_STANDING){\n offsetY = this.APP.sldBuildingHeight.currentValue + this.utils.tan(this.APP.sltRoofPitch.currentValue) * (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2 + this.dimensionDistance2\n }\n }\n this.dimensionRightTop.position.setY(offsetY);\n //this.dimensionTopRight.position.setY(-1000);\n let views = [];\n\n this.dimensionPlanLeft.children.forEach( dimGroup => {\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n views.push({ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS });\n } else if(dimGroup.userData.groupType == DIMENSION_LABEL_TYPE.EAVE_WIDTH){\n views.push({ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS });\n } else {\n views = [];\n }\n dimGroup.children.forEach(c => {\n let clone = c.clone();\n clone.userData['views'] = views;\n if(views.length != 0 && c.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && c.visible && dimGroup.userData.groupType == DIMENSION_LABEL_TYPE.EAVE_WIDTH){\n clone.position.setY(c.position.y + 400);\n clone.rotation.set(0, Math.PI, 0);\n clone.visible = false;\n } else if(views.length != 0 && c.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && c.visible){\n clone.position.setY(-c.position.y);\n clone.rotation.set(0, Math.PI, 0);\n clone.visible = false;\n } else if(c.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && !c.visible){\n return;\n }\n this.dimensionRightTop.add(clone);\n })\n })\n }\n private drawDimensionLeftLeft(){\n let dimenstionOffsetY = this.APP.sldExistingWallHeight.currentValue/2;\n let dimenstionOffsetZ = this.APP.sldExistingWidth1.currentValue/2 + this.dimensionDistance2 + 500;\n\n this.dimensionLeftLeft.position.set(0,dimenstionOffsetY,-dimenstionOffsetZ);\n\n let views = [ \n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n this.dimensionFrontLeft.children.forEach(c => {\n let clone = c.clone();\n //clone.visible = false;\n clone.userData['views'] = views;\n\n if(c.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && c.visible){\n clone.position.setY(-c.position.y);\n clone.rotation.set(0, 0,-Math.PI);\n clone.userData['views'] = [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }];\n clone.userData['rotation'] = new Vector3(Math.PI/2,0,0)\n } else if(c.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && !c.visible){\n return;\n }\n\n this.dimensionLeftLeft.add(clone);\n })\n }\n private drawDimensionRightRight(){\n let dimenstionOffsetY = this.APP.sldExistingWallHeight.currentValue/2;\n let dimenstionOffsetZ = this.APP.sldExistingWidth1.currentValue/2 + this.dimensionDistance2 + 500;\n\n this.dimensionRightRight.position.set(0,dimenstionOffsetY,-dimenstionOffsetZ);\n\n let views = [ { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionFrontLeft.children.forEach(c => {\n let clone = c.clone();\n clone.userData['views'] = views;\n if(c.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && c.visible){\n \n clone.userData['rotation'] = new Vector3(-Math.PI/2,0,0)\n clone.position.setY(-c.position.y);\n clone.rotation.set(0, Math.PI,-Math.PI);\n //clone.visible = false;\n \n } else if(c.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && !c.visible){\n return;\n }\n this.dimensionRightRight.add(clone);\n })\n }\n\n private calulateBoundingBox(){\n this.APP.scene.remove(...this.APP.scene.children.filter(c => c.userData.type == 'BOX_HELPER__'));\n let existingHouseObjs = this.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && c.userData.position?.width1 || c.userData.position?.width2 || c.userData.position?.length2)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL)\n );\n let existingHouseBox = this.APP.utils.getObjectsBoundingBox(existingHouseObjs);\n \n let planLeftBox = this.APP.utils.getObjectBoundingBox(this.dimensionPlanLeft);\n planLeftBox.min.x = existingHouseBox.min.x - 500;\n planLeftBox.max.x = existingHouseBox.min.x;\n planLeftBox.max.y = 10000;\n\n // let boxHelper = new Box3Helper(planRightBox);\n // boxHelper.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper);\n\n // let boxHelper2 = new Box3Helper(planLeftBox);\n // boxHelper2.userData = {type: 'BOX_HELPER__'};\n // this.scene.add(boxHelper2);\n\n // let boxHelper3 = new Box3Helper(planFrontBox);\n // boxHelper3.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper3);\n\n let patiosBox = this.APP.patiosManager.boundingBox;\n if(patiosBox && planLeftBox.max.x > patiosBox.min.x){\n planLeftBox.translate(new Vector3(patiosBox.min.x - planLeftBox.max.x - 100, 0, 0));\n }\n\n let dimPatiosLeft = this.scene.children.find(c => c.userData.type == GEOMETRY_TYPE.DIMENSION && c.userData.position?.left);\n if(dimPatiosLeft && planLeftBox.max.x > dimPatiosLeft.position.x){\n planLeftBox.translate(new Vector3(dimPatiosLeft.position.x - planLeftBox.max.x, 0, 0));\n }\n \n return { left: planLeftBox.min.x };\n }\n\n private addText(text: string, userData: any){\n //let offsetZ = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldExistingWidth1.currentValue + this.dimensionDistance;\n //let offsetX = this.totalBaySize/2 \n //+ this.APP.sldExistingLength2.currentValue \n //+ this.APP.sldLeftOverhang.currentValue \n //+ this.APP.sldRightOverhang.currentValue \n //+ this.textDistance;\n\n\n\n let textMesh: Mesh;\n\n let parameter = {\n font: this.font,\n size: 500,\n height: 5,\n curveSegments: 12\n };\n\n if(userData.position.trai){\n var geometry = new TextBufferGeometry( text, parameter).center().rotateY(-Math.PI/2).rotateZ(-Math.PI/2);\n textMesh = new Mesh(geometry, MaterialManager.Instance().DIMENSION_TEXT);\n textMesh.position.setX(this.box.min.x - this.textDistance);\n textMesh.userData = {...userData, type: GEOMETRY_TYPE.DIRECTION_TEXT};\n }\n else if(userData.position.phai){\n var geometry = new TextBufferGeometry( text, parameter).center().rotateY(Math.PI/2).rotateZ(Math.PI/2);\n textMesh = new Mesh(geometry, MaterialManager.Instance().DIMENSION_TEXT);\n textMesh.position.setX(this.box.max.x + this.textDistance);\n textMesh.userData = {...userData, type: GEOMETRY_TYPE.DIRECTION_TEXT};\n }\n else if(userData.position.truoc){\n let offsetZ = this.APP.sldExistingWidth1.currentValue/2 + this.textDistance;\n let totalSpanSize = this.APP.sldSpan.currentValue \n + this.APP.sldMultiSpan.currentValue \n + this.APP.sldBackOverhang.currentValue \n + this.APP.sldFrontOverhang.currentValue\n + this.textDistance;\n\n if(this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF && this.APP.isFBRoof){\n totalSpanSize = this.totalBaySize + this.textDistance;\n }\n \n if(this.APP.sldExistingWidth1.currentValue/2 < totalSpanSize){\n offsetZ = totalSpanSize;\n }\n\n var geometry = new TextBufferGeometry( text, parameter).center().rotateX(-Math.PI/2);\n textMesh = new Mesh(geometry, MaterialManager.Instance().DIMENSION_TEXT);\n textMesh.position.setZ(offsetZ);\n textMesh.userData = {...userData, type: GEOMETRY_TYPE.DIRECTION_TEXT};\n }\n else if(userData.position.sau){\n let offsetZ = this.APP.sldExistingWidth1.currentValue/2 + this.textDistance;\n\n if(this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF){\n offsetZ = (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue ) / 2 + this.APP.sldFrontOverhang.currentValue + this.textDistance;\n }\n\n var geometry = new TextBufferGeometry( text, parameter).center().rotateY(Math.PI).rotateX(Math.PI/2);\n textMesh = new Mesh(geometry, MaterialManager.Instance().DIMENSION_TEXT);\n textMesh.position.setZ(-offsetZ);\n textMesh.userData = {...userData, type: GEOMETRY_TYPE.DIRECTION_TEXT};\n }\n \n this.listText.push(textMesh);\n this.scene.add(textMesh);\n }\n public getOutlines(): Printing2DGeometry{\n let lsGeometries: Printing2DLine[] = [];\n let lsText: Print2DText[] = [];\n \n for(let dim of [\n ...this.dimensionPlanTop.children, \n ...this.dimensionPlanLeft.children, \n ...this.dimensionFrontTop.children,\n ...this.dimensionFrontLeft.children,\n ...this.dimensionLeftLeft.children,\n ...this.dimensionLeftTop.children,\n ...this.dimensionRightTop.children,\n ...this.dimensionRightRight.children\n ]){\n if(!dim.userData.views){\n console.log(\"TEXT NO VIEW\", dim);\n continue;\n }\n\n if(dim.type == 'Group'){\n dim.children.forEach(el => {\n el.updateMatrix();\n let _clone = el.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(el.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n \n el.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(el.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(el.matrixWorld);\n\n let textRotation = el.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, el, pos, textRotation, points)\n })\n } else{\n dim.updateMatrix();\n let _clone = dim.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(dim.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n \n dim.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(dim.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(dim.matrixWorld);\n\n let textRotation = dim.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, dim, pos, textRotation, points)\n }\n }\n return { lines: lsGeometries, texts: lsText };\n }\n private getDimInfo(lsGeometries: Printing2DLine[], lsText: Print2DText[], dim: Object3D, pos: Vector3, textRotation: Vector3, points: Vector3[]){\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && dim.userData.views && dim.userData.value) {\n let box = new Box3().setFromObject(dim.parent);\n let startEnd = this.utils.getStartEndPoint(box);\n let line = new Line3(startEnd[0], startEnd[1]);\n\n let projectPoint = new Vector3();\n line.closestPointToPoint(pos, true, projectPoint);\n let _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(10));\n\n if(dim.userData.position?.bottom){\n if(dim.userData.position?.overhang){\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(180));\n }\n else{\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(120));\n }\n }\n else{\n if(dim.userData.position?.overhang){\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(100));\n }\n }\n\n let p = new Vector3().applyMatrix4(dim.matrixWorld);\n\n lsText.push({\n value: dim.userData.value,\n position: p,\n rotation: textRotation,\n views: dim.userData.views\n });\n\n \n }\n else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_LINE) {\n // this.scene.add(new LineSegments(new Geometry().setFromPoints(points), new LineBasicMaterial({color: new Color('red')})));\n\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_CAP) {\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n else if (dim.userData.type == \"Arrow\") {\n let geo = ((dim as Line).geometry as Geometry).clone();\n geo.applyMatrix4(dim.matrixWorld);\n lsGeometries.push({\n vertices: geo.vertices,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n }\n private getTextCover(textGeo: TextBufferGeometry, labelType: string, pos: Vector3){\n let textSize = new Vector3();\n textGeo.boundingBox.getSize(textSize)\n\n let textCover = new Mesh(new BoxBufferGeometry(textSize.x, textSize.y, textSize.z))\n textCover.position.set(pos.x , pos.y, pos.z + 10);\n textCover.userData = { type: GEOMETRY_TYPE.TEXT_COVER, labelType };\n textCover.material['opacity'] = 0;\n textCover.material['transparent'] = true;\n\n return textCover\n }\n private onUIChanged(preVal: number, curVal: number): void{\n this.draw();\n }\n}\n","import { Scene, Mesh, BufferGeometry, Vector3, Object3D, Material, Geometry } from \"three\";\nimport { Util } from \"./utils\";\nimport { CONFIG, GEOMETRY_TYPE } from \"src/app/app.config\";\nimport { HomeComponent as AppComponent } from 'src/app-ribspan/containers/home/home.component';\nimport { GeometryManager } from \"./geometry.manager\";\nimport { MaterialManager } from \"./material.manager\";\nimport { GeometryInfo, Printing2DLine, ViewType, LineType, Printing2DGeometry } from 'src/app/core/models';\n\nexport class EaveManager {\n private scene: Scene;\n private APP: AppComponent;\n private material: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private geo_eaveWidth1: BufferGeometry;\n private geo_eaveWidth2: BufferGeometry;\n private geo_eaveLength1: GeometryInfo;\n\n public backOverhang = 100;\n\n //private matW1: Material;\n //private clippingPlaneW1: Plane;\n\n public listEave: Object3D[];\n\n constructor() {\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.listEave = [];\n }\n\n public init(app: AppComponent): Promise{\n return new Promise((resolve, reject) => {\n this.APP = app;\n this.scene = app.scene;\n this.material = MaterialManager.Instance().EAVE.clone();\n //this.matW1 = MaterialManager.Instance().EAVE.clone();\n\n app.sldBaySize.addAction(this.uiChanged.bind(this));\n app.sldSpan.addAction(this.uiChanged.bind(this));\n app.sldExistingWallHeight.addAction(this.uiChanged.bind(this));\n app.sldEaveWidth.addAction(this.uiChanged.bind(this));\n app.sldExistingLength.addAction(this.uiChanged.bind(this));\n app.sldExistingLength2.addAction(this.uiChanged.bind(this));\n app.sldExistingWidth1.addAction(this.uiChanged.bind(this));\n app.sldExistingWidth2.addAction(this.uiChanged.bind(this));\n app.sltExistingType.addAction(this.uiChanged.bind(this));\n app.sltStructureType.addAction(this.uiChanged.bind(this));\n\n resolve();\n });\n }\n public optimize() : Promise{\n return new Promise((resolve, reject) => {\n \n let scaleX = CONFIG.eaveWidth.default/this.geometryManager.EAVE.EAVE.width;\n let scaleZ = CONFIG.span.default/this.geometryManager.EAVE.EAVE.length;\n \n let translateX = this.geometryManager.EAVE.EAVE.width/2;\n let translateY = this.geometryManager.EAVE.EAVE.height/2;\n let translateZ = this.geometryManager.EAVE.EAVE.length/2;\n\n \n this.geo_eaveWidth1 = this.geometryManager.EAVE.EAVE.geometry\n .clone()\n .translate(translateX,translateY,translateZ)\n\n this.geo_eaveWidth2 = this.geometryManager.EAVE.EAVE.geometry\n .clone()\n .translate(translateX,translateY,translateZ)\n \n\n let _scaleX = CONFIG.baySize.default/this.geometryManager.EAVE.EAVE.length;\n let _scaleZ = CONFIG.eaveWidth.default/this.geometryManager.EAVE.EAVE.width;\n\n this.geo_eaveLength1 = new GeometryInfo();\n this.geo_eaveLength1.geometry = this.geometryManager.EAVE.EAVE.geometry\n .clone()\n .rotateY(Math.PI/2)\n .translate(0,translateY,translateX)\n \n // this.geo_eaveLength1.length = env.baySize.default;\n // this.geo_eaveLength1.width = env.eaveWidth.default;\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.EAVE));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == 'EAVE_OUTLINE'));\n this.listEave = [];\n\n // if(this.APP.sldExistingLength2.currentValue == 0){\n // this.clippingPlaneW1 = new Plane(new Vector3(0,0,-1), this.APP.sldExistingWidth1.currentValue/2);\n // this.matW1.clippingPlanes = [this.clippingPlaneW1];\n // }\n // else{\n // this.matW1.clippingPlanes = [];\n // }\n\n if(this.APP.sltStructureType.currentValue == 4){\n resolve();\n return;\n }\n\n this.addEave({length1: true});\n if(this.APP.sldExistingLength2.currentValue > 0){\n this.addEave({length2: true});\n }\n if(this.APP.sldExistingWidth1.currentValue > 0){\n this.addEave({width1: true});\n }\n if(this.APP.sldExistingWidth2.currentValue > 0){\n this.addEave({width2: true});\n }\n\n //this.getOutLines();\n\n resolve();\n });\n }\n\n public getOutLines(): Printing2DGeometry{\n let objs = this.scene.children.filter(o => o.userData.type == GEOMETRY_TYPE.EAVE );\n let lsGeometries: Printing2DLine[] = [];\n\n for(let o of objs){ \n let outlineGeo = this.utils.getOutlineGeometryFromMesh((o as Mesh), 10);\n outlineGeo.translate(o.position.x, o.position.y + 5000, o.position.z);\n\n // var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"EAVE_OUTLINE\"};\n // this.scene.add( line );\n\n let simplifiedGeo = this.simplifyGeo(outlineGeo);\n lsGeometries.push({ \n objectType: o.userData.type,\n vertices: simplifiedGeo.vertices, \n views: o.userData.views\n });\n }\n\n return { lines: lsGeometries, texts: [] };\n }\n public simplifyGeo(geo: BufferGeometry): Geometry{\n let simplifiedGeo = new Geometry();\n let vertices = geo.getAttribute('position').array;\n for(let i = 0; i < vertices.length; i+=3){\n simplifiedGeo.vertices.push(new Vector3(vertices[i], vertices[i+1] - 5000, vertices[i+2]));\n }\n return simplifiedGeo;\n }\n \n public addEave(userDataPos: any){\n let mesh: Mesh;\n let offsetY = this.APP.sldExistingWallHeight.currentValue;\n \n let backOverhangL1 = this.APP.existingWallManager.geo_existingWallL1.width + this.backOverhang;\n let backOverhangL2 = this.APP.existingWallManager.geo_existingWallL2.width + this.backOverhang;\n let backOverhangW1 = this.APP.existingWallManager.geo_existingWallW1.width + this.backOverhang;\n let backOverhangW2 = this.APP.existingWallManager.geo_existingWallW2.width + this.backOverhang;\n \n if(userDataPos.length1){\n //let mat = new MeshPhongMaterial({ transparent: true, opacity: 0.8});\n let offsetZ = this.APP.sldExistingWidth1.currentValue/2 + backOverhangL1;\n let scaleX = this.APP.sldExistingLength.currentValue/this.geometryManager.EAVE.EAVE.length;\n let scaleZ = (this.APP.sldEaveWidth.currentValue + backOverhangL1)/this.geometryManager.EAVE.EAVE.width;\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n mesh = new Mesh(this.geo_eaveLength1.geometry, this.material);\n mesh.userData = { type: GEOMETRY_TYPE.EAVE, position: userDataPos, views: views };\n mesh.position.setY(offsetY);\n mesh.position.setZ(-offsetZ);\n mesh.scale.set(scaleX,1,scaleZ);\n this.scene.add(mesh);\n this.listEave.push(mesh);\n }\n else if(userDataPos.length2){\n let views = [\n // { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n // { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n if(this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3){\n views.push({ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS });\n let offsetX = this.APP.sldExistingLength.currentValue/2;\n let offsetZ = this.APP.sldExistingWidth1.currentValue/2 - backOverhangL2;\n let scaleX = this.APP.sldExistingLength2.currentValue/this.geometryManager.EAVE.EAVE.length;\n let scaleZ = (this.APP.sldEaveWidth.currentValue + backOverhangL2)/this.geometryManager.EAVE.EAVE.width;\n \n mesh = new Mesh(this.geo_eaveLength1.geometry, this.material);\n mesh.userData = { type: GEOMETRY_TYPE.EAVE, position: userDataPos, views: views };\n mesh.position.setX(-offsetX - this.APP.sldExistingLength2.currentValue/2);\n mesh.position.setY(offsetY);\n mesh.position.setZ(offsetZ);\n mesh.scale.set(scaleX,1,scaleZ);\n this.scene.add(mesh);\n this.listEave.push(mesh);\n }\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n views.push({ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS });\n let offsetX = this.APP.sldExistingLength.currentValue/2;\n let offsetZ = this.APP.sldExistingWidth1.currentValue/2 - backOverhangL2;\n let scaleX = this.APP.sldExistingLength2.currentValue/this.geometryManager.EAVE.EAVE.length;\n let scaleZ = (this.APP.sldEaveWidth.currentValue + backOverhangL2)/this.geometryManager.EAVE.EAVE.width;\n \n mesh = new Mesh(this.geo_eaveLength1.geometry, this.material);\n mesh.userData = { type: GEOMETRY_TYPE.EAVE, position: userDataPos, views: views };\n mesh.position.setX(offsetX + this.APP.sldExistingLength2.currentValue/2);\n mesh.position.setY(offsetY);\n mesh.position.setZ(offsetZ);\n mesh.scale.set(scaleX,1,scaleZ);\n this.scene.add(mesh);\n this.listEave.push(mesh);\n }\n }\n else if(userDataPos.width1){\n //let mat = new MeshPhongMaterial({color: new Color('blue'), transparent: true, opacity: 0.8});\n let offsetX = this.APP.sldExistingLength.currentValue/2 + backOverhangW1;\n let offsetZ = this.APP.sldExistingWidth1.currentValue/2 + backOverhangL1;\n let scaleX = (this.APP.sldEaveWidth.currentValue + backOverhangW1)/this.geometryManager.EAVE.EAVE.width;\n let scaleZ = (this.APP.sldExistingWidth1.currentValue + this.APP.sldEaveWidth.currentValue + backOverhangL1)/this.geometryManager.EAVE.EAVE.length;\n\n if(this.APP.sldExistingLength2.currentValue <= 0){\n scaleZ = (this.APP.sldExistingWidth1.currentValue + backOverhangL1)/this.geometryManager.EAVE.EAVE.length;\n if(scaleZ <= 0)\n scaleZ = 0.01;\n }\n\n let views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }\n ];\n\n if(this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3){\n mesh = new Mesh(this.geo_eaveWidth1, this.material);\n mesh.userData = { type: GEOMETRY_TYPE.EAVE, position: userDataPos, views: views };\n mesh.position.setX(-offsetX);\n mesh.position.setY(offsetY);\n mesh.position.setZ(-offsetZ);\n mesh.scale.set(scaleX,1,scaleZ); \n this.scene.add(mesh);\n this.listEave.push(mesh);\n }\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n mesh = new Mesh(this.geo_eaveWidth1, this.material);\n mesh.userData = { type: GEOMETRY_TYPE.EAVE, position: userDataPos, views: views };\n mesh.position.setX(offsetX);\n mesh.position.setY(offsetY);\n mesh.position.setZ(-offsetZ);\n mesh.scale.set(-scaleX,1,scaleZ); \n this.scene.add(mesh);\n this.listEave.push(mesh);\n }\n }\n else if(userDataPos.width2){\n let offsetX = this.APP.sldExistingLength.currentValue/2 + this.APP.sldExistingLength2.currentValue + backOverhangW2;\n let offsetZ = this.APP.sldExistingWidth1.currentValue/2 - backOverhangL2;\n let scaleX = (this.APP.sldEaveWidth.currentValue + backOverhangW2)/this.geometryManager.EAVE.EAVE.width;\n let scaleZ = (this.APP.sldExistingWidth2.currentValue + backOverhangL2)/this.geometryManager.EAVE.EAVE.length;\n\n let views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }\n ];\n\n if(this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3){\n mesh = new Mesh(this.geo_eaveWidth2, this.material);\n mesh.userData = { type: GEOMETRY_TYPE.EAVE, position: userDataPos, views: views };\n mesh.position.set(-offsetX, offsetY, offsetZ);\n mesh.scale.set(scaleX,1,scaleZ); \n this.scene.add(mesh);\n this.listEave.push(mesh);\n }\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n mesh = new Mesh(this.geo_eaveWidth2, this.material);\n mesh.userData = { type: GEOMETRY_TYPE.EAVE, position: userDataPos, views: views };\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.set(-scaleX,1,scaleZ); \n this.scene.add(mesh);\n this.listEave.push(mesh);\n }\n }\n }\n\n public uiChanged(preVal: number, curVal): void {\n this.load();\n }\n}\n","import { Scene, Mesh, BufferGeometry, Vector3, Material, Plane, MeshPhongMaterial, Geometry, Box3 } from \"three\";\nimport { Util } from \"./utils\";\nimport { CONFIG as env, GEOMETRY_TYPE } from 'src/app/app.config';\nimport { HomeComponent as AppComponent } from 'src/app-ribspan/containers/home/home.component';\nimport { GeometryManager } from \"./geometry.manager\";\nimport { MaterialManager } from \"./material.manager\";\nimport { Printing2DLine, ViewType, LineType, Printing2DGeometry } from 'src/app/core/models';\n\nexport class ExistingRoofManager {\n private scene: Scene;\n private APP: AppComponent;\n\n private material: Material;\n private materialL1: MeshPhongMaterial;\n private materialL2L: MeshPhongMaterial;\n private materialL2R: MeshPhongMaterial;\n private materialW1L: MeshPhongMaterial;\n private materialW1R: MeshPhongMaterial;\n private materialW2L: MeshPhongMaterial;\n private materialW2R: MeshPhongMaterial;\n\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private geo_existingWallL: BufferGeometry;\n private geo_existingWallW: BufferGeometry;\n\n // private geo_clipingW1BL: Geometry;\n // private geo_clipingW1BR: Geometry;\n // private geo_clipingW1FL: Geometry;\n // private geo_clipingW1FR: Geometry;\n\n // private geo_clipingL1L: Geometry;\n // private geo_clipingL1R: Geometry;\n\n // private geo_clipingL2LL: Geometry;\n // private geo_clipingL2RL: Geometry;\n // private geo_clipingL2LR: Geometry;\n // private geo_clipingL2RR: Geometry;\n\n // private geo_clipingW2BL: Geometry;\n // private geo_clipingW2BR: Geometry;\n\n\n constructor() {\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n }\n\n public init(app: AppComponent): Promise{\n return new Promise((resolve, reject) => {\n this.APP = app;\n this.scene = app.scene;\n this.materialL1 = MaterialManager.Instance().EXISTING_ROOF.clone();\n \n this.materialL2L = MaterialManager.Instance().EXISTING_ROOF.clone();\n this.materialL2R = MaterialManager.Instance().EXISTING_ROOF.clone();\n\n this.materialW1L = MaterialManager.Instance().EXISTING_ROOF.clone();\n this.materialW1R = MaterialManager.Instance().EXISTING_ROOF.clone();\n\n this.materialW2L = MaterialManager.Instance().EXISTING_ROOF.clone();\n this.materialW2R = MaterialManager.Instance().EXISTING_ROOF.clone();\n\n this.material = MaterialManager.Instance().EXISTING_ROOF.clone();\n\n app.sldExistingWallHeight.addAction(this.uiChanged.bind(this));\n app.sldEaveWidth.addAction(this.uiChanged.bind(this));\n app.sldFasciaDepth.addAction(this.uiChanged.bind(this));\n app.sldExistingLength.addAction(this.uiChanged.bind(this));\n app.sldExistingLength2.addAction(this.uiChanged.bind(this));\n app.sldExistingWidth1.addAction(this.uiChanged.bind(this));\n app.sldExistingWidth2.addAction(this.uiChanged.bind(this));\n app.sltExistingType.addAction(this.uiChanged.bind(this));\n app.sltStructureType.addAction(this.uiChanged.bind(this));\n app.sltExistingRoofPitch.addAction(this.uiChanged.bind(this));\n app.sltExistingRoofType.addAction(this.uiReloadChange.bind(this))\n\n resolve();\n });\n }\n public optimize() : Promise{\n return new Promise((resolve, reject) => {\n let translateWidth = this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.width/2 - 60;\n let translateHeight = this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.height/2;\n\n this.geo_existingWallL = this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.geometry\n .clone()\n .translate(0,translateHeight,-translateWidth)\n //.rotateX(this.utils.degreesToRadians(this.APP.sltExistingRoofPitch.currentValue));\n\n this.geo_existingWallW = this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.geometry\n .clone()\n .translate(0,translateHeight,-translateWidth)\n .rotateY(Math.PI/2)\n //.rotateZ(-this.utils.degreesToRadians(22.5));\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == \"HELPER\"));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == \"OUTLINE\"));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.EXISTING_ROOF));\n\n if(this.APP.sltStructureType.currentValue == 4){\n resolve();\n return;\n }\n\n //----cliping geo-----\n let clipingWidth = 5000;\n let clipingLength = 10000;\n let clipingHeight = 10000;\n \n \n \n // let mat = MaterialManager.Instance().DEFAULT.clone();\n // mat.opacity = 0.7;\n // mat.transparent = true;\n // let mesh = new Mesh(this.geo_clipingW1BL, mat);\n // mesh.userData = { type: 'HELPER' };\n // this.APP.scene.add(mesh);\n\n //----\n\n this.materialL1.clippingPlanes = [];\n this.materialW1L.clippingPlanes = [];\n this.materialW1R.clippingPlanes = [];\n\n this.materialW2L.clippingPlanes = [];\n this.materialW2R.clippingPlanes = [];\n\n this.materialL2L.clippingPlanes = [];\n this.materialL2R.clippingPlanes = [];\n\n // this.geo_clipingW1BL = null;\n // this.geo_clipingW1BR = null;\n // this.geo_clipingW1FL = null;\n // this.geo_clipingW1FR = null;\n\n // this.geo_clipingL1L = null;\n // this.geo_clipingL1R = null;\n\n // this.geo_clipingL2LL = null;\n // this.geo_clipingL2RL = null;\n // this.geo_clipingL2LR = null;\n // this.geo_clipingL2RR = null;\n\n // this.geo_clipingW2BL = null;\n // this.geo_clipingW2BR = null;\n\n\n // if(this.APP.sldExistingWidth1.currentValue >= this.APP.sldEaveWidth.currentValue){\n // if(this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3){\n // this.geo_clipingL1L = new BoxGeometry(clipingWidth, clipingHeight, clipingLength);\n // this.geo_clipingL1L.translate(0,0,clipingLength/2);\n // this.geo_clipingL1L.rotateY(-(Math.PI/4));\n // this.geo_clipingL1L.translate(-this.APP.sldExistingLength.currentValue/2,0,-this.APP.sldExistingWidth1.currentValue/2);\n\n // this.geo_clipingW1BL = new BoxGeometry(clipingWidth, clipingHeight, clipingLength);\n // this.geo_clipingW1BL.translate(0,0,-clipingLength/2);\n // this.geo_clipingW1BL.rotateY(-(Math.PI/4));\n // this.geo_clipingW1BL.translate(-this.APP.sldExistingLength.currentValue/2,0,-this.APP.sldExistingWidth1.currentValue/2);\n\n // // let mat = MaterialManager.Instance().DEFAULT.clone();\n // // mat.opacity = 0.7;\n // // mat.transparent = true;\n // // let mesh = new Mesh(this.geo_clipingL1L, mat);\n // // mesh.userData = { type: 'HELPER' };\n // // this.APP.scene.add(mesh);\n // }\n // if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n // this.geo_clipingL1R = new BoxGeometry(clipingWidth, clipingHeight, clipingLength);\n // this.geo_clipingL1R.translate(0,0,clipingLength/2);\n // this.geo_clipingL1R.rotateY(Math.PI/4);\n // this.geo_clipingL1R.translate(this.APP.sldExistingLength.currentValue/2,0,-this.APP.sldExistingWidth1.currentValue/2);\n\n // this.geo_clipingW1BR = new BoxGeometry(clipingWidth, clipingHeight, clipingLength);\n // this.geo_clipingW1BR.translate(0,0,-clipingLength/2);\n // this.geo_clipingW1BR.rotateY(Math.PI/4);\n // this.geo_clipingW1BR.translate(this.APP.sldExistingLength.currentValue/2,0,-this.APP.sldExistingWidth1.currentValue/2);\n // }\n // }\n\n\n\n this.addExistingRoof({length1: true});\n \n if(this.APP.sldExistingWidth1.currentValue >= this.APP.sldEaveWidth.currentValue){\n let dis = this.getClipingPlaneDistance();\n let planeL1L = new Plane( new Vector3(1,0,-1).normalize(), dis );\n let planeW1L = new Plane( new Vector3(-1,0,1).normalize(), -dis );\n\n let planeL1R = new Plane( new Vector3(-1,0,-1).normalize(), dis );\n let planeW1R = new Plane( new Vector3(1,0,1).normalize(), -dis );\n\n \n\n if(this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3){\n this.materialL1.clippingPlanes.push(planeL1L);\n this.materialW1L.clippingPlanes.push(planeW1L);\n }\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n this.materialL1.clippingPlanes.push(planeL1R);\n this.materialW1R.clippingPlanes.push(planeW1R);\n }\n\n this.addExistingRoof({width1: true});\n }\n if(this.APP.sldExistingWidth2.currentValue >= this.APP.sldEaveWidth.currentValue){\n let dis = this.getClipingPlaneDistance();\n let planeW2L = new Plane( new Vector3(-1,0,1).normalize(), -dis );\n let planeL2L = new Plane( new Vector3(1,0,-1).normalize(), dis );\n\n let planeW2R = new Plane( new Vector3(1,0,1).normalize(), -dis );\n let planeL2R = new Plane( new Vector3(-1,0,-1).normalize(), dis );\n \n var p1 = new Vector3(-this.APP.sldExistingLength.currentValue/2, 0, -this.APP.sldExistingWidth1.currentValue/2);\n var p2 = new Vector3(-this.APP.sldExistingLength.currentValue/2, 0, this.APP.sldExistingWidth1.currentValue/2);\n var p3 = new Vector3(-(this.APP.sldExistingLength.currentValue/2 + this.APP.sldExistingLength2.currentValue), 0, this.APP.sldExistingWidth1.currentValue/2);\n \n var v = new Vector3().subVectors(p2,p1);\n var v2 = new Vector3().subVectors(p3,p2);\n var v2p = v2.clone().multiplyScalar(-1);\n\n planeW2L.translate(v).translate(v2);\n planeW2R.translate(v).translate(v2p);\n planeL2L.translate(v).translate(v2);\n planeL2R.translate(v).translate(v2p);\n\n if(this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3){\n this.materialW2L.clippingPlanes.push(planeW2L);\n this.materialL2L.clippingPlanes.push(planeL2L);\n }\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n this.materialW2R.clippingPlanes.push(planeW2R);\n this.materialL2R.clippingPlanes.push(planeL2R);\n }\n\n this.addExistingRoof({width2: true});\n }\n if(this.APP.sldExistingLength2.currentValue >= this.APP.sldEaveWidth.currentValue + 500){\n let dis = this.getClipingPlaneDistance();\n let planeW1L = new Plane( new Vector3(1,0,-1).normalize(), dis );\n let planeL2L = new Plane( new Vector3(-1,0,1).normalize(), -dis );\n\n let planeW1R = new Plane( new Vector3(-1,0,-1).normalize(), dis );\n let planeL2R = new Plane( new Vector3(1,0,1).normalize(), -dis );\n \n var p1 = new Vector3(-this.APP.sldExistingLength.currentValue/2, 0, -this.APP.sldExistingWidth1.currentValue/2);\n var p2 = new Vector3(-this.APP.sldExistingLength.currentValue/2, 0, this.APP.sldExistingWidth1.currentValue/2);\n var v = p2.sub(p1);\n\n planeW1L.translate(v);\n planeW1R.translate(v);\n planeL2L.translate(v);\n planeL2R.translate(v);\n\n if(this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3){\n this.materialW1L.clippingPlanes.push(planeW1L);\n this.materialL2L.clippingPlanes.push(planeL2L);\n }\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n this.materialW1R.clippingPlanes.push(planeW1R);\n this.materialL2R.clippingPlanes.push(planeL2R);\n }\n\n this.addExistingRoof({length2: true});\n }\n\n //this.getOutLines();\n\n resolve();\n });\n }\n public getOutLines(): Printing2DGeometry{\n let objs = this.scene.children.filter(o => o.userData.type == GEOMETRY_TYPE.EXISTING_ROOF );\n let lsGeometries: Printing2DLine[] = [];\n\n for(let o of objs){ \n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale((o as Mesh), 60);\n o.updateWorldMatrix(true, true);\n\n outlineGeo.applyMatrix4(o.matrixWorld);\n outlineGeo.translate(0,5000,0);\n\n let views = [];\n\n if(o.userData.position.length1){ \n for(let plane of this.materialL1.clippingPlanes){\n let _plane = plane.clone() as Plane;\n _plane.translate(new Vector3(0,5000,0));\n outlineGeo = this.utils.clipOutline(outlineGeo, _plane);\n }\n\n views.push(\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n );\n }\n if(o.userData.position.length2){\n if(o.userData.position.left){\n for(let plane of this.materialL2L.clippingPlanes){\n let _plane = plane.clone() as Plane;\n _plane.translate(new Vector3(0,5000,0));\n outlineGeo = this.utils.clipOutline(outlineGeo, _plane);\n }\n }\n if(o.userData.position.right){\n for(let plane of this.materialL2R.clippingPlanes){\n let _plane = plane.clone() as Plane;\n _plane.translate(new Vector3(0,5000,0));\n outlineGeo = this.utils.clipOutline(outlineGeo, _plane);\n }\n }\n\n if(this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3){\n views.push({ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS })\n }\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n views.push({ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS });\n }\n\n views.push(\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n // { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n // { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n );\n }\n if(o.userData.position.width1){\n if(o.userData.position.left){\n for(let plane of this.materialW1L.clippingPlanes){\n let _plane = plane.clone() as Plane;\n _plane.translate(new Vector3(0,5000,0));\n outlineGeo = this.utils.clipOutline(outlineGeo, _plane);\n }\n }\n if(o.userData.position.right){\n for(let plane of this.materialW1R.clippingPlanes){\n let _plane = plane.clone() as Plane;\n _plane.translate(new Vector3(0,5000,0));\n outlineGeo = this.utils.clipOutline(outlineGeo, _plane);\n }\n }\n\n views.push(\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }\n );\n }\n if(o.userData.position.width2){\n if(o.userData.position.left){\n for(let plane of this.materialW2L.clippingPlanes){\n let _plane = plane.clone() as Plane;\n _plane.translate(new Vector3(0,5000,0));\n outlineGeo = this.utils.clipOutline(outlineGeo, _plane);\n }\n }\n if(o.userData.position.right){\n for(let plane of this.materialW2R.clippingPlanes){\n let _plane = plane.clone() as Plane;\n _plane.translate(new Vector3(0,5000,0));\n outlineGeo = this.utils.clipOutline(outlineGeo, _plane);\n }\n }\n\n views.push(\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }\n );\n }\n \n\n // var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"OUTLINE\"};\n // //line.position.set(o.position.x - 5000, o.position.y, o.position.z);\n // this.APP.scene.add( line );\n\n let simplifiedGeo = this.simplifyGeo(outlineGeo);\n lsGeometries.push({ \n objectType: o.userData.type,\n vertices: simplifiedGeo.vertices, \n views: views\n });\n }\n\n return { lines: lsGeometries, texts: [] };\n }\n public simplifyGeo(geo: BufferGeometry): Geometry{\n let simplifiedGeo = new Geometry();\n let vertices = geo.getAttribute('position').array;\n for(let i = 0; i < vertices.length; i+=3){\n simplifiedGeo.vertices.push(new Vector3(vertices[i], vertices[i+1]-5000, vertices[i+2]));\n }\n return simplifiedGeo;\n }\n\n private getClipingPlaneDistance(): number{\n let AC, BC;\n AC = BC = this.APP.sldExistingWidth1.currentValue/2;\n let CD = this.APP.sldExistingLength.currentValue/2;\n let angle = 45;\n\n let BD = BC - CD;\n let CE = AC * this.utils.sin(angle);\n\n let DG = (BD*CE)/BC;\n\n //let n: Vector3 = new Vector3(1,0,-1).normalize();\n // let clipingPlane = new Plane( n, -DG );\n // let helper = new PlaneHelper(clipingPlane, 10000, 0xffff00);\n // helper.userData = { type: 'HELPER' }\n // this.scene.add(helper);\n\n return -DG;\n } \n \n public addExistingRoof(userDataPos: any) {\n let mesh: Mesh;\n let extraLength = 2500;\n if(userDataPos.width1){\n let offsetX = this.APP.sldExistingLength.currentValue/2;\n let offsetY = this.APP.sldExistingWallHeight.currentValue + this.APP.sldFasciaDepth.currentValue + this.geometryManager.EAVE.EAVE.height;\n let offsetZ = 0;\n //let scaleZ = (this.APP.sldExistingWidth1.currentValue + extraLength)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n\n let tt = MaterialManager.Instance().EXISTING_ROOF_TEXTURE.W1;\n tt.repeat.set((this.APP.sldExistingWidth1.currentValue + extraLength)/1000/2, this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.width/1000/2);\n\n this.materialW1L.map = tt;\n this.materialW1R.map = tt;\n\n // if(this.APP.sldExistingLength2.currentValue > 0){\n // scaleZ = (this.APP.sldExistingWidth1.currentValue + this.APP.sldEaveWidth.currentValue + extraLength)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n // offsetZ = this.APP.sldEaveWidth.currentValue/2;\n // }\n\n if(this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3){\n mesh = new Mesh(this.geo_existingWallW, this.materialW1L);\n mesh.rotateZ(-this.utils.degreesToRadians(this.APP.sltExistingRoofPitch.currentValue));\n \n let box = new Box3().setFromObject(mesh);\n let width = box.max.x - box.min.x;\n let extra = width - this.APP.sldEaveWidth.currentValue;\n let scaleZ = (this.APP.sldExistingWidth1.currentValue + extra)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n \n mesh.position.setX(-offsetX + this.APP.sldEaveWidth.currentValue);\n mesh.position.setY(offsetY);\n mesh.position.setZ(offsetZ - extra/2);\n mesh.scale.set(1,1,scaleZ);\n\n if(this.APP.sldExistingLength2.currentValue > 0){\n scaleZ = (this.APP.sldExistingWidth1.currentValue + this.APP.sldEaveWidth.currentValue + extra)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n mesh.position.setZ(offsetZ + this.APP.sldEaveWidth.currentValue/2 - extra/2);\n mesh.scale.set(1,1,scaleZ);\n }\n \n\n //------clip-----\n // if(this.geo_clipingW1BL){\n // let clipingObj = this.CSG.fromGeometry(this.geo_clipingW1BL);\n // let clipedMesh = this.CSG.fromMesh(mesh).subtract(clipingObj);\n // mesh = this.CSG.toMesh(clipedMesh, this.materialW1L);\n // }\n // if(this.geo_clipingW1FL){\n // let clipingObj = this.CSG.fromGeometry(this.geo_clipingW1FL);\n // let clipedMesh = this.CSG.fromMesh(mesh).subtract(clipingObj);\n // mesh = this.CSG.toMesh(clipedMesh, this.materialW1L);\n // }\n //--------------\n\n mesh.userData = { type: GEOMETRY_TYPE.EXISTING_ROOF, position: {...userDataPos, left: true} };\n this.scene.add(mesh);\n }\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n mesh = new Mesh(this.geo_existingWallW, this.materialW1R);\n mesh.rotateY(Math.PI);\n mesh.rotateZ(-this.utils.degreesToRadians(this.APP.sltExistingRoofPitch.currentValue));\n\n let box = new Box3().setFromObject(mesh);\n let width = box.max.x - box.min.x;\n let extra = width - this.APP.sldEaveWidth.currentValue;\n let scaleZ = (this.APP.sldExistingWidth1.currentValue + extra)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n\n mesh.position.setX(offsetX - this.APP.sldEaveWidth.currentValue);\n mesh.position.setY(offsetY);\n mesh.position.setZ(offsetZ - extra/2);\n mesh.scale.set(1,1,scaleZ);\n\n if(this.APP.sldExistingLength2.currentValue > 0){\n scaleZ = (this.APP.sldExistingWidth1.currentValue + this.APP.sldEaveWidth.currentValue + extra)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n mesh.position.setZ(offsetZ + this.APP.sldEaveWidth.currentValue/2 - extra/2);\n mesh.scale.set(1,1,scaleZ);\n }\n \n\n //------clip-----\n // if(this.geo_clipingW1BR){\n // let clipingObj = this.CSG.fromGeometry(this.geo_clipingW1BR);\n // let clipedMesh = this.CSG.fromMesh(mesh).subtract(clipingObj);\n // mesh = this.CSG.toMesh(clipedMesh, this.materialW1R);\n // }\n // if(this.geo_clipingW1FR){\n // let clipingObj = this.CSG.fromGeometry(this.geo_clipingW1FR);\n // let clipedMesh = this.CSG.fromMesh(mesh).subtract(clipingObj);\n // mesh = this.CSG.toMesh(clipedMesh, this.materialW1R);\n // }\n //--------------\n\n mesh.userData = { type: GEOMETRY_TYPE.EXISTING_ROOF, position: {...userDataPos, right: true} };\n this.scene.add(mesh);\n }\n }\n if(userDataPos.width2){\n let offsetX = this.APP.sldExistingLength.currentValue/2 + this.APP.sldExistingLength2.currentValue;\n let offsetY = this.APP.sldExistingWallHeight.currentValue + this.APP.sldFasciaDepth.currentValue + this.geometryManager.EAVE.EAVE.height;\n let offsetZ = this.APP.sldExistingWidth1.currentValue/2 + this.APP.sldExistingWidth2.currentValue/2;\n //let scaleZ = (this.APP.sldExistingWidth2.currentValue + extraLength)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n\n let tt = MaterialManager.Instance().EXISTING_ROOF_TEXTURE.W2;\n tt.repeat.set((this.APP.sldExistingWidth2.currentValue + extraLength)/1000/2, this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.width/1000/2);\n\n this.materialW2L.map = tt;\n this.materialW2R.map = tt;\n\n if(this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3){\n mesh = new Mesh(this.geo_existingWallW, this.materialW2L);\n mesh.userData = { type: GEOMETRY_TYPE.EXISTING_ROOF, position: {...userDataPos, left: true} };\n mesh.rotateZ(-this.utils.degreesToRadians(this.APP.sltExistingRoofPitch.currentValue));\n\n let box = new Box3().setFromObject(mesh);\n let width = box.max.x - box.min.x;\n let extra = width - this.APP.sldEaveWidth.currentValue;\n let scaleZ = (this.APP.sldExistingWidth2.currentValue + extra)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n\n mesh.position.setX(-offsetX + this.APP.sldEaveWidth.currentValue);\n mesh.position.setY(offsetY);\n mesh.position.setZ(offsetZ - extra/2);\n mesh.scale.set(1,1,scaleZ);\n \n this.scene.add(mesh);\n }\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n mesh = new Mesh(this.geo_existingWallW, this.materialW2R);\n mesh.userData = { type: GEOMETRY_TYPE.EXISTING_ROOF, position: {...userDataPos, right: true} };\n mesh.rotateY(Math.PI);\n mesh.rotateZ(-this.utils.degreesToRadians(this.APP.sltExistingRoofPitch.currentValue));\n\n let box = new Box3().setFromObject(mesh);\n let width = box.max.x - box.min.x;\n let extra = width - this.APP.sldEaveWidth.currentValue;\n let scaleZ = (this.APP.sldExistingWidth2.currentValue + extra)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n\n mesh.position.setX(offsetX - this.APP.sldEaveWidth.currentValue);\n mesh.position.setY(offsetY);\n mesh.position.setZ(offsetZ - extra/2);\n mesh.scale.set(1,1,scaleZ);\n \n this.scene.add(mesh);\n }\n }\n else if(userDataPos.length1){\n let tt = MaterialManager.Instance().EXISTING_ROOF_TEXTURE.L1;\n tt.repeat.set((this.APP.sldExistingLength.currentValue + extraLength)/1000/2, this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.width/1000/2);\n this.materialL1.map = tt;\n\n \n \n mesh = new Mesh(this.geo_existingWallL, this.materialL1);\n mesh.userData = { type: GEOMETRY_TYPE.EXISTING_ROOF, position: userDataPos };\n mesh.rotateX(this.utils.degreesToRadians(this.APP.sltExistingRoofPitch.currentValue));\n\n\n let offsetX = 0;\n\n let box = new Box3().setFromObject(mesh);\n let width = box.max.z - box.min.z;\n let extra = width - this.APP.sldEaveWidth.currentValue;\n //let scaleX = (this.APP.sldExistingLength2.currentValue + this.APP.sldEaveWidth.currentValue)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n let scaleX = (this.APP.sldExistingLength.currentValue + extra)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n\n if(this.APP.sltExistingType.currentValue != 0 && this.APP.sldExistingWidth1.currentValue > this.APP.sldEaveWidth.currentValue){\n if(this.APP.sltExistingType.currentValue == 1){\n offsetX = -extra/2;\n }\n else if(this.APP.sltExistingType.currentValue == 2){\n offsetX = extra/2;\n }\n else{\n //offsetX = -extra/2;\n scaleX = (this.APP.sldExistingLength.currentValue + extra*2)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n }\n }\n else{\n extra = 0;\n scaleX = (this.APP.sldExistingLength.currentValue + extra)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n }\n\n let offsetY = this.APP.sldExistingWallHeight.currentValue + this.APP.sldFasciaDepth.currentValue + this.geometryManager.EAVE.EAVE.height;\n let offsetZ = this.APP.sldExistingWidth1.currentValue/2 ;\n\n\n mesh.position.setX(offsetX);\n mesh.position.setY(offsetY);\n mesh.position.setZ(-offsetZ + this.APP.sldEaveWidth.currentValue);\n mesh.scale.setX(scaleX);\n \n\n //------clip-----\n // if(this.geo_clipingL1L){\n // let clipingObj = this.CSG.fromGeometry(this.geo_clipingL1L);\n // let clipedMesh = this.CSG.fromMesh(mesh).subtract(clipingObj);\n // mesh = this.CSG.toMesh(clipedMesh, this.materialL1);\n // console.log(\"cut LEFT\");\n // }\n // if(this.geo_clipingL1R){\n // let clipingObj = this.CSG.fromGeometry(this.geo_clipingL1R);\n // let clipedMesh = this.CSG.fromMesh(mesh).subtract(clipingObj);\n // mesh = this.CSG.toMesh(clipedMesh, this.materialL1);\n // console.log(\"cut RIHGT\");\n // }\n //--------------\n\n \n \n this.scene.add(mesh);\n }\n else if(userDataPos.length2){\n // let tt = MaterialManager.Instance().EXISTING_ROOF_TEXTURE.L2;\n // tt.repeat.set((this.APP.sldExistingLength2.currentValue + this.APP.sldEaveWidth.currentValue + extraLength)/1000/2, this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.width/1000/2);\n\n // this.materialL2L.map = tt;\n // this.materialL2R.map = tt;\n\n // let offsetX = this.APP.sldExistingLength.currentValue/2 + this.APP.sldExistingLength2.currentValue/2;\n // let offsetY = this.APP.sldExistingWallHeight.currentValue + this.APP.sldFasciaDepth.currentValue + this.geometryManager.EAVE.EAVE.height;\n // let offsetZ = this.APP.sldExistingWidth1.currentValue/2;\n\n // //let scaleX = (this.APP.sldExistingLength2.currentValue + this.APP.sldEaveWidth.currentValue + extraLength)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n\n // if(this.APP.sldExistingWidth2.currentValue <= this.APP.sldEaveWidth.currentValue){\n // // if(this.APP.sltExistingType.currentValue == 1){\n // // offsetX -= extraLength;\n // // }\n // // else if(this.APP.sltExistingType.currentValue == 2){\n // // offsetX -= extraLength;\n // // }\n // offsetX -= extraLength;\n // }\n\n // if(this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3){\n // mesh = new Mesh(this.geo_existingWallL, this.materialL2L);\n // mesh.userData = { type: GEOMETRY_TYPE.EXISTING_ROOF, position: {...userDataPos, left: true} };\n // mesh.position.setX(-offsetX + this.APP.sldEaveWidth.currentValue/2 - extraLength/2);\n // mesh.position.setY(offsetY);\n // mesh.position.setZ(offsetZ + this.APP.sldEaveWidth.currentValue);\n // mesh.rotateX(this.utils.degreesToRadians(this.APP.sltExistingRoofPitch.currentValue));\n // let box = new Box3().setFromObject(mesh);\n // let width = box.max.x - box.min.x;\n // let scaleX = (this.APP.sldExistingLength2.currentValue + width)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n // mesh.scale.setX(scaleX);\n // this.scene.add(mesh);\n // }\n // if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n // mesh = new Mesh(this.geo_existingWallL, this.materialL2R);\n // mesh.userData = { type: GEOMETRY_TYPE.EXISTING_ROOF, position: {...userDataPos, right: true} };\n // mesh.position.setX(offsetX - this.APP.sldEaveWidth.currentValue/2 + extraLength/2);\n // mesh.position.setY(offsetY);\n // mesh.position.setZ(offsetZ + this.APP.sldEaveWidth.currentValue);\n // mesh.rotateX(this.utils.degreesToRadians(this.APP.sltExistingRoofPitch.currentValue));\n // let box = new Box3().setFromObject(mesh);\n // let width = box.max.x - box.min.x;\n // let scaleX = (this.APP.sldExistingLength2.currentValue + width)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n // mesh.scale.setX(scaleX);\n // this.scene.add(mesh);\n // }\n\n let tt = MaterialManager.Instance().EXISTING_ROOF_TEXTURE.L2;\n tt.repeat.set((this.APP.sldExistingLength2.currentValue + this.APP.sldEaveWidth.currentValue + extraLength)/1000/2, this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.width/1000/2);\n\n this.materialL2L.map = tt;\n this.materialL2R.map = tt;\n\n let offsetX = this.APP.sldExistingLength.currentValue/2 + this.APP.sldExistingLength2.currentValue/2;\n let offsetY = this.APP.sldExistingWallHeight.currentValue + this.APP.sldFasciaDepth.currentValue + this.geometryManager.EAVE.EAVE.height;\n let offsetZ = this.APP.sldExistingWidth1.currentValue/2;\n\n //let scaleX = (this.APP.sldExistingLength2.currentValue + this.APP.sldEaveWidth.currentValue + extraLength)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n\n if(this.APP.sldExistingWidth2.currentValue <= this.APP.sldEaveWidth.currentValue){\n // if(this.APP.sltExistingType.currentValue == 1){\n // offsetX -= extraLength;\n // }\n // else if(this.APP.sltExistingType.currentValue == 2){\n // offsetX -= extraLength;\n // }\n //offsetX -= extraLength;\n }\n\n if(this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3){\n mesh = new Mesh(this.geo_existingWallL, this.materialL2L);\n mesh.userData = { type: GEOMETRY_TYPE.EXISTING_ROOF, position: {...userDataPos, left: true} };\n mesh.position.setX(-offsetX + this.APP.sldEaveWidth.currentValue/2);\n mesh.position.setY(offsetY);\n mesh.position.setZ(offsetZ + this.APP.sldEaveWidth.currentValue);\n mesh.rotateX(this.utils.degreesToRadians(this.APP.sltExistingRoofPitch.currentValue));\n let box = new Box3().setFromObject(mesh);\n let width = box.max.z - box.min.z;\n let extra = width - this.APP.sldEaveWidth.currentValue;\n let scaleX = (this.APP.sldExistingLength2.currentValue + this.APP.sldEaveWidth.currentValue)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n \n if(this.APP.sldExistingWidth2.currentValue >= this.APP.sldEaveWidth.currentValue){\n mesh.position.setX(-offsetX + this.APP.sldEaveWidth.currentValue/2 - extra/2);\n scaleX = (this.APP.sldExistingLength2.currentValue + this.APP.sldEaveWidth.currentValue + extra)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n }\n mesh.scale.setX(scaleX);\n this.scene.add(mesh);\n }\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n mesh = new Mesh(this.geo_existingWallL, this.materialL2R);\n mesh.userData = { type: GEOMETRY_TYPE.EXISTING_ROOF, position: {...userDataPos, right: true} };\n mesh.position.setX(offsetX - this.APP.sldEaveWidth.currentValue/2);\n mesh.position.setY(offsetY);\n mesh.position.setZ(offsetZ + this.APP.sldEaveWidth.currentValue);\n mesh.rotateX(this.utils.degreesToRadians(this.APP.sltExistingRoofPitch.currentValue));\n let box = new Box3().setFromObject(mesh);\n let width = box.max.z - box.min.z;\n let extra = width - this.APP.sldEaveWidth.currentValue;\n let scaleX = (this.APP.sldExistingLength2.currentValue + this.APP.sldEaveWidth.currentValue)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n if(this.APP.sldExistingWidth2.currentValue >= this.APP.sldEaveWidth.currentValue){\n mesh.position.setX(offsetX - this.APP.sldEaveWidth.currentValue/2 + extra/2);\n scaleX = (this.APP.sldExistingLength2.currentValue + this.APP.sldEaveWidth.currentValue + extra)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n }\n mesh.scale.setX(scaleX);\n this.scene.add(mesh);\n }\n }\n }\n\n public uiChanged(preVal: number, curVal): void {\n this.load();\n }\n public uiReloadChange(preVal: number, curVal): void {\n this.optimize().then(() => { this.load() });\n }\n}\n","import { Scene, Mesh, BufferGeometry, Vector3, Object3D, Color, Material, MeshPhongMaterial, DoubleSide, Geometry, LineSegments, Group } from \"three\";\nimport { Util } from \"./utils\";\nimport { HomeComponent as AppComponent } from 'src/app-ribspan/containers/home/home.component';\nimport { GeometryManager } from \"./geometry.manager\";\nimport { MaterialManager } from \"./material.manager\";\nimport { GeometryInfo, Printing2DLine, ViewType, LineType, Printing2DGeometry, Printing2DGeometryType } from 'src/app/core/models';\nimport { CONFIG as env, GEOMETRY_TYPE } from 'src/app/app.config';\nimport HighLightBox from \"src/app-ribspan/models/HighlightBox\";\nimport { BUILDING_SIDE } from \"src/app/app.constants\";\nimport { UI } from \"./ui\";\n\nexport class ExistingWallManager {\n private scene: Scene;\n private container: Group;\n private APP: AppComponent;\n private material: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n public geo_existingWallW1: GeometryInfo;\n public geo_existingWallL1: GeometryInfo;\n public geo_existingWallL2: GeometryInfo;\n public geo_existingWallW2: GeometryInfo;\n\n constructor() {\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n }\n\n public init(app: AppComponent): Promise {\n return new Promise((resolve, reject) => {\n this.APP = app;\n this.scene = app.scene;\n this.container = new Group();\n this.scene.add(this.container);\n this.material = MaterialManager.Instance().DEFAULT.clone();\n\n // app.sldBaySize.addAction(this.changeLength.bind(this));\n // app.sldSpan.addAction(this.changeSpan.bind(this));\n app.sldExistingWallHeight.addAction(this.uiChanged.bind(this));\n app.sldExistingLength.addAction(this.uiChanged.bind(this));\n app.sldExistingLength2.addAction(this.uiChanged.bind(this));\n app.sldExistingWidth1.addAction(this.uiChanged.bind(this));\n app.sldExistingWidth2.addAction(this.uiChanged.bind(this));\n app.sltExistingType.addAction(this.uiChanged.bind(this));\n app.sltStructureType.addAction(this.uiChanged.bind(this));\n \n resolve();\n });\n }\n public optimize() : Promise {\n return new Promise((resolve, reject) => {\n\n let scaleX = env.baySize.default / this.geometryManager.EXISTING_WALL.EXISTING_WALL.length;\n let scaleY = env.eaveHeight.default / this.geometryManager.EXISTING_WALL.EXISTING_WALL.height;\n let scaleZ = env.span.default / this.geometryManager.EXISTING_WALL.EXISTING_WALL.length;\n\n let translateWidth = this.geometryManager.EXISTING_WALL.EXISTING_WALL.width / 2;\n let translateHeight = this.geometryManager.EXISTING_WALL.EXISTING_WALL.height / 2;\n let translateLength = this.geometryManager.EXISTING_WALL.EXISTING_WALL.length / 2;\n\n this.geo_existingWallW1 = new GeometryInfo();\n this.geo_existingWallW1.geometry = this.geometryManager.EXISTING_WALL.EXISTING_WALL.geometry\n .clone()\n .rotateY(Math.PI / 2)\n .translate(0, translateHeight, 0);\n this.geo_existingWallW1.width = this.geometryManager.EXISTING_WALL.EXISTING_WALL.width;\n this.geo_existingWallW1.length = this.geometryManager.EXISTING_WALL.EXISTING_WALL.length;\n this.geo_existingWallW1.height = this.geometryManager.EXISTING_WALL.EXISTING_WALL.height;\n\n this.geo_existingWallW2 = new GeometryInfo();\n this.geo_existingWallW2.geometry = this.geometryManager.EXISTING_WALL.EXISTING_WALL.geometry\n .clone()\n .rotateY(Math.PI / 2)\n .translate(0, translateHeight, translateLength);\n this.geo_existingWallW2.width = this.geometryManager.EXISTING_WALL.EXISTING_WALL.width;\n this.geo_existingWallW2.length = this.geometryManager.EXISTING_WALL.EXISTING_WALL.length;\n this.geo_existingWallW2.height = this.geometryManager.EXISTING_WALL.EXISTING_WALL.height;\n\n this.geo_existingWallL1 = new GeometryInfo();\n this.geo_existingWallL1.geometry = this.geometryManager.EXISTING_WALL.EXISTING_WALL.geometry\n .clone()\n .translate(0, translateHeight, translateWidth);\n this.geo_existingWallL1.width = this.geometryManager.EXISTING_WALL.EXISTING_WALL.width;\n this.geo_existingWallL1.length = this.geometryManager.EXISTING_WALL.EXISTING_WALL.length;\n this.geo_existingWallL1.height = this.geometryManager.EXISTING_WALL.EXISTING_WALL.height;\n\n //front\n this.geo_existingWallL2 = new GeometryInfo();\n this.geo_existingWallL2.geometry = this.geometryManager.EXISTING_WALL.EXISTING_WALL.geometry\n .clone()\n .translate(-translateLength, translateHeight, -translateWidth);\n this.geo_existingWallL2.width = this.geometryManager.EXISTING_WALL.EXISTING_WALL.width;\n this.geo_existingWallL2.length = this.geometryManager.EXISTING_WALL.EXISTING_WALL.length;\n this.geo_existingWallL2.height = this.geometryManager.EXISTING_WALL.EXISTING_WALL.height;\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.container.children = [];\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.EXISTING_WALL));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == \"EXISTING_WALL_OUTLINE\"));\n\n if(this.APP.sltStructureType.currentValue == 4){\n resolve();\n return;\n }\n \n this.addEaveWall({length1: true});\n if (this.APP.sldExistingLength2.currentValue > 0) {\n this.addEaveWall({length2: true});\n }\n if (this.APP.sldExistingWidth1.currentValue > 0) {\n this.addEaveWall({width1: true});\n }\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n this.addEaveWall({width2: true});\n }\n \n new HighLightBox(this.container, {\n min: {\n x: - UI.existingLength1 / 2 - 150 - (this.APP.sldExistingWidth1.currentValue / 2 ? this.geometryManager.EXISTING_WALL.EXISTING_WALL.width : 0), \n y: 200, \n z: - this.APP.sldExistingWidth1.currentValue / 2 + 75, \n },\n max: {\n x: - UI.existingLength1 / 2 + 150 - (this.APP.sldExistingWidth1.currentValue / 2 ? this.geometryManager.EXISTING_WALL.EXISTING_WALL.width : 0), \n y: UI.eaveHeight + 200, \n z: - this.APP.sldExistingWidth1.currentValue / 2 - 225,\n },\n userData: { wallSide: BUILDING_SIDE.LEFT }\n })\n \n new HighLightBox(this.container, {\n min: {\n x: UI.existingLength1 / 2 + 150 + (this.APP.sldExistingWidth1.currentValue / 2 ? this.geometryManager.EXISTING_WALL.EXISTING_WALL.width : 0), \n y: 200, \n z: - this.APP.sldExistingWidth1.currentValue / 2 + 75, \n },\n max: {\n x: UI.existingLength1 / 2 - 150 + (this.APP.sldExistingWidth1.currentValue / 2 ? this.geometryManager.EXISTING_WALL.EXISTING_WALL.width : 0), \n y: UI.eaveHeight + 200, \n z: - this.APP.sldExistingWidth1.currentValue / 2 - 225,\n },\n userData: { wallSide: BUILDING_SIDE.RIGHT }\n })\n \n //this.getOutLines();\n resolve();\n });\n }\n public getOutLines(): Printing2DGeometry{\n let objs = this.scene.children.filter(o => o.userData.type == GEOMETRY_TYPE.EXISTING_WALL );\n let lsGeometries: Printing2DLine[] = [];\n\n for(let o of objs){ \n let outlineGeo = this.utils.getOutlineGeometryFromMesh((o as Mesh), 10);\n outlineGeo.translate(o.position.x, o.position.y + 5000, o.position.z);\n\n // var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"EXISTING_WALL_OUTLINE\"};\n // this.scene.add( line );\n\n let simplifiedGeo = this.simplifyGeo(outlineGeo);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: simplifiedGeo.vertices, \n views: o.userData.views\n });\n }\n\n return { lines: lsGeometries, texts: [] };\n }\n public simplifyGeo(geo: BufferGeometry): Geometry{\n let simplifiedGeo = new Geometry();\n let vertices = geo.getAttribute('position').array;\n for(let i = 0; i < vertices.length; i+=3){\n simplifiedGeo.vertices.push(new Vector3(vertices[i], vertices[i+1] - 5000, vertices[i+2]));\n }\n return simplifiedGeo;\n }\n public addEaveWall(userDataPos: any) {\n let mesh: Mesh;\n let scaleY = this.APP.sldExistingWallHeight.currentValue / this.geometryManager.EXISTING_WALL.EXISTING_WALL.height;\n\n if (userDataPos.width1) {\n let tt = MaterialManager.Instance().EXISTING_WALL_W1_TEXTURE;\n tt.repeat.set(this.APP.sldExistingWidth1.currentValue / 1024 / 2, this.APP.sldExistingWallHeight.currentValue / 1024 / 2);\n\n let mat = new MeshPhongMaterial({\n side: DoubleSide,\n map: tt\n });\n\n let offsetX = this.APP.sldExistingLength.currentValue / 2 + this.geometryManager.EXISTING_WALL.EXISTING_WALL.width / 2;\n let offsetZ = this.geo_existingWallW1.width/2;\n let scaleZ = (this.APP.sldExistingWidth1.currentValue + this.geo_existingWallW1.width) / this.geometryManager.EXISTING_WALL.EXISTING_WALL.length;\n\n let views = [\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n ]\n\n if (this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3) {\n mesh = new Mesh(this.geo_existingWallW1.geometry, mat);\n mesh.userData = { type: GEOMETRY_TYPE.EXISTING_WALL, position: {...userDataPos, left: true}, views: [...views, { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }] };\n mesh.position.setX(-offsetX);\n mesh.position.setZ(-offsetZ);\n mesh.scale.setY(scaleY);\n mesh.scale.setZ(scaleZ);\n this.scene.add(mesh);\n }\n if (this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3) {\n mesh = new Mesh(this.geo_existingWallW1.geometry, mat);\n mesh.userData = { type: GEOMETRY_TYPE.EXISTING_WALL, position: {...userDataPos, right: true}, views: [...views, { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }] };\n mesh.position.setX(offsetX);\n mesh.position.setZ(-offsetZ);\n mesh.scale.setY(scaleY);\n mesh.scale.setZ(scaleZ);\n this.scene.add(mesh);\n }\n } else if (userDataPos.length1) {\n let tt = MaterialManager.Instance().EXISTING_WALL_L1_TEXTURE;\n tt.repeat.set(this.APP.sldExistingLength.currentValue / 1024 / 2, this.APP.sldExistingWallHeight.currentValue / 1024 / 2);\n\n let mat = new MeshPhongMaterial({\n side: DoubleSide,\n map: tt\n });\n let offsetZ = this.APP.sldExistingWidth1.currentValue / 2 + this.geometryManager.EXISTING_WALL.EXISTING_WALL.width; //this.APP.sldSpan.currentValue/2;\n let scaleX = this.APP.sldExistingLength.currentValue / this.geometryManager.EXISTING_WALL.EXISTING_WALL.length;\n\n let views = [\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ]\n\n mesh = new Mesh(this.geo_existingWallL1.geometry, mat);\n mesh.userData = { type: GEOMETRY_TYPE.EXISTING_WALL, position: userDataPos, views: views };\n mesh.position.setZ(-offsetZ);\n mesh.scale.setY(scaleY);\n mesh.scale.setX(scaleX);\n\n this.scene.add(mesh);\n } else if (userDataPos.length2) {\n let tt = MaterialManager.Instance().EXISTING_WALL_L2_TEXTURE;\n tt.repeat.set(this.APP.sldExistingLength2.currentValue / 1024 / 2, this.APP.sldExistingWallHeight.currentValue / 1024 / 2);\n\n let mat = new MeshPhongMaterial({\n side: DoubleSide,\n map: tt\n });\n\n let offsetX = this.APP.sldExistingLength.currentValue / 2 + this.geometryManager.EXISTING_WALL.EXISTING_WALL.width;\n let offsetZ = this.APP.sldExistingWidth1.currentValue / 2;\n let scaleX = (this.APP.sldExistingLength2.currentValue - this.geometryManager.EXISTING_WALL.EXISTING_WALL.width) / this.geometryManager.EXISTING_WALL.EXISTING_WALL.length;\n if (scaleX == 0)\n scaleX = 0.1;\n\n let views = [\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n if (this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3) {\n views.push({ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS });\n mesh = new Mesh(this.geo_existingWallL2.geometry, mat);\n mesh.userData = { type: GEOMETRY_TYPE.EXISTING_WALL, position: {...userDataPos, left: true}, views: views };\n mesh.position.setX(-offsetX);\n mesh.scale.setY(scaleY);\n mesh.position.setZ(offsetZ);\n mesh.scale.setX(scaleX);\n this.scene.add(mesh);\n }\n if (this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3) {\n views.push({ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS });\n mesh = new Mesh(this.geo_existingWallL2.geometry, mat);\n mesh.userData = { type: GEOMETRY_TYPE.EXISTING_WALL, position: {...userDataPos, right: true}, views: views };\n mesh.position.setX(offsetX);\n mesh.scale.setY(scaleY);\n mesh.position.setZ(offsetZ);\n mesh.scale.setX(-scaleX);\n this.scene.add(mesh);\n }\n\n //mesh.visible = !(this.APP.sldExistingLength2.currentValue == 0);\n } else if (userDataPos.width2) {\n let tt = MaterialManager.Instance().EXISTING_WALL_W2_TEXTURE;\n tt.repeat.set(this.APP.sldExistingWidth2.currentValue / 1024 / 2, this.APP.sldExistingWallHeight.currentValue / 1024 / 2);\n\n let mat = new MeshPhongMaterial({\n side: DoubleSide,\n map: tt\n });\n\n let offsetX = this.APP.sldExistingLength.currentValue / 2 + this.APP.sldExistingLength2.currentValue + this.geometryManager.EXISTING_WALL.EXISTING_WALL.width/2;\n let offsetZ = this.APP.sldExistingWidth1.currentValue / 2 - this.geometryManager.EXISTING_WALL.EXISTING_WALL.width;\n let scaleZ = (this.APP.sldExistingWidth2.currentValue + this.geo_existingWallL2.width) / this.geometryManager.EXISTING_WALL.EXISTING_WALL.length;\n if (scaleZ == 0)\n scaleZ = 0.1;\n\n let views = [ \n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n if (this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3) {\n mesh = new Mesh(this.geo_existingWallW2.geometry, mat);\n mesh.userData = { type: GEOMETRY_TYPE.EXISTING_WALL, position: {...userDataPos, left: true}, views: [...views, { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }] };\n mesh.position.setX(-offsetX);\n mesh.position.setZ(offsetZ);\n mesh.scale.setY(scaleY);\n mesh.scale.setZ(scaleZ);\n this.scene.add(mesh);\n }\n if (this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3) {\n mesh = new Mesh(this.geo_existingWallW2.geometry, mat);\n mesh.userData = { type: GEOMETRY_TYPE.EXISTING_WALL, position: {...userDataPos, right: true}, views: [...views, { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }] };\n mesh.position.setX(offsetX);\n mesh.position.setZ(offsetZ);\n mesh.scale.setY(scaleY);\n mesh.scale.setZ(scaleZ);\n this.scene.add(mesh);\n }\n\n //mesh.visible = !(this.APP.sldExistingWidth2.currentValue == 0);\n }\n //this.scene.add(mesh);\n }\n\n public uiChanged(preVal: number, curVal): void {\n this.load();\n }\n}\n","import {\n HomeComponent as AppComponent,\n HomeComponent,\n} from \"src/app-ribspan/containers/home/home.component\";\nimport Dimension, {\n AddDimensionOptions,\n} from \"src/app-ribspan/models/Dimension\";\nimport {\n DIMENSION_LABEL_TYPE,\n DIMENSION_LOCATION,\n GEOMETRY_TYPE,\n} from \"src/app/app.config\";\nimport {\n FIT_DIMENSION,\n PANEL_DIRECTION,\n RAKECUT_TYPE,\n} from \"src/app/app.constants\";\nimport {\n GeometryInfo,\n IBay,\n LineType,\n Print2DText,\n Printing2DGeometry,\n Printing2DLine,\n ViewType,\n} from \"src/app/core/models\";\nimport { environment } from \"src/environments/environment\";\nimport {\n Box3,\n BoxBufferGeometry,\n FontLoader,\n Geometry,\n Group,\n Line,\n Line3,\n LineBasicMaterial,\n Material,\n Matrix4,\n Mesh,\n Object3D,\n Scene,\n TextBufferGeometry,\n Vector3,\n} from \"three\";\nimport { ExistingBuildingManager } from \".\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport { UI } from \"../ui\";\nimport { Util } from \"../utils\";\n\nexport class DimensionManager {\n private scene: Scene;\n private APP: AppComponent;\n public MANAGER: ExistingBuildingManager;\n public listText: THREE.Object3D[] = [];\n private utils: Util;\n\n private eventHandleId: any;\n\n private material: Material;\n private geometryManager: GeometryManager;\n\n private materialManager: MaterialManager;\n\n private dimensionPatiosFrontBottom: Object3D;\n private dimensionPatiosFrontRight: Object3D;\n\n private dimensionPatiosRightBottom: Object3D;\n private dimensionPatiosRightLeft: Object3D;\n private dimensionPatiosRightRight: Object3D;\n\n private dimensionPatiosLeftBottom: Object3D;\n private dimensionPatiosLeftRight: Object3D;\n private dimensionPatiosLeftLeft: Object3D;\n\n private dimensionPatiosPlanRight: Object3D;\n private dimensionPatiosPlanBottom: Object3D;\n private dimensionPatiosPlanLeft: Object3D;\n\n private dimensionPlanMiddle: Object3D;\n private dimensionPlanMidleLeft: Object3D;\n\n private dimensionPatiosLowerHeightDim: Object3D;\n\n private lineCapGeo: GeometryInfo;\n private lineGeo: GeometryInfo;\n private textGeo: TextBufferGeometry;\n\n private dimensionDistance = 1500;\n private dimensionDistance2 = 500;\n\n private textDistance = 5000;\n\n private totalBaySize: number;\n\n private font: any;\n private textParameter: any;\n\n private isReady = false;\n\n private box: Box3;\n\n private controlsToRegisterEvent: Array;\n private options: AddDimensionOptions;\n private startPos: Vector3;\n private startMatrix: Matrix4;\n private startBayLength: number;\n\n constructor(app: AppComponent, manager: ExistingBuildingManager) {\n this.utils = new Util();\n this.materialManager = MaterialManager.Instance();\n this.APP = app;\n this.MANAGER = manager;\n this.scene = this.APP.scene;\n this.material = MaterialManager.Instance().DIMENSION_TEXT;\n this.geometryManager = GeometryManager.Instance();\n\n //this.registerEvent();\n }\n\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n this.lineGeo = this.geometryManager.getDimensionLine();\n this.lineCapGeo = this.geometryManager.getDimensionCap();\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.unload();\n\n var loader = new FontLoader();\n\n this.dimensionPatiosFrontBottom = new Group();\n this.dimensionPatiosFrontBottom.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n // this.dimensionPatiosFrontBottom.rotation.set(0, Math.PI, 0);\n this.dimensionPatiosFrontBottom.visible = false;\n\n this.dimensionPatiosFrontRight = new Group();\n this.dimensionPatiosFrontRight.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosFrontRight.rotation.set(0, 0, -Math.PI / 2);\n this.dimensionPatiosFrontRight.visible = false;\n\n this.dimensionPatiosRightBottom = new Group();\n this.dimensionPatiosRightBottom.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosRightBottom.rotation.set(0, -Math.PI / 2, 0);\n this.dimensionPatiosRightBottom.visible = false;\n\n this.dimensionPatiosRightLeft = new Group();\n this.dimensionPatiosRightLeft.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosRightLeft.rotation.set(0, -Math.PI / 2, -Math.PI / 2);\n this.dimensionPatiosRightLeft.visible = false;\n\n this.dimensionPatiosRightRight = new Group();\n this.dimensionPatiosRightRight.rotation.set(\n 0,\n -Math.PI / 2,\n -Math.PI / 2\n );\n this.dimensionPatiosRightRight.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosRightRight.visible = false;\n\n this.dimensionPatiosLeftBottom = new Group();\n this.dimensionPatiosLeftBottom.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosLeftBottom.rotation.set(0, -Math.PI / 2, 0);\n this.dimensionPatiosLeftBottom.visible = false;\n\n this.dimensionPatiosLeftRight = new Group();\n this.dimensionPatiosLeftRight.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosLeftRight.rotation.set(Math.PI / 2, -Math.PI / 2, 0);\n this.dimensionPatiosLeftRight.visible = false;\n\n this.dimensionPatiosLeftLeft = new Group();\n this.dimensionPatiosLeftLeft.rotation.set(0, -Math.PI / 2, Math.PI / 2);\n this.dimensionPatiosLeftLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftLeft.visible = false;\n\n this.dimensionPatiosPlanRight = new Group();\n this.dimensionPatiosPlanRight.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosPlanRight.rotation.set(\n -Math.PI / 2,\n Math.PI,\n -Math.PI / 2\n );\n\n this.dimensionPatiosLowerHeightDim = new Group();\n this.dimensionPatiosLowerHeightDim.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosLowerHeightDim.rotation.set(0, 0, Math.PI / 2);\n\n this.dimensionPatiosPlanBottom = new Group();\n this.dimensionPatiosPlanBottom.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosPlanBottom.rotation.set(-Math.PI / 2, 0, 0);\n\n this.dimensionPatiosPlanLeft = new Group();\n this.dimensionPatiosPlanLeft.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n position: { left: true },\n };\n this.dimensionPatiosPlanLeft.rotation.set(-Math.PI / 2, 0, -Math.PI / 2);\n\n this.dimensionPlanMiddle = new Group();\n this.dimensionPlanMidleLeft = new Group();\n\n this.scene.add(this.dimensionPatiosPlanRight);\n this.scene.add(this.dimensionPatiosPlanLeft);\n this.scene.add(this.dimensionPatiosFrontRight);\n this.APP.patiosManager.patiosGroup.add(\n this.dimensionPatiosFrontBottom,\n //this.dimensionPatiosFrontRight,\n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom,\n this.dimensionPatiosLeftRight,\n this.dimensionPatiosLeftLeft,\n this.dimensionPatiosPlanBottom,\n this.dimensionPatiosLowerHeightDim,\n //this.dimensionPatiosPlanRight,\n this.dimensionPlanMiddle,\n this.dimensionPlanMidleLeft\n );\n\n loader.load(\n environment.modelBaseUrl +\n \"/assets/fonts/helvetiker_regular.typeface.json\",\n (font) => {\n this.font = font;\n\n this.textParameter = {\n font: this.font,\n size: 200,\n height: 5,\n curveSegments: 10,\n };\n this.options = {\n container: HomeComponent.ins.scene,\n start: new Vector3(),\n end: new Vector3(),\n linePos: new Vector3(),\n views: [],\n allowDrag: true,\n textParameter: this.textParameter,\n textPos: new Vector3(),\n labelType: null,\n fitZ: 10,\n hasTextClone: false,\n axis: \"x\",\n lineLength: 0,\n subtype: null,\n textUserData: null,\n onDragCallback: this.onDimDrag.bind(this),\n onDragStartCallback: this.onDimDragStart.bind(this),\n };\n this.isReady = true;\n this.draw();\n\n resolve();\n }\n );\n });\n }\n\n public unload() {\n this.scene.remove(this.dimensionPatiosPlanRight);\n this.scene.remove(this.dimensionPatiosPlanLeft);\n this.scene.remove(this.dimensionPatiosFrontRight);\n if (this.APP.patiosManager && this.APP.patiosManager.patiosGroup) {\n this.APP.patiosManager.patiosGroup.remove(\n this.dimensionPatiosFrontBottom,\n //this.dimensionPatiosFrontRight,\n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom,\n this.dimensionPatiosLeftRight,\n this.dimensionPatiosLeftLeft,\n this.dimensionPatiosPlanBottom,\n this.dimensionPatiosLowerHeightDim,\n //this.dimensionPatiosPlanRight,\n this.dimensionPlanMiddle,\n this.dimensionPlanMidleLeft\n );\n }\n }\n\n public draw() {\n if (!this.isReady) {\n return;\n }\n\n // this.dimensionPatiosPlanBottom.children = [];\n // this.dimensionPatiosPlanRight.children = [];\n // this.dimensionPatiosPlanLeft.children = [];\n this.dimensionPatiosLowerHeightDim.children =\n this.dimensionPatiosLowerHeightDim.children.filter(\n (el) => el.userData?.groupType == DIMENSION_LABEL_TYPE.LOWER_HEIGHT_DIM\n );\n\n this.dimensionPatiosPlanBottom.children =\n this.dimensionPatiosPlanBottom.children.filter(\n (el) =>\n el.userData?.groupType ==\n DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL ||\n el.userData?.groupType ==\n DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.LEFT_OVERHANG ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.RIGHT_OVERHANG ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY\n );\n this.dimensionPatiosPlanRight.children =\n this.dimensionPatiosPlanRight.children.filter(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.MULTI_SPAN ||\n el.userData?.groupType ==\n DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.FRONT_OVERHANG ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.BACK_OVERHANG\n );\n this.dimensionPatiosPlanLeft.children =\n this.dimensionPatiosPlanLeft.children.filter(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL\n );\n this.dimensionPatiosFrontBottom.children = [];\n this.dimensionPatiosFrontRight.children = [];\n this.dimensionPatiosLeftBottom.children = [];\n this.dimensionPatiosLeftRight.children = [];\n this.dimensionPatiosLeftLeft.children = [];\n this.dimensionPatiosRightBottom.children = [];\n this.dimensionPatiosRightLeft.children = [];\n this.dimensionPatiosRightRight.children = [];\n this.dimensionPlanMiddle.children = [];\n this.dimensionPlanMidleLeft.children = [];\n\n //this.scene.remove(...this.scene.children.filter(o => o.userData.type == 'BOXHELPER'));\n\n this.totalBaySize = this.APP.dialogEditBay.listBay\n .map((b) => b.value)\n .reduce((sum, current) => sum + current);\n // for (let b of this.APP.dialogEditBay.listBay) {\n // this.totalBaySize += b.value;\n // }\n\n this.box = this.utils.getSceneBox();\n // let boxHelper = new Box3Helper(this.MANAGER.boundingBox);\n // boxHelper.userData = { type: \"BOXHELPER\" };\n // this.scene.add(boxHelper);\n this.drawDimensionLowerHeightDim();\n this.drawDimensionPatiosPlanBottom();\n this.drawDimensionPatiosPlanRight();\n this.drawDimensionPatiosPlanLeft();\n\n this.drawDimensionPatiosFrontBottom();\n this.drawDimensionPatiosFrontRight();\n\n this.drawDimensionPatiosLeftBottom();\n this.drawDimensionPatiosLeftRight();\n this.drawDimensionPatiosLeftLeft();\n\n this.drawDimensionPatiosRightBottom();\n this.drawDimensionPatiosRightLeft();\n this.drawDimensionPatiosRightRight();\n\n this.drawDimensionMidle();\n this.drawDimensionMidleLeft();\n\n //testing\n // [\n // this.dimensionPatiosFrontBottom,\n // this.dimensionPatiosFrontRight,\n // this.dimensionPatiosRightBottom,\n // this.dimensionPatiosRightLeft,\n // this.dimensionPatiosRightRight,\n // this.dimensionPatiosLeftBottom,\n // this.dimensionPatiosLeftRight,\n // this.dimensionPatiosLeftLeft,\n // ].forEach(g => { g.visible = true });\n\n // var offset = this.calulateBoundingBox();\n // this.dimensionPatiosPlanRight.position.setX(offset.right);\n // this.dimensionPatiosPlanLeft.position.setX(offset.left);\n // this.dimensionPatiosPlanBottom.position.setZ(offset.front);\n\n // let existingHouseDimLeft = this.APP.scene.children.find(c => c.userData.type == GEOMETRY_TYPE.DIMENSION && c.userData.position?.planLeft);\n // //let existingHouseDimBox = new Box3().setFromObject(existingHouseDimLeft);\n // if(existingHouseDimLeft && existingHouseDimLeft.position.x > offset.left){\n // existingHouseDimLeft.position.setX(offset.left - 500);\n // }\n\n this.APP.dimensionManager.draw();\n }\n\n private drawDimensionLowerHeightDim() {\n const frontPostHeight = this.utils.getHeightByAngle(\n UI.height - this.MANAGER.postAndBeamManager.beamInfo.height,\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n -1\n );\n const offsetZFrontPos = UI.span + UI.multiSpan + FIT_DIMENSION;\n\n this.dimensionPatiosLowerHeightDim.position.set(\n 0,\n frontPostHeight / 2,\n offsetZFrontPos\n );\n\n let textStr = this.utils.getDimensionValue(frontPostHeight);\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: frontPostHeight,\n container: this.dimensionPatiosLowerHeightDim,\n views: [],\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, 200, 0),\n labelType: DIMENSION_LABEL_TYPE.LOWER_HEIGHT_DIM,\n textUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: [],\n },\n allowDrag: false,\n };\n let dimBay = this.dimensionPatiosLowerHeightDim.children.find(\n (el) => el.userData?.groupType == DIMENSION_LABEL_TYPE.LOWER_HEIGHT_DIM\n ) as Dimension;\n if (!dimBay) {\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n\n private drawDimensionMidleLeft() {\n let offsetX = 0; //this.totalBaySize / 2;\n let offsetZ = -this.APP.sldExistingWidth1.currentValue / 2 + 500;\n let origin = new Vector3(0, 0, 0);\n let head = new Vector3(0, 0, 1000);\n let hand1 = new Vector3(-50, 0, 950);\n let hand2 = new Vector3(50, 0, 950);\n\n //arrow\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n //let material = new LineBasicMaterial({ color: 0x0000ff });\n let geoLine = new Geometry();\n geoLine.vertices.push(origin);\n geoLine.vertices.push(head);\n\n geoLine.vertices.push(head);\n geoLine.vertices.push(hand1);\n\n geoLine.vertices.push(hand1);\n geoLine.vertices.push(hand2);\n\n geoLine.vertices.push(hand2);\n geoLine.vertices.push(head);\n let dim = new Line(geoLine);\n dim.userData = { type: \"Arrow\", views: views };\n\n //text of degree\n let textStr = \"Panel direction\";\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(\n this.textGeo,\n MaterialManager.Instance().DIMENSION_TEXT\n );\n\n text.userData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, 0, 0),\n };\n text.position.setZ(500);\n text.position.setX(200);\n\n dim.visible = false;\n text.visible = false;\n\n this.dimensionPlanMidleLeft.add(dim);\n this.dimensionPlanMidleLeft.add(text);\n\n if (\n this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT\n ) {\n text.position.set(-200, 0, 500);\n this.dimensionPlanMidleLeft.rotation.set(0, -Math.PI / 2, 0);\n this.dimensionPlanMidleLeft.position.set(offsetX + 500, 0, offsetZ);\n } else {\n this.dimensionPlanMidleLeft.rotation.set(0, Math.PI / 2, 0);\n this.dimensionPlanMidleLeft.position.set(-offsetX - 500, 0, offsetZ);\n }\n }\n private drawDimensionMidle() {\n let offsetZ =\n this.APP.sldSpan.currentValue / 2 +\n this.APP.sldMultiSpan.currentValue / 2 -\n this.APP.sldExistingWidth1.currentValue / 2;\n let origin = new Vector3(0, 0, 0);\n let head = new Vector3(0, 0, 1000);\n let hand1 = new Vector3(-50, 0, 950);\n let hand2 = new Vector3(50, 0, 950);\n\n //arrow\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n let material = new LineBasicMaterial({ color: 0x0000ff });\n let geoLine = new Geometry();\n geoLine.vertices.push(origin);\n geoLine.vertices.push(head);\n\n geoLine.vertices.push(head);\n geoLine.vertices.push(hand1);\n\n geoLine.vertices.push(hand1);\n geoLine.vertices.push(hand2);\n\n geoLine.vertices.push(hand2);\n geoLine.vertices.push(head);\n let dim = new Line(geoLine, material);\n dim.userData = { type: \"Arrow\", views: views };\n\n //text of degree\n let textStr = this.APP.sltRoofPitch.currentValue + \" degree\";\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(\n this.textGeo,\n MaterialManager.Instance().DIMENSION_TEXT\n );\n\n text.userData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, Math.PI / 2, 0),\n };\n text.position.setZ(500);\n text.position.setX(200);\n\n dim.visible = false;\n text.visible = false;\n\n this.dimensionPlanMiddle.add(dim);\n this.dimensionPlanMiddle.add(text);\n\n this.dimensionPlanMiddle.position.set(0, 0, offsetZ);\n\n //console.log(dim);\n }\n\n private drawDimensionPatiosPlanBottom() {\n //let offsetX = -(this.totalBaySize + this.APP.sldLeftOverhang.currentValue*2 + this.APP.sldRightOverhang.currentValue)/2;\n let offsetX = -this.totalBaySize / 2;\n let offsetZ = this.box.max.z + this.dimensionDistance2;\n //let offsetZ = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance2 - this.APP.sldExistingWidth1.currentValue / 2;\n //if (this.APP.sldExistingWidth1.currentValue > this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) {\n // offsetZ = this.APP.sldExistingWidth1.currentValue / 2 + this.dimensionDistance2;\n //}\n\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosPlanBottom.position.setZ(offsetZ);\n\n this.dimensionPatiosPlanBottom.children =\n this.dimensionPatiosPlanBottom.children.filter(\n (el) =>\n el.userData?.groupType != DIMENSION_LABEL_TYPE.BAY ||\n (el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY &&\n el.userData?.bayNum <\n HomeComponent.ins.dialogEditBay.listBay.length)\n );\n\n for (let i = 0; i <= this.APP.dialogEditBay.listBay.length; i++) {\n let b: IBay = { index: 0, value: 0, isCut: false };\n if (i < this.APP.dialogEditBay.listBay.length) {\n b = this.APP.dialogEditBay.listBay[i];\n }\n\n if (i < this.APP.dialogEditBay.listBay.length) {\n let textStr = this.utils.getDimensionValue(b.value);\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: b.value,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(offsetX + b.value / 2, 0, 0),\n textPos: new Vector3(offsetX + b.value / 2, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.BAY,\n bayNum: i,\n textUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n position: { bottom: true },\n },\n };\n let dimBay = this.dimensionPatiosPlanBottom.children.find(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY &&\n el.userData?.bayNum == i\n ) as Dimension;\n if (!dimBay) {\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n offsetX += b.value;\n }\n\n //rakecut\n if (this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE) {\n let _offsetX =\n -this.APP.dialogEditBay.totalBaySize / 2 +\n this.APP.sldLeftCutHorizontal.currentValue / 2 -\n this.APP.sldLeftOverhang.currentValue;\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldLeftCutHorizontal.currentValue,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(_offsetX, 500, 0),\n textPos: new Vector3(_offsetX, 300, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL,\n subtype: GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT,\n };\n let dimRake = this.dimensionPatiosPlanBottom.children.find(\n (el) =>\n el.userData?.groupType ==\n DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL\n ) as Dimension;\n if (!dimRake) {\n new Dimension(options);\n } else {\n dimRake.update(options);\n }\n } else {\n this.dimensionPatiosPlanBottom.children =\n this.dimensionPatiosPlanBottom.children.filter(\n (el) =>\n el.userData?.groupType !=\n DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL\n );\n }\n if (this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE) {\n let _offsetX =\n this.APP.dialogEditBay.totalBaySize / 2 -\n this.APP.sldRightCutHorizontal.currentValue / 2 +\n this.APP.sldRightOverhang.currentValue;\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldRightCutHorizontal.currentValue,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(_offsetX, 500, 0),\n textPos: new Vector3(_offsetX, 500 - 200, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL,\n subtype: GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT,\n };\n let dimRake = this.dimensionPatiosPlanBottom.children.find(\n (el) =>\n el.userData?.groupType ==\n DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL\n ) as Dimension;\n if (!dimRake) {\n new Dimension(options);\n } else {\n dimRake.update(options);\n }\n } else {\n this.dimensionPatiosPlanBottom.children =\n this.dimensionPatiosPlanBottom.children.filter(\n (el) =>\n el.userData?.groupType !=\n DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL\n );\n }\n\n //Left over hang\n this.addOverhang(\n this.dimensionPatiosPlanBottom,\n offsetX,\n this.APP.sldLeftOverhang.currentValue,\n views,\n \"Left\",\n 0,\n \"z\",\n DIMENSION_LABEL_TYPE.LEFT_OVERHANG\n );\n this.addOverhang(\n this.dimensionPatiosPlanBottom,\n offsetX,\n this.APP.sldRightOverhang.currentValue,\n views,\n \"Right\",\n 0,\n \"z\",\n DIMENSION_LABEL_TYPE.RIGHT_OVERHANG\n );\n this.repositionDimension(\n this.dimensionPatiosPlanBottom,\n DIMENSION_LOCATION.PLAN_BOTTOM\n );\n }\n onDimDrag(event) {\n this.utils.handlerDimDragEvent(\n event,\n this.startPos,\n this.startMatrix,\n this.startBayLength\n );\n this.startPos = event.object.position.clone();\n }\n onDimDragStart(event) {\n this.startPos = event.object.position.clone();\n this.startMatrix = event.object.matrixWorld.clone();\n if (event.object.userData?.dimType === DIMENSION_LABEL_TYPE.BAY) {\n let bayNum = event.object.userData.bayNum;\n this.startBayLength = UI.listBay[+bayNum].value;\n }\n }\n private drawDimensionPatiosPlanRight() {\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n let offsetDimensionZ =\n this.APP.sldSpan.currentValue / 2 -\n this.APP.sldExistingWidth1.currentValue / 2;\n\n let _dimensionDistane = this.dimensionDistance2;\n if (\n this.APP.sltExistingType.currentValue == 2 ||\n this.APP.sltExistingType.currentValue == 3\n ) {\n if (this.APP.sldExistingWidth1.currentValue > 0) {\n _dimensionDistane = this.dimensionDistance;\n }\n }\n\n let offsetDimensionX = this.box.max.x + this.dimensionDistance2;\n //let offsetDimensionX = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue + _dimensionDistane;\n //if (this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3) {\n // if (this.APP.sldExistingLength.currentValue > )\n //}\n //if (this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3) {\n\n //}\n\n //if (this.APP.sldExistingLength.currentValue / 2 > this.totalBaySize / 2) {\n // offsetDimensionX = this.APP.sldExistingLength.currentValue / 2 + _dimensionDistane;\n //}\n\n //if (this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3) {\n // offsetDimensionX += this.APP.sldExistingLength2.currentValue;\n //}\n\n this.dimensionPatiosPlanRight.position.set(\n offsetDimensionX,\n 0,\n offsetDimensionZ\n );\n let dimLength = this.APP.sldSpan.currentValue;\n\n let textStr = this.utils.getDimensionValue(this.APP.sldSpan.currentValue);\n\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldSpan.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.SPAN,\n hasTextClone: false,\n textUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, -Math.PI / 2, 0),\n },\n textCloneUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, -Math.PI / 2, 0),\n },\n textCloneRotation: new Vector3(0, Math.PI, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, -Math.PI, 0),\n fitZ: -10,\n };\n let dimSpan = this.dimensionPatiosPlanRight.children.find(\n (el) => el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN\n ) as Dimension;\n if (!dimSpan) {\n new Dimension(options);\n } else {\n dimSpan.update(options);\n }\n\n if (this.APP.sldMultiSpan.currentValue > 0) {\n let offsetX =\n this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue;\n // - this.APP.sldExistingWidth1.currentValue/2\n // - this.APP.existingWallManager.geo_existingWallL1.width\n // - this.APP.eaveManager.backOverhang;\n dimLength += this.APP.sldMultiSpan.currentValue;\n\n let textStr = this.utils.getDimensionValue(\n this.APP.sldMultiSpan.currentValue\n );\n\n let optionsMul: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldMultiSpan.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(\n this.APP.sldSpan.currentValue / 2 +\n this.APP.sldMultiSpan.currentValue / 2,\n 0,\n 0\n ),\n textPos: new Vector3(\n this.APP.sldSpan.currentValue / 2 +\n this.APP.sldMultiSpan.currentValue / 2,\n -200,\n 0\n ),\n labelType: DIMENSION_LABEL_TYPE.MULTI_SPAN,\n hasTextClone: false,\n textUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, -Math.PI / 2, 0),\n },\n textCloneUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, -Math.PI / 2, 0),\n },\n textCloneRotation: new Vector3(0, Math.PI, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, -Math.PI, 0),\n fitZ: -10,\n };\n let dimMul = this.dimensionPatiosPlanRight.children.find(\n (el) => el.userData?.groupType == DIMENSION_LABEL_TYPE.MULTI_SPAN\n ) as Dimension;\n if (!dimMul) {\n new Dimension(optionsMul);\n } else {\n dimMul.update(optionsMul);\n }\n } else {\n this.dimensionPatiosPlanRight.children =\n this.dimensionPatiosPlanRight.children.filter(\n (el) => el.userData?.groupType != DIMENSION_LABEL_TYPE.MULTI_SPAN\n );\n }\n\n let extraDistance = 0;\n\n //----Rake cut\n if (this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE) {\n extraDistance = 500;\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n\n let offsetZ =\n dimLength / 2 +\n UI.overhangFront +\n UI.multiSpan / 2 -\n UI.rakeCutRightVer / 2;\n\n let optionsRake: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldRightCutVertical.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(offsetZ, 500, 0),\n textPos: new Vector3(offsetZ, 300, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL,\n textRotation: new Vector3(0, Math.PI, 0),\n fitZ: -10,\n subtype: GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT,\n };\n let dimRake = this.dimensionPatiosPlanRight.children.find(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL\n ) as Dimension;\n if (!dimRake) {\n new Dimension(optionsRake);\n } else {\n dimRake.update(optionsRake);\n }\n } else {\n this.dimensionPatiosPlanRight.children =\n this.dimensionPatiosPlanRight.children.filter(\n (el) =>\n el.userData?.groupType !=\n DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL\n );\n }\n //----End rake cut\n\n let offsetRight =\n this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue;\n let offsetLeft = this.APP.sldSpan.currentValue / 2; // + this.APP.sldMultiSpan.currentValue;\n\n this.addOverhang(\n this.dimensionPatiosPlanRight,\n offsetRight,\n this.APP.sldFrontOverhang.currentValue,\n views,\n \"Right\",\n Math.PI,\n \"y\",\n DIMENSION_LABEL_TYPE.FRONT_OVERHANG\n );\n this.addOverhang(\n this.dimensionPatiosPlanRight,\n offsetLeft,\n this.APP.sldBackOverhang.currentValue,\n views,\n \"Left\",\n Math.PI,\n \"y\",\n DIMENSION_LABEL_TYPE.BACK_OVERHANG\n );\n this.repositionDimension(\n this.dimensionPatiosPlanRight,\n DIMENSION_LOCATION.PLAN_RIGHT,\n extraDistance\n );\n }\n private drawDimensionPatiosPlanLeft() {\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.NONE) {\n this.dimensionPatiosPlanLeft.children =\n this.dimensionPatiosPlanLeft.children.filter(\n (el) =>\n el.userData?.groupType !=\n DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL\n );\n return;\n }\n\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n\n let offsetDimensionZ =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue -\n this.APP.sldExistingWidth1.currentValue / 2 -\n // - this.APP.existingWallManager.geo_existingWallL1.width\n // - this.APP.eaveManager.backOverhang\n this.APP.sldLeftCutVertical.currentValue / 2;\n\n let optionsRake: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldLeftCutVertical.currentValue,\n container: this.dimensionPatiosPlanLeft,\n views: views,\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL,\n };\n let dimRake = this.dimensionPatiosPlanLeft.children.find(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL\n ) as Dimension;\n if (!dimRake) {\n new Dimension(optionsRake);\n } else {\n dimRake.update(optionsRake);\n }\n\n //let offsetDimensionX = this.MANAGER.boundingBox.min.x - this.dimensionDistance2;\n this.dimensionPatiosPlanLeft.position.set(0, 0, offsetDimensionZ);\n this.repositionDimension(\n this.dimensionPatiosPlanLeft,\n DIMENSION_LOCATION.PLAN_LEFT\n );\n }\n\n private drawDimensionPatiosFrontBottom() {\n let dimOffsetY = -this.dimensionDistance2;\n this.dimensionPatiosFrontBottom.position.set(0, dimOffsetY, 0);\n\n let views = [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosPlanBottom.children.forEach((groupDim) => {\n groupDim.children\n .filter(\n (c) => c.userData.subtype != GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT\n )\n .forEach((e) => {\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.rotation.set(0, Math.PI, 0);\n dim.userData[\"rotation\"] = new Vector3(0, 0, 0);\n dim.userData[\"position\"] = { ...e.userData.position, bottom: true };\n }\n this.dimensionPatiosFrontBottom.add(dim);\n });\n });\n }\n private drawDimensionPatiosFrontRight() {\n let views = [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }];\n\n let _dimensionDistane = this.dimensionDistance2;\n if (\n this.APP.sltExistingType.currentValue == 2 ||\n this.APP.sltExistingType.currentValue == 3\n ) {\n if (this.APP.sldExistingWidth1.currentValue > 0) {\n _dimensionDistane = this.dimensionDistance;\n }\n }\n let height = this.utils.getHeightByAngle(\n this.APP.sldBuildingHeight.currentValue,\n this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue,\n this.APP.sltRoofPitch.currentValue,\n -1\n );\n let dimOffsetX = this.box.max.x;\n //let dimOffsetX = this.totalBaySize / 2 + this.APP.patiosManager.patiosGroup.position.x + _dimensionDistane;\n let dimOffsetY = height / 2;\n //if (this.APP.sldExistingLength.currentValue / 2 > this.totalBaySize / 2) {\n // dimOffsetX = this.APP.sldExistingLength.currentValue / 2 + _dimensionDistane;\n //}\n\n //if (this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3) {\n // dimOffsetX += this.APP.sldExistingLength2.currentValue;\n //}\n\n this.dimensionPatiosFrontRight.position.set(dimOffsetX, dimOffsetY, 0);\n\n //--------\n let scaleLength = height / this.lineGeo.length;\n\n let cap1 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-dimOffsetY);\n\n let cap2 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(dimOffsetY);\n\n let line = new Mesh(\n this.lineGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(height);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(\n this.textGeo,\n MaterialManager.Instance().DIMENSION_TEXT\n );\n text.userData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, 0, -Math.PI / 2),\n };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosFrontRight.add(\n line,\n cap1,\n cap2,\n text,\n ...this.utils.addArrowForLine(line)\n );\n this.repositionDimension(\n this.dimensionPatiosFrontRight,\n DIMENSION_LOCATION.FRONT_RIGHT\n );\n }\n private drawDimensionPatiosLeftBottom() {\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z;\n\n this.dimensionPatiosLeftBottom.position.set(0, dimOffsetY, dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n this.dimensionPatiosPlanRight.children.forEach((groupDim) => {\n groupDim.children.forEach((e) => {\n if (e.userData?.subType == GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT) return;\n\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.rotation.set(0, 0, 0);\n dim.userData[\"views\"] = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n ];\n dim.userData[\"rotation\"] = new Vector3(0, 0, 0);\n dim.userData[\"position\"] = { ...e.userData.position, bottom: true };\n }\n this.dimensionPatiosLeftBottom.add(dim);\n });\n });\n }\n private drawDimensionPatiosLeftRight() {\n let dimOffsetY =\n this.APP.sldBuildingHeight.currentValue -\n this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue);\n let dimOffsetZ =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.dimensionDistance2 -\n this.APP.sldExistingWidth1.currentValue / 2;\n if (\n this.APP.sldExistingWidth1.currentValue +\n this.APP.sldExistingWidth2.currentValue >\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue\n ) {\n dimOffsetZ =\n this.APP.sldExistingWidth1.currentValue / 2 +\n this.APP.sldExistingWidth2.currentValue +\n this.dimensionDistance2 -\n 290;\n }\n if (this.APP.sldExistingLength2.currentValue > 0) {\n dimOffsetZ += 500;\n }\n\n this.dimensionPatiosLeftRight.position.set(0, dimOffsetY / 2, dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n let offsetLength = dimOffsetY;\n let scaleLength = offsetLength / this.lineGeo.length;\n\n let cap1 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength / 2);\n\n let cap2 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength / 2);\n\n let line = new Mesh(\n this.lineGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(\n this.textGeo,\n MaterialManager.Instance().DIMENSION_TEXT\n );\n text.userData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }],\n rotation: new Vector3(-Math.PI / 2, 0, 0),\n };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosLeftRight.add(\n line,\n cap1,\n cap2,\n text,\n ...this.utils.addArrowForLine(line)\n );\n this.repositionDimension(\n this.dimensionPatiosLeftRight,\n DIMENSION_LOCATION.LEFT_RIGHT\n );\n }\n private drawDimensionPatiosRightBottom() {\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z;\n\n this.dimensionPatiosRightBottom.position.set(0, dimOffsetY, dimOffsetZ);\n\n let views = [{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosPlanRight.children.forEach((groupDim) => {\n groupDim.children.forEach((e) => {\n if (e.userData?.subType == GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT) return;\n\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.userData[\"rotation\"] = new Vector3(0, 0, 0);\n dim.userData[\"position\"] = { ...e.userData.position, bottom: true };\n }\n this.dimensionPatiosRightBottom.add(dim);\n });\n });\n }\n private drawDimensionPatiosRightLeft() {\n let dimOffsetY = this.utils.getHeightByAngle(\n this.APP.sldBuildingHeight.currentValue,\n this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue,\n this.APP.sltRoofPitch.currentValue,\n -1\n );\n let dimOffsetZ = this.dimensionPatiosLeftRight.position.z; //this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance2 - this.APP.sldExistingWidth1.currentValue/2;\n //this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance2;\n\n this.dimensionPatiosRightLeft.position.set(0, dimOffsetY / 2, dimOffsetZ);\n\n let views = [{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosLeftRight.children.forEach((e) => {\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.userData[\"rotation\"] = new Vector3(Math.PI / 2, 0, 0);\n dim.rotation.set(0, Math.PI, 0);\n }\n this.dimensionPatiosRightLeft.add(dim);\n });\n this.repositionDimension(\n this.dimensionPatiosRightLeft,\n DIMENSION_LOCATION.RIGHT_LEFT\n );\n }\n private drawDimensionPatiosLeftLeft() {\n let dimOffsetY = this.APP.sldBuildingHeight.currentValue;\n let dimOffsetZ = this.APP.sldExistingWidth1.currentValue / 2 + 1800;\n\n this.dimensionPatiosLeftLeft.position.set(0, dimOffsetY / 2, -dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n ];\n\n let offsetLength = dimOffsetY;\n let scaleLength = offsetLength / this.lineGeo.length;\n\n let cap1 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength / 2);\n\n let cap2 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength / 2);\n\n let line = new Mesh(\n this.lineGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(\n this.textGeo,\n MaterialManager.Instance().DIMENSION_TEXT\n );\n text.userData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }],\n rotation: new Vector3(Math.PI / 2, 0, 0),\n };\n text.position.set(0, 200, 0);\n\n this.dimensionPatiosLeftLeft.add(\n line,\n cap1,\n cap2,\n text,\n ...this.utils.addArrowForLine(line)\n );\n }\n private drawDimensionPatiosRightRight() {\n let dimOffsetY = this.APP.sldBuildingHeight.currentValue;\n let dimOffsetZ = this.APP.sldExistingWidth1.currentValue / 2 + 1800;\n\n this.dimensionPatiosRightRight.position.set(0, dimOffsetY / 2, -dimOffsetZ);\n\n let views = [{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosLeftLeft.children.forEach((e) => {\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n dim.userData[\"rotation\"] = new Vector3(-Math.PI / 2, 0, 0);\n dim.rotation.set(0, Math.PI, 0);\n dim.position.set(dim.position.x, -dim.position.y, dim.position.z);\n this.dimensionPatiosRightRight.add(dim);\n }\n });\n }\n private addOverhang(\n groupDim: Object3D,\n offset: number,\n overhangValue: number,\n views: any,\n side: string,\n rotateText: number,\n axis: string,\n labelType?: string\n ) {\n if (overhangValue == 0) {\n let dim = groupDim.children.find(\n (el) => el.userData?.groupType == labelType\n ) as Dimension;\n if (dim) {\n groupDim.remove(dim);\n }\n return;\n }\n\n let textStr = this.utils.getDimensionValue(overhangValue);\n\n let textRotation = new Vector3();\n let textUserData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n position: { overhang: true },\n };\n if (axis === \"z\") {\n textRotation.setZ(rotateText);\n textUserData[\"rotation\"] = new Vector3(0, 0, -rotateText / 2);\n textUserData[\"position\"][\"bottom\"] = true;\n } else if (axis === \"y\") {\n textRotation.setY(rotateText);\n textUserData[\"rotation\"] = new Vector3(0, -rotateText / 2, 0);\n } else if (axis === \"x\") {\n textRotation.setX(rotateText);\n textUserData[\"rotation\"] = new Vector3(-rotateText / 2, 0, 0);\n }\n\n let linePos = new Vector3();\n if (side === \"Left\") {\n linePos.setX(-offset - overhangValue / 2);\n } else if (side === \"Right\") {\n linePos.setX(offset + overhangValue / 2);\n }\n let fitZ = 0;\n if (labelType) {\n if (axis === \"z\") {\n fitZ = 10;\n } else if (axis === \"y\") {\n fitZ = -10;\n }\n }\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: overhangValue,\n container: groupDim,\n views: views,\n linePos: linePos,\n textPos: linePos.clone().setY(linePos.y - 200),\n labelType: labelType ? labelType : null,\n fitZ: fitZ,\n textRotation: textRotation,\n textUserData: textUserData,\n };\n let dim = groupDim.children.find(\n (el) => el.userData?.groupType == labelType\n ) as Dimension;\n if (!dim) {\n new Dimension(options);\n } else {\n dim.update(options);\n }\n }\n private getTextCover(\n textGeo: TextBufferGeometry,\n labelType: string,\n pos: Vector3,\n fitZ = 0,\n bayNum?: number\n ) {\n let textSize = new Vector3();\n textGeo.boundingBox.getSize(textSize);\n\n let textCover = new Mesh(\n new BoxBufferGeometry(textSize.x, textSize.y, textSize.z)\n );\n textCover.position.set(pos.x, pos.y, pos.z + fitZ);\n textCover.userData = { type: GEOMETRY_TYPE.TEXT_COVER, labelType };\n if (bayNum !== undefined) {\n textCover.userData[\"bayNum\"] = bayNum;\n }\n textCover.material[\"opacity\"] = 0;\n textCover.material[\"transparent\"] = true;\n\n return textCover;\n }\n\n public getOutlines(): Printing2DGeometry {\n let lsGeometries: Printing2DLine[] = [];\n let lsText: Print2DText[] = [];\n\n for (let dim of [\n ...this.dimensionPatiosPlanBottom.children,\n ...this.dimensionPatiosPlanRight.children,\n ...this.dimensionPatiosPlanLeft.children,\n ...this.dimensionPatiosFrontBottom.children,\n ...this.dimensionPatiosFrontRight.children,\n ...this.dimensionPatiosLeftBottom.children,\n ...this.dimensionPatiosLeftRight.children,\n ...this.dimensionPatiosLeftLeft.children,\n ...this.dimensionPatiosRightBottom.children,\n ...this.dimensionPatiosRightLeft.children,\n ...this.dimensionPatiosRightRight.children,\n ...this.dimensionPlanMiddle.children,\n ...this.dimensionPlanMidleLeft.children,\n ]) {\n if (!dim.userData.views) {\n console.log(\"TEXT NO VIEW\", dim);\n continue;\n }\n\n if (dim.type == \"Group\") {\n dim.children.forEach((el) => {\n el.updateMatrix();\n let _clone = el.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(el.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n\n el.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(el.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(el.matrixWorld);\n\n let textRotation = el.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, el, pos, textRotation, points);\n });\n } else {\n dim.updateMatrix();\n let _clone = dim.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(dim.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n\n dim.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(dim.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(dim.matrixWorld);\n\n let textRotation = dim.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, dim, pos, textRotation, points);\n }\n }\n return { lines: lsGeometries, texts: lsText };\n }\n private getDimInfo(\n lsGeometries: Printing2DLine[],\n lsText: Print2DText[],\n dim: Object3D,\n pos: Vector3,\n textRotation: Vector3,\n points: Vector3[]\n ) {\n if (\n dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT &&\n dim.userData.views &&\n dim.userData.value\n ) {\n let box = new Box3().setFromObject(dim.parent);\n let startEnd = this.utils.getStartEndPoint(box);\n let line = new Line3(startEnd[0], startEnd[1]);\n\n let projectPoint = new Vector3();\n line.closestPointToPoint(pos, true, projectPoint);\n let _pos = new Vector3().addVectors(\n projectPoint,\n new Vector3()\n .subVectors(pos, projectPoint)\n .normalize()\n .multiplyScalar(10)\n );\n\n if (dim.userData.position?.bottom) {\n if (dim.userData.position?.overhang) {\n _pos = new Vector3().addVectors(\n projectPoint,\n new Vector3()\n .subVectors(pos, projectPoint)\n .normalize()\n .multiplyScalar(180)\n );\n } else {\n _pos = new Vector3().addVectors(\n projectPoint,\n new Vector3()\n .subVectors(pos, projectPoint)\n .normalize()\n .multiplyScalar(120)\n );\n }\n } else {\n if (dim.userData.position?.overhang) {\n _pos = new Vector3().addVectors(\n projectPoint,\n new Vector3()\n .subVectors(pos, projectPoint)\n .normalize()\n .multiplyScalar(100)\n );\n }\n }\n\n let p = new Vector3().applyMatrix4(dim.matrixWorld);\n\n lsText.push({\n value: dim.userData.value,\n position: p,\n rotation: textRotation,\n views: dim.userData.views,\n });\n } else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_LINE) {\n // this.scene.add(new LineSegments(new Geometry().setFromPoints(points), new LineBasicMaterial({color: new Color('red')})));\n\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views,\n });\n } else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_CAP) {\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views,\n });\n } else if (dim.userData.type == \"Arrow\") {\n let geo = ((dim as Line).geometry as Geometry).clone();\n geo.applyMatrix4(dim.matrixWorld);\n lsGeometries.push({\n vertices: geo.vertices,\n objectType: dim.userData.type,\n views: dim.userData.views,\n });\n }\n }\n public destroy(): void {\n this.unregisterEvent();\n this.unload();\n }\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldFrontOverhang,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sldExistingWallHeight,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch,\n\n this.APP.sldEaveWidth,\n ];\n this.controlsToRegisterEvent.forEach((c) =>\n c.addAction(this.eventHandleId)\n );\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.controlsToRegisterEvent = undefined;\n }\n public uiChanged(preVal: number, curVal: number): void {\n this.draw();\n }\n private calulateBoundingBox() {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter((c) => c.userData.type == \"BOX_HELPER_\")\n );\n let patiosBox = this.MANAGER.boundingBox;\n\n let planRightBox = this.APP.utils.getObjectBoundingBox(\n this.dimensionPatiosPlanRight\n );\n planRightBox.min.x = patiosBox.max.x;\n planRightBox.max.x = patiosBox.max.x + 500;\n planRightBox.max.y = 10000;\n\n let planLeftBox = this.APP.utils.getObjectBoundingBox(\n this.dimensionPatiosPlanLeft\n );\n planLeftBox.min.x = patiosBox.min.x - 500;\n planLeftBox.max.x = patiosBox.min.x;\n planLeftBox.max.y = 10000;\n\n let planBottomBox = this.APP.utils.getObjectBoundingBox(\n this.dimensionPatiosPlanBottom\n );\n let planBottomBoxWidth = planBottomBox.max.z - planBottomBox.min.z;\n planBottomBox.min.z = patiosBox.max.z;\n planBottomBox.max.z = patiosBox.max.z + planBottomBoxWidth;\n planBottomBox.max.y = 10000;\n\n let objs = [];\n\n objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n c.userData.position?.width1) ||\n c.userData.position?.width2 ||\n c.userData.position?.length2 ||\n c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n\n // for(let e of objs){\n // let boxModelHelper = new BoxHelper(e);\n // boxModelHelper.userData = {type: 'BOX_HELPER_'};\n // this.scene.add(boxModelHelper);\n // }\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (planRightBox.intersectsBox(objBox)) {\n intersectBox = true;\n planRightBox.translate(new Vector3(100, 0, 0));\n }\n if (planLeftBox.intersectsBox(objBox)) {\n intersectBox = true;\n planLeftBox.translate(new Vector3(-100, 0, 0));\n }\n if (planBottomBox.intersectsBox(objBox)) {\n intersectBox = true;\n planBottomBox.translate(new Vector3(0, 0, 100));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(planRightBox);\n // boxHelper.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper);\n\n // let boxHelper2 = new Box3Helper(planLeftBox);\n // boxHelper2.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper2);\n\n // let boxHelper3 = new Box3Helper(planBottomBox);\n // boxHelper3.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper3);\n\n return {\n left: planLeftBox.min.x,\n right: planRightBox.max.x,\n front: planBottomBox.max.z,\n };\n }\n private repositionDimension(dimension, location, extraDistance = 0) {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter((c) => c.userData.type == location)\n );\n\n let patiosBox = this.MANAGER.boundingBox;\n\n if (location == DIMENSION_LOCATION.FRONT_RIGHT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.max.x;\n dimBox.max.x = patiosBox.max.x + 500;\n dimBox.max.z = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n !c.userData.position.length1 &&\n !c.userData.position.length2) ||\n (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL &&\n !c.userData.position.length1 &&\n !c.userData.position.length2)\n );\n\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n !c.userData.position.length1) ||\n (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL &&\n !c.userData.position.length1)\n );\n }\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(100, 0, 0));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setX(dimBox.max.x + extraDistance);\n } else if (location == DIMENSION_LOCATION.PLAN_LEFT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.min.x - 500;\n dimBox.max.x = patiosBox.min.x;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF ||\n c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(-100, 0, 0));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setX(dimBox.min.x + extraDistance);\n } else if (location == DIMENSION_LOCATION.PLAN_RIGHT) {\n // patiosBox = this.APP.utils.getObjectsBoundingBox(\n // this.MANAGER.patiosGroup.children.filter(c => c.userData.type != GEOMETRY_TYPE.DIMENSION && c.userData.type != GEOMETRY_TYPE.ROOF_PATIOS)\n // );\n\n // let patiosBoxHelper = new Box3Helper(patiosBox);\n // patiosBoxHelper.userData = {type: location};\n // this.scene.add(patiosBoxHelper);\n\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.max.x;\n dimBox.max.x = patiosBox.max.x + 500;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF ||\n c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n\n // for(let e of objs){\n // let boxModelHelper = new BoxHelper(e);\n // boxModelHelper.userData = {type: location};\n // this.scene.add(boxModelHelper);\n // }\n\n // for(let i = 0; i < 100; i++){\n // let intersectBox = false;\n // for(let o of objs){\n // let objBox = this.APP.utils.getObjectBoundingBox(o);\n // if(dimBox.intersectsBox(objBox)){\n // intersectBox = true;\n // dimBox.translate(new Vector3(100,0,0))\n // }\n // }\n\n // if(!intersectBox)\n // break;\n // }\n\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n dimBox.translate(new Vector3(objBox.max.x - dimBox.min.x, 0, 0));\n }\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setX(dimBox.max.x + extraDistance);\n } else if (location == DIMENSION_LOCATION.PLAN_BOTTOM) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF ||\n c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(0, 0, 100));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setZ(dimBox.max.z + extraDistance);\n } else if (location == DIMENSION_LOCATION.LEFT_RIGHT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n dimBox.min.x = -10000;\n dimBox.max.x = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n c.userData.position?.left) ||\n (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL &&\n c.userData.position?.left)\n );\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(0, 0, 100));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setZ(dimBox.max.z);\n } else if (location == DIMENSION_LOCATION.RIGHT_LEFT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(\n this.dimensionPatiosLeftRight\n );\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n\n dimBox.min.x = -10000;\n dimBox.max.x = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n c.userData.position?.right) ||\n (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL &&\n c.userData.position?.right)\n );\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(0, 0, 100));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setZ(dimBox.max.z);\n }\n }\n}\n","import { PostAndBeamManager } from \"./post-and-beam.manager\";\nimport { RoofManager } from \"./roof.manager\";\nimport { HomeComponent as AppComponent } from \"../../containers/home/home.component\";\nimport {\n PatiosManager,\n RafterBeamAndInternalBeamInfo,\n} from \"../patios.manager\";\nimport { Printing2DGeometry } from \"src/app/core/models\";\nimport { Group, Box3, Box3Helper, BoxHelper, Vector3 } from \"three\";\nimport { GEOMETRY_CATEGORY, CONFIG, GEOMETRY_TYPE } from \"src/app/app.config\";\nimport { DimensionManager } from \"./dimension.manager\";\nimport {\n CUTOUT_ENABLE,\n EXISTING_BUILDING_CONFIG,\n RAKECUT_TYPE,\n} from \"src/app/app.constants\";\nimport { environment } from \"src/environments/environment\";\n\nexport class ExistingBuildingManager implements PatiosManager {\n private APP: AppComponent;\n patiosGroup: Group;\n public boundingBox: Box3;\n public postAndBeamManager: PostAndBeamManager;\n private roofManager: RoofManager;\n public dimesionManager: DimensionManager;\n public ignoreBayEvent: boolean = false;\n public rafterBeamAndInternalBeamInfo: RafterBeamAndInternalBeamInfo = {\n numOfInternalRafter: 0,\n numOfSpanBeam: 0,\n numOfMultiSpanBeam: 0,\n };\n\n private updateEventHandle: any;\n private controlsToRegisterEvent: Array;\n private deferHandle;\n private deferTimeout = EXISTING_BUILDING_CONFIG.CUTOUT_DEFFER_TIME_OUT;\n public get cutoutCondition(): boolean {\n return (\n [this.APP.sldSpan, this.APP.sldMultiSpan, this.APP.sldFrontOverhang]\n .map((x) => x.currentValue)\n .reduce((a, b) => a + b, 0) -\n this.APP.sldExistingWidth1.currentValue >=\n EXISTING_BUILDING_CONFIG.CUTOUT_ALLOW\n );\n }\n public get rakecutCondition(): boolean {\n let patiosWidth =\n this.APP.dialogEditBay.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n let patiosLength =\n this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue;\n\n return false;\n }\n\n public patiosLength: number;\n public patiosWidth: number;\n public firstLoad = true;\n\n constructor(app: AppComponent) {\n this.APP = app;\n this.patiosGroup = new Group();\n this.patiosGroup.userData = { category: GEOMETRY_CATEGORY.PATIOS };\n app.scene.add(this.patiosGroup);\n\n this.postAndBeamManager = new PostAndBeamManager(app, this);\n this.roofManager = new RoofManager(app, this);\n this.dimesionManager = new DimensionManager(app, this);\n\n this.registerEvents();\n }\n\n load(): Promise {\n return Promise.all([\n this.postAndBeamManager.optimize(),\n this.roofManager.optimize(),\n this.dimesionManager.optimize(),\n ]).then(() => {\n this.postAndBeamManager.load();\n this.roofManager.load();\n this.dimesionManager.load();\n });\n }\n loadBracket(bracketQuantity: number): void {}\n loadBracketCutout(bracketQuantity: number): void {}\n loadSideGableBracket(bracketQuantity: number): void {}\n loadRafterBeamAndInternalBeam(info: RafterBeamAndInternalBeamInfo): void {\n this.rafterBeamAndInternalBeamInfo = info;\n this.postAndBeamManager.addEndRafterBeam(info);\n }\n public destroy(): void {\n this.postAndBeamManager.destroy();\n this.roofManager.destroy();\n this.dimesionManager.destroy();\n this.unRegisterEvent();\n }\n\n registerEvents(): void {\n this.updateEventHandle = this.updateDefer.bind(this);\n this.controlsToRegisterEvent = [\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sltCutOut,\n this.APP.sldFrontOverhang,\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltColourBarge,\n this.APP.sltColourGutter,\n this.APP.sltColourDownpipe,\n this.APP.sltColourRoof,\n this.APP.sldSpan,\n this.APP.sldExistingWallHeight,\n this.APP.sldEaveWidth,\n this.APP.sldFasciaDepth,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldFlyOverBracketHeight,\n this.APP.sltColourBeam,\n this.APP.sltColourPost,\n this.APP.sltColourBracket,\n this.APP.sltColourFasciaBracket,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n this.APP.sltLeftCutType,\n this.APP.sldLeftCutVertical,\n this.APP.sldLeftCutHorizontal,\n this.APP.sltRightCutType,\n this.APP.sldRightCutVertical,\n this.APP.sldRightCutHorizontal,\n this.APP.sldBuildingHeight,\n this.APP.sltPanelDirection,\n this.APP.sltPanelDirectionShow,\n this.APP.sltBeamLayoutShow,\n this.APP.btnTurnOnPanel,\n ];\n this.controlsToRegisterEvent.forEach((c) => {\n c.addAction(this.updateEventHandle);\n });\n }\n unRegisterEvent(): void {\n this.controlsToRegisterEvent.forEach((c) =>\n c.removeAction(this.updateEventHandle)\n );\n }\n updateDefer(previousValue: number, currentValue: number) {\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES ||\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE ||\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE\n ) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => {\n this.update(previousValue, currentValue);\n }, this.deferTimeout);\n } else {\n this.update(previousValue, currentValue);\n }\n }\n update(preVal: number, curVal: number) {\n let totalBaySize = this.APP.dialogEditBay.totalBaySize;\n\n let diff = this.APP.sldExistingLength.currentValue - totalBaySize;\n\n this.patiosWidth =\n totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n this.patiosLength =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue;\n\n //let cutoutCondition = this.cutoutCondition.map(x => x.currentValue).reduce((a,b) => a + b, 0) - this.APP.sldExistingWidth1.currentValue >= EXISTING_BUILDING_CONFIG.CUTOUT_ALLOW;\n if (this.APP.sltExistingType.currentValue == 1) {\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n this.patiosGroup.position.setX(\n -diff / 2 +\n this.APP.sldLeftOverhang.currentValue -\n this.APP.sldExistingLength2.currentValue\n );\n } else {\n this.patiosGroup.position.setX(\n -diff / 2 + this.APP.sldLeftOverhang.currentValue\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 2) {\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n this.patiosGroup.position.setX(\n diff / 2 -\n this.APP.sldRightOverhang.currentValue +\n this.APP.sldExistingLength2.currentValue\n );\n } else {\n this.patiosGroup.position.setX(\n diff / 2 - this.APP.sldRightOverhang.currentValue\n );\n }\n } else {\n this.patiosGroup.position.setX(0);\n }\n\n Promise.all([this.roofManager.load(), this.postAndBeamManager.load()]).then(\n () => {\n this.loadRafterBeamAndInternalBeam(this.rafterBeamAndInternalBeamInfo);\n this.boundingBox = this.getPatiosBox();\n this.dimesionManager.draw();\n }\n );\n }\n getOutlines(): Printing2DGeometry {\n let dimensionOutline = this.dimesionManager.getOutlines();\n return {\n lines: [\n ...this.postAndBeamManager.getSection().lines,\n ...this.roofManager.getOutLines().lines,\n ...dimensionOutline.lines,\n ],\n texts: dimensionOutline.texts,\n };\n }\n public getPatiosBox(): Box3 {\n let left =\n -this.APP.dialogEditBay.totalBaySize / 2 -\n this.APP.sldLeftOverhang.currentValue;\n let right =\n this.APP.dialogEditBay.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue;\n let front =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue;\n let back = 0;\n let height = this.APP.sldBuildingHeight.currentValue;\n\n let box = new Box3();\n box = box.expandByPoint(new Vector3(left, 0, front));\n box = box.expandByPoint(new Vector3(right, height, back));\n\n if (this.APP.sltExistingType.currentValue == 1) {\n let diff =\n (this.APP.sldExistingLength.currentValue -\n this.APP.dialogEditBay.totalBaySize) /\n 2;\n box.translate(new Vector3(-diff, 0, 0));\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n box.translate(new Vector3(this.APP.sldLeftOverhang.currentValue, 0, 0));\n\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n box.translate(\n new Vector3(-this.APP.sldExistingLength2.currentValue, 0, 0)\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 2) {\n let diff =\n (this.APP.sldExistingLength.currentValue -\n this.APP.dialogEditBay.totalBaySize) /\n 2;\n box.translate(new Vector3(diff, 0, 0));\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n box.translate(new Vector3(-this.APP.sldRightOverhang.currentValue, 0, 0));\n\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n box.translate(\n new Vector3(this.APP.sldExistingLength2.currentValue, 0, 0)\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 3) {\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n }\n\n // if(!environment.production){\n // this.APP.scene.remove(...this.APP.scene.children.filter(o => o.userData.type == 'BOXHELPER'));\n // let boxHelper = new Box3Helper(box);\n // boxHelper.userData = { type: \"BOXHELPER\" };\n // this.APP.scene.add(boxHelper);\n // }\n\n return box;\n }\n}\n","import {\n HomeComponent as AppComponent,\n HomeComponent,\n} from \"../../containers/home/home.component\";\nimport {\n Scene,\n Material,\n Mesh,\n Vector3,\n BufferGeometry,\n BoxHelper,\n Geometry,\n LineSegments,\n BoxBufferGeometry,\n Group,\n Object3D,\n Matrix4,\n Line,\n Points,\n PointsMaterial,\n Box3,\n Box3Helper,\n Line3,\n Color,\n Plane,\n PlaneHelper,\n} from \"three\";\nimport { Util, getBeamEndCapCode } from \"../utils\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport {\n CONFIG as env,\n GEOMETRY_TYPE,\n GEOMETRY_CATEGORY,\n} from \"src/app/app.config\";\nimport {\n BUILDING_SIDE,\n EXISTING_BUILDING_CONFIG as CONST,\n CUTOUT_ENABLE,\n EXISTING_BUILDING_CONFIG,\n MIN_INTERNAL_BEAM_LENGTH,\n RAKECUT_TYPE,\n} from \"src/app/app.constants\";\nimport {\n GeometryInfo,\n Printing2DGeometryType,\n Printing2DLine,\n Printing2DGeometry,\n Print2DView,\n ViewType,\n LineType,\n} from \"src/app/core/models\";\nimport { ExistingBuildingManager } from \".\";\nimport { group } from \"console\";\nimport { UI } from \"../ui\";\nimport _ from \"lodash\";\n\nexport class PostAndBeamManager {\n private scene: Group;\n private APP: AppComponent;\n private material: Material;\n private utils: Util;\n private geometryManager: GeometryManager;\n private postInfo: GeometryInfo;\n public beamInfo: GeometryInfo;\n private beamRakecutInfoLeft: GeometryInfo;\n private beamRakecutInfoRight: GeometryInfo;\n private geo_beamEndCap: GeometryInfo;\n private geo_groundBase: GeometryInfo;\n private eventHandleId: any;\n private roofWidth: number;\n private frontPostHeight: number;\n private totalBaySize: number;\n private downpipeGroup: Group;\n private downpipeStepRakeCutGroupLeft: Group;\n private downpipeStepRakeCutGroupRight: Group;\n private geo_downPipe: GeometryInfo;\n private geo_downPipeL: GeometryInfo;\n private objectSizeChangedHandle: any;\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n private MANAGER: ExistingBuildingManager;\n private enableCutout: boolean;\n private deferHandle;\n private deferTimeout = EXISTING_BUILDING_CONFIG.CUTOUT_DEFFER_TIME_OUT;\n\n private geoBeamJoint: GeometryInfo;\n private geoHouseBeamJoint: GeometryInfo;\n\n private geo_beamStepRakecutLeft: GeometryInfo;\n private geo_beamStepRakecutRight: GeometryInfo;\n\n private beamLeftCutSizeInfo: any;\n private beamRightCutSizeInfo: any;\n\n private geo_RafterBeam: GeometryInfo;\n private geo_rafterBeamEndCap: GeometryInfo;\n\n constructor(app: AppComponent, existingManager: ExistingBuildingManager) {\n this.APP = app;\n this.MANAGER = existingManager;\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.scene = existingManager.patiosGroup;\n this.material = MaterialManager.Instance().DEFAULT.clone();\n this.registerEvent();\n }\n public destroy(): void {\n this.unregisterEvent();\n }\n public uiChanged(preVal: number, curVal: number): void {\n this.load();\n }\n uiCHangedDefer(previousValue: number, currentValue: number) {\n if (this.APP.sltCutOut.currentValue == 1) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => {\n this.load();\n }, this.deferTimeout);\n } else {\n this.load();\n }\n }\n private objectSizeChanged(pre: number, cur: number) {\n this.optimize().then(() => {\n this.load();\n this.MANAGER.loadRafterBeamAndInternalBeam(\n this.MANAGER.rafterBeamAndInternalBeamInfo\n );\n });\n }\n private registerEvent(): void {\n this.eventHandleId = this.uiCHangedDefer.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldBuildingHeight,\n this.APP.sltRoofPitch,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldExistingWidth1,\n this.APP.sltExistingType,\n this.APP.sldFrontOverhang,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n this.APP.sltCutOut,\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sldExistingWidth1,\n ];\n this.controlsToRegisterEvent2 = [\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltColumnType,\n ];\n this.controlsToRegisterEvent2.forEach((c) =>\n c.addAction(this.objectSizeChangedHandle)\n );\n }\n private unregisterEvent(): void {\n this.controlsToRegisterEvent2.forEach((c) =>\n c.removeAction(this.objectSizeChangedHandle)\n );\n this.controlsToRegisterEvent2 = undefined;\n }\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n this.beamInfo = this.geometryManager.getBeam();\n this.beamInfo.geometry\n .rotateY(Math.PI / 2)\n .translate(this.beamInfo.length / 2, -this.beamInfo.height / 2, 0);\n\n this.geoBeamJoint = this.geometryManager.getBeamJoint();\n this.geoHouseBeamJoint = this.geometryManager.getHouseBeamJoint();\n\n this.geo_RafterBeam = this.geometryManager.getBeam();\n this.geo_RafterBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_RafterBeam.length / 2,\n -this.geo_RafterBeam.height / 2,\n this.geo_RafterBeam.width / 2\n );\n\n this.geo_rafterBeamEndCap = this.geometryManager.getBeamEndCap();\n this.geo_rafterBeamEndCap.geometry.translate(\n 0,\n -this.geo_rafterBeamEndCap.height / 2,\n this.geo_rafterBeamEndCap.length / 2\n );\n\n this.beamRakecutInfoLeft = this.geometryManager.getBeam();\n this.beamRakecutInfoLeft.geometry.translate(\n this.beamInfo.width / 2,\n -this.beamInfo.height / 2,\n -this.beamInfo.length / 2\n );\n\n this.beamRakecutInfoRight = this.geometryManager.getBeam();\n this.beamRakecutInfoRight.geometry.translate(\n -this.beamInfo.width / 2,\n -this.beamInfo.height / 2,\n -this.beamInfo.length / 2\n );\n\n this.geo_beamStepRakecutLeft = this.geometryManager.getBeam();\n this.geo_beamStepRakecutLeft.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_beamStepRakecutLeft.length / 2,\n -this.geo_beamStepRakecutLeft.height / 2,\n -this.geo_beamStepRakecutLeft.width / 2\n );\n\n this.geo_beamStepRakecutRight = this.geometryManager.getBeam();\n this.geo_beamStepRakecutRight.geometry\n .rotateY(Math.PI / 2)\n .translate(\n -this.geo_beamStepRakecutRight.length / 2,\n -this.geo_beamStepRakecutRight.height / 2,\n -this.geo_beamStepRakecutRight.width / 2\n );\n\n this.geo_beamEndCap = this.geometryManager.getBeamEndCap();\n this.geo_beamEndCap.geometry.translate(\n 0,\n -this.geo_beamEndCap.height / 2,\n 0\n );\n\n this.postInfo = this.geometryManager.getPost();\n this.postInfo.geometry\n .rotateX(Math.PI / 2)\n .translate(0, this.postInfo.height / 2, 0);\n //.scale(1, env.height.default / this.postInfo.height, 1);\n\n this.geo_groundBase = new GeometryInfo();\n this.geo_groundBase.width = 1000;\n this.geo_groundBase.height = 1;\n this.geo_groundBase.length = 1000;\n this.geo_groundBase.geometry = new BoxBufferGeometry(\n this.geo_groundBase.width,\n this.geo_groundBase.height,\n this.geo_groundBase.length\n );\n this.geo_groundBase.geometry.translate(\n this.geo_groundBase.width / 2,\n 0,\n this.geo_groundBase.length / 2\n );\n\n this.geo_downPipe = this.geometryManager.getDownPipe();\n this.geo_downPipeL = this.geometryManager.getDownPipeL();\n\n this.scene.remove(\n ...this.scene.children.filter(\n (c) => c.userData.type == GEOMETRY_TYPE.DOWNPIPE\n )\n );\n this.downpipeGroup = new Group();\n this.downpipeGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeGroup);\n\n this.downpipeStepRakeCutGroupLeft = new Group();\n this.downpipeStepRakeCutGroupLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeStepRakeCutGroupLeft);\n\n this.downpipeStepRakeCutGroupRight = new Group();\n this.downpipeStepRakeCutGroupRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeStepRakeCutGroupRight);\n\n resolve();\n });\n }\n\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.SUPERIOR_POST\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === \"COLUMN_OUTLINE\"\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.GROUND_BASE\n )\n );\n this.downpipeGroup.children = [];\n this.downpipeStepRakeCutGroupLeft.children = [];\n this.downpipeStepRakeCutGroupRight.children = [];\n\n this.beamLeftCutSizeInfo = this.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.LEFT\n );\n this.beamRightCutSizeInfo = this.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.RIGHT\n );\n\n this.totalBaySize = UI.totalBayLength;\n this.roofWidth = UI.overhangLeft + UI.overhangRight + this.totalBaySize;\n this.enableCutout = this.MANAGER.cutoutCondition;\n this.addBeam({ isMultiSpan: false });\n this.addBeam({ isMultiSpan: true });\n this.addBeamAngleRakecut(BUILDING_SIDE.LEFT);\n this.addBeamAngleRakecut(BUILDING_SIDE.RIGHT);\n this.addBeamStepRakecut();\n this.addGround();\n //let offsetX = -this.roofWidth / 2 + UI.overhangLeft + (this.postInfo.width / 2);\n let offsetX = -(this.totalBaySize / 2) + this.postInfo.width / 2;\n let offsetXOrigin = -(this.totalBaySize / 2) + this.postInfo.width / 2;\n // if (this.APP.sltCutOut.currentValue == 1 && (this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3)) {\n // offsetX -= this.APP.sldExistingLength2.currentValue;\n // }\n // else if (this.APP.sltCutOut.currentValue == 1 && this.APP.sltExistingType.currentValue == 2) {\n // //offsetX -= this.APP.sldExistingLength2.currentValue;\n // }\n\n let idx = 0;\n this.addPost(offsetX, { isMultiSpan: false, left: true });\n this.addPost(offsetX, { isMultiSpan: true, left: true });\n\n this.APP.dialogEditBay.listBay.forEach((m) => {\n offsetX += m.value;\n // if (this.APP.sltCutOut.currentValue == 1 && (this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 2)) {\n // offsetX += this.APP.sldExistingLength2.currentValue;\n // }\n // else if(this.APP.sltCutOut.currentValue == 1 && this.APP.sltExistingType.currentValue == 3){\n // offsetX += this.APP.sldExistingLength2.currentValue * 2;\n // }\n\n if (idx === this.APP.dialogEditBay.listBay.length - 1) {\n offsetX -= this.postInfo.width;\n this.addPost(offsetX, { isMultiSpan: false, right: true });\n this.addPost(offsetX, { isMultiSpan: true, right: true });\n this.addPostAngleRakecut(offsetXOrigin, { left: true });\n this.addPostAngleRakecut(offsetX, { right: true });\n } else {\n this.addPost(offsetX - this.postInfo.width / 2, {\n isMultiSpan: false,\n });\n this.addPost(offsetX - this.postInfo.width / 2, {\n isMultiSpan: true,\n });\n }\n idx++;\n });\n\n this.addPostStepRakecut();\n this.addDownPipe();\n this.addDownPipeStepRakecut();\n this.showBeamOutline();\n this.updateUI();\n resolve();\n });\n }\n public showBeamOutline() {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.BEAM_OUTLINE\n )\n );\n\n if (!UI.beamLayoutShow) return;\n\n const objs = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n const meshes = [];\n objs.forEach((el) => {\n if (el.type == \"Group\") {\n meshes.push(\n ...el.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n }\n });\n\n for (let o of meshes) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n o as Mesh,\n 10\n );\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n\n var line = new LineSegments(\n outlineGeo,\n MaterialManager.Instance().BEAM_OUTLINE\n );\n line.userData = { type: GEOMETRY_TYPE.BEAM_OUTLINE };\n this.APP.scene.add(line);\n }\n }\n public addEndRafterBeam(info: any) {\n const { numOfInternalRafter, numOfSpanBeam, numOfMultiSpanBeam } = info;\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM ||\n x.userData.type == GEOMETRY_TYPE.SUPERIOR_INTERNAL_BEAM\n )\n );\n\n let endMainLeftX = -UI.totalBayLength / 2;\n let endMainRightX = UI.totalBayLength / 2;\n if (UI.cutOutType == CUTOUT_ENABLE.YES && this.MANAGER.cutoutCondition) {\n // Enable cut out\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n endMainLeftX = -UI.totalBayLength / 2 + UI.existingLength2;\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n endMainRightX = UI.totalBayLength / 2 - UI.existingLength2;\n } else if (UI.existingType == BUILDING_SIDE.BOTH) {\n endMainLeftX = -UI.totalBayLength / 2 + UI.existingLength2;\n endMainRightX = UI.totalBayLength / 2 - UI.existingLength2;\n }\n }\n\n // Add end rafter for two end side\n // Left side\n this.addRafterSuperiorBeam(endMainLeftX, {\n span: true,\n first: true,\n last: false,\n });\n if (UI.multiSpan) {\n this.addRafterSuperiorBeam(endMainLeftX, {\n multiSpan: true,\n first: true,\n last: false,\n });\n }\n\n // Right side\n this.addRafterSuperiorBeam(endMainRightX, {\n span: true,\n first: false,\n last: true,\n });\n if (UI.multiSpan) {\n this.addRafterSuperiorBeam(endMainRightX, {\n multiSpan: true,\n first: false,\n last: true,\n });\n }\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n this.addRafterSuperiorBeam(-UI.totalBayLength / 2 + UI.rakeCutLeftHor, {\n rakeCutLeft: true,\n first: true,\n last: false,\n });\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n this.addRafterSuperiorBeam(UI.totalBayLength / 2 - UI.rakeCutRightHor, {\n rakeCutRight: true,\n first: false,\n last: true,\n });\n }\n\n this.addInternalRafterBeam(\n numOfInternalRafter,\n numOfSpanBeam,\n numOfMultiSpanBeam\n );\n\n if (UI.cutOutType == CUTOUT_ENABLE.YES && this.MANAGER.cutoutCondition) {\n // Add rafter beam for cut out\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n endMainLeftX = -UI.totalBayLength / 2;\n this.addRafterSuperiorBeam(endMainLeftX, {\n cutOutForSpan: true,\n first: true,\n last: false,\n });\n if (UI.multiSpan) {\n this.addRafterSuperiorBeam(endMainLeftX, {\n cutOutForMultiSpan: true,\n first: true,\n last: false,\n });\n }\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n endMainRightX = UI.totalBayLength / 2;\n this.addRafterSuperiorBeam(endMainRightX, {\n cutOutForSpan: true,\n first: false,\n last: true,\n });\n if (UI.multiSpan) {\n this.addRafterSuperiorBeam(endMainRightX, {\n cutOutForMultiSpan: true,\n first: false,\n last: true,\n });\n }\n } else if (UI.existingType == BUILDING_SIDE.BOTH) {\n endMainLeftX = -UI.totalBayLength / 2;\n this.addRafterSuperiorBeam(endMainLeftX, {\n cutOutForSpan: true,\n first: true,\n last: false,\n });\n if (UI.multiSpan) {\n this.addRafterSuperiorBeam(endMainLeftX, {\n cutOutForMultiSpan: true,\n first: true,\n last: false,\n });\n }\n\n endMainRightX = UI.totalBayLength / 2;\n this.addRafterSuperiorBeam(endMainRightX, {\n cutOutForSpan: true,\n first: false,\n last: true,\n });\n if (UI.multiSpan) {\n this.addRafterSuperiorBeam(endMainRightX, {\n cutOutForMultiSpan: true,\n first: false,\n last: true,\n });\n }\n }\n }\n }\n private addInternalRafterBeam(\n numOfRafter: number,\n numOfSpanBeam: number,\n numOfMultiSpanBeam: number\n ) {\n let offsetX = -UI.totalBayLength / 2;\n let mainRoofLength = UI.totalBayLength;\n let endCutoutLeft = -UI.totalBayLength / 2;\n if (UI.cutOutType == CUTOUT_ENABLE.YES && this.MANAGER.cutoutCondition) {\n // Enable cut out\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n mainRoofLength = UI.totalBayLength - UI.existingLength2;\n offsetX = -UI.totalBayLength / 2 + UI.existingLength2;\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n mainRoofLength = UI.totalBayLength - UI.existingLength2;\n } else if (UI.existingType == BUILDING_SIDE.BOTH) {\n mainRoofLength = UI.totalBayLength - 2 * UI.existingLength2;\n offsetX = -UI.totalBayLength / 2 + UI.existingLength2;\n }\n }\n\n const mainRoofLeft = offsetX;\n const mainRoofRight = offsetX + mainRoofLength;\n let listRafterPos = [];\n const rafterSpacing = UI.totalBayLength / (numOfRafter + 1);\n const maxBeamOverhang = this.utils.getMaximumBeamOverhang();\n for (let i = 0; i < numOfRafter; i++) {\n const offsetXRafter = endCutoutLeft + (i + 1) * rafterSpacing;\n if (\n UI.existingType == BUILDING_SIDE.LEFT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n if (\n offsetXRafter > mainRoofLeft - maxBeamOverhang &&\n offsetXRafter < mainRoofLeft + maxBeamOverhang\n ) {\n continue;\n }\n }\n if (\n UI.existingType == BUILDING_SIDE.RIGHT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n if (\n offsetXRafter > mainRoofRight - maxBeamOverhang &&\n offsetXRafter < mainRoofRight + maxBeamOverhang\n ) {\n continue;\n }\n }\n listRafterPos.push({\n offsetX: offsetXRafter,\n isMainRoof:\n offsetXRafter >= mainRoofLeft && offsetXRafter <= mainRoofRight,\n });\n }\n\n listRafterPos = this.utils.reSeperateRafterPosition(\n listRafterPos,\n offsetX,\n offsetX + mainRoofLength,\n endCutoutLeft,\n endCutoutLeft + UI.totalBayLength\n );\n\n listRafterPos.forEach((el) => {\n if (el.isMainRoof) {\n this.addRafterSuperiorBeam(el.offsetX, {\n span: true,\n first: false,\n last: false,\n });\n if (UI.multiSpan) {\n this.addRafterSuperiorBeam(el.offsetX, {\n multiSpan: true,\n first: false,\n last: false,\n });\n }\n } else {\n this.addRafterSuperiorBeam(el.offsetX, {\n cutOutForSpan: true,\n first: false,\n last: false,\n });\n if (UI.multiSpan) {\n this.addRafterSuperiorBeam(el.offsetX, {\n cutOutForMultiSpan: true,\n first: false,\n last: false,\n });\n }\n }\n });\n\n // // Add internal beam in here\n this.addInternalBeam(listRafterPos, numOfSpanBeam, numOfMultiSpanBeam);\n }\n private addInternalBeam(\n listRafterPos,\n numOfSpanBeam: number = 0,\n numOfMultiSpanBeam: number = 0\n ) {\n const startZ = -UI.existingWidth1 / 2;\n if (UI.span > 0) {\n const internalBeamSpacing = UI.span / (numOfSpanBeam + 1);\n for (let i = 0; i < numOfSpanBeam; i++) {\n this.addInternalSuperiorBeam(\n listRafterPos,\n startZ + internalBeamSpacing * (i + 1)\n );\n }\n }\n if (UI.multiSpan > 0) {\n const internalBeamSpacing = UI.multiSpan / (numOfMultiSpanBeam + 1);\n for (let i = 0; i < numOfMultiSpanBeam; i++) {\n this.addInternalSuperiorBeam(\n listRafterPos,\n startZ + UI.span + internalBeamSpacing * (i + 1)\n );\n }\n }\n }\n public addInternalSuperiorBeam(listRafterPos, offsetZ: number) {\n let endMainLeftX = -UI.totalBayLength / 2;\n let endMainRightX = UI.totalBayLength / 2;\n let endCutoutLeft = -UI.totalBayLength / 2;\n let endCutoutRight = UI.totalBayLength / 2;\n if (UI.cutOutType == CUTOUT_ENABLE.YES && this.MANAGER.cutoutCondition) {\n // Enable cut out\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n endMainLeftX = -UI.totalBayLength / 2 + UI.existingLength2;\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n endMainRightX = UI.totalBayLength / 2 - UI.existingLength2;\n } else if (UI.existingType == BUILDING_SIDE.BOTH) {\n endMainLeftX = -UI.totalBayLength / 2 + UI.existingLength2;\n endMainRightX = UI.totalBayLength / 2 - UI.existingLength2;\n }\n }\n\n // Main roof\n const beamWidth = this.beamInfo.width;\n const mainRafter = listRafterPos.filter((el) => el.isMainRoof);\n\n for (let i = 0; i <= mainRafter.length; i++) {\n let startX = endMainLeftX;\n if (i > 0) {\n startX = mainRafter[i - 1].offsetX;\n }\n let endX = endMainRightX;\n if (i < mainRafter.length) {\n endX = mainRafter[i].offsetX;\n }\n\n if (i == 0) {\n startX += beamWidth;\n } else {\n startX += beamWidth / 2;\n }\n\n if (i == mainRafter.length) {\n endX -= beamWidth;\n } else {\n endX -= beamWidth / 2;\n }\n this.addInternalBeamFromStartToEnd(startX, endX, offsetZ);\n }\n\n if (UI.cutOutType == CUTOUT_ENABLE.YES && this.MANAGER.cutoutCondition) {\n if (\n UI.existingType == BUILDING_SIDE.LEFT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n const cutoutRoofLength =\n this.getCutoutRoofLengthToGenerateCutoutRafterBeam();\n const cutoutLeftRafter = listRafterPos.filter(\n (el) =>\n !el.isMainRoof && el.offsetX < endCutoutLeft + cutoutRoofLength\n );\n\n if (offsetZ > UI.existingWidth1 / 2 + beamWidth * 2) {\n for (let i = 0; i <= cutoutLeftRafter.length; i++) {\n let startX = endCutoutLeft;\n if (i > 0) {\n startX = cutoutLeftRafter[i - 1].offsetX;\n }\n let endX = endCutoutLeft + cutoutRoofLength;\n if (i < cutoutLeftRafter.length) {\n endX = cutoutLeftRafter[i].offsetX;\n }\n\n if (i == 0) {\n startX += beamWidth;\n } else {\n startX += beamWidth / 2;\n }\n\n if (i == cutoutLeftRafter.length) {\n } else {\n endX -= beamWidth / 2;\n }\n this.addInternalBeamFromStartToEnd(startX, endX, offsetZ);\n }\n }\n }\n\n if (\n UI.existingType == BUILDING_SIDE.RIGHT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n const cutoutRoofLength =\n this.getCutoutRoofLengthToGenerateCutoutRafterBeam();\n const cutoutRightRafter = listRafterPos.filter(\n (el) =>\n !el.isMainRoof && el.offsetX > endCutoutRight - cutoutRoofLength\n );\n\n if (offsetZ > UI.existingWidth1 / 2 + beamWidth * 2) {\n for (let i = 0; i <= cutoutRightRafter.length; i++) {\n let startX = endCutoutRight - cutoutRoofLength;\n if (i > 0) {\n startX = cutoutRightRafter[i - 1].offsetX;\n }\n let endX = endCutoutRight;\n if (i < cutoutRightRafter.length) {\n endX = cutoutRightRafter[i].offsetX;\n }\n\n if (i == 0) {\n startX += 0;\n } else {\n startX += beamWidth / 2;\n }\n\n if (i == cutoutRightRafter.length) {\n endX -= beamWidth;\n } else {\n endX -= beamWidth / 2;\n }\n this.addInternalBeamFromStartToEnd(startX, endX, offsetZ);\n }\n }\n }\n }\n }\n public addInternalBeamFromStartToEnd(startX, endX, offsetZ) {\n const { fromX, toX, visible } = this.cutInternalBeamWithRakeCut(\n startX,\n endX,\n offsetZ\n );\n\n if (!visible) {\n return;\n }\n\n // Only add internal beam when beam length is greater than 200\n if (Math.abs(toX - fromX) < MIN_INTERNAL_BEAM_LENGTH) {\n return;\n }\n\n const beamWidth = this.beamInfo.width;\n const beamHeight = this.beamInfo.height;\n let scaleX = Math.abs(toX - fromX) / this.beamInfo.length;\n\n let views: Print2DView[] = [\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n // hard code 2.5 beam width. I can't find the correct offset\n const offsetY =\n UI.height -\n (offsetZ + UI.existingWidth1 / 2) * this.utils.tan(UI.patiosPitch);\n\n let mesh = new Mesh(\n this.beamInfo.geometry,\n MaterialManager.Instance().BEAM\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_INTERNAL_BEAM,\n views: views,\n };\n mesh.position.set(fromX, 0, 0);\n mesh.scale.setX(scaleX);\n\n let capL = new Mesh(\n this.geo_beamEndCap.geometry,\n UI.beamLayoutShow\n ? MaterialManager.Instance().BRACKET_WARNING.clone()\n : MaterialManager.Instance().BEAM.clone()\n );\n capL.position.set(\n fromX + this.geo_beamEndCap.length / 2 - 2,\n -this.geo_beamEndCap.height + beamHeight,\n 0\n );\n capL.rotateY(Math.PI / 2);\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n let capR = new Mesh(\n this.geo_beamEndCap.geometry,\n UI.beamLayoutShow\n ? MaterialManager.Instance().BRACKET_WARNING.clone()\n : MaterialManager.Instance().BEAM.clone()\n );\n capR.position.set(\n toX - this.geo_beamEndCap.length / 2 + 2,\n -this.geo_beamEndCap.height + beamHeight,\n 0\n );\n capR.rotateY(-Math.PI / 2);\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_INTERNAL_BEAM,\n views: views,\n };\n beamGroup.position.set(0, offsetY, offsetZ - beamWidth);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n\n this.scene.add(beamGroup);\n }\n private cutInternalBeamWithRakeCut(startX, endX, offsetZ) {\n // startZ is start point of rafter beam\n // startZ > endZ\n const fromX = Math.min(startX, endX);\n const toX = Math.max(startX, endX);\n const beamWidth = this.beamInfo.width;\n const offsetZFrontBeam = UI.span + UI.multiSpan - UI.existingWidth1 / 2;\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n const rakeCutVerLength =\n this.beamLeftCutSizeInfo.v + this.beamLeftCutSizeInfo.k_;\n const rakeCutHorLength = this.beamLeftCutSizeInfo.l;\n\n const beamLine = new Line3(\n new Vector3(toX, 0, offsetZ - beamWidth / 2),\n new Vector3(fromX, 0, offsetZ - beamWidth / 2)\n );\n const beamRakeCutLength = Math.sqrt(\n Math.pow(rakeCutHorLength, 2) + Math.pow(rakeCutVerLength, 2)\n );\n const cosAngleFrontHor = rakeCutHorLength / beamRakeCutLength;\n\n const startRakeCut = new Vector3(\n -UI.totalBayLength / 2,\n 0,\n offsetZFrontBeam - rakeCutVerLength - beamWidth / cosAngleFrontHor\n );\n const endRakeCut = new Vector3(\n -UI.totalBayLength / 2 + rakeCutHorLength,\n 0,\n offsetZFrontBeam - beamWidth / cosAngleFrontHor\n );\n const rakeCutLine = new Line3(startRakeCut, endRakeCut);\n const intersection = this.utils.getIntersectionOnAPoint(\n beamLine,\n rakeCutLine\n );\n\n if (intersection) {\n if (\n this.utils.isPositive(beamLine.start, beamLine.end, intersection) &&\n this.utils.isPositive(\n rakeCutLine.start,\n rakeCutLine.end,\n intersection\n ) &&\n intersection.x >= fromX &&\n intersection.x <= toX\n ) {\n return {\n fromX: intersection.x,\n toX,\n visible: true,\n };\n } else {\n if (intersection.x > fromX && intersection.x > toX) {\n return {\n fromX,\n toX,\n visible: false,\n };\n }\n }\n }\n } else if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n const beamLine = new Line3(\n new Vector3(fromX, 0, offsetZ - beamWidth / 2),\n new Vector3(toX, 0, offsetZ - beamWidth / 2)\n );\n const startRakeCut = new Vector3(\n -UI.totalBayLength / 2 + UI.rakeCutLeftHor + beamWidth,\n 0,\n offsetZFrontBeam\n );\n const endRakeCut = new Vector3(\n -UI.totalBayLength / 2 + UI.rakeCutLeftHor + beamWidth,\n 0,\n offsetZFrontBeam - UI.rakeCutLeftVer - beamWidth\n );\n\n const rakeCutLine = new Line3(endRakeCut, startRakeCut);\n const intersection = this.utils.getIntersectionOnAPoint(\n beamLine,\n rakeCutLine,\n true\n );\n\n if (intersection) {\n if (\n this.utils.isPositive(beamLine.start, beamLine.end, intersection) &&\n this.utils.isPositive(\n rakeCutLine.start,\n rakeCutLine.end,\n intersection\n ) &&\n intersection.x >= fromX &&\n intersection.x <= toX\n ) {\n return {\n fromX: intersection.x,\n toX,\n visible: true,\n };\n } else {\n if (intersection.x > fromX && intersection.x > toX) {\n return {\n fromX,\n toX,\n visible: false,\n };\n }\n }\n }\n }\n\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n const rakeCutVerLength =\n this.beamRightCutSizeInfo.v + this.beamRightCutSizeInfo.k_;\n const rakeCutHorLength = this.beamRightCutSizeInfo.l;\n\n const beamLine = new Line3(\n new Vector3(fromX, 0, offsetZ - beamWidth / 2),\n new Vector3(toX, 0, offsetZ - beamWidth / 2)\n );\n const beamRakeCutLength = Math.sqrt(\n Math.pow(rakeCutHorLength, 2) + Math.pow(rakeCutVerLength, 2)\n );\n const cosAngleFrontHor = rakeCutHorLength / beamRakeCutLength;\n\n const startRakeCut = new Vector3(\n UI.totalBayLength / 2,\n 0,\n offsetZFrontBeam - rakeCutVerLength - beamWidth / cosAngleFrontHor\n );\n const endRakeCut = new Vector3(\n UI.totalBayLength / 2 - rakeCutHorLength,\n 0,\n offsetZFrontBeam - beamWidth / cosAngleFrontHor\n );\n const rakeCutLine = new Line3(startRakeCut, endRakeCut);\n const intersection = this.utils.getIntersectionOnAPoint(\n beamLine,\n rakeCutLine\n );\n\n if (intersection) {\n if (\n this.utils.isPositive(beamLine.start, beamLine.end, intersection) &&\n this.utils.isPositive(\n rakeCutLine.start,\n rakeCutLine.end,\n intersection\n ) &&\n intersection.x >= fromX &&\n intersection.x <= toX\n ) {\n return {\n fromX,\n toX: intersection.x,\n visible: true,\n };\n } else {\n if (intersection.x < fromX && intersection.x < toX) {\n return {\n fromX,\n toX,\n visible: false,\n };\n }\n }\n }\n } else if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n const beamLine = new Line3(\n new Vector3(toX, 0, offsetZ - beamWidth / 2),\n new Vector3(fromX, 0, offsetZ - beamWidth / 2)\n );\n const startRakeCut = new Vector3(\n UI.totalBayLength / 2 - UI.rakeCutRightHor - beamWidth,\n 0,\n offsetZFrontBeam\n );\n const endRakeCut = new Vector3(\n UI.totalBayLength / 2 - UI.rakeCutRightHor - beamWidth,\n 0,\n offsetZFrontBeam - UI.rakeCutRightVer - beamWidth\n );\n\n const rakeCutLine = new Line3(endRakeCut, startRakeCut);\n const intersection = this.utils.getIntersectionOnAPoint(\n beamLine,\n rakeCutLine,\n true\n );\n\n if (intersection) {\n if (\n this.utils.isPositive(beamLine.start, beamLine.end, intersection) &&\n this.utils.isPositive(\n rakeCutLine.start,\n rakeCutLine.end,\n intersection\n ) &&\n intersection.x >= fromX &&\n intersection.x <= toX\n ) {\n return {\n fromX,\n toX: intersection.x,\n visible: true,\n };\n } else {\n if (intersection.x < fromX && intersection.x < toX) {\n return {\n fromX,\n toX,\n visible: false,\n };\n }\n }\n }\n }\n\n return {\n fromX,\n toX,\n visible: true,\n };\n }\n public getCutoutRoofLengthToGenerateCutoutRafterBeam() {\n return UI.existingLength2;\n }\n /**\n *\n * @param offsetX : Position x of rafter beam\n */\n public addRafterSuperiorBeam(offsetX, userDataPos: any) {\n const beamWidth = this.beamInfo.width;\n const beamHeight = this.geo_RafterBeam.height;\n const beamGeoLength = this.geo_RafterBeam.length;\n let mesh;\n let cutSpanFitBeamLength = 0;\n if (+UI.upstandBraketType !== 0) {\n cutSpanFitBeamLength = UI.multiSpan ? beamWidth * 1.5 : beamWidth * 2;\n } else {\n cutSpanFitBeamLength = UI.multiSpan ? beamWidth * 0.5 : beamWidth * 1;\n }\n let beamLength =\n (UI.span - cutSpanFitBeamLength) / this.utils.cos(UI.patiosPitch);\n if (userDataPos.multiSpan) {\n beamLength =\n (UI.multiSpan - beamWidth * 1.5) / this.utils.cos(UI.patiosPitch);\n } else if (userDataPos.cutOutForSpan) {\n if (\n UI.multiSpan == 0 &&\n UI.span - UI.existingWidth1 - 2 * beamWidth <= 0\n ) {\n return;\n } else if (\n UI.multiSpan > 0 &&\n UI.span - UI.existingWidth1 - 1.5 * beamWidth <= 0\n ) {\n return;\n }\n\n beamLength =\n (UI.span - cutSpanFitBeamLength - UI.existingWidth1) /\n this.utils.cos(UI.patiosPitch);\n } else if (userDataPos.cutOutForMultiSpan) {\n if (UI.span + UI.multiSpan - UI.existingWidth1 - 2 * beamWidth <= 0) {\n return;\n }\n\n if (UI.existingWidth1 > UI.span) {\n beamLength =\n (UI.span + UI.multiSpan - beamWidth * 2 - UI.existingWidth1) /\n this.utils.cos(UI.patiosPitch);\n } else {\n beamLength =\n (UI.multiSpan - beamWidth * 1.5) / this.utils.cos(UI.patiosPitch);\n }\n } else if (userDataPos.rakeCutLeft) {\n beamLength =\n (UI.rakeCutLeftVer - beamWidth) / this.utils.cos(UI.patiosPitch);\n } else if (userDataPos.rakeCutRight) {\n beamLength =\n (UI.rakeCutRightVer - beamWidth) / this.utils.cos(UI.patiosPitch);\n }\n\n let offsetZ = 0;\n let offsetY = 0;\n\n // Scene position z move back\n // The plane be translated\n let shouldCutByRakeCut = true;\n if (userDataPos.span || userDataPos.cutOutForSpan) {\n offsetY = UI.height - this.getOffsetHeightForRafterBeamByRoofPitch(true);\n offsetZ =\n UI.span -\n (UI.multiSpan > 0 ? beamWidth / 2 : beamWidth) -\n UI.existingWidth1 / 2;\n } else if (\n userDataPos.multiSpan ||\n userDataPos.cutOutForMultiSpan ||\n userDataPos.rakeCutLeft ||\n userDataPos.rakeCutRight\n ) {\n if (userDataPos.rakeCutLeft || userDataPos.rakeCutRight) {\n shouldCutByRakeCut = false;\n }\n offsetY = UI.height - this.getOffsetHeightForRafterBeamByRoofPitch(false);\n offsetZ = UI.span + UI.multiSpan - beamWidth - UI.existingWidth1 / 2;\n }\n\n let offsetXRafter = offsetX;\n if (userDataPos.last) {\n offsetXRafter = offsetX - this.geo_RafterBeam.width;\n } else if (!userDataPos.first && !userDataPos.last) {\n offsetXRafter = offsetX - this.geo_RafterBeam.width / 2;\n }\n\n if (shouldCutByRakeCut) {\n const { newStartZ, newLength, fitYForNewStartZPoint } =\n this.cutRafterBeamWithRakeCut(offsetZ, offsetXRafter, beamLength);\n if (!_.isNil(newStartZ)) {\n offsetZ = newStartZ;\n }\n if (!_.isNil(newLength)) {\n beamLength = newLength;\n }\n if (!_.isNil(fitYForNewStartZPoint)) {\n offsetY += fitYForNewStartZPoint;\n }\n }\n\n const fitBeamWidthToCut = beamHeight * this.utils.tan(UI.patiosPitch);\n let scaleX = (beamLength + fitBeamWidthToCut) / beamGeoLength;\n\n let views: Print2DView[] = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n let material = this.getRafterBeamMaterial(userDataPos, offsetZ, beamLength);\n mesh = new Mesh(this.geo_RafterBeam.geometry, material);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM,\n position: userDataPos,\n views: views,\n };\n mesh.position.set(-fitBeamWidthToCut, 0, 0);\n mesh.scale.setX(scaleX);\n\n let { capL, capR } = this.getBeamEndCapForRafterBeam(0, beamLength);\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM,\n position: userDataPos,\n views: views,\n };\n\n beamGroup.position.set(offsetXRafter, offsetY, offsetZ);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n\n beamGroup.rotateY(Math.PI / 2);\n\n beamGroup.rotateZ(this.utils.degreesToRadians(UI.patiosPitch));\n\n this.scene.add(beamGroup);\n }\n private getRafterBeamMaterial(userDataPos, offsetZ, beamLength) {\n let material = MaterialManager.Instance().BEAM.clone();\n\n let cutFrontZ = offsetZ;\n let cutBackZ = offsetZ - beamLength * this.utils.cos(UI.patiosPitch);\n\n if (cutFrontZ != 0 || cutBackZ != 0) {\n let nBottom = new Vector3(0, 0, -1).normalize();\n let pBottom = new Vector3(0, 0, cutFrontZ);\n let planeBottom = new Plane().setFromNormalAndCoplanarPoint(\n nBottom,\n pBottom\n );\n\n let nVer = new Vector3(0, 0, 1).normalize();\n let pVer = new Vector3(0, 0, cutBackZ);\n let planeVer = new Plane().setFromNormalAndCoplanarPoint(nVer, pVer);\n\n material.clippingPlanes = [planeBottom, planeVer];\n }\n\n return material;\n }\n private getBeamEndCapForRafterBeam(offsetXL, offsetXR) {\n let capL;\n let capR;\n let matEndCap = this.getRafterBeamEndCapMaterial();\n\n let checkExec = /\\w{1}\\d{1,3}x(\\d{1,3})/.exec(this.geo_RafterBeam.name);\n let beamSize = checkExec && checkExec.length == 2 ? checkExec[1] : \"\";\n let lowerBraketName = getBeamEndCapCode(\n this.geo_rafterBeamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n );\n let higherBraketName = getBeamEndCapCode(\n this.geo_rafterBeamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n );\n\n capL = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capL.position.set(offsetXL - 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capL.scale.setY(\n (this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length * this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capL.rotateY(Math.PI / 2);\n capL.rotateX(this.utils.degreesToRadians(UI.patiosPitch));\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: lowerBraketName,\n };\n\n capR = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capR.position.set(\n offsetXR + 2,\n -this.geo_rafterBeamEndCap.length * this.utils.tan(UI.patiosPitch),\n this.geo_rafterBeamEndCap.width / 2\n );\n capR.scale.setY(\n (this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length * this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capR.rotateY(-Math.PI / 2);\n capR.rotateX(-this.utils.degreesToRadians(UI.patiosPitch));\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: higherBraketName,\n };\n\n return {\n capL,\n capR,\n };\n }\n private getRafterBeamEndCapMaterial() {\n const matEndCap = UI.beamLayoutShow\n ? MaterialManager.Instance().BRACKET_WARNING.clone()\n : MaterialManager.Instance().BEAM.clone();\n let heightPlane = UI.height;\n let planeTop = new Plane(new Vector3(0, -1, 0));\n let matrixTranslateTop = new Matrix4().makeTranslation(0, heightPlane, 0);\n let matrixRotateTop = new Matrix4().makeRotationX(\n this.utils.degreesToRadians(UI.patiosPitch)\n ); //tao voi z pitch do\n let matrixTotalTop = matrixTranslateTop.multiply(matrixRotateTop);\n planeTop.applyMatrix4(matrixTotalTop);\n\n let heightRealBottom = UI.height - this.beamInfo.height;\n\n let planeBottom = new Plane(new Vector3(0, 1, 0));\n let matrixTranslateBottom = new Matrix4().makeTranslation(\n 0,\n heightRealBottom,\n 0\n );\n let matrixRotateBottom = new Matrix4().makeRotationX(\n this.utils.degreesToRadians(UI.patiosPitch)\n ); //tao voi z pitch do\n let matrixTotalBottom = matrixTranslateBottom.multiply(matrixRotateBottom);\n planeBottom.applyMatrix4(matrixTotalBottom);\n\n planeTop.translate(\n new Vector3(0, 0, -UI.existingWidth1 / 2 - this.scene.position.z)\n );\n planeBottom.translate(\n new Vector3(0, 0, -UI.existingWidth1 / 2 - this.scene.position.z)\n );\n matEndCap.clippingPlanes = [planeTop, planeBottom];\n\n return matEndCap;\n }\n private cutRafterBeamWithRakeCut(offsetZ, offsetX, beamLength) {\n // startZ is start point of rafter beam\n // startZ > endZ\n const beamWidth = this.beamInfo.width;\n let startZ = offsetZ;\n let endZ = offsetZ - beamLength * this.utils.cos(UI.patiosPitch);\n const offsetZFrontBeam = UI.span + UI.multiSpan - UI.existingWidth1 / 2;\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n const rakeCutVerLength =\n this.beamLeftCutSizeInfo.v + this.beamLeftCutSizeInfo.k_;\n const rakeCutHorLength = this.beamLeftCutSizeInfo.l;\n\n const beamLine = new Line3(\n new Vector3(offsetX, 0, startZ),\n new Vector3(offsetX, 0, endZ)\n );\n const beamRakeCutLength = Math.sqrt(\n Math.pow(rakeCutHorLength, 2) + Math.pow(rakeCutVerLength, 2)\n );\n const cosAngleFrontHor = rakeCutHorLength / beamRakeCutLength;\n\n const startRakeCut = new Vector3(\n -UI.totalBayLength / 2,\n 0,\n offsetZFrontBeam - rakeCutVerLength - beamWidth / cosAngleFrontHor\n );\n const endRakeCut = new Vector3(\n -UI.totalBayLength / 2 + rakeCutHorLength,\n 0,\n offsetZFrontBeam - beamWidth / cosAngleFrontHor\n );\n\n const intersection = this.utils.getIntersectionOnAPoint(\n beamLine,\n new Line3(startRakeCut, endRakeCut)\n );\n\n if (intersection && intersection.z < startZ) {\n const newStartZ = intersection.z;\n const newLength =\n Math.abs(newStartZ - endZ) / this.utils.cos(UI.patiosPitch);\n const fitYForNewStartZPoint =\n Math.abs(startZ - newStartZ) * this.utils.tan(UI.patiosPitch);\n\n return { newStartZ, newLength, fitYForNewStartZPoint };\n }\n } else if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n const beamLine = new Line3(\n new Vector3(offsetX + 2, 0, startZ),\n new Vector3(offsetX + 2, 0, endZ)\n );\n const startRakeCut = new Vector3(\n -UI.totalBayLength / 2,\n 0,\n offsetZFrontBeam - UI.rakeCutLeftVer - beamWidth\n );\n const endRakeCut = new Vector3(\n -UI.totalBayLength / 2 + UI.rakeCutLeftHor + beamWidth,\n 0,\n offsetZFrontBeam - UI.rakeCutLeftVer - beamWidth\n );\n\n const intersection = this.utils.getIntersectionOnAPoint(\n beamLine,\n new Line3(endRakeCut, startRakeCut),\n true\n );\n\n if (intersection && intersection.z < startZ) {\n const newStartZ = intersection.z;\n const newLength =\n Math.abs(newStartZ - endZ) / this.utils.cos(UI.patiosPitch);\n const fitYForNewStartZPoint =\n Math.abs(startZ - newStartZ) * this.utils.tan(UI.patiosPitch);\n\n return { newStartZ, newLength, fitYForNewStartZPoint };\n }\n }\n\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n const rakeCutVerLength =\n this.beamRightCutSizeInfo.v + this.beamRightCutSizeInfo.k_;\n const rakeCutHorLength = this.beamRightCutSizeInfo.l;\n\n const beamLine = new Line3(\n new Vector3(offsetX + beamWidth, 0, startZ),\n new Vector3(offsetX + beamWidth, 0, endZ)\n );\n const beamRakeCutLength = Math.sqrt(\n Math.pow(rakeCutHorLength, 2) + Math.pow(rakeCutVerLength, 2)\n );\n const cosAngleFrontHor = rakeCutHorLength / beamRakeCutLength;\n\n const startRakeCut = new Vector3(\n UI.totalBayLength / 2,\n 0,\n offsetZFrontBeam - rakeCutVerLength - beamWidth / cosAngleFrontHor\n );\n const endRakeCut = new Vector3(\n UI.totalBayLength / 2 - rakeCutHorLength,\n 0,\n offsetZFrontBeam - beamWidth / cosAngleFrontHor\n );\n\n const intersection = this.utils.getIntersectionOnAPoint(\n beamLine,\n new Line3(startRakeCut, endRakeCut)\n );\n\n if (intersection && intersection.z < startZ) {\n const newStartZ = intersection.z;\n const newLength =\n Math.abs(newStartZ - endZ) / this.utils.cos(UI.patiosPitch);\n const fitYForNewStartZPoint =\n Math.abs(startZ - newStartZ) * this.utils.tan(UI.patiosPitch);\n\n return { newStartZ, newLength, fitYForNewStartZPoint };\n }\n } else if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n const beamLine = new Line3(\n new Vector3(offsetX + beamWidth - 2, 0, startZ),\n new Vector3(offsetX + beamWidth - 2, 0, endZ)\n );\n const startRakeCut = new Vector3(\n UI.totalBayLength / 2,\n 0,\n offsetZFrontBeam - UI.rakeCutRightVer - beamWidth\n );\n const endRakeCut = new Vector3(\n UI.totalBayLength / 2 - UI.rakeCutRightHor - beamWidth,\n 0,\n offsetZFrontBeam - UI.rakeCutRightVer - beamWidth\n );\n\n const intersection = this.utils.getIntersectionOnAPoint(\n beamLine,\n new Line3(endRakeCut, startRakeCut),\n true\n );\n\n if (intersection && intersection.z < startZ) {\n const newStartZ = intersection.z;\n const newLength =\n Math.abs(newStartZ - endZ) / this.utils.cos(UI.patiosPitch);\n const fitYForNewStartZPoint =\n Math.abs(startZ - newStartZ) * this.utils.tan(UI.patiosPitch);\n\n return { newStartZ, newLength, fitYForNewStartZPoint };\n }\n }\n\n return { newStartZ: null, newLength: null, fitYForNewStartZPoint: null };\n }\n private addDownPipeStepRakecut() {\n if (\n UI.rakeCutLeftType != RAKECUT_TYPE.STEP &&\n UI.rakeCutRightType != RAKECUT_TYPE.STEP\n ) {\n return;\n }\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n let offsetX = -this.totalBaySize / 2 + 50;\n let offsetY =\n this.utils.getHeightByAngle(\n UI.height,\n UI.span + UI.multiSpan + UI.overhangFront - UI.rakeCutLeftVer,\n UI.patiosPitch,\n -1\n ) +\n this.geometryManager.getRoofBase().height -\n 30;\n let offsetZ =\n UI.span +\n UI.multiSpan +\n UI.overhangFront +\n 40 -\n UI.existingWidth1 / 2 -\n UI.rakeCutLeftVer;\n\n this.downpipeStepRakeCutGroupLeft.position.set(offsetX, 0, offsetZ);\n\n if (this.APP.sltGutterType.currentValue == 0) {\n offsetY -= 80;\n } else {\n offsetY -= 60;\n }\n\n let userData = { type: GEOMETRY_TYPE.DOWNPIPE };\n\n let scaleY = offsetY / this.geo_downPipe.height;\n\n let meshPipe = new Mesh(\n this.geo_downPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipe.userData = userData;\n meshPipe.scale.setY(scaleY);\n\n this.downpipeStepRakeCutGroupLeft.add(meshPipe);\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n let offsetX = this.totalBaySize / 2 - 50;\n let offsetY =\n this.utils.getHeightByAngle(\n UI.height,\n UI.span + UI.multiSpan + UI.overhangFront - UI.rakeCutRightVer,\n UI.patiosPitch,\n -1\n ) +\n this.geometryManager.getRoofBase().height -\n 30;\n let offsetZ =\n UI.span +\n UI.multiSpan +\n UI.overhangFront +\n 40 -\n UI.existingWidth1 / 2 -\n UI.rakeCutRightVer;\n\n this.downpipeStepRakeCutGroupRight.position.set(offsetX, 0, offsetZ);\n\n if (this.APP.sltGutterType.currentValue == 0) {\n offsetY -= 80;\n } else {\n offsetY -= 60;\n }\n\n let userData = { type: GEOMETRY_TYPE.DOWNPIPE };\n\n let scaleY = offsetY / this.geo_downPipe.height;\n\n let meshPipe = new Mesh(\n this.geo_downPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipe.userData = userData;\n meshPipe.scale.setY(scaleY);\n\n this.downpipeStepRakeCutGroupRight.add(meshPipe);\n }\n }\n private addDownPipe() {\n let offsetZ = UI.span + UI.multiSpan + 100 - UI.existingWidth1 / 2;\n let offsetX = -this.totalBaySize / 2 + 50;\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n offsetX = this.totalBaySize / 2 - 50;\n }\n\n //Rakecut\n //Downpipe will be in left\n if (UI.rakeCutLeftType != RAKECUT_TYPE.NONE) {\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n offsetX = -this.totalBaySize / 2 + this.beamLeftCutSizeInfo.l;\n } else if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n offsetX = -this.totalBaySize / 2 + UI.rakeCutLeftHor + 50;\n }\n }\n //Downpipe will be in right\n else {\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n offsetX = this.totalBaySize / 2 - this.beamRightCutSizeInfo.l;\n } else if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n offsetX = this.totalBaySize / 2 - UI.rakeCutRightHor - 50;\n }\n }\n\n let pipeLength = this.utils.getHeightByAngle(\n UI.height,\n UI.span + UI.multiSpan + UI.overhangFront,\n UI.patiosPitch,\n -1\n );\n\n this.downpipeGroup = this.utils.createDownpipeGroup(\n this.APP,\n this.downpipeGroup,\n this.geo_downPipe,\n this.geo_downPipeL,\n offsetX,\n 0,\n offsetZ,\n offsetZ,\n 0,\n UI.overhangFront,\n pipeLength,\n true\n );\n }\n private updateUI() {\n this.APP.sldMinHeight.setValue(_.round(this.frontPostHeight, 0));\n }\n public getSection(): Printing2DGeometry {\n let objs = this.scene.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_POST ||\n o.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET\n );\n\n objs = [...objs];\n\n let lsGeometries: Printing2DLine[] = [];\n\n for (let o of objs) {\n let box = new BoxHelper(o);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n //this.scene.add(box);\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: outlineGeo.vertices,\n views: o.userData.views,\n });\n\n // var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"OUTLINE\"};\n // //line.position.set(o.position.x - 5000, o.position.y, o.position.z);\n // this.scene.add( line );\n }\n let beamGroups = this.scene.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM ||\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_INTERNAL_BEAM\n );\n for (let g of beamGroups) {\n for (let c of g.children) {\n c.updateMatrix();\n\n let objCloned = c.clone();\n objCloned.applyMatrix4(new Matrix4().getInverse(c.matrix));\n\n const planView = _.find(\n g.userData.views,\n (el) => el.viewType == ViewType.PLAN\n );\n if (planView) {\n this.utils.getPlanVerticesOfBeam(c as Mesh, lsGeometries, [planView]);\n }\n\n let box = new BoxHelper(objCloned);\n c.updateWorldMatrix(true, true);\n box.geometry.applyMatrix4(c.matrixWorld);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo.vertices,\n views: _.filter(\n g.userData.views,\n (el) => el.viewType != ViewType.PLAN\n ),\n });\n }\n }\n\n let rafterBeamGroups = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n );\n for (let o of rafterBeamGroups) {\n o.children.forEach((el) => {\n this.utils.getOutlineRafterBeam(el as Mesh, lsGeometries);\n });\n }\n\n return { lines: lsGeometries, texts: [] };\n }\n public simplifyGeo(geo: BufferGeometry): Geometry {\n let vertices = geo.getAttribute(\"position\").array;\n let lineGeo = new Geometry();\n for (let i = 0; i < vertices.length; i += 3) {\n lineGeo.vertices.push(\n new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2])\n );\n }\n\n //2-3\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n //3-7\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n //7-6\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n //6-2\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n\n //1-4\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n //4-8\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n //8-5\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n //5-1\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n\n return lineGeo;\n }\n private addGround() {\n let offsetX = -(this.totalBaySize / 2 + UI.overhangLeft);\n let offsetZ = -UI.existingWidth1 / 2;\n let width = this.totalBaySize + UI.overhangLeft + UI.overhangRight;\n let length =\n UI.span +\n UI.multiSpan +\n UI.overhangFront +\n this.APP.sldBackOverhang.currentValue;\n\n let base = new Mesh(\n this.geo_groundBase.geometry,\n MaterialManager.Instance().BASE\n );\n base.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GROUND_BASE,\n };\n base.position.set(offsetX, 0, offsetZ);\n base.scale.set(\n width / this.geo_groundBase.width,\n 1,\n length / this.geo_groundBase.length\n );\n\n this.scene.add(base);\n }\n public addPost(offsetX: number, userDataPos: any) {\n if (userDataPos.isMultiSpan && UI.multiSpan === 0) {\n return;\n }\n\n const _existingType = +this.APP.sltExistingType.currentValue;\n\n let _flag = false;\n if (userDataPos.left && UI.overhangLeft > 0) {\n _flag = true;\n } else if (userDataPos.right && UI.overhangRight > 0) {\n _flag = true;\n }\n\n if (!userDataPos.isMultiSpan && !_flag) {\n if (\n (_existingType === 1 || _existingType === 3) &&\n userDataPos.left &&\n UI.existingWidth1 >= UI.span\n ) {\n return;\n }\n if (\n (_existingType === 2 || _existingType === 3) &&\n userDataPos.right &&\n UI.existingWidth1 >= UI.span\n ) {\n return;\n }\n } else if (!_flag) {\n if (\n (_existingType === 1 || _existingType === 3) &&\n userDataPos.left &&\n UI.existingWidth1 >= UI.span + UI.multiSpan\n ) {\n return;\n }\n if (\n (_existingType === 2 || _existingType === 3) &&\n userDataPos.right &&\n UI.existingWidth1 >= UI.span + UI.multiSpan\n ) {\n return;\n }\n }\n let views: Print2DView[] = [];\n\n if (userDataPos.isMultiSpan) {\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else {\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n const mesh = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n let offsetZ = -UI.existingWidth1 / 2;\n if (userDataPos.isMultiSpan) {\n offsetZ += UI.span + UI.multiSpan - this.beamInfo.width / 2;\n } else {\n offsetZ += UI.span - (UI.multiSpan > 0 ? 0 : this.beamInfo.width / 2);\n }\n // offsetZ += this.geometryManager.EXISTING_WALL.EXISTING_WALL.width;\n let scaleY = 0;\n let length = 0;\n\n if (userDataPos.isMultiSpan) {\n length =\n UI.height - this.getHeightByRoofPitch(false) - this.beamInfo.height;\n scaleY = length / this.postInfo.height;\n } else {\n length =\n UI.height - this.getHeightByRoofPitch(true) - this.beamInfo.height;\n scaleY = length / this.postInfo.height;\n }\n this.frontPostHeight = length;\n // scaleY -= this.geometryManager.SUPERIOR_BEAM.S65x160.height;\n\n let exceedMoveBackLimit = false;\n\n //Rakecut\n if (\n UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE ||\n UI.rakeCutLeftType == RAKECUT_TYPE.STEP\n ) {\n //Add new post for rake cut\n // if(userDataPos.left && (UI.multiSpan <= 0 || (UI.multiSpan > 0 && userDataPos.isMultiSpan))){\n // let postLeft = new Mesh(this.postInfo.geometry, MaterialManager.Instance().POST);\n // postLeft.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.SUPERIOR_POST, position: userDataPos, views: views };\n // postLeft.position.set(offsetX + this.APP.sldRakeCutHorizontal.currentValue, 0, offsetZ);\n // postLeft.scale.setY(scaleY);\n // this.scene.add(postLeft);\n // }\n\n //Move front post to back\n let moveToBack = false;\n if (UI.multiSpan > 0) {\n if (userDataPos.isMultiSpan && userDataPos.left) {\n moveToBack = true;\n }\n } else {\n if (!userDataPos.isMultiSpan && userDataPos.left) {\n moveToBack = true;\n }\n }\n\n if (moveToBack) {\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n offsetX -= UI.overhangLeft;\n offsetZ -= this.beamLeftCutSizeInfo.v + this.beamLeftCutSizeInfo.k_;\n let length =\n UI.span +\n UI.multiSpan -\n (this.beamLeftCutSizeInfo.v + this.beamLeftCutSizeInfo.k_);\n scaleY =\n this.utils.getHeightByAngle(\n UI.height - this.beamInfo.height,\n length,\n UI.patiosPitch,\n -1\n ) / this.postInfo.height;\n\n if (\n UI.rakeCutLeftVer + this.beamLeftCutSizeInfo.k_ >\n this.MANAGER.patiosLength\n ) {\n exceedMoveBackLimit = true;\n }\n } else if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n let moveBack = UI.rakeCutLeftVer;\n if (moveBack > 0) {\n offsetZ -= moveBack;\n let length = UI.span + UI.multiSpan - moveBack;\n scaleY =\n this.utils.getHeightByAngle(\n UI.height - this.beamInfo.height,\n length,\n UI.patiosPitch,\n -1\n ) / this.postInfo.height;\n }\n }\n }\n }\n if (\n UI.rakeCutRightType == RAKECUT_TYPE.ANGLE ||\n UI.rakeCutRightType == RAKECUT_TYPE.STEP\n ) {\n //Move front post to back\n let moveToBack = false;\n if (UI.multiSpan > 0) {\n if (userDataPos.isMultiSpan && userDataPos.right) {\n moveToBack = true;\n }\n } else {\n if (!userDataPos.isMultiSpan && userDataPos.right) {\n moveToBack = true;\n }\n }\n\n if (moveToBack) {\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n offsetX += UI.overhangRight;\n offsetZ -= this.beamRightCutSizeInfo.v + this.beamRightCutSizeInfo.k_;\n let length =\n UI.span +\n UI.multiSpan -\n (this.beamRightCutSizeInfo.v + this.beamRightCutSizeInfo.k_);\n scaleY =\n this.utils.getHeightByAngle(\n UI.height - this.beamInfo.height,\n length,\n UI.patiosPitch,\n -1\n ) / this.postInfo.height;\n\n if (\n UI.rakeCutRightVer + this.beamRightCutSizeInfo.k_ >\n this.MANAGER.patiosLength\n ) {\n exceedMoveBackLimit = true;\n }\n } else if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n let moveBack = UI.rakeCutRightVer;\n if (moveBack > 0) {\n offsetZ -= moveBack;\n let length = UI.span + UI.multiSpan - moveBack;\n scaleY =\n this.utils.getHeightByAngle(\n UI.height - this.beamInfo.height,\n length,\n UI.patiosPitch,\n -1\n ) / this.postInfo.height;\n }\n }\n }\n }\n //End rakecut\n\n //post can not go behind existing wall\n if (exceedMoveBackLimit) {\n return;\n }\n\n mesh.position.set(offsetX, 0, offsetZ);\n mesh.scale.setY(scaleY);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n this.scene.add(mesh);\n }\n public addPostAngleRakecut(offsetX: number, userDataPos: any) {\n if (\n UI.rakeCutLeftType != RAKECUT_TYPE.ANGLE &&\n UI.rakeCutRightType != RAKECUT_TYPE.ANGLE\n ) {\n return;\n }\n\n let height =\n UI.height - this.getHeightByRoofPitch(true) - this.beamInfo.height;\n let offsetZ =\n -UI.existingWidth1 / 2 + UI.span + UI.multiSpan - this.beamInfo.width / 2;\n\n let scaleY = height / this.postInfo.height;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n if (userDataPos.left) {\n let postLeft = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n postLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n postLeft.position.set(offsetX + this.beamLeftCutSizeInfo.l, 0, offsetZ);\n postLeft.scale.setY(scaleY);\n\n let isIntersect = false;\n let boxPost = new Box3().setFromObject(postLeft);\n this.scene.children\n .filter((el) => el.userData.type == GEOMETRY_TYPE.SUPERIOR_POST)\n .forEach((el) => {\n el.updateWorldMatrix(true, true);\n let boxEl = new Box3().setFromObject(el);\n if (boxPost.intersectsBox(boxEl)) {\n isIntersect = true;\n }\n });\n\n if (!isIntersect) {\n this.scene.add(postLeft);\n }\n }\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n if (userDataPos.right) {\n let postRight = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n postRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n postRight.position.set(\n offsetX - this.beamRightCutSizeInfo.l,\n 0,\n offsetZ\n );\n postRight.scale.setY(scaleY);\n\n let isIntersect = false;\n let boxPost = new Box3().setFromObject(postRight);\n this.scene.children\n .filter((el) => el.userData.type == GEOMETRY_TYPE.SUPERIOR_POST)\n .forEach((el) => {\n el.updateWorldMatrix(true, true);\n let boxEl = new Box3().setFromObject(el);\n if (boxPost.intersectsBox(boxEl)) {\n isIntersect = true;\n }\n });\n\n if (!isIntersect) {\n this.scene.add(postRight);\n }\n }\n }\n }\n private addPostStepRakecut() {\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n let userDataPos = { rakecut: true };\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n let offsetXL = -UI.totalBayLength / 2 + this.postInfo.width;\n let offsetZF =\n UI.span +\n UI.multiSpan -\n UI.existingWidth1 / 2 -\n this.postInfo.width / 2;\n let scaleYF =\n this.utils.getHeightByAngle(\n UI.height - this.beamInfo.height,\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n -1\n ) / this.postInfo.height;\n let scaleYB = scaleYF;\n let offsetZB = offsetZF;\n\n let moveRight = UI.rakeCutLeftHor - UI.overhangLeft;\n if (moveRight > 0) {\n offsetXL += moveRight;\n }\n\n let moveBack = UI.rakeCutLeftVer;\n if (moveBack > 0) {\n offsetZB -= moveBack;\n scaleYB =\n this.utils.getHeightByAngle(\n UI.height - this.beamInfo.height,\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n -1\n ) / this.postInfo.height;\n }\n\n let postFront = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n postFront.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n postFront.position.set(offsetXL, 0, offsetZF);\n postFront.scale.setY(scaleYF);\n this.scene.add(postFront);\n\n let postBack = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n postBack.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n postBack.position.set(offsetXL - this.postInfo.width / 2, 0, offsetZB);\n postBack.scale.setY(scaleYB);\n this.scene.add(postBack);\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n let offsetXR = UI.totalBayLength / 2 - this.postInfo.width;\n let offsetZF =\n UI.span +\n UI.multiSpan -\n UI.existingWidth1 / 2 -\n this.postInfo.width / 2;\n let scaleYF =\n this.utils.getHeightByAngle(\n UI.height - this.beamInfo.height,\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n -1\n ) / this.postInfo.height;\n let scaleYB = scaleYF;\n let offsetZB = offsetZF;\n\n let moveLeft = UI.rakeCutRightHor - UI.overhangRight;\n if (moveLeft > 0) {\n offsetXR -= moveLeft;\n }\n\n let moveBack = UI.rakeCutRightVer;\n if (moveBack > 0) {\n offsetZB -= moveBack;\n scaleYB =\n this.utils.getHeightByAngle(\n UI.height - this.beamInfo.height,\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n -1\n ) / this.postInfo.height;\n }\n\n let postFront = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n postFront.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n postFront.position.set(offsetXR, 0, offsetZF);\n postFront.scale.setY(scaleYF);\n this.scene.add(postFront);\n\n let postBack = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n postBack.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n postBack.position.set(offsetXR + this.postInfo.width / 2, 0, offsetZB);\n postBack.scale.setY(scaleYB);\n this.scene.add(postBack);\n }\n }\n public addBeam(userDataPos: any) {\n if (userDataPos.isMultiSpan && UI.multiSpan === 0) {\n return;\n }\n //const mesh = new Mesh(this.beamInfo.geometry, MaterialManager.Instance().BEAM);\n\n let offsetZ = -UI.existingWidth1 / 2;\n let offsetY = 0;\n let scaleX = this.roofWidth / this.beamInfo.length;\n let beamLength = this.roofWidth;\n\n if (userDataPos.isMultiSpan) {\n offsetY = UI.height - this.getHeightByRoofPitch(false);\n offsetZ += UI.span + UI.multiSpan - this.beamInfo.width / 2;\n } else {\n offsetY = UI.height - this.getHeightByRoofPitch(true);\n offsetZ += UI.span - (UI.multiSpan > 0 ? 0 : this.beamInfo.width / 2);\n }\n\n let offsetXL = -(this.totalBaySize / 2 + UI.overhangLeft);\n let offsetXR = this.totalBaySize / 2 + UI.overhangRight;\n\n let views: Print2DView[] = [];\n if (userDataPos.isMultiSpan) {\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else {\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n //Cutout - in case of multi span & apply only the back beam\n if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.enableCutout &&\n !userDataPos.isMultiSpan\n ) {\n if (UI.span <= UI.existingWidth1) {\n if (this.APP.sltExistingType.currentValue == 1) {\n offsetXL += this.APP.sldExistingLength2.currentValue;\n scaleX =\n (this.roofWidth - this.APP.sldExistingLength2.currentValue) /\n this.beamInfo.length;\n beamLength =\n this.roofWidth - this.APP.sldExistingLength2.currentValue;\n } else if (this.APP.sltExistingType.currentValue == 2) {\n offsetXR -= this.APP.sldExistingLength2.currentValue;\n scaleX =\n (this.roofWidth - this.APP.sldExistingLength2.currentValue) /\n this.beamInfo.length;\n beamLength =\n this.roofWidth - this.APP.sldExistingLength2.currentValue;\n } else if (this.APP.sltExistingType.currentValue == 3) {\n offsetXL += this.APP.sldExistingLength2.currentValue;\n offsetXR -= this.APP.sldExistingLength2.currentValue;\n scaleX =\n (this.roofWidth - this.APP.sldExistingLength2.currentValue * 2) /\n this.beamInfo.length;\n beamLength =\n this.roofWidth - this.APP.sldExistingLength2.currentValue * 2;\n }\n }\n }\n\n //rake cut - apply only the front beam\n if (UI.multiSpan <= 0 || (UI.multiSpan > 0 && userDataPos.isMultiSpan)) {\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n offsetXL += this.beamLeftCutSizeInfo.l;\n scaleX =\n (this.roofWidth - this.beamLeftCutSizeInfo.l) / this.beamInfo.length;\n beamLength -= this.beamLeftCutSizeInfo.l;\n } else if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n offsetXL += UI.rakeCutLeftHor;\n scaleX = (this.roofWidth - UI.rakeCutLeftHor) / this.beamInfo.length;\n beamLength -= UI.rakeCutLeftHor;\n }\n\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n offsetXR -= this.beamRightCutSizeInfo.l;\n scaleX =\n (this.roofWidth - this.beamRightCutSizeInfo.l) / this.beamInfo.length;\n beamLength -= this.beamRightCutSizeInfo.l;\n } else if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n offsetXR -= UI.rakeCutRightHor;\n scaleX = (this.roofWidth - UI.rakeCutRightHor) / this.beamInfo.length;\n beamLength -= UI.rakeCutRightHor;\n }\n }\n\n this.cutStandardBeamByCutBeamWithinBayControl(\n this.beamInfo,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetXL, offsetY, offsetZ),\n new Vector3(),\n views,\n 1,\n userDataPos,\n 0,\n \"x\",\n this.geoBeamJoint\n );\n }\n private cutStandardBeamByCutBeamWithinBayControl(\n beamGeo: GeometryInfo,\n beamCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n userDataPos: any,\n beamGeoTranslationZ: number,\n beamDirection: string,\n jointGeo: GeometryInfo\n ) {\n // Map list cut beam here\n const beamStartX = pos.x;\n const beamEndX = pos.x + length;\n\n let endOfBayX = -UI.totalBayLength / 2;\n let startCutBeamX = beamStartX;\n let endCutBeamX = beamStartX;\n\n const beams = this.utils.getListSeperateBeamsByBays(\n endOfBayX,\n beamStartX,\n beamEndX,\n endCutBeamX,\n startCutBeamX\n );\n\n for (let i = 0; i < beams.length; i++) {\n endCutBeamX = beams[i][1];\n startCutBeamX = beams[i][0];\n let beamGroup = this.utils.createBeamGroup2(\n beamGeo,\n beamCapGeo,\n endCutBeamX - startCutBeamX,\n new Vector3(startCutBeamX, pos.y, pos.z),\n rot,\n views,\n directionOffset,\n userDataPos,\n beamGeoTranslationZ,\n beamDirection,\n UI.beamLayoutShow,\n {\n hasStartCap: UI.beamType == 0 && i == 0,\n hasEndCap:\n UI.beamType == 0 &&\n (i == beams.length - 1 || (i == 0 && beams.length == 1)),\n hasStartJoint: i !== 0,\n hasEndJoint: false,\n jointGeo: jointGeo,\n }\n );\n this.scene.add(beamGroup);\n }\n }\n private addBeamAngleRakecut(cutSide: BUILDING_SIDE) {\n if (\n cutSide == BUILDING_SIDE.LEFT &&\n UI.rakeCutLeftType != RAKECUT_TYPE.ANGLE\n ) {\n return;\n }\n\n if (\n cutSide == BUILDING_SIDE.RIGHT &&\n UI.rakeCutRightType != RAKECUT_TYPE.ANGLE\n ) {\n return;\n }\n\n let beamSizeInfo = this.utils.getBeamRakeCutInfo(this.APP, cutSide);\n\n let offsetX = -this.totalBaySize / 2 - UI.overhangLeft + beamSizeInfo.l;\n let offsetZ = UI.span + UI.multiSpan - UI.existingWidth1 / 2;\n\n let offsetY = this.utils.getHeightByAngle(\n UI.height,\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n -1\n );\n let beamLength = beamSizeInfo.m;\n let scaleZ = beamLength / this.beamRakecutInfoLeft.length;\n\n //beam lenght can not go behind existing wall\n if (\n cutSide == BUILDING_SIDE.LEFT &&\n UI.rakeCutLeftVer + beamSizeInfo.k_ > this.MANAGER.patiosLength\n ) {\n beamLength -= beamSizeInfo.b;\n scaleZ = beamLength / this.beamRakecutInfoLeft.length;\n } else if (\n cutSide == BUILDING_SIDE.RIGHT &&\n UI.rakeCutRightVer + beamSizeInfo.k_ > this.MANAGER.patiosLength\n ) {\n beamLength -= beamSizeInfo.b;\n scaleZ = beamLength / this.beamRakecutInfoLeft.length;\n }\n\n let offsetXStart = 0;\n let offsetXEnd = beamLength;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n let rotYL = Math.atan(UI.rakeCutLeftHor / UI.rakeCutLeftVer);\n let rotYR = Math.atan(UI.rakeCutRightHor / UI.rakeCutRightVer);\n let rotX = this.utils.degreesToRadians(UI.patiosPitch);\n\n if (cutSide == BUILDING_SIDE.LEFT) {\n const mesh = new Mesh(\n this.beamRakecutInfoLeft.geometry,\n MaterialManager.Instance().BEAM\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n };\n mesh.scale.setZ(scaleZ);\n\n let capL = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capL.position.set(\n this.geo_beamEndCap.width / 2,\n 0,\n -(offsetXEnd + this.geo_beamEndCap.length / 2 - 2)\n );\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let capR = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capR.position.set(\n this.geo_beamEndCap.width / 2,\n 0,\n offsetXStart - this.geo_beamEndCap.length / 2 + 2\n );\n capR.rotateY(Math.PI);\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n angle: true,\n };\n beamGroup.position.set(offsetX, offsetY, offsetZ);\n beamGroup.rotation.set(0, rotYL, 0);\n beamGroup.updateMatrixWorld();\n let matrix = beamGroup.matrixWorld;\n\n if (beamLength > 8000) {\n this.addPostForBeamAngelRakecut(cutSide, matrix);\n }\n\n beamGroup.rotation.set(rotX, rotYL, 0);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n\n this.scene.add(beamGroup);\n }\n if (cutSide == BUILDING_SIDE.RIGHT) {\n offsetX = this.totalBaySize / 2 + UI.overhangRight - beamSizeInfo.l;\n const mesh = new Mesh(\n this.beamRakecutInfoRight.geometry,\n MaterialManager.Instance().BEAM\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n };\n mesh.scale.setZ(scaleZ);\n\n let capL = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capL.position.set(\n -this.geo_beamEndCap.width / 2,\n 0,\n -(offsetXEnd + this.geo_beamEndCap.length / 2 - 2)\n );\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let capR = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capR.position.set(\n -this.geo_beamEndCap.width / 2,\n 0,\n offsetXStart - this.geo_beamEndCap.length / 2 + 2\n );\n capR.rotateY(Math.PI);\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n angle: true,\n };\n beamGroup.position.set(offsetX, offsetY, offsetZ);\n beamGroup.rotation.set(0, -rotYR, 0);\n beamGroup.updateMatrixWorld();\n let matrix = beamGroup.matrixWorld;\n if (beamLength > 8000) {\n this.addPostForBeamAngelRakecut(cutSide, matrix);\n }\n\n beamGroup.rotation.set(rotX, -rotYR, 0);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n this.scene.add(beamGroup);\n }\n }\n private addBeamStepRakecut() {\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n let offsetXL = -UI.totalBayLength / 2 - UI.overhangLeft;\n let offsetZ = UI.span + UI.multiSpan - UI.existingWidth1 / 2;\n let offsetY = this.utils.getHeightByAngle(\n UI.height,\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n -1\n );\n\n let moveBack = UI.rakeCutLeftVer;\n if (moveBack > 0) {\n offsetZ -= moveBack;\n offsetY = this.utils.getHeightByAngle(\n UI.height,\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n -1\n );\n }\n\n let beamLength = UI.rakeCutLeftHor + this.beamInfo.width;\n if (UI.rakeCutLeftHor < UI.overhangLeft) {\n beamLength = UI.overhangLeft;\n }\n\n let beamGroup;\n\n if (UI.beamType == 0) {\n beamGroup = this.utils.createBeamGroup2(\n this.geo_beamStepRakecutLeft,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetXL, offsetY, offsetZ),\n new Vector3(),\n views,\n 1,\n null,\n -this.geo_beamEndCap.width / 2,\n \"x\",\n false,\n {\n hasStartCap: UI.beamType == 0,\n hasEndCap: UI.beamType == 0,\n hasStartJoint: false,\n hasEndJoint: false,\n jointGeo: null,\n }\n );\n } else {\n beamGroup = this.utils.createBeamGroup2(\n this.geo_beamStepRakecutLeft,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetXL, offsetY, offsetZ),\n new Vector3(),\n views,\n 1,\n null,\n -this.geo_beamEndCap.width / 2,\n \"x\",\n false,\n {\n hasStartCap: UI.beamType == 0,\n hasEndCap: UI.beamType == 0,\n hasStartJoint: false,\n hasEndJoint: false,\n jointGeo: null,\n }\n );\n }\n\n this.scene.add(beamGroup);\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n let offsetXR = UI.totalBayLength / 2 + UI.overhangRight;\n let offsetZ = UI.span + UI.multiSpan - UI.existingWidth1 / 2;\n let offsetY = this.utils.getHeightByAngle(\n UI.height,\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n -1\n );\n\n let moveBack = UI.rakeCutRightVer;\n if (moveBack > 0) {\n offsetZ -= moveBack;\n offsetY = this.utils.getHeightByAngle(\n UI.height,\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n -1\n );\n }\n let beamLength = UI.rakeCutRightHor + +this.beamInfo.width;\n if (UI.rakeCutRightHor < UI.overhangRight) {\n beamLength = UI.overhangRight + +this.beamInfo.width;\n }\n\n let beamGroup;\n\n if (UI.beamType == 0) {\n beamGroup = this.utils.createBeamGroup2(\n this.geo_beamStepRakecutRight,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetXR, offsetY, offsetZ),\n new Vector3(),\n views,\n -1,\n null,\n -this.geo_beamEndCap.width / 2,\n \"x\",\n false,\n {\n hasStartCap: UI.beamType == 0,\n hasEndCap: UI.beamType == 0,\n hasStartJoint: false,\n hasEndJoint: false,\n jointGeo: null,\n }\n );\n } else {\n beamGroup = this.utils.createBeamGroup2(\n this.geo_beamStepRakecutRight,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetXR, offsetY, offsetZ),\n new Vector3(),\n views,\n -1,\n null,\n -this.geo_beamEndCap.width / 2,\n \"x\",\n false,\n {\n hasStartCap: UI.beamType == 0,\n hasEndCap: UI.beamType == 0,\n hasStartJoint: false,\n hasEndJoint: false,\n jointGeo: null,\n }\n );\n }\n\n this.scene.add(beamGroup);\n }\n }\n private addPostForBeamAngelRakecut(\n cutSide: BUILDING_SIDE,\n beamMatrix: Matrix4\n ) {\n let inf = this.utils.getBeamRakeCutInfo(this.APP, cutSide);\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n if (cutSide == BUILDING_SIDE.LEFT) {\n let p1 = new Vector3(\n -UI.totalBayLength / 2 - UI.overhangLeft,\n 2500,\n -UI.existingWidth1 / 2 + UI.span + UI.multiSpan\n );\n let p2 = new Vector3().addVectors(\n p1,\n new Vector3(0, 0, -1).multiplyScalar(inf.j)\n );\n let p3 = new Vector3().addVectors(\n p1,\n new Vector3(1, 0, 0).multiplyScalar(inf.l)\n );\n let angle = Math.atan(UI.rakeCutLeftHor / UI.rakeCutLeftVer);\n\n let ver = (Math.cos(angle) * inf.m) / 2;\n let pMid = new Vector3().addVectors(\n p2,\n new Vector3(0, 0, 1).multiplyScalar(ver)\n );\n let pOri = new Vector3(\n -UI.totalBayLength / 2 + UI.overhangLeft,\n 2500,\n -UI.existingWidth1 / 2\n );\n\n let dir = new Vector3().subVectors(p2, p3).normalize();\n let pMid2 = new Vector3().addVectors(p3, dir.multiplyScalar(inf.m / 2));\n\n let length = new Vector3().subVectors(pMid, pOri).length();\n let height = this.utils.getHeightByAngle(\n UI.height - this.beamInfo.height,\n length,\n UI.patiosPitch,\n -1\n );\n\n let scaleY = height / this.postInfo.height;\n\n let postLeft = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n postLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: { rakecut: true },\n views: views,\n };\n postLeft.position.set(pMid2.x, 0, pMid2.z);\n //postLeft.rotation.set(0,this.utils.degreesToRadians(UI.patiosPitch),0);\n //postLeft.applyMatrix4(beamMatrix);\n //postLeft.position.setY(-height/2);\n postLeft.scale.setY(scaleY);\n this.scene.add(postLeft);\n }\n if (cutSide == BUILDING_SIDE.RIGHT) {\n let p1 = new Vector3(\n UI.totalBayLength / 2 + UI.overhangRight,\n 2500,\n -UI.existingWidth1 / 2 + UI.span + UI.multiSpan\n );\n let p2 = new Vector3().addVectors(\n p1,\n new Vector3(0, 0, -1).multiplyScalar(inf.j)\n );\n let p3 = new Vector3().addVectors(\n p1,\n new Vector3(-1, 0, 0).multiplyScalar(inf.l)\n );\n let angle = Math.atan(UI.rakeCutRightHor / UI.rakeCutRightVer);\n\n let ver = (Math.cos(angle) * inf.m) / 2;\n let pMid = new Vector3().addVectors(\n p2,\n new Vector3(0, 0, 1).multiplyScalar(ver)\n );\n let pOri = new Vector3(\n UI.totalBayLength / 2 + UI.overhangRight,\n 2500,\n -UI.existingWidth1 / 2\n );\n\n let dir = new Vector3().subVectors(p2, p3).normalize();\n let pMid2 = new Vector3().addVectors(p3, dir.multiplyScalar(inf.m / 2));\n\n let length = new Vector3().subVectors(pMid, pOri).length();\n let height = this.utils.getHeightByAngle(\n UI.height - this.beamInfo.height,\n length,\n UI.patiosPitch,\n -1\n );\n\n let scaleY = height / this.postInfo.height;\n\n let postRight = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n postRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: { rakecut: true },\n views: views,\n };\n postRight.position.set(pMid2.x, 0, pMid2.z);\n postRight.scale.setY(scaleY);\n this.scene.add(postRight);\n }\n }\n private getHeightByRoofPitch(isSpan: boolean): number {\n if (isSpan) {\n return this.utils.tan(UI.patiosPitch) * UI.span;\n } else {\n return this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan);\n }\n }\n private getOffsetHeightForRafterBeamByRoofPitch(isSpan: boolean): number {\n const beamWidth = this.beamInfo.width;\n if (isSpan) {\n const spanLength =\n UI.span - (UI.multiSpan > 0 ? beamWidth / 2 : beamWidth);\n return this.utils.tan(UI.patiosPitch) * spanLength;\n } else {\n const totalSpanLength = UI.span + UI.multiSpan - beamWidth;\n return this.utils.tan(UI.patiosPitch) * totalSpanLength;\n }\n }\n}\n","import { Mesh, Vector3, Material, Plane, Geometry, BufferGeometry, Group, BoxBufferGeometry, MeshLambertMaterial, BoxHelper, Matrix4, PlaneHelper, Points, PointsMaterial, Color, PlaneBufferGeometry, DoubleSide, Object3D, LineSegments } from 'three';\nimport { Util } from '../utils';\nimport { CONFIG as env, GEOMETRY_TYPE, GEOMETRY_CATEGORY } from 'src/app/app.config';\nimport { BUILDING_SIDE, CUTOUT_ENABLE, EXISTING_BUILDING_CONFIG as CONST, EXISTING_BUILDING_CONFIG, PANEL_DIRECTION, RAKECUT_TYPE, RIBSPAN_PANEL_WIDTH, RIBSPAN_BARGE_FIT, RIBSPAN_RECEIVER_CHANNEL_FIT } from 'src/app/app.constants';\nimport { HomeComponent as AppComponent } from '../../containers/home/home.component';\nimport { GeometryManager } from '../geometry.manager';\nimport { MaterialManager } from '../material.manager';\nimport { GeometryInfo, Printing2DGeometry, Printing2DLine, Print2DView, ViewType, LineType } from 'src/app/core/models';\nimport { ExistingBuildingManager } from '.';\nimport { CSG } from 'three-csg-ts';\nimport HighLightBox from 'src/app-ribspan/models/HighlightBox';\nimport { UI } from '../ui';\nimport SelectionManager from '../selection.manager';\n\nexport class RoofManager {\n private scene: Group;\n private APP: AppComponent;\n private MANAGER: ExistingBuildingManager;\n private material: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private roofInfo: GeometryInfo;\n private bargeLeftInfo: GeometryInfo;\n private bargeRightInfo: GeometryInfo;\n private receiverCutoutLeftHor: GeometryInfo;\n private receiverCutoutRightHor: GeometryInfo;\n private receiverCutoutRightVer: GeometryInfo;\n private receiverCutoutRightVer2: GeometryInfo;\n private receiverCutoutLeftVer: GeometryInfo;\n private receiverCutoutLeftVer2: GeometryInfo;\n private gutterInfo: GeometryInfo;\n private gutterRakecutLeftInfo: GeometryInfo;\n private gutterRakecutRightInfo: GeometryInfo;\n //private flashingInfo: GeometryInfo;\n private geo_receiverChanel: GeometryInfo;\n private geo_gutterCap: GeometryInfo;\n private roofGroup: Group;\n\n private eventHandleId: any;\n\n // Var\n private roofLengthPlus: number;\n private roofWidth: number;\n private roofLength: number;\n private totalBaySize: number;\n\n private objectSizeChangedHandle: any;\n\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n\n private mesh_CutoutLeft: Mesh;\n private csg_cutoutLeft: CSG;\n private mesh_CutoutRight: Mesh;\n private csg_cutoutRight: CSG;\n private geo_cutoutLeft: BoxBufferGeometry;\n private geo_cutoutRight: BoxBufferGeometry;\n\n private geo_rakecutLeft: BoxBufferGeometry;\n private geo_rakecutRight: BoxBufferGeometry;\n private mesh_rakecutLeft: Mesh;\n private mesh_rakecutRight: Mesh;\n private csg_rakecutLeft: CSG;\n private csg_rakecutRight: CSG;\n\n private geoCutGutter: BoxBufferGeometry;\n private meshCutGutterLeft1: Mesh;\n private csgCutGutterLeft1: CSG;\n private meshCutGutterLeft2: Mesh;\n private csgCutGutterLeft2: CSG;\n\n private meshCutGutterRight1: Mesh;\n private csgCutGutterRight1: CSG;\n private meshCutGutterRight2: Mesh;\n private csgCutGutterRight2: CSG;\n\n private enableCutout: boolean;\n private deferHandle;\n private deferTimeout = EXISTING_BUILDING_CONFIG.CUTOUT_DEFFER_TIME_OUT;\n\n\n constructor(app: AppComponent, existingManager: ExistingBuildingManager) {\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.APP = app;\n this.MANAGER = existingManager;\n this.scene = new Group();\n existingManager.patiosGroup.add(this.scene)\n this.material = MaterialManager.Instance().ROOF;\n this.registerEvent();\n }\n\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n this.roofInfo = this.geometryManager.getRoofRibspanPanel();\n this.roofInfo.geometry\n .translate(-this.roofInfo.width / 2, this.roofInfo.height / 2, -this.roofInfo.length / 2);\n this.roofInfo.geometry.rotateY(Math.PI)\n this.utils.changeGeoColor(this.roofInfo.geometry, new Vector3(0, 1, 0), UI.roofColor.toString());\n\n // Barge capping - left\n this.bargeLeftInfo = this.geometryManager.getRibspanBarge();\n this.bargeLeftInfo.geometry\n .rotateY(Math.PI)\n .translate(this.bargeLeftInfo.width / 2 - 3, this.bargeLeftInfo.height / 2 - RIBSPAN_BARGE_FIT, this.bargeLeftInfo.length / 2);\n\n // Barge capping - right\n this.bargeRightInfo = this.geometryManager.getRibspanBarge();\n this.bargeRightInfo.geometry\n .translate(-this.bargeLeftInfo.width / 2 + 3, this.bargeLeftInfo.height / 2 - RIBSPAN_BARGE_FIT, this.bargeLeftInfo.length / 2);\n\n //Barge cutout left\n this.receiverCutoutLeftHor = this.geometryManager.getRibspanReceiverChannel();\n this.receiverCutoutLeftHor.geometry\n .rotateY(Math.PI / 2)\n .translate(-this.receiverCutoutLeftHor.length / 2, this.receiverCutoutLeftHor.height / 2 - RIBSPAN_RECEIVER_CHANNEL_FIT, this.receiverCutoutLeftHor.width / 2);\n\n //Barge cutout right\n this.receiverCutoutRightHor = this.geometryManager.getRibspanReceiverChannel();\n this.receiverCutoutRightHor.geometry\n .rotateY(Math.PI / 2)\n .translate(this.receiverCutoutRightHor.length / 2, this.receiverCutoutRightHor.height / 2 - RIBSPAN_RECEIVER_CHANNEL_FIT, this.receiverCutoutRightHor.width / 2);\n\n \n //Vertical Barge cutout left 2\n this.receiverCutoutLeftVer2 = this.geometryManager.getRibspanReceiverChannel();\n this.receiverCutoutLeftVer2.geometry\n .rotateY(Math.PI)\n .translate(this.receiverCutoutLeftVer2.width / 2, this.receiverCutoutLeftVer2.height / 2 - RIBSPAN_RECEIVER_CHANNEL_FIT, this.receiverCutoutLeftVer2.length / 2);\n\n //Vertical cutout right 2\n this.receiverCutoutRightVer2 = this.geometryManager.getRibspanReceiverChannel();\n this.receiverCutoutRightVer2.geometry\n .translate(-this.receiverCutoutRightVer2.width / 2, this.receiverCutoutRightVer2.height / 2 - RIBSPAN_RECEIVER_CHANNEL_FIT, this.receiverCutoutRightVer2.length / 2);\n\n //Vertical Barge cutout left\n this.receiverCutoutLeftVer = this.geometryManager.getRibspanReceiverChannel();\n this.receiverCutoutLeftVer.geometry\n .rotateY(Math.PI)\n .translate(this.receiverCutoutLeftVer.width / 2, this.receiverCutoutLeftVer.height / 2 - RIBSPAN_RECEIVER_CHANNEL_FIT, this.receiverCutoutLeftVer.length / 2);\n\n //Vertical cutout right\n this.receiverCutoutRightVer = this.geometryManager.getRibspanReceiverChannel();\n this.receiverCutoutRightVer.geometry\n .translate(-this.receiverCutoutRightVer.width / 2, this.receiverCutoutRightVer.height / 2 - RIBSPAN_RECEIVER_CHANNEL_FIT, this.receiverCutoutRightVer.length / 2);\n\n //Receiver chanel - barge caping back\n this.geo_receiverChanel = this.geometryManager.getRibspanReceiverChannel();\n this.geo_receiverChanel.geometry\n .rotateY(Math.PI / 2)\n .translate(this.geo_receiverChanel.length / 2, this.geo_receiverChanel.height / 2 + 2 - RIBSPAN_RECEIVER_CHANNEL_FIT, this.geo_receiverChanel.width / 2);\n\n // Gutter\n let gtExtraOffsetY = 0;\n if (this.APP.sltGutterType.currentValue == 1 || this.APP.sltGutterType.currentValue == 2) {\n gtExtraOffsetY = 20;\n }\n\n this.gutterInfo = this.geometryManager.getGutter();\n this.gutterInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.gutterInfo.length / 2, -20, this.gutterInfo.width / 2);\n\n this.gutterRakecutLeftInfo = this.geometryManager.getGutter();\n this.gutterRakecutLeftInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.gutterRakecutLeftInfo.length / 2, -20, this.gutterRakecutLeftInfo.width / 2);\n\n this.gutterRakecutRightInfo = this.geometryManager.getGutter();\n this.gutterRakecutRightInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(-this.gutterRakecutRightInfo.length / 2, -20, this.gutterRakecutRightInfo.width / 2);\n\n //Gutter cap\n this.geo_gutterCap = this.geometryManager.getGuterEndCap();\n this.geo_gutterCap.geometry\n .rotateY(-Math.PI / 2)\n .translate(0, -20, this.geo_gutterCap.length / 2);\n\n this.geo_cutoutLeft = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_cutoutLeft.translate(-500, 0, -500);\n\n this.geo_cutoutRight = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_cutoutRight.translate(500, 0, -500);\n\n this.geo_rakecutLeft = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_rakecutLeft.translate(-500, 500, 500);\n this.geo_rakecutRight = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_rakecutRight.translate(500, 500, 500);\n\n this.geoCutGutter = new BoxBufferGeometry(500, 10000, 500);\n this.geoCutGutter.translate(0, 0, -250);\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(...this.scene.children.filter(x => x.userData.type === GEOMETRY_TYPE.ROOF_PANEL \n || x.userData.type === GEOMETRY_TYPE.ROOF_PANEL_BASE\n || x.userData.type === GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING\n || x.userData.type === GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n || x.userData.type === GEOMETRY_TYPE.GUTTER_PATIOS\n || x.userData.type === GEOMETRY_TYPE.ROOF_PATIOS\n || x.userData.type === GEOMETRY_TYPE.HIGHLIGHT_BOX));\n\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.SHEET_OUTLINE));\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == 'HELPER'));\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == 'RAKECUT'));\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == 'CUTGUTTER'));\n\n this.totalBaySize = this.APP.dialogEditBay.totalBaySize;\n this.roofLength = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue;\n const _roofLength = Math.pow(this.roofLength, 2) + Math.pow(this.getHeightByRoofPitch({ isMultiSpan: true }), 2);\n this.roofLengthPlus = Math.sqrt(_roofLength);\n this.roofWidth = this.totalBaySize + this.APP.sldLeftOverhang.currentValue + this.APP.sldRightOverhang.currentValue;\n\n this.addRoofGroup();\n this.addCutout();\n if(UI.rakeCutLeftType == 0){\n new HighLightBox(this.roofGroup, {\n min: {\n x: -(UI.totalBayLength / 2 + UI.overhangLeft), \n y: 0, \n z: UI.span + UI.multiSpan + UI.overhangFront, \n },\n max: {\n x: -(UI.totalBayLength / 2 + UI.overhangLeft) + 300, \n y: 0, \n z: UI.span + UI.multiSpan + UI.overhangFront - 300,\n },\n userData: { side: BUILDING_SIDE.LEFT }\n })\n }\n if(UI.rakeCutRightType == 0){\n new HighLightBox(this.roofGroup, {\n min: {\n x: UI.totalBayLength / 2 + UI.overhangRight - 300, \n y: 0, \n z: UI.span + UI.multiSpan + UI.overhangFront, \n },\n max: {\n x: UI.totalBayLength / 2 + UI.overhangRight,\n y: 0,\n z: UI.span + UI.multiSpan + UI.overhangFront - 300,\n },\n userData: { side: BUILDING_SIDE.RIGHT }\n })\n }\n\n //Add angle rakecut\n if(this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE){\n this.addAngleRakeCut(BUILDING_SIDE.LEFT);\n }\n if(this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE){\n this.addAngleRakeCut(BUILDING_SIDE.RIGHT);\n }\n\n //Add step rakecut\n if(this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP){\n this.addStepRakecut(BUILDING_SIDE.LEFT);\n }\n if(this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP){\n this.addStepRakecut(BUILDING_SIDE.RIGHT);\n }\n \n\n let offsetXL = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n let offsetXR = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue + this.MANAGER.patiosGroup.position.x;\n\n let roofPanelCount = Math.ceil(this.roofWidth / RIBSPAN_PANEL_WIDTH);\n this.enableCutout = this.MANAGER.cutoutCondition;\n\n //clipping plane\n let offsetLeft = this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue - this.MANAGER.patiosGroup.position.x;\n let clipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n const clipingPlane = new Plane(new Vector3(-1, 0, 0), offsetXR);\n this.material.clippingPlanes = [clipingPlaneLeft, clipingPlane];\n MaterialManager.Instance().ROOF_BASE.clippingPlanes = [clipingPlaneLeft, clipingPlane];\n\n //panel direction\n let panelDirectionOfset = 1;\n if(this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT){\n offsetXL = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue - RIBSPAN_PANEL_WIDTH;\n panelDirectionOfset = -1;\n }\n else if(this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.LEFT_TO_RIGHT){\n offsetXL = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n }\n\n if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT && this.enableCutout) {\n let totalPanelLength = 0;\n let cuted = true;\n for (let index = 0; index < roofPanelCount; index++) {\n totalPanelLength += RIBSPAN_PANEL_WIDTH;\n let isOver = totalPanelLength < this.APP.sldExistingLength2.currentValue;\n this.addRoof(offsetXL, [this.csg_cutoutLeft]);\n cuted = isOver;\n\n offsetXL += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n }\n else if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT && this.enableCutout) {\n let totalPanelLength = 0;\n let cuted = false;\n for (let index = 0; index < roofPanelCount; index++) {\n totalPanelLength += RIBSPAN_PANEL_WIDTH;\n let isOver = totalPanelLength >= this.roofWidth - this.APP.sldExistingLength2.currentValue + RIBSPAN_PANEL_WIDTH;\n cuted = totalPanelLength >= this.roofWidth - this.APP.sldExistingLength2.currentValue && !isOver;\n this.addRoof(offsetXL, [this.csg_cutoutRight] );\n\n offsetXL += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n }\n else if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH && this.enableCutout) {\n let totalPanelLength = 0;\n for (let index = 0; index < roofPanelCount; index++) {\n totalPanelLength += RIBSPAN_PANEL_WIDTH;\n this.addRoof(offsetXL, [this.csg_cutoutLeft, this.csg_cutoutRight]);\n offsetXL += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n }\n else {\n for (let index = 0; index < roofPanelCount; index++) {\n this.addRoof(offsetXL, []);\n\n offsetXL += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n }\n\n this.addBarge();\n this.addBargeStepRakecut();\n this.addGutter();\n this.addGutterAngelRakecut();\n this.addGutterStepRakecut();\n this.showPanelOutline();\n\n this.scene.visible = UI.showRoof\n\n //this.getOutLines();\n resolve();\n });\n }\n private addCutout() {\n if (this.APP.sltCutOut.currentValue == 1) {\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == 'CUTOUT'));\n\n let offsetX = this.APP.sldExistingLength.currentValue / 2;\n let offsetY = 0;\n let offsetZ = this.APP.sldExistingWidth1.currentValue / 2;\n\n let scaleX = (this.APP.sldExistingLength2.currentValue + 5000) / 1000;\n if (scaleX == 0) scaleX = 1;\n let scaleY = (this.APP.sldExistingWallHeight.currentValue + 5000) / 1000;\n let scaleZ = (this.APP.sldExistingWidth1.currentValue + 5000) / 1000;\n if (scaleZ == 0) scaleZ = 1;\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT || this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n this.mesh_CutoutLeft = new Mesh(this.geo_cutoutLeft, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.mesh_CutoutLeft.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: 'CUTOUT' };\n\n this.mesh_CutoutLeft.position.set(-offsetX, offsetY, offsetZ);\n this.mesh_CutoutLeft.scale.set(scaleX, scaleY, scaleZ);\n\n this.mesh_CutoutLeft.updateMatrix();\n this.csg_cutoutLeft = CSG.fromMesh(this.mesh_CutoutLeft);\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT || this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n this.mesh_CutoutRight = new Mesh(this.geo_cutoutRight, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.mesh_CutoutRight.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: 'CUTOUT' };\n\n this.mesh_CutoutRight.position.set(offsetX, offsetY, offsetZ);\n this.mesh_CutoutRight.scale.set(scaleX, scaleY, scaleZ);\n\n this.mesh_CutoutRight.updateMatrix();\n this.csg_cutoutRight = CSG.fromMesh(this.mesh_CutoutRight);\n }\n }\n }\n \n public addRoofGroup() {\n this.roofGroup = null;\n this.roofGroup = new Group();\n this.roofGroup.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PATIOS };\n\n //let offsetX = -this.APP.sldLeftOverhang.currentValue;\n let offsetY = this.APP.sldBuildingHeight.currentValue;\n let offsetZ = -this.APP.sldExistingWidth1.currentValue / 2;\n\n this.roofGroup.position.set(0, offsetY, offsetZ);\n this.roofGroup.rotation.set(this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue), 0, 0);\n\n this.scene.add(this.roofGroup);\n }\n public getOutLines(): Printing2DGeometry {\n\n let objs = this.roofGroup.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL\n || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n );\n\n let gutterGroupObjs = this.roofGroup.children.filter(o => o.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS);\n let gutterObjs: Object3D[] = [];\n for(let group of gutterGroupObjs){\n gutterObjs.push(...group.children);\n }\n\n objs = [...objs, ...gutterObjs];\n\n let lsGeometries: Printing2DLine[] = [];\n\n let offsetLeft = this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue - this.MANAGER.patiosGroup.position.x;\n let offsetRight = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue + this.MANAGER.patiosGroup.position.x;\n let roofClipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let roofClipingPlane = new Plane(new Vector3(-1, 0, 0), offsetRight);\n\n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale((o as Mesh), 60);\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n outlineGeo.translate(0, 5000, 0);\n\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE) {\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlane);\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n }\n\n let simplifiedGeo = this.simplifyGeo(outlineGeo);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: simplifiedGeo.vertices,\n views: o.userData.views\n });\n }\n\n lsGeometries.push({\n objectType: GEOMETRY_TYPE.ROOF_COVER,\n vertices: this.makeRoofPolygon(),\n color: this.utils.convertHexColorToRgb(`#${new Color(UI.panelColor).getHexString()}`),\n views: [\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ]\n });\n\n return { lines: lsGeometries, texts: [] };\n }\n makeRoofPolygon() {\n const polygon = this.utils.getRoofCoverPolygonForLRRoof()\n this.roofGroup.updateWorldMatrix(true, true)\n return polygon.map(el => (el as Vector3).applyMatrix4(this.roofGroup.matrixWorld))\n }\n public showPanelOutline(){\n if(this.APP.sltPanelDirectionShow.currentValue == false)\n return;\n\n let objs = this.roofGroup.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n );\n\n let offsetLeft = this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue - this.MANAGER.patiosGroup.position.x;\n let offsetRight = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue + this.MANAGER.patiosGroup.position.x;\n let roofClipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let roofClipingPlaneRight = new Plane(new Vector3(-1, 0, 0), offsetRight);\n \n\n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale((o as Mesh), 60);\n\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE) {\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneRight);\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n }\n\n var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n line.userData = {type: GEOMETRY_TYPE.SHEET_OUTLINE};\n this.APP.scene.add( line );\n }\n}\n public simplifyGeo(geo: BufferGeometry): Geometry {\n let simplifiedGeo = new Geometry();\n let vertices = geo.getAttribute('position').array;\n for (let i = 0; i < vertices.length; i += 3) {\n simplifiedGeo.vertices.push(new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2]));\n }\n return simplifiedGeo;\n }\n public addRoof(offsetX: number, csgObjs: CSG[]) {\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n const mesh: Mesh = new Mesh(this.roofInfo.geometry, MaterialManager.Instance().ROOF);\n\n let offsetSheet = 0;\n if (this.APP.sltRoofSheetingType.currentValue == 0 || this.APP.sltRoofSheetingType.currentValue == 1) {\n offsetSheet = 13;\n }\n else {\n offsetSheet = 5;\n }\n\n let scaleZ = this.roofLengthPlus / this.roofInfo.length;\n const offsetY = 0;\n let offsetZ = 0;\n mesh.position.set(offsetX, offsetY, offsetZ);\n //mesh.rotateX(this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue));\n mesh.scale.setZ(scaleZ);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PANEL, views: views };\n \n let cutoutCondition = this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue != BUILDING_SIDE.NONE && this.APP.sldExistingLength2.currentValue > 0;\n let rakeCutCondition = this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE || this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE;\n \n if (cutoutCondition || rakeCutCondition) {\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n //cho no cung he toa do => cai nay khong delay\n mesh.position.set(offsetX + this.MANAGER.patiosGroup.position.x, offsetY, offsetZ + this.roofGroup.position.z);\n mesh.updateMatrix();\n\n let meshResult = mesh.clone();\n\n if(cutoutCondition){\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n }\n }\n if(rakeCutCondition){\n if(this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE){\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(this.csg_rakecutLeft), mesh.matrix);\n }\n if(this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE){\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(this.csg_rakecutRight), mesh.matrix);\n }\n }\n \n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix)); //=> tra ve goc toa do\n meshResult.applyMatrix4(matrixBefore);\n\n let buferGeo = new BufferGeometry().fromGeometry((meshResult as Mesh).geometry as Geometry);\n this.utils.changeGeoColor(buferGeo, new Vector3(0, 1, 0), UI.roofColor.toString());\n let newGeo = new Geometry().fromBufferGeometry(buferGeo);\n (meshResult as Mesh).geometry = newGeo;\n\n this.roofGroup.add(meshResult);\n }\n else {\n this.roofGroup.add(mesh);\n }\n }\n private addAngleRakeCut(cutSide: BUILDING_SIDE) {\n let offsetXL = -this.totalBaySize / 2 - this.APP.sldLeftOverhang.currentValue;\n let offsetXR = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n let offsetY = -100;\n\n let offsetZ = this.MANAGER.patiosLength - this.APP.sldExistingWidth1.currentValue / 2;\n\n let angle;\n\n if(cutSide == BUILDING_SIDE.LEFT){\n angle = Math.atan(this.APP.sldLeftCutHorizontal.currentValue / this.APP.sldLeftCutVertical.currentValue);\n }\n else if(cutSide == BUILDING_SIDE.RIGHT){\n angle = Math.atan(this.APP.sldRightCutHorizontal.currentValue / this.APP.sldRightCutVertical.currentValue);\n }\n \n const _offsetZ = (this.APP.sldFrontOverhang.currentValue\n + this.APP.sldMultiSpan.currentValue\n + this.APP.sldSpan.currentValue\n //- this.APP.sldExistingWidth1.currentValue/2\n - CONST.GUTTER_ROOF_OFFSET_Z) / this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n let _rotY;\n if(cutSide == BUILDING_SIDE.LEFT){\n _rotY = Math.atan(this.APP.sldLeftCutVertical.currentValue / this.APP.sldLeftCutHorizontal.currentValue);\n }\n else if(cutSide == BUILDING_SIDE.RIGHT){\n _rotY = Math.atan(this.APP.sldRightCutVertical.currentValue / this.APP.sldRightCutHorizontal.currentValue);\n }\n let _angle = (Math.PI - _rotY)/2;\n\n let hypotenuse = Math.sqrt(Math.pow(this.MANAGER.patiosLength, 2) + Math.pow(this.MANAGER.patiosWidth, 2));\n let scaleLength = hypotenuse/1000;\n let scaleWidth = this.MANAGER.patiosLength * this.MANAGER.patiosWidth / hypotenuse/1000;\n\n if (cutSide == BUILDING_SIDE.LEFT) {\n this.mesh_rakecutLeft = new Mesh(this.geo_rakecutLeft, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.mesh_rakecutLeft.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: 'RAKECUT' };\n\n this.mesh_rakecutLeft.position.set(offsetXL + this.MANAGER.patiosGroup.position.x, offsetY, offsetZ - this.APP.sldLeftCutVertical.currentValue);\n this.mesh_rakecutLeft.scale.set(scaleWidth, 5, scaleLength);\n this.mesh_rakecutLeft.rotateY(angle);\n this.mesh_rakecutLeft.updateMatrix();\n this.csg_rakecutLeft = CSG.fromMesh(this.mesh_rakecutLeft);\n //this.APP.scene.add(this.mesh_rakecutLeft);\n\n //cut gutter csg\n let scaleZ = (this.APP.dialogEditBay.totalBaySize + 200)/500;\n let scaleX = (this.APP.dialogEditBay.totalBaySize + 200)/500;\n this.meshCutGutterLeft1 = new Mesh(this.geoCutGutter, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.meshCutGutterLeft1.userData = {category: GEOMETRY_CATEGORY.PATIOS, type: 'CUTGUTTER'};\n this.meshCutGutterLeft1.position.set(offsetXL + this.APP.sldLeftCutHorizontal.currentValue, 0, _offsetZ);\n this.meshCutGutterLeft1.scale.set(scaleX, 1, scaleZ);\n this.meshCutGutterLeft1.rotation.set(0,_angle,0);\n this.meshCutGutterLeft1.updateMatrix();\n this.csgCutGutterLeft1 = CSG.fromMesh(this.meshCutGutterLeft1);\n //this.APP.scene.add(this.meshCutGutterLeft1);\n\n this.meshCutGutterLeft2 = new Mesh(this.geoCutGutter, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.meshCutGutterLeft2.userData = {category: GEOMETRY_CATEGORY.PATIOS, type: 'CUTGUTTER'};\n this.meshCutGutterLeft2.position.set(offsetXL + this.APP.sldLeftCutHorizontal.currentValue, 0, _offsetZ);\n this.meshCutGutterLeft2.scale.set(scaleX, 1, scaleZ);\n this.meshCutGutterLeft2.rotation.set(0,_angle + Math.PI,0);\n this.meshCutGutterLeft2.updateMatrix();\n this.csgCutGutterLeft2 = CSG.fromMesh(this.meshCutGutterLeft2);\n }\n if (cutSide == BUILDING_SIDE.RIGHT) {\n this.mesh_rakecutRight = new Mesh(this.geo_rakecutRight, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.mesh_rakecutRight.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: 'RAKECUT' };\n\n this.mesh_rakecutRight.position.set(offsetXR + this.MANAGER.patiosGroup.position.x, offsetY, offsetZ - this.APP.sldRightCutVertical.currentValue);\n this.mesh_rakecutRight.scale.set(scaleWidth, 5, scaleLength);\n this.mesh_rakecutRight.rotateY(-angle);\n\n //this.APP.scene.add(this.mesh_rakecutRight);\n\n this.mesh_rakecutRight.updateMatrix();\n this.csg_rakecutRight = CSG.fromMesh(this.mesh_rakecutRight);\n\n\n //cut gutter\n let scaleZ = (this.APP.dialogEditBay.totalBaySize + 200)/500;\n let scaleX = (this.APP.dialogEditBay.totalBaySize + 200)/500;\n this.meshCutGutterRight1 = new Mesh(this.geoCutGutter, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.meshCutGutterRight1.userData = {category: GEOMETRY_CATEGORY.PATIOS, type: 'CUTGUTTER'};\n this.meshCutGutterRight1.position.set(offsetXR - this.APP.sldRightCutHorizontal.currentValue, 0, _offsetZ);\n this.meshCutGutterRight1.rotation.set(0,-_angle,0);\n this.meshCutGutterRight1.scale.set(scaleX, 1, scaleZ);\n this.meshCutGutterRight1.updateMatrix();\n this.csgCutGutterRight1 = CSG.fromMesh(this.meshCutGutterRight1);\n\n this.meshCutGutterRight2 = new Mesh(this.geoCutGutter, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.meshCutGutterRight2.userData = {category: GEOMETRY_CATEGORY.PATIOS, type: 'CUTGUTTER'};\n this.meshCutGutterRight2.position.set(offsetXR - this.APP.sldRightCutHorizontal.currentValue, 0, _offsetZ);\n this.meshCutGutterRight2.scale.set(scaleX, 1, scaleZ);\n this.meshCutGutterRight2.rotation.set(0,-(_angle + Math.PI),0);\n this.meshCutGutterRight2.updateMatrix();\n this.csgCutGutterRight2 = CSG.fromMesh(this.meshCutGutterRight2);\n //this.APP.scene.add(this.meshCutGutterRight2);\n }\n }\n private addStepRakecut(cutSide: BUILDING_SIDE) {\n let offsetXL = -this.totalBaySize / 2 - this.APP.sldLeftOverhang.currentValue + this.MANAGER.patiosGroup.position.x;\n let offsetXR = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue + this.MANAGER.patiosGroup.position.x;\n let offsetY = -100;//this.APP.sldExistingWallHeight.currentValue;\n // let offsetY = this.utils.getHeightByAngle(\n // this.APP.sldExistingWallHeight.currentValue + this.APP.sldFlyOverBracketHeight.currentValue, \n // this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue, \n // this.APP.sltRoofPitch.currentValue, \n // 1\n // );\n\n let offsetZ = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue - this.APP.sldExistingWidth1.currentValue / 2;\n \n\n if (cutSide == BUILDING_SIDE.LEFT) {\n let scaleLength = (this.APP.sldLeftCutVertical.currentValue + 100)/1000;\n let scaleWidth = (this.APP.sldLeftCutHorizontal.currentValue + 100)/1000;\n\n this.mesh_rakecutLeft = new Mesh(this.geo_rakecutLeft, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.mesh_rakecutLeft.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: 'RAKECUT' };\n\n this.mesh_rakecutLeft.position.set(offsetXL + this.APP.sldLeftCutHorizontal.currentValue, offsetY, offsetZ - this.APP.sldLeftCutVertical.currentValue);\n this.mesh_rakecutLeft.scale.set(scaleWidth, 5, scaleLength);\n\n //this.APP.scene.add(this.mesh_rakecutLeft);\n\n this.mesh_rakecutLeft.updateMatrix();\n this.csg_rakecutLeft = CSG.fromMesh(this.mesh_rakecutLeft);\n }\n if (cutSide == BUILDING_SIDE.RIGHT) {\n let scaleLength = (this.APP.sldRightCutVertical.currentValue + 100)/1000;\n let scaleWidth = (this.APP.sldRightCutHorizontal.currentValue + 100)/1000;\n\n this.mesh_rakecutRight = new Mesh(this.geo_rakecutRight, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.mesh_rakecutRight.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: 'RAKECUT' };\n\n this.mesh_rakecutRight.position.set(offsetXR - this.APP.sldRightCutHorizontal.currentValue, offsetY, offsetZ - this.APP.sldRightCutVertical.currentValue);\n this.mesh_rakecutRight.scale.set(scaleWidth, 5, scaleLength);\n\n //this.APP.scene.add(this.mesh_rakecutRight);\n\n this.mesh_rakecutRight.updateMatrix();\n this.csg_rakecutRight = CSG.fromMesh(this.mesh_rakecutRight);\n }\n }\n\n private addBarge() {\n let mesh: Mesh;\n\n let offsetXB = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n let offsetXL1 = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue) + this.APP.sldExistingLength2.currentValue;\n let offsetXL2 = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n\n let offsetXR1 = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue - this.APP.sldExistingLength2.currentValue;\n let offsetXR2 = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n\n let offsetZLeft = 0;\n let offsetZRight = 0;\n\n let scaleXB = this.roofWidth / this.geo_receiverChanel.length;\n let scaleCutoutVer = this.utils.getHypotenuseByCos(this.APP.sldExistingWidth1.currentValue + this.receiverCutoutLeftHor.width, this.APP.sltRoofPitch.currentValue) / this.bargeLeftInfo.length;\n let scaleCutoutHor = this.APP.sldExistingLength2.currentValue / this.receiverCutoutLeftHor.length;\n let scaleZLeft = this.roofLength / this.bargeLeftInfo.length;\n let bargeLeftLength = this.roofLength;\n let scaleZRight = this.roofLength / this.bargeRightInfo.length;\n let bargeRightLength = this.roofLength;\n\n let offsetY = 0\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n //cutout\n if (this.APP.sltCutOut.currentValue == 1\n && this.APP.sldExistingLength2.currentValue > 0\n && this.enableCutout\n && (this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3)) {\n scaleXB = (this.roofWidth - this.APP.sldExistingLength2.currentValue) / this.geo_receiverChanel.length;\n scaleZLeft = this.utils.getHypotenuseByCos(this.roofLength - this.APP.sldExistingWidth1.currentValue, this.APP.sltRoofPitch.currentValue) / this.bargeLeftInfo.length;\n bargeLeftLength = this.utils.getHypotenuseByCos(this.roofLength - this.APP.sldExistingWidth1.currentValue, this.APP.sltRoofPitch.currentValue);\n \n offsetXB += this.APP.sldExistingLength2.currentValue;\n offsetZLeft += this.utils.getHypotenuseByCos(this.APP.sldExistingWidth1.currentValue, this.APP.sltRoofPitch.currentValue);\n\n //cutout Hor\n let offsetZ = this.utils.getHypotenuseByCos(this.APP.sldExistingWidth1.currentValue, this.APP.sltRoofPitch.currentValue);\n mesh = new Mesh(this.receiverCutoutLeftHor.geometry, MaterialManager.Instance().RECEIVER_CHANEL);\n mesh.position.set(offsetXL1, offsetY, offsetZ);\n mesh.scale.setX(scaleCutoutHor);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.RECEIVER_CHANEL, views: views };\n this.roofGroup.add(mesh);\n\n //cutout Ver\n mesh = new Mesh(this.receiverCutoutLeftVer.geometry, MaterialManager.Instance().RECEIVER_CHANEL);\n mesh.position.set(offsetXL1, offsetY, 0);\n mesh.scale.setZ(scaleCutoutVer);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.RECEIVER_CHANEL, views: views };\n this.roofGroup.add(mesh);\n }\n if (this.APP.sltCutOut.currentValue == 1\n && this.APP.sldExistingLength2.currentValue > 0\n && this.enableCutout\n && (this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3)) {\n scaleXB = (this.roofWidth - this.APP.sldExistingLength2.currentValue) / this.geo_receiverChanel.length;\n scaleZRight = this.utils.getHypotenuseByCos(this.roofLength - this.APP.sldExistingWidth1.currentValue, this.APP.sltRoofPitch.currentValue) / this.bargeRightInfo.length;\n bargeRightLength = this.utils.getHypotenuseByCos(this.roofLength - this.APP.sldExistingWidth1.currentValue, this.APP.sltRoofPitch.currentValue);\n offsetZRight += this.utils.getHypotenuseByCos(this.APP.sldExistingWidth1.currentValue, this.APP.sltRoofPitch.currentValue);\n //cutout hor\n let offsetZ = this.utils.getHypotenuseByCos(this.APP.sldExistingWidth1.currentValue, this.APP.sltRoofPitch.currentValue);\n mesh = new Mesh(this.receiverCutoutRightHor.geometry, MaterialManager.Instance().RECEIVER_CHANEL);\n mesh.position.set(offsetXR1, offsetY, offsetZ);\n mesh.scale.setX(scaleCutoutHor);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.RECEIVER_CHANEL, views: views };\n this.roofGroup.add(mesh);\n\n //cutout ver\n mesh = new Mesh(this.receiverCutoutRightVer.geometry, MaterialManager.Instance().RECEIVER_CHANEL);\n mesh.position.set(offsetXR1, offsetY, 0);\n mesh.scale.setZ(scaleCutoutVer);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.RECEIVER_CHANEL, views: views };\n this.roofGroup.add(mesh);\n }\n if (this.APP.sltCutOut.currentValue == 1\n && this.APP.sldExistingLength2.currentValue > 0\n && this.enableCutout\n && (this.APP.sltExistingType.currentValue == 3)) {\n scaleXB = (this.roofWidth - this.APP.sldExistingLength2.currentValue * 2) / this.geo_receiverChanel.length;\n }\n\n //Rake cut\n if(this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE){\n bargeLeftLength -= this.APP.sldLeftCutVertical.currentValue\n }\n\n if(this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE){\n bargeRightLength -= this.APP.sldRightCutVertical.currentValue\n }\n\n scaleZLeft = bargeLeftLength/this.bargeLeftInfo.length;\n scaleZRight = bargeRightLength/this.bargeRightInfo.length;\n\n //left\n if ((this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3)\n && ((this.APP.sldExistingWidth2.currentValue == 0 && this.APP.sldExistingWidth1.currentValue > scaleZLeft * this.receiverCutoutLeftVer2.length \n || this.APP.sldExistingWidth2.currentValue > 0 && this.APP.sldExistingWidth2.currentValue > scaleZLeft * this.receiverCutoutLeftVer2.length))) {\n mesh = new Mesh(this.receiverCutoutLeftVer2.geometry, MaterialManager.Instance().RECEIVER_CHANEL);\n mesh.position.set(offsetXL2, offsetY, offsetZLeft);\n mesh.scale.setZ(scaleZLeft);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.RECEIVER_CHANEL, views: views };\n this.roofGroup.add(mesh);\n } else {\n mesh = new Mesh(this.bargeLeftInfo.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXL2, offsetY, offsetZLeft);\n mesh.scale.setZ(scaleZLeft);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroup.add(mesh);\n }\n \n\n //right\n if ((this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3)\n && ((this.APP.sldExistingWidth2.currentValue == 0 && this.APP.sldExistingWidth1.currentValue > scaleZRight * this.receiverCutoutRightVer2.length \n || this.APP.sldExistingWidth2.currentValue > 0 && this.APP.sldExistingWidth2.currentValue > scaleZRight * this.receiverCutoutRightVer2.length))) {\n mesh = new Mesh(this.receiverCutoutRightVer2.geometry, MaterialManager.Instance().RECEIVER_CHANEL);\n mesh.position.set(offsetXR2, offsetY, offsetZRight);\n mesh.scale.setZ(scaleZRight);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.RECEIVER_CHANEL, views: views };\n this.roofGroup.add(mesh);\n } else {\n mesh = new Mesh(this.bargeRightInfo.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXR2, offsetY, offsetZRight);\n mesh.scale.setZ(scaleZRight);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroup.add(mesh);\n }\n\n\n // back\n mesh = new Mesh(this.geo_receiverChanel.geometry, MaterialManager.Instance().RECEIVER_CHANEL);\n mesh.position.set(offsetXB, offsetY, 0);\n mesh.scale.setX(scaleXB);\n //FIXED: BARGE -> RECEIVER_CHANCEL\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.RECEIVER_CHANEL, views: views };\n this.roofGroup.add(mesh);\n }\n private addBargeStepRakecut() {\n if(!(this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP || this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP)){\n return;\n }\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n let offsetXL = this.APP.dialogEditBay.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue;\n let offsetXR = this.APP.dialogEditBay.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n let offsetZL = this.utils.getHypotenuseByCos(this.APP.sldSpan.currentValue\n + this.APP.sldMultiSpan.currentValue\n + this.APP.sldFrontOverhang.currentValue\n - this.APP.sldLeftCutVertical.currentValue, this.APP.sltRoofPitch.currentValue);\n let offsetZR = this.utils.getHypotenuseByCos(this.APP.sldSpan.currentValue\n + this.APP.sldMultiSpan.currentValue\n + this.APP.sldFrontOverhang.currentValue\n - this.APP.sldRightCutVertical.currentValue, this.APP.sltRoofPitch.currentValue);\n let scaleZL = (this.APP.sldLeftCutVertical.currentValue) / this.bargeLeftInfo.length;\n let scaleZR = (this.APP.sldRightCutVertical.currentValue) / this.bargeRightInfo.length;\n //let scaleX = (this.APP.sldRakeCutHorizontal.currentValue) / this.bargeLeftInfo.length;\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n let bargeVer = new Mesh(this.bargeLeftInfo.geometry, MaterialManager.Instance().BARGE);\n bargeVer.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n bargeVer.position.set(-offsetXL + this.APP.sldLeftCutHorizontal.currentValue, 0, offsetZL);\n bargeVer.scale.set(1, 1, scaleZL);\n\n // let bargeHor = new Mesh(this.bargeLeftInfo.geometry, MaterialManager.Instance().BARGE);\n // bargeHor.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n // bargeHor.position.set(-offsetXL, 0, offsetZ);\n // bargeHor.scale.set(1, 1, scaleX);\n // bargeHor.rotateY(Math.PI / 2);\n\n this.roofGroup.add(bargeVer);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n let bargeVer = new Mesh(this.bargeRightInfo.geometry, MaterialManager.Instance().BARGE);\n bargeVer.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n bargeVer.position.set(offsetXR - this.APP.sldRightCutHorizontal.currentValue, 0, offsetZR);\n bargeVer.scale.set(1, 1, scaleZR);\n\n // let bargeHor = new Mesh(this.bargeRightInfo.geometry, MaterialManager.Instance().BARGE);\n // bargeHor.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n // bargeHor.position.set(offsetXR, 0, offsetZ);\n // bargeHor.scale.set(1, 1, scaleX);\n // bargeHor.rotateY(-Math.PI / 2);\n\n this.roofGroup.add(bargeVer);\n }\n }\n public addGutter() {\n let offsetXL = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n const offsetZ = (this.APP.sldFrontOverhang.currentValue\n + this.APP.sldMultiSpan.currentValue\n + this.APP.sldSpan.currentValue\n - CONST.GUTTER_ROOF_OFFSET_Z) / this.utils.cos(this.APP.sltRoofPitch.currentValue);\n const offsetY = 0;\n\n let gutterLength = this.roofWidth;\n let exLength = 300//Math.tan(extraAngle) * this.gutterInfo.width;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n offsetXL += (this.APP.sldLeftCutHorizontal.currentValue - exLength);\n gutterLength -= (this.APP.sldLeftCutHorizontal.currentValue - exLength);\n }\n else if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n offsetXL += this.APP.sldLeftCutHorizontal.currentValue;\n gutterLength -= this.APP.sldLeftCutHorizontal.currentValue;\n }\n\n if(this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE){\n gutterLength -= (this.APP.sldRightCutHorizontal.currentValue - exLength);\n }\n else if(this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP){\n gutterLength -= this.APP.sldRightCutHorizontal.currentValue;\n }\n \n if(this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE && this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE){\n let gutterMesh = new Mesh(this.gutterInfo.geometry, MaterialManager.Instance().GUTTER);\n gutterMesh.scale.setX(gutterLength/this.gutterInfo.length);\n gutterMesh.updateMatrix();\n let matrixBefore = gutterMesh.matrix.clone();\n\n gutterMesh.position.set(offsetXL, offsetY, offsetZ);\n gutterMesh.rotation.set(-this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue), 0, 0);\n gutterMesh.updateMatrix();\n\n let meshClipped = CSG.toMesh(CSG.fromMesh(gutterMesh).subtract(this.csgCutGutterLeft1), gutterMesh.matrix);\n meshClipped = CSG.toMesh(CSG.fromMesh(meshClipped).subtract(this.csgCutGutterRight1), gutterMesh.matrix);\n meshClipped.applyMatrix4(new Matrix4().getInverse(gutterMesh.matrix));\n meshClipped.applyMatrix4(matrixBefore);\n meshClipped.material = gutterMesh.material;\n meshClipped.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.GUTTER_PATIOS, views: views };\n\n let gutterGroup = this.utils.createGutterGroupWithMesh(meshClipped, this.geo_gutterCap,\n gutterLength, new Vector3(offsetXL, offsetY, offsetZ), new Vector3(-this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue), 0, 0),\n views, 1, false, false);\n\n this.roofGroup.add(gutterGroup);\n }\n else if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE){\n {\n let gutterGroup = this.utils.createGutterGroup(this.gutterInfo, this.geo_gutterCap,\n gutterLength, new Vector3(offsetXL, offsetY, offsetZ), new Vector3(-this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue), 0, 0),\n views, 1, false, true, this.csgCutGutterLeft1, this.roofGroup);\n\n this.roofGroup.add(gutterGroup);\n }\n \n }\n else if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE){\n {\n let gutterGroup = this.utils.createGutterGroup(this.gutterInfo, this.geo_gutterCap,\n gutterLength, new Vector3(offsetXL, offsetY, offsetZ), new Vector3(-this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue), 0, 0),\n views, 1, true, false, this.csgCutGutterRight1, this.roofGroup);\n\n this.roofGroup.add(gutterGroup);\n }\n }\n else{\n let gutterGroup = this.utils.createGutterGroup(this.gutterInfo, this.geo_gutterCap,\n gutterLength, new Vector3(offsetXL, offsetY, offsetZ), new Vector3(-this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue), 0, 0),\n views, 1, true, true);\n this.roofGroup.add(gutterGroup);\n }\n }\n \n public addGutterAngelRakecut(){\n if(this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.ANGLE && this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.ANGLE){\n return;\n }\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n let exLength = 300\n let rc_offsetXL = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n let rc_offsetXR = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n const rc_offsetZL = (this.APP.sldFrontOverhang.currentValue\n + this.APP.sldMultiSpan.currentValue\n + this.APP.sldSpan.currentValue\n - this.APP.sldLeftCutVertical.currentValue\n - CONST.GUTTER_ROOF_OFFSET_Z) / this.utils.cos(this.APP.sltRoofPitch.currentValue);\n const rc_offsetZR = (this.APP.sldFrontOverhang.currentValue\n + this.APP.sldMultiSpan.currentValue\n + this.APP.sldSpan.currentValue\n - this.APP.sldRightCutVertical.currentValue\n - CONST.GUTTER_ROOF_OFFSET_Z) / this.utils.cos(this.APP.sltRoofPitch.currentValue);\n const rc_offsetY = 0;\n\n\n let rc_rotYL = Math.atan(this.APP.sldLeftCutVertical.currentValue / this.APP.sldLeftCutHorizontal.currentValue);\n let rc_lengthL = exLength + Math.sqrt(Math.pow(this.APP.sldLeftCutVertical.currentValue, 2) + Math.pow(this.APP.sldLeftCutHorizontal.currentValue, 2));\n let rc_rotYR = Math.atan(this.APP.sldRightCutVertical.currentValue / this.APP.sldRightCutHorizontal.currentValue);\n let rc_lengthR = exLength + Math.sqrt(Math.pow(this.APP.sldRightCutVertical.currentValue, 2) + Math.pow(this.APP.sldRightCutHorizontal.currentValue, 2));\n\n if(this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE && this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE){\n let gutterRakecutGroupLeft = this.utils.createGutterGroup(this.gutterRakecutLeftInfo, this.geo_gutterCap,\n rc_lengthL, new Vector3(rc_offsetXL, rc_offsetY, rc_offsetZL), new Vector3(0, -rc_rotYL, 0), views, 1, true, false,\n this.csgCutGutterLeft2, this.roofGroup);\n let gutterRakecutGroupRight = this.utils.createGutterGroup(this.gutterRakecutRightInfo, this.geo_gutterCap,\n rc_lengthR, new Vector3(rc_offsetXR, rc_offsetY, rc_offsetZR), new Vector3(0, rc_rotYR, 0), views, 1, true, false,\n this.csgCutGutterRight2, this.roofGroup);\n\n this.roofGroup.add(gutterRakecutGroupLeft, gutterRakecutGroupRight);\n }\n else{\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n let gutterRakecutGroup = this.utils.createGutterGroup(this.gutterRakecutLeftInfo, this.geo_gutterCap,\n rc_lengthL, new Vector3(rc_offsetXL, rc_offsetY, rc_offsetZL), new Vector3(0, -rc_rotYL, 0), views, 1, true, false,\n this.csgCutGutterLeft2, this.roofGroup);\n\n this.roofGroup.add(gutterRakecutGroup);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n let gutterRakecutGroup = this.utils.createGutterGroup(this.gutterRakecutRightInfo, this.geo_gutterCap,\n rc_lengthR, new Vector3(rc_offsetXR, rc_offsetY, rc_offsetZR), new Vector3(0, rc_rotYR, 0), views, 1, true, false,\n this.csgCutGutterRight2, this.roofGroup);\n\n this.roofGroup.add(gutterRakecutGroup);\n }\n }\n }\n public addGutterStepRakecut() {\n if(this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.STEP && this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.STEP){\n return;\n }\n\n let offsetXL = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n let offsetXR = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n const offsetZL = (this.APP.sldFrontOverhang.currentValue\n + this.APP.sldMultiSpan.currentValue\n + this.APP.sldSpan.currentValue\n - this.APP.sldLeftCutVertical.currentValue\n - CONST.GUTTER_ROOF_OFFSET_Z) / this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n const offsetZR = (this.APP.sldFrontOverhang.currentValue\n + this.APP.sldMultiSpan.currentValue\n + this.APP.sldSpan.currentValue\n - this.APP.sldRightCutVertical.currentValue\n - CONST.GUTTER_ROOF_OFFSET_Z) / this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n const offsetY = 0;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n //Step rakecut\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n let gutterLength = this.APP.sldLeftCutHorizontal.currentValue;\n let gutterHor = this.utils.createGutterGroup(this.gutterInfo, this.geo_gutterCap, gutterLength, \n new Vector3(offsetXL, offsetY, offsetZL),\n new Vector3(0, 0, 0),\n views, 1, true, true);\n \n this.roofGroup.add(gutterHor);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n let gutterLength = this.APP.sldRightCutHorizontal.currentValue;\n let gutterHor = this.utils.createGutterGroup(this.gutterInfo, this.geo_gutterCap, gutterLength, \n new Vector3(offsetXR - this.APP.sldRightCutHorizontal.currentValue, offsetY, offsetZR),\n new Vector3(0, 0, 0),\n views, 1, true, true);\n \n this.roofGroup.add(gutterHor);\n }\n }\n\n private getHeightByRoofPitch(userDataPos: any): number {\n if (userDataPos.isSpan) {\n return this.utils.tan(this.APP.sltRoofPitch.currentValue) * this.APP.sldSpan.currentValue;\n } else if (userDataPos.isMultiSpan) {\n return this.utils.tan(this.APP.sltRoofPitch.currentValue) * (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue);\n } else {\n return this.utils.tan(this.APP.sltRoofPitch.currentValue) * this.roofLength;\n }\n }\n public destroy(): void {\n this.unregisterEvent();\n }\n uiCHangedDefer(previousValue: number, currentValue: number) {\n if (this.APP.sltCutOut.currentValue == 1) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => { this.load() }, this.deferTimeout);\n }\n else {\n this.load();\n }\n }\n public uiChanged(preVal: number, curVal: number): void {\n this.load();\n }\n public onColorChanged() {\n if(this.utils && this.roofInfo.geometry){\n this.utils.changeGeoColor(this.roofInfo.geometry, new Vector3(0, 1, 0), UI.roofColor.toString());\n }\n }\n private registerEvent(): void {\n this.eventHandleId = this.onColorChanged.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sltColourRoof\n ];\n this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n this.controlsToRegisterEvent2 = [\n this.APP.sltRoofSheetingType,\n this.APP.sltRoofThickness,\n this.APP.sltBargeType,\n this.APP.sltDripBarge,\n this.APP.sltGutterType,\n this.APP.sltReceiverType\n ];\n this.controlsToRegisterEvent2.forEach(c => c.addAction(this.objectSizeChangedHandle));\n }\n private unregisterEvent(): void {\n this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n this.controlsToRegisterEvent = undefined;\n this.controlsToRegisterEvent2.forEach(c => c.removeAction(this.objectSizeChangedHandle));\n this.controlsToRegisterEvent2 = undefined;\n }\n private objectSizeChanged(preVal: number, curVal: number) {\n this.optimize().then(() => { this.load() });\n }\n}\n\n","import { Scene, Mesh, BufferGeometry, Vector3, Object3D, Color, Material, Plane, Geometry, LineSegments } from \"three\";\nimport { Util } from \"./utils\";\nimport { HomeComponent as AppComponent } from 'src/app-ribspan/containers/home/home.component';\nimport { GeometryManager } from \"./geometry.manager\";\nimport { MaterialManager } from \"./material.manager\";\nimport { GeometryInfo, Printing2DLine, ViewType, LineType, Printing2DGeometry, Printing2DGeometryType } from 'src/app/core/models';\nimport { GEOMETRY_TYPE } from 'src/app/app.config';\n\nexport class FasciaManager {\n private scene: Scene;\n private APP: AppComponent;\n private material: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private geo_fasciaW1: BufferGeometry;\n private geo_fasciaW2: BufferGeometry;\n private geo_fasciaL1: BufferGeometry;\n\n // private matW1: Material;\n // private clippingPlaneW1: Plane;\n\n constructor() {\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n }\n\n public init(app: AppComponent): Promise{\n return new Promise((resolve, reject) => {\n this.APP = app;\n this.scene = app.scene;\n this.material = MaterialManager.Instance().FASCIA.clone();\n //this.matW1 = MaterialManager.Instance().EAVE.clone();\n\n app.sldExistingWallHeight.addAction(this.uiChanged.bind(this));\n app.sldEaveWidth.addAction(this.uiChanged.bind(this));\n app.sldFasciaDepth.addAction(this.uiChanged.bind(this));\n app.sldExistingLength.addAction(this.uiChanged.bind(this));\n app.sldExistingLength2.addAction(this.uiChanged.bind(this));\n app.sldExistingWidth1.addAction(this.uiChanged.bind(this));\n app.sldExistingWidth2.addAction(this.uiChanged.bind(this));\n app.sltExistingType.addAction(this.uiChanged.bind(this));\n app.sltStructureType.addAction(this.uiChanged.bind(this));\n\n resolve();\n });\n }\n public optimize() : Promise{\n return new Promise((resolve, reject) => {\n let translateWidth = this.geometryManager.FASCIA.FASCIA.width/2;\n let translateHeight = this.geometryManager.FASCIA.FASCIA.height/2;\n let translateLength = this.geometryManager.FASCIA.FASCIA.length/2;\n \n this.geo_fasciaW1 = this.geometryManager.FASCIA.FASCIA.geometry\n .clone()\n .translate(translateWidth,translateHeight,translateLength);\n\n this.geo_fasciaL1 = this.geometryManager.FASCIA.FASCIA.geometry\n .clone()\n .rotateY(Math.PI/2)\n .translate(0,translateHeight,-translateWidth)\n \n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.FASCIA));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == 'FASCIA_OUTLINE'));\n\n // if(this.APP.sldExistingLength2.currentValue == 0){\n // this.clippingPlaneW1 = new Plane(new Vector3(0,0,-1), this.APP.sldExistingWidth1.currentValue/2);\n // this.matW1.clippingPlanes = [this.clippingPlaneW1];\n // }\n // else{\n // this.matW1.clippingPlanes = [];\n // }\n\n if(this.APP.sltStructureType.currentValue == 4){\n resolve();\n return;\n }\n\n this.addFascia({length1: true});\n if(this.APP.sldExistingLength2.currentValue > 0){\n this.addFascia({length2: true});\n }\n if(this.APP.sldExistingWidth1.currentValue >= this.APP.sldEaveWidth.currentValue){\n this.addFascia({width1: true});\n }\n if(this.APP.sldExistingWidth2.currentValue >= this.APP.sldEaveWidth.currentValue){\n this.addFascia({width2: true});\n }\n\n //this.getOutLines();\n resolve();\n });\n }\n\n public getOutLines(): Printing2DGeometry{\n let objs = this.scene.children.filter(o => o.userData.type == GEOMETRY_TYPE.FASCIA );\n let lsGeometries: Printing2DLine[] = [];\n\n for(let o of objs){ \n let outlineGeo = this.utils.getOutlineGeometryFromMesh((o as Mesh), 10);\n outlineGeo.translate(o.position.x, o.position.y + 5000, o.position.z);\n\n // var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"FASCIA_OUTLINE\"};\n // this.scene.add( line );\n\n let simplifiedGeo = this.simplifyGeo(outlineGeo);\n lsGeometries.push({ \n objectType: o.userData.type,\n vertices: simplifiedGeo.vertices, \n views: o.userData.views\n });\n }\n\n return { lines: lsGeometries, texts: [] };\n }\n public simplifyGeo(geo: BufferGeometry): Geometry{\n let simplifiedGeo = new Geometry();\n let vertices = geo.getAttribute('position').array;\n for(let i = 0; i < vertices.length; i+=3){\n simplifiedGeo.vertices.push(new Vector3(vertices[i], vertices[i+1] - 5000 , vertices[i+2]));\n }\n return simplifiedGeo;\n }\n \n public addFascia(userDataPos: any){\n let mesh: Mesh;\n \n let offsetX = this.APP.sldExistingLength.currentValue/2 - this.APP.sldEaveWidth.currentValue;\n let offsetY = this.APP.sldExistingWallHeight.currentValue + this.geometryManager.EAVE.EAVE.height;\n let offsetZ = this.APP.sldExistingWidth1.currentValue/2;\n let scaleX = this.APP.sldExistingLength.currentValue/this.geometryManager.FASCIA.FASCIA.length;\n let scaleY = this.APP.sldFasciaDepth.currentValue/this.geometryManager.FASCIA.FASCIA.height;\n let scaleZ = (this.APP.sldExistingWidth1.currentValue + this.geometryManager.FASCIA.FASCIA.width)/this.geometryManager.FASCIA.FASCIA.length;\n \n\n if(userDataPos.width1){\n if(this.APP.sldExistingLength2.currentValue <= 0){\n scaleZ = (this.APP.sldExistingWidth1.currentValue - this.APP.sldEaveWidth.currentValue + this.geometryManager.FASCIA.FASCIA.width)/this.geometryManager.FASCIA.FASCIA.length;\n if(scaleZ <= 0)\n scaleZ = 0.01;\n }\n\n let views = [ \n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }\n ];\n\n if(this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3){\n mesh = new Mesh(this.geo_fasciaW1, this.material);\n mesh.userData = { type: GEOMETRY_TYPE.FASCIA, position: userDataPos, views: views };\n mesh.position.setX(-offsetX-this.geometryManager.FASCIA.FASCIA.width);\n mesh.position.setY(offsetY);\n mesh.position.setZ(-offsetZ + this.APP.sldEaveWidth.currentValue - this.geometryManager.FASCIA.FASCIA.width);\n mesh.scale.set(1,scaleY,scaleZ);\n this.scene.add(mesh);\n }\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n mesh = new Mesh(this.geo_fasciaW1, this.material);\n mesh.userData = { type: GEOMETRY_TYPE.FASCIA, position: userDataPos, views: views };\n mesh.position.setX(offsetX);\n mesh.position.setY(offsetY);\n mesh.position.setZ(-offsetZ + this.APP.sldEaveWidth.currentValue - this.geometryManager.FASCIA.FASCIA.width);\n mesh.scale.set(1,scaleY,scaleZ);\n this.scene.add(mesh);\n }\n }\n else if(userDataPos.width2){\n let _offsetX = this.APP.sldExistingLength.currentValue/2 + this.APP.sldExistingLength2.currentValue - this.APP.sldEaveWidth.currentValue;\n let _offsetY = this.APP.sldExistingWallHeight.currentValue + this.geometryManager.EAVE.EAVE.height;\n let _offsetZ = this.APP.sldExistingWidth1.currentValue/2 + this.APP.sldEaveWidth.currentValue - this.geometryManager.FASCIA.FASCIA.width;\n \n let _scaleY = this.APP.sldFasciaDepth.currentValue/this.geometryManager.FASCIA.FASCIA.height;\n let _scaleZ = (this.APP.sldExistingWidth2.currentValue - this.APP.sldEaveWidth.currentValue + this.geometryManager.FASCIA.FASCIA.width)/this.geometryManager.FASCIA.FASCIA.length;\n\n let views = [ \n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }\n ];\n\n if(this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3){\n mesh = new Mesh(this.geo_fasciaW1, this.material);\n mesh.userData = { type: GEOMETRY_TYPE.FASCIA, position: userDataPos, views: views };\n mesh.position.set(-(_offsetX + this.geometryManager.FASCIA.FASCIA.width), _offsetY, _offsetZ);\n mesh.scale.set(1,_scaleY,_scaleZ);\n this.scene.add(mesh);\n }\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n mesh = new Mesh(this.geo_fasciaW1, this.material);\n mesh.userData = { type: GEOMETRY_TYPE.FASCIA, position: userDataPos, views: views };\n mesh.position.set(_offsetX, _offsetY, _offsetZ);\n mesh.scale.set(1,_scaleY,_scaleZ);\n this.scene.add(mesh);\n }\n }\n else if(userDataPos.length1){\n let offsetX = 0;\n if(this.APP.sldExistingWidth1.currentValue >= this.APP.sldEaveWidth.currentValue){\n if(this.APP.sltExistingType.currentValue == 1){\n offsetX = this.APP.sldEaveWidth.currentValue/2;\n scaleX = (this.APP.sldExistingLength.currentValue - this.APP.sldEaveWidth.currentValue)/this.geometryManager.FASCIA.FASCIA.length;\n }\n else if(this.APP.sltExistingType.currentValue == 2){\n offsetX = -this.APP.sldEaveWidth.currentValue/2;\n scaleX = (this.APP.sldExistingLength.currentValue - this.APP.sldEaveWidth.currentValue)/this.geometryManager.FASCIA.FASCIA.length;\n }\n else if(this.APP.sltExistingType.currentValue == 3){\n offsetX = 0;\n scaleX = (this.APP.sldExistingLength.currentValue - this.APP.sldEaveWidth.currentValue*2)/this.geometryManager.FASCIA.FASCIA.length;\n }\n }\n\n let views = [ \n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n mesh = new Mesh(this.geo_fasciaL1, this.material);\n mesh.userData = { type: GEOMETRY_TYPE.FASCIA, position: userDataPos, views: views };\n mesh.position.setX(offsetX);\n mesh.position.setY(offsetY);\n mesh.position.setZ(-offsetZ+this.APP.sldEaveWidth.currentValue);\n mesh.scale.set(scaleX,scaleY,1);\n this.scene.add(mesh);\n }\n else if(userDataPos.length2){\n let _offsetX = this.APP.sldExistingLength.currentValue/2 + this.APP.sldExistingLength2.currentValue/2 - this.APP.sldEaveWidth.currentValue/2;\n let _offsetY = this.APP.sldExistingWallHeight.currentValue + this.geometryManager.EAVE.EAVE.height;\n let _offsetZ = this.APP.sldExistingWidth1.currentValue/2 + this.APP.sldEaveWidth.currentValue;\n let _scaleX = (this.APP.sldExistingLength2.currentValue + this.APP.sldEaveWidth.currentValue)/this.geometryManager.FASCIA.FASCIA.length;\n let _scaleY = this.APP.sldFasciaDepth.currentValue/this.geometryManager.FASCIA.FASCIA.height;\n\n if(this.APP.sldExistingWidth2.currentValue >= this.APP.sldEaveWidth.currentValue){\n _offsetX = this.APP.sldExistingLength.currentValue/2 + this.APP.sldExistingLength2.currentValue/2 - this.APP.sldEaveWidth.currentValue;\n _scaleX = this.APP.sldExistingLength2.currentValue/this.geometryManager.FASCIA.FASCIA.length;\n }\n\n let views = [ \n // { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n // { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n if(this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3){\n views.push({ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS });\n mesh = new Mesh(this.geo_fasciaL1, this.material);\n mesh.userData = { type: GEOMETRY_TYPE.FASCIA, position: userDataPos, views: views };\n mesh.position.setX(-_offsetX);\n mesh.position.setY(_offsetY);\n mesh.position.setZ(_offsetZ);\n mesh.scale.set(_scaleX,_scaleY,1);\n this.scene.add(mesh);\n }\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n views.push({ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS });\n mesh = new Mesh(this.geo_fasciaL1, this.material);\n mesh.userData = { type: GEOMETRY_TYPE.FASCIA, position: userDataPos, views: views };\n mesh.position.setX(_offsetX);\n mesh.position.setY(_offsetY);\n mesh.position.setZ(_offsetZ);\n mesh.scale.set(_scaleX,_scaleY,1);\n this.scene.add(mesh);\n }\n }\n \n \n \n }\n\n public uiChanged(preVal: number, curVal): void {\n this.load();\n }\n}\n","import {\n DIMENSION_LABEL_TYPE,\n DIMENSION_LOCATION,\n GEOMETRY_TYPE,\n} from \"src/app/app.config\";\nimport {\n FIT_DIMENSION,\n PANEL_DIRECTION,\n RAKECUT_TYPE,\n} from \"src/app/app.constants\";\nimport Dimension, {\n AddDimensionOptions,\n} from \"src/app-ribspan/models/Dimension\";\nimport { environment } from \"src/environments/environment\";\nimport {\n Box3,\n BoxBufferGeometry,\n FontLoader,\n Geometry,\n Group,\n Line,\n Line3,\n LineBasicMaterial,\n Material,\n Matrix4,\n Mesh,\n Object3D,\n Scene,\n TextBufferGeometry,\n Vector3,\n} from \"three\";\nimport { FasciaManager } from \".\";\nimport {\n HomeComponent as AppComponent,\n HomeComponent,\n} from \"../../containers/home/home.component\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport {\n GeometryInfo,\n IBay,\n LineType,\n Print2DText,\n Printing2DGeometry,\n Printing2DLine,\n ViewType,\n} from \"src/app/core/models\";\nimport { UI } from \"../ui\";\nimport { Util } from \"../utils\";\n\nexport class DimensionManager {\n private scene: Scene;\n private APP: AppComponent;\n private MANAGER: FasciaManager;\n public listText: THREE.Object3D[] = [];\n private utils: Util;\n\n private eventHandleId: any;\n\n private material: Material;\n\n private materialManager: MaterialManager;\n\n private dimensionPatiosFrontBottom: Object3D;\n private dimensionPatiosFrontRight: Object3D;\n\n private dimensionPatiosRightBottom: Object3D;\n private dimensionPatiosRightLeft: Object3D;\n private dimensionPatiosRightRight: Object3D;\n\n private dimensionPatiosLeftBottom: Object3D;\n private dimensionPatiosLeftRight: Object3D;\n private dimensionPatiosLeftLeft: Object3D;\n\n private dimensionPatiosPlanRight: Object3D;\n private dimensionPatiosPlanBottom: Object3D;\n private dimensionPatiosPlanLeft: Object3D;\n\n private dimensionPlanMiddle: Object3D;\n private dimensionPlanMidleLeft: Object3D;\n\n private dimensionPatiosLowerHeightDim: Object3D;\n\n private lineCapGeo: GeometryInfo;\n private lineGeo: GeometryInfo;\n private textGeo: TextBufferGeometry;\n\n private dimensionDistance = 1500;\n private dimensionDistance2 = 500;\n\n private textDistance = 5000;\n\n private totalBaySize: number;\n private box: Box3;\n\n private font: any;\n private textParameter: any;\n private isReady = false;\n private controlsToRegisterEvent: Array;\n private options: AddDimensionOptions;\n private startPos: Vector3;\n private startMatrix: Matrix4;\n private startBayLength: number;\n\n private geometryManager: GeometryManager;\n private offsetBraketZ: number = 0;\n\n constructor(app: AppComponent, manager: FasciaManager) {\n this.utils = new Util();\n this.materialManager = MaterialManager.Instance();\n this.APP = app;\n this.MANAGER = manager;\n this.scene = this.APP.scene;\n this.material = MaterialManager.Instance().DIMENSION_TEXT;\n this.geometryManager = GeometryManager.Instance();\n //this.registerEvent();\n }\n\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n this.lineGeo = this.geometryManager.getDimensionLine();\n this.lineCapGeo = this.geometryManager.getDimensionCap();\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.unload();\n\n var loader = new FontLoader();\n\n this.dimensionPatiosFrontBottom = new Group();\n this.dimensionPatiosFrontBottom.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n // this.dimensionPatiosFrontBottom.rotation.set(0, Math.PI, 0);\n this.dimensionPatiosFrontBottom.visible = false;\n\n this.dimensionPatiosFrontRight = new Group();\n this.dimensionPatiosFrontRight.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosFrontRight.rotation.set(0, 0, -Math.PI / 2);\n this.dimensionPatiosFrontRight.visible = false;\n\n this.dimensionPatiosRightBottom = new Group();\n this.dimensionPatiosRightBottom.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosRightBottom.rotation.set(0, -Math.PI / 2, 0);\n this.dimensionPatiosRightBottom.visible = false;\n\n this.dimensionPatiosRightLeft = new Group();\n this.dimensionPatiosRightLeft.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosRightLeft.rotation.set(0, -Math.PI / 2, -Math.PI / 2);\n this.dimensionPatiosRightLeft.visible = false;\n\n this.dimensionPatiosRightRight = new Group();\n this.dimensionPatiosRightRight.rotation.set(\n 0,\n -Math.PI / 2,\n -Math.PI / 2\n );\n this.dimensionPatiosRightRight.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosRightRight.visible = false;\n\n this.dimensionPatiosLowerHeightDim = new Group();\n this.dimensionPatiosLowerHeightDim.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosLowerHeightDim.rotation.set(0, 0, Math.PI / 2);\n\n this.dimensionPatiosLeftBottom = new Group();\n this.dimensionPatiosLeftBottom.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosLeftBottom.rotation.set(0, -Math.PI / 2, 0);\n this.dimensionPatiosLeftBottom.visible = false;\n\n this.dimensionPatiosLeftRight = new Group();\n this.dimensionPatiosLeftRight.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosLeftRight.rotation.set(Math.PI / 2, -Math.PI / 2, 0);\n this.dimensionPatiosLeftRight.visible = false;\n\n this.dimensionPatiosLeftLeft = new Group();\n this.dimensionPatiosLeftLeft.rotation.set(0, -Math.PI / 2, Math.PI / 2);\n this.dimensionPatiosLeftLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftLeft.visible = false;\n\n this.dimensionPatiosPlanRight = new Group();\n this.dimensionPatiosPlanRight.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosPlanRight.rotation.set(\n -Math.PI / 2,\n Math.PI,\n -Math.PI / 2\n );\n\n this.dimensionPatiosPlanBottom = new Group();\n this.dimensionPatiosPlanBottom.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosPlanBottom.rotation.set(-Math.PI / 2, 0, 0);\n\n this.dimensionPatiosPlanLeft = new Group();\n this.dimensionPatiosPlanLeft.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n position: { left: true },\n };\n this.dimensionPatiosPlanLeft.rotation.set(-Math.PI / 2, 0, -Math.PI / 2);\n\n this.dimensionPlanMiddle = new Group();\n this.dimensionPlanMidleLeft = new Group();\n\n //testing\n // [\n // this.dimensionPatiosFrontBottom,\n // this.dimensionPatiosFrontRight,\n // this.dimensionPatiosRightBottom,\n // this.dimensionPatiosRightLeft,\n // this.dimensionPatiosRightRight,\n // this.dimensionPatiosLeftBottom,\n // this.dimensionPatiosLeftRight,\n // this.dimensionPatiosLeftLeft,\n // ].forEach(g => { g.visible = true });\n\n this.scene.add(this.dimensionPatiosPlanRight);\n this.scene.add(this.dimensionPatiosPlanLeft);\n this.scene.add(this.dimensionPatiosFrontRight);\n this.APP.patiosManager.patiosGroup.add(\n this.dimensionPatiosFrontBottom,\n //this.dimensionPatiosFrontRight,\n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom,\n this.dimensionPatiosLeftRight,\n this.dimensionPatiosLeftLeft,\n this.dimensionPatiosPlanBottom,\n this.dimensionPlanMiddle,\n this.dimensionPatiosLowerHeightDim,\n this.dimensionPlanMidleLeft\n );\n\n loader.load(\n environment.modelBaseUrl +\n \"/assets/fonts/helvetiker_regular.typeface.json\",\n (font) => {\n this.font = font;\n\n this.textParameter = {\n font: this.font,\n size: 200,\n height: 5,\n curveSegments: 10,\n };\n this.options = {\n container: HomeComponent.ins.scene,\n start: new Vector3(),\n end: new Vector3(),\n linePos: new Vector3(),\n views: [],\n allowDrag: true,\n textParameter: this.textParameter,\n textPos: new Vector3(),\n labelType: null,\n fitZ: 10,\n hasTextClone: false,\n axis: \"x\",\n lineLength: 0,\n subtype: null,\n textUserData: null,\n onDragCallback: this.onDimDrag.bind(this),\n onDragStartCallback: this.onDimDragStart.bind(this),\n };\n\n this.isReady = true;\n this.draw();\n resolve();\n }\n );\n });\n }\n\n public unload() {\n this.scene.remove(this.dimensionPatiosPlanRight);\n this.scene.remove(this.dimensionPatiosPlanLeft);\n this.scene.remove(this.dimensionPatiosFrontRight);\n if (this.APP.patiosManager && this.APP.patiosManager.patiosGroup) {\n this.APP.patiosManager.patiosGroup.remove(\n this.dimensionPatiosFrontBottom,\n //this.dimensionPatiosFrontRight,\n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom,\n this.dimensionPatiosLeftRight,\n this.dimensionPatiosLeftLeft,\n this.dimensionPatiosPlanBottom,\n this.dimensionPlanMiddle,\n this.dimensionPatiosLowerHeightDim,\n this.dimensionPlanMidleLeft\n );\n }\n }\n\n public draw() {\n if (!this.isReady) {\n return;\n }\n // this.dimensionPatiosPlanBottom.children = [];\n // this.dimensionPatiosPlanRight.children = [];\n // this.dimensionPatiosPlanLeft.children = [];\n this.dimensionPatiosLowerHeightDim.children =\n this.dimensionPatiosLowerHeightDim.children.filter(\n (el) => el.userData?.groupType == DIMENSION_LABEL_TYPE.LOWER_HEIGHT_DIM\n );\n this.dimensionPatiosPlanBottom.children =\n this.dimensionPatiosPlanBottom.children.filter(\n (el) =>\n el.userData?.groupType ==\n DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL ||\n el.userData?.groupType ==\n DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.LEFT_OVERHANG ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.RIGHT_OVERHANG ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY\n );\n this.dimensionPatiosPlanRight.children =\n this.dimensionPatiosPlanRight.children.filter(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.MULTI_SPAN ||\n el.userData?.groupType ==\n DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.FRONT_OVERHANG ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.BACK_OVERHANG\n );\n this.dimensionPatiosPlanLeft.children =\n this.dimensionPatiosPlanLeft.children.filter(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL\n );\n this.dimensionPatiosFrontBottom.children = [];\n this.dimensionPatiosFrontRight.children = [];\n this.dimensionPatiosLeftBottom.children = [];\n this.dimensionPatiosLeftRight.children = [];\n this.dimensionPatiosLeftLeft.children = [];\n this.dimensionPatiosRightBottom.children = [];\n this.dimensionPatiosRightLeft.children = [];\n this.dimensionPatiosRightRight.children = [];\n this.dimensionPlanMiddle.children = [];\n this.dimensionPlanMidleLeft.children = [];\n\n //this.scene.remove(...this.scene.children.filter(o => o.userData.type == 'BOXHELPER'));\n\n this.offsetBraketZ = 0;\n if (+UI.upstandBraketType !== 0) {\n this.offsetBraketZ =\n this.MANAGER.postAndBeamManager.geoBraket_2.height / 4;\n }\n\n this.totalBaySize = 0;\n for (let b of this.APP.dialogEditBay.listBay) {\n this.totalBaySize += b.value;\n }\n\n this.box = this.utils.getSceneBox();\n this.drawDimensionLowerHeightDim();\n this.drawDimensionPatiosPlanBottom();\n this.drawDimensionPatiosPlanRight();\n this.drawDimensionPatiosPlanLeft();\n\n this.drawDimensionPatiosFrontBottom();\n this.drawDimensionPatiosFrontRight();\n\n this.drawDimensionPatiosLeftBottom();\n this.drawDimensionPatiosLeftRight();\n this.drawDimensionPatiosLeftLeft();\n\n this.drawDimensionPatiosRightBottom();\n this.drawDimensionPatiosRightLeft();\n this.drawDimensionPatiosRightRight();\n\n this.drawDimensionMidle();\n this.drawDimensionMidleLeft();\n\n // var offset = this.calulateBoundingBox();\n // this.dimensionPatiosPlanRight.position.setX(offset.right);\n // this.dimensionPatiosPlanLeft.position.setX(offset.left);\n // this.dimensionPatiosPlanBottom.position.setZ(offset.front);\n\n // let existingHouseDimLeft = this.APP.scene.children.find(c => c.userData.type == GEOMETRY_TYPE.DIMENSION && c.userData.position?.planLeft);\n // if (existingHouseDimLeft && existingHouseDimLeft.position.x > offset.left) {\n // existingHouseDimLeft.position.setX(offset.left - 500);\n // }\n this.APP.dimensionManager.draw();\n }\n\n private drawDimensionLowerHeightDim() {\n let offsetYBraket = 0;\n if (+UI.upstandBraketType !== 0) {\n offsetYBraket =\n +UI.upstandBraketType +\n this.MANAGER.postAndBeamManager.beamInfo.height +\n this.MANAGER.postAndBeamManager.geoBraket_1.width *\n this.utils.tan(UI.patiosPitch);\n }\n if (UI.isUpFasciaUpstandardBracket) {\n offsetYBraket -=\n this.MANAGER.postAndBeamManager.beamInfo.width *\n this.utils.tan(UI.patiosPitch);\n }\n\n const frontPostHeight =\n UI.eaveHeight -\n this.getHeightByRoofPitch(true) -\n this.MANAGER.postAndBeamManager.beamInfo.height +\n offsetYBraket;\n\n const offsetZFrontPos =\n UI.span + UI.multiSpan + UI.eaveWidth + FIT_DIMENSION;\n\n this.dimensionPatiosLowerHeightDim.position.set(\n 0,\n frontPostHeight / 2,\n offsetZFrontPos\n );\n\n let textStr = this.utils.getDimensionValue(frontPostHeight);\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: frontPostHeight,\n container: this.dimensionPatiosLowerHeightDim,\n views: [],\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, 200, 0),\n labelType: DIMENSION_LABEL_TYPE.LOWER_HEIGHT_DIM,\n textUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: [],\n },\n allowDrag: false,\n };\n let dimBay = this.dimensionPatiosLowerHeightDim.children.find(\n (el) => el.userData?.groupType == DIMENSION_LABEL_TYPE.LOWER_HEIGHT_DIM\n ) as Dimension;\n if (!dimBay) {\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n\n private getHeightByRoofPitch(isSpan: boolean): number {\n if (isSpan) {\n if (UI.isUpFasciaUpstandardBracket) {\n return -this.utils.tan(UI.patiosPitch) * UI.span;\n } else {\n return this.utils.tan(UI.patiosPitch) * UI.span;\n }\n } else {\n if (UI.isUpFasciaUpstandardBracket) {\n return -this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan);\n } else {\n return this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan);\n }\n }\n }\n\n private drawDimensionMidleLeft() {\n let offsetX = 0;\n let offsetZ = -this.APP.sldExistingWidth1.currentValue / 2 + 500;\n let origin = new Vector3(0, 0, 0);\n let head = new Vector3(0, 0, 1000);\n let hand1 = new Vector3(-50, 0, 950);\n let hand2 = new Vector3(50, 0, 950);\n\n //arrow\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n //let material = new LineBasicMaterial({ color: 0x0000ff });\n let geoLine = new Geometry();\n geoLine.vertices.push(origin);\n geoLine.vertices.push(head);\n\n geoLine.vertices.push(head);\n geoLine.vertices.push(hand1);\n\n geoLine.vertices.push(hand1);\n geoLine.vertices.push(hand2);\n\n geoLine.vertices.push(hand2);\n geoLine.vertices.push(head);\n let dim = new Line(geoLine);\n dim.userData = { type: \"Arrow\", views: views };\n\n //text of degree\n let textStr = \"Panel direction\";\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(\n this.textGeo,\n MaterialManager.Instance().DIMENSION_TEXT\n );\n\n text.userData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, 0, 0),\n };\n text.position.setZ(500);\n text.position.setX(200);\n\n dim.visible = false;\n text.visible = false;\n\n this.dimensionPlanMidleLeft.add(dim);\n this.dimensionPlanMidleLeft.add(text);\n\n if (\n this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT\n ) {\n text.position.set(-100, 0, 500);\n this.dimensionPlanMidleLeft.rotation.set(0, -Math.PI / 2, 0);\n this.dimensionPlanMidleLeft.position.set(offsetX + 500, 0, offsetZ);\n } else {\n this.dimensionPlanMidleLeft.rotation.set(0, Math.PI / 2, 0);\n this.dimensionPlanMidleLeft.position.set(-offsetX - 500, 0, offsetZ);\n }\n }\n private drawDimensionMidle() {\n let offsetZ =\n this.APP.sldSpan.currentValue / 2 +\n this.APP.sldMultiSpan.currentValue / 2 -\n this.APP.sldExistingWidth1.currentValue / 2;\n let origin = new Vector3(0, 0, 0);\n let head = new Vector3(0, 0, 1000);\n let hand1 = new Vector3(-50, 0, 950);\n let hand2 = new Vector3(50, 0, 950);\n\n if (UI.isUpFasciaUpstandardBracket) {\n origin = new Vector3(0, 0, 1000);\n head = new Vector3(0, 0, 0);\n hand1 = new Vector3(-50, 0, 50);\n hand2 = new Vector3(50, 0, 50);\n }\n\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n\n let material = new LineBasicMaterial({ color: 0x0000ff });\n let geoLine = new Geometry();\n geoLine.vertices.push(origin);\n geoLine.vertices.push(head);\n\n geoLine.vertices.push(head);\n geoLine.vertices.push(hand1);\n\n geoLine.vertices.push(hand1);\n geoLine.vertices.push(hand2);\n\n geoLine.vertices.push(hand2);\n geoLine.vertices.push(head);\n let dim = new Line(geoLine, material);\n dim.userData = { type: \"Arrow\", views: views };\n\n //text of degree\n let textStr = this.APP.sltRoofPitch.currentValue + \" degree\";\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(\n this.textGeo,\n MaterialManager.Instance().DIMENSION_TEXT\n );\n text.userData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, Math.PI / 2, 0),\n };\n text.position.setZ(500);\n text.position.setX(200);\n\n dim.visible = false;\n text.visible = false;\n\n this.dimensionPlanMiddle.add(dim);\n this.dimensionPlanMiddle.add(text);\n\n this.dimensionPlanMiddle.position.set(0, 0, offsetZ);\n }\n\n private drawDimensionPatiosPlanBottom() {\n let offsetX = -this.totalBaySize / 2;\n //let offsetZ = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance2 + this.APP.sldEaveWidth.currentValue - this.APP.sldExistingWidth1.currentValue / 2;\n //if (this.APP.sldExistingWidth1.currentValue > this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) {\n // offsetZ = this.APP.sldExistingWidth1.currentValue / 2 + this.dimensionDistance2;\n //}\n\n let offsetZ =\n this.box.max.z +\n this.dimensionDistance2 +\n this.APP.sldEaveWidth.currentValue;\n\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosPlanBottom.position.setZ(offsetZ);\n\n this.dimensionPatiosPlanBottom.children =\n this.dimensionPatiosPlanBottom.children.filter(\n (el) =>\n el.userData?.groupType != DIMENSION_LABEL_TYPE.BAY ||\n (el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY &&\n el.userData?.bayNum <\n HomeComponent.ins.dialogEditBay.listBay.length)\n );\n\n for (let i = 0; i <= this.APP.dialogEditBay.listBay.length; i++) {\n let b: IBay = { index: 0, value: 0, isCut: false };\n if (i < this.APP.dialogEditBay.listBay.length) {\n b = this.APP.dialogEditBay.listBay[i];\n }\n\n if (i < this.APP.dialogEditBay.listBay.length) {\n let textStr = this.utils.getDimensionValue(b.value);\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: b.value,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(offsetX + b.value / 2, 0, 0),\n textPos: new Vector3(offsetX + b.value / 2, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.BAY,\n bayNum: i,\n textUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n position: { bottom: true },\n },\n };\n let dimBay = this.dimensionPatiosPlanBottom.children.find(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY &&\n el.userData?.bayNum == i\n ) as Dimension;\n if (!dimBay) {\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n\n offsetX += b.value;\n }\n\n //rakecut\n if (this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE) {\n let _offsetX =\n -this.APP.dialogEditBay.totalBaySize / 2 +\n this.APP.sldLeftCutHorizontal.currentValue / 2 -\n this.APP.sldLeftOverhang.currentValue;\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldLeftCutHorizontal.currentValue,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(_offsetX, 500, 0),\n textPos: new Vector3(_offsetX, 300, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL,\n subtype: GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT,\n };\n let dimRake = this.dimensionPatiosPlanBottom.children.find(\n (el) =>\n el.userData?.groupType ==\n DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL\n ) as Dimension;\n if (!dimRake) {\n new Dimension(options);\n } else {\n dimRake.update(options);\n }\n } else {\n this.dimensionPatiosPlanBottom.children =\n this.dimensionPatiosPlanBottom.children.filter(\n (el) =>\n el.userData?.groupType !=\n DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL\n );\n }\n if (this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE) {\n let _offsetX =\n this.APP.dialogEditBay.totalBaySize / 2 -\n this.APP.sldRightCutHorizontal.currentValue / 2 +\n this.APP.sldRightOverhang.currentValue;\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldRightCutHorizontal.currentValue,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(_offsetX, 500, 0),\n textPos: new Vector3(_offsetX, 500 - 200, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL,\n subtype: GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT,\n };\n let dimRake = this.dimensionPatiosPlanBottom.children.find(\n (el) =>\n el.userData?.groupType ==\n DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL\n ) as Dimension;\n if (!dimRake) {\n new Dimension(options);\n } else {\n dimRake.update(options);\n }\n } else {\n this.dimensionPatiosPlanBottom.children =\n this.dimensionPatiosPlanBottom.children.filter(\n (el) =>\n el.userData?.groupType !=\n DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL\n );\n }\n //End rakecut\n\n //Left over hang\n this.addOverhang(\n this.dimensionPatiosPlanBottom,\n offsetX,\n this.APP.sldLeftOverhang.currentValue,\n views,\n \"Left\",\n 0,\n \"z\",\n DIMENSION_LABEL_TYPE.LEFT_OVERHANG\n );\n this.addOverhang(\n this.dimensionPatiosPlanBottom,\n offsetX,\n this.APP.sldRightOverhang.currentValue,\n views,\n \"Right\",\n 0,\n \"z\",\n DIMENSION_LABEL_TYPE.RIGHT_OVERHANG\n );\n this.repositionDimension(\n this.dimensionPatiosPlanBottom,\n DIMENSION_LOCATION.PLAN_BOTTOM\n );\n }\n onDimDrag(event) {\n this.utils.handlerDimDragEvent(\n event,\n this.startPos,\n this.startMatrix,\n this.startBayLength\n );\n this.startPos = event.object.position.clone();\n }\n onDimDragStart(event) {\n this.startPos = event.object.position.clone();\n this.startMatrix = event.object.matrixWorld.clone();\n if (event.object.userData?.dimType === DIMENSION_LABEL_TYPE.BAY) {\n let bayNum = event.object.userData.bayNum;\n this.startBayLength = UI.listBay[+bayNum].value;\n }\n }\n private drawDimensionPatiosPlanRight() {\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n let offsetDimensionZ =\n this.APP.sldSpan.currentValue / 2 +\n this.APP.sldEaveWidth.currentValue -\n this.APP.sldExistingWidth1.currentValue / 2 +\n this.offsetBraketZ;\n\n let _dimensionDistane = this.dimensionDistance2;\n if (\n this.APP.sltExistingType.currentValue == 2 ||\n this.APP.sltExistingType.currentValue == 3\n ) {\n if (this.APP.sldExistingWidth1.currentValue > 0) {\n _dimensionDistane = this.dimensionDistance;\n }\n }\n\n let offsetDimensionX = this.box.max.x + this.dimensionDistance2;\n if (this.APP.sltExistingType.currentValue == 1) {\n offsetDimensionX += this.APP.sldEaveWidth.currentValue;\n }\n //let offsetDimensionX = this.totalBaySize / 2 + this.APP.patiosManager.patiosGroup.position.x + _dimensionDistane;\n //if (this.APP.sldExistingLength.currentValue / 2 > this.totalBaySize / 2) {\n // offsetDimensionX = this.APP.sldExistingLength.currentValue / 2 + _dimensionDistane;\n //}\n\n //if (this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3) {\n // offsetDimensionX += this.APP.sldExistingLength2.currentValue;\n //}\n\n this.dimensionPatiosPlanRight.position.set(\n offsetDimensionX,\n 0,\n offsetDimensionZ\n );\n let dimLength = this.APP.sldSpan.currentValue;\n\n let textStr = this.utils.getDimensionValue(this.APP.sldSpan.currentValue);\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldSpan.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.SPAN,\n hasTextClone: false,\n textUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, -Math.PI / 2, 0),\n },\n textCloneUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, -Math.PI / 2, 0),\n },\n textCloneRotation: new Vector3(0, Math.PI, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, -Math.PI, 0),\n fitZ: -10,\n };\n let dimSpan = this.dimensionPatiosPlanRight.children.find(\n (el) => el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN\n ) as Dimension;\n if (!dimSpan) {\n new Dimension(options);\n } else {\n dimSpan.update(options);\n }\n\n if (this.APP.sldMultiSpan.currentValue > 0) {\n // let offsetX = this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue;\n // - this.APP.sldExistingWidth1.currentValue/2\n // - this.APP.existingWallManager.geo_existingWallL1.width\n // - this.APP.eaveManager.backOverhang;\n\n // let scaleLength = this.APP.sldMultiSpan.currentValue / this.lineGeo.length;\n dimLength += this.APP.sldMultiSpan.currentValue;\n let textStr = this.utils.getDimensionValue(\n this.APP.sldMultiSpan.currentValue\n );\n let optionsMul: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldMultiSpan.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(\n this.APP.sldSpan.currentValue / 2 +\n this.APP.sldMultiSpan.currentValue / 2,\n 0,\n 0\n ),\n textPos: new Vector3(\n this.APP.sldSpan.currentValue / 2 +\n this.APP.sldMultiSpan.currentValue / 2,\n -200,\n 0\n ),\n labelType: DIMENSION_LABEL_TYPE.MULTI_SPAN,\n hasTextClone: false,\n textUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, -Math.PI / 2, 0),\n },\n textCloneUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, -Math.PI / 2, 0),\n },\n textCloneRotation: new Vector3(0, Math.PI, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, -Math.PI, 0),\n fitZ: -10,\n };\n let dimMul = this.dimensionPatiosPlanRight.children.find(\n (el) => el.userData?.groupType == DIMENSION_LABEL_TYPE.MULTI_SPAN\n ) as Dimension;\n if (!dimMul) {\n new Dimension(optionsMul);\n } else {\n dimMul.update(optionsMul);\n }\n } else {\n this.dimensionPatiosPlanRight.children =\n this.dimensionPatiosPlanRight.children.filter(\n (el) => el.userData?.groupType != DIMENSION_LABEL_TYPE.MULTI_SPAN\n );\n }\n\n let extraDistance = 0;\n\n //----Rake cut\n if (this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE) {\n extraDistance = 500;\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n\n let offsetZ =\n dimLength / 2 +\n UI.multiSpan / 2 +\n this.APP.sldFrontOverhang.currentValue -\n this.APP.sldRightCutVertical.currentValue / 2;\n\n let optionsRake: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldRightCutVertical.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(offsetZ, 500, 0),\n textPos: new Vector3(offsetZ, 300, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL,\n textRotation: new Vector3(0, Math.PI, 0),\n fitZ: -10,\n subtype: GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT,\n };\n let dimRake = this.dimensionPatiosPlanRight.children.find(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL\n ) as Dimension;\n if (!dimRake) {\n new Dimension(optionsRake);\n } else {\n dimRake.update(optionsRake);\n }\n } else {\n this.dimensionPatiosPlanRight.children =\n this.dimensionPatiosPlanRight.children.filter(\n (el) =>\n el.userData?.groupType !=\n DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL\n );\n }\n //----End rake cut\n\n let offsetRight =\n this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue;\n let offsetLeft = this.APP.sldSpan.currentValue / 2; // + this.APP.sldMultiSpan.currentValue;\n\n this.addOverhang(\n this.dimensionPatiosPlanRight,\n offsetRight,\n this.APP.sldFrontOverhang.currentValue,\n views,\n \"Right\",\n Math.PI,\n \"y\",\n DIMENSION_LABEL_TYPE.FRONT_OVERHANG\n );\n this.addOverhang(\n this.dimensionPatiosPlanRight,\n offsetLeft,\n this.APP.sldBackOverhang.currentValue,\n views,\n \"Left\",\n Math.PI,\n \"y\",\n DIMENSION_LABEL_TYPE.BACK_OVERHANG\n );\n this.repositionDimension(\n this.dimensionPatiosPlanRight,\n DIMENSION_LOCATION.PLAN_RIGHT,\n extraDistance\n );\n }\n private drawDimensionPatiosPlanLeft() {\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.NONE) {\n this.dimensionPatiosPlanLeft.children =\n this.dimensionPatiosPlanLeft.children.filter(\n (el) =>\n el.userData?.groupType !=\n DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL\n );\n return;\n }\n\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n\n let offsetDimensionZ =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldEaveWidth.currentValue -\n this.APP.sldExistingWidth1.currentValue / 2 -\n // - this.APP.existingWallManager.geo_existingWallL1.width\n // - this.APP.eaveManager.backOverhang\n this.APP.sldLeftCutVertical.currentValue / 2;\n\n let optionsRake: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldLeftCutVertical.currentValue,\n container: this.dimensionPatiosPlanLeft,\n views: views,\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL,\n };\n let dimRake = this.dimensionPatiosPlanLeft.children.find(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL\n ) as Dimension;\n if (!dimRake) {\n new Dimension(optionsRake);\n } else {\n dimRake.update(optionsRake);\n }\n\n //let offsetDimensionX = this.MANAGER.boundingBox.min.x - this.dimensionDistance2;\n this.dimensionPatiosPlanLeft.position.set(0, 0, offsetDimensionZ);\n this.repositionDimension(\n this.dimensionPatiosPlanLeft,\n DIMENSION_LOCATION.PLAN_LEFT\n );\n }\n private drawDimensionPatiosFrontBottom() {\n let dimOffsetY = -this.dimensionDistance2;\n this.dimensionPatiosFrontBottom.position.set(0, dimOffsetY, 0);\n\n let views = [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosPlanBottom.children.forEach((groupDim) => {\n groupDim.children\n .filter(\n (c) => c.userData.subtype != GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT\n )\n .forEach((e) => {\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.rotation.set(0, Math.PI, 0);\n dim.userData[\"rotation\"] = new Vector3(0, 0, 0);\n dim.userData[\"position\"] = { ...e.userData.position, bottom: true };\n }\n this.dimensionPatiosFrontBottom.add(dim);\n });\n });\n }\n private drawDimensionPatiosFrontRight() {\n let views = [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }];\n\n let _dimensionDistane = this.dimensionDistance2;\n if (\n this.APP.sltExistingType.currentValue == 2 ||\n this.APP.sltExistingType.currentValue == 3\n ) {\n if (this.APP.sldExistingWidth1.currentValue > 0) {\n _dimensionDistane = this.dimensionDistance;\n }\n }\n let height = this.utils.getHeightByAngle(\n this.APP.sldExistingWallHeight.currentValue,\n this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue,\n this.APP.sltRoofPitch.currentValue,\n -1\n );\n let dimOffsetX =\n this.totalBaySize / 2 +\n this.APP.patiosManager.patiosGroup.position.x +\n _dimensionDistane;\n let dimOffsetY = height / 2;\n if (this.APP.sldExistingLength.currentValue / 2 > this.totalBaySize / 2) {\n dimOffsetX =\n this.APP.sldExistingLength.currentValue / 2 + _dimensionDistane;\n }\n\n if (\n this.APP.sltExistingType.currentValue == 2 ||\n this.APP.sltExistingType.currentValue == 3\n ) {\n dimOffsetX += this.APP.sldExistingLength2.currentValue;\n }\n\n this.dimensionPatiosFrontRight.position.set(dimOffsetX, dimOffsetY, 0);\n\n //--------\n\n let scaleLength = height / this.lineGeo.length;\n\n let cap1 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-dimOffsetY);\n\n let cap2 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(dimOffsetY);\n\n let line = new Mesh(\n this.lineGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(height);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(\n this.textGeo,\n MaterialManager.Instance().DIMENSION_TEXT\n );\n text.userData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, 0, -Math.PI / 2),\n };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosFrontRight.add(\n line,\n cap1,\n cap2,\n text,\n ...this.utils.addArrowForLine(line)\n );\n this.repositionDimension(\n this.dimensionPatiosFrontRight,\n DIMENSION_LOCATION.FRONT_RIGHT\n );\n }\n private drawDimensionPatiosLeftBottom() {\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z;\n\n this.dimensionPatiosLeftBottom.position.set(0, dimOffsetY, dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n this.dimensionPatiosPlanRight.children.forEach((groupDim) => {\n groupDim.children.forEach((e) => {\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n if (e.userData?.subType == GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT)\n return;\n dim.rotation.set(0, 0, 0);\n dim.userData[\"views\"] = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n ];\n dim.userData[\"rotation\"] = new Vector3(0, 0, 0);\n dim.userData[\"position\"] = { ...e.userData.position, bottom: true };\n }\n this.dimensionPatiosLeftBottom.add(dim);\n });\n });\n }\n private drawDimensionPatiosLeftRight() {\n let dimOffsetY = this.APP.sldExistingWallHeight.currentValue;\n if (UI.isUpFasciaUpstandardBracket) {\n dimOffsetY +=\n this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue);\n // dimOffsetY -= (this.MANAGER.roofManager.geoBraket_2.height / 4 + this.MANAGER.roofManager.geoBraket_1.width) * this.utils.tan(UI.patiosPitch) + this.MANAGER.roofManager.geoBraket_2.height / 4 * this.utils.tan(UI.patiosPitch);\n } else {\n dimOffsetY -=\n this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue);\n }\n dimOffsetY += this.MANAGER.postAndBeamManager.beamInfo.height;\n\n dimOffsetY += +UI.upstandBraketType;\n let dimOffsetZ =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldEaveWidth.currentValue +\n this.dimensionDistance2 -\n this.APP.sldExistingWidth1.currentValue / 2;\n if (\n this.APP.sldExistingWidth1.currentValue +\n this.APP.sldExistingWidth2.currentValue >\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue\n ) {\n dimOffsetZ =\n this.APP.sldExistingWidth1.currentValue / 2 +\n this.APP.sldExistingWidth2.currentValue +\n this.dimensionDistance2 -\n 290;\n }\n if (this.APP.sldExistingLength2.currentValue > 0) {\n dimOffsetZ += 500;\n }\n\n this.dimensionPatiosLeftRight.position.set(0, dimOffsetY / 2, dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n let offsetLength = +dimOffsetY.toFixed(0);\n let scaleLength = offsetLength / this.lineGeo.length;\n\n let cap1 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength / 2);\n\n let cap2 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength / 2);\n\n let line = new Mesh(\n this.lineGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(\n this.textGeo,\n MaterialManager.Instance().DIMENSION_TEXT\n );\n text.userData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }],\n rotation: new Vector3(-Math.PI / 2, 0, 0),\n };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosLeftRight.add(\n line,\n cap1,\n cap2,\n text,\n ...this.utils.addArrowForLine(line)\n );\n this.repositionDimension(\n this.dimensionPatiosLeftRight,\n DIMENSION_LOCATION.LEFT_RIGHT\n );\n }\n private drawDimensionPatiosRightBottom() {\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z;\n\n this.dimensionPatiosRightBottom.position.set(0, dimOffsetY, dimOffsetZ);\n\n let views = [{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosPlanRight.children.forEach((groupDim) => {\n groupDim.children.forEach((e) => {\n if (e.userData?.subType == GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT) return;\n\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.userData[\"rotation\"] = new Vector3(0, 0, 0);\n dim.userData[\"position\"] = { ...e.userData.position, bottom: true };\n }\n this.dimensionPatiosRightBottom.add(dim);\n });\n });\n }\n private drawDimensionPatiosRightLeft() {\n // let dimOffsetY = this.utils.getHeightByAngle(this.APP.sldExistingWallHeight.currentValue, this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue, this.APP.sltRoofPitch.currentValue, -1);\n let dimOffsetY = this.APP.sldExistingWallHeight.currentValue;\n if (UI.isUpFasciaUpstandardBracket) {\n dimOffsetY +=\n this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue);\n // dimOffsetY -= (this.MANAGER.roofManager.geoBraket_2.height / 4 + this.MANAGER.roofManager.geoBraket_1.width) * this.utils.tan(UI.patiosPitch) + this.MANAGER.roofManager.geoBraket_2.height / 4 * this.utils.tan(UI.patiosPitch);\n } else {\n dimOffsetY -=\n this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue);\n }\n dimOffsetY += +UI.upstandBraketType;\n dimOffsetY += this.MANAGER.postAndBeamManager.beamInfo.height;\n let dimOffsetZ = this.dimensionPatiosLeftRight.position.z; //this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.APP.sldEaveWidth.currentValue + this.dimensionDistance2 - this.APP.sldExistingWidth1.currentValue / 2;\n //this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance2;\n\n this.dimensionPatiosRightLeft.position.set(0, dimOffsetY / 2, dimOffsetZ);\n let views = [{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosLeftRight.children.forEach((e) => {\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.userData[\"rotation\"] = new Vector3(Math.PI / 2, 0, 0);\n dim.rotation.set(0, Math.PI, 0);\n }\n this.dimensionPatiosRightLeft.add(dim);\n });\n this.repositionDimension(\n this.dimensionPatiosRightLeft,\n DIMENSION_LOCATION.RIGHT_LEFT\n );\n }\n private drawDimensionPatiosLeftLeft() {\n let dimOffsetY = this.APP.sldExistingWallHeight.currentValue;\n let dimOffsetZ = this.APP.sldExistingWidth1.currentValue / 2 + 1800;\n\n this.dimensionPatiosLeftLeft.position.set(0, dimOffsetY / 2, -dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n ];\n\n let offsetLength = dimOffsetY;\n let scaleLength = offsetLength / this.lineGeo.length;\n\n let cap1 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength / 2);\n\n let cap2 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength / 2);\n\n let line = new Mesh(\n this.lineGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(\n this.textGeo,\n MaterialManager.Instance().DIMENSION_TEXT\n );\n text.userData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }],\n rotation: new Vector3(Math.PI / 2, 0, 0),\n };\n text.position.set(0, 200, 0);\n\n this.dimensionPatiosLeftLeft.add(\n line,\n cap1,\n cap2,\n text,\n ...this.utils.addArrowForLine(line)\n );\n }\n private drawDimensionPatiosRightRight() {\n let dimOffsetY = this.APP.sldExistingWallHeight.currentValue;\n let dimOffsetZ = this.APP.sldExistingWidth1.currentValue / 2 + 1800;\n\n this.dimensionPatiosRightRight.position.set(0, dimOffsetY / 2, -dimOffsetZ);\n\n let views = [{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosLeftLeft.children.forEach((e) => {\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n dim.userData[\"rotation\"] = new Vector3(-Math.PI / 2, 0, 0);\n dim.rotation.set(0, Math.PI, 0);\n dim.position.set(dim.position.x, -dim.position.y, dim.position.z);\n this.dimensionPatiosRightRight.add(dim);\n }\n });\n }\n private addOverhang(\n groupDim: Object3D,\n offset: number,\n overhangValue: number,\n views: any,\n side: string,\n rotateText: number,\n axis: string,\n labelType?: string\n ) {\n if (overhangValue == 0) {\n let dim = groupDim.children.find(\n (el) => el.userData?.groupType == labelType\n ) as Dimension;\n if (dim) {\n groupDim.remove(dim);\n }\n return;\n }\n\n let textStr = this.utils.getDimensionValue(overhangValue);\n\n let textRotation = new Vector3();\n let textUserData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n position: { overhang: true },\n };\n if (axis === \"z\") {\n textRotation.setZ(rotateText);\n textUserData[\"rotation\"] = new Vector3(0, 0, -rotateText / 2);\n textUserData[\"position\"][\"bottom\"] = true;\n } else if (axis === \"y\") {\n textRotation.setY(rotateText);\n textUserData[\"rotation\"] = new Vector3(0, -rotateText / 2, 0);\n } else if (axis === \"x\") {\n textRotation.setX(rotateText);\n textUserData[\"rotation\"] = new Vector3(-rotateText / 2, 0, 0);\n }\n\n let linePos = new Vector3();\n if (side === \"Left\") {\n linePos.setX(-offset - overhangValue / 2);\n } else if (side === \"Right\") {\n linePos.setX(offset + overhangValue / 2);\n }\n let fitZ = 0;\n if (labelType) {\n if (axis === \"z\") {\n fitZ = 10;\n } else if (axis === \"y\") {\n fitZ = -10;\n }\n }\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: overhangValue,\n container: groupDim,\n views: views,\n linePos: linePos,\n textPos: linePos.clone().setY(linePos.y - 200),\n labelType: labelType ? labelType : null,\n fitZ: fitZ,\n textRotation: textRotation,\n textUserData: textUserData,\n };\n let dim = groupDim.children.find(\n (el) => el.userData?.groupType == labelType\n ) as Dimension;\n if (!dim) {\n new Dimension(options);\n } else {\n dim.update(options);\n }\n }\n private getTextCover(\n textGeo: TextBufferGeometry,\n labelType: string,\n pos: Vector3,\n fitZ = 0,\n bayNum?: number\n ) {\n let textSize = new Vector3();\n textGeo.boundingBox.getSize(textSize);\n\n let textCover = new Mesh(\n new BoxBufferGeometry(textSize.x, textSize.y, textSize.z)\n );\n textCover.position.set(pos.x, pos.y, pos.z + fitZ);\n textCover.userData = { type: GEOMETRY_TYPE.TEXT_COVER, labelType };\n if (bayNum !== undefined) {\n textCover.userData[\"bayNum\"] = bayNum;\n }\n textCover.material[\"opacity\"] = 0;\n textCover.material[\"transparent\"] = true;\n\n return textCover;\n }\n public getOutlines(): Printing2DGeometry {\n let lsGeometries: Printing2DLine[] = [];\n let lsText: Print2DText[] = [];\n\n for (let dim of [\n ...this.dimensionPatiosPlanBottom.children,\n ...this.dimensionPatiosPlanRight.children,\n ...this.dimensionPatiosPlanLeft.children,\n ...this.dimensionPatiosFrontBottom.children,\n ...this.dimensionPatiosFrontRight.children,\n ...this.dimensionPatiosLeftBottom.children,\n ...this.dimensionPatiosLeftRight.children,\n ...this.dimensionPatiosLeftLeft.children,\n ...this.dimensionPatiosRightBottom.children,\n ...this.dimensionPatiosRightLeft.children,\n ...this.dimensionPatiosRightRight.children,\n ...this.dimensionPlanMiddle.children,\n ...this.dimensionPlanMidleLeft.children,\n ]) {\n if (!dim.userData.views) {\n console.log(\"TEXT NO VIEW\", dim);\n continue;\n }\n\n if (dim.type == \"Group\") {\n dim.children.forEach((el) => {\n el.updateMatrix();\n let _clone = el.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(el.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n\n el.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(el.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(el.matrixWorld);\n\n let textRotation = el.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, el, pos, textRotation, points);\n });\n } else {\n dim.updateMatrix();\n let _clone = dim.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(dim.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n\n dim.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(dim.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(dim.matrixWorld);\n\n let textRotation = dim.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, dim, pos, textRotation, points);\n }\n }\n\n return { lines: lsGeometries, texts: lsText };\n }\n private getDimInfo(\n lsGeometries: Printing2DLine[],\n lsText: Print2DText[],\n dim: Object3D,\n pos: Vector3,\n textRotation: Vector3,\n points: Vector3[]\n ) {\n if (\n dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT &&\n dim.userData.views &&\n dim.userData.value\n ) {\n let box = new Box3().setFromObject(dim.parent);\n let startEnd = this.utils.getStartEndPoint(box);\n let line = new Line3(startEnd[0], startEnd[1]);\n\n let projectPoint = new Vector3();\n line.closestPointToPoint(pos, true, projectPoint);\n let _pos = new Vector3().addVectors(\n projectPoint,\n new Vector3()\n .subVectors(pos, projectPoint)\n .normalize()\n .multiplyScalar(10)\n );\n\n if (dim.userData.position?.bottom) {\n if (dim.userData.position?.overhang) {\n _pos = new Vector3().addVectors(\n projectPoint,\n new Vector3()\n .subVectors(pos, projectPoint)\n .normalize()\n .multiplyScalar(180)\n );\n } else {\n _pos = new Vector3().addVectors(\n projectPoint,\n new Vector3()\n .subVectors(pos, projectPoint)\n .normalize()\n .multiplyScalar(120)\n );\n }\n } else {\n if (dim.userData.position?.overhang) {\n _pos = new Vector3().addVectors(\n projectPoint,\n new Vector3()\n .subVectors(pos, projectPoint)\n .normalize()\n .multiplyScalar(100)\n );\n }\n }\n\n let p = new Vector3().applyMatrix4(dim.matrixWorld);\n\n lsText.push({\n value: dim.userData.value,\n position: p,\n rotation: textRotation,\n views: dim.userData.views,\n });\n } else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_LINE) {\n // this.scene.add(new LineSegments(new Geometry().setFromPoints(points), new LineBasicMaterial({color: new Color('red')})));\n\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views,\n });\n } else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_CAP) {\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views,\n });\n } else if (dim.userData.type == \"Arrow\") {\n let geo = ((dim as Line).geometry as Geometry).clone();\n geo.applyMatrix4(dim.matrixWorld);\n lsGeometries.push({\n vertices: geo.vertices,\n objectType: dim.userData.type,\n views: dim.userData.views,\n });\n }\n }\n public destroy(): void {\n this.unregisterEvent();\n this.unload();\n }\n\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldFrontOverhang,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sldExistingWallHeight,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch,\n ];\n this.controlsToRegisterEvent.forEach((c) =>\n c.addAction(this.eventHandleId)\n );\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.controlsToRegisterEvent = undefined;\n }\n\n public uiChanged(preVal: number, curVal: number): void {\n this.draw();\n }\n private calulateBoundingBox() {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter((c) => c.userData.type == \"BOX_HELPER_\")\n );\n let patiosBox = this.MANAGER.boundingBox;\n\n let planRightBox = this.APP.utils.getObjectBoundingBox(\n this.dimensionPatiosPlanRight\n );\n planRightBox.min.x = patiosBox.max.x;\n planRightBox.max.x = patiosBox.max.x + 500;\n planRightBox.max.y = 10000;\n\n let planLeftBox = this.APP.utils.getObjectBoundingBox(\n this.dimensionPatiosPlanLeft\n );\n planLeftBox.min.x = patiosBox.min.x - 500;\n planLeftBox.max.x = patiosBox.min.x;\n planLeftBox.max.y = 10000;\n\n let planBottomBox = this.APP.utils.getObjectBoundingBox(\n this.dimensionPatiosPlanBottom\n );\n let planBottomBoxWidth = planBottomBox.max.z - planBottomBox.min.z;\n planBottomBox.min.z = patiosBox.max.z;\n planBottomBox.max.z = patiosBox.max.z + planBottomBoxWidth;\n planBottomBox.max.y = 10000;\n\n let objs = [];\n\n objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n c.userData.position?.width1) ||\n c.userData.position?.width2 ||\n c.userData.position?.length2 ||\n c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n\n // for(let e of objs){\n // let boxModelHelper = new BoxHelper(e);\n // boxModelHelper.userData = {type: 'BOX_HELPER_'};\n // this.scene.add(boxModelHelper);\n // }\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (planRightBox.intersectsBox(objBox)) {\n intersectBox = true;\n planRightBox.translate(new Vector3(100, 0, 0));\n }\n if (planLeftBox.intersectsBox(objBox)) {\n intersectBox = true;\n planLeftBox.translate(new Vector3(-100, 0, 0));\n }\n if (planBottomBox.intersectsBox(objBox)) {\n intersectBox = true;\n planBottomBox.translate(new Vector3(0, 0, 100));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(planRightBox);\n // boxHelper.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper);\n\n // let boxHelper2 = new Box3Helper(planLeftBox);\n // boxHelper2.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper2);\n\n // let boxHelper3 = new Box3Helper(planBottomBox);\n // boxHelper3.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper3);\n\n return {\n left: planLeftBox.min.x,\n right: planRightBox.max.x,\n front: planBottomBox.max.z,\n };\n }\n private repositionDimension(dimension, location, extraDistance = 0) {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter((c) => c.userData.type == location)\n );\n\n let patiosBox = this.MANAGER.boundingBox;\n\n if (location == DIMENSION_LOCATION.FRONT_RIGHT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.max.x;\n dimBox.max.x = patiosBox.max.x + 500;\n dimBox.max.z = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n !c.userData.position.length1 &&\n !c.userData.position.length2) ||\n (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL &&\n !c.userData.position.length1 &&\n !c.userData.position.length2)\n );\n\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n !c.userData.position.length1) ||\n (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL &&\n !c.userData.position.length1)\n );\n }\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(100, 0, 0));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setX(dimBox.max.x + extraDistance);\n } else if (location == DIMENSION_LOCATION.PLAN_LEFT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.min.x - 500;\n dimBox.max.x = patiosBox.min.x;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF ||\n c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(-100, 0, 0));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setX(dimBox.min.x + extraDistance);\n } else if (location == DIMENSION_LOCATION.PLAN_RIGHT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.max.x;\n dimBox.max.x = patiosBox.max.x + 500;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF ||\n c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n\n // for(let e of objs){\n // let boxModelHelper = new BoxHelper(e);\n // boxModelHelper.userData = {type: location};\n // this.scene.add(boxModelHelper);\n // }\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(100, 0, 0));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setX(dimBox.max.x + extraDistance);\n } else if (location == DIMENSION_LOCATION.PLAN_BOTTOM) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF ||\n c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(0, 0, 100));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setZ(dimBox.max.z + extraDistance);\n } else if (location == DIMENSION_LOCATION.LEFT_RIGHT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n dimBox.min.x = -10000;\n dimBox.max.x = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n c.userData.position?.left) ||\n (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL &&\n c.userData.position?.left)\n );\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(0, 0, 100));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setZ(dimBox.max.z + extraDistance);\n } else if (location == DIMENSION_LOCATION.RIGHT_LEFT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(\n this.dimensionPatiosLeftRight\n );\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n\n dimBox.min.x = -10000;\n dimBox.max.x = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n c.userData.position?.right) ||\n (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL &&\n c.userData.position?.right)\n );\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(0, 0, 100));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setZ(dimBox.max.z + extraDistance);\n }\n }\n}\n","import { GEOMETRY_CATEGORY } from \"src/app/app.config\";\nimport { Box3, Group, Vector3 } from \"three\";\nimport {\n BUILDING_SIDE,\n CUTOUT_ENABLE,\n EXISTING_BUILDING_CONFIG,\n RAKECUT_TYPE,\n} from \"src/app/app.constants\";\nimport { HomeComponent as AppComponent, HomeComponent } from \"../../containers/home/home.component\";\nimport { Printing2DGeometry } from \"src/app/core/models\";\nimport { PatiosManager, RafterBeamAndInternalBeamInfo } from \"../patios.manager\";\nimport { DimensionManager } from \"./dimension.manager\";\nimport { PostAndBeamManager } from \"./post-and-beam.manager\";\nimport { RoofManager } from \"./roof.manager\";\nimport { UI } from \"../ui\";\n\nexport class FasciaManager implements PatiosManager {\n public patiosGroup: Group;\n public boundingBox: Box3;\n private APP: AppComponent;\n public postAndBeamManager: PostAndBeamManager;\n public roofManager: RoofManager;\n public dimesionManager: DimensionManager;\n public ignoreBayEvent: boolean = false;\n public rafterBeamAndInternalBeamInfo: RafterBeamAndInternalBeamInfo = {\n numOfInternalRafter: 0,\n numOfSpanBeam: 0,\n numOfMultiSpanBeam: 0,\n }\n private updateEventHandle: any;\n private deferHandle;\n private deferTimeout = EXISTING_BUILDING_CONFIG.CUTOUT_DEFFER_TIME_OUT;\n private controlsToRegisterEvent: Array;\n public patiosWidth: number;\n public patiosLength: number;\n public get cutoutCondition(): boolean {\n return (\n [\n this.APP.sldEaveWidth,\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldFrontOverhang,\n ]\n .map((x) => x.currentValue)\n .reduce((a, b) => a + b, 0) -\n this.APP.sldExistingWidth1.currentValue >=\n EXISTING_BUILDING_CONFIG.CUTOUT_ALLOW\n );\n }\n public get rakecutCondition(): boolean {\n let patiosWidth =\n this.APP.dialogEditBay.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n let patiosLength =\n this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue;\n\n return false;\n }\n\n public firstLoad = true;\n\n constructor(app: AppComponent) {\n this.APP = app;\n this.patiosGroup = new Group();\n this.patiosGroup.userData = { category: GEOMETRY_CATEGORY.PATIOS };\n app.scene.add(this.patiosGroup);\n\n this.postAndBeamManager = new PostAndBeamManager(app, this);\n this.roofManager = new RoofManager(app, this);\n this.dimesionManager = new DimensionManager(app, this);\n this.registerEvents();\n }\n\n load(): Promise {\n return Promise.all([\n this.postAndBeamManager.optimize(),\n this.roofManager.optimize(),\n this.dimesionManager.optimize(),\n ]).then(() => {\n this.postAndBeamManager.load();\n this.roofManager.load();\n this.dimesionManager.load();\n });\n }\n loadBracket(bracketQuantity: number): void {\n this.postAndBeamManager.addUpstandBraket(bracketQuantity);\n }\n loadBracketCutout(bracketQuantity: number): void {\n this.postAndBeamManager.addUpstandBraketCutOut(bracketQuantity);\n }\n loadSideGableBracket(bracketQuantity: number): void{\n \n }\n loadRafterBeamAndInternalBeam(info: RafterBeamAndInternalBeamInfo): void{\n this.rafterBeamAndInternalBeamInfo = info\n this.postAndBeamManager.addEndRafterBeam(info)\n }\n public destroy(): void {\n this.postAndBeamManager.destroy();\n this.roofManager.destroy();\n this.dimesionManager.destroy();\n this.unRegisterEvent();\n }\n registerEvents(): void {\n this.updateEventHandle = this.updateDefer.bind(this);\n this.controlsToRegisterEvent = [\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sltCutOut,\n this.APP.sldFrontOverhang,\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltHouseBeamSize,\n this.APP.sltColourBarge,\n this.APP.sltColourGutter,\n this.APP.sltColourDownpipe,\n this.APP.sltColourRoof,\n this.APP.sldSpan,\n this.APP.sldExistingWallHeight,\n this.APP.sldEaveWidth,\n this.APP.sldFasciaDepth,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldFlyOverBracketHeight,\n this.APP.sltColourBeam,\n this.APP.sltColourPost,\n this.APP.sltColourBracket,\n this.APP.sltColourFasciaBracket,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n this.APP.sltLeftCutType,\n this.APP.sldLeftCutVertical,\n this.APP.sldLeftCutHorizontal,\n this.APP.sltRightCutType,\n this.APP.sldRightCutVertical,\n this.APP.sldRightCutHorizontal,\n this.APP.sltPanelDirection,\n this.APP.sltPanelDirectionShow,\n this.APP.sltBeamLayoutShow,\n this.APP.sltFasciaUpstandBrackets,\n this.APP.sltUpFasciaUpstandBracket,\n this.APP.btnTurnOnPanel\n ];\n this.controlsToRegisterEvent.forEach((c) => {\n c.addAction(this.updateEventHandle);\n });\n }\n unRegisterEvent(): void {\n this.controlsToRegisterEvent.forEach((c) =>\n c.removeAction(this.updateEventHandle)\n );\n }\n updateDefer(previousValue: number, currentValue: number) {\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES ||\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE ||\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE\n ) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => {\n this.update(previousValue, currentValue);\n }, this.deferTimeout);\n } else {\n this.update(previousValue, currentValue);\n }\n }\n update(preVal: number, curVal: number): void {\n let diff = UI.existingLength1 - UI.totalBayLength;\n\n this.patiosWidth = UI.totalBayLength + UI.overhangLeft + UI.overhangRight;\n this.patiosLength = UI.span + UI.multiSpan + UI.overhangFront;\n\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n const shouldSnap = HomeComponent.ins.uiManager.calcShouldSnapRoofToExistingWhenCutout()\n if (UI.cutOutType == CUTOUT_ENABLE.YES && this.cutoutCondition) {\n this.patiosGroup.position.setX( -diff / 2 - UI.existingLength2 + (shouldSnap ? 0 : UI.eaveWidth));\n } else {\n this.patiosGroup.position.setX(-diff / 2 + UI.eaveWidth);\n }\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n const shouldSnap = HomeComponent.ins.uiManager.calcShouldSnapRoofToExistingWhenCutout()\n if (UI.cutOutType == CUTOUT_ENABLE.YES && this.cutoutCondition) {\n this.patiosGroup.position.setX(diff / 2 + UI.existingLength2 - (shouldSnap ? 0 : UI.eaveWidth));\n } else {\n this.patiosGroup.position.setX(diff / 2 - UI.eaveWidth);\n }\n } else {\n this.patiosGroup.position.setX(0);\n }\n\n Promise.all([this.roofManager.load(), this.postAndBeamManager.load()]).then(\n () => {\n this.loadRafterBeamAndInternalBeam(this.rafterBeamAndInternalBeamInfo)\n this.boundingBox = this.getPatiosBox();\n this.dimesionManager.draw();\n }\n );\n }\n getOutlines(): Printing2DGeometry {\n let dimensionOutline = this.dimesionManager.getOutlines();\n return {\n lines: [\n ...this.postAndBeamManager.getSection().lines,\n ...this.roofManager.getOutLines().lines,\n ...dimensionOutline.lines,\n ],\n texts: dimensionOutline.texts,\n };\n }\n public getPatiosBox(): Box3 {\n let left =\n -this.APP.dialogEditBay.totalBaySize / 2 -\n this.APP.sldLeftOverhang.currentValue;\n let right =\n this.APP.dialogEditBay.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue;\n let front =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue;\n let back = 0;\n let height = this.APP.sldBuildingHeight.currentValue;\n\n let box = new Box3();\n box = box.expandByPoint(new Vector3(left, 0, front));\n box = box.expandByPoint(new Vector3(right, height, back));\n box.translate(new Vector3(0, 0, this.APP.sldEaveWidth.currentValue));\n\n if (this.APP.sltExistingType.currentValue == 1) {\n let diff =\n (this.APP.sldExistingLength.currentValue -\n this.APP.dialogEditBay.totalBaySize) /\n 2;\n box.translate(new Vector3(-diff, 0, 0));\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n box.translate(new Vector3(this.APP.sldLeftOverhang.currentValue, 0, 0));\n box.translate(new Vector3(this.APP.sldEaveWidth.currentValue, 0, 0));\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n box.translate(\n new Vector3(-this.APP.sldExistingLength2.currentValue, 0, 0)\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 2) {\n let diff =\n (this.APP.sldExistingLength.currentValue -\n this.APP.dialogEditBay.totalBaySize) /\n 2;\n box.translate(new Vector3(diff, 0, 0));\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n box.translate(new Vector3(-this.APP.sldRightOverhang.currentValue, 0, 0));\n box.translate(new Vector3(-this.APP.sldEaveWidth.currentValue, 0, 0));\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n box.translate(\n new Vector3(this.APP.sldExistingLength2.currentValue, 0, 0)\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 3) {\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n }\n\n return box;\n }\n}\n","import _ from \"lodash\";\nimport UpstandBraket, {\n UpstandBraketOptions,\n} from \"src/app-ribspan/models/UpstandBraket.model\";\nimport {\n Box3,\n BoxBufferGeometry,\n BoxHelper,\n BufferGeometry,\n Color,\n Geometry,\n Group,\n Line3,\n LineSegments,\n Material,\n Matrix4,\n Mesh,\n Plane,\n PlaneHelper,\n Vector3,\n} from \"three\";\nimport { FasciaManager } from \".\";\nimport { GEOMETRY_CATEGORY, GEOMETRY_TYPE } from \"src/app/app.config\";\nimport {\n BUILDING_SIDE,\n RAKECUT_TYPE,\n EXISTING_BUILDING_CONFIG as CONST,\n CUTOUT_ENABLE,\n MIN_INTERNAL_BEAM_LENGTH,\n EXISTING_BUILDING_CONFIG,\n} from \"src/app/app.constants\";\nimport {\n HomeComponent as AppComponent,\n HomeComponent,\n} from \"../../containers/home/home.component\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport {\n GeometryInfo,\n LineType,\n Print2DView,\n Printing2DGeometry,\n Printing2DLine,\n ViewType,\n} from \"src/app/core/models\";\nimport { UI } from \"../ui\";\nimport { Util, getBeamEndCapCode } from \"../utils\";\n\nexport class PostAndBeamManager {\n private scene: Group;\n private APP: AppComponent;\n private MANAGER: FasciaManager;\n private material: Material;\n private utils: Util;\n private geometryManager: GeometryManager;\n public postInfo: GeometryInfo;\n public beamInfo: GeometryInfo;\n private beamRakecutInfoLeft: GeometryInfo;\n private beamRakecutInfoRight: GeometryInfo;\n private geo_beamEndCap: GeometryInfo;\n private geo_groundBase: GeometryInfo;\n private eventHandleId: any;\n private roofWidth: number;\n private existingTypeLeftX: number;\n private existingTypeRightX: number;\n private existingType: number;\n private totalBaySize: number;\n private frontPostHeight: number;\n private downpipeGroup: Group;\n private downpipeStepRakeCutGroupLeft: Group;\n private downpipeStepRakeCutGroupRight: Group;\n public geo_downPipe: GeometryInfo;\n private geo_downPipeL: GeometryInfo;\n private geoBraketExtL_2: GeometryInfo;\n private geoBraketExtR_2: GeometryInfo;\n private objectSizeChangedHandle: any;\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n\n private geo_beamStepRakecutLeft: GeometryInfo;\n private geo_beamStepRakecutRight: GeometryInfo;\n\n private geo_RafterBeam: GeometryInfo;\n private geo_rafterBeamEndCap: GeometryInfo;\n\n private geoBeamJoint: GeometryInfo;\n private geoHouseBeamJoint: GeometryInfo;\n\n private beamLeftCutSizeInfo: any;\n private beamRightCutSizeInfo: any;\n\n public geoBraket_1: GeometryInfo;\n public geoBraket_2: GeometryInfo;\n private geoBeam: GeometryInfo;\n private geoBeamEndCap: GeometryInfo;\n private geoHouseBeam: GeometryInfo;\n private geoHouseBeamEndCap: GeometryInfo;\n\n private offsetYBraket = 0;\n private offsetBraketZ = 0;\n\n public shouldSnapRoofToExistingWhenCutout: boolean = false;\n\n k: number;\n k_: number;\n j: number;\n l: number;\n m: number;\n v: number;\n\n constructor(app: AppComponent, fasciaManager: FasciaManager) {\n this.APP = app;\n this.MANAGER = fasciaManager;\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.scene = fasciaManager.patiosGroup;\n this.material = MaterialManager.Instance().DEFAULT.clone();\n this.registerEvent();\n }\n public destroy(): void {\n this.unregisterEvent();\n }\n public uiChanged(preVal: number, curVal: number): void {\n this.load();\n }\n private objectSizeChanged(pre: number, cur: number) {\n this.optimize().then(() => {\n this.load();\n this.MANAGER.loadRafterBeamAndInternalBeam(\n this.MANAGER.rafterBeamAndInternalBeamInfo\n );\n });\n }\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldExistingWallHeight,\n this.APP.sltRoofPitch,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldExistingWidth1,\n this.APP.sltExistingType,\n this.APP.dialogEditBay,\n this.APP.sldEaveWidth,\n this.APP.sldFrontOverhang,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n ];\n //this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n this.controlsToRegisterEvent2 = [\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltHouseBeamSize,\n this.APP.sltColumnType,\n ];\n this.controlsToRegisterEvent2.forEach((c) =>\n c.addAction(this.objectSizeChangedHandle)\n );\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach((c) =>\n c.removeAction(this.objectSizeChangedHandle)\n );\n this.controlsToRegisterEvent2 = undefined;\n }\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n this.beamInfo = this.geometryManager.getBeam();\n this.beamInfo.geometry\n .rotateY(Math.PI / 2)\n .translate(this.beamInfo.length / 2, -this.beamInfo.height / 2, 0);\n\n this.geoBeamJoint = this.geometryManager.getBeamJoint();\n this.geoHouseBeamJoint = this.geometryManager.getHouseBeamJoint();\n\n this.geo_RafterBeam = this.geometryManager.getBeam();\n this.geo_RafterBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_RafterBeam.length / 2,\n -this.geo_RafterBeam.height / 2,\n this.geo_RafterBeam.width / 2\n );\n\n this.geo_rafterBeamEndCap = this.geometryManager.getBeamEndCap();\n this.geo_rafterBeamEndCap.geometry.translate(\n 0,\n -this.geo_rafterBeamEndCap.height / 2,\n this.geo_rafterBeamEndCap.length / 2\n );\n\n this.beamRakecutInfoLeft = this.geometryManager.getBeam();\n this.beamRakecutInfoLeft.geometry.translate(\n this.beamInfo.width / 2,\n -this.beamInfo.height / 2,\n -this.beamInfo.length / 2\n );\n\n this.beamRakecutInfoRight = this.geometryManager.getBeam();\n this.beamRakecutInfoRight.geometry.translate(\n -this.beamInfo.width / 2,\n -this.beamInfo.height / 2,\n -this.beamInfo.length / 2\n );\n\n this.geo_beamStepRakecutLeft = this.geometryManager.getBeam();\n this.geo_beamStepRakecutLeft.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_beamStepRakecutLeft.length / 2,\n -this.geo_beamStepRakecutLeft.height / 2,\n -this.geo_beamStepRakecutLeft.width / 2\n );\n\n this.geo_beamStepRakecutRight = this.geometryManager.getBeam();\n this.geo_beamStepRakecutRight.geometry\n .rotateY(Math.PI / 2)\n .translate(\n -this.geo_beamStepRakecutRight.length / 2,\n -this.geo_beamStepRakecutRight.height / 2,\n -this.geo_beamStepRakecutRight.width / 2\n );\n\n this.geo_beamEndCap = this.geometryManager.getBeamEndCap();\n this.geo_beamEndCap.geometry.translate(\n 0,\n -this.geo_beamEndCap.height / 2,\n 0\n );\n\n this.postInfo = this.geometryManager.getPost();\n this.postInfo.geometry\n .rotateX(Math.PI / 2)\n .translate(0, this.postInfo.height / 2, 0);\n //.scale(1, scalePostHeight, 1);\n\n this.geo_groundBase = new GeometryInfo();\n this.geo_groundBase.width = 1000;\n this.geo_groundBase.height = 1;\n this.geo_groundBase.length = 1000;\n this.geo_groundBase.geometry = new BoxBufferGeometry(\n this.geo_groundBase.width,\n this.geo_groundBase.height,\n this.geo_groundBase.length\n );\n this.geo_groundBase.geometry.translate(\n this.geo_groundBase.width / 2,\n 0,\n this.geo_groundBase.length / 2\n );\n\n this.geo_downPipe = this.geometryManager.getDownPipe();\n this.geo_downPipeL = this.geometryManager.getDownPipeL();\n\n this.scene.remove(\n ...this.scene.children.filter(\n (c) => c.userData.type == GEOMETRY_TYPE.DOWNPIPE\n )\n );\n this.downpipeGroup = new Group();\n this.downpipeGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeGroup);\n\n this.downpipeStepRakeCutGroupLeft = new Group();\n this.downpipeStepRakeCutGroupLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeStepRakeCutGroupLeft);\n\n this.downpipeStepRakeCutGroupRight = new Group();\n this.downpipeStepRakeCutGroupRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeStepRakeCutGroupRight);\n\n this.geoBraket_1 = this.geometryManager.getUpstandBraket(1);\n this.geoBraket_1.geometry.rotateX(Math.PI / 2);\n this.geoBraket_1.geometry.translate(0, this.geoBraket_1.length / 2, 0);\n this.geoBraket_2 = this.geometryManager.getUpstandBraket(2);\n this.geoBraket_2.geometry.rotateY(Math.PI);\n this.geoBraket_2.geometry.rotateX(Math.PI / 2);\n this.geoBraket_2.geometry.translate(\n 0,\n this.geoBraket_2.length / 2,\n -this.geoBraket_2.height / 4\n );\n\n this.geoBraketExtL_2 = this.geometryManager.getUpstandBraket(2);\n this.geoBraketExtL_2.geometry.rotateX(Math.PI / 2);\n this.geoBraketExtL_2.geometry.rotateY(-Math.PI / 2);\n this.geoBraketExtL_2.geometry.rotateZ(-Math.PI);\n this.geoBraketExtL_2.geometry.translate(\n -this.geoBraketExtL_2.height / 2,\n this.geoBraketExtL_2.length / 2,\n this.geoBraketExtL_2.height / 3 - this.geoBraket_1.width / 2\n );\n //Right\n this.geoBraketExtR_2 = this.geometryManager.getUpstandBraket(2);\n this.geoBraketExtR_2.geometry.rotateX(Math.PI / 2);\n this.geoBraketExtR_2.geometry.rotateY(Math.PI / 2);\n this.geoBraketExtR_2.geometry.rotateZ(-Math.PI);\n this.geoBraketExtR_2.geometry.translate(\n this.geoBraketExtR_2.height / 2,\n this.geoBraketExtR_2.length / 2,\n this.geoBraketExtR_2.height / 3 - this.geoBraket_1.width / 2\n );\n\n this.geoBeam = this.geometryManager.getBeam();\n this.geoBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(0, this.geoBeam.height / 2, 0);\n\n this.geoHouseBeam = this.geometryManager.getHouseBeam();\n this.geoHouseBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geoHouseBeam.length / 2,\n -this.geoHouseBeam.height / 2,\n 0\n );\n\n this.geoBeamEndCap = this.geometryManager.getBeamEndCap();\n this.geoBeamEndCap.geometry.translate(\n 0,\n -this.geoBeamEndCap.height / 2,\n 0\n );\n\n this.geoHouseBeamEndCap = this.geometryManager.getHouseBeamEndCap();\n this.geoHouseBeamEndCap.geometry.translate(\n 0,\n -this.geoHouseBeamEndCap.height / 2,\n 0\n );\n\n resolve();\n });\n }\n\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.SUPERIOR_POST\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.GROUND_BASE\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (o) => o.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET_EXT\n )\n );\n this.downpipeGroup.children = [];\n this.downpipeStepRakeCutGroupLeft.children = [];\n this.downpipeStepRakeCutGroupRight.children = [];\n\n this.beamLeftCutSizeInfo = this.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.LEFT\n );\n this.beamRightCutSizeInfo = this.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.RIGHT\n );\n\n this.totalBaySize = this.APP.dialogEditBay.listBay.reduce(\n (total, val) => total + val.value,\n 0\n );\n this.roofWidth = UI.overhangLeft + UI.overhangRight + this.totalBaySize;\n this.existingType = +this.APP.sltExistingType.currentValue;\n this.existingTypeLeftX = 0;\n this.existingTypeRightX = 0;\n if (this.existingType === 1 || this.existingType === 3) {\n this.existingTypeLeftX = UI.eaveWidth;\n }\n if (this.existingType === 2 || this.existingType === 3) {\n this.existingTypeRightX = UI.eaveWidth;\n }\n this.offsetYBraket = 0;\n if (+UI.upstandBraketType !== 0) {\n this.offsetYBraket =\n +UI.upstandBraketType +\n this.geoBeam.height +\n this.geoBraket_1.width * this.utils.tan(UI.patiosPitch);\n }\n if (UI.isUpFasciaUpstandardBracket) {\n this.offsetYBraket -=\n this.geoBraket_1.width * this.utils.tan(UI.patiosPitch);\n }\n this.offsetBraketZ = 0;\n if (+UI.upstandBraketType !== 0) {\n this.offsetBraketZ = this.geoBraket_2.height / 4;\n }\n\n this.shouldSnapRoofToExistingWhenCutout =\n AppComponent.ins.uiManager.calcShouldSnapRoofToExistingWhenCutout();\n\n this.addBeam({ isMultiSpan: false });\n this.addBeam({ isMultiSpan: true });\n this.addBeamAngelRakecut();\n this.addBeamStepRakecut();\n this.addGround();\n let offsetX = -(this.totalBaySize / 2) + this.postInfo.width / 2;\n let offsetXOrigin = -(this.totalBaySize / 2) + this.postInfo.width / 2;\n let idx = 0;\n this.addPost(offsetX, { isMultiSpan: false, left: true });\n this.addUpstandBraketExt({ isMultiSpan: false, left: true });\n this.addPost(offsetX, { isMultiSpan: true, left: true });\n this.addUpstandBraketExt({ isMultiSpan: true, left: true });\n\n this.APP.dialogEditBay.listBay.map((m) => {\n offsetX += m.value;\n if (idx === this.APP.dialogEditBay.listBay.length - 1) {\n offsetX -= this.postInfo.width;\n this.addPost(offsetX, { isMultiSpan: false, right: true });\n this.addUpstandBraketExt({ isMultiSpan: false, right: true });\n this.addPost(offsetX, { isMultiSpan: true, right: true });\n this.addUpstandBraketExt({ isMultiSpan: true, right: true });\n this.addPostAngelRakecut(offsetX, { right: true });\n this.addPostAngelRakecut(offsetXOrigin, { left: true });\n } else {\n this.addPost(offsetX - this.postInfo.width / 2, {\n isMultiSpan: false,\n });\n this.addPost(offsetX - this.postInfo.width / 2, {\n isMultiSpan: true,\n });\n }\n idx++;\n });\n\n this.addDownPipe();\n this.addDownPipeStepRakecut();\n this.addPostStepRakecut();\n this.addUpstandBeam();\n this.addUpstandBraket();\n this.addUpstandBraketCutOut();\n this.showBeamOutline();\n this.updateUI();\n resolve();\n });\n }\n public showBeamOutline() {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.BEAM_OUTLINE\n )\n );\n\n if (!UI.beamLayoutShow) return;\n\n const objs = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n const meshes = [];\n objs.forEach((el) => {\n if (el.type == \"Group\") {\n meshes.push(\n ...el.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n }\n });\n\n for (let o of meshes) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n o as Mesh,\n 10\n );\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n\n var line = new LineSegments(\n outlineGeo,\n MaterialManager.Instance().BEAM_OUTLINE\n );\n line.userData = { type: GEOMETRY_TYPE.BEAM_OUTLINE };\n this.APP.scene.add(line);\n }\n }\n public addEndRafterBeam(info: any) {\n const { numOfInternalRafter, numOfSpanBeam, numOfMultiSpanBeam } = info;\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM ||\n x.userData.type == GEOMETRY_TYPE.SUPERIOR_INTERNAL_BEAM\n )\n );\n\n let endMainLeftX = -UI.totalBayLength / 2;\n let endMainRightX = UI.totalBayLength / 2;\n let cutOutLength = UI.existingLength2;\n if (this.shouldSnapRoofToExistingWhenCutout) {\n cutOutLength = UI.existingLength2 + UI.eaveWidth;\n }\n if (UI.cutOutType == CUTOUT_ENABLE.YES && this.MANAGER.cutoutCondition) {\n // Enable cut out\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n endMainLeftX = -UI.totalBayLength / 2 + cutOutLength;\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n endMainRightX = UI.totalBayLength / 2 - cutOutLength;\n } else if (UI.existingType == BUILDING_SIDE.BOTH) {\n endMainLeftX = -UI.totalBayLength / 2 + cutOutLength;\n endMainRightX = UI.totalBayLength / 2 - cutOutLength;\n }\n }\n\n // Add end rafter for two end side\n // Left side\n this.addRafterSuperiorBeam(endMainLeftX, {\n span: true,\n first: true,\n last: false,\n });\n if (UI.multiSpan) {\n this.addRafterSuperiorBeam(endMainLeftX, {\n multiSpan: true,\n first: true,\n last: false,\n });\n }\n\n // Right side\n this.addRafterSuperiorBeam(endMainRightX, {\n span: true,\n first: false,\n last: true,\n });\n if (UI.multiSpan) {\n this.addRafterSuperiorBeam(endMainRightX, {\n multiSpan: true,\n first: false,\n last: true,\n });\n }\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n this.addRafterSuperiorBeam(-UI.totalBayLength / 2 + UI.rakeCutLeftHor, {\n rakeCutLeft: true,\n first: true,\n last: false,\n });\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n this.addRafterSuperiorBeam(UI.totalBayLength / 2 - UI.rakeCutRightHor, {\n rakeCutRight: true,\n first: false,\n last: true,\n });\n }\n\n this.addInternalRafterBeam(\n numOfInternalRafter,\n numOfSpanBeam,\n numOfMultiSpanBeam\n );\n\n if (UI.cutOutType == CUTOUT_ENABLE.YES && this.MANAGER.cutoutCondition) {\n // Add rafter beam for cut out\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n endMainLeftX = -UI.totalBayLength / 2;\n this.addRafterSuperiorBeam(endMainLeftX, {\n cutOutForSpan: true,\n first: true,\n last: false,\n });\n if (UI.multiSpan) {\n this.addRafterSuperiorBeam(endMainLeftX, {\n cutOutForMultiSpan: true,\n first: true,\n last: false,\n });\n }\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n endMainRightX = UI.totalBayLength / 2;\n this.addRafterSuperiorBeam(endMainRightX, {\n cutOutForSpan: true,\n first: false,\n last: true,\n });\n if (UI.multiSpan) {\n this.addRafterSuperiorBeam(endMainRightX, {\n cutOutForMultiSpan: true,\n first: false,\n last: true,\n });\n }\n } else if (UI.existingType == BUILDING_SIDE.BOTH) {\n endMainLeftX = -UI.totalBayLength / 2;\n this.addRafterSuperiorBeam(endMainLeftX, {\n cutOutForSpan: true,\n first: true,\n last: false,\n });\n if (UI.multiSpan) {\n this.addRafterSuperiorBeam(endMainLeftX, {\n cutOutForMultiSpan: true,\n first: true,\n last: false,\n });\n }\n\n endMainRightX = UI.totalBayLength / 2;\n this.addRafterSuperiorBeam(endMainRightX, {\n cutOutForSpan: true,\n first: false,\n last: true,\n });\n if (UI.multiSpan) {\n this.addRafterSuperiorBeam(endMainRightX, {\n cutOutForMultiSpan: true,\n first: false,\n last: true,\n });\n }\n }\n }\n }\n private addInternalRafterBeam(\n numOfRafter: number,\n numOfSpanBeam: number,\n numOfMultiSpanBeam: number\n ) {\n let offsetX = -UI.totalBayLength / 2;\n let mainRoofLength = UI.totalBayLength;\n let endCutoutLeft = -UI.totalBayLength / 2;\n let cutOutLength = UI.existingLength2;\n if (this.shouldSnapRoofToExistingWhenCutout) {\n cutOutLength = UI.existingLength2 + UI.eaveWidth;\n }\n if (UI.cutOutType == CUTOUT_ENABLE.YES && this.MANAGER.cutoutCondition) {\n // Enable cut out\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n mainRoofLength = UI.totalBayLength - cutOutLength;\n offsetX = -UI.totalBayLength / 2 + cutOutLength;\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n mainRoofLength = UI.totalBayLength - cutOutLength;\n } else if (UI.existingType == BUILDING_SIDE.BOTH) {\n mainRoofLength = UI.totalBayLength - 2 * cutOutLength;\n offsetX = -UI.totalBayLength / 2 + cutOutLength;\n }\n }\n\n const mainRoofLeft = offsetX;\n const mainRoofRight = offsetX + mainRoofLength;\n let listRafterPos = [];\n const rafterSpacing = UI.totalBayLength / (numOfRafter + 1);\n const maxBeamOverhang = this.utils.getMaximumBeamOverhang();\n for (let i = 0; i < numOfRafter; i++) {\n const offsetXRafter = endCutoutLeft + (i + 1) * rafterSpacing;\n if (\n UI.existingType == BUILDING_SIDE.LEFT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n if (\n offsetXRafter > mainRoofLeft - maxBeamOverhang &&\n offsetXRafter < mainRoofLeft + maxBeamOverhang\n ) {\n continue;\n }\n }\n if (\n UI.existingType == BUILDING_SIDE.RIGHT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n if (\n offsetXRafter > mainRoofRight - maxBeamOverhang &&\n offsetXRafter < mainRoofRight + maxBeamOverhang\n ) {\n continue;\n }\n }\n listRafterPos.push({\n offsetX: offsetXRafter,\n isMainRoof:\n offsetXRafter >= mainRoofLeft && offsetXRafter <= mainRoofRight,\n });\n }\n\n listRafterPos = this.utils.reSeperateRafterPosition(\n listRafterPos,\n offsetX,\n offsetX + mainRoofLength,\n endCutoutLeft,\n endCutoutLeft + UI.totalBayLength\n );\n\n listRafterPos.forEach((el) => {\n if (el.isMainRoof) {\n this.addRafterSuperiorBeam(el.offsetX, {\n span: true,\n first: false,\n last: false,\n });\n if (UI.multiSpan) {\n this.addRafterSuperiorBeam(el.offsetX, {\n multiSpan: true,\n first: false,\n last: false,\n });\n }\n } else {\n this.addRafterSuperiorBeam(el.offsetX, {\n cutOutForSpan: true,\n first: false,\n last: false,\n });\n if (UI.multiSpan) {\n this.addRafterSuperiorBeam(el.offsetX, {\n cutOutForMultiSpan: true,\n first: false,\n last: false,\n });\n }\n }\n });\n\n // // Add internal beam in here\n this.addInternalBeam(listRafterPos, numOfSpanBeam, numOfMultiSpanBeam);\n }\n private addInternalBeam(\n listRafterPos,\n numOfSpanBeam: number = 0,\n numOfMultiSpanBeam: number = 0\n ) {\n const startZ = this.getOffsetFromExistingBuildingToBackBeam();\n if (UI.span > 0) {\n const internalBeamSpacing = UI.span / (numOfSpanBeam + 1);\n for (let i = 0; i < numOfSpanBeam; i++) {\n this.addInternalSuperiorBeam(\n listRafterPos,\n startZ + internalBeamSpacing * (i + 1)\n );\n }\n }\n if (UI.multiSpan > 0) {\n const internalBeamSpacing = UI.multiSpan / (numOfMultiSpanBeam + 1);\n for (let i = 0; i < numOfMultiSpanBeam; i++) {\n this.addInternalSuperiorBeam(\n listRafterPos,\n startZ + UI.span + internalBeamSpacing * (i + 1)\n );\n }\n }\n }\n public addInternalSuperiorBeam(listRafterPos, offsetZ: number) {\n let endMainLeftX = -UI.totalBayLength / 2;\n let endMainRightX = UI.totalBayLength / 2;\n let endCutoutLeft = -UI.totalBayLength / 2;\n let endCutoutRight = UI.totalBayLength / 2;\n let cutOutLength = UI.existingLength2;\n if (this.shouldSnapRoofToExistingWhenCutout) {\n cutOutLength = UI.existingLength2 + UI.eaveWidth;\n }\n if (UI.cutOutType == CUTOUT_ENABLE.YES && this.MANAGER.cutoutCondition) {\n // Enable cut out\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n endCutoutLeft = -UI.totalBayLength / 2;\n endMainLeftX = -UI.totalBayLength / 2 + cutOutLength;\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n endMainRightX = UI.totalBayLength / 2 - cutOutLength;\n endCutoutRight = UI.totalBayLength / 2;\n } else if (UI.existingType == BUILDING_SIDE.BOTH) {\n endCutoutLeft = -UI.totalBayLength / 2;\n endCutoutRight = UI.totalBayLength / 2;\n endMainLeftX = -UI.totalBayLength / 2 + cutOutLength;\n endMainRightX = UI.totalBayLength / 2 - cutOutLength;\n }\n }\n\n // Main roof\n const beamWidth = this.beamInfo.width;\n const mainRafter = listRafterPos.filter((el) => el.isMainRoof);\n\n for (let i = 0; i <= mainRafter.length; i++) {\n let startX = endMainLeftX;\n if (i > 0) {\n startX = mainRafter[i - 1].offsetX;\n }\n let endX = endMainRightX;\n if (i < mainRafter.length) {\n endX = mainRafter[i].offsetX;\n }\n\n if (i == 0) {\n startX += beamWidth;\n } else {\n startX += beamWidth / 2;\n }\n\n if (i == mainRafter.length) {\n endX -= beamWidth;\n } else {\n endX -= beamWidth / 2;\n }\n this.addInternalBeamFromStartToEnd(startX, endX, offsetZ);\n }\n\n if (UI.cutOutType == CUTOUT_ENABLE.YES && this.MANAGER.cutoutCondition) {\n let cutoutBackZ = UI.existingWidth1 / 2 + UI.eaveWidth;\n if (this.shouldSnapRoofToExistingWhenCutout) {\n cutoutBackZ = UI.existingWidth1 / 2;\n }\n if (\n UI.existingType == BUILDING_SIDE.LEFT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n const cutoutRoofLength =\n this.getCutoutRoofLengthToGenerateCutoutRafterBeam();\n const cutoutLeftRafter = listRafterPos.filter(\n (el) =>\n !el.isMainRoof && el.offsetX < endCutoutLeft + cutoutRoofLength\n );\n\n if (offsetZ > cutoutBackZ + this.offsetBraketZ + beamWidth * 2) {\n for (let i = 0; i <= cutoutLeftRafter.length; i++) {\n let startX = endCutoutLeft;\n if (i > 0) {\n startX = cutoutLeftRafter[i - 1].offsetX;\n }\n let endX = endCutoutLeft + cutoutRoofLength;\n if (i < cutoutLeftRafter.length) {\n endX = cutoutLeftRafter[i].offsetX;\n }\n\n if (i == 0) {\n startX += beamWidth;\n } else {\n startX += beamWidth / 2;\n }\n\n if (i == cutoutLeftRafter.length) {\n } else {\n endX -= beamWidth / 2;\n }\n this.addInternalBeamFromStartToEnd(startX, endX, offsetZ);\n }\n }\n }\n\n if (\n UI.existingType == BUILDING_SIDE.RIGHT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n const cutoutRoofLength =\n this.getCutoutRoofLengthToGenerateCutoutRafterBeam();\n const cutoutRightRafter = listRafterPos.filter(\n (el) =>\n !el.isMainRoof && el.offsetX > endCutoutRight - cutoutRoofLength\n );\n\n if (offsetZ > cutoutBackZ + this.offsetBraketZ + beamWidth * 2) {\n for (let i = 0; i <= cutoutRightRafter.length; i++) {\n let startX = endCutoutRight - cutoutRoofLength;\n if (i > 0) {\n startX = cutoutRightRafter[i - 1].offsetX;\n }\n let endX = endCutoutRight;\n if (i < cutoutRightRafter.length) {\n endX = cutoutRightRafter[i].offsetX;\n }\n\n if (i == 0) {\n startX += 0;\n } else {\n startX += beamWidth / 2;\n }\n\n if (i == cutoutRightRafter.length) {\n endX -= beamWidth;\n } else {\n endX -= beamWidth / 2;\n }\n this.addInternalBeamFromStartToEnd(startX, endX, offsetZ);\n }\n }\n }\n }\n }\n public addInternalBeamFromStartToEnd(startX, endX, offsetZ) {\n const { fromX, toX, visible } = this.cutInternalBeamWithRakeCut(\n startX,\n endX,\n offsetZ\n );\n\n if (!visible) {\n return;\n }\n\n // Only add internal beam when beam length is greater than 200\n if (Math.abs(toX - fromX) < MIN_INTERNAL_BEAM_LENGTH) {\n return;\n }\n\n const beamWidth = this.beamInfo.width;\n const beamHeight = this.beamInfo.height;\n let scaleX = Math.abs(toX - fromX) / this.beamInfo.length;\n\n let views: Print2DView[] = [\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n // hard code 2.5 beam width. I can't find the correct offset\n const fitBeamYWhenUpStand = UI.isUpFasciaUpstandardBracket\n ? 2.5 * beamWidth * this.utils.tan(UI.patiosPitch)\n : 0;\n const offsetY =\n UI.eaveHeight -\n fitBeamYWhenUpStand +\n this.offsetYBraket +\n (UI.isUpFasciaUpstandardBracket ? 1 : -1) *\n ((offsetZ -\n this.getOffsetFromExistingBuildingToBackBeam() +\n beamWidth) *\n this.utils.tan(UI.patiosPitch));\n\n let mesh = new Mesh(\n this.beamInfo.geometry,\n MaterialManager.Instance().BEAM\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_INTERNAL_BEAM,\n views: views,\n };\n mesh.position.set(fromX, 0, 0);\n mesh.scale.setX(scaleX);\n\n let capL = new Mesh(\n this.geo_beamEndCap.geometry,\n UI.beamLayoutShow\n ? MaterialManager.Instance().BRACKET_WARNING.clone()\n : MaterialManager.Instance().BEAM.clone()\n );\n capL.position.set(\n fromX + this.geo_beamEndCap.length / 2 - 2,\n -this.geo_beamEndCap.height + beamHeight,\n 0\n );\n capL.rotateY(Math.PI / 2);\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n let capR = new Mesh(\n this.geo_beamEndCap.geometry,\n UI.beamLayoutShow\n ? MaterialManager.Instance().BRACKET_WARNING.clone()\n : MaterialManager.Instance().BEAM.clone()\n );\n capR.position.set(\n toX - this.geo_beamEndCap.length / 2 + 2,\n -this.geo_beamEndCap.height + beamHeight,\n 0\n );\n capR.rotateY(-Math.PI / 2);\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_INTERNAL_BEAM,\n views: views,\n };\n beamGroup.position.set(0, offsetY, offsetZ - beamWidth);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n\n this.scene.add(beamGroup);\n }\n public getCutoutRoofLengthToGenerateCutoutRafterBeam() {\n if (this.shouldSnapRoofToExistingWhenCutout) {\n return UI.existingLength2 + UI.eaveWidth;\n } else {\n return UI.existingLength2;\n }\n }\n public getOffsetFromExistingBuildingToBackBeam() {\n return this.offsetBraketZ + UI.eaveWidth - UI.existingWidth1 / 2;\n }\n /**\n *\n * @param offsetX : Position x of rafter beam\n */\n public addRafterSuperiorBeam(offsetX, userDataPos: any) {\n const beamWidth = this.beamInfo.width;\n const beamHeight = this.geo_RafterBeam.height;\n const beamGeoLength = this.geo_RafterBeam.length;\n let mesh;\n let cutSpanFitBeamLength = 0;\n if (+UI.upstandBraketType !== 0) {\n cutSpanFitBeamLength = UI.multiSpan ? beamWidth * 1.5 : beamWidth * 2;\n } else {\n cutSpanFitBeamLength = UI.multiSpan ? beamWidth * 0.5 : beamWidth * 1;\n }\n let beamLength =\n (UI.span - cutSpanFitBeamLength) / this.utils.cos(UI.patiosPitch);\n let cutoutWidth = UI.existingWidth1;\n if (this.shouldSnapRoofToExistingWhenCutout) {\n cutoutWidth = UI.existingWidth1 - UI.eaveWidth;\n }\n if (userDataPos.multiSpan) {\n beamLength =\n (UI.multiSpan - beamWidth * 1.5) / this.utils.cos(UI.patiosPitch);\n } else if (userDataPos.cutOutForSpan) {\n if (UI.multiSpan == 0 && UI.span - cutoutWidth - 2 * beamWidth <= 0) {\n return;\n } else if (\n UI.multiSpan > 0 &&\n UI.span - cutoutWidth - 1.5 * beamWidth <= 0\n ) {\n return;\n }\n\n beamLength =\n (UI.span - cutSpanFitBeamLength - cutoutWidth) /\n this.utils.cos(UI.patiosPitch);\n } else if (userDataPos.cutOutForMultiSpan) {\n if (UI.span + UI.multiSpan - cutoutWidth - 2 * beamWidth <= 0) {\n return;\n }\n\n if (cutoutWidth > UI.span) {\n beamLength =\n (UI.span + UI.multiSpan - beamWidth * 2 - cutoutWidth) /\n this.utils.cos(UI.patiosPitch);\n } else {\n beamLength =\n (UI.multiSpan - beamWidth * 1.5) / this.utils.cos(UI.patiosPitch);\n }\n } else if (userDataPos.rakeCutLeft) {\n beamLength =\n (UI.rakeCutLeftVer - beamWidth) / this.utils.cos(UI.patiosPitch);\n } else if (userDataPos.rakeCutRight) {\n beamLength =\n (UI.rakeCutRightVer - beamWidth) / this.utils.cos(UI.patiosPitch);\n }\n\n let offsetZ = 0;\n let offsetY = 0;\n\n // Scene position z move back\n // The plane be translated\n let shouldCutByRakeCut = true;\n if (userDataPos.span || userDataPos.cutOutForSpan) {\n offsetY =\n UI.eaveHeight -\n this.getOffsetHeightForRafterBeamByRoofPitch(true) +\n this.offsetYBraket;\n offsetZ =\n UI.span -\n (UI.multiSpan > 0 ? beamWidth / 2 : beamWidth) +\n this.getOffsetFromExistingBuildingToBackBeam();\n } else if (\n userDataPos.multiSpan ||\n userDataPos.cutOutForMultiSpan ||\n userDataPos.rakeCutLeft ||\n userDataPos.rakeCutRight\n ) {\n if (userDataPos.rakeCutLeft || userDataPos.rakeCutRight) {\n shouldCutByRakeCut = false;\n }\n offsetY =\n UI.eaveHeight -\n this.getOffsetHeightForRafterBeamByRoofPitch(false) +\n this.offsetYBraket;\n offsetZ =\n UI.span +\n UI.multiSpan -\n beamWidth +\n this.getOffsetFromExistingBuildingToBackBeam();\n }\n\n let offsetXRafter = offsetX;\n if (userDataPos.last) {\n offsetXRafter = offsetX - this.geo_RafterBeam.width;\n } else if (!userDataPos.first && !userDataPos.last) {\n offsetXRafter = offsetX - this.geo_RafterBeam.width / 2;\n }\n\n if (shouldCutByRakeCut) {\n const { newStartZ, newLength, fitYForNewStartZPoint } =\n this.cutRafterBeamWithRakeCut(offsetZ, offsetXRafter, beamLength);\n if (!_.isNil(newStartZ)) {\n offsetZ = newStartZ;\n }\n if (!_.isNil(newLength)) {\n beamLength = newLength;\n }\n if (!_.isNil(fitYForNewStartZPoint)) {\n if (UI.isUpFasciaUpstandardBracket) {\n offsetY -= fitYForNewStartZPoint;\n } else {\n offsetY += fitYForNewStartZPoint;\n }\n }\n }\n\n const fitBeamWidthToCut = beamHeight * this.utils.tan(UI.patiosPitch);\n let scaleX = (beamLength + fitBeamWidthToCut) / beamGeoLength;\n\n let views: Print2DView[] = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n let material = this.getRafterBeamMaterial(userDataPos, offsetZ, beamLength);\n mesh = new Mesh(this.geo_RafterBeam.geometry, material);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM,\n position: userDataPos,\n views: views,\n };\n mesh.position.set(\n UI.isUpFasciaUpstandardBracket ? 0 : -fitBeamWidthToCut,\n 0,\n 0\n );\n mesh.scale.setX(scaleX);\n\n let { capL, capR } = this.getBeamEndCapForRafterBeam(0, beamLength);\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM,\n position: userDataPos,\n views: views,\n };\n\n beamGroup.position.set(offsetXRafter, offsetY, offsetZ);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n\n beamGroup.rotateY(Math.PI / 2);\n\n beamGroup.rotateZ(\n UI.isUpFasciaUpstandardBracket\n ? -this.utils.degreesToRadians(UI.patiosPitch)\n : this.utils.degreesToRadians(UI.patiosPitch)\n );\n\n this.scene.add(beamGroup);\n }\n private getBeamEndCapForRafterBeam(offsetXL, offsetXR) {\n let capL;\n let capR;\n let matEndCap = this.getRafterBeamEndCapMaterial();\n\n let checkExec = /\\w{1}\\d{1,3}x(\\d{1,3})/.exec(this.geo_RafterBeam.name);\n let beamSize = checkExec && checkExec.length == 2 ? checkExec[1] : \"\";\n let lowerBraketName = getBeamEndCapCode(\n this.geo_rafterBeamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n );\n let higherBraketName = getBeamEndCapCode(\n this.geo_rafterBeamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n );\n\n capL = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capL.position.set(offsetXL - 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capL.scale.setY(\n (this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length * this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capL.rotateY(Math.PI / 2);\n capL.rotateX(\n UI.isUpFasciaUpstandardBracket\n ? -this.utils.degreesToRadians(UI.patiosPitch)\n : this.utils.degreesToRadians(UI.patiosPitch)\n );\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: lowerBraketName,\n };\n\n capR = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capR.position.set(\n offsetXR + 2,\n -this.geo_rafterBeamEndCap.length * this.utils.tan(UI.patiosPitch),\n this.geo_rafterBeamEndCap.width / 2\n );\n capR.scale.setY(\n (this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length * this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capR.rotateY(-Math.PI / 2);\n capR.rotateX(\n UI.isUpFasciaUpstandardBracket\n ? this.utils.degreesToRadians(UI.patiosPitch)\n : -this.utils.degreesToRadians(UI.patiosPitch)\n );\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: higherBraketName,\n };\n\n return {\n capL,\n capR,\n };\n }\n private getRafterBeamEndCapMaterial() {\n const matEndCap = UI.beamLayoutShow\n ? MaterialManager.Instance().BRACKET_WARNING.clone()\n : MaterialManager.Instance().BEAM.clone();\n let heightPlane = UI.eaveHeight + this.offsetYBraket;\n let planeTop = new Plane(new Vector3(0, -1, 0));\n let matrixTranslateTop = new Matrix4().makeTranslation(0, heightPlane, 0);\n let matrixRotateTop = new Matrix4().makeRotationX(\n UI.isUpFasciaUpstandardBracket\n ? -this.utils.degreesToRadians(UI.patiosPitch)\n : this.utils.degreesToRadians(UI.patiosPitch)\n ); //tao voi z pitch do\n let matrixTotalTop = matrixTranslateTop.multiply(matrixRotateTop);\n planeTop.applyMatrix4(matrixTotalTop);\n\n let heightRealBottom =\n UI.eaveHeight + this.offsetYBraket - this.beamInfo.height;\n\n let planeBottom = new Plane(new Vector3(0, 1, 0));\n let matrixTranslateBottom = new Matrix4().makeTranslation(\n 0,\n heightRealBottom,\n 0\n );\n let matrixRotateBottom = new Matrix4().makeRotationX(\n UI.isUpFasciaUpstandardBracket\n ? -this.utils.degreesToRadians(UI.patiosPitch)\n : this.utils.degreesToRadians(UI.patiosPitch)\n ); //tao voi z pitch do\n let matrixTotalBottom = matrixTranslateBottom.multiply(matrixRotateBottom);\n planeBottom.applyMatrix4(matrixTotalBottom);\n\n planeTop.translate(\n new Vector3(\n 0,\n 0,\n this.getOffsetFromExistingBuildingToBackBeam() - this.scene.position.z\n )\n );\n planeBottom.translate(\n new Vector3(\n 0,\n 0,\n this.getOffsetFromExistingBuildingToBackBeam() - this.scene.position.z\n )\n );\n matEndCap.clippingPlanes = [planeTop, planeBottom];\n\n return matEndCap;\n }\n private getRafterBeamMaterial(userDataPos, offsetZ, beamLength) {\n let material = MaterialManager.Instance().BEAM.clone();\n\n let cutFrontZ = offsetZ;\n let cutBackZ = offsetZ - beamLength * this.utils.cos(UI.patiosPitch);\n\n if (cutFrontZ != 0 || cutBackZ != 0) {\n let nBottom = new Vector3(0, 0, -1).normalize();\n let pBottom = new Vector3(0, 0, cutFrontZ);\n let planeBottom = new Plane().setFromNormalAndCoplanarPoint(\n nBottom,\n pBottom\n );\n\n let nVer = new Vector3(0, 0, 1).normalize();\n let pVer = new Vector3(0, 0, cutBackZ);\n let planeVer = new Plane().setFromNormalAndCoplanarPoint(nVer, pVer);\n\n material.clippingPlanes = [planeBottom, planeVer];\n }\n\n return material;\n }\n private cutInternalBeamWithRakeCut(startX, endX, offsetZ) {\n // startZ is start point of rafter beam\n // startZ > endZ\n const fromX = Math.min(startX, endX);\n const toX = Math.max(startX, endX);\n const beamWidth = this.beamInfo.width;\n const offsetZFrontBeam =\n UI.span + UI.multiSpan + this.getOffsetFromExistingBuildingToBackBeam();\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n const rakeCutVerLength =\n this.beamLeftCutSizeInfo.v + this.beamLeftCutSizeInfo.k_;\n const rakeCutHorLength = this.beamLeftCutSizeInfo.l;\n\n const beamLine = new Line3(\n new Vector3(toX, 0, offsetZ - beamWidth / 2),\n new Vector3(fromX, 0, offsetZ - beamWidth / 2)\n );\n const beamRakeCutLength = Math.sqrt(\n Math.pow(rakeCutHorLength, 2) + Math.pow(rakeCutVerLength, 2)\n );\n const cosAngleFrontHor = rakeCutHorLength / beamRakeCutLength;\n\n const startRakeCut = new Vector3(\n -UI.totalBayLength / 2,\n 0,\n offsetZFrontBeam - rakeCutVerLength - beamWidth / cosAngleFrontHor\n );\n const endRakeCut = new Vector3(\n -UI.totalBayLength / 2 + rakeCutHorLength,\n 0,\n offsetZFrontBeam - beamWidth / cosAngleFrontHor\n );\n const rakeCutLine = new Line3(startRakeCut, endRakeCut);\n const intersection = this.utils.getIntersectionOnAPoint(\n beamLine,\n rakeCutLine\n );\n\n if (intersection) {\n if (\n this.utils.isPositive(beamLine.start, beamLine.end, intersection) &&\n this.utils.isPositive(\n rakeCutLine.start,\n rakeCutLine.end,\n intersection\n ) &&\n intersection.x >= fromX &&\n intersection.x <= toX\n ) {\n return {\n fromX: intersection.x,\n toX,\n visible: true,\n };\n } else {\n if (intersection.x > fromX && intersection.x > toX) {\n return {\n fromX,\n toX,\n visible: false,\n };\n }\n }\n }\n } else if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n const beamLine = new Line3(\n new Vector3(fromX, 0, offsetZ - beamWidth / 2),\n new Vector3(toX, 0, offsetZ - beamWidth / 2)\n );\n const startRakeCut = new Vector3(\n -UI.totalBayLength / 2 + UI.rakeCutLeftHor + beamWidth,\n 0,\n offsetZFrontBeam\n );\n const endRakeCut = new Vector3(\n -UI.totalBayLength / 2 + UI.rakeCutLeftHor + beamWidth,\n 0,\n offsetZFrontBeam - UI.rakeCutLeftVer - beamWidth\n );\n\n const rakeCutLine = new Line3(endRakeCut, startRakeCut);\n const intersection = this.utils.getIntersectionOnAPoint(\n beamLine,\n rakeCutLine,\n true\n );\n\n if (intersection) {\n if (\n this.utils.isPositive(beamLine.start, beamLine.end, intersection) &&\n this.utils.isPositive(\n rakeCutLine.start,\n rakeCutLine.end,\n intersection\n ) &&\n intersection.x >= fromX &&\n intersection.x <= toX\n ) {\n return {\n fromX: intersection.x,\n toX,\n visible: true,\n };\n } else {\n if (intersection.x > fromX && intersection.x > toX) {\n return {\n fromX,\n toX,\n visible: false,\n };\n }\n }\n }\n }\n\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n const rakeCutVerLength =\n this.beamRightCutSizeInfo.v + this.beamRightCutSizeInfo.k_;\n const rakeCutHorLength = this.beamRightCutSizeInfo.l;\n\n const beamLine = new Line3(\n new Vector3(fromX, 0, offsetZ - beamWidth / 2),\n new Vector3(toX, 0, offsetZ - beamWidth / 2)\n );\n const beamRakeCutLength = Math.sqrt(\n Math.pow(rakeCutHorLength, 2) + Math.pow(rakeCutVerLength, 2)\n );\n const cosAngleFrontHor = rakeCutHorLength / beamRakeCutLength;\n\n const startRakeCut = new Vector3(\n UI.totalBayLength / 2,\n 0,\n offsetZFrontBeam - rakeCutVerLength - beamWidth / cosAngleFrontHor\n );\n const endRakeCut = new Vector3(\n UI.totalBayLength / 2 - rakeCutHorLength,\n 0,\n offsetZFrontBeam - beamWidth / cosAngleFrontHor\n );\n const rakeCutLine = new Line3(startRakeCut, endRakeCut);\n const intersection = this.utils.getIntersectionOnAPoint(\n beamLine,\n rakeCutLine\n );\n\n if (intersection) {\n if (\n this.utils.isPositive(beamLine.start, beamLine.end, intersection) &&\n this.utils.isPositive(\n rakeCutLine.start,\n rakeCutLine.end,\n intersection\n ) &&\n intersection.x >= fromX &&\n intersection.x <= toX\n ) {\n return {\n fromX,\n toX: intersection.x,\n visible: true,\n };\n } else {\n if (intersection.x < fromX && intersection.x < toX) {\n return {\n fromX,\n toX,\n visible: false,\n };\n }\n }\n }\n } else if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n const beamLine = new Line3(\n new Vector3(toX, 0, offsetZ - beamWidth / 2),\n new Vector3(fromX, 0, offsetZ - beamWidth / 2)\n );\n const startRakeCut = new Vector3(\n UI.totalBayLength / 2 - UI.rakeCutRightHor - beamWidth,\n 0,\n offsetZFrontBeam\n );\n const endRakeCut = new Vector3(\n UI.totalBayLength / 2 - UI.rakeCutRightHor - beamWidth,\n 0,\n offsetZFrontBeam - UI.rakeCutRightVer - beamWidth\n );\n\n const rakeCutLine = new Line3(endRakeCut, startRakeCut);\n const intersection = this.utils.getIntersectionOnAPoint(\n beamLine,\n rakeCutLine,\n true\n );\n\n if (intersection) {\n if (\n this.utils.isPositive(beamLine.start, beamLine.end, intersection) &&\n this.utils.isPositive(\n rakeCutLine.start,\n rakeCutLine.end,\n intersection\n ) &&\n intersection.x >= fromX &&\n intersection.x <= toX\n ) {\n return {\n fromX,\n toX: intersection.x,\n visible: true,\n };\n } else {\n if (intersection.x < fromX && intersection.x < toX) {\n return {\n fromX,\n toX,\n visible: false,\n };\n }\n }\n }\n }\n\n return {\n fromX,\n toX,\n visible: true,\n };\n }\n private cutRafterBeamWithRakeCut(offsetZ, offsetX, beamLength) {\n // startZ is start point of rafter beam\n // startZ > endZ\n const beamWidth = this.beamInfo.width;\n let startZ = offsetZ;\n let endZ = offsetZ - beamLength * this.utils.cos(UI.patiosPitch);\n const offsetZFrontBeam =\n UI.span + UI.multiSpan + this.getOffsetFromExistingBuildingToBackBeam();\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n const rakeCutVerLength =\n this.beamLeftCutSizeInfo.v + this.beamLeftCutSizeInfo.k_;\n const rakeCutHorLength = this.beamLeftCutSizeInfo.l;\n\n const beamLine = new Line3(\n new Vector3(offsetX, 0, startZ),\n new Vector3(offsetX, 0, endZ)\n );\n const beamRakeCutLength = Math.sqrt(\n Math.pow(rakeCutHorLength, 2) + Math.pow(rakeCutVerLength, 2)\n );\n const cosAngleFrontHor = rakeCutHorLength / beamRakeCutLength;\n\n const startRakeCut = new Vector3(\n -UI.totalBayLength / 2,\n 0,\n offsetZFrontBeam - rakeCutVerLength - beamWidth / cosAngleFrontHor\n );\n const endRakeCut = new Vector3(\n -UI.totalBayLength / 2 + rakeCutHorLength,\n 0,\n offsetZFrontBeam - beamWidth / cosAngleFrontHor\n );\n\n const intersection = this.utils.getIntersectionOnAPoint(\n beamLine,\n new Line3(startRakeCut, endRakeCut)\n );\n\n if (intersection && intersection.z < startZ) {\n const newStartZ = intersection.z;\n const newLength =\n Math.abs(newStartZ - endZ) / this.utils.cos(UI.patiosPitch);\n const fitYForNewStartZPoint =\n Math.abs(startZ - newStartZ) * this.utils.tan(UI.patiosPitch);\n\n return { newStartZ, newLength, fitYForNewStartZPoint };\n }\n } else if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n const beamLine = new Line3(\n new Vector3(offsetX + 2, 0, startZ),\n new Vector3(offsetX + 2, 0, endZ)\n );\n const startRakeCut = new Vector3(\n -UI.totalBayLength / 2,\n 0,\n offsetZFrontBeam - UI.rakeCutLeftVer - beamWidth\n );\n const endRakeCut = new Vector3(\n -UI.totalBayLength / 2 + UI.rakeCutLeftHor + beamWidth,\n 0,\n offsetZFrontBeam - UI.rakeCutLeftVer - beamWidth\n );\n\n const intersection = this.utils.getIntersectionOnAPoint(\n beamLine,\n new Line3(endRakeCut, startRakeCut),\n true\n );\n\n if (intersection && intersection.z < startZ) {\n const newStartZ = intersection.z;\n const newLength =\n Math.abs(newStartZ - endZ) / this.utils.cos(UI.patiosPitch);\n const fitYForNewStartZPoint =\n Math.abs(startZ - newStartZ) * this.utils.tan(UI.patiosPitch);\n\n return { newStartZ, newLength, fitYForNewStartZPoint };\n }\n }\n\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n const rakeCutVerLength =\n this.beamRightCutSizeInfo.v + this.beamRightCutSizeInfo.k_;\n const rakeCutHorLength = this.beamRightCutSizeInfo.l;\n\n const beamLine = new Line3(\n new Vector3(offsetX + beamWidth, 0, startZ),\n new Vector3(offsetX + beamWidth, 0, endZ)\n );\n const beamRakeCutLength = Math.sqrt(\n Math.pow(rakeCutHorLength, 2) + Math.pow(rakeCutVerLength, 2)\n );\n const cosAngleFrontHor = rakeCutHorLength / beamRakeCutLength;\n\n const startRakeCut = new Vector3(\n UI.totalBayLength / 2,\n 0,\n offsetZFrontBeam - rakeCutVerLength - beamWidth / cosAngleFrontHor\n );\n const endRakeCut = new Vector3(\n UI.totalBayLength / 2 - rakeCutHorLength,\n 0,\n offsetZFrontBeam - beamWidth / cosAngleFrontHor\n );\n\n const intersection = this.utils.getIntersectionOnAPoint(\n beamLine,\n new Line3(startRakeCut, endRakeCut)\n );\n\n if (intersection && intersection.z < startZ) {\n const newStartZ = intersection.z;\n const newLength =\n Math.abs(newStartZ - endZ) / this.utils.cos(UI.patiosPitch);\n const fitYForNewStartZPoint =\n Math.abs(startZ - newStartZ) * this.utils.tan(UI.patiosPitch);\n\n return { newStartZ, newLength, fitYForNewStartZPoint };\n }\n } else if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n const beamLine = new Line3(\n new Vector3(offsetX + beamWidth - 2, 0, startZ),\n new Vector3(offsetX + beamWidth - 2, 0, endZ)\n );\n const startRakeCut = new Vector3(\n UI.totalBayLength / 2,\n 0,\n offsetZFrontBeam - UI.rakeCutRightVer - beamWidth\n );\n const endRakeCut = new Vector3(\n UI.totalBayLength / 2 - UI.rakeCutRightHor - beamWidth,\n 0,\n offsetZFrontBeam - UI.rakeCutRightVer - beamWidth\n );\n\n const intersection = this.utils.getIntersectionOnAPoint(\n beamLine,\n new Line3(endRakeCut, startRakeCut),\n true\n );\n\n if (intersection && intersection.z < startZ) {\n const newStartZ = intersection.z;\n const newLength =\n Math.abs(newStartZ - endZ) / this.utils.cos(UI.patiosPitch);\n const fitYForNewStartZPoint =\n Math.abs(startZ - newStartZ) * this.utils.tan(UI.patiosPitch);\n\n return { newStartZ, newLength, fitYForNewStartZPoint };\n }\n }\n\n return { newStartZ: null, newLength: null, fitYForNewStartZPoint: null };\n }\n private houseBeamHeight() {\n return this.geoBeam.height - this.geoHouseBeam.height;\n }\n\n public addUpstandBeam() {\n if (UI.upstandBraketType == 0 || UI.listBay.length == 0) {\n return;\n }\n let pos = new Vector3(\n -UI.totalBayLength / 2 - UI.overhangLeft,\n UI.existingWallHeight + this.offsetYBraket + this.houseBeamHeight(),\n UI.eaveWidth +\n this.geoBraket_2.height / 4 +\n this.geoBraket_1.width / 2 -\n UI.existingWidth1 / 2\n );\n let totalLength = UI.totalBayLength + UI.overhangLeft + UI.overhangRight;\n if (!HomeComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n if (\n UI.existingType == BUILDING_SIDE.LEFT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n totalLength -= UI.existingLength2;\n pos.setX(pos.x + UI.existingLength2);\n }\n if (\n UI.existingType == BUILDING_SIDE.RIGHT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n totalLength -= UI.existingLength2;\n }\n }\n let views: Print2DView[];\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n this.cutStandardBeamToEqualLengthBeam(\n this.geoHouseBeam,\n this.geoHouseBeamEndCap,\n totalLength,\n pos,\n new Vector3(),\n views,\n 1,\n { back: true },\n 0,\n \"x\",\n this.geoHouseBeamJoint\n );\n // Beam cutout\n if (!HomeComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n let offsetHeightCutout = +this.offsetYBraket + this.houseBeamHeight();\n if (UI.isUpFasciaUpstandardBracket) {\n offsetHeightCutout +=\n UI.existingWidth1 * this.utils.tan(UI.patiosPitch);\n } else {\n offsetHeightCutout -=\n UI.existingWidth1 * this.utils.tan(UI.patiosPitch);\n }\n\n if (offsetHeightCutout < 0) {\n return;\n }\n if (UI.existingType == 1 || UI.existingType == 3) {\n this.cutStandardBeamToEqualLengthBeam(\n this.geoHouseBeam,\n this.geoHouseBeamEndCap,\n UI.existingLength2,\n new Vector3(\n -UI.totalBayLength / 2 - UI.overhangLeft,\n UI.existingWallHeight + offsetHeightCutout,\n UI.eaveWidth +\n this.geoBraket_2.height / 4 +\n this.geoBraket_1.width / 2 +\n UI.existingWidth1 / 2\n ),\n new Vector3(),\n views,\n 1,\n { back: true },\n 0,\n \"x\",\n this.geoHouseBeamJoint\n );\n }\n if (UI.existingType == 2 || UI.existingType == 3) {\n this.cutStandardBeamToEqualLengthBeam(\n this.geoHouseBeam,\n this.geoHouseBeamEndCap,\n UI.existingLength2,\n new Vector3(\n UI.totalBayLength / 2 - UI.existingLength2 + UI.overhangRight,\n UI.existingWallHeight + offsetHeightCutout,\n UI.eaveWidth +\n this.geoBraket_2.height / 4 +\n this.geoBraket_1.width / 2 +\n UI.existingWidth1 / 2\n ),\n new Vector3(),\n views,\n 1,\n { back: true },\n 0,\n \"x\",\n this.geoHouseBeamJoint\n );\n }\n }\n }\n\n public addUpstandBraket(numOfBraket = 2) {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.UPSTAND_BRAKET\n )\n );\n if (UI.upstandBraketType == 0 || UI.listBay.length == 0) {\n return;\n }\n let height = UI.upstandBraketType + this.houseBeamHeight();\n\n const _bracketOffsetXExt = this.geoBraket_2.height / 5;\n let distance = 1000;\n let offsetX = -UI.existingLength1 / 2;\n let bayMainLength = UI.totalBayLength;\n if (!HomeComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n if (UI.existingType == 1 || UI.existingType == 2) {\n bayMainLength -= UI.existingLength2;\n }\n if (UI.existingType == 3) {\n bayMainLength -= 2 * UI.existingLength2;\n }\n }\n\n if (UI.existingType == 0) {\n let startX =\n -bayMainLength / 2 > -UI.existingLength1 / 2\n ? -bayMainLength / 2\n : -UI.existingLength1 / 2;\n let endX =\n bayMainLength / 2 < UI.existingLength1 / 2\n ? bayMainLength / 2\n : UI.existingLength1 / 2;\n distance = (endX - startX) / (numOfBraket - 1);\n offsetX = startX;\n } else if (UI.existingType == 1) {\n distance = (bayMainLength - _bracketOffsetXExt) / (numOfBraket - 1);\n offsetX = -bayMainLength / 2 + _bracketOffsetXExt;\n if (bayMainLength > UI.existingLength1 - UI.eaveWidth) {\n distance =\n (UI.existingLength1 - UI.eaveWidth - _bracketOffsetXExt) /\n (numOfBraket - 1);\n }\n if (!HomeComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n offsetX =\n -bayMainLength / 2 + UI.existingLength2 / 2 + _bracketOffsetXExt;\n }\n } else if (UI.existingType == 2) {\n offsetX = -bayMainLength / 2;\n distance = (bayMainLength - _bracketOffsetXExt) / (numOfBraket - 1);\n\n if (bayMainLength > UI.existingLength1 - UI.eaveWidth) {\n offsetX =\n -bayMainLength / 2 +\n (bayMainLength - UI.existingLength1 + UI.eaveWidth);\n distance =\n (UI.existingLength1 - _bracketOffsetXExt - UI.eaveWidth) /\n (numOfBraket - 1);\n }\n\n if (!HomeComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n offsetX -= UI.existingLength2 / 2;\n }\n } else if (UI.existingType == 3) {\n distance = (bayMainLength - _bracketOffsetXExt * 2) / (numOfBraket - 1);\n offsetX = -bayMainLength / 2 + _bracketOffsetXExt;\n }\n\n let optionBrakets: UpstandBraketOptions = {\n container: this.scene,\n position: new Vector3(),\n geoBraket_1: this.geoBraket_1,\n geoBraket_2: this.geoBraket_2,\n height: height,\n material: MaterialManager.Instance().FASCIA_BRACKET.clone(),\n };\n let views: Print2DView[] = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n let userData = {\n type: GEOMETRY_TYPE.UPSTAND_BRAKET,\n views: views,\n };\n for (let i = 0; i < numOfBraket; i++) {\n let posX = offsetX;\n if (i == 0) {\n posX = posX + this.geoBraket_1.width / 2;\n } else if (i == numOfBraket - 1) {\n posX = posX - this.geoBraket_1.width / 2;\n }\n new UpstandBraket({\n ...optionBrakets,\n position: new Vector3(\n posX,\n UI.existingWallHeight,\n UI.eaveWidth - UI.existingWidth1 / 2\n ),\n userData: userData,\n });\n offsetX += distance;\n }\n }\n\n public addUpstandBraketCutOut(numOfBraket = 2) {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.UPSTAND_BRAKET_CUTOUT\n )\n );\n if (HomeComponent.ins.sltCutOut._isDisable || UI.cutOutType == 0) {\n return;\n }\n if (UI.upstandBraketType == 0 || UI.listBay.length == 0) {\n return;\n }\n let height = UI.upstandBraketType + this.houseBeamHeight();\n\n if (UI.isUpFasciaUpstandardBracket) {\n height += UI.existingWidth1 * this.utils.tan(UI.patiosPitch);\n } else {\n height -= UI.existingWidth1 * this.utils.tan(UI.patiosPitch);\n }\n\n if (height < 0) {\n return;\n }\n const _bracketOffsetXExt = this.geoBraket_2.height / 5;\n if (UI.existingType == 1 || UI.existingType == 3) {\n let _offsetZ = UI.existingWidth2 > 0 ? UI.overhangLeft : 0;\n let distance =\n (UI.existingLength2 - UI.eaveWidth - UI.overhangLeft + _offsetZ) /\n (numOfBraket - 1);\n let offsetZ = -UI.totalBayLength / 2 - _offsetZ + _bracketOffsetXExt;\n\n let optionBrakets: UpstandBraketOptions = {\n container: this.scene,\n position: new Vector3(),\n geoBraket_1: this.geoBraket_1,\n geoBraket_2: this.geoBraket_2,\n height: height,\n material: MaterialManager.Instance().FASCIA_BRACKET.clone(),\n };\n let views: Print2DView[] = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n let userData = {\n type: GEOMETRY_TYPE.UPSTAND_BRAKET_CUTOUT,\n views: views,\n };\n for (let i = 0; i < numOfBraket; i++) {\n let posX = offsetZ;\n if (i == 0) {\n posX = posX + this.geoBraket_1.width / 2;\n } else if (i == numOfBraket - 1) {\n posX = posX - this.geoBraket_1.width / 2;\n }\n new UpstandBraket({\n ...optionBrakets,\n position: new Vector3(\n posX,\n UI.existingWallHeight,\n UI.eaveWidth + UI.existingWidth1 / 2\n ),\n userData: userData,\n });\n offsetZ += distance;\n }\n }\n if (UI.existingType == 2 || UI.existingType == 3) {\n let _offsetZ = UI.existingWidth2 > 0 ? UI.overhangRight : 0;\n let distance =\n (UI.existingLength2 - (UI.overhangRight + UI.eaveWidth) + _offsetZ) /\n (numOfBraket - 1);\n let offsetZ =\n UI.totalBayLength / 2 -\n UI.existingLength2 +\n UI.eaveWidth +\n UI.overhangRight -\n _bracketOffsetXExt;\n let optionBrakets: UpstandBraketOptions = {\n container: this.scene,\n position: new Vector3(),\n geoBraket_1: this.geoBraket_1,\n geoBraket_2: this.geoBraket_2,\n height: height,\n material: MaterialManager.Instance().FASCIA_BRACKET.clone(),\n };\n let views: Print2DView[] = [\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n let userData = {\n type: GEOMETRY_TYPE.UPSTAND_BRAKET_CUTOUT,\n views: views,\n };\n for (let i = 0; i < numOfBraket; i++) {\n let posX = offsetZ;\n if (i == 0) {\n posX = posX + this.geoBraket_1.width / 2;\n } else if (i == numOfBraket - 1) {\n posX = posX - this.geoBraket_1.width / 2;\n }\n new UpstandBraket({\n ...optionBrakets,\n position: new Vector3(\n posX,\n UI.existingWallHeight,\n UI.eaveWidth + UI.existingWidth1 / 2\n ),\n userData: userData,\n });\n offsetZ += distance;\n }\n }\n }\n private addDownPipe() {\n if (UI.isUpFasciaUpstandardBracket) {\n return;\n }\n let offsetZ =\n UI.span +\n UI.multiSpan +\n UI.eaveWidth +\n 100 -\n UI.existingWidth1 / 2 +\n this.offsetBraketZ;\n let offsetX = -this.totalBaySize / 2 + 50;\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n offsetX = this.totalBaySize / 2 - 50;\n }\n //Rakecut\n //Downpipe will be in left\n if (UI.rakeCutLeftType != RAKECUT_TYPE.NONE) {\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n offsetX = -this.totalBaySize / 2 + this.beamLeftCutSizeInfo.l;\n } else if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n offsetX = -this.totalBaySize / 2 + UI.rakeCutLeftHor + UI.overhangFront;\n }\n }\n //Downpipe will be in right\n else {\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n offsetX = this.totalBaySize / 2 - this.beamRightCutSizeInfo.l;\n } else if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n offsetX = this.totalBaySize / 2 - UI.rakeCutRightHor - UI.overhangFront;\n }\n }\n\n this.downpipeGroup.position.set(offsetX, 0, offsetZ);\n\n let offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight,\n UI.span + UI.multiSpan + UI.overhangFront,\n UI.patiosPitch,\n -1\n ) + this.offsetYBraket;\n\n this.downpipeGroup = this.utils.createDownpipeGroup(\n this.APP,\n this.downpipeGroup,\n this.geo_downPipe,\n this.geo_downPipeL,\n offsetX,\n 0,\n offsetZ,\n offsetZ,\n 0,\n UI.overhangFront,\n offsetY,\n true\n );\n }\n private addDownPipeStepRakecut() {\n if (UI.isUpFasciaUpstandardBracket) {\n return;\n }\n if (\n UI.rakeCutLeftType != RAKECUT_TYPE.STEP &&\n UI.rakeCutRightType != RAKECUT_TYPE.STEP\n ) {\n return;\n }\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n let offsetX = -this.totalBaySize / 2 + 50;\n let offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight,\n UI.span + UI.multiSpan + UI.overhangFront - UI.rakeCutLeftVer,\n UI.patiosPitch,\n -1\n ) +\n this.geometryManager.getRoofBase().height -\n 30 +\n this.offsetYBraket;\n let offsetZ =\n UI.span +\n UI.multiSpan +\n UI.overhangFront +\n UI.eaveWidth +\n 40 -\n UI.existingWidth1 / 2 -\n UI.rakeCutLeftVer +\n this.offsetBraketZ;\n\n this.downpipeStepRakeCutGroupLeft.position.set(offsetX, 0, offsetZ);\n\n if (this.APP.sltGutterType.currentValue == 0) {\n offsetY -= 80;\n } else {\n offsetY -= 60;\n }\n\n let userData = { type: GEOMETRY_TYPE.DOWNPIPE };\n\n let scaleY = offsetY / this.geo_downPipe.height;\n\n let meshPipe = new Mesh(\n this.geo_downPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipe.userData = userData;\n meshPipe.scale.setY(scaleY);\n\n this.downpipeStepRakeCutGroupLeft.add(meshPipe);\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n let offsetX = this.totalBaySize / 2 - 50;\n let offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight,\n UI.span + UI.multiSpan + UI.overhangFront - UI.rakeCutRightVer,\n UI.patiosPitch,\n -1\n ) +\n this.geometryManager.getRoofBase().height -\n 30 +\n this.offsetYBraket;\n let offsetZ =\n UI.span +\n UI.multiSpan +\n UI.overhangFront +\n UI.eaveWidth +\n 40 -\n UI.existingWidth1 / 2 -\n UI.rakeCutRightVer +\n this.offsetBraketZ;\n\n this.downpipeStepRakeCutGroupRight.position.set(offsetX, 0, offsetZ);\n\n if (this.APP.sltGutterType.currentValue == 0) {\n offsetY -= 80;\n } else {\n offsetY -= 60;\n }\n\n let userData = { type: GEOMETRY_TYPE.DOWNPIPE };\n\n let scaleY = offsetY / this.geo_downPipe.height;\n\n let meshPipe = new Mesh(\n this.geo_downPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipe.userData = userData;\n meshPipe.scale.setY(scaleY);\n\n this.downpipeStepRakeCutGroupRight.add(meshPipe);\n }\n }\n private addGround() {\n let offsetX = -(this.totalBaySize / 2 + UI.overhangLeft);\n let offsetZ = -UI.existingWidth1 / 2 - UI.overhangBack;\n let width = this.totalBaySize + UI.overhangLeft + UI.overhangRight;\n let length =\n UI.span +\n UI.multiSpan +\n UI.overhangFront +\n this.APP.sldBackOverhang.currentValue +\n UI.eaveWidth;\n\n let base = new Mesh(\n this.geo_groundBase.geometry,\n MaterialManager.Instance().BASE\n );\n base.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GROUND_BASE,\n };\n base.position.set(offsetX, 0, offsetZ + this.offsetBraketZ);\n base.scale.set(\n width / this.geo_groundBase.width,\n 1,\n length / this.geo_groundBase.length\n );\n\n this.scene.add(base);\n }\n private getRoofHeight() {\n const _height = this.utils.getHeightByAngle(\n UI.eaveHeight,\n UI.span + UI.multiSpan + UI.overhangFront,\n UI.patiosPitch,\n -1\n );\n return UI.eaveHeight - _height;\n }\n private updateUI() {\n this.APP.roofHeight = this.getRoofHeight();\n this.APP.sldMinHeight.setValue(_.round(this.frontPostHeight, 0));\n }\n public getSection(): Printing2DGeometry {\n let objs = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_POST\n );\n\n objs = [...objs];\n\n let lsGeometries: Printing2DLine[] = [];\n\n for (let o of objs) {\n let box = new BoxHelper(o);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n //this.scene.add(box);\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: outlineGeo.vertices,\n views: o.userData.views,\n });\n\n // var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"OUTLINE\"};\n // //line.position.set(o.position.x - 5000, o.position.y, o.position.z);\n // this.scene.add( line );\n }\n let beamGroups = this.scene.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM ||\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_INTERNAL_BEAM\n );\n for (let g of beamGroups) {\n for (let c of g.children) {\n c.updateMatrix();\n\n let objCloned = c.clone();\n objCloned.applyMatrix4(new Matrix4().getInverse(c.matrix));\n\n const planView = _.find(\n g.userData.views,\n (el) => el.viewType == ViewType.PLAN\n );\n if (planView) {\n this.utils.getPlanVerticesOfBeam(c as Mesh, lsGeometries, [planView]);\n }\n\n let box = new BoxHelper(objCloned);\n c.updateWorldMatrix(true, true);\n box.geometry.applyMatrix4(c.matrixWorld);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo.vertices,\n views: _.filter(\n g.userData.views,\n (el) => el.viewType != ViewType.PLAN\n ),\n });\n }\n }\n\n let braketGroup = this.scene.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.UPSTAND_BRAKET ||\n o.userData.type == GEOMETRY_TYPE.UPSTAND_BRAKET_CUTOUT\n );\n\n for (let g of braketGroup) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n g.children[1] as Mesh,\n 60\n );\n g.children[1].updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(g.children[1].matrixWorld);\n outlineGeo.translate(0, 5000, 0);\n\n let simplifiedGeo = this.simplifyGeo(outlineGeo);\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: simplifiedGeo.vertices,\n views: g.userData.views,\n });\n\n g.children[0].updateMatrix();\n let objCloned = g.children[0].clone();\n objCloned.applyMatrix4(new Matrix4().getInverse(g.children[0].matrix));\n\n let box = new BoxHelper(objCloned);\n\n g.children[0].updateWorldMatrix(true, true);\n\n box.geometry.applyMatrix4(g.children[0].matrixWorld);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n //this.APP.scene.add(box);\n\n let outlineGeo1 = this.simplifyGeo(box.geometry as BufferGeometry);\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo1.vertices,\n views: g.userData.views,\n });\n }\n\n let rafterBeamGroups = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n );\n for (let o of rafterBeamGroups) {\n o.children.forEach((el) => {\n this.utils.getOutlineRafterBeam(el as Mesh, lsGeometries);\n });\n }\n\n return { lines: lsGeometries, texts: [] };\n }\n public simplifyGeo(geo: BufferGeometry): Geometry {\n let vertices = geo.getAttribute(\"position\").array;\n let lineGeo = new Geometry();\n for (let i = 0; i < vertices.length; i += 3) {\n lineGeo.vertices.push(\n new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2])\n );\n }\n\n //2-3\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n //3-7\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n //7-6\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n //6-2\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n\n //1-4\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n //4-8\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n //8-5\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n //5-1\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n\n return lineGeo;\n }\n public addPost(offsetX: number, userDataPos: any) {\n if (userDataPos.isMultiSpan && UI.multiSpan === 0) {\n return;\n }\n // // let _flag = false;\n // if (userDataPos.left && UI.overhangLeft > 0 && this.APP.sltExistingType.currentValue == 1) {\n // // _flag = true;\n // return;\n // } else if (userDataPos.right && UI.overhangRight > 0 && this.APP.sltExistingType.currentValue == 2) {\n // // _flag = true;\n // return;\n // }\n const condition = UI.span + UI.eaveWidth;\n if (!userDataPos.isMultiSpan) {\n if (\n (this.existingType === 1 || this.existingType === 3) &&\n userDataPos.left &&\n (UI.existingWidth1 >= condition ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition &&\n UI.cutOutType == 1))\n ) {\n return;\n }\n if (\n (this.existingType === 2 || this.existingType === 3) &&\n userDataPos.right &&\n (UI.existingWidth1 >= condition ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition &&\n UI.cutOutType == 1))\n ) {\n return;\n }\n } else {\n if (\n (this.existingType === 1 || this.existingType === 3) &&\n userDataPos.left &&\n (UI.existingWidth1 >= condition + UI.multiSpan ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition + UI.multiSpan &&\n UI.cutOutType == 1))\n ) {\n return;\n }\n if (\n (this.existingType === 2 || this.existingType === 3) &&\n userDataPos.right &&\n (UI.existingWidth1 >= condition + UI.multiSpan ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition + UI.multiSpan &&\n UI.cutOutType == 1))\n ) {\n return;\n }\n }\n let views: Print2DView[] = [];\n if (userDataPos.isMultiSpan) {\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else {\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n const mesh = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n let offsetZ = -UI.existingWidth1 / 2 + UI.eaveWidth;\n if (userDataPos.isMultiSpan) {\n offsetZ += UI.span + UI.multiSpan - this.beamInfo.width / 2;\n } else {\n offsetZ += UI.span - (UI.multiSpan > 0 ? 0 : this.beamInfo.width / 2);\n }\n let scaleY = 0;\n let length = 0;\n if (userDataPos.isMultiSpan) {\n length =\n UI.eaveHeight -\n this.getHeightByRoofPitch(false) -\n this.beamInfo.height +\n this.offsetYBraket;\n scaleY = length / this.postInfo.height;\n } else {\n length =\n UI.eaveHeight -\n this.getHeightByRoofPitch(true) -\n this.beamInfo.height +\n this.offsetYBraket;\n scaleY = length / this.postInfo.height;\n }\n this.frontPostHeight = length;\n\n //in case of multi span & apply to back post only\n if (\n !userDataPos.isMultiSpan &&\n this.APP.sltCutOut.currentValue == 1 &&\n this.MANAGER.cutoutCondition\n ) {\n if (\n UI.span + UI.eaveWidth > UI.existingWidth1 &&\n UI.span + UI.eaveWidth < UI.existingWidth1 + UI.eaveWidth\n ) {\n if (this.APP.sltExistingType.currentValue == 1 && userDataPos.left) {\n offsetX += this.APP.sldExistingLength2.currentValue;\n } else if (\n this.APP.sltExistingType.currentValue == 2 &&\n userDataPos.right\n ) {\n offsetX -= this.APP.sldExistingLength2.currentValue;\n } else if (this.APP.sltExistingType.currentValue == 3) {\n if (userDataPos.left) {\n offsetX += this.APP.sldExistingLength2.currentValue;\n }\n if (userDataPos.right) {\n offsetX -= this.APP.sldExistingLength2.currentValue;\n }\n }\n }\n }\n\n let exceedMoveBackLimit = false;\n\n //Rakecut\n if (\n UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE ||\n UI.rakeCutLeftType == RAKECUT_TYPE.STEP\n ) {\n //Move front post to back\n let moveToBack = false;\n if (UI.multiSpan > 0) {\n if (userDataPos.isMultiSpan && userDataPos.left) {\n moveToBack = true;\n }\n } else {\n if (!userDataPos.isMultiSpan && userDataPos.left) {\n moveToBack = true;\n }\n }\n\n if (moveToBack) {\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n offsetX -= UI.overhangLeft;\n offsetZ -= this.beamLeftCutSizeInfo.v + this.beamLeftCutSizeInfo.k_;\n let length =\n UI.span +\n UI.multiSpan -\n (this.beamLeftCutSizeInfo.v + this.beamLeftCutSizeInfo.k_);\n scaleY =\n (this.utils.getHeightByAngle(\n UI.eaveHeight - this.beamInfo.height,\n length,\n UI.patiosPitch,\n -1\n ) +\n this.offsetYBraket) /\n this.postInfo.height;\n\n if (UI.isUpFasciaUpstandardBracket) {\n scaleY =\n (this.utils.getHeightByAngle(\n UI.eaveHeight - this.beamInfo.height,\n length,\n UI.patiosPitch,\n 1\n ) +\n this.offsetYBraket) /\n this.postInfo.height;\n }\n\n if (\n UI.rakeCutLeftVer + this.beamLeftCutSizeInfo.k_ >\n this.MANAGER.patiosLength\n ) {\n console.log(\n \"EXCEED_LIMIT LEFT\",\n UI.rakeCutLeftVer,\n this.beamLeftCutSizeInfo.k_,\n this.MANAGER.patiosLength\n );\n exceedMoveBackLimit = true;\n }\n } else if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n let moveBack = UI.rakeCutLeftVer;\n if (moveBack > 0) {\n offsetZ -= moveBack;\n let length = UI.span + UI.multiSpan - moveBack;\n scaleY =\n (this.utils.getHeightByAngle(\n UI.eaveHeight - this.beamInfo.height,\n length,\n UI.patiosPitch,\n -1\n ) +\n this.offsetYBraket) /\n this.postInfo.height;\n if (UI.isUpFasciaUpstandardBracket) {\n scaleY =\n (this.utils.getHeightByAngle(\n UI.eaveHeight - this.beamInfo.height,\n length,\n UI.patiosPitch,\n 1\n ) +\n this.offsetYBraket) /\n this.postInfo.height;\n }\n }\n }\n }\n }\n\n if (\n UI.rakeCutRightType == RAKECUT_TYPE.ANGLE ||\n UI.rakeCutRightType == RAKECUT_TYPE.STEP\n ) {\n //Move front post to back\n let moveToBack = false;\n if (UI.multiSpan > 0) {\n if (userDataPos.isMultiSpan && userDataPos.right) {\n moveToBack = true;\n }\n } else {\n if (!userDataPos.isMultiSpan && userDataPos.right) {\n moveToBack = true;\n }\n }\n\n if (moveToBack) {\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n offsetX += UI.overhangRight;\n offsetZ -= this.beamRightCutSizeInfo.v + this.beamRightCutSizeInfo.k_;\n let length =\n UI.span +\n UI.multiSpan -\n (this.beamRightCutSizeInfo.v + this.beamRightCutSizeInfo.k_);\n scaleY =\n (this.utils.getHeightByAngle(\n UI.eaveHeight - this.beamInfo.height,\n length,\n UI.patiosPitch,\n -1\n ) +\n this.offsetYBraket) /\n this.postInfo.height;\n if (UI.isUpFasciaUpstandardBracket) {\n scaleY =\n (this.utils.getHeightByAngle(\n UI.eaveHeight - this.beamInfo.height,\n length,\n UI.patiosPitch,\n 1\n ) +\n this.offsetYBraket) /\n this.postInfo.height;\n }\n if (\n UI.rakeCutRightVer + this.beamRightCutSizeInfo.k_ >\n this.MANAGER.patiosLength\n ) {\n console.log(\n \"EXCEED_LIMIT RIGHT\",\n UI.rakeCutRightVer,\n this.beamLeftCutSizeInfo.k_,\n this.MANAGER.patiosLength\n );\n exceedMoveBackLimit = true;\n }\n } else if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n let moveBack = UI.rakeCutRightVer;\n if (moveBack > 0) {\n offsetZ -= moveBack;\n let length = UI.span + UI.multiSpan - moveBack;\n scaleY =\n (this.utils.getHeightByAngle(\n UI.eaveHeight - this.beamInfo.height,\n length,\n UI.patiosPitch,\n -1\n ) +\n this.offsetYBraket) /\n this.postInfo.height;\n if (UI.isUpFasciaUpstandardBracket) {\n scaleY =\n (this.utils.getHeightByAngle(\n UI.eaveHeight - this.beamInfo.height,\n length,\n UI.patiosPitch,\n 1\n ) +\n this.offsetYBraket) /\n this.postInfo.height;\n }\n }\n }\n }\n }\n //End rakecut\n\n if (exceedMoveBackLimit) {\n //console.log(\"EXCEED_LIMIT\");\n return;\n }\n\n mesh.position.set(offsetX, 0, offsetZ + this.offsetBraketZ);\n mesh.scale.setY(scaleY);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n this.scene.add(mesh);\n }\n\n private addUpstandBraketExt(userDataPos: any) {\n if (\n UI.upstandBraketType == 0 ||\n UI.listBay.length == 0 ||\n UI.existingType == 0 ||\n (userDataPos.isMultiSpan && UI.multiSpan == 0)\n ) {\n return;\n }\n if (\n (this.existingType == 1 && userDataPos.right) ||\n (this.existingType == 2 && userDataPos.left)\n ) {\n return;\n }\n let _flag = false;\n\n const condition = UI.span + UI.eaveWidth;\n if (!userDataPos.isMultiSpan && !_flag) {\n if (\n (this.existingType === 1 || this.existingType === 3) &&\n userDataPos.left &&\n (UI.existingWidth1 >= condition ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition &&\n UI.cutOutType == 1))\n ) {\n _flag = true;\n // return;\n }\n if (\n (this.existingType === 2 || this.existingType === 3) &&\n userDataPos.right &&\n (UI.existingWidth1 >= condition ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition &&\n UI.cutOutType == 1))\n ) {\n _flag = true;\n // return;\n }\n } else if (!_flag) {\n if (\n (this.existingType === 1 || this.existingType === 3) &&\n userDataPos.left &&\n (UI.existingWidth1 >= condition + UI.multiSpan ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition + UI.multiSpan &&\n UI.cutOutType == 1))\n ) {\n _flag = true;\n // return;\n }\n if (\n (this.existingType === 2 || this.existingType === 3) &&\n userDataPos.right &&\n (UI.existingWidth1 >= condition + UI.multiSpan ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition + UI.multiSpan &&\n UI.cutOutType == 1))\n ) {\n _flag = true;\n // return;\n }\n }\n if (!_flag) {\n return;\n }\n // if (userDataPos.left && UI.overhangLeft > 0 || userDataPos.right && UI.overhangRight > 0)\n // return;\n\n const _bracketOffsetXExt = this.geoBraket_2.height / 5; // + this.geoBraket_1.width / 4;\n let height = 0;\n let offsetX = -UI.existingLength1 / 2;\n let bayMainLength = UI.totalBayLength;\n if (!AppComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n if (UI.existingType == 1 || UI.existingType == 2) {\n bayMainLength -= UI.existingLength2;\n }\n if (UI.existingType == 3) {\n bayMainLength -= 2 * UI.existingLength2;\n }\n }\n const _cond1 =\n UI.existingWidth1 < condition &&\n UI.existingWidth1 + UI.existingWidth2 > condition;\n const _cond2 =\n userDataPos.isMultiSpan &&\n UI.existingWidth1 < condition + UI.multiSpan &&\n UI.existingWidth1 + UI.existingWidth2 > condition + UI.multiSpan;\n\n if (UI.existingType == 1) {\n offsetX = -bayMainLength / 2;\n if (!AppComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n offsetX = -bayMainLength / 2 + UI.existingLength2 / 2;\n }\n if (\n UI.existingWidth1 < condition ||\n (userDataPos.isMultiSpan &&\n UI.existingWidth1 + UI.existingWidth2 >= condition + UI.multiSpan)\n ) {\n offsetX -= UI.existingLength2;\n }\n offsetX += _bracketOffsetXExt;\n } else if (UI.existingType == 2) {\n offsetX = bayMainLength / 2 - this.geoBraket_1.width;\n if (!AppComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n offsetX -= UI.existingLength2 / 2;\n }\n if (\n UI.existingWidth1 < condition ||\n (userDataPos.isMultiSpan &&\n UI.existingWidth1 + UI.existingWidth2 >= condition + UI.multiSpan)\n ) {\n offsetX += UI.existingLength2;\n }\n offsetX -= _bracketOffsetXExt;\n } else if (UI.existingType == 3) {\n offsetX =\n (-bayMainLength / 2) * (userDataPos.left ? 1 : -1) -\n (userDataPos.right ? this.geoBraket_1.width : 0);\n if ((!userDataPos.isMultiSpan && _cond1) || _cond2) {\n offsetX -=\n UI.existingLength2 * (userDataPos.left ? 1 : -1) +\n (userDataPos.right ? this.geoBraket_1.width : 0);\n }\n offsetX += _bracketOffsetXExt * (userDataPos.left ? 1 : -1);\n }\n let offsetZ =\n -UI.existingWidth1 / 2 +\n UI.eaveWidth -\n (this.geoBraket_2.height / 4 + this.geoBraket_1.width / 2);\n if (userDataPos.isMultiSpan) {\n offsetZ += UI.span + UI.multiSpan - this.beamInfo.width / 2;\n } else {\n offsetZ += UI.span - (UI.multiSpan > 0 ? 0 : this.beamInfo.width / 2);\n }\n if (userDataPos.isMultiSpan) {\n height = this.offsetYBraket - this.getHeightByRoofPitch(false);\n } else {\n height = this.offsetYBraket - this.getHeightByRoofPitch(true);\n }\n let optionBrakets: UpstandBraketOptions = {\n container: this.scene,\n position: new Vector3(),\n geoBraket_1: this.geoBraket_1,\n geoBraket_2:\n UI.existingType == 2 ? this.geoBraketExtR_2 : this.geoBraketExtL_2,\n height: height,\n material: MaterialManager.Instance().FASCIA_BRACKET.clone(),\n };\n if (UI.existingType == 1) {\n optionBrakets = { ...optionBrakets, geoBraket_2: this.geoBraketExtL_2 };\n } else if (UI.existingType == 2) {\n optionBrakets = { ...optionBrakets, geoBraket_2: this.geoBraketExtR_2 };\n } else {\n optionBrakets = {\n ...optionBrakets,\n geoBraket_2: userDataPos.right\n ? this.geoBraketExtR_2\n : this.geoBraketExtL_2,\n };\n }\n new UpstandBraket({\n ...optionBrakets,\n position: new Vector3(\n offsetX,\n UI.existingWallHeight,\n offsetZ + this.offsetBraketZ\n ),\n userData: { type: GEOMETRY_TYPE.UPSTAND_BRAKET_EXT },\n });\n }\n\n public addPostAngelRakecut(offsetX: number, userDataPos: any) {\n if (\n UI.rakeCutLeftType != RAKECUT_TYPE.ANGLE &&\n UI.rakeCutRightType != RAKECUT_TYPE.ANGLE\n ) {\n return;\n }\n\n let height =\n UI.eaveHeight -\n this.getHeightByRoofPitch(false) -\n this.beamInfo.height +\n this.offsetYBraket;\n\n let offsetZ =\n UI.span +\n UI.multiSpan +\n UI.eaveWidth -\n this.beamInfo.width / 2 -\n UI.existingWidth1 / 2;\n\n let scaleY = height / this.postInfo.height;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n if (userDataPos.left) {\n let postLeft = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n postLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n postLeft.position.set(\n offsetX + this.beamLeftCutSizeInfo.l,\n 0,\n offsetZ + this.offsetBraketZ\n );\n postLeft.scale.setY(scaleY);\n let isIntersect = false;\n let boxPost = new Box3().setFromObject(postLeft);\n this.scene.children\n .filter((el) => el.userData.type == GEOMETRY_TYPE.SUPERIOR_POST)\n .forEach((el) => {\n el.updateWorldMatrix(true, true);\n let boxEl = new Box3().setFromObject(el);\n if (boxPost.intersectsBox(boxEl)) {\n isIntersect = true;\n }\n });\n\n if (!isIntersect) {\n this.scene.add(postLeft);\n }\n }\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n if (userDataPos.right) {\n let postRight = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n postRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n postRight.position.set(\n offsetX - this.beamRightCutSizeInfo.l,\n 0,\n offsetZ + this.offsetBraketZ\n );\n postRight.scale.setY(scaleY);\n let isIntersect = false;\n let boxPost = new Box3().setFromObject(postRight);\n this.scene.children\n .filter((el) => el.userData.type == GEOMETRY_TYPE.SUPERIOR_POST)\n .forEach((el) => {\n el.updateWorldMatrix(true, true);\n let boxEl = new Box3().setFromObject(el);\n if (boxPost.intersectsBox(boxEl)) {\n isIntersect = true;\n }\n });\n\n if (!isIntersect) {\n this.scene.add(postRight);\n }\n }\n }\n }\n private addPostStepRakecut() {\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n let userDataPos = { rakecut: true };\n\n let offsetZF =\n UI.span +\n UI.multiSpan +\n UI.eaveWidth -\n UI.existingWidth1 / 2 -\n this.postInfo.width / 2;\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n let offsetXL = -UI.totalBayLength / 2;\n\n let scaleYF =\n (this.utils.getHeightByAngle(\n UI.eaveHeight - this.beamInfo.height,\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n -1\n ) +\n this.offsetYBraket) /\n this.postInfo.height;\n\n if (UI.isUpFasciaUpstandardBracket) {\n scaleYF =\n (this.utils.getHeightByAngle(\n UI.eaveHeight - this.beamInfo.height,\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n 1\n ) +\n this.offsetYBraket) /\n this.postInfo.height;\n }\n\n let scaleYB = scaleYF;\n\n let offsetZB = offsetZF;\n\n let moveRight = UI.rakeCutLeftHor - UI.overhangLeft;\n if (moveRight > 0) {\n offsetXL += moveRight;\n }\n\n let moveBack = UI.rakeCutLeftVer;\n if (moveBack > 0) {\n offsetZB -= moveBack;\n scaleYB =\n (this.utils.getHeightByAngle(\n UI.eaveHeight - this.beamInfo.height,\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n -1\n ) +\n this.offsetYBraket) /\n this.postInfo.height;\n if (UI.isUpFasciaUpstandardBracket) {\n scaleYB =\n (this.utils.getHeightByAngle(\n UI.eaveHeight - this.beamInfo.height,\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n 1\n ) +\n this.offsetYBraket) /\n this.postInfo.height;\n }\n }\n\n let postFront = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n postFront.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n postFront.position.set(offsetXL, 0, offsetZF + this.offsetBraketZ);\n postFront.scale.setY(scaleYF);\n this.scene.add(postFront);\n\n let postBack = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n postBack.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n postBack.position.set(\n offsetXL - this.postInfo.width / 2,\n 0,\n offsetZB + this.offsetBraketZ\n );\n postBack.scale.setY(scaleYB);\n this.scene.add(postBack);\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n let offsetXR = UI.totalBayLength / 2 - this.postInfo.width;\n\n let scaleYF =\n (this.utils.getHeightByAngle(\n UI.eaveHeight - this.beamInfo.height,\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n -1\n ) +\n this.offsetYBraket) /\n this.postInfo.height;\n if (UI.isUpFasciaUpstandardBracket) {\n scaleYF =\n (this.utils.getHeightByAngle(\n UI.eaveHeight - this.beamInfo.height,\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n 1\n ) +\n this.offsetYBraket) /\n this.postInfo.height;\n }\n\n let scaleYB = scaleYF;\n\n let offsetZB = offsetZF;\n\n let moveLeft = UI.rakeCutRightHor - UI.overhangRight;\n if (moveLeft > 0) {\n offsetXR -= moveLeft;\n }\n\n let moveBack = UI.rakeCutRightVer;\n if (moveBack > 0) {\n offsetZB -= moveBack;\n scaleYB =\n (this.utils.getHeightByAngle(\n UI.eaveHeight - this.beamInfo.height,\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n -1\n ) +\n this.offsetYBraket) /\n this.postInfo.height;\n if (UI.isUpFasciaUpstandardBracket) {\n scaleYB =\n (this.utils.getHeightByAngle(\n UI.eaveHeight - this.beamInfo.height,\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n 1\n ) +\n this.offsetYBraket) /\n this.postInfo.height;\n }\n }\n\n let postFront = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n postFront.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n postFront.position.set(offsetXR, 0, offsetZF + this.offsetBraketZ);\n postFront.scale.setY(scaleYF);\n this.scene.add(postFront);\n\n let postBack = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n postBack.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n postBack.position.set(\n offsetXR + this.postInfo.width / 2,\n 0,\n offsetZB + this.offsetBraketZ\n );\n postBack.scale.setY(scaleYB);\n this.scene.add(postBack);\n }\n }\n public addBeam(userDataPos: any) {\n if (userDataPos.isMultiSpan && UI.multiSpan === 0) {\n return;\n }\n\n let offsetY = 0;\n let offsetZ = -UI.existingWidth1 / 2 + UI.eaveWidth;\n let offsetXL = -(this.totalBaySize / 2 + UI.overhangLeft);\n let offsetXR = this.totalBaySize / 2 + UI.overhangRight;\n\n let beamLength = this.roofWidth;\n const beamWidth = this.beamInfo.width;\n const fitYForBackFasciaRoof = UI.isUpFasciaUpstandardBracket\n ? beamWidth * this.utils.tan(UI.patiosPitch)\n : 0;\n\n if (userDataPos.isMultiSpan) {\n offsetY =\n UI.eaveHeight -\n this.getHeightByRoofPitch(false) +\n this.offsetYBraket -\n fitYForBackFasciaRoof;\n offsetZ += UI.span + UI.multiSpan - this.beamInfo.width / 2;\n } else {\n offsetY =\n UI.eaveHeight -\n this.getHeightByRoofPitch(true) +\n this.offsetYBraket -\n fitYForBackFasciaRoof;\n offsetZ += UI.span - (UI.multiSpan > 0 ? 0 : this.beamInfo.width / 2);\n }\n let views: Print2DView[] = [];\n if (userDataPos.isMultiSpan) {\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else {\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n //Cutout\n if (\n !userDataPos.isMultiSpan &&\n this.APP.sltCutOut.currentValue == 1 &&\n this.MANAGER.cutoutCondition\n ) {\n if (UI.span + UI.eaveWidth <= UI.existingWidth1) {\n if (this.APP.sltExistingType.currentValue == 1) {\n offsetXL += this.APP.sldExistingLength2.currentValue;\n beamLength =\n this.roofWidth - this.APP.sldExistingLength2.currentValue; // + UI.eaveWidth;\n } else if (this.APP.sltExistingType.currentValue == 2) {\n offsetXR -= this.APP.sldExistingLength2.currentValue;\n beamLength =\n this.roofWidth - this.APP.sldExistingLength2.currentValue; // + UI.eaveWidth;\n } else if (this.APP.sltExistingType.currentValue == 3) {\n offsetXL += this.APP.sldExistingLength2.currentValue;\n offsetXR -= this.APP.sldExistingLength2.currentValue;\n beamLength =\n this.roofWidth - this.APP.sldExistingLength2.currentValue * 2; // + UI.eaveWidth;\n }\n } else if (\n UI.span + UI.eaveWidth > UI.existingWidth1 &&\n UI.span + UI.eaveWidth < UI.existingWidth1 + UI.eaveWidth\n ) {\n if (this.APP.sltExistingType.currentValue == 1) {\n offsetXL += this.APP.sldExistingLength2.currentValue;\n beamLength =\n this.roofWidth - this.APP.sldExistingLength2.currentValue;\n } else if (this.APP.sltExistingType.currentValue == 2) {\n offsetXR -= this.APP.sldExistingLength2.currentValue;\n beamLength =\n this.roofWidth - this.APP.sldExistingLength2.currentValue;\n } else if (this.APP.sltExistingType.currentValue == 3) {\n offsetXL += this.APP.sldExistingLength2.currentValue;\n offsetXR -= this.APP.sldExistingLength2.currentValue;\n beamLength =\n this.roofWidth - this.APP.sldExistingLength2.currentValue * 2;\n }\n }\n }\n\n //rake cut - apply only the front beam\n if (UI.multiSpan <= 0 || (UI.multiSpan > 0 && userDataPos.isMultiSpan)) {\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n offsetXL += this.beamLeftCutSizeInfo.l;\n beamLength -= this.beamLeftCutSizeInfo.l;\n } else if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n offsetXL += UI.rakeCutLeftHor;\n beamLength -= UI.rakeCutLeftHor;\n }\n\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n offsetXR -= this.beamRightCutSizeInfo.l;\n beamLength -= this.beamRightCutSizeInfo.l;\n } else if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n offsetXR -= UI.rakeCutRightHor;\n beamLength -= UI.rakeCutRightHor;\n }\n }\n\n this.cutStandardBeamByCutBeamWithinBayControl(\n this.beamInfo,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetXL, offsetY, offsetZ + this.offsetBraketZ),\n new Vector3(),\n views,\n 1,\n userDataPos,\n 0,\n \"x\",\n this.geoBeamJoint\n );\n }\n private cutStandardBeamToEqualLengthBeam(\n beamGeo: GeometryInfo,\n beamCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n userDataPos: any,\n beamGeoTranslationZ: number,\n beamDirection: string,\n jointGeo: GeometryInfo\n ) {\n const beamStartX = pos.x;\n const beamEndX = pos.x + length;\n\n const numOfBeam = Math.ceil(\n length / EXISTING_BUILDING_CONFIG.MAXIMUM_LENGTH_PER_BEAM\n );\n const lengthPerBeam = Math.abs(beamEndX - beamStartX) / numOfBeam;\n for (let i = 0; i < numOfBeam; i++) {\n let beamGroup = this.utils.createBeamGroup2(\n beamGeo,\n beamCapGeo,\n lengthPerBeam,\n new Vector3(beamStartX + lengthPerBeam * i, pos.y, pos.z),\n rot,\n views,\n directionOffset,\n userDataPos,\n beamGeoTranslationZ,\n beamDirection,\n UI.beamLayoutShow,\n {\n hasStartCap: UI.beamType == 0 && i == 0,\n hasEndCap:\n UI.beamType == 0 &&\n (i == numOfBeam - 1 || (i == 0 && numOfBeam == 1)),\n hasStartJoint: i !== 0,\n hasEndJoint: false,\n jointGeo: jointGeo,\n }\n );\n this.scene.add(beamGroup);\n }\n }\n private cutStandardBeamByCutBeamWithinBayControl(\n beamGeo: GeometryInfo,\n beamCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n userDataPos: any,\n beamGeoTranslationZ: number,\n beamDirection: string,\n jointGeo: GeometryInfo\n ) {\n // Map list cut beam here\n const beamStartX = pos.x;\n const beamEndX = pos.x + length;\n\n let endOfBayX = -UI.totalBayLength / 2;\n let startCutBeamX = beamStartX;\n let endCutBeamX = beamStartX;\n\n const beams = this.utils.getListSeperateBeamsByBays(\n endOfBayX,\n beamStartX,\n beamEndX,\n endCutBeamX,\n startCutBeamX\n );\n\n for (let i = 0; i < beams.length; i++) {\n endCutBeamX = beams[i][1];\n startCutBeamX = beams[i][0];\n let beamGroup = this.utils.createBeamGroup2(\n beamGeo,\n beamCapGeo,\n endCutBeamX - startCutBeamX,\n new Vector3(startCutBeamX, pos.y, pos.z),\n rot,\n views,\n directionOffset,\n userDataPos,\n beamGeoTranslationZ,\n beamDirection,\n UI.beamLayoutShow,\n {\n hasStartCap: UI.beamType == 0 && i == 0,\n hasEndCap:\n UI.beamType == 0 &&\n (i == beams.length - 1 || (i == 0 && beams.length == 1)),\n hasStartJoint: i !== 0,\n hasEndJoint: false,\n jointGeo: jointGeo,\n }\n );\n this.scene.add(beamGroup);\n }\n }\n private addBeamAngelRakecut() {\n if (\n UI.rakeCutLeftType == RAKECUT_TYPE.NONE &&\n UI.rakeCutRightType == RAKECUT_TYPE.NONE\n ) {\n return;\n }\n\n let offsetZ = UI.span + UI.multiSpan + UI.eaveWidth - UI.existingWidth1 / 2;\n\n const beamWidth = this.beamInfo.width;\n const fitYForBackFasciaRoof = UI.isUpFasciaUpstandardBracket\n ? beamWidth * this.utils.tan(UI.patiosPitch)\n : 0;\n let offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight,\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n -1\n ) + this.offsetYBraket;\n if (UI.isUpFasciaUpstandardBracket) {\n offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight,\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n 1\n ) +\n this.offsetYBraket -\n fitYForBackFasciaRoof;\n }\n\n let offsetXStart = 0;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n let rotX = this.utils.degreesToRadians(UI.patiosPitch);\n if (UI.isUpFasciaUpstandardBracket) {\n rotX = -rotX;\n }\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n let offsetX =\n -this.totalBaySize / 2 - UI.overhangLeft + this.beamLeftCutSizeInfo.l;\n let beamLength = this.beamLeftCutSizeInfo.m;\n let scaleZ = beamLength / this.beamRakecutInfoLeft.length;\n let rotYL = Math.atan(UI.rakeCutLeftHor / UI.rakeCutLeftVer);\n\n //beam lenght can not go behind existing wall\n if (\n UI.rakeCutLeftVer + this.beamLeftCutSizeInfo.k_ >\n this.MANAGER.patiosLength\n ) {\n beamLength -= this.beamLeftCutSizeInfo.b;\n scaleZ = beamLength / this.beamRakecutInfoLeft.length;\n }\n\n let offsetXEnd = beamLength;\n\n const mesh = new Mesh(\n this.beamRakecutInfoLeft.geometry,\n MaterialManager.Instance().BEAM\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n };\n mesh.scale.setZ(scaleZ);\n\n let capL = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capL.position.set(\n this.geo_beamEndCap.width / 2,\n 0,\n -(offsetXEnd + this.geo_beamEndCap.length / 2 - 2)\n );\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let capR = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capR.position.set(\n this.geo_beamEndCap.width / 2,\n 0,\n offsetXStart - this.geo_beamEndCap.length / 2 + 2\n );\n capR.rotateY(Math.PI);\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n angle: true,\n };\n beamGroup.position.set(offsetX, offsetY, offsetZ + this.offsetBraketZ);\n beamGroup.rotation.set(0, rotYL, 0);\n beamGroup.updateMatrixWorld();\n let matrix = beamGroup.matrixWorld;\n\n if (beamLength > 8000) {\n this.addPostForBeamAngelRakecut(BUILDING_SIDE.LEFT, matrix);\n }\n\n beamGroup.rotation.set(rotX, rotYL, 0);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n\n this.scene.add(beamGroup);\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n //let beamSizeInfo = this.getBeamRakeCutInfo(BUILDING_SIDE.RIGHT);\n let offsetX =\n this.totalBaySize / 2 + UI.overhangRight - this.beamRightCutSizeInfo.l;\n let beamLength = this.beamRightCutSizeInfo.m;\n let scaleZ = beamLength / this.beamRakecutInfoLeft.length;\n let rotYR = Math.atan(UI.rakeCutRightHor / UI.rakeCutRightVer);\n\n //beam lenght can not go behind existing wall\n if (\n UI.rakeCutRightVer + this.beamRightCutSizeInfo.k_ >\n this.MANAGER.patiosLength\n ) {\n beamLength -= this.beamRightCutSizeInfo.b;\n scaleZ = beamLength / this.beamRakecutInfoRight.length;\n }\n\n let offsetXEnd = beamLength;\n\n const mesh = new Mesh(\n this.beamRakecutInfoRight.geometry,\n MaterialManager.Instance().BEAM\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n };\n mesh.scale.setZ(scaleZ);\n\n let capL = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capL.position.set(\n -this.geo_beamEndCap.width / 2,\n 0,\n -(offsetXEnd + this.geo_beamEndCap.length / 2 - 2)\n );\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let capR = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capR.position.set(\n -this.geo_beamEndCap.width / 2,\n 0,\n offsetXStart - this.geo_beamEndCap.length / 2 + 2\n );\n capR.rotateY(Math.PI);\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n angle: true,\n };\n beamGroup.position.set(offsetX, offsetY, offsetZ + this.offsetBraketZ);\n beamGroup.rotation.set(0, -rotYR, 0);\n beamGroup.updateMatrixWorld();\n let matrix = beamGroup.matrixWorld;\n if (beamLength > 8000) {\n this.addPostForBeamAngelRakecut(BUILDING_SIDE.RIGHT, matrix);\n }\n\n beamGroup.rotation.set(rotX, -rotYR, 0);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n this.scene.add(beamGroup);\n }\n }\n private addBeamStepRakecut() {\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n const beamWidth = this.beamInfo.width;\n const fitYForBackFasciaRoof = UI.isUpFasciaUpstandardBracket\n ? beamWidth * this.utils.tan(UI.patiosPitch)\n : 0;\n if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n let offsetXL = -UI.totalBayLength / 2 - UI.overhangLeft;\n let offsetZ =\n UI.span + UI.multiSpan + UI.eaveWidth - UI.existingWidth1 / 2;\n let offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight,\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n -1\n ) +\n this.offsetYBraket -\n fitYForBackFasciaRoof;\n if (UI.isUpFasciaUpstandardBracket) {\n offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight,\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n 1\n ) +\n this.offsetYBraket -\n fitYForBackFasciaRoof;\n }\n\n let moveBack = UI.rakeCutLeftVer;\n if (moveBack > 0) {\n offsetZ -= moveBack;\n offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight,\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n -1\n ) +\n this.offsetYBraket -\n fitYForBackFasciaRoof;\n if (UI.isUpFasciaUpstandardBracket) {\n offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight,\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n 1\n ) +\n this.offsetYBraket -\n fitYForBackFasciaRoof;\n }\n }\n\n let beamLength = UI.rakeCutLeftHor + this.postInfo.width;\n if (UI.rakeCutLeftHor < UI.overhangLeft) {\n beamLength = UI.overhangLeft;\n }\n\n let beamGroup;\n\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup = this.utils.createBeamGroup2(\n this.geo_beamStepRakecutLeft,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetXL, offsetY, offsetZ + this.offsetBraketZ),\n new Vector3(),\n views,\n 1,\n null,\n -this.geo_beamEndCap.width / 2,\n \"x\",\n false,\n {\n hasStartCap: UI.beamType == 0,\n hasEndCap: UI.beamType == 0,\n hasStartJoint: false,\n hasEndJoint: false,\n jointGeo: null,\n }\n );\n } else {\n beamGroup = this.utils.createBeamGroup2(\n this.geo_beamStepRakecutLeft,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetXL, offsetY, offsetZ + this.offsetBraketZ),\n new Vector3(),\n views,\n 1,\n null,\n -this.geo_beamEndCap.width / 2,\n \"x\",\n false,\n {\n hasStartCap: UI.beamType == 0,\n hasEndCap: UI.beamType == 0,\n hasStartJoint: false,\n hasEndJoint: false,\n jointGeo: null,\n }\n );\n }\n\n this.scene.add(beamGroup);\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n let offsetXR = UI.totalBayLength / 2 + UI.overhangRight;\n let offsetZ =\n UI.span + UI.multiSpan + UI.eaveWidth - UI.existingWidth1 / 2;\n let offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight,\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n -1\n ) +\n this.offsetYBraket -\n fitYForBackFasciaRoof;\n if (UI.isUpFasciaUpstandardBracket) {\n offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight,\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n 1\n ) +\n this.offsetYBraket -\n fitYForBackFasciaRoof;\n }\n\n let moveBack = UI.rakeCutRightVer;\n if (moveBack > 0) {\n offsetZ -= moveBack;\n offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight,\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n -1\n ) +\n this.offsetYBraket -\n fitYForBackFasciaRoof;\n if (UI.isUpFasciaUpstandardBracket) {\n offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight,\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n 1\n ) +\n this.offsetYBraket -\n fitYForBackFasciaRoof;\n }\n }\n let beamLength = UI.rakeCutRightHor + this.postInfo.width;\n if (UI.rakeCutRightHor < UI.overhangRight) {\n beamLength = UI.overhangRight + this.postInfo.width;\n }\n\n let beamGroup;\n\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup = this.utils.createBeamGroup2(\n this.geo_beamStepRakecutRight,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetXR, offsetY, offsetZ + this.offsetBraketZ),\n new Vector3(),\n views,\n -1,\n null,\n -this.geo_beamEndCap.width / 2,\n \"x\",\n false,\n {\n hasStartCap: UI.beamType == 0,\n hasEndCap: UI.beamType == 0,\n hasStartJoint: false,\n hasEndJoint: false,\n jointGeo: null,\n }\n );\n } else {\n beamGroup = this.utils.createBeamGroup2(\n this.geo_beamStepRakecutRight,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetXR, offsetY, offsetZ + this.offsetBraketZ),\n new Vector3(),\n views,\n -1,\n null,\n -this.geo_beamEndCap.width / 2,\n \"x\",\n false,\n {\n hasStartCap: UI.beamType == 0,\n hasEndCap: UI.beamType == 0,\n hasStartJoint: false,\n hasEndJoint: false,\n jointGeo: null,\n }\n );\n }\n\n this.scene.add(beamGroup);\n }\n }\n private getOffsetHeightForRafterBeamByRoofPitch(isSpan: boolean): number {\n const beamWidth = this.beamInfo.width;\n if (isSpan) {\n const spanLength =\n UI.span - (UI.multiSpan > 0 ? beamWidth / 2 : beamWidth);\n if (UI.isUpFasciaUpstandardBracket) {\n return -this.utils.tan(UI.patiosPitch) * spanLength;\n } else {\n return this.utils.tan(UI.patiosPitch) * spanLength;\n }\n } else {\n const totalSpanLength = UI.span + UI.multiSpan - beamWidth;\n if (UI.isUpFasciaUpstandardBracket) {\n return -this.utils.tan(UI.patiosPitch) * totalSpanLength;\n } else {\n return this.utils.tan(UI.patiosPitch) * totalSpanLength;\n }\n }\n }\n private getHeightByRoofPitch(isSpan: boolean): number {\n if (isSpan) {\n if (UI.isUpFasciaUpstandardBracket) {\n return -this.utils.tan(UI.patiosPitch) * UI.span;\n } else {\n return this.utils.tan(UI.patiosPitch) * UI.span;\n }\n } else {\n if (UI.isUpFasciaUpstandardBracket) {\n return -this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan);\n } else {\n return this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan);\n }\n }\n }\n private addPostForBeamAngelRakecut(\n cutSide: BUILDING_SIDE,\n beamMatrix: Matrix4\n ) {\n //let inf = this.getBeamRakeCutInfo(cutSide);\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n if (cutSide == BUILDING_SIDE.LEFT) {\n let p1 = new Vector3(\n -UI.totalBayLength / 2 - UI.overhangLeft,\n 2500,\n -UI.existingWidth1 / 2 + UI.span + UI.multiSpan\n );\n let p2 = new Vector3().addVectors(\n p1,\n new Vector3(0, 0, -1).multiplyScalar(this.beamLeftCutSizeInfo.j)\n );\n let p3 = new Vector3().addVectors(\n p1,\n new Vector3(1, 0, 0).multiplyScalar(this.beamLeftCutSizeInfo.l)\n );\n let angle = Math.atan(UI.rakeCutLeftHor / UI.rakeCutLeftVer);\n\n let ver = (Math.cos(angle) * this.beamLeftCutSizeInfo.m) / 2;\n let pMid = new Vector3().addVectors(\n p2,\n new Vector3(0, 0, 1).multiplyScalar(ver)\n );\n let pOri = new Vector3(\n -UI.totalBayLength / 2 + UI.overhangLeft,\n 2500,\n -UI.existingWidth1 / 2\n );\n\n let dir = new Vector3().subVectors(p2, p3).normalize();\n let pMid2 = new Vector3().addVectors(\n p3,\n dir.multiplyScalar(this.beamLeftCutSizeInfo.m / 2)\n );\n\n let length = new Vector3().subVectors(pMid, pOri).length();\n let height = this.utils.getHeightByAngle(\n UI.eaveHeight - this.beamInfo.height,\n length,\n UI.patiosPitch,\n -1\n );\n\n let scaleY = height / this.postInfo.height;\n\n let postLeft = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n postLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: { rakecut: true },\n views: views,\n };\n postLeft.position.set(pMid2.x, 0, pMid2.z);\n //postLeft.rotation.set(0,this.utils.degreesToRadians(UI.patiosPitch),0);\n //postLeft.applyMatrix4(beamMatrix);\n //postLeft.position.setY(-height/2);\n postLeft.scale.setY(scaleY);\n this.scene.add(postLeft);\n }\n if (cutSide == BUILDING_SIDE.RIGHT) {\n let p1 = new Vector3(\n UI.totalBayLength / 2 + UI.overhangRight,\n 2500,\n -UI.existingWidth1 / 2 + UI.span + UI.multiSpan\n );\n let p2 = new Vector3().addVectors(\n p1,\n new Vector3(0, 0, -1).multiplyScalar(this.beamRightCutSizeInfo.j)\n );\n let p3 = new Vector3().addVectors(\n p1,\n new Vector3(-1, 0, 0).multiplyScalar(this.beamRightCutSizeInfo.l)\n );\n let angle = Math.atan(UI.rakeCutRightHor / UI.rakeCutRightVer);\n\n let ver = (Math.cos(angle) * this.beamRightCutSizeInfo.m) / 2;\n let pMid = new Vector3().addVectors(\n p2,\n new Vector3(0, 0, 1).multiplyScalar(ver)\n );\n let pOri = new Vector3(\n UI.totalBayLength / 2 + UI.overhangRight,\n 2500,\n -UI.existingWidth1 / 2\n );\n\n let dir = new Vector3().subVectors(p2, p3).normalize();\n let pMid2 = new Vector3().addVectors(\n p3,\n dir.multiplyScalar(this.beamRightCutSizeInfo.m / 2)\n );\n\n let length = new Vector3().subVectors(pMid, pOri).length();\n let height = this.utils.getHeightByAngle(\n UI.eaveHeight - this.beamInfo.height,\n length,\n UI.patiosPitch,\n -1\n );\n\n let scaleY = height / this.postInfo.height;\n\n let postRight = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n postRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: { rakecut: true },\n views: views,\n };\n postRight.position.set(pMid2.x, 0, pMid2.z);\n postRight.scale.setY(scaleY);\n this.scene.add(postRight);\n }\n }\n}\n","import {\n BoxBufferGeometry,\n BufferGeometry,\n Color,\n Geometry,\n Group,\n LineSegments,\n Material,\n Matrix4,\n Mesh,\n MeshLambertMaterial,\n Object3D,\n Plane,\n Vector3,\n} from \"three\";\nimport { GEOMETRY_CATEGORY, GEOMETRY_TYPE } from \"src/app/app.config\";\nimport {\n BUILDING_SIDE,\n CUTOUT_ENABLE,\n EXISTING_BUILDING_CONFIG as CONST,\n EXISTING_BUILDING_CONFIG,\n PANEL_DIRECTION,\n RAKECUT_TYPE,\n RIBSPAN_PANEL_WIDTH,\n RIBSPAN_RECEIVER_CHANNEL_FIT,\n RIBSPAN_BARGE_FIT,\n CONNECTION_TYPE,\n} from \"src/app/app.constants\";\nimport { Util } from \"../utils\";\n// import { AppComponent } from '../../app.component';\nimport HighLightBox from \"src/app-ribspan/models/HighlightBox\";\nimport { CSG } from \"three-csg-ts\";\nimport { FasciaManager } from \".\";\nimport { HomeComponent as AppComponent } from \"../../containers/home/home.component\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport {\n GeometryInfo,\n LineType,\n Print2DView,\n Printing2DGeometry,\n Printing2DLine,\n ViewType,\n} from \"src/app/core/models\";\nimport { UI } from \"../ui\";\n\nexport class RoofManager {\n private scene: Group;\n private APP: AppComponent;\n private MANAGER: FasciaManager;\n private material: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private roofInfo: GeometryInfo;\n private zFlashingGeo: GeometryInfo;\n private zFlashingRakecutRightGeo: GeometryInfo;\n private bargeLeftInfo: GeometryInfo;\n private bargeRightInfo: GeometryInfo;\n private bargeFrontInfo: GeometryInfo;\n private bargeBackInfo: GeometryInfo;\n private geoReceiveChannelLeftInfo: GeometryInfo;\n private geoReceiveChannelRightInfo: GeometryInfo;\n private geo_bargeCutoutLeftHor: GeometryInfo;\n private geo_bargeCutoutRightHor: GeometryInfo;\n private geo_bargeRakecutLeft: GeometryInfo;\n private geo_bargeRakecutRight: GeometryInfo;\n private receiverCutoutLeftHor: GeometryInfo;\n private receiverCutoutLeftVer: GeometryInfo;\n private receiverCutoutRightHor: GeometryInfo;\n private receiverCutoutRightVer: GeometryInfo;\n private gutterInfo: GeometryInfo;\n private gutterRakecutLeftInfo: GeometryInfo;\n private gutterRakecutRightInfo: GeometryInfo;\n //private flashingInfo: GeometryInfo;\n private geo_receiverChanel: GeometryInfo;\n private geo_gutterCap: GeometryInfo;\n public geoBraket_1: GeometryInfo;\n public geoBraket_2: GeometryInfo;\n private geoBeam: GeometryInfo;\n private geoBeamEndCap: GeometryInfo;\n private eventHandleId: any;\n // Var\n private roofLength: number;\n private roofLengthPlus: number;\n private roofWidth: number;\n //private existingTypeLeftX: number;\n //private existingTypeRightX: number;\n private existingType: number;\n private totalBaySize: number;\n private objectSizeChangedHandle: any;\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n\n private mesh_CutoutLeft: Mesh;\n private csg_cutoutLeft: CSG;\n private mesh_CutoutRight: Mesh;\n private csg_cutoutRight: CSG;\n private geo_cutoutLeft: BoxBufferGeometry;\n private geo_cutoutRight: BoxBufferGeometry;\n\n private geo_rakecutLeft: BoxBufferGeometry;\n private geo_rakecutRight: BoxBufferGeometry;\n private mesh_rakecutLeft: Mesh;\n private mesh_rakecutRight: Mesh;\n private csg_rakecutLeft: CSG;\n private csg_rakecutRight: CSG;\n\n private geoCutGutter: BoxBufferGeometry;\n private meshCutGutterLeft1: Mesh;\n private csgCutGutterLeft1: CSG;\n private meshCutGutterLeft2: Mesh;\n private csgCutGutterLeft2: CSG;\n\n private meshCutGutterRight1: Mesh;\n private csgCutGutterRight1: CSG;\n private meshCutGutterRight2: Mesh;\n private csgCutGutterRight2: CSG;\n\n private roofGroup: Group;\n private cutoutExistingBothLength: number;\n\n private offsetBraketZ: number = 0;\n\n public shouldSnapRoofToExistingWhenCutout: boolean = false;\n\n constructor(app: AppComponent, fasciaManager: FasciaManager) {\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.APP = app;\n this.MANAGER = fasciaManager;\n this.scene = new Group();\n fasciaManager.patiosGroup.add(this.scene);\n this.material = MaterialManager.Instance().ROOF;\n this.registerEvent();\n }\n public destroy(): void {\n this.unregisterEvent();\n }\n public uiChanged(preVal: number, curVal: number): void {\n this.load();\n }\n private objectSizeChanged(preVal: number, curVal: number) {\n this.optimize().then(() => {\n this.load();\n });\n }\n public onColorChanged() {\n if(this.utils && this.roofInfo.geometry){\n this.utils.changeGeoColor(this.roofInfo.geometry, new Vector3(0, 1, 0), UI.roofColor.toString());\n }\n }\n private registerEvent(): void {\n this.eventHandleId = this.onColorChanged.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sltColourRoof\n ];\n this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n this.controlsToRegisterEvent2 = [\n this.APP.sltRoofSheetingType,\n this.APP.sltRoofThickness,\n this.APP.sltBargeType,\n this.APP.sltDripBarge,\n this.APP.sltGutterType,\n this.APP.sltBeamSize,\n this.APP.sltHouseBeamSize,\n ];\n this.controlsToRegisterEvent2.forEach((c) =>\n c.addAction(this.objectSizeChangedHandle)\n );\n }\n private unregisterEvent(): void {\n this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach((c) =>\n c.removeAction(this.objectSizeChangedHandle)\n );\n this.controlsToRegisterEvent2 = undefined;\n }\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n this.roofInfo = this.geometryManager.getRoofRibspanPanel();\n this.roofInfo.geometry\n .translate(-this.roofInfo.width / 2, this.roofInfo.height / 2, -this.roofInfo.length / 2);\n this.roofInfo.geometry.rotateY(Math.PI)\n this.utils.changeGeoColor(this.roofInfo.geometry, new Vector3(0, 1, 0), UI.roofColor.toString());\n\n this.zFlashingGeo = this.geometryManager.getZFlashing();\n this.zFlashingRakecutRightGeo = this.geometryManager.getZFlashing();\n this.zFlashingRakecutRightGeo.geometry.translate(\n -this.zFlashingRakecutRightGeo.length,\n 0,\n 0\n );\n\n // Barge capping\n this.bargeLeftInfo = this.geometryManager.getRibspanBarge();\n this.bargeLeftInfo.geometry\n .rotateY(Math.PI)\n .translate(\n this.bargeLeftInfo.width / 2 - 3,\n this.bargeLeftInfo.height / 2 - RIBSPAN_BARGE_FIT,\n this.bargeLeftInfo.length / 2\n );\n\n this.geoReceiveChannelLeftInfo = this.geometryManager.getRibspanReceiverChannel();\n this.geoReceiveChannelLeftInfo.geometry\n .rotateY(Math.PI)\n .translate(\n this.geoReceiveChannelLeftInfo.width / 2,\n this.geoReceiveChannelLeftInfo.height / 2- RIBSPAN_BARGE_FIT,\n this.geoReceiveChannelLeftInfo.length / 2\n );\n\n this.bargeRightInfo = this.geometryManager.getRibspanBarge();\n this.bargeRightInfo.geometry.translate(\n -this.bargeRightInfo.width / 2 + 3,\n this.bargeRightInfo.height / 2 - RIBSPAN_BARGE_FIT,\n this.bargeRightInfo.length / 2\n );\n\n this.geoReceiveChannelRightInfo = this.geometryManager.getRibspanReceiverChannel();\n this.geoReceiveChannelRightInfo.geometry\n .translate(\n - this.geoReceiveChannelRightInfo.width / 2,\n this.geoReceiveChannelRightInfo.height / 2 - RIBSPAN_BARGE_FIT,\n this.geoReceiveChannelRightInfo.length / 2\n );\n\n //Barge cutout left\n this.receiverCutoutLeftHor = this.geometryManager.getRibspanReceiverChannel();\n this.receiverCutoutLeftHor.geometry\n .rotateY(Math.PI / 2)\n .translate(\n -this.receiverCutoutLeftHor.length / 2,\n this.receiverCutoutLeftHor.height / 2 - RIBSPAN_RECEIVER_CHANNEL_FIT,\n this.receiverCutoutLeftHor.width / 2\n );\n\n //Barge cutout right\n this.receiverCutoutRightHor = this.geometryManager.getRibspanReceiverChannel();\n this.receiverCutoutRightHor.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.receiverCutoutLeftHor.length / 2,\n this.receiverCutoutLeftHor.height / 2 - RIBSPAN_RECEIVER_CHANNEL_FIT,\n this.receiverCutoutLeftHor.width / 2\n );\n\n //Vertical Barge cutout left\n this.receiverCutoutLeftVer = this.geometryManager.getRibspanReceiverChannel();\n this.receiverCutoutLeftVer.geometry\n .rotateY(Math.PI)\n .translate(\n this.receiverCutoutLeftVer.width / 2,\n this.receiverCutoutLeftVer.height / 2 - RIBSPAN_RECEIVER_CHANNEL_FIT,\n this.receiverCutoutLeftVer.length / 2\n );\n\n //Vertical cutout right\n this.receiverCutoutRightVer = this.geometryManager.getRibspanReceiverChannel();\n this.receiverCutoutRightVer.geometry.translate(\n -this.receiverCutoutRightVer.width / 2,\n this.receiverCutoutRightVer.height / 2 - RIBSPAN_RECEIVER_CHANNEL_FIT,\n this.receiverCutoutRightVer.length / 2\n );\n\n //Receiver chanel - barge caping back\n this.geo_receiverChanel = this.geometryManager.getRibspanReceiverChannel();\n this.geo_receiverChanel.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_receiverChanel.length / 2,\n this.geo_receiverChanel.height / 2 - RIBSPAN_RECEIVER_CHANNEL_FIT,\n this.geo_receiverChanel.width / 2\n );\n\n // Gutter\n this.gutterInfo = this.geometryManager.getGutter();\n this.gutterInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.gutterInfo.length / 2, -20, this.gutterInfo.width / 2);\n\n this.gutterRakecutLeftInfo = this.geometryManager.getGutter();\n this.gutterRakecutLeftInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(\n this.gutterRakecutLeftInfo.length / 2,\n -20,\n this.gutterRakecutLeftInfo.width / 2\n );\n\n this.gutterRakecutRightInfo = this.geometryManager.getGutter();\n this.gutterRakecutRightInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(\n -this.gutterRakecutRightInfo.length / 2,\n -20,\n this.gutterRakecutRightInfo.width / 2\n );\n\n //Gutter cap\n this.geo_gutterCap = this.geometryManager.getGuterEndCap();\n this.geo_gutterCap.geometry\n .rotateY(-Math.PI / 2)\n .translate(0, -20, this.geo_gutterCap.length / 2);\n\n this.geo_cutoutLeft = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_cutoutLeft.translate(-500, 0, -500);\n\n this.geo_cutoutRight = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_cutoutRight.translate(500, 0, -500);\n\n this.geo_rakecutLeft = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_rakecutLeft.translate(-500, 500, 500);\n this.geo_rakecutRight = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_rakecutRight.translate(500, 500, 500);\n\n this.geoCutGutter = new BoxBufferGeometry(800, 10000, 500);\n this.geoCutGutter.translate(0, 0, -250);\n\n this.geoBraket_1 = this.geometryManager.getUpstandBraket(1);\n this.geoBraket_1.geometry.rotateX(Math.PI / 2);\n this.geoBraket_1.geometry.translate(0, this.geoBraket_1.length / 2, 0);\n\n this.geoBraket_2 = this.geometryManager.getUpstandBraket(2);\n this.geoBraket_2.geometry.rotateY(Math.PI);\n this.geoBraket_2.geometry.rotateX(Math.PI / 2);\n this.geoBraket_2.geometry.translate(\n 0,\n this.geoBraket_2.length / 2,\n -this.geoBraket_2.height / 4\n );\n\n this.geoBeam = this.geometryManager.getBeam();\n this.geoBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(0, this.geoBeam.height / 2, 0);\n\n this.geoBeamEndCap = this.geometryManager.getBeamEndCap();\n this.geoBeamEndCap.geometry\n .translate(\n 0,\n this.geoBeamEndCap.height / 2,\n this.geoBeamEndCap.length / 2\n )\n .rotateY(Math.PI / 2);\n\n this.bargeFrontInfo = this.geometryManager.getRibspanBarge();\n this.bargeFrontInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(\n this.bargeFrontInfo.length / 2,\n this.bargeFrontInfo.height / 2 - RIBSPAN_BARGE_FIT,\n -this.bargeFrontInfo.width / 2\n );\n\n this.bargeBackInfo = this.geometryManager.getRibspanBarge();\n this.bargeBackInfo.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.bargeBackInfo.length / 2,\n this.bargeBackInfo.height / 2 - RIBSPAN_BARGE_FIT,\n this.bargeBackInfo.width / 2 - 3\n );\n\n this.geo_bargeRakecutLeft = this.geometryManager.getRibspanBarge();\n this.geo_bargeRakecutLeft.geometry\n .rotateY(Math.PI)\n .translate(\n this.geo_bargeRakecutLeft.width / 2,\n this.geo_bargeRakecutLeft.height / 2 - RIBSPAN_BARGE_FIT,\n -this.geo_bargeRakecutLeft.length / 2\n );\n\n this.geo_bargeRakecutRight = this.geometryManager.getRibspanBarge();\n this.geo_bargeRakecutRight.geometry.translate(\n -this.geo_bargeRakecutRight.width / 2,\n this.geo_bargeRakecutRight.height / 2 - RIBSPAN_BARGE_FIT,\n -this.geo_bargeRakecutRight.length / 2\n );\n\n this.geo_bargeRakecutLeft = this.geometryManager.getRibspanBarge();\n this.geo_bargeRakecutLeft.geometry\n .rotateY(Math.PI)\n .translate(\n this.geo_bargeRakecutLeft.width / 2,\n this.geo_bargeRakecutLeft.height / 2 - RIBSPAN_BARGE_FIT,\n -this.geo_bargeRakecutLeft.length / 2\n );\n\n this.geo_bargeRakecutRight = this.geometryManager.getRibspanBarge();\n this.geo_bargeRakecutRight.geometry.translate(\n -this.geo_bargeRakecutRight.width / 2,\n this.geo_bargeRakecutRight.height / 2 - RIBSPAN_BARGE_FIT,\n -this.geo_bargeRakecutRight.length / 2\n );\n\n //Barge cutout left\n this.geo_bargeCutoutLeftHor = this.geometryManager.getRibspanBarge();\n this.geo_bargeCutoutLeftHor.geometry\n .rotateY(Math.PI / 2)\n .translate(\n -this.geo_bargeCutoutLeftHor.length / 2,\n this.geo_bargeCutoutLeftHor.height / 2 - RIBSPAN_BARGE_FIT,\n this.geo_bargeCutoutLeftHor.width / 2\n );\n\n //Barge cutout right\n this.geo_bargeCutoutRightHor = this.geometryManager.getRibspanBarge();\n this.geo_bargeCutoutRightHor.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_bargeCutoutRightHor.length / 2,\n this.geo_bargeCutoutRightHor.height / 2 - RIBSPAN_BARGE_FIT,\n this.geo_bargeCutoutRightHor.width / 2\n );\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.ROOF_PANEL\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.ROOF_PANEL_BASE\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.GUTTER_PATIOS\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.ROOF_PATIOS\n )\n );\n this.APP.scene.remove(\n ...this.APP.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SHEET_OUTLINE\n )\n );\n //test\n this.APP.scene.remove(\n ...this.APP.scene.children.filter((x) => x.userData.type == \"RAKECUT\")\n );\n\n this.totalBaySize = this.APP.dialogEditBay.listBay.reduce(\n (total, val) => total + val.value,\n 0\n );\n this.roofLength =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldBackOverhang.currentValue;\n const _roofLength =\n Math.pow(this.roofLength, 2) +\n Math.pow(this.getHeightByRoofPitch({ isMultiSpan: true }), 2);\n this.roofLengthPlus = Math.sqrt(_roofLength); // this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue;\n this.roofWidth =\n this.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n this.cutoutExistingBothLength =\n (this.totalBaySize -\n (this.APP.sldExistingLength.currentValue +\n this.APP.existingWallManager.geo_existingWallW1.width * 2)) /\n 2;\n\n this.shouldSnapRoofToExistingWhenCutout = AppComponent.ins.uiManager.calcShouldSnapRoofToExistingWhenCutout()\n\n this.offsetBraketZ = 0;\n if (+UI.upstandBraketType !== 0) {\n this.offsetBraketZ = this.geoBraket_2.height / 4;\n }\n this.addRoofGroup();\n this.addCutout();\n this.addAngelRakeCut();\n this.addStepRakecut();\n\n if (UI.rakeCutLeftType == 0) {\n new HighLightBox(this.roofGroup, {\n min: {\n x: -(UI.totalBayLength / 2 + UI.overhangLeft),\n y: 0,\n z: UI.span + UI.multiSpan + UI.overhangBack + UI.overhangFront,\n },\n max: {\n x: -(UI.totalBayLength / 2 + UI.overhangLeft) + 300,\n y: 0,\n z:\n UI.span + UI.multiSpan + UI.overhangBack + UI.overhangFront - 300,\n },\n userData: { side: BUILDING_SIDE.LEFT },\n });\n }\n\n if (UI.rakeCutRightType == 0) {\n new HighLightBox(this.roofGroup, {\n min: {\n x: UI.totalBayLength / 2 + UI.overhangRight - 300,\n y: 0,\n z: UI.span + UI.multiSpan + UI.overhangBack + UI.overhangFront,\n },\n max: {\n x: UI.totalBayLength / 2 + UI.overhangRight,\n y: 0,\n z:\n UI.span + UI.multiSpan + UI.overhangBack + UI.overhangFront - 300,\n },\n userData: { side: BUILDING_SIDE.RIGHT },\n });\n }\n\n this.existingType = +this.APP.sltExistingType.currentValue;\n\n let offsetXR =\n this.totalBaySize / 2 +\n this.MANAGER.patiosGroup.position.x +\n this.APP.sldRightOverhang.currentValue;\n let offsetLeft =\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue -\n this.MANAGER.patiosGroup.position.x;\n let clipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n const clipingPlane = new Plane(new Vector3(-1, 0, 0), offsetXR); // (this.APP.sldBaySize.currentValue / 2) + this.APP.sldRightOverhang.currentValue );\n this.material.clippingPlanes = [clipingPlaneLeft, clipingPlane];\n MaterialManager.Instance().ROOF_BASE.clippingPlanes = [\n clipingPlaneLeft,\n clipingPlane,\n ];\n const roofPanelCount = Math.ceil(this.roofWidth / RIBSPAN_PANEL_WIDTH);\n let offsetXL = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n\n //panel direction\n let panelDirectionOfset = 1;\n if (\n this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT\n ) {\n offsetXL =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue -\n RIBSPAN_PANEL_WIDTH;\n panelDirectionOfset = -1;\n } else if (\n this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.LEFT_TO_RIGHT\n ) {\n offsetXL = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n }\n\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES &&\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT &&\n this.MANAGER.cutoutCondition\n ) {\n let totalPanelLength = 0;\n let cuted = true;\n\n for (let index = 0; index < roofPanelCount; index++) {\n totalPanelLength += RIBSPAN_PANEL_WIDTH;\n let isOver =\n totalPanelLength < this.APP.sldExistingLength2.currentValue;\n\n this.addRoof(offsetXL, [this.csg_cutoutLeft]);\n cuted = isOver;\n\n offsetXL += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n } else if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES &&\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT &&\n this.MANAGER.cutoutCondition\n ) {\n let totalPanelLength = 0;\n let cuted = false;\n for (let index = 0; index < roofPanelCount; index++) {\n totalPanelLength += RIBSPAN_PANEL_WIDTH;\n let isOver =\n totalPanelLength >=\n this.roofWidth -\n this.APP.sldExistingLength2.currentValue +\n RIBSPAN_PANEL_WIDTH;\n cuted =\n totalPanelLength >=\n this.roofWidth - this.APP.sldExistingLength2.currentValue &&\n !isOver;\n\n this.addRoof(offsetXL, [this.csg_cutoutRight]);\n offsetXL += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n } else if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES &&\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH &&\n this.MANAGER.cutoutCondition\n ) {\n let totalPanelLength = 0;\n let cuted = false;\n let cuted2 = false;\n for (let index = 0; index < roofPanelCount; index++) {\n totalPanelLength += RIBSPAN_PANEL_WIDTH;\n let isOver =\n totalPanelLength < this.APP.sldExistingLength2.currentValue;\n let isOver2 =\n totalPanelLength >=\n this.roofWidth -\n this.APP.sldExistingLength2.currentValue +\n RIBSPAN_PANEL_WIDTH;\n let flag =\n totalPanelLength >=\n this.roofWidth - this.APP.sldExistingLength2.currentValue;\n\n this.addRoof(offsetXL, [this.csg_cutoutLeft, this.csg_cutoutRight]);\n\n offsetXL += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n } else {\n for (let index = 0; index < roofPanelCount; index++) {\n this.addRoof(offsetXL, []);\n offsetXL += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n }\n\n this.addBarge();\n this.addBargeStepRakecut();\n this.addBargeAngelRakecut();\n this.addGutter();\n this.addGutterAngelRakeCut();\n this.addGutterStepRakeCut();\n this.showPanelOutline();\n\n this.scene.visible = UI.showRoof\n\n resolve();\n });\n }\n\n private addCutout() {\n if (this.APP.sltCutOut.currentValue == 1) {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter((x) => x.userData.type == \"CUTOUT\")\n );\n\n let offsetX =\n this.APP.sldExistingLength.currentValue / 2 -\n this.APP.sldEaveWidth.currentValue;\n let offsetY = 0;\n let offsetZ =\n this.APP.sldExistingWidth1.currentValue / 2 +\n UI.eaveWidth -\n UI.overhangBack +\n this.offsetBraketZ;\n \n // To fascia, move roof snap to existing wall\n if(this.shouldSnapRoofToExistingWhenCutout) {\n offsetZ = UI.existingWidth1 / 2 - UI.overhangBack + this.offsetBraketZ;\n }\n\n // Apply pitch to offsetZ, because we cut panel before rotate roof\n offsetZ = offsetZ / this.utils.cos(UI.patiosPitch)\n\n //extra length to prevent lack when cut\n let extra = 5000;\n\n let scaleX = (this.APP.sldExistingLength2.currentValue + extra) / 1000;\n if (scaleX == 0) scaleX = 1;\n let scaleY = (this.APP.sldExistingWallHeight.currentValue + extra) / 1000;\n let scaleZ =\n (this.APP.sldExistingWidth1.currentValue + UI.overhangBack + extra) /\n 1000;\n if (scaleZ == 0) scaleZ = 1;\n\n if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n this.mesh_CutoutLeft = new Mesh(\n this.geo_cutoutLeft,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.mesh_CutoutLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"CUTOUT\",\n };\n\n this.mesh_CutoutLeft.position.set(\n -offsetX - this.APP.sldLeftOverhang.currentValue,\n offsetY,\n offsetZ\n );\n this.mesh_CutoutLeft.scale.set(scaleX, scaleY, scaleZ);\n\n //this.APP.scene.add(this.mesh_CutoutLeft);\n\n this.mesh_CutoutLeft.updateMatrix();\n this.csg_cutoutLeft = CSG.fromMesh(this.mesh_CutoutLeft);\n }\n if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n this.mesh_CutoutRight = new Mesh(\n this.geo_cutoutRight,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.mesh_CutoutRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"CUTOUT\",\n };\n\n this.mesh_CutoutRight.position.set(\n offsetX + this.APP.sldRightOverhang.currentValue,\n offsetY,\n offsetZ\n );\n this.mesh_CutoutRight.scale.set(scaleX, scaleY, scaleZ);\n\n //this.APP.scene.add(this.mesh_CutoutRight);\n\n this.mesh_CutoutRight.updateMatrix();\n this.csg_cutoutRight = CSG.fromMesh(this.mesh_CutoutRight);\n }\n }\n }\n private addAngelRakeCut() {\n let offsetXL =\n -this.totalBaySize / 2 - this.APP.sldLeftOverhang.currentValue;\n let offsetXR =\n this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n let offsetY = -100;\n\n let offsetZ =\n this.MANAGER.patiosLength +\n this.APP.sldEaveWidth.currentValue -\n this.APP.sldExistingWidth1.currentValue / 2 +\n this.offsetBraketZ;\n const _offsetZ =\n (this.MANAGER.patiosLength +\n UI.overhangBack -\n //- this.APP.sldExistingWidth1.currentValue/2\n CONST.GUTTER_ROOF_OFFSET_Z) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n let hypotenuse = Math.sqrt(\n Math.pow(this.MANAGER.patiosLength, 2) +\n Math.pow(this.MANAGER.patiosWidth, 2)\n );\n let scaleLength = hypotenuse / 1000;\n let scaleWidth =\n (this.MANAGER.patiosLength * this.MANAGER.patiosWidth) /\n hypotenuse /\n 1000;\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n let angle = Math.atan(\n this.APP.sldLeftCutHorizontal.currentValue /\n this.APP.sldLeftCutVertical.currentValue\n );\n let _rotY = Math.atan(\n this.APP.sldLeftCutVertical.currentValue /\n this.APP.sldLeftCutHorizontal.currentValue\n );\n let _angle = (Math.PI - _rotY) / 2;\n\n this.mesh_rakecutLeft = new Mesh(\n this.geo_rakecutLeft,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.mesh_rakecutLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"RAKECUT\",\n };\n\n this.mesh_rakecutLeft.position.set(\n offsetXL + this.MANAGER.patiosGroup.position.x,\n offsetY,\n offsetZ - this.APP.sldLeftCutVertical.currentValue\n );\n this.mesh_rakecutLeft.scale.set(scaleWidth, 5, scaleLength);\n this.mesh_rakecutLeft.rotateY(angle);\n this.mesh_rakecutLeft.updateMatrix();\n this.csg_rakecutLeft = CSG.fromMesh(this.mesh_rakecutLeft);\n //this.APP.scene.add(this.mesh_rakecutLeft);\n\n //cut gutter csg\n let scaleZ = (this.APP.dialogEditBay.totalBaySize + 200) / 500;\n let scaleX = (this.APP.dialogEditBay.totalBaySize + 200) / 500;\n this.meshCutGutterLeft1 = new Mesh(\n this.geoCutGutter,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.meshCutGutterLeft1.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"CUTGUTTER\",\n };\n this.meshCutGutterLeft1.position.set(\n offsetXL + this.APP.sldLeftCutHorizontal.currentValue,\n 0,\n _offsetZ\n );\n this.meshCutGutterLeft1.scale.set(scaleX, 1, scaleZ);\n this.meshCutGutterLeft1.rotation.set(0, _angle, 0);\n this.meshCutGutterLeft1.updateMatrix();\n this.csgCutGutterLeft1 = CSG.fromMesh(this.meshCutGutterLeft1);\n //this.APP.scene.add(this.meshCutGutterLeft1);\n\n this.meshCutGutterLeft2 = new Mesh(\n this.geoCutGutter,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.meshCutGutterLeft2.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"CUTGUTTER\",\n };\n this.meshCutGutterLeft2.position.set(\n offsetXL + this.APP.sldLeftCutHorizontal.currentValue,\n 0,\n _offsetZ\n );\n this.meshCutGutterLeft2.scale.set(scaleX, 1, scaleZ);\n this.meshCutGutterLeft2.rotation.set(0, _angle + Math.PI, 0);\n this.meshCutGutterLeft2.updateMatrix();\n this.csgCutGutterLeft2 = CSG.fromMesh(this.meshCutGutterLeft2);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n let angle = Math.atan(\n this.APP.sldRightCutHorizontal.currentValue /\n this.APP.sldRightCutVertical.currentValue\n );\n\n let _rotY = Math.atan(\n this.APP.sldRightCutVertical.currentValue /\n this.APP.sldRightCutHorizontal.currentValue\n );\n let _angle = (Math.PI - _rotY) / 2;\n this.mesh_rakecutRight = new Mesh(\n this.geo_rakecutRight,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.mesh_rakecutRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"RAKECUT\",\n };\n\n this.mesh_rakecutRight.position.set(\n offsetXR + this.MANAGER.patiosGroup.position.x,\n offsetY,\n offsetZ - this.APP.sldRightCutVertical.currentValue\n );\n this.mesh_rakecutRight.scale.set(scaleWidth, 5, scaleLength);\n this.mesh_rakecutRight.rotateY(-angle);\n\n //this.APP.scene.add(this.mesh_rakecutRight);\n\n this.mesh_rakecutRight.updateMatrix();\n this.csg_rakecutRight = CSG.fromMesh(this.mesh_rakecutRight);\n\n //cut gutter\n let scaleZ = (this.APP.dialogEditBay.totalBaySize + 200) / 500;\n let scaleX = (this.APP.dialogEditBay.totalBaySize + 200) / 500;\n this.meshCutGutterRight1 = new Mesh(\n this.geoCutGutter,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.meshCutGutterRight1.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"CUTGUTTER\",\n };\n this.meshCutGutterRight1.position.set(\n offsetXR - this.APP.sldRightCutHorizontal.currentValue,\n 0,\n _offsetZ\n );\n this.meshCutGutterRight1.rotation.set(0, -_angle, 0);\n this.meshCutGutterRight1.scale.set(scaleX, 1, scaleZ);\n this.meshCutGutterRight1.updateMatrix();\n this.csgCutGutterRight1 = CSG.fromMesh(this.meshCutGutterRight1);\n\n this.meshCutGutterRight2 = new Mesh(\n this.geoCutGutter,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.meshCutGutterRight2.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"CUTGUTTER\",\n };\n this.meshCutGutterRight2.position.set(\n offsetXR - this.APP.sldRightCutHorizontal.currentValue,\n 0,\n _offsetZ\n );\n this.meshCutGutterRight2.scale.set(scaleX, 1, scaleZ);\n this.meshCutGutterRight2.rotation.set(0, -(_angle + Math.PI), 0);\n this.meshCutGutterRight2.updateMatrix();\n this.csgCutGutterRight2 = CSG.fromMesh(this.meshCutGutterRight2);\n //this.APP.scene.add(this.meshCutGutterRight2);\n }\n }\n private addStepRakecut() {\n let offsetXL =\n -this.totalBaySize / 2 -\n this.APP.sldLeftOverhang.currentValue +\n this.MANAGER.patiosGroup.position.x;\n let offsetXR =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue +\n this.MANAGER.patiosGroup.position.x;\n let offsetY = -100; //this.APP.sldExistingWallHeight.currentValue;\n // let offsetY = this.utils.getHeightByAngle(\n // this.APP.sldExistingWallHeight.currentValue + this.APP.sldFlyOverBracketHeight.currentValue,\n // this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue,\n // this.APP.sltRoofPitch.currentValue,\n // 1\n // );\n\n let offsetZ =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldEaveWidth.currentValue -\n this.APP.sldExistingWidth1.currentValue / 2 +\n this.offsetBraketZ;\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n let scaleLength = (this.APP.sldLeftCutVertical.currentValue + 100) / 1000;\n let scaleWidth =\n (this.APP.sldLeftCutHorizontal.currentValue + 100) / 1000;\n\n this.mesh_rakecutLeft = new Mesh(\n this.geo_rakecutLeft,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.mesh_rakecutLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"RAKECUT\",\n };\n\n this.mesh_rakecutLeft.position.set(\n offsetXL + this.APP.sldLeftCutHorizontal.currentValue,\n offsetY,\n offsetZ - this.APP.sldLeftCutVertical.currentValue\n );\n this.mesh_rakecutLeft.scale.set(scaleWidth, 5, scaleLength);\n\n //this.APP.scene.add(this.mesh_rakecutLeft);\n\n this.mesh_rakecutLeft.updateMatrix();\n this.csg_rakecutLeft = CSG.fromMesh(this.mesh_rakecutLeft);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n let scaleLength =\n (this.APP.sldRightCutVertical.currentValue + 100) / 1000;\n let scaleWidth =\n (this.APP.sldRightCutHorizontal.currentValue + 100) / 1000;\n\n this.mesh_rakecutRight = new Mesh(\n this.geo_rakecutRight,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.mesh_rakecutRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"RAKECUT\",\n };\n\n this.mesh_rakecutRight.position.set(\n offsetXR - this.APP.sldRightCutHorizontal.currentValue,\n offsetY,\n offsetZ - this.APP.sldRightCutVertical.currentValue\n );\n this.mesh_rakecutRight.scale.set(scaleWidth, 5, scaleLength);\n\n //this.APP.scene.add(this.mesh_rakecutRight);\n\n this.mesh_rakecutRight.updateMatrix();\n this.csg_rakecutRight = CSG.fromMesh(this.mesh_rakecutRight);\n }\n }\n public addRoofGroup() {\n this.roofGroup = null;\n this.roofGroup = new Group();\n this.roofGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.ROOF_PATIOS,\n };\n\n let offsetX = 0;\n // if (this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3) {\n // if (this.APP.sldExistingWidth1.currentValue > this.APP.sldEaveWidth.currentValue) {\n // offsetX = this.APP.sldEaveWidth.currentValue;\n // }\n // }\n let height = 0;\n if (+UI.upstandBraketType !== 0) {\n height =\n +UI.upstandBraketType +\n this.geoBeam.height +\n this.geoBraket_1.width * this.utils.tan(UI.patiosPitch);\n }\n if (UI.isUpFasciaUpstandardBracket) {\n height -= this.geoBraket_1.width * this.utils.tan(UI.patiosPitch);\n }\n let offsetY =\n UI.eaveHeight + height + UI.overhangBack * this.utils.tan(UI.patiosPitch);\n if (UI.isUpFasciaUpstandardBracket) {\n offsetY =\n UI.eaveHeight +\n height -\n UI.overhangBack * this.utils.tan(UI.patiosPitch);\n }\n\n let offsetZ =\n this.APP.sldEaveWidth.currentValue -\n this.APP.sldExistingWidth1.currentValue / 2 -\n UI.overhangBack;\n\n this.roofGroup.position.set(offsetX, offsetY, offsetZ + this.offsetBraketZ);\n if (UI.isUpFasciaUpstandardBracket) {\n this.roofGroup.rotation.set(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue),\n 0,\n 0\n );\n } else {\n this.roofGroup.rotation.set(\n this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue),\n 0,\n 0\n );\n }\n\n this.scene.add(this.roofGroup);\n }\n public getOutLines(): Printing2DGeometry {\n let objs = this.roofGroup.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n );\n\n let gutterGroupObjs = this.roofGroup.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS\n );\n let gutterObjs: Object3D[] = [];\n for (let group of gutterGroupObjs) {\n gutterObjs.push(...group.children);\n }\n\n objs = [...objs, ...gutterObjs];\n\n let lsGeometries: Printing2DLine[] = [];\n\n let offsetLeft =\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue -\n this.MANAGER.patiosGroup.position.x;\n let offsetRight =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue +\n this.MANAGER.patiosGroup.position.x;\n let roofClipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let roofClipingPlane = new Plane(new Vector3(-1, 0, 0), offsetRight);\n\n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n o as Mesh,\n 60\n );\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n outlineGeo.translate(0, 5000, 0);\n\n if (\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ) {\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlane);\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n }\n\n // var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"ROOF_OUTLINE\"};\n // this.APP.scene.add( line );\n\n let simplifiedGeo = this.simplifyGeo(outlineGeo);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: simplifiedGeo.vertices,\n views: o.userData.views,\n });\n\n // var line = new LineSegments( simplifiedGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"SHEETING_OUTLINE\"};\n // this.APP.scene.add( line );\n }\n\n lsGeometries.push({\n objectType: GEOMETRY_TYPE.ROOF_COVER,\n vertices: this.makeRoofPolygon(),\n color: this.utils.convertHexColorToRgb(`#${new Color(UI.panelColor).getHexString()}`),\n views: [\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ]\n });\n\n return { lines: lsGeometries, texts: [] };\n }\n makeRoofPolygon() {\n const polygon = this.utils.getRoofCoverPolygonForLRRoof()\n this.roofGroup.updateWorldMatrix(true, true)\n return polygon.map(el => (el as Vector3).applyMatrix4(this.roofGroup.matrixWorld))\n }\n public showPanelOutline() {\n if (this.APP.sltPanelDirectionShow.currentValue == false) return;\n\n let objs = this.roofGroup.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n );\n\n let offsetLeft =\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue -\n this.MANAGER.patiosGroup.position.x;\n let offsetRight =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue +\n this.MANAGER.patiosGroup.position.x;\n let roofClipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let roofClipingPlaneRight = new Plane(new Vector3(-1, 0, 0), offsetRight);\n\n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n o as Mesh,\n 60\n );\n\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n //outlineGeo.translate(0, 5000, 0);\n\n if (\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ) {\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneRight);\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n }\n\n var line = new LineSegments(\n outlineGeo,\n MaterialManager.Instance().MESH_OUTLINE\n );\n line.userData = { type: GEOMETRY_TYPE.SHEET_OUTLINE };\n this.APP.scene.add(line);\n }\n }\n public simplifyGeo(geo: BufferGeometry): Geometry {\n let simplifiedGeo = new Geometry();\n let vertices = geo.getAttribute(\"position\").array;\n for (let i = 0; i < vertices.length; i += 3) {\n simplifiedGeo.vertices.push(\n new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2])\n );\n }\n return simplifiedGeo;\n }\n public addRoof(offsetX: number, csgObjs: CSG[]) {\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n const mesh: Mesh = new Mesh(\n this.roofInfo.geometry,\n MaterialManager.Instance().ROOF\n );\n\n let offsetSheet = 0;\n if (\n this.APP.sltRoofSheetingType.currentValue == 0 ||\n this.APP.sltRoofSheetingType.currentValue == 1\n ) {\n offsetSheet = 13;\n } else {\n offsetSheet = 5;\n }\n\n //if ((this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3) && this.APP.sldExistingWidth1.currentValue > this.APP.sldEaveWidth.currentValue) {\n // offsetX += this.APP.sldEaveWidth.currentValue;\n //}\n\n let scaleZ = this.roofLengthPlus / this.roofInfo.length;\n const offsetY = 0;\n let offsetZ = 0;\n\n // if (this.APP.sltCutOut.currentValue == 1 && this.APP.sltExistingType.currentValue != 0 && over && this.APP.sldExistingLength2.currentValue > 0) {\n // scaleZ = (this.roofLengthPlus - this.APP.sldExistingWidth1.currentValue) / this.roofInfo.length;\n // offsetZ += this.APP.sldExistingWidth1.currentValue;\n // }\n\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setZ(scaleZ);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.ROOF_PANEL,\n views: views,\n length: scaleZ,\n };\n\n let cutoutCondition =\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES &&\n this.APP.sltExistingType.currentValue != BUILDING_SIDE.NONE &&\n this.APP.sldExistingLength2.currentValue > 0;\n let rakeCutCondition =\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE ||\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE;\n\n if (cutoutCondition || rakeCutCondition) {\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n //cho no cung he toa do\n mesh.position.set(\n offsetX + this.MANAGER.patiosGroup.position.x,\n offsetY,\n offsetZ + this.roofGroup.position.z\n );\n mesh.updateMatrix();\n\n let meshResult = mesh.clone();\n\n if (cutoutCondition) {\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(\n CSG.fromMesh(meshResult).subtract(csgObj),\n mesh.matrix\n );\n }\n }\n if (rakeCutCondition) {\n if (this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE) {\n meshResult = CSG.toMesh(\n CSG.fromMesh(meshResult).subtract(this.csg_rakecutLeft),\n mesh.matrix\n );\n }\n if (this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE) {\n meshResult = CSG.toMesh(\n CSG.fromMesh(meshResult).subtract(this.csg_rakecutRight),\n mesh.matrix\n );\n }\n }\n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix)); //=> tra ve goc toa do\n meshResult.applyMatrix4(matrixBefore);\n\n let buferGeo = new BufferGeometry().fromGeometry((meshResult as Mesh).geometry as Geometry);\n this.utils.changeGeoColor(buferGeo, new Vector3(0, 1, 0), UI.roofColor.toString());\n let newGeo = new Geometry().fromBufferGeometry(buferGeo);\n (meshResult as Mesh).geometry = newGeo;\n\n this.roofGroup.add(meshResult);\n } else {\n this.roofGroup.add(mesh);\n }\n }\n private addBarge() {\n if (UI.isUpFasciaUpstandardBracket) {\n let mesh: Mesh;\n let extraWallWidth =\n this.APP.existingWallManager.geo_existingWallW1.width +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n let offsetXF = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n let offsetXL1 =\n -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue) +\n this.APP.sldExistingLength2.currentValue;\n let offsetXL2 = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n let offsetXR1 =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue -\n this.APP.sldExistingLength2.currentValue;\n let offsetXR2 =\n this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n let offsetZL = 0;\n let offsetZR = 0;\n let offsetZFront =\n (this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldBackOverhang.currentValue) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n let bargeFrontLength = this.roofWidth;\n let scaleCutoutVer =\n this.utils.getHypotenuseByCos(\n this.APP.sldExistingWidth1.currentValue + this.bargeLeftInfo.width,\n this.APP.sltRoofPitch.currentValue\n ) / this.bargeLeftInfo.length;\n let bargeLeftLength = this.roofLength;\n let bargeRightLength = this.roofLength;\n let offsetY = 0;\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n //cutout\n if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.APP.sldExistingLength2.currentValue > 0 &&\n this.MANAGER.cutoutCondition &&\n (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH)\n ) {\n bargeLeftLength -= this.APP.sldExistingWidth1.currentValue;\n offsetZL += this.utils.getHypotenuseByCos(\n this.APP.sldExistingWidth1.currentValue,\n this.APP.sltRoofPitch.currentValue\n );\n //TODO: Temp ==> this.geoBraket_1.width / 10\n //cutout Hor\n let offsetZ = this.utils.getHypotenuseByCos(\n UI.existingWidth1 - this.geoBraket_1.width / 10,\n UI.patiosPitch\n );\n mesh = new Mesh(\n this.geo_bargeCutoutLeftHor.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXL1, offsetY, offsetZ);\n mesh.scale.setX(\n UI.existingLength2 / this.geo_bargeCutoutLeftHor.length\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n //cutout Ver\n mesh = new Mesh(\n this.bargeLeftInfo.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXL1, offsetY, 0);\n mesh.scale.setZ(scaleCutoutVer);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n }\n if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.APP.sldExistingLength2.currentValue > 0 &&\n this.MANAGER.cutoutCondition &&\n (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH)\n ) {\n bargeRightLength -= this.APP.sldExistingWidth1.currentValue;\n offsetZR += this.utils.getHypotenuseByCos(\n this.APP.sldExistingWidth1.currentValue,\n this.APP.sltRoofPitch.currentValue\n );\n //TODO: Temp ==> this.geoBraket_1.width / 10\n //cutout hor\n let offsetZ = this.utils.getHypotenuseByCos(\n this.APP.sldExistingWidth1.currentValue - this.geoBraket_1.width / 10,\n this.APP.sltRoofPitch.currentValue\n );\n mesh = new Mesh(\n this.geo_bargeCutoutRightHor.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXR1, offsetY, offsetZ);\n mesh.scale.setX(\n UI.existingLength2 / this.geo_bargeCutoutLeftHor.length\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n // cutout ver\n mesh = new Mesh(\n this.bargeRightInfo.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXR1, offsetY, 0);\n mesh.scale.setZ(scaleCutoutVer);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n }\n //Rakecut\n if (\n this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE ||\n this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP\n ) {\n offsetXF += this.APP.sldLeftCutHorizontal.currentValue;\n bargeLeftLength -= this.APP.sldLeftCutVertical.currentValue;\n bargeFrontLength -= this.APP.sldLeftCutHorizontal.currentValue;\n }\n if (\n this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE ||\n this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP\n ) {\n bargeRightLength -= this.APP.sldRightCutVertical.currentValue;\n bargeFrontLength -= this.APP.sldRightCutHorizontal.currentValue;\n }\n let scaleXF = bargeFrontLength / this.bargeFrontInfo.length;\n let scaleZLeft =\n this.utils.getHypotenuseByCos(\n bargeLeftLength,\n this.APP.sltRoofPitch.currentValue\n ) / this.bargeLeftInfo.length;\n let scaleZRight =\n this.utils.getHypotenuseByCos(\n bargeRightLength,\n this.APP.sltRoofPitch.currentValue\n ) / this.bargeRightInfo.length;\n //left\n mesh = new Mesh(\n this.bargeLeftInfo.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXL2, offsetY, offsetZL);\n mesh.scale.setZ(scaleZLeft);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n //right\n mesh = new Mesh(\n this.bargeRightInfo.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXR2, offsetY, offsetZR);\n mesh.scale.setZ(scaleZRight);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n //front\n mesh = new Mesh(\n this.bargeFrontInfo.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXF, 0, offsetZFront + 2);\n mesh.scale.setX(scaleXF);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n } else {\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n let mesh: Mesh;\n let offsetXB = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n let offsetXL1 = -(UI.totalBayLength / 2 + UI.overhangLeft) + UI.existingLength2 + (this.shouldSnapRoofToExistingWhenCutout ? 1 : 0) * UI.eaveWidth;\n let offsetXL2 = -( UI.totalBayLength / 2 + UI.overhangLeft);\n let offsetXR1 = this.totalBaySize / 2 + UI.overhangRight - UI.existingLength2 - (this.shouldSnapRoofToExistingWhenCutout ? 1 : 0) * UI.eaveWidth;\n let offsetXR2 = UI.totalBayLength / 2 + UI.overhangRight;\n let offsetZL = 0;\n let offsetZR = 0;\n const offsetY = 0;\n let scaleXB = this.roofWidth / this.geo_receiverChanel.length;\n let scaleZLeft = this.roofLengthPlus / this.bargeLeftInfo.length;\n let bargeLeftLength = this.roofLengthPlus;\n let scaleZRight = this.roofLengthPlus / this.bargeRightInfo.length;\n let bargeRightLength = this.roofLengthPlus;\n\n let bargeCutOutVerLength = this.utils.getHypotenuseByCos(\n this.APP.sldExistingWidth1.currentValue + this.bargeLeftInfo.width,\n this.APP.sltRoofPitch.currentValue\n )\n if(UI.structureType == CONNECTION_TYPE.FASCIA) {\n if(this.shouldSnapRoofToExistingWhenCutout) {\n bargeCutOutVerLength = this.utils.getHypotenuseByCos(\n UI.existingWidth1 - UI.eaveWidth + this.geo_receiverChanel.width,\n this.APP.sltRoofPitch.currentValue\n )\n } else {\n bargeCutOutVerLength = this.utils.getHypotenuseByCos(\n UI.existingWidth1 + this.geo_receiverChanel.width,\n this.APP.sltRoofPitch.currentValue\n )\n }\n }\n let scaleCutoutVer = bargeCutOutVerLength / this.bargeLeftInfo.length;\n let scaleCutoutHor =\n this.APP.sldExistingLength2.currentValue /\n this.geo_bargeCutoutLeftHor.length;\n //cutout\n if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.APP.sldExistingLength2.currentValue > 0 &&\n this.MANAGER.cutoutCondition &&\n (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH)\n ) {\n scaleXB =\n (this.roofWidth - this.APP.sldExistingLength2.currentValue) /\n this.geo_receiverChanel.length;\n scaleZLeft =\n this.utils.getHypotenuseByCos(\n this.roofLength - this.APP.sldExistingWidth1.currentValue,\n this.APP.sltRoofPitch.currentValue\n ) / this.bargeLeftInfo.length;\n bargeLeftLength = this.utils.getHypotenuseByCos(\n this.roofLength - UI.existingWidth1,\n this.APP.sltRoofPitch.currentValue\n );\n offsetXB += this.APP.sldExistingLength2.currentValue;\n if(this.shouldSnapRoofToExistingWhenCutout) {\n bargeLeftLength = this.utils.getHypotenuseByCos(\n this.roofLength - UI.existingWidth1 + UI.eaveWidth,\n this.APP.sltRoofPitch.currentValue\n );\n offsetZL += this.utils.getHypotenuseByCos(\n UI.existingWidth1 - UI.eaveWidth,\n this.APP.sltRoofPitch.currentValue\n );\n } else {\n offsetZL += this.utils.getHypotenuseByCos(\n UI.existingWidth1,\n this.APP.sltRoofPitch.currentValue\n );\n }\n\n //TODO: Temp ==> this.geoBraket_1.width / 10\n //cutout Hor\n let offsetZ = this.utils.getHypotenuseByCos(\n UI.existingWidth1 - this.geoBraket_1.width / 10,\n this.APP.sltRoofPitch.currentValue\n );\n if(this.shouldSnapRoofToExistingWhenCutout) {\n offsetZ = this.utils.getHypotenuseByCos(\n UI.existingWidth1 - UI.eaveWidth - this.geoBraket_1.width / 10,\n this.APP.sltRoofPitch.currentValue\n );\n }\n \n // If normal fascia, the back barge is receive chanel\n if (UI.structureType == CONNECTION_TYPE.FASCIA) {\n const receiveChanelLength = scaleCutoutHor * this.geo_bargeCutoutLeftHor.length + (this.shouldSnapRoofToExistingWhenCutout ? 1 : 0) * UI.eaveWidth\n const receiveChanelScale = receiveChanelLength / this.geo_receiverChanel.length\n mesh = new Mesh(\n this.geo_receiverChanel.geometry,\n MaterialManager.Instance().RECEIVER_CHANEL\n );\n mesh.position.set(offsetXL1 - receiveChanelLength, offsetY, offsetZ);\n mesh.scale.setX(receiveChanelScale);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.RECEIVER_CHANEL,\n views: views,\n };\n } else {\n mesh = new Mesh(\n this.geo_bargeCutoutLeftHor.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXL1, offsetY, offsetZ);\n mesh.scale.setX(scaleCutoutHor);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n \n }\n \n this.roofGroup.add(mesh);\n\n // Cutout vertical (Left of existing length 1)\n if(UI.structureType == CONNECTION_TYPE.FASCIA) {\n mesh = new Mesh(\n this.geoReceiveChannelLeftInfo.geometry,\n MaterialManager.Instance().RECEIVER_CHANEL\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.RECEIVER_CHANEL,\n views: views,\n };\n } else {\n mesh = new Mesh(\n this.bargeLeftInfo.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n }\n mesh.position.set(offsetXL1, offsetY, 0);\n mesh.scale.setZ(scaleCutoutVer);\n this.roofGroup.add(mesh);\n }\n if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.APP.sldExistingLength2.currentValue > 0 &&\n this.MANAGER.cutoutCondition &&\n (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH)\n ) {\n scaleXB =\n (this.roofWidth - this.APP.sldExistingLength2.currentValue) /\n this.geo_receiverChanel.length;\n scaleZRight =\n this.utils.getHypotenuseByCos(\n this.roofLength - this.APP.sldExistingWidth1.currentValue,\n this.APP.sltRoofPitch.currentValue\n ) / this.bargeRightInfo.length;\n bargeRightLength = this.utils.getHypotenuseByCos(\n this.roofLength - UI.existingWidth1,\n UI.patiosPitch\n );\n \n if(this.shouldSnapRoofToExistingWhenCutout) {\n bargeRightLength = this.utils.getHypotenuseByCos(\n this.roofLength - UI.existingWidth1 + UI.eaveWidth,\n UI.patiosPitch\n );\n offsetZR += this.utils.getHypotenuseByCos(\n UI.existingWidth1 - UI.eaveWidth,\n UI.patiosPitch\n );\n } else {\n offsetZR += this.utils.getHypotenuseByCos(\n UI.existingWidth1,\n UI.patiosPitch\n );\n }\n\n //TODO: Temp ==> this.geoBraket_1.width / 10\n //cutout hor\n let offsetZ = this.utils.getHypotenuseByCos(\n UI.existingWidth1 - this.geoBraket_1.width / 10,\n this.APP.sltRoofPitch.currentValue\n );\n if(this.shouldSnapRoofToExistingWhenCutout) {\n offsetZ = this.utils.getHypotenuseByCos(\n UI.existingWidth1 - UI.eaveWidth - this.geoBraket_1.width / 10,\n this.APP.sltRoofPitch.currentValue\n );\n }\n\n if (UI.structureType == CONNECTION_TYPE.FASCIA) {\n const receiveChanelLength = scaleCutoutHor * this.geo_bargeCutoutLeftHor.length + (this.shouldSnapRoofToExistingWhenCutout ? 1 : 0) * UI.eaveWidth\n const receiveChanelScale = receiveChanelLength / this.geo_receiverChanel.length\n mesh = new Mesh(\n this.geo_receiverChanel.geometry,\n MaterialManager.Instance().RECEIVER_CHANEL\n );\n mesh.scale.setX(receiveChanelScale);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.RECEIVER_CHANEL,\n views: views,\n };\n \n } else {\n mesh = new Mesh(\n this.geo_bargeCutoutRightHor.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.scale.setX(scaleCutoutHor);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n }\n mesh.position.set(offsetXR1, offsetY, offsetZ);\n this.roofGroup.add(mesh);\n \n //cutout ver\n \n if(UI.structureType == CONNECTION_TYPE.FASCIA) {\n mesh = new Mesh(\n this.geoReceiveChannelRightInfo.geometry,\n MaterialManager.Instance().RECEIVER_CHANEL\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.RECEIVER_CHANEL,\n views: views,\n };\n } else {\n mesh = new Mesh(\n this.bargeRightInfo.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n }\n mesh.position.set(offsetXR1, offsetY, 0);\n mesh.scale.setZ(scaleCutoutVer);\n this.roofGroup.add(mesh);\n }\n\n if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.APP.sldExistingLength2.currentValue > 0 &&\n this.MANAGER.cutoutCondition &&\n this.APP.sltExistingType.currentValue == 3\n ) {\n scaleXB =\n (this.roofWidth - this.APP.sldExistingLength2.currentValue * 2) /\n this.geo_receiverChanel.length;\n }\n //Rake cut\n if (this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE) {\n bargeLeftLength -= this.APP.sldLeftCutVertical.currentValue;\n }\n if (this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE) {\n bargeRightLength -= this.APP.sldRightCutVertical.currentValue;\n }\n scaleZLeft = bargeLeftLength / this.bargeLeftInfo.length;\n scaleZRight = bargeRightLength / this.bargeRightInfo.length;\n\n // Left barge (Left side of existing length 1 and existing length 2)\n if(\n UI.structureType == CONNECTION_TYPE.FASCIA \n && (UI.existingType == BUILDING_SIDE.LEFT || UI.existingType == BUILDING_SIDE.BOTH)\n && this.shouldSnapRoofToExistingWhenCutout\n && UI.existingWidth2 > 0\n ) {\n mesh = new Mesh(\n this.geoReceiveChannelLeftInfo.geometry,\n MaterialManager.Instance().RECEIVER_CHANEL\n );\n mesh.scale.setZ(scaleZLeft);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.RECEIVER_CHANEL,\n views: views,\n };\n } else {\n mesh = new Mesh(\n this.bargeLeftInfo.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.scale.setZ(scaleZLeft);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n }\n mesh.position.set(offsetXL2, offsetY, offsetZL);\n this.roofGroup.add(mesh);\n\n // Right barge (Right side of existing length 1 and existing length 2)\n if(\n UI.structureType == CONNECTION_TYPE.FASCIA \n && (UI.existingType == BUILDING_SIDE.RIGHT || UI.existingType == BUILDING_SIDE.BOTH)\n && this.shouldSnapRoofToExistingWhenCutout\n && UI.existingWidth2 > 0\n ) {\n mesh = new Mesh(\n this.geoReceiveChannelRightInfo.geometry,\n MaterialManager.Instance().RECEIVER_CHANEL\n );\n mesh.scale.setZ(scaleZRight);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.RECEIVER_CHANEL,\n views: views,\n };\n } else {\n mesh = new Mesh(\n this.bargeRightInfo.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.scale.setZ(scaleZRight);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n }\n mesh.position.set(offsetXR2, offsetY, offsetZR);\n this.roofGroup.add(mesh);\n if(this.shouldSnapRoofToExistingWhenCutout) {\n if(UI.existingType == BUILDING_SIDE.LEFT || UI.existingType == BUILDING_SIDE.RIGHT) {\n scaleXB -= UI.eaveWidth / this.geo_receiverChanel.length;\n } else if(UI.existingType == BUILDING_SIDE.BOTH) {\n scaleXB -= 2 * UI.eaveWidth / this.geo_receiverChanel.length;\n }\n if(UI.existingType == BUILDING_SIDE.LEFT || UI.existingType == BUILDING_SIDE.BOTH) {\n offsetXB += UI.eaveWidth;\n }\n }\n if (UI.upstandBraketType == 0) {\n mesh = new Mesh(\n this.geo_receiverChanel.geometry,\n MaterialManager.Instance().RECEIVER_CHANEL\n );\n mesh.position.set(offsetXB, offsetY, 0);\n mesh.scale.setX(scaleXB);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.RECEIVER_CHANEL,\n views: views,\n };\n this.roofGroup.add(mesh);\n } else {\n mesh = new Mesh(\n this.bargeBackInfo.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXB, offsetY, 0);\n mesh.scale.setX(scaleXB);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n }\n }\n }\n private addBargeStepRakecut() {\n if (UI.isUpFasciaUpstandardBracket) {\n if (\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.STEP &&\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.STEP\n ) {\n return;\n }\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n let offsetXL =\n this.APP.dialogEditBay.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue;\n let offsetXR =\n this.APP.dialogEditBay.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue;\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n let offsetZ = this.utils.getHypotenuseByCos(\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldBackOverhang.currentValue -\n this.APP.sldLeftCutVertical.currentValue,\n this.APP.sltRoofPitch.currentValue\n );\n let scaleZ =\n (this.APP.sldLeftCutVertical.currentValue +\n this.bargeLeftInfo.width) /\n this.bargeLeftInfo.length;\n let scaleX =\n this.APP.sldLeftCutHorizontal.currentValue /\n this.bargeLeftInfo.length;\n\n let bargeVer = new Mesh(\n this.bargeLeftInfo.geometry,\n MaterialManager.Instance().BARGE\n );\n bargeVer.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n bargeVer.position.set(\n -offsetXL + this.APP.sldLeftCutHorizontal.currentValue,\n 0,\n offsetZ - this.bargeLeftInfo.width\n );\n bargeVer.scale.set(1, 1, scaleZ);\n\n let bargeHor = new Mesh(\n this.bargeLeftInfo.geometry,\n MaterialManager.Instance().BARGE\n );\n bargeHor.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n bargeHor.position.set(-offsetXL, 0, offsetZ);\n bargeHor.scale.set(1, 1, scaleX);\n bargeHor.rotateY(Math.PI / 2);\n\n this.roofGroup.add(bargeVer, bargeHor);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n let offsetZ = this.utils.getHypotenuseByCos(\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldBackOverhang.currentValue -\n this.APP.sldRightCutVertical.currentValue,\n this.APP.sltRoofPitch.currentValue\n );\n let scaleZ =\n (this.APP.sldRightCutVertical.currentValue +\n this.bargeRightInfo.width) /\n this.bargeRightInfo.length;\n let scaleX =\n this.APP.sldRightCutHorizontal.currentValue /\n this.bargeRightInfo.length;\n\n let bargeVer = new Mesh(\n this.bargeRightInfo.geometry,\n MaterialManager.Instance().BARGE\n );\n bargeVer.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n bargeVer.position.set(\n offsetXR - this.APP.sldRightCutHorizontal.currentValue,\n 0,\n offsetZ - this.bargeRightInfo.width\n );\n bargeVer.scale.set(1, 1, scaleZ);\n\n let bargeHor = new Mesh(\n this.bargeRightInfo.geometry,\n MaterialManager.Instance().BARGE\n );\n bargeHor.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n bargeHor.position.set(offsetXR, 0, offsetZ);\n bargeHor.scale.set(1, 1, scaleX);\n bargeHor.rotateY(-Math.PI / 2);\n\n this.roofGroup.add(bargeVer, bargeHor);\n }\n } else {\n if (\n !(\n this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP ||\n this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP\n )\n ) {\n return;\n }\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n let offsetXL =\n this.APP.dialogEditBay.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue;\n let offsetXR =\n this.APP.dialogEditBay.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue;\n let offsetZL = this.utils.getHypotenuseByCos(\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n UI.overhangBack -\n this.APP.sldLeftCutVertical.currentValue,\n this.APP.sltRoofPitch.currentValue\n );\n let offsetZR = this.utils.getHypotenuseByCos(\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n UI.overhangBack +\n this.APP.sldFrontOverhang.currentValue -\n this.APP.sldRightCutVertical.currentValue,\n this.APP.sltRoofPitch.currentValue\n );\n let scaleZL =\n this.APP.sldLeftCutVertical.currentValue / this.bargeLeftInfo.length;\n let scaleZR =\n this.APP.sldRightCutVertical.currentValue / this.bargeRightInfo.length;\n //let scaleX = (this.APP.sldRakeCutHorizontal.currentValue) / this.bargeLeftInfo.length;\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n let bargeVer = new Mesh(\n this.bargeLeftInfo.geometry,\n MaterialManager.Instance().BARGE\n );\n bargeVer.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n bargeVer.position.set(\n -offsetXL + this.APP.sldLeftCutHorizontal.currentValue,\n 0,\n offsetZL\n );\n bargeVer.scale.set(1, 1, scaleZL);\n\n // let bargeHor = new Mesh(this.bargeLeftInfo.geometry, MaterialManager.Instance().BARGE);\n // bargeHor.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n // bargeHor.position.set(-offsetXL, 0, offsetZ);\n // bargeHor.scale.set(1, 1, scaleX);\n // bargeHor.rotateY(Math.PI / 2);\n\n this.roofGroup.add(bargeVer);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n let bargeVer = new Mesh(\n this.bargeRightInfo.geometry,\n MaterialManager.Instance().BARGE\n );\n bargeVer.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n bargeVer.position.set(\n offsetXR - this.APP.sldRightCutHorizontal.currentValue,\n 0,\n offsetZR\n );\n bargeVer.scale.set(1, 1, scaleZR);\n\n // let bargeHor = new Mesh(this.bargeRightInfo.geometry, MaterialManager.Instance().BARGE);\n // bargeHor.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n // bargeHor.position.set(offsetXR, 0, offsetZ);\n // bargeHor.scale.set(1, 1, scaleX);\n // bargeHor.rotateY(-Math.PI / 2);\n\n this.roofGroup.add(bargeVer);\n }\n }\n }\n private addBargeAngelRakecut() {\n if (!UI.isUpFasciaUpstandardBracket) {\n return;\n }\n if (\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.ANGLE &&\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.ANGLE\n ) {\n return;\n }\n\n let offsetY = 0;\n let offsetZ =\n (this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldBackOverhang.currentValue) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n let length = Math.sqrt(\n Math.pow(this.APP.sldLeftCutVertical.currentValue, 2) +\n Math.pow(this.APP.sldLeftCutHorizontal.currentValue, 2)\n );\n let scaleZ = length / this.geo_bargeRakecutLeft.length;\n\n let rotY = Math.atan(\n this.APP.sldLeftCutHorizontal.currentValue /\n this.APP.sldLeftCutVertical.currentValue\n );\n\n let offsetX =\n -this.totalBaySize / 2 -\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldLeftCutHorizontal.currentValue;\n let mesh = new Mesh(\n this.geo_bargeRakecutLeft.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setZ(scaleZ);\n mesh.rotateY(rotY);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n let length = Math.sqrt(\n Math.pow(this.APP.sldRightCutVertical.currentValue, 2) +\n Math.pow(this.APP.sldRightCutHorizontal.currentValue, 2)\n );\n let scaleZ = length / this.geo_bargeRakecutLeft.length;\n\n let rotY = Math.atan(\n this.APP.sldRightCutHorizontal.currentValue /\n this.APP.sldRightCutVertical.currentValue\n );\n\n let offsetX =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue -\n this.APP.sldRightCutHorizontal.currentValue;\n let mesh = new Mesh(\n this.geo_bargeRakecutRight.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setZ(scaleZ);\n mesh.rotateY(-rotY);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n }\n }\n public addGutter() {\n if (UI.isUpFasciaUpstandardBracket) {\n let offsetX = UI.totalBayLength / 2 + UI.overhangRight;\n let offsetZ = 0;\n let offsetY = 0;\n let gutterLength = UI.totalBayLength + UI.overhangLeft + UI.overhangRight;\n //cutout\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES &&\n this.MANAGER.cutoutCondition\n ) {\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n gutterLength =\n UI.totalBayLength +\n UI.overhangLeft +\n UI.overhangRight -\n UI.existingLength2;\n } else if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT\n ) {\n gutterLength =\n UI.totalBayLength +\n UI.overhangLeft +\n UI.overhangRight -\n UI.existingLength2;\n offsetX =\n UI.totalBayLength / 2 + UI.overhangRight - UI.existingLength2;\n } else if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n offsetX = UI.existingLength1 / 2 - UI.eaveWidth;\n gutterLength = UI.existingLength1 - 2 * UI.eaveWidth;\n }\n }\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n //Add gutter back\n let gutterGroup = this.utils.createGutterGroup(\n this.gutterInfo,\n this.geo_gutterCap,\n gutterLength,\n new Vector3(offsetX, offsetY, offsetZ),\n new Vector3(\n this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue),\n Math.PI,\n 0\n ),\n views,\n 1,\n true,\n true\n );\n this.roofGroup.add(gutterGroup);\n this.addDownPipe(gutterGroup, gutterLength);\n } else {\n let offsetXL = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n const offsetZ =\n (this.APP.sldFrontOverhang.currentValue +\n UI.overhangBack +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue -\n CONST.GUTTER_ROOF_OFFSET_Z) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n const offsetY = 0;\n\n let gutterLength = this.roofWidth;\n let exLength = 300; //Math.tan(extraAngle) * this.gutterInfo.width;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n offsetXL += this.APP.sldLeftCutHorizontal.currentValue - exLength;\n gutterLength -= this.APP.sldLeftCutHorizontal.currentValue - exLength;\n } else if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n offsetXL += this.APP.sldLeftCutHorizontal.currentValue;\n gutterLength -= this.APP.sldLeftCutHorizontal.currentValue;\n }\n\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n gutterLength -= this.APP.sldRightCutHorizontal.currentValue - exLength;\n } else if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n gutterLength -= this.APP.sldRightCutHorizontal.currentValue;\n }\n\n if (\n this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE &&\n this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE\n ) {\n let gutterMesh = new Mesh(\n this.gutterInfo.geometry,\n MaterialManager.Instance().GUTTER\n );\n gutterMesh.scale.setX(gutterLength / this.gutterInfo.length);\n gutterMesh.updateMatrix();\n let matrixBefore = gutterMesh.matrix.clone();\n\n gutterMesh.position.set(offsetXL, offsetY, offsetZ);\n gutterMesh.rotation.set(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue),\n 0,\n 0\n );\n gutterMesh.updateMatrix();\n\n let meshClipped = CSG.toMesh(\n CSG.fromMesh(gutterMesh).subtract(this.csgCutGutterLeft1),\n gutterMesh.matrix\n );\n meshClipped = CSG.toMesh(\n CSG.fromMesh(meshClipped).subtract(this.csgCutGutterRight1),\n gutterMesh.matrix\n );\n meshClipped.applyMatrix4(new Matrix4().getInverse(gutterMesh.matrix));\n meshClipped.applyMatrix4(matrixBefore);\n meshClipped.material = gutterMesh.material;\n meshClipped.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GUTTER_PATIOS,\n views: views,\n };\n\n let gutterGroup = this.utils.createGutterGroupWithMesh(\n meshClipped,\n this.geo_gutterCap,\n gutterLength,\n new Vector3(offsetXL, offsetY, offsetZ),\n new Vector3(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue),\n 0,\n 0\n ),\n views,\n 1,\n false,\n false\n );\n\n this.roofGroup.add(gutterGroup);\n } else if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n {\n let gutterGroup = this.utils.createGutterGroup(\n this.gutterInfo,\n this.geo_gutterCap,\n gutterLength,\n new Vector3(offsetXL, offsetY, offsetZ),\n new Vector3(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue),\n 0,\n 0\n ),\n views,\n 1,\n false,\n true,\n this.csgCutGutterLeft1,\n this.roofGroup\n );\n\n this.roofGroup.add(gutterGroup);\n }\n } else if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n {\n let gutterGroup = this.utils.createGutterGroup(\n this.gutterInfo,\n this.geo_gutterCap,\n gutterLength,\n new Vector3(offsetXL, offsetY, offsetZ),\n new Vector3(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue),\n 0,\n 0\n ),\n views,\n 1,\n true,\n false,\n this.csgCutGutterRight1,\n this.roofGroup\n );\n\n this.roofGroup.add(gutterGroup);\n }\n } else {\n let gutterGroup = this.utils.createGutterGroup(\n this.gutterInfo,\n this.geo_gutterCap,\n gutterLength,\n new Vector3(offsetXL, offsetY, offsetZ),\n new Vector3(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue),\n 0,\n 0\n ),\n views,\n 1,\n true,\n true\n );\n this.roofGroup.add(gutterGroup);\n }\n }\n }\n private addDownPipe(gutterGroup: Group, gutterLength: number) {\n let meshPipe = new Mesh(\n this.MANAGER.postAndBeamManager.geo_downPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipe.userData = { type: GEOMETRY_TYPE.DOWNPIPE_NOZZLE };\n meshPipe.scale.setY(\n 100 / this.MANAGER.postAndBeamManager.geo_downPipe.height\n );\n meshPipe.position.set(\n gutterLength - 100,\n -190,\n this.MANAGER.postAndBeamManager.geo_downPipe.width / 2 + 20\n );\n\n gutterGroup.add(meshPipe);\n }\n private addGutterAngelRakeCut() {\n if (UI.isUpFasciaUpstandardBracket) {\n return;\n }\n if (\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.ANGLE &&\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.ANGLE\n ) {\n return;\n }\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n let exLength = 300;\n let rc_offsetXL = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n let rc_offsetXR =\n this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n const rc_offsetZL =\n (UI.overhangFront +\n UI.overhangBack +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue -\n this.APP.sldLeftCutVertical.currentValue -\n CONST.GUTTER_ROOF_OFFSET_Z) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n const rc_offsetZR =\n (UI.overhangFront +\n UI.overhangBack +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue -\n this.APP.sldRightCutVertical.currentValue -\n CONST.GUTTER_ROOF_OFFSET_Z) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n const rc_offsetY = 0;\n\n let rc_rotYL = Math.atan(\n this.APP.sldLeftCutVertical.currentValue /\n this.APP.sldLeftCutHorizontal.currentValue\n );\n let rc_lengthL =\n exLength +\n Math.sqrt(\n Math.pow(this.APP.sldLeftCutVertical.currentValue, 2) +\n Math.pow(this.APP.sldLeftCutHorizontal.currentValue, 2)\n );\n let rc_rotYR = Math.atan(\n this.APP.sldRightCutVertical.currentValue /\n this.APP.sldRightCutHorizontal.currentValue\n );\n let rc_lengthR =\n exLength +\n Math.sqrt(\n Math.pow(this.APP.sldRightCutVertical.currentValue, 2) +\n Math.pow(this.APP.sldRightCutHorizontal.currentValue, 2)\n );\n if (\n this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE &&\n this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE\n ) {\n let gutterRakecutGroupLeft = this.utils.createGutterGroup(\n this.gutterRakecutLeftInfo,\n this.geo_gutterCap,\n rc_lengthL,\n new Vector3(rc_offsetXL, rc_offsetY, rc_offsetZL),\n new Vector3(0, -rc_rotYL, 0),\n views,\n 1,\n true,\n false,\n this.csgCutGutterLeft2,\n this.roofGroup\n );\n let gutterRakecutGroupRight = this.utils.createGutterGroup(\n this.gutterRakecutRightInfo,\n this.geo_gutterCap,\n rc_lengthR,\n new Vector3(rc_offsetXR, rc_offsetY, rc_offsetZR),\n new Vector3(0, rc_rotYR, 0),\n views,\n 1,\n true,\n false,\n this.csgCutGutterRight2,\n this.roofGroup\n );\n\n this.roofGroup.add(gutterRakecutGroupLeft, gutterRakecutGroupRight);\n } else {\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n let gutterRakecutGroup = this.utils.createGutterGroup(\n this.gutterRakecutLeftInfo,\n this.geo_gutterCap,\n rc_lengthL,\n new Vector3(rc_offsetXL, rc_offsetY, rc_offsetZL),\n new Vector3(0, -rc_rotYL, 0),\n views,\n 1,\n true,\n false,\n this.csgCutGutterLeft2,\n this.roofGroup\n );\n\n this.roofGroup.add(gutterRakecutGroup);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n let gutterRakecutGroup = this.utils.createGutterGroup(\n this.gutterRakecutRightInfo,\n this.geo_gutterCap,\n rc_lengthR,\n new Vector3(rc_offsetXR, rc_offsetY, rc_offsetZR),\n new Vector3(0, rc_rotYR, 0),\n views,\n 1,\n true,\n false,\n this.csgCutGutterRight2,\n this.roofGroup\n );\n\n this.roofGroup.add(gutterRakecutGroup);\n }\n }\n }\n private addGutterStepRakeCut() {\n if (UI.isUpFasciaUpstandardBracket) {\n return;\n }\n if (\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.STEP &&\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.STEP\n ) {\n return;\n }\n\n let offsetXL = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n let offsetXR =\n this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n const offsetZL =\n (this.APP.sldFrontOverhang.currentValue +\n UI.overhangBack +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue -\n this.APP.sldLeftCutVertical.currentValue -\n CONST.GUTTER_ROOF_OFFSET_Z) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n const offsetZR =\n (this.APP.sldFrontOverhang.currentValue +\n UI.overhangBack +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue -\n this.APP.sldRightCutVertical.currentValue -\n CONST.GUTTER_ROOF_OFFSET_Z) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n const offsetY = 0;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n //Step rakecut\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n let gutterLength = this.APP.sldLeftCutHorizontal.currentValue;\n let gutterHor = this.utils.createGutterGroup(\n this.gutterInfo,\n this.geo_gutterCap,\n gutterLength,\n new Vector3(offsetXL, offsetY, offsetZL),\n new Vector3(0, 0, 0),\n views,\n 1,\n true,\n true\n );\n\n this.roofGroup.add(gutterHor);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n let gutterLength = this.APP.sldRightCutHorizontal.currentValue;\n let gutterHor = this.utils.createGutterGroup(\n this.gutterInfo,\n this.geo_gutterCap,\n gutterLength,\n new Vector3(\n offsetXR - this.APP.sldRightCutHorizontal.currentValue,\n offsetY,\n offsetZR\n ),\n new Vector3(0, 0, 0),\n views,\n 1,\n true,\n true\n );\n\n this.roofGroup.add(gutterHor);\n }\n }\n\n private getHeightByRoofPitch(userDataPos: any): number {\n if (userDataPos.isSpan) {\n return (\n this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n this.APP.sldSpan.currentValue\n );\n } else if (userDataPos.isMultiSpan) {\n return (\n this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue)\n );\n } else {\n return (\n this.utils.tan(this.APP.sltRoofPitch.currentValue) * this.roofLength\n );\n }\n }\n}\n","import {\n BUILDING_SIDE,\n EXISTING_BUILDING_CONFIG as CONST,\n CUTOUT_ENABLE,\n EXISTING_BUILDING_CONFIG,\n FIT_FLYOVER_BRAKET_ON_ROOF,\n MIN_INTERNAL_BEAM_LENGTH,\n RAKECUT_TYPE,\n} from \"src/app/app.constants\";\nimport {\n Box3,\n BoxBufferGeometry,\n BoxHelper,\n BufferGeometry,\n Color,\n Geometry,\n Group,\n Line3,\n LineSegments,\n Material,\n Matrix4,\n Mesh,\n Plane,\n PlaneHelper,\n Vector3,\n} from \"three\";\nimport { PatiosFlyOverManager } from \".\";\nimport { GEOMETRY_CATEGORY, GEOMETRY_TYPE, INIT } from \"src/app/app.config\";\nimport {\n HomeComponent as AppComponent,\n HomeComponent,\n} from \"../../containers/home/home.component\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport {\n GeometryInfo,\n LineType,\n Print2DView,\n Printing2DGeometry,\n Printing2DLine,\n ViewType,\n} from \"src/app/core/models\";\nimport { Util, getBeamEndCapCode } from \"../utils\";\nimport { UI } from \"../ui\";\nimport _ from \"lodash\";\n\nexport class ColumnAndBeamManager {\n private scene: Group;\n private APP: AppComponent;\n private MANAGER: PatiosFlyOverManager;\n private material: Material;\n //private beamMaterial: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private geo_superiorPost: GeometryInfo;\n public geo_superiorBeam: GeometryInfo;\n public geo_superiorHouseBeam: GeometryInfo;\n private geo_beamRakecutLeft: GeometryInfo;\n private geo_beamRakecutRight: GeometryInfo;\n private geo_beamStepRakecutLeft: GeometryInfo;\n private geo_beamStepRakecutRight: GeometryInfo;\n private geo_beamEndCap: GeometryInfo;\n private geo_houseBeamEndCap: GeometryInfo;\n public geo_bracket: GeometryInfo;\n private geo_groundBase: GeometryInfo;\n private geo_downPipe: GeometryInfo;\n private geo_downPipeL: GeometryInfo;\n private downpipeGroup: Group;\n private downpipeStepRakeCutGroupLeft: Group;\n private downpipeStepRakeCutGroupRight: Group;\n private eventHandleId: any;\n private objectSizeChangedHandle: any;\n public extraOffsetZ: number;\n private geo_RafterBeam: GeometryInfo;\n private geo_rafterBeamEndCap: GeometryInfo;\n\n private geoBeamJoint: GeometryInfo;\n private geoHouseBeamJoint: GeometryInfo;\n\n private frontPostHeight: number;\n //private extraBracketHeight = 250;\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n\n private deferHandle;\n private deferTimeout = CONST.CUTOUT_DEFFER_TIME_OUT;\n\n public numberOfBracketsBack = INIT.DEFAULT_BRACKET_NUMBER;\n public numberOfBracketCutout = INIT.DEFAULT_BRACKET_CUTOUT_NUMBER;\n private cutoutExistingBothLength: number;\n private beamLeftCutSizeInfo: any;\n private beamRightCutSizeInfo: any;\n\n constructor(app: AppComponent, flyOverManager: PatiosFlyOverManager) {\n this.APP = app;\n this.MANAGER = flyOverManager;\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n\n this.scene = flyOverManager.patiosGroup;\n this.material = MaterialManager.Instance().DEFAULT.clone();\n //this.beamMaterial = MaterialManager.Instance().DEFAULT.clone();\n\n this.registerEvent();\n }\n\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n let bracketHeight =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height / 2;\n let bracketWidth = this.geometryManager.FLY_OVER_BRACKET.S65x3.width;\n\n this.geo_bracket = new GeometryInfo();\n this.geo_bracket.geometry =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.geometry\n .clone()\n .rotateX(Math.PI / 2)\n .translate(bracketWidth / 2, bracketHeight, bracketWidth / 2);\n this.geo_bracket.width =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.width;\n this.geo_bracket.length =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.length;\n this.geo_bracket.height =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n this.geo_superiorBeam = this.geometryManager.getBeam();\n this.geo_superiorBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_superiorBeam.length / 2,\n this.geo_superiorBeam.height / 2,\n this.geo_superiorBeam.width / 2\n );\n\n this.geoBeamJoint = this.geometryManager.getBeamJoint();\n this.geoHouseBeamJoint = this.geometryManager.getHouseBeamJoint();\n\n this.geo_RafterBeam = this.geometryManager.getBeam();\n this.geo_RafterBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_RafterBeam.length / 2,\n this.geo_RafterBeam.height / 2,\n this.geo_RafterBeam.width / 2\n );\n\n this.geo_rafterBeamEndCap = this.geometryManager.getBeamEndCap();\n this.geo_rafterBeamEndCap.geometry.translate(\n 0,\n this.geo_rafterBeamEndCap.height / 2,\n this.geo_rafterBeamEndCap.length / 2\n );\n\n this.geo_superiorHouseBeam = this.geometryManager.getHouseBeam();\n this.geo_superiorHouseBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_superiorHouseBeam.length / 2,\n this.geo_superiorHouseBeam.height / 2,\n this.geo_superiorHouseBeam.width / 2\n );\n\n this.geo_beamRakecutLeft = this.geometryManager.getBeam();\n this.geo_beamRakecutLeft.geometry.translate(\n this.geo_beamRakecutLeft.width / 2,\n this.geo_beamRakecutLeft.height / 2,\n -this.geo_beamRakecutLeft.length / 2\n );\n\n this.geo_beamRakecutRight = this.geometryManager.getBeam();\n this.geo_beamRakecutRight.geometry.translate(\n -this.geo_beamRakecutRight.width / 2,\n this.geo_beamRakecutRight.height / 2,\n -this.geo_beamRakecutRight.length / 2\n );\n\n this.geo_beamStepRakecutLeft = this.geometryManager.getBeam();\n this.geo_beamStepRakecutLeft.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_beamStepRakecutLeft.length / 2,\n this.geo_beamStepRakecutLeft.height / 2,\n -this.geo_beamStepRakecutLeft.width / 2\n );\n\n this.geo_beamStepRakecutRight = this.geometryManager.getBeam();\n this.geo_beamStepRakecutRight.geometry\n .rotateY(Math.PI / 2)\n .translate(\n -this.geo_beamStepRakecutRight.length / 2,\n this.geo_beamStepRakecutRight.height / 2,\n -this.geo_beamStepRakecutRight.width / 2\n );\n\n this.geo_beamEndCap = this.geometryManager.getBeamEndCap();\n this.geo_beamEndCap.geometry.translate(\n 0,\n this.geo_beamEndCap.height / 2,\n 0\n );\n\n this.geo_houseBeamEndCap = this.geometryManager.getHouseBeamEndCap();\n this.geo_houseBeamEndCap.geometry.translate(\n 0,\n this.geo_houseBeamEndCap.height / 2,\n 0\n );\n\n this.geo_superiorPost = this.geometryManager.getPost();\n this.geo_superiorPost.geometry\n .rotateX(Math.PI / 2)\n .translate(\n this.geo_superiorPost.width / 2,\n this.geo_superiorPost.height / 2,\n this.geo_superiorPost.width / 2\n );\n\n this.geo_groundBase = new GeometryInfo();\n this.geo_groundBase.width = 1000;\n this.geo_groundBase.height = 1;\n this.geo_groundBase.length = 1000;\n this.geo_groundBase.geometry = new BoxBufferGeometry(\n this.geo_groundBase.width,\n this.geo_groundBase.height,\n this.geo_groundBase.length\n );\n this.geo_groundBase.geometry.translate(\n 0,\n 0,\n this.geo_groundBase.length / 2\n );\n\n this.geo_downPipe = this.geometryManager.getDownPipe();\n this.geo_downPipeL = this.geometryManager.getDownPipeL();\n\n this.scene.remove(\n ...this.scene.children.filter(\n (c) => c.userData.type == GEOMETRY_TYPE.DOWNPIPE\n )\n );\n this.downpipeGroup = new Group();\n this.downpipeGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeGroup);\n this.downpipeStepRakeCutGroupLeft = new Group();\n this.downpipeStepRakeCutGroupLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeStepRakeCutGroupLeft);\n\n this.downpipeStepRakeCutGroupRight = new Group();\n this.downpipeStepRakeCutGroupRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeStepRakeCutGroupRight);\n resolve();\n });\n }\n\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET &&\n !x.userData.position.back\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.SUPERIOR_POST &&\n !x.userData.position.back\n )\n );\n // this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.MESH_OUTLINE));\n this.scene.remove(\n ...this.scene.children.filter((x) => x.userData.type == \"BOXHELPER\")\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.GROUND_BASE\n )\n );\n this.APP.scene.remove(\n ...this.APP.scene.children.filter(\n (o) =>\n o.userData.type == \"OUTLINE\" || o.userData.type == \"COLUMN_OUTLINE\"\n )\n );\n\n this.beamLeftCutSizeInfo = this.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.LEFT\n );\n this.beamRightCutSizeInfo = this.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.RIGHT\n );\n this.downpipeGroup.children = [];\n this.downpipeStepRakeCutGroupLeft.children = [];\n this.downpipeStepRakeCutGroupRight.children = [];\n\n this.extraOffsetZ =\n this.APP.existingWallManager.geo_existingWallL1.width +\n this.APP.eaveManager.backOverhang;\n this.cutoutExistingBothLength =\n (UI.totalBayLength - this.APP.sldExistingLength.currentValue) / 2;\n\n this.addSuperiorBeam({ front: true });\n this.addSuperiorBeam({ back: true });\n this.addBeamAngleRakecut();\n this.addBeamStepRakecut();\n if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.MANAGER.cutoutCondition\n ) {\n this.addSuperiorBeam({ cutout: true });\n }\n if (UI.multiSpan > 0) {\n this.addSuperiorBeam({ multiSpan: true });\n }\n this.addGround();\n\n const fitX = this.getContainerOffsetXToFitBraketToExistingWall();\n let offsetX = -UI.totalBayLength / 2;\n let first = true;\n let last = false;\n for (let i = 0; i <= UI.listBay.length; i++) {\n if (i == UI.listBay.length) {\n last = true;\n }\n this.addPostOrBracket(offsetX, {\n front: true,\n first,\n last,\n left: first,\n right: last,\n });\n\n if (UI.multiSpan > 0) {\n this.addPostOrBracket(offsetX, {\n multiSpan: true,\n first,\n last,\n left: first,\n right: last,\n });\n }\n if (i < UI.listBay.length) {\n let b = UI.listBay[i];\n offsetX += b.value;\n }\n first = false;\n }\n\n offsetX = -UI.totalBayLength / 2;\n first = true;\n last = false;\n for (let i = 0; i <= UI.listBay.length; i++) {\n if (i == UI.listBay.length) {\n last = true;\n }\n if (first || last) {\n this.addPostAngleRakecut(offsetX + fitX, {\n first,\n last,\n left: first,\n right: last,\n });\n }\n if (i < UI.listBay.length) {\n let b = UI.listBay[i];\n offsetX += b.value;\n }\n first = false;\n }\n\n this.addPostOrBracketBack();\n this.addPostOrBracketBackCutout();\n this.addPostStepRakecut();\n this.addDownPipe();\n this.addDownPipeStepRakecut();\n this.updateUI();\n this.showBeamOutline();\n resolve();\n });\n }\n public showBeamOutline() {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.BEAM_OUTLINE\n )\n );\n\n if (!UI.beamLayoutShow) return;\n\n const objs = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n const meshes = [];\n objs.forEach((el) => {\n if (el.type == \"Group\") {\n meshes.push(\n ...el.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n }\n });\n\n for (let o of meshes) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n o as Mesh,\n 10\n );\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n\n var line = new LineSegments(\n outlineGeo,\n MaterialManager.Instance().BEAM_OUTLINE\n );\n line.userData = { type: GEOMETRY_TYPE.BEAM_OUTLINE };\n this.APP.scene.add(line);\n }\n }\n private getContainerOffsetXToFitBraketToExistingWall() {\n let fitX = 0;\n if (UI.existingType == BUILDING_SIDE.RIGHT) {\n fitX = -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0)\n );\n }\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n fitX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n }\n\n return fitX;\n }\n public addEndRafterBeam(info: any) {\n const {\n numOfInternalRafter,\n numOfSpanBeam,\n numOfMultiSpanBeam,\n } = info;\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM ||\n x.userData.type == GEOMETRY_TYPE.SUPERIOR_INTERNAL_BEAM\n )\n );\n const fitX = this.getContainerOffsetXToFitBraketToExistingWall();\n\n const fitIfNotWidth2 =\n this.APP.existingWallManager.geo_existingWallW1.width +\n CONST.EAVE_OFFSET_BACK;\n\n let endMainLeftX = -UI.totalBayLength / 2 + fitX;\n let endMainRightX = UI.totalBayLength / 2 + fitX;\n if (UI.cutOutType == CUTOUT_ENABLE.YES && this.MANAGER.cutoutCondition) {\n // Enable cut out\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n endMainLeftX =\n -UI.totalBayLength / 2 +\n fitX +\n UI.existingLength2 -\n (UI.existingWidth2 > 0 ? 0 : fitIfNotWidth2);\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n endMainRightX =\n UI.totalBayLength / 2 +\n fitX -\n UI.existingLength2 +\n (UI.existingWidth2 > 0 ? 0 : fitIfNotWidth2);\n } else if (UI.existingType == BUILDING_SIDE.BOTH) {\n endMainLeftX =\n -UI.totalBayLength / 2 +\n fitX +\n UI.existingLength2 -\n (UI.existingWidth2 > 0 ? 0 : fitIfNotWidth2);\n endMainRightX =\n UI.totalBayLength / 2 +\n fitX -\n UI.existingLength2 +\n (UI.existingWidth2 > 0 ? 0 : fitIfNotWidth2);\n }\n }\n\n // Add end rafter for two end side\n // Left side\n this.addRafterSuperiorBeam(endMainLeftX, {\n span: true,\n first: true,\n last: false,\n });\n if (UI.multiSpan) {\n this.addRafterSuperiorBeam(endMainLeftX, {\n multiSpan: true,\n first: true,\n last: false,\n });\n }\n\n // Right side\n this.addRafterSuperiorBeam(endMainRightX, {\n span: true,\n first: false,\n last: true,\n });\n if (UI.multiSpan) {\n this.addRafterSuperiorBeam(endMainRightX, {\n multiSpan: true,\n first: false,\n last: true,\n });\n }\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n this.addRafterSuperiorBeam(\n -UI.totalBayLength / 2 + fitX + UI.rakeCutLeftHor,\n { rakeCutLeft: true, first: true, last: false }\n );\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n this.addRafterSuperiorBeam(\n UI.totalBayLength / 2 + fitX - UI.rakeCutRightHor,\n { rakeCutRight: true, first: false, last: true }\n );\n }\n\n this.addInternalRafterBeam(\n numOfInternalRafter,\n numOfSpanBeam,\n numOfMultiSpanBeam\n );\n\n if (UI.cutOutType == CUTOUT_ENABLE.YES && this.MANAGER.cutoutCondition) {\n // Add rafter beam for cut out\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n endMainLeftX = -UI.totalBayLength / 2 + fitX;\n this.addRafterSuperiorBeam(endMainLeftX, {\n cutOutForSpan: true,\n first: true,\n last: false,\n });\n if (UI.multiSpan) {\n this.addRafterSuperiorBeam(endMainLeftX, {\n cutOutForMultiSpan: true,\n first: true,\n last: false,\n });\n }\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n endMainRightX = UI.totalBayLength / 2 + fitX;\n this.addRafterSuperiorBeam(endMainRightX, {\n cutOutForSpan: true,\n first: false,\n last: true,\n });\n if (UI.multiSpan) {\n this.addRafterSuperiorBeam(endMainRightX, {\n cutOutForMultiSpan: true,\n first: false,\n last: true,\n });\n }\n } else if (UI.existingType == BUILDING_SIDE.BOTH) {\n endMainLeftX = -UI.totalBayLength / 2 + fitX;\n this.addRafterSuperiorBeam(endMainLeftX, {\n cutOutForSpan: true,\n first: true,\n last: false,\n });\n if (UI.multiSpan) {\n this.addRafterSuperiorBeam(endMainLeftX, {\n cutOutForMultiSpan: true,\n first: true,\n last: false,\n });\n }\n\n endMainRightX = UI.totalBayLength / 2 + fitX;\n this.addRafterSuperiorBeam(endMainRightX, {\n cutOutForSpan: true,\n first: false,\n last: true,\n });\n if (UI.multiSpan) {\n this.addRafterSuperiorBeam(endMainRightX, {\n cutOutForMultiSpan: true,\n first: false,\n last: true,\n });\n }\n }\n }\n\n // Add rafter beam for rake cut step\n }\n private addInternalRafterBeam(\n numOfRafter: number,\n numOfSpanBeam: number,\n numOfMultiSpanBeam: number\n ) {\n let fitX = this.getContainerOffsetXToFitBraketToExistingWall();\n\n const fitIfNotWidth2 =\n this.APP.existingWallManager.geo_existingWallW1.width +\n CONST.EAVE_OFFSET_BACK;\n let offsetX = -UI.totalBayLength / 2 + fitX;\n let mainRoofLength = UI.totalBayLength;\n let endCutoutLeft = -UI.totalBayLength / 2 + fitX;\n if (UI.cutOutType == CUTOUT_ENABLE.YES && this.MANAGER.cutoutCondition) {\n // Enable cut out\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n mainRoofLength =\n UI.totalBayLength -\n UI.existingLength2 +\n (UI.existingWidth2 > 0 ? 0 : fitIfNotWidth2);\n offsetX =\n -UI.totalBayLength / 2 +\n fitX +\n UI.existingLength2 -\n (UI.existingWidth2 > 0 ? 0 : fitIfNotWidth2);\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n mainRoofLength =\n UI.totalBayLength -\n UI.existingLength2 +\n (UI.existingWidth2 > 0 ? 0 : fitIfNotWidth2);\n } else if (UI.existingType == BUILDING_SIDE.BOTH) {\n mainRoofLength =\n UI.totalBayLength -\n 2 * UI.existingLength2 +\n (UI.existingWidth2 > 0 ? 0 : 2 * fitIfNotWidth2);\n offsetX =\n -UI.totalBayLength / 2 +\n fitX +\n UI.existingLength2 -\n (UI.existingWidth2 > 0 ? 0 : fitIfNotWidth2);\n }\n }\n\n const mainRoofLeft = offsetX;\n const mainRoofRight = offsetX + mainRoofLength;\n let listRafterPos = []\n const rafterSpacing = UI.totalBayLength / (numOfRafter + 1);\n const maxBeamOverhang = this.utils.getMaximumBeamOverhang()\n for(let i = 0; i < numOfRafter; i++) {\n const offsetXRafter = endCutoutLeft + (i + 1) * rafterSpacing\n if(UI.existingType == BUILDING_SIDE.LEFT || UI.existingType == BUILDING_SIDE.BOTH) {\n if(offsetXRafter > mainRoofLeft - maxBeamOverhang && offsetXRafter < mainRoofLeft + maxBeamOverhang) {\n continue\n }\n }\n if(UI.existingType == BUILDING_SIDE.RIGHT || UI.existingType == BUILDING_SIDE.BOTH) {\n if(offsetXRafter > mainRoofRight - maxBeamOverhang && offsetXRafter < mainRoofRight + maxBeamOverhang) {\n continue\n }\n }\n listRafterPos.push({\n offsetX: offsetXRafter,\n isMainRoof: offsetXRafter >= mainRoofLeft && offsetXRafter <= mainRoofRight\n })\n }\n\n listRafterPos = this.utils.reSeperateRafterPosition(listRafterPos, offsetX, offsetX + mainRoofLength, endCutoutLeft, endCutoutLeft + UI.totalBayLength )\n\n listRafterPos.forEach(el => {\n if(el.isMainRoof) {\n this.addRafterSuperiorBeam(el.offsetX, {\n span: true,\n first: false,\n last: false,\n });\n if (UI.multiSpan) {\n this.addRafterSuperiorBeam(el.offsetX, {\n multiSpan: true,\n first: false,\n last: false,\n });\n }\n } else {\n this.addRafterSuperiorBeam(el.offsetX, {\n cutOutForSpan: true,\n first: false,\n last: false,\n });\n if (UI.multiSpan) {\n this.addRafterSuperiorBeam(el.offsetX, {\n cutOutForMultiSpan: true,\n first: false,\n last: false,\n });\n }\n }\n })\n\n // // Add internal beam in here\n this.addInternalBeam(\n listRafterPos,\n numOfSpanBeam,\n numOfMultiSpanBeam\n );\n }\n private addInternalBeam(\n listRafterPos,\n numOfSpanBeam: number = 0,\n numOfMultiSpanBeam: number = 0\n ) {\n const startZ = -(UI.existingWidth1 / 2 + this.extraOffsetZ);\n if (UI.span > 0) {\n const internalBeamSpacing = UI.span / (numOfSpanBeam + 1);\n for (let i = 0; i < numOfSpanBeam; i++) {\n this.addInternalSuperiorBeam(\n listRafterPos,\n startZ + internalBeamSpacing * (i + 1)\n );\n }\n }\n if (UI.multiSpan > 0) {\n const internalBeamSpacing = UI.multiSpan / (numOfMultiSpanBeam + 1);\n for (let i = 0; i < numOfMultiSpanBeam; i++) {\n this.addInternalSuperiorBeam(\n listRafterPos,\n startZ + UI.span + internalBeamSpacing * (i + 1)\n );\n }\n }\n }\n public addInternalSuperiorBeam(\n listRafterPos,\n offsetZ: number\n ) {\n let fitX = this.getContainerOffsetXToFitBraketToExistingWall();\n const fitIfNotWidth2 =\n this.APP.existingWallManager.geo_existingWallW1.width +\n CONST.EAVE_OFFSET_BACK;\n\n let endMainLeftX = -UI.totalBayLength / 2 + fitX;\n let endMainRightX = UI.totalBayLength / 2 + fitX;\n let endCutoutLeft = -UI.totalBayLength / 2 + fitX;\n let endCutoutRight = UI.totalBayLength / 2 + fitX;\n if (UI.cutOutType == CUTOUT_ENABLE.YES && this.MANAGER.cutoutCondition) {\n // Enable cut out\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n endMainLeftX =\n -UI.totalBayLength / 2 +\n fitX +\n UI.existingLength2 -\n (UI.existingWidth2 > 0 ? 0 : fitIfNotWidth2);\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n endMainRightX =\n UI.totalBayLength / 2 +\n fitX -\n UI.existingLength2 +\n (UI.existingWidth2 > 0 ? 0 : fitIfNotWidth2);\n } else if (UI.existingType == BUILDING_SIDE.BOTH) {\n endMainLeftX =\n -UI.totalBayLength / 2 +\n fitX +\n UI.existingLength2 -\n (UI.existingWidth2 > 0 ? 0 : fitIfNotWidth2);\n endMainRightX =\n UI.totalBayLength / 2 +\n fitX -\n UI.existingLength2 +\n (UI.existingWidth2 > 0 ? 0 : fitIfNotWidth2);\n }\n }\n\n // Main roof\n const beamWidth = this.geo_superiorBeam.width;\n const mainRafter = listRafterPos.filter(el => el.isMainRoof)\n\n for (let i = 0; i <= mainRafter.length; i++) {\n let startX = endMainLeftX;\n if(i > 0) {\n startX = mainRafter[i - 1].offsetX\n }\n let endX = endMainRightX;\n if(i < mainRafter.length) {\n endX = mainRafter[i].offsetX\n }\n\n if (i == 0) {\n startX += beamWidth;\n } else {\n startX += beamWidth / 2;\n }\n\n if (i == mainRafter.length) {\n endX -= beamWidth;\n } else {\n endX -= beamWidth / 2;\n }\n this.addInternalBeamFromStartToEnd(startX, endX, offsetZ);\n }\n\n if (UI.cutOutType == CUTOUT_ENABLE.YES && this.MANAGER.cutoutCondition) {\n if (\n UI.existingType == BUILDING_SIDE.LEFT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n const cutoutRoofLength =\n this.getCutoutRoofLengthToGenerateCutoutRafterBeam();\n const cutoutLeftRafter = listRafterPos.filter(el => !el.isMainRoof && el.offsetX < endCutoutLeft + cutoutRoofLength)\n\n if (offsetZ > UI.existingWidth1 / 2 - this.extraOffsetZ) {\n for (let i = 0; i <= cutoutLeftRafter.length; i++) {\n let startX = endCutoutLeft;\n if(i > 0) {\n startX = cutoutLeftRafter[i - 1].offsetX\n }\n let endX = endCutoutLeft + cutoutRoofLength;\n if(i < cutoutLeftRafter.length) {\n endX = cutoutLeftRafter[i].offsetX\n }\n\n if (i == 0) {\n startX += beamWidth;\n } else {\n startX += beamWidth / 2;\n }\n\n if (i == cutoutLeftRafter.length) {\n } else {\n endX -= beamWidth / 2;\n }\n this.addInternalBeamFromStartToEnd(startX, endX, offsetZ);\n }\n }\n }\n\n if (\n UI.existingType == BUILDING_SIDE.RIGHT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n const cutoutRoofLength =\n this.getCutoutRoofLengthToGenerateCutoutRafterBeam();\n const cutoutRightRafter = listRafterPos.filter(el => !el.isMainRoof && el.offsetX > endCutoutRight - cutoutRoofLength)\n\n if (\n offsetZ >\n UI.existingWidth1 / 2 - this.extraOffsetZ + beamWidth * 2\n ) {\n for (let i = 0; i <= cutoutRightRafter.length; i++) {\n let startX = endCutoutRight - cutoutRoofLength;\n if(i > 0) {\n startX = cutoutRightRafter[i - 1].offsetX\n }\n let endX = endCutoutRight;\n if(i < cutoutRightRafter.length) {\n endX = cutoutRightRafter[i].offsetX\n }\n\n if (i == 0) {\n startX += 0;\n } else {\n startX += beamWidth / 2;\n }\n\n if (i == cutoutRightRafter.length) {\n endX -= beamWidth;\n } else {\n endX -= beamWidth / 2;\n }\n this.addInternalBeamFromStartToEnd(startX, endX, offsetZ);\n }\n }\n }\n }\n }\n public addInternalBeamFromStartToEnd(startX, endX, offsetZ) {\n const { fromX, toX, visible } = this.cutInternalBeamWithRakeCut(\n startX,\n endX,\n offsetZ\n );\n\n if (!visible) {\n return;\n }\n\n // Only add internal beam when beam length is greater than 200\n if (Math.abs(toX - fromX) < MIN_INTERNAL_BEAM_LENGTH) {\n return;\n }\n\n const beamWidth = this.geo_RafterBeam.width;\n const beamHeight = this.geo_superiorBeam.height;\n let scaleX = Math.abs(toX - fromX) / this.geo_superiorBeam.length;\n\n let views: Print2DView[] = [\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n const offsetY =\n UI.eaveHeight +\n this.getBracketHeight(\n offsetZ + UI.existingWidth1 / 2 + this.extraOffsetZ + beamWidth / 2\n );\n\n let mesh = new Mesh(\n this.geo_superiorBeam.geometry,\n MaterialManager.Instance().BEAM\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_INTERNAL_BEAM,\n views: views,\n };\n mesh.position.set(fromX, 0, 0);\n mesh.scale.setX(scaleX);\n\n let capL = new Mesh(\n this.geo_beamEndCap.geometry,\n UI.beamLayoutShow ? MaterialManager.Instance().BRACKET_WARNING.clone() : MaterialManager.Instance().BEAM.clone()\n );\n capL.position.set(\n fromX + this.geo_beamEndCap.length / 2 - 2,\n -this.geo_beamEndCap.height + beamHeight,\n this.geo_beamEndCap.width / 2\n );\n capL.rotateY(Math.PI / 2);\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n let capR = new Mesh(\n this.geo_beamEndCap.geometry,\n UI.beamLayoutShow ? MaterialManager.Instance().BRACKET_WARNING.clone() : MaterialManager.Instance().BEAM.clone()\n );\n capR.position.set(\n toX - this.geo_beamEndCap.length / 2 + 2,\n -this.geo_beamEndCap.height + beamHeight,\n this.geo_beamEndCap.width / 2\n );\n capR.rotateY(-Math.PI / 2);\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_INTERNAL_BEAM,\n views: views,\n };\n beamGroup.position.set(0, offsetY, offsetZ - beamWidth / 2);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n\n this.scene.add(beamGroup);\n }\n private cutInternalBeamWithRakeCut(startX, endX, offsetZ) {\n // startZ is start point of rafter beam\n // startZ > endZ\n const fromX = Math.min(startX, endX);\n const toX = Math.max(startX, endX);\n const beamWidth = this.geo_superiorBeam.width;\n const fitX = this.getContainerOffsetXToFitBraketToExistingWall();\n const offsetZFrontBeam =\n UI.span + UI.multiSpan - UI.existingWidth1 / 2 - this.extraOffsetZ;\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n const rakeCutVerLength =\n this.beamLeftCutSizeInfo.v + this.beamLeftCutSizeInfo.k_;\n const rakeCutHorLength = this.beamLeftCutSizeInfo.l;\n\n const beamLine = new Line3(\n new Vector3(toX, 0, offsetZ + beamWidth / 2),\n new Vector3(fromX, 0, offsetZ + beamWidth / 2)\n );\n const beamRakeCutLength = Math.sqrt(\n Math.pow(rakeCutHorLength, 2) + Math.pow(rakeCutVerLength, 2)\n );\n const cosAngleFrontHor = rakeCutHorLength / beamRakeCutLength;\n\n const startRakeCut = new Vector3(\n -UI.totalBayLength / 2 + fitX,\n 0,\n offsetZFrontBeam - rakeCutVerLength - beamWidth / cosAngleFrontHor\n );\n const endRakeCut = new Vector3(\n -UI.totalBayLength / 2 + fitX + rakeCutHorLength,\n 0,\n offsetZFrontBeam - beamWidth / cosAngleFrontHor\n );\n const rakeCutLine = new Line3(startRakeCut, endRakeCut);\n const intersection = this.utils.getIntersectionOnAPoint(\n beamLine,\n rakeCutLine\n );\n\n if (intersection) {\n if (\n this.utils.isPositive(beamLine.start, beamLine.end, intersection) &&\n this.utils.isPositive(\n rakeCutLine.start,\n rakeCutLine.end,\n intersection\n ) &&\n intersection.x >= fromX &&\n intersection.x <= toX\n ) {\n return {\n fromX: intersection.x,\n toX,\n visible: true,\n };\n } else {\n if (intersection.x > fromX && intersection.x > toX) {\n return {\n fromX,\n toX,\n visible: false,\n };\n }\n }\n }\n } else if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n const beamLine = new Line3(\n new Vector3(fromX, 0, offsetZ + beamWidth / 2),\n new Vector3(toX, 0, offsetZ + beamWidth / 2)\n );\n const startRakeCut = new Vector3(\n -UI.totalBayLength / 2 + fitX + UI.rakeCutLeftHor + beamWidth,\n 0,\n offsetZFrontBeam\n );\n const endRakeCut = new Vector3(\n -UI.totalBayLength / 2 + fitX + UI.rakeCutLeftHor + beamWidth,\n 0,\n offsetZFrontBeam - UI.rakeCutLeftVer - beamWidth\n );\n\n const rakeCutLine = new Line3(endRakeCut, startRakeCut);\n const intersection = this.utils.getIntersectionOnAPoint(\n beamLine,\n rakeCutLine,\n true\n );\n\n if (intersection) {\n if (\n this.utils.isPositive(beamLine.start, beamLine.end, intersection) &&\n this.utils.isPositive(\n rakeCutLine.start,\n rakeCutLine.end,\n intersection\n ) &&\n intersection.x >= fromX &&\n intersection.x <= toX\n ) {\n return {\n fromX: intersection.x,\n toX,\n visible: true,\n };\n } else {\n if (intersection.x > fromX && intersection.x > toX) {\n return {\n fromX,\n toX,\n visible: false,\n };\n }\n }\n }\n }\n\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n const rakeCutVerLength =\n this.beamRightCutSizeInfo.v + this.beamRightCutSizeInfo.k_;\n const rakeCutHorLength = this.beamRightCutSizeInfo.l;\n\n const beamLine = new Line3(\n new Vector3(fromX, 0, offsetZ + beamWidth / 2),\n new Vector3(toX, 0, offsetZ + beamWidth / 2)\n );\n const beamRakeCutLength = Math.sqrt(\n Math.pow(rakeCutHorLength, 2) + Math.pow(rakeCutVerLength, 2)\n );\n const cosAngleFrontHor = rakeCutHorLength / beamRakeCutLength;\n\n const startRakeCut = new Vector3(\n UI.totalBayLength / 2 + fitX,\n 0,\n offsetZFrontBeam - rakeCutVerLength - beamWidth / cosAngleFrontHor\n );\n const endRakeCut = new Vector3(\n UI.totalBayLength / 2 + fitX - rakeCutHorLength,\n 0,\n offsetZFrontBeam - beamWidth / cosAngleFrontHor\n );\n const rakeCutLine = new Line3(startRakeCut, endRakeCut);\n const intersection = this.utils.getIntersectionOnAPoint(\n beamLine,\n rakeCutLine\n );\n\n if (intersection) {\n if (\n this.utils.isPositive(beamLine.start, beamLine.end, intersection) &&\n this.utils.isPositive(\n rakeCutLine.start,\n rakeCutLine.end,\n intersection\n ) &&\n intersection.x >= fromX &&\n intersection.x <= toX\n ) {\n return {\n fromX,\n toX: intersection.x,\n visible: true,\n };\n } else {\n if (intersection.x < fromX && intersection.x < toX) {\n return {\n fromX,\n toX,\n visible: false,\n };\n }\n }\n }\n } else if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n const beamLine = new Line3(\n new Vector3(toX, 0, offsetZ + beamWidth / 2),\n new Vector3(fromX, 0, offsetZ + beamWidth / 2)\n );\n const startRakeCut = new Vector3(\n UI.totalBayLength / 2 + fitX - UI.rakeCutRightHor - beamWidth,\n 0,\n offsetZFrontBeam\n );\n const endRakeCut = new Vector3(\n UI.totalBayLength / 2 + fitX - UI.rakeCutRightHor - beamWidth,\n 0,\n offsetZFrontBeam - UI.rakeCutRightVer - beamWidth\n );\n\n const rakeCutLine = new Line3(endRakeCut, startRakeCut);\n const intersection = this.utils.getIntersectionOnAPoint(\n beamLine,\n rakeCutLine,\n true\n );\n\n if (intersection) {\n if (\n this.utils.isPositive(beamLine.start, beamLine.end, intersection) &&\n this.utils.isPositive(\n rakeCutLine.start,\n rakeCutLine.end,\n intersection\n ) &&\n intersection.x >= fromX &&\n intersection.x <= toX\n ) {\n return {\n fromX,\n toX: intersection.x,\n visible: true,\n };\n } else {\n if (intersection.x < fromX && intersection.x < toX) {\n return {\n fromX,\n toX,\n visible: false,\n };\n }\n }\n }\n }\n\n return {\n fromX,\n toX,\n visible: true,\n };\n }\n\n public getCutoutRoofLengthToGenerateCutoutRafterBeam() {\n let extraWallWidth =\n this.APP.existingWallManager.geo_existingWallW1.width +\n CONST.EAVE_OFFSET_BACK;\n let beamLength =\n UI.existingLength2 -\n this.APP.existingWallManager.geo_existingWallW1.width;\n\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n if (UI.existingWidth2 > 0) {\n } else {\n beamLength -= extraWallWidth;\n }\n\n beamLength += this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width;\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n if (UI.existingWidth2 > 0) {\n } else {\n beamLength -= extraWallWidth;\n }\n\n beamLength += this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width;\n } else if (UI.existingType == BUILDING_SIDE.BOTH) {\n beamLength = UI.existingLength2 - extraWallWidth;\n\n if (UI.existingWidth2 > 0) {\n beamLength = UI.existingLength2;\n }\n }\n\n return beamLength;\n }\n /**\n *\n * @param offsetX : Position x of rafter beam\n */\n public addRafterSuperiorBeam(offsetX, userDataPos: any) {\n const beamWidth = this.geo_superiorBeam.width;\n const beamHeight = this.geo_RafterBeam.height;\n const beamGeoLength = this.geo_RafterBeam.length;\n let mesh;\n let beamLength =\n (UI.span -\n (UI.multiSpan\n ? this.geo_superiorBeam.width * 1.5\n : this.geo_superiorBeam.width * 2)) /\n this.utils.cos(UI.patiosPitch);\n if (userDataPos.multiSpan) {\n beamLength =\n (UI.multiSpan - beamWidth * 1.5) / this.utils.cos(UI.patiosPitch);\n } else if (userDataPos.cutOutForSpan) {\n if (\n UI.multiSpan == 0 &&\n UI.span - UI.existingWidth1 - 2 * beamWidth <= 0\n ) {\n return;\n } else if (\n UI.multiSpan > 0 &&\n UI.span - UI.existingWidth1 - 1.5 * beamWidth <= 0\n ) {\n return;\n }\n\n if (UI.multiSpan == 0) {\n beamLength =\n (UI.span - beamWidth * 2 - UI.existingWidth1) /\n this.utils.cos(UI.patiosPitch);\n } else {\n beamLength =\n (UI.span - beamWidth * 1.5 - UI.existingWidth1) /\n this.utils.cos(UI.patiosPitch);\n }\n } else if (userDataPos.cutOutForMultiSpan) {\n if (UI.span + UI.multiSpan - UI.existingWidth1 - 2 * beamWidth <= 0) {\n return;\n }\n\n if (UI.existingWidth1 > UI.span) {\n beamLength =\n (UI.span + UI.multiSpan - beamWidth * 2 - UI.existingWidth1) /\n this.utils.cos(UI.patiosPitch);\n } else {\n beamLength =\n (UI.multiSpan - beamWidth * 1.5) / this.utils.cos(UI.patiosPitch);\n }\n } else if (userDataPos.rakeCutLeft) {\n beamLength =\n (UI.rakeCutLeftVer - beamWidth) / this.utils.cos(UI.patiosPitch);\n } else if (userDataPos.rakeCutRight) {\n beamLength =\n (UI.rakeCutRightVer - beamWidth) / this.utils.cos(UI.patiosPitch);\n }\n\n let offsetZ = 0;\n let offsetY = 0;\n\n // Scene position z move back\n // The plane be translated\n let shouldCutByRakeCut = true;\n if (userDataPos.span || userDataPos.cutOutForSpan) {\n offsetY =\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() -\n (UI.span - (UI.multiSpan ? beamWidth / 2 : beamWidth)) *\n this.utils.tan(UI.patiosPitch);\n offsetZ =\n UI.span -\n (UI.multiSpan ? beamWidth / 2 : beamWidth) -\n UI.existingWidth1 / 2 -\n this.extraOffsetZ;\n } else if (\n userDataPos.multiSpan ||\n userDataPos.cutOutForMultiSpan ||\n userDataPos.rakeCutLeft ||\n userDataPos.rakeCutRight\n ) {\n if (userDataPos.rakeCutLeft || userDataPos.rakeCutRight) {\n shouldCutByRakeCut = false;\n }\n offsetY =\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() -\n (UI.span + UI.multiSpan - beamWidth) * this.utils.tan(UI.patiosPitch);\n offsetZ =\n UI.span +\n UI.multiSpan -\n beamWidth -\n UI.existingWidth1 / 2 -\n this.extraOffsetZ;\n }\n\n let offsetXRafter = offsetX;\n if (userDataPos.last) {\n offsetXRafter = offsetX - this.geo_RafterBeam.width;\n } else if (!userDataPos.first && !userDataPos.last) {\n offsetXRafter = offsetX - this.geo_RafterBeam.width / 2;\n }\n\n if (shouldCutByRakeCut) {\n const { newStartZ, newLength, fitYForNewStartZPoint } =\n this.cutRafterBeamWithRakeCut(offsetZ, offsetXRafter, beamLength);\n if (!_.isNil(newStartZ)) {\n offsetZ = newStartZ;\n }\n if (!_.isNil(newLength)) {\n beamLength = newLength;\n }\n if (!_.isNil(fitYForNewStartZPoint)) {\n offsetY += fitYForNewStartZPoint;\n }\n }\n\n let scaleX = beamLength / beamGeoLength;\n scaleX += (beamHeight * this.utils.tan(UI.patiosPitch)) / beamGeoLength;\n\n let views: Print2DView[] = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n let material = this.getRafterBeamMaterial(userDataPos, offsetZ, beamLength);\n mesh = new Mesh(this.geo_RafterBeam.geometry, material);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM,\n position: userDataPos,\n views: views,\n };\n mesh.position.set(0, 0, 0);\n mesh.scale.setX(scaleX);\n\n let { capL, capR } = this.getBeamEndCapForRafterBeam(0, beamLength);\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM,\n position: userDataPos,\n views: views,\n };\n\n beamGroup.position.set(offsetXRafter, offsetY, offsetZ);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n\n beamGroup.rotateY(Math.PI / 2);\n\n beamGroup.rotateZ(this.utils.degreesToRadians(UI.patiosPitch));\n\n this.scene.add(beamGroup);\n }\n private cutRafterBeamWithRakeCut(offsetZ, offsetX, beamLength) {\n // startZ is start point of rafter beam\n // startZ > endZ\n const beamWidth = this.geo_superiorBeam.width;\n let startZ = offsetZ;\n let endZ = offsetZ - beamLength * this.utils.cos(UI.patiosPitch);\n const fitX = this.getContainerOffsetXToFitBraketToExistingWall();\n const offsetZFrontBeam =\n UI.span + UI.multiSpan - UI.existingWidth1 / 2 - this.extraOffsetZ;\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n const rakeCutVerLength =\n this.beamLeftCutSizeInfo.v + this.beamLeftCutSizeInfo.k_;\n const rakeCutHorLength = this.beamLeftCutSizeInfo.l;\n\n const beamLine = new Line3(\n new Vector3(offsetX, 0, startZ),\n new Vector3(offsetX, 0, endZ)\n );\n const beamRakeCutLength = Math.sqrt(\n Math.pow(rakeCutHorLength, 2) + Math.pow(rakeCutVerLength, 2)\n );\n const cosAngleFrontHor = rakeCutHorLength / beamRakeCutLength;\n\n const startRakeCut = new Vector3(\n -UI.totalBayLength / 2 + fitX,\n 0,\n offsetZFrontBeam - rakeCutVerLength - beamWidth / cosAngleFrontHor\n );\n const endRakeCut = new Vector3(\n -UI.totalBayLength / 2 + fitX + rakeCutHorLength,\n 0,\n offsetZFrontBeam - beamWidth / cosAngleFrontHor\n );\n\n const intersection = this.utils.getIntersectionOnAPoint(\n beamLine,\n new Line3(startRakeCut, endRakeCut)\n );\n\n if (intersection && intersection.z < startZ) {\n const newStartZ = intersection.z;\n const newLength =\n Math.abs(newStartZ - endZ) / this.utils.cos(UI.patiosPitch);\n const fitYForNewStartZPoint =\n Math.abs(startZ - newStartZ) * this.utils.tan(UI.patiosPitch);\n\n return { newStartZ, newLength, fitYForNewStartZPoint };\n }\n } else if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n const beamLine = new Line3(\n new Vector3(offsetX + 2, 0, startZ),\n new Vector3(offsetX + 2, 0, endZ)\n );\n const startRakeCut = new Vector3(\n -UI.totalBayLength / 2 + fitX,\n 0,\n offsetZFrontBeam - UI.rakeCutLeftVer - beamWidth\n );\n const endRakeCut = new Vector3(\n -UI.totalBayLength / 2 + fitX + UI.rakeCutLeftHor + beamWidth,\n 0,\n offsetZFrontBeam - UI.rakeCutLeftVer - beamWidth\n );\n\n const intersection = this.utils.getIntersectionOnAPoint(\n beamLine,\n new Line3(endRakeCut, startRakeCut),\n true\n );\n\n if (intersection && intersection.z < startZ) {\n const newStartZ = intersection.z;\n const newLength =\n Math.abs(newStartZ - endZ) / this.utils.cos(UI.patiosPitch);\n const fitYForNewStartZPoint =\n Math.abs(startZ - newStartZ) * this.utils.tan(UI.patiosPitch);\n\n return { newStartZ, newLength, fitYForNewStartZPoint };\n }\n }\n\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n const rakeCutVerLength =\n this.beamRightCutSizeInfo.v + this.beamRightCutSizeInfo.k_;\n const rakeCutHorLength = this.beamRightCutSizeInfo.l;\n\n const beamLine = new Line3(\n new Vector3(offsetX + beamWidth, 0, startZ),\n new Vector3(offsetX + beamWidth, 0, endZ)\n );\n const beamRakeCutLength = Math.sqrt(\n Math.pow(rakeCutHorLength, 2) + Math.pow(rakeCutVerLength, 2)\n );\n const cosAngleFrontHor = rakeCutHorLength / beamRakeCutLength;\n\n const startRakeCut = new Vector3(\n UI.totalBayLength / 2 + fitX,\n 0,\n offsetZFrontBeam - rakeCutVerLength - beamWidth / cosAngleFrontHor\n );\n const endRakeCut = new Vector3(\n UI.totalBayLength / 2 + fitX - rakeCutHorLength,\n 0,\n offsetZFrontBeam - beamWidth / cosAngleFrontHor\n );\n\n const intersection = this.utils.getIntersectionOnAPoint(\n beamLine,\n new Line3(startRakeCut, endRakeCut)\n );\n\n if (intersection && intersection.z < startZ) {\n const newStartZ = intersection.z;\n const newLength =\n Math.abs(newStartZ - endZ) / this.utils.cos(UI.patiosPitch);\n const fitYForNewStartZPoint =\n Math.abs(startZ - newStartZ) * this.utils.tan(UI.patiosPitch);\n\n return { newStartZ, newLength, fitYForNewStartZPoint };\n }\n } else if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n const beamLine = new Line3(\n new Vector3(offsetX + beamWidth - 2, 0, startZ),\n new Vector3(offsetX + beamWidth - 2, 0, endZ)\n );\n const startRakeCut = new Vector3(\n UI.totalBayLength / 2 + fitX,\n 0,\n offsetZFrontBeam - UI.rakeCutRightVer - beamWidth\n );\n const endRakeCut = new Vector3(\n UI.totalBayLength / 2 + fitX - UI.rakeCutRightHor - beamWidth,\n 0,\n offsetZFrontBeam - UI.rakeCutRightVer - beamWidth\n );\n\n const intersection = this.utils.getIntersectionOnAPoint(\n beamLine,\n new Line3(endRakeCut, startRakeCut),\n true\n );\n\n if (intersection && intersection.z < startZ) {\n const newStartZ = intersection.z;\n const newLength =\n Math.abs(newStartZ - endZ) / this.utils.cos(UI.patiosPitch);\n const fitYForNewStartZPoint =\n Math.abs(startZ - newStartZ) * this.utils.tan(UI.patiosPitch);\n\n return { newStartZ, newLength, fitYForNewStartZPoint };\n }\n }\n\n return { newStartZ: null, newLength: null, fitYForNewStartZPoint: null };\n }\n private getBeamEndCapForRafterBeam(offsetXL, offsetXR) {\n let capL;\n let capR;\n let matEndCap = this.getRafterBeamEndCapMaterial();\n\n let checkExec = /\\w{1}\\d{1,3}x(\\d{1,3})/.exec(this.geo_RafterBeam.name);\n let beamSize = checkExec && checkExec.length == 2 ? checkExec[1] : \"\";\n let lowerBraketName = getBeamEndCapCode(\n this.geo_rafterBeamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n );\n let higherBraketName = getBeamEndCapCode(\n this.geo_rafterBeamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n );\n\n capL = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capL.position.set(offsetXL - 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capL.scale.setY(\n (this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length * this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capL.rotateY(Math.PI / 2);\n capL.rotateX(this.utils.degreesToRadians(UI.patiosPitch));\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: lowerBraketName,\n };\n\n capR = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capR.position.set(\n offsetXR + 2,\n -this.geo_rafterBeamEndCap.length * this.utils.tan(UI.patiosPitch),\n this.geo_rafterBeamEndCap.width / 2\n );\n capR.scale.setY(\n (this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length * this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capR.rotateY(-Math.PI / 2);\n capR.rotateX(-this.utils.degreesToRadians(UI.patiosPitch));\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: higherBraketName,\n };\n\n return {\n capL,\n capR,\n };\n }\n private getRafterBeamEndCapMaterial() {\n const matEndCap = UI.beamLayoutShow ? MaterialManager.Instance().BRACKET_WARNING.clone() : MaterialManager.Instance().BEAM.clone();\n let heightPlane =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height;\n let planeTop = new Plane(new Vector3(0, -1, 0));\n let matrixTranslateTop = new Matrix4().makeTranslation(0, heightPlane, 0);\n let matrixRotateTop = new Matrix4().makeRotationX(\n this.utils.degreesToRadians(UI.patiosPitch)\n ); //tao voi z pitch do\n let matrixTotalTop = matrixTranslateTop.multiply(matrixRotateTop);\n planeTop.applyMatrix4(matrixTotalTop);\n\n let heightRealBottom =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket();\n\n let planeBottom = new Plane(new Vector3(0, 1, 0));\n let matrixTranslateBottom = new Matrix4().makeTranslation(\n 0,\n heightRealBottom,\n 0\n );\n let matrixRotateBottom = new Matrix4().makeRotationX(\n this.utils.degreesToRadians(UI.patiosPitch)\n ); //tao voi z pitch do\n let matrixTotalBottom = matrixTranslateBottom.multiply(matrixRotateBottom);\n planeBottom.applyMatrix4(matrixTotalBottom);\n\n planeTop.translate(\n new Vector3(\n 0,\n 0,\n -UI.existingWidth1 / 2 - this.extraOffsetZ + this.scene.position.z\n )\n );\n planeBottom.translate(\n new Vector3(\n 0,\n 0,\n -UI.existingWidth1 / 2 - this.extraOffsetZ + this.scene.position.z\n )\n );\n matEndCap.clippingPlanes = [planeTop, planeBottom];\n\n return matEndCap;\n }\n private getRafterBeamMaterial(userDataPos, offsetZ, beamLength) {\n let material = MaterialManager.Instance().BEAM.clone();\n\n const beamWidth = this.geo_superiorBeam.width;\n const braketWidth = this.geo_bracket.width;\n\n let cutFrontZ = offsetZ + this.extraOffsetZ - braketWidth;\n let cutBackZ =\n offsetZ +\n this.extraOffsetZ -\n braketWidth -\n beamLength * this.utils.cos(UI.patiosPitch);\n\n if (cutFrontZ != 0 || cutBackZ != 0) {\n let nBottom = new Vector3(0, 0, -1).normalize();\n let pBottom = new Vector3(0, 0, cutFrontZ);\n let planeBottom = new Plane().setFromNormalAndCoplanarPoint(\n nBottom,\n pBottom\n );\n\n let nVer = new Vector3(0, 0, 1).normalize();\n let pVer = new Vector3(0, 0, cutBackZ);\n let planeVer = new Plane().setFromNormalAndCoplanarPoint(nVer, pVer);\n\n material.clippingPlanes = [planeBottom, planeVer];\n }\n\n return material;\n }\n private totalHeightFromEaveHeightToTopOfExistingRoof() {\n const height =\n this.geometryManager.EAVE.EAVE.height +\n UI.fasciaDepth +\n UI.eaveWidth * this.utils.tan(UI.existingRoofPitch) +\n this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.height /\n this.utils.cos(UI.existingRoofPitch);\n\n return height;\n }\n private totalHeightFromEaveHeightToTopOfFlyoverBraket() {\n const height =\n this.totalHeightFromEaveHeightToTopOfExistingRoof() +\n UI.braketHeight -\n FIT_FLYOVER_BRAKET_ON_ROOF;\n\n return height;\n }\n private addDownPipeStepRakecut() {\n let fitX = this.getContainerOffsetXToFitBraketToExistingWall();\n if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n let offsetX = -UI.totalBayLength / 2 + 50 + fitX;\n let offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.span + UI.multiSpan + UI.overhangFront - UI.rakeCutLeftVer,\n UI.patiosPitch,\n -1\n ) +\n this.geo_superiorBeam.height -\n 30;\n let offsetZ =\n UI.span +\n UI.multiSpan +\n UI.overhangFront -\n UI.rakeCutLeftVer -\n 260 -\n UI.existingWidth1 / 2;\n\n if (this.APP.sltGutterType.currentValue == 0) {\n offsetY -= 80;\n } else {\n offsetY -= 60;\n }\n\n this.utils.createDownpipeGroup(\n this.APP,\n this.downpipeStepRakeCutGroupLeft,\n this.geo_downPipe,\n this.geo_downPipeL,\n offsetX,\n offsetY,\n offsetZ,\n offsetZ,\n 0,\n UI.overhangFront,\n offsetY,\n false\n );\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n let offsetX = UI.totalBayLength / 2 - 50 + fitX;\n let offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.span + UI.multiSpan + UI.overhangFront - UI.rakeCutRightVer,\n UI.patiosPitch,\n -1\n ) +\n this.geo_superiorBeam.height -\n 30;\n let offsetZ =\n UI.span +\n UI.multiSpan +\n UI.overhangFront -\n UI.rakeCutRightVer -\n 260 -\n UI.existingWidth1 / 2;\n\n if (this.APP.sltGutterType.currentValue == 0) {\n offsetY -= 80;\n } else {\n offsetY -= 60;\n }\n\n this.utils.createDownpipeGroup(\n this.APP,\n this.downpipeStepRakeCutGroupRight,\n this.geo_downPipe,\n this.geo_downPipeL,\n offsetX,\n offsetY,\n offsetZ,\n offsetZ,\n 0,\n UI.overhangFront,\n offsetY,\n false\n );\n }\n }\n private addDownPipe() {\n let offsetZ = UI.span + UI.multiSpan - 170;\n let offsetX = -UI.totalBayLength / 2 + 50;\n if (UI.existingType == 1) {\n offsetX = UI.totalBayLength / 2 - 50;\n }\n if (UI.existingType != 0) {\n offsetZ -= UI.existingWidth1 / 2;\n }\n //Rakecut\n //Downpipe will be in left\n if (UI.rakeCutLeftType != RAKECUT_TYPE.NONE) {\n if (UI.existingType == 1 && UI.rakeCutRightType == RAKECUT_TYPE.NONE) {\n offsetX = UI.totalBayLength / 2 - 50;\n } else if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n offsetX = -UI.totalBayLength / 2 + this.beamLeftCutSizeInfo.l;\n } else if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n offsetX = -UI.totalBayLength / 2 + UI.rakeCutLeftHor;\n }\n }\n //Downpipe will be in right\n else {\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n offsetX = UI.totalBayLength / 2 - this.beamRightCutSizeInfo.l;\n } else if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n offsetX = UI.totalBayLength / 2 - UI.rakeCutRightHor;\n }\n }\n\n //this.downpipeGroup.position.set(offsetX, 0, 0);\n\n let offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.span + UI.multiSpan + UI.overhangFront,\n UI.patiosPitch,\n -1\n ) +\n this.geo_superiorBeam.height +\n 90;\n\n if (this.APP.sltGutterType.currentValue == 0) {\n offsetY -= 80;\n } else {\n offsetY -= 60;\n }\n\n this.utils.createDownpipeGroup(\n this.APP,\n this.downpipeGroup,\n this.geo_downPipe,\n this.geo_downPipeL,\n offsetX,\n offsetY,\n offsetZ,\n offsetZ,\n 0,\n UI.overhangFront,\n offsetY,\n true\n );\n }\n\n public houseBeamHeight() {\n return this.geo_superiorBeam.height - this.geo_superiorHouseBeam.height;\n }\n private updateUI() {\n this.APP.sldMinHeight.setValue(_.round(this.frontPostHeight, 0));\n }\n public getSection(): Printing2DGeometry {\n let objs = this.scene.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_POST ||\n o.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET\n );\n\n objs = [...objs];\n\n let lsGeometries: Printing2DLine[] = [];\n\n for (let o of objs) {\n let box = new BoxHelper(o);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n //this.scene.add(box);\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: outlineGeo.vertices,\n views: o.userData.views,\n });\n }\n let beamGroups = this.scene.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM ||\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_INTERNAL_BEAM\n );\n for (let g of beamGroups) {\n for (let c of g.children) {\n c.updateMatrix();\n\n let objCloned = c.clone();\n objCloned.applyMatrix4(new Matrix4().getInverse(c.matrix));\n\n const planView = _.find(\n g.userData.views,\n (el) => el.viewType == ViewType.PLAN\n );\n if (planView) {\n this.utils.getPlanVerticesOfBeam(c as Mesh, lsGeometries, [planView]);\n }\n\n let box = new BoxHelper(objCloned);\n c.updateWorldMatrix(true, true);\n box.geometry.applyMatrix4(c.matrixWorld);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo.vertices,\n views: _.filter(\n g.userData.views,\n (el) => el.viewType != ViewType.PLAN\n ),\n });\n }\n }\n\n let rafterBeamGroups = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n );\n for (let o of rafterBeamGroups) {\n o.children.forEach((el) => {\n this.utils.getOutlineRafterBeam(el as Mesh, lsGeometries);\n });\n }\n\n return { lines: lsGeometries, texts: [] };\n }\n public simplifyGeo(geo: BufferGeometry): Geometry {\n //let simplifiedGeo = new Geometry();\n let vertices = geo.getAttribute(\"position\").array;\n let lineGeo = new Geometry();\n for (let i = 0; i < vertices.length; i += 3) {\n //simplifiedGeo.vertices.push();\n\n lineGeo.vertices.push(\n new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2])\n );\n //lineGeo.vertices.push(new Vector3(vertices[i+3], vertices[i+4], vertices[i+5]));\n\n //if(i == 18) break;\n }\n\n //2-3\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n //3-7\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n //7-6\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n //6-2\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n\n //1-4\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n //4-8\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n //8-5\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n //5-1\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n\n //let line = new LineSegments(lineGeo, new LineBasicMaterial({color: new Color('red')}));\n //this.scene.add(line);\n return lineGeo;\n }\n\n private addGround() {\n let offsetZ = -(\n UI.existingWidth1 / 2 +\n this.extraOffsetZ +\n this.APP.sldBackOverhang.currentValue\n );\n let width = UI.totalBayLength + UI.overhangLeft + UI.overhangRight;\n let length =\n UI.span +\n UI.multiSpan +\n UI.overhangFront +\n this.APP.sldBackOverhang.currentValue;\n\n let base = new Mesh(\n this.geo_groundBase.geometry,\n MaterialManager.Instance().BASE\n );\n base.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GROUND_BASE,\n };\n base.position.set(0, 0, offsetZ);\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2;\n if (UI.existingType == 1) {\n base.position.setX(offsetX);\n }\n if (UI.existingType == 2) {\n base.position.setX(-offsetX);\n }\n base.scale.set(\n width / this.geo_groundBase.width,\n 1,\n length / this.geo_groundBase.length\n );\n\n this.scene.add(base);\n }\n private addPostOrBracket(offsetX: number, userDataPos: any): void {\n let meshPost = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n meshPost.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let meshBracket = new Mesh(\n this.geo_bracket.geometry,\n MaterialManager.Instance().BRACKET\n );\n meshBracket.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let offsetY =\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfExistingRoof() -\n FIT_FLYOVER_BRAKET_ON_ROOF;\n let postOffsetZ = 0;\n let bracketOffsetZ = 0;\n let scalePostY = 1;\n let scaleBracketY = 1;\n\n let views: Print2DView[];\n if (userDataPos.front) {\n postOffsetZ = UI.span - UI.existingWidth1 / 2 - this.extraOffsetZ;\n bracketOffsetZ = UI.span - UI.existingWidth1 / 2 - this.extraOffsetZ;\n this.frontPostHeight = UI.eaveHeight + this.getBracketHeight(UI.span);\n scalePostY = this.frontPostHeight / this.geo_superiorPost.height;\n scaleBracketY =\n (this.getBracketHeight(UI.span) -\n this.totalHeightFromEaveHeightToTopOfExistingRoof() +\n FIT_FLYOVER_BRAKET_ON_ROOF) /\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n if (UI.multiSpan > 0) {\n postOffsetZ -= this.geo_superiorPost.width / 2;\n bracketOffsetZ -= this.geometryManager.FLY_OVER_BRACKET.S65x3.width / 2;\n } else {\n postOffsetZ -= this.geo_superiorPost.width;\n bracketOffsetZ -= this.geometryManager.FLY_OVER_BRACKET.S65x3.width;\n }\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n // if (userDataPos.back) {\n // postOffsetZ =\n // -UI.existingWidth1 / 2 - this.extraOffsetZ;\n // bracketOffsetZ =\n // -UI.existingWidth1 / 2 - this.extraOffsetZ;\n // scalePostY =\n // (UI.eaveHeight +\n // this.totalHeightFromEaveHeightToTopOfFlyoverBraket()) /\n // this.geo_superiorPost.height;\n // scaleBracketY =\n // this.totalHeightFromEaveHeightToTopOfFlyoverBraket() / this.geo_bracket.height;\n\n // views = [\n // { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n // { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n // { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n // ];\n // }\n if (userDataPos.multiSpan) {\n postOffsetZ =\n UI.multiSpan +\n UI.span -\n UI.existingWidth1 / 2 -\n this.geo_superiorPost.width -\n this.extraOffsetZ;\n bracketOffsetZ =\n UI.multiSpan +\n UI.span -\n UI.existingWidth1 / 2 -\n this.geometryManager.FLY_OVER_BRACKET.S65x3.width -\n this.extraOffsetZ;\n scalePostY =\n (UI.eaveHeight + this.getBracketHeight(UI.span + UI.multiSpan)) /\n this.geo_superiorPost.height;\n scaleBracketY =\n (this.getBracketHeight(UI.span + UI.multiSpan) -\n this.totalHeightFromEaveHeightToTopOfExistingRoof() +\n FIT_FLYOVER_BRAKET_ON_ROOF) /\n this.geo_bracket.height;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n meshPost.userData.views = views;\n meshBracket.userData.views = views;\n\n let bracketOffsetX = offsetX;\n let postOffsetX = offsetX;\n if (userDataPos.first) {\n } else if (userDataPos.last) {\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n } else {\n bracketOffsetX -= this.geo_bracket.width / 2;\n postOffsetX -= this.geo_superiorPost.width / 2;\n }\n\n let exceedMoveBackLimit = false;\n //Rakecut\n if (\n UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE ||\n UI.rakeCutLeftType == RAKECUT_TYPE.STEP\n ) {\n let moveToBack = false;\n if (UI.multiSpan > 0) {\n if (userDataPos.multiSpan && userDataPos.first) {\n moveToBack = true;\n }\n } else {\n if (!userDataPos.multiSpan && userDataPos.first) {\n moveToBack = true;\n }\n }\n\n if (moveToBack) {\n if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n let moveBack = UI.rakeCutLeftVer;\n if (moveBack > 0) {\n postOffsetZ -= moveBack;\n bracketOffsetZ -= moveBack;\n let length = UI.span + UI.multiSpan - moveBack;\n scalePostY =\n this.utils.getHeightByAngle(\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n length,\n UI.patiosPitch,\n -1\n ) / this.geo_superiorPost.height;\n scaleBracketY =\n (this.getBracketHeight(\n UI.span + UI.multiSpan - UI.rakeCutLeftVer\n ) -\n this.totalHeightFromEaveHeightToTopOfExistingRoof() +\n FIT_FLYOVER_BRAKET_ON_ROOF) /\n this.geo_bracket.height;\n }\n } else if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n postOffsetX -= UI.overhangLeft;\n bracketOffsetX -= UI.overhangLeft;\n postOffsetZ -=\n this.beamLeftCutSizeInfo.v + this.beamLeftCutSizeInfo.k_;\n bracketOffsetZ -=\n this.beamLeftCutSizeInfo.v + this.beamLeftCutSizeInfo.k_;\n let length =\n UI.span +\n UI.multiSpan -\n (this.beamLeftCutSizeInfo.v + this.beamLeftCutSizeInfo.k_);\n scalePostY =\n this.utils.getHeightByAngle(\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n length,\n UI.patiosPitch,\n -1\n ) / this.geo_superiorPost.height;\n scaleBracketY =\n (this.getBracketHeight(\n UI.span +\n UI.multiSpan -\n (this.beamLeftCutSizeInfo.v + this.beamLeftCutSizeInfo.k_)\n ) -\n this.totalHeightFromEaveHeightToTopOfExistingRoof() +\n FIT_FLYOVER_BRAKET_ON_ROOF) /\n this.geo_bracket.height;\n if (\n UI.rakeCutLeftVer + this.beamLeftCutSizeInfo.k_ >\n this.MANAGER.patiosLength\n ) {\n exceedMoveBackLimit = true;\n }\n }\n\n //if rake cut is on then do not add post left and right\n //left and right post will be added in individual function\n //return;\n }\n }\n if (\n UI.rakeCutRightType == RAKECUT_TYPE.ANGLE ||\n UI.rakeCutRightType == RAKECUT_TYPE.STEP\n ) {\n let moveToBack = false;\n if (UI.multiSpan > 0) {\n if (userDataPos.multiSpan && userDataPos.last) {\n moveToBack = true;\n }\n } else {\n if (!userDataPos.multiSpan && userDataPos.last) {\n moveToBack = true;\n }\n }\n\n if (moveToBack) {\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n postOffsetX += UI.overhangRight;\n bracketOffsetX += UI.overhangRight;\n postOffsetZ -=\n this.beamRightCutSizeInfo.v + this.beamRightCutSizeInfo.k_;\n bracketOffsetZ -=\n this.beamRightCutSizeInfo.v + this.beamRightCutSizeInfo.k_;\n let length =\n UI.span +\n UI.multiSpan -\n (this.beamRightCutSizeInfo.v + this.beamRightCutSizeInfo.k_);\n scalePostY =\n this.utils.getHeightByAngle(\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n length,\n UI.patiosPitch,\n -1\n ) / this.geo_superiorPost.height;\n scaleBracketY =\n (this.getBracketHeight(\n UI.span +\n UI.multiSpan -\n (this.beamRightCutSizeInfo.v + this.beamRightCutSizeInfo.k_)\n ) -\n this.totalHeightFromEaveHeightToTopOfExistingRoof() +\n FIT_FLYOVER_BRAKET_ON_ROOF) /\n this.geo_bracket.height;\n if (\n UI.rakeCutRightVer + this.beamRightCutSizeInfo.k_ >\n this.MANAGER.patiosLength\n ) {\n exceedMoveBackLimit = true;\n }\n } else if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n let moveBack = UI.rakeCutRightVer;\n if (moveBack > 0) {\n postOffsetZ -= moveBack;\n bracketOffsetZ -= moveBack;\n let length = UI.span + UI.multiSpan - moveBack;\n scalePostY =\n this.utils.getHeightByAngle(\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n length,\n UI.patiosPitch,\n -1\n ) / this.geo_superiorPost.height;\n scaleBracketY =\n (this.getBracketHeight(\n UI.span + UI.multiSpan - UI.rakeCutRightVer\n ) -\n this.totalHeightFromEaveHeightToTopOfExistingRoof() +\n FIT_FLYOVER_BRAKET_ON_ROOF) /\n this.geo_bracket.height;\n }\n }\n //if rake cut is on then do not add post left and right\n //left and right post will be added in individual function\n //return;\n }\n }\n //End rakecut\n\n //post can not go behind existing wall\n if (exceedMoveBackLimit) {\n return;\n }\n\n meshPost.position.set(postOffsetX, 0, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n meshBracket.position.set(bracketOffsetX, offsetY, bracketOffsetZ);\n meshBracket.scale.setY(scaleBracketY);\n let boxPost = new Box3().setFromObject(meshPost);\n // let boxPostHelper = new Box3Helper(boxPost);\n // this.APP.scene.add(boxPostHelper);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n if (isIntersect) {\n if (\n meshBracket.userData.position.left &&\n UI.existingType != BUILDING_SIDE.BOTH\n ) {\n meshBracket.translateX(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n );\n } else if (\n meshBracket.userData.position.right &&\n UI.existingType != BUILDING_SIDE.BOTH\n ) {\n meshBracket.translateX(\n -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n )\n );\n }\n this.scene.add(meshBracket);\n } else {\n if (UI.existingType == 1) {\n meshPost.translateX(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n );\n } else if (UI.existingType == 2) {\n meshPost.translateX(\n -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n )\n );\n }\n this.scene.add(meshPost);\n }\n }\n public addPostAngleRakecut(offsetX: number, userDataPos: any) {\n if (\n UI.rakeCutLeftType != RAKECUT_TYPE.ANGLE &&\n UI.rakeCutRightType != RAKECUT_TYPE.ANGLE\n ) {\n return;\n }\n\n let postOffsetZ =\n UI.multiSpan +\n UI.span -\n UI.existingWidth1 / 2 -\n this.geo_superiorPost.width -\n this.extraOffsetZ;\n let bracketOffsetZ =\n UI.multiSpan +\n UI.span -\n UI.existingWidth1 / 2 -\n this.geometryManager.FLY_OVER_BRACKET.S65x3.width -\n this.extraOffsetZ;\n let scalePostY =\n (UI.eaveHeight + this.getBracketHeight(UI.span + UI.multiSpan)) /\n this.geo_superiorPost.height;\n let scaleBracketY =\n this.getBracketHeight(UI.span + UI.multiSpan) / this.geo_bracket.height;\n let offsetY = UI.eaveHeight;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n if (userDataPos.first) {\n let postLeft = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n postLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n postLeft.position.set(\n offsetX + this.beamLeftCutSizeInfo.l,\n 0,\n postOffsetZ\n );\n postLeft.scale.setY(scalePostY);\n\n let bracketLeft = new Mesh(\n this.geo_bracket.geometry,\n MaterialManager.Instance().BRACKET\n );\n bracketLeft.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n views: views,\n };\n bracketLeft.position.set(\n offsetX + this.beamLeftCutSizeInfo.l,\n offsetY,\n bracketOffsetZ\n );\n bracketLeft.scale.setY(scaleBracketY);\n\n let boxPost = new Box3().setFromObject(postLeft);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n let isIntersectPost = false;\n this.scene.children\n .filter((el) => el.userData.type == GEOMETRY_TYPE.SUPERIOR_POST)\n .forEach((el) => {\n el.updateWorldMatrix(true, true);\n let boxEl = new Box3().setFromObject(el);\n if (boxPost.intersectsBox(boxEl)) {\n isIntersectPost = true;\n }\n });\n\n if (isIntersect && !isIntersectPost) {\n this.scene.add(bracketLeft);\n } else if (!isIntersectPost) {\n this.scene.add(postLeft);\n }\n }\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n if (userDataPos.last) {\n let postLeft = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n postLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n postLeft.position.set(\n offsetX - this.beamRightCutSizeInfo.l - this.geo_superiorPost.width,\n 0,\n postOffsetZ\n );\n postLeft.scale.setY(scalePostY);\n\n let bracketLeft = new Mesh(\n this.geo_bracket.geometry,\n MaterialManager.Instance().BRACKET\n );\n bracketLeft.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n views: views,\n };\n bracketLeft.position.set(\n offsetX - this.beamRightCutSizeInfo.l - this.geo_superiorBeam.width,\n offsetY,\n bracketOffsetZ\n );\n bracketLeft.scale.setY(scaleBracketY);\n\n let boxPost = new Box3().setFromObject(postLeft);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n let isIntersectPost = false;\n this.scene.children\n .filter((el) => el.userData.type == GEOMETRY_TYPE.SUPERIOR_POST)\n .forEach((el) => {\n el.updateWorldMatrix(true, true);\n let boxEl = new Box3().setFromObject(el);\n if (boxPost.intersectsBox(boxEl)) {\n isIntersectPost = true;\n }\n });\n\n if (isIntersect && !isIntersectPost) {\n this.scene.add(bracketLeft);\n } else if (!isIntersectPost) {\n this.scene.add(postLeft);\n }\n }\n }\n }\n private addPostStepRakecut() {\n if (\n UI.rakeCutLeftType != RAKECUT_TYPE.STEP &&\n UI.rakeCutRightType != RAKECUT_TYPE.STEP\n ) {\n return;\n }\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n let userDataPos = { rakecut: true };\n let fitX = this.getContainerOffsetXToFitBraketToExistingWall();\n let offsetXL = -UI.totalBayLength / 2 + fitX;\n let offsetXR = UI.totalBayLength / 2 - this.geo_superiorPost.width + fitX;\n let offsetZF =\n UI.span +\n UI.multiSpan -\n UI.existingWidth1 / 2 -\n this.extraOffsetZ -\n this.geo_superiorPost.width;\n let scaleYF =\n this.utils.getHeightByAngle(\n UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n -1\n ) / this.geo_superiorPost.height;\n\n let moveRight = UI.rakeCutLeftHor - UI.overhangLeft;\n if (moveRight > 0) {\n offsetXL += moveRight;\n }\n\n let moveLeft = UI.rakeCutRightHor - UI.overhangRight;\n if (moveLeft > 0) {\n offsetXR -= moveLeft;\n }\n\n let posts: Array = [];\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n let offsetZB = offsetZF;\n let scaleYB = scaleYF;\n let moveBack = UI.rakeCutLeftVer;\n if (moveBack > 0) {\n offsetZB -= moveBack;\n scaleYB =\n this.utils.getHeightByAngle(\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n -1\n ) / this.geo_superiorPost.height;\n }\n\n let postFront = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n postFront.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: { ...userDataPos, left: true },\n views: views,\n };\n postFront.position.set(offsetXL, 0, offsetZF);\n postFront.scale.setY(scaleYF);\n //this.scene.add(postFront);\n posts.push(postFront);\n\n let postBack = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n postBack.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: { ...userDataPos, left: true },\n views: views,\n };\n postBack.position.set(offsetXL, 0, offsetZB);\n postBack.scale.setY(scaleYB);\n //this.scene.add(postBack);\n posts.push(postBack);\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n let offsetZB = offsetZF;\n let scaleYB = scaleYF;\n let moveBack = UI.rakeCutRightVer;\n if (moveBack > 0) {\n offsetZB -= moveBack;\n scaleYB =\n this.utils.getHeightByAngle(\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n -1\n ) / this.geo_superiorPost.height;\n }\n\n let postFront = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n postFront.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: { ...userDataPos, right: true },\n views: views,\n };\n postFront.position.set(offsetXR, 0, offsetZF);\n postFront.scale.setY(scaleYF);\n //this.scene.add(postFront);\n posts.push(postFront);\n\n let postBack = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n postBack.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: { ...userDataPos, right: true },\n views: views,\n };\n postBack.position.set(offsetXR, 0, offsetZB);\n postBack.scale.setY(scaleYB);\n //this.scene.add(postBack);\n posts.push(postBack);\n }\n\n for (let post of posts) {\n let boxPost = new Box3().setFromObject(post);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n if (isIntersect) {\n let bracket = new Mesh(\n this.geo_bracket.geometry,\n MaterialManager.Instance().BRACKET\n );\n bracket.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n bracket.position.set(post.position.x, UI.eaveHeight, post.position.z);\n let height =\n post.scale.y * this.geo_superiorPost.height - UI.eaveHeight;\n let scaleY = height / this.geo_bracket.height;\n bracket.scale.setY(scaleY);\n this.scene.add(bracket);\n } else {\n this.scene.add(post);\n }\n }\n }\n public addPostOrBracketBack() {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET &&\n x.userData.position.back\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.SUPERIOR_POST &&\n x.userData.position.back\n )\n );\n\n let first = true;\n let last = false;\n let offsetX = -UI.totalBayLength / 2;\n let userDataPos = { back: true };\n\n let bracketDistance = UI.totalBayLength / (this.numberOfBracketsBack - 1);\n let cutoutLengthInExistingBoth =\n (UI.totalBayLength - this.APP.sldExistingLength.currentValue) / 2;\n let extraWalWidth =\n this.APP.existingWallManager.geo_existingWallL1.width +\n CONST.EAVE_OFFSET_BACK;\n\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES &&\n this.MANAGER.cutoutCondition\n ) {\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n if (UI.existingWidth2 > 0) {\n offsetX += UI.existingLength2;\n bracketDistance =\n (UI.totalBayLength - UI.existingLength2) /\n (this.numberOfBracketsBack - 1);\n } else {\n offsetX +=\n UI.existingLength2 -\n (this.APP.existingWallManager.geo_existingWallW1.width +\n CONST.EAVE_OFFSET_BACK);\n bracketDistance =\n (UI.totalBayLength - UI.existingLength2 + extraWalWidth) /\n (this.numberOfBracketsBack - 1);\n }\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n if (UI.existingWidth2 > 0) {\n bracketDistance =\n (UI.totalBayLength - UI.existingLength2) /\n (this.numberOfBracketsBack - 1);\n } else {\n bracketDistance =\n (UI.totalBayLength - UI.existingLength2 + extraWalWidth) /\n (this.numberOfBracketsBack - 1);\n }\n } else if (UI.existingType == BUILDING_SIDE.BOTH) {\n offsetX += cutoutLengthInExistingBoth - extraWalWidth;\n bracketDistance =\n (this.APP.sldExistingLength.currentValue + extraWalWidth * 2) /\n (this.numberOfBracketsBack - 1);\n }\n }\n\n for (let i = 0; i < this.numberOfBracketsBack; i++) {\n if (i == this.numberOfBracketsBack - 1) {\n last = true;\n }\n let meshPost = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n meshPost.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let meshBracket = new Mesh(\n this.geo_bracket.geometry,\n MaterialManager.Instance().BRACKET\n );\n meshBracket.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let bracketOffsetY =\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfExistingRoof() -\n FIT_FLYOVER_BRAKET_ON_ROOF;\n let postOffsetZ = 0;\n let bracketOffsetZ = 0;\n\n let scalePostY = 1;\n let scaleBracketY = 1;\n\n let views: Print2DView[];\n\n postOffsetZ = -UI.existingWidth1 / 2 - this.extraOffsetZ;\n bracketOffsetZ = -UI.existingWidth1 / 2 - this.extraOffsetZ;\n scalePostY =\n (UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket()) /\n this.geo_superiorPost.height;\n scaleBracketY =\n (UI.braketHeight + this.houseBeamHeight()) /\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n meshPost.userData.views = views;\n meshBracket.userData.views = views;\n\n let bracketOffsetX = offsetX;\n let postOffsetX = offsetX;\n\n if (first) {\n } else if (last) {\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n } else {\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n }\n\n meshPost.position.set(postOffsetX, 0, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n meshBracket.position.set(bracketOffsetX, bracketOffsetY, bracketOffsetZ);\n meshBracket.scale.setY(scaleBracketY);\n\n //Check intersect eave\n let boxPost = new Box3().setFromObject(meshPost);\n boxPost.translate(this.scene.position);\n\n let isIntersect = false;\n //let isCutoutInterset = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n }\n }\n\n if (isIntersect) {\n if (i == 0 && (UI.existingType == 1 || UI.existingType == 3)) {\n meshBracket.translateX(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n );\n } else if (last && (UI.existingType == 2 || UI.existingType == 3)) {\n meshBracket.translateX(\n -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n )\n );\n }\n\n this.scene.add(meshBracket);\n } else {\n this.scene.add(meshPost);\n }\n\n if (i < this.numberOfBracketsBack) {\n offsetX += bracketDistance;\n }\n first = false;\n }\n }\n public addPostOrBracketBackCutout(): void {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET &&\n x.userData.position.back &&\n x.userData.position.cutout\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.SUPERIOR_POST &&\n x.userData.position.back &&\n x.userData.position.cutout\n )\n );\n\n if (\n this.APP.sltCutOut.currentValue != CUTOUT_ENABLE.YES ||\n !this.MANAGER.cutoutCondition\n )\n return;\n\n let first = true;\n let last = false;\n\n let offsetXL = -UI.totalBayLength / 2;\n let offsetXR = UI.totalBayLength / 2;\n\n let userDataPos = { back: true, cutout: true };\n\n let extraWalWidth =\n this.APP.existingWallManager.geo_existingWallL1.width +\n CONST.EAVE_OFFSET_BACK;\n let bracketDistance =\n (UI.existingLength2 - extraWalWidth) / (this.numberOfBracketCutout - 1);\n if (UI.existingWidth2 > 0) {\n bracketDistance = UI.existingLength2 / (this.numberOfBracketCutout - 1);\n }\n\n if (\n UI.existingType == BUILDING_SIDE.LEFT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n for (let i = 0; i < this.numberOfBracketCutout; i++) {\n if (i == this.numberOfBracketCutout - 1) {\n last = true;\n }\n\n let meshPost = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n meshPost.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let meshBracket = new Mesh(\n this.geo_bracket.geometry,\n MaterialManager.Instance().BRACKET\n );\n meshBracket.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n //let offsetX = 0;\n let offsetY =\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfExistingRoof() -\n FIT_FLYOVER_BRAKET_ON_ROOF;\n\n let postOffsetZ =\n -UI.existingWidth1 / 2 - this.extraOffsetZ + UI.existingWidth1;\n let bracketOffsetZ =\n -UI.existingWidth1 / 2 - this.extraOffsetZ + UI.existingWidth1;\n\n let views: Print2DView[];\n\n let scalePostY =\n this.utils.getHeightByAngle(\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.existingWidth1,\n UI.patiosPitch,\n -1\n ) / this.geo_superiorPost.height;\n let scaleBracketY =\n (this.utils.getHeightByAngle(\n UI.braketHeight,\n UI.existingWidth1,\n UI.patiosPitch,\n -1\n ) +\n this.houseBeamHeight()) /\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n // { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n meshPost.userData.views = views;\n meshBracket.userData.views = views;\n\n let bracketOffsetX = offsetXL;\n let postOffsetX = offsetXL;\n if (first) {\n } else if (last) {\n // Move to dodge internal rafter beam\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n } else {\n bracketOffsetX -= this.geo_bracket.width / 2;\n postOffsetX -= this.geo_superiorPost.width / 2;\n }\n\n meshPost.position.set(postOffsetX, 0, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n\n meshBracket.position.set(bracketOffsetX, offsetY, bracketOffsetZ);\n meshBracket.scale.setY(scaleBracketY);\n\n //Check intersect eave\n let boxPost = new Box3().setFromObject(meshPost);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n if (isIntersect) {\n if (UI.existingType == 1) {\n meshBracket.translateX(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n );\n }\n this.scene.add(meshBracket);\n } else {\n this.scene.add(meshPost);\n }\n\n if (i < this.numberOfBracketCutout) {\n offsetXL += bracketDistance;\n }\n first = false;\n }\n }\n\n if (\n UI.existingType == BUILDING_SIDE.RIGHT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n first = true;\n\n for (let i = 0; i < this.numberOfBracketCutout; i++) {\n if (i == this.numberOfBracketCutout - 1) {\n last = true;\n }\n\n let meshPost = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n meshPost.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let meshBracket = new Mesh(\n this.geo_bracket.geometry,\n MaterialManager.Instance().BRACKET\n );\n meshBracket.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let offsetY =\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfExistingRoof() -\n FIT_FLYOVER_BRAKET_ON_ROOF;\n\n let postOffsetZ =\n -UI.existingWidth1 / 2 - this.extraOffsetZ + UI.existingWidth1;\n let bracketOffsetZ =\n -UI.existingWidth1 / 2 - this.extraOffsetZ + UI.existingWidth1;\n\n let views: Print2DView[];\n\n let scalePostY =\n this.utils.getHeightByAngle(\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.existingWidth1,\n UI.patiosPitch,\n -1\n ) / this.geo_superiorPost.height;\n let scaleBracketY =\n (this.utils.getHeightByAngle(\n UI.braketHeight,\n UI.existingWidth1,\n UI.patiosPitch,\n -1\n ) +\n this.houseBeamHeight()) /\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n views = [\n // { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n meshPost.userData.views = views;\n meshBracket.userData.views = views;\n\n let bracketOffsetX = offsetXR;\n let postOffsetX = offsetXR;\n if (first) {\n if (\n UI.existingType == BUILDING_SIDE.RIGHT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n }\n } else if (last) {\n // Dodge internal rafter beam\n // bracketOffsetX -= this.geo_bracket.width;\n // postOffsetX -= this.geo_superiorPost.width;\n } else {\n bracketOffsetX -= this.geo_bracket.width / 2;\n postOffsetX -= this.geo_superiorPost.width / 2;\n }\n\n meshPost.position.set(postOffsetX, 0, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n\n meshBracket.position.set(bracketOffsetX, offsetY, bracketOffsetZ);\n meshBracket.scale.setY(scaleBracketY);\n\n //Check intersect eave\n let boxPost = new Box3().setFromObject(meshPost);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n if (isIntersect) {\n if (UI.existingType == 2) {\n meshBracket.translateX(\n -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n )\n );\n }\n\n this.scene.add(meshBracket);\n } else {\n this.scene.add(meshPost);\n }\n\n if (i < this.numberOfBracketCutout) {\n offsetXR -= bracketDistance;\n }\n first = false;\n }\n }\n }\n public addSuperiorBeam(userDataPos: any) {\n let offsetX = -UI.totalBayLength / 2 - UI.overhangLeft;\n let offsetZ = 0;\n let offsetY = 0;\n\n let beamLength = UI.totalBayLength + UI.overhangLeft + UI.overhangRight;\n let extraWallWidth =\n this.APP.existingWallManager.geo_existingWallW1.width +\n CONST.EAVE_OFFSET_BACK;\n let views: Print2DView[];\n\n if (userDataPos.front) {\n offsetY = UI.eaveHeight + this.getBracketHeight(UI.span);\n offsetZ = UI.span - UI.existingWidth1 / 2 - this.extraOffsetZ;\n if (UI.multiSpan > 0) {\n offsetZ -= this.geo_superiorBeam.width / 2;\n } else {\n offsetZ -= this.geo_superiorBeam.width;\n }\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.back) {\n //Add house beam\n offsetY =\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.houseBeamHeight();\n\n offsetZ = -(UI.existingWidth1 / 2 + this.extraOffsetZ);\n\n if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.MANAGER.cutoutCondition\n ) {\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n if (UI.existingWidth2 > 0) {\n offsetX += UI.existingLength2;\n beamLength =\n UI.totalBayLength +\n UI.overhangLeft +\n UI.overhangRight -\n UI.existingLength2;\n } else {\n offsetX += UI.existingLength2 - extraWallWidth;\n beamLength =\n UI.totalBayLength +\n UI.overhangLeft +\n UI.overhangRight -\n UI.existingLength2 +\n extraWallWidth;\n }\n\n offsetX += UI.overhangLeft;\n beamLength -= UI.overhangLeft;\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n if (UI.existingWidth2 > 0) {\n beamLength =\n UI.totalBayLength +\n UI.overhangLeft +\n UI.overhangRight -\n UI.existingLength2;\n } else {\n beamLength =\n UI.totalBayLength +\n UI.overhangLeft +\n UI.overhangRight -\n UI.existingLength2 +\n extraWallWidth;\n }\n\n beamLength -= UI.overhangRight;\n } else if (UI.existingType == BUILDING_SIDE.BOTH) {\n offsetX +=\n (UI.totalBayLength -\n (this.APP.sldExistingLength.currentValue +\n this.APP.existingWallManager.geo_existingWallW1.width * 2)) /\n 2 -\n CONST.EAVE_OFFSET_BACK;\n beamLength =\n this.APP.sldExistingLength.currentValue +\n this.APP.existingWallManager.geo_existingWallW1.width * 2 +\n CONST.EAVE_OFFSET_BACK * 2;\n }\n }\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.multiSpan) {\n offsetY = UI.eaveHeight + this.getBracketHeight(UI.span + UI.multiSpan);\n offsetZ =\n UI.multiSpan +\n UI.span -\n UI.existingWidth1 / 2 -\n this.geo_superiorBeam.width -\n this.extraOffsetZ;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.cutout) {\n offsetY =\n UI.eaveHeight +\n this.getBracketHeight(UI.existingWidth1) +\n this.houseBeamHeight();\n offsetZ = UI.existingWidth1 / 2 - this.extraOffsetZ;\n beamLength =\n UI.existingLength2 -\n this.APP.existingWallManager.geo_existingWallW1.width;\n\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n if (UI.existingWidth2 > 0) {\n // beamLength += extraWallWidth;\n } else {\n beamLength -= extraWallWidth;\n }\n\n beamLength +=\n UI.overhangLeft +\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width;\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n views = [\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n if (UI.existingWidth2 > 0) {\n // beamLength += extraWallWidth;\n offsetX =\n UI.totalBayLength / 2 +\n UI.overhangRight -\n UI.existingLength2 -\n CONST.EAVE_OFFSET_BACK +\n extraWallWidth;\n } else {\n offsetX =\n UI.totalBayLength / 2 +\n UI.overhangRight -\n UI.existingLength2 +\n this.APP.existingWallManager.geo_existingWallW1.width +\n extraWallWidth;\n beamLength -= extraWallWidth;\n }\n\n offsetX -=\n UI.overhangRight +\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width;\n beamLength +=\n UI.overhangRight +\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width;\n } else if (UI.existingType == BUILDING_SIDE.BOTH) {\n // Draw beam from start braket to end braket cutout\n beamLength = UI.existingLength2 - extraWallWidth;\n\n if (UI.existingWidth2 > 0) {\n beamLength = UI.existingLength2;\n }\n }\n }\n //rake cut\n if (\n (UI.multiSpan <= 0 && userDataPos.front) ||\n (UI.multiSpan > 0 && userDataPos.multiSpan)\n ) {\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n offsetX += this.beamLeftCutSizeInfo.l;\n beamLength -= this.beamLeftCutSizeInfo.l;\n } else if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n offsetX += UI.rakeCutLeftHor;\n beamLength -= UI.rakeCutLeftHor;\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n beamLength -= this.beamRightCutSizeInfo.l;\n } else if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n beamLength -= UI.rakeCutRightHor;\n }\n }\n const fitX = this.getContainerOffsetXToFitBraketToExistingWall();\n offsetX += fitX;\n if (userDataPos.front || userDataPos.multiSpan) {\n this.cutStandardBeamByCutBeamWithinBayControl(\n this.geo_superiorBeam,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetX, offsetY, offsetZ),\n new Vector3(),\n views,\n 1,\n userDataPos,\n this.geoBeamJoint\n );\n } else {\n this.cutStandardBeamToEqualLengthBeam(\n userDataPos.back || userDataPos.cutout\n ? this.geo_superiorHouseBeam\n : this.geo_superiorBeam,\n userDataPos.back || userDataPos.cutout\n ? this.geo_houseBeamEndCap\n : this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetX, offsetY, offsetZ),\n new Vector3(),\n views,\n 1,\n userDataPos,\n userDataPos.back || userDataPos.cutout\n ? this.geoHouseBeamJoint\n : this.geoBeamJoint\n );\n }\n\n //Add one more beam cutout right\n if (userDataPos.cutout && UI.existingType == BUILDING_SIDE.BOTH) {\n offsetX = UI.totalBayLength / 2 - beamLength;\n this.cutStandardBeamToEqualLengthBeam(\n this.geo_superiorHouseBeam,\n this.geo_houseBeamEndCap,\n beamLength,\n new Vector3(offsetX, offsetY, offsetZ),\n new Vector3(),\n views,\n 1,\n userDataPos,\n this.geoHouseBeamJoint\n );\n }\n }\n private cutStandardBeamToEqualLengthBeam(\n beamGeo: GeometryInfo,\n beamCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n userDataPos: any,\n jointGeo: GeometryInfo\n ) {\n const beamStartX = pos.x;\n const beamEndX = pos.x + length;\n\n const numOfBeam = Math.ceil(\n length / EXISTING_BUILDING_CONFIG.MAXIMUM_LENGTH_PER_BEAM\n );\n const lengthPerBeam = Math.abs(beamEndX - beamStartX) / numOfBeam;\n for (let i = 0; i < numOfBeam; i++) {\n let beamGroup = this.utils.createBeamGroup(\n beamGeo,\n beamCapGeo,\n lengthPerBeam,\n new Vector3(beamStartX + lengthPerBeam * i, pos.y, pos.z),\n rot,\n views,\n directionOffset,\n userDataPos,\n UI.beamLayoutShow,\n {\n hasStartCap: UI.beamType == 0 && i == 0,\n hasEndCap:\n UI.beamType == 0 &&\n (i == numOfBeam - 1 || (i == 0 && numOfBeam == 1)),\n hasStartJoint: i !== 0,\n hasEndJoint: false,\n jointGeo: jointGeo,\n }\n );\n this.scene.add(beamGroup);\n }\n }\n private cutStandardBeamByCutBeamWithinBayControl(\n beamGeo: GeometryInfo,\n beamCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n userDataPos: any,\n jointGeo: GeometryInfo\n ) {\n const fitX = this.getContainerOffsetXToFitBraketToExistingWall();\n // Map list cut beam here\n const beamStartX = pos.x;\n const beamEndX = pos.x + length;\n\n let endOfBayX = -UI.totalBayLength / 2 + fitX;\n let startCutBeamX = beamStartX;\n let endCutBeamX = beamStartX;\n\n const beams = this.utils.getListSeperateBeamsByBays(\n endOfBayX,\n beamStartX,\n beamEndX,\n endCutBeamX,\n startCutBeamX\n );\n\n for (let i = 0; i < beams.length; i++) {\n endCutBeamX = beams[i][1];\n startCutBeamX = beams[i][0];\n let beamGroup = this.utils.createBeamGroup(\n beamGeo,\n beamCapGeo,\n endCutBeamX - startCutBeamX,\n new Vector3(startCutBeamX, pos.y, pos.z),\n rot,\n views,\n directionOffset,\n userDataPos,\n UI.beamLayoutShow,\n {\n hasStartCap: UI.beamType == 0 && i == 0,\n hasEndCap:\n UI.beamType == 0 &&\n (i == beams.length - 1 || (i == 0 && beams.length == 1)),\n hasStartJoint: i !== 0,\n hasEndJoint: false,\n jointGeo: jointGeo,\n }\n );\n this.scene.add(beamGroup);\n }\n }\n private addBeamAngleRakecut() {\n if (\n UI.rakeCutLeftType != RAKECUT_TYPE.ANGLE &&\n UI.rakeCutRightType != RAKECUT_TYPE.ANGLE\n ) {\n return;\n }\n\n let offsetZ =\n UI.multiSpan + UI.span - UI.existingWidth1 / 2 - this.extraOffsetZ;\n let offsetY = this.utils.getHeightByAngle(\n UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n -1\n );\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n let beamLength = this.beamLeftCutSizeInfo.m;\n\n //beam lenght can not go behind existing wall\n if (\n UI.rakeCutLeftVer + this.beamLeftCutSizeInfo.k_ >\n this.MANAGER.patiosLength\n ) {\n beamLength -= this.beamLeftCutSizeInfo.b;\n }\n\n let scaleZ = beamLength / this.geo_beamRakecutLeft.length;\n\n let offsetXStart = 0;\n let offsetXEnd = beamLength;\n let rotY = Math.atan(UI.rakeCutLeftHor / UI.rakeCutLeftVer);\n let rotX = this.utils.degreesToRadians(UI.patiosPitch);\n\n let offsetX =\n -UI.totalBayLength / 2 - UI.overhangLeft + this.beamLeftCutSizeInfo.l;\n const mesh = new Mesh(\n this.geo_beamRakecutLeft.geometry,\n MaterialManager.Instance().BEAM\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n };\n mesh.scale.setZ(scaleZ);\n\n let capL = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capL.position.set(\n this.geo_beamEndCap.width / 2,\n 0,\n -(offsetXEnd + this.geo_beamEndCap.length / 2 - 2)\n );\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let capR = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capR.position.set(\n this.geo_beamEndCap.width / 2,\n 0,\n offsetXStart - this.geo_beamEndCap.length / 2 + 2\n );\n capR.rotateY(Math.PI);\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n angle: true,\n };\n if (UI.existingType == BUILDING_SIDE.RIGHT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetX -= fitZ;\n }\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetX += fitZ;\n }\n beamGroup.position.set(offsetX, offsetY, offsetZ);\n beamGroup.rotation.set(rotX, rotY, 0);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n this.scene.add(beamGroup);\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n let beamLength = this.beamRightCutSizeInfo.m;\n\n //beam lenght can not go behind existing wall\n if (\n UI.rakeCutRightVer + this.beamRightCutSizeInfo.k_ >\n this.MANAGER.patiosLength\n ) {\n beamLength -= this.beamRightCutSizeInfo.b;\n }\n\n let scaleZ = beamLength / this.geo_beamRakecutLeft.length;\n\n let offsetXStart = 0;\n let offsetXEnd = beamLength;\n let rotY = Math.atan(UI.rakeCutRightHor / UI.rakeCutRightVer);\n let rotX = this.utils.degreesToRadians(UI.patiosPitch);\n\n let offsetX =\n UI.totalBayLength / 2 + UI.overhangRight - this.beamRightCutSizeInfo.l;\n const mesh = new Mesh(\n this.geo_beamRakecutRight.geometry,\n MaterialManager.Instance().BEAM\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n };\n mesh.scale.setZ(scaleZ);\n\n let capL = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capL.position.set(\n -this.geo_beamEndCap.width / 2,\n 0,\n -(offsetXEnd + this.geo_beamEndCap.length / 2 - 2)\n );\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let capR = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capR.position.set(\n -this.geo_beamEndCap.width / 2,\n 0,\n offsetXStart - this.geo_beamEndCap.length / 2 + 2\n );\n capR.rotateY(Math.PI);\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n angle: true,\n };\n if (UI.existingType == BUILDING_SIDE.RIGHT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetX -= fitZ;\n }\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetX += fitZ;\n }\n beamGroup.position.set(offsetX, offsetY, offsetZ);\n beamGroup.rotation.set(rotX, -rotY, 0);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n this.scene.add(beamGroup);\n }\n }\n private addBeamStepRakecut() {\n if (\n UI.rakeCutLeftType != RAKECUT_TYPE.STEP &&\n UI.rakeCutRightType != RAKECUT_TYPE.STEP\n ) {\n return;\n }\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n let offsetXL = -UI.totalBayLength / 2 - UI.overhangLeft;\n let offsetXR = UI.totalBayLength / 2 + UI.overhangRight;\n\n let offsetY = this.utils.getHeightByAngle(\n UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n -1\n );\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n let offsetZ =\n UI.span + UI.multiSpan - this.extraOffsetZ - UI.existingWidth1 / 2;\n let moveBack = UI.rakeCutLeftVer;\n if (moveBack > 0) {\n offsetZ -= moveBack;\n offsetY = this.utils.getHeightByAngle(\n UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n -1\n );\n }\n\n let beamLength = UI.rakeCutLeftHor + this.geo_superiorPost.width;\n if (UI.rakeCutLeftHor < UI.overhangLeft) {\n beamLength = UI.overhangLeft + this.geo_superiorPost.width;\n }\n\n let scaleX = beamLength / this.geo_beamStepRakecutLeft.length;\n\n let beam = new Mesh(\n this.geo_beamStepRakecutLeft.geometry,\n MaterialManager.Instance().BEAM\n );\n beam.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n };\n beam.scale.setX(scaleX);\n\n let capL = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capL.position.set(\n this.geo_beamEndCap.length / 2 - 2,\n 0,\n -this.geo_beamEndCap.width / 2\n );\n capL.rotateY(Math.PI / 2);\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let capR = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capR.position.set(\n beamLength + this.geo_beamEndCap.length / 2 - 2,\n 0,\n -this.geo_beamEndCap.width / 2\n );\n capR.rotateY(-Math.PI / 2);\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n };\n if (UI.existingType == BUILDING_SIDE.RIGHT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetXL -= fitZ;\n }\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetXL += fitZ;\n }\n beamGroup.position.set(offsetXL, offsetY, offsetZ);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(beam, capL, capR);\n } else {\n beamGroup.add(beam);\n }\n this.scene.add(beamGroup);\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n let offsetZ =\n UI.span + UI.multiSpan - this.extraOffsetZ - UI.existingWidth1 / 2;\n let moveBack = UI.rakeCutRightVer;\n if (moveBack > 0) {\n offsetZ -= moveBack;\n offsetY = this.utils.getHeightByAngle(\n UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n -1\n );\n }\n\n let beamLength = UI.rakeCutRightHor + this.geo_superiorPost.width;\n if (UI.rakeCutRightHor < UI.overhangRight) {\n beamLength = UI.overhangRight + this.geo_superiorPost.width;\n }\n\n let scaleX = beamLength / this.geo_beamStepRakecutRight.length;\n\n let beam = new Mesh(\n this.geo_beamStepRakecutRight.geometry,\n MaterialManager.Instance().BEAM\n );\n beam.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n };\n beam.scale.setX(scaleX);\n\n let capL = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capL.position.set(\n -(beamLength + this.geo_beamEndCap.length / 2 - 2),\n 0,\n -this.geo_beamEndCap.width / 2\n );\n capL.rotateY(Math.PI / 2);\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let capR = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capR.position.set(\n -(this.geo_beamEndCap.length / 2 - 2),\n 0,\n -this.geo_beamEndCap.width / 2\n );\n capR.rotateY(-Math.PI / 2);\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n };\n if (UI.existingType == BUILDING_SIDE.RIGHT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetXR -= fitZ;\n }\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetXR += fitZ;\n }\n beamGroup.position.set(offsetXR, offsetY, offsetZ);\n //beamGroup.rotateY(Math.PI);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(beam, capL, capR);\n } else {\n beamGroup.add(beam);\n }\n\n this.scene.add(beamGroup);\n }\n }\n public getBracketHeight(offset): number {\n let angle = UI.patiosPitch;\n return (\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() -\n this.utils.tan(angle) * offset\n );\n }\n\n public destroy(): void {\n this.unregisterEvent();\n }\n\n private registerEvent(): void {\n this.eventHandleId = this.uiChangedDefer.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldExistingWallHeight,\n this.APP.sldEaveWidth,\n this.APP.sldFasciaDepth,\n\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n\n this.APP.sltExistingType,\n this.APP.dialogEditBay,\n\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldFrontOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldFlyOverBracketHeight,\n\n this.APP.sltColourBeam,\n this.APP.sltColourPost,\n this.APP.sltColourBracket,\n this.APP.sltColourFasciaBracket,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n ];\n //this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n\n this.controlsToRegisterEvent2 = [\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltHouseBeamSize,\n this.APP.sltColumnType,\n ];\n this.controlsToRegisterEvent2.forEach((c) =>\n c.addAction(this.objectSizeChangedHandle)\n );\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach((c) =>\n c.removeAction(this.objectSizeChangedHandle)\n );\n this.controlsToRegisterEvent2 = undefined;\n }\n private objectSizeChanged(pre: number, cur: number) {\n this.optimize().then(() => {\n this.load();\n this.MANAGER.loadRafterBeamAndInternalBeam(\n this.MANAGER.rafterBeamAndInternalBeamInfo\n );\n });\n }\n uiChangedDefer(previousValue: number, currentValue: number) {\n if (this.APP.sltCutOut.currentValue == 1) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => {\n this.load();\n }, this.deferTimeout);\n } else {\n this.load();\n }\n }\n}\n","import { Scene, Mesh, Object3D, Material, Group, FontLoader, TextBufferGeometry, PlaneBufferGeometry, Vector3, BoxHelper, Box3Helper, Matrix4, Box3, Geometry, LineSegments, LineBasicMaterial, Color, BoxBufferGeometry, ArrowHelper, BufferGeometry, Line, Line3 } from \"three\";\nimport { HomeComponent as AppComponent, HomeComponent } from '../../containers/home/home.component';\nimport { Util } from '../utils';\nimport { MaterialManager } from '../material.manager';\nimport { GeometryInfo, ViewType, LineType, IBay, Printing2DGeometry, Printing2DLine, Print2DText, Printing2DGeometryType } from 'src/app/core/models';\nimport { GEOMETRY_TYPE, DIMENSION_LOCATION, DIMENSION_LABEL_TYPE } from 'src/app/app.config';\nimport { environment } from 'src/environments/environment';\nimport { PatiosFlyOverManager } from '.';\nimport { GeometryManager } from '../geometry.manager';\nimport { FIT_DIMENSION, FIT_DIMENSION_FAR, FIT_FLYOVER_BRAKET_ON_ROOF, PANEL_DIRECTION, RAKECUT_TYPE } from 'src/app/app.constants';\nimport Dimension, { AddDimensionOptions } from \"src/app-ribspan/models/Dimension\";\nimport { UI } from \"../ui\";\n\nexport class DimensionManager {\n private scene: Scene;\n private APP: AppComponent;\n private MANAGER: PatiosFlyOverManager;\n public listText: THREE.Object3D[] = [];\n private utils: Util;\n\n\n private eventHandleId: any;\n\n private material: Material;\n\n private materialManager: MaterialManager;\n\n private dimensionPatiosFrontBottom: Object3D;\n private dimensionPatiosFrontRight: Object3D;\n \n private dimensionPatiosRightBottom: Object3D;\n private dimensionPatiosRightLeft: Object3D;\n private dimensionPatiosRightRight: Object3D;\n\n private dimensionPatiosLeftBottom: Object3D;\n private dimensionPatiosLeftRight: Object3D;\n private dimensionPatiosLeftLeft: Object3D;\n\n private dimensionPatiosPlanRight: Object3D;\n private dimensionPatiosPlanBottom: Object3D;\n private dimensionPatiosPlanLeft: Object3D;\n private dimensionPlanMiddle: Object3D;\n private dimensionPlanMidleLeft: Object3D;\n private dimensionPatiosPlanLeftOverHang: Object3D;\n\n private dimensionPatiosLowerHeightDim: Object3D;\n private dimensionPatiosFlyOverBraketHeightDim: Object3D;\n\n private lineCapGeo: GeometryInfo;\n private lineGeo: GeometryInfo;\n private textGeo: TextBufferGeometry;\n\n private dimensionDistance = 1500;\n private dimensionDistance2 = 500;\n private dimensionDistance3 = 300;\n\n private textDistance = 5000;\n\n private totalBaySize: number;\n private box: Box3;\n\n private font: any\n private textParameter: any;\n private isReady = false;\n\n private controlsToRegisterEvent: Array;\n private geometryManager: GeometryManager;\n\n private options : AddDimensionOptions;\n private startPos: Vector3;\n private startMatrix: Matrix4;\n private startBayLength: number;\n\n constructor(app: AppComponent, flyOverManager: PatiosFlyOverManager) {\n this.utils = new Util();\n this.materialManager = MaterialManager.Instance();\n this.APP = app;\n this.MANAGER = flyOverManager;\n this.scene = this.APP.scene;\n this.material = MaterialManager.Instance().DIMENSION_TEXT;\n this.geometryManager = GeometryManager.Instance();\n //this.registerEvent();\n }\n\n \n public optimize() : Promise{\n return new Promise((resolve, reject) => {\n this.lineGeo = this.geometryManager.getDimensionLine();\n this.lineCapGeo = this.geometryManager.getDimensionCap();\n\n resolve();\n });\n }\n public load(): Promise { \n return new Promise((resolve, reject) => {\n this.unload();\n \n var loader = new FontLoader();\n \n this.dimensionPatiosFrontBottom = new Group();\n this.dimensionPatiosFrontBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n // this.dimensionPatiosFrontBottom.rotation.set(0,Math.PI,0);\n this.dimensionPatiosFrontBottom.visible = false;\n\n this.dimensionPatiosFrontRight = new Group();\n this.dimensionPatiosFrontRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosFrontRight.rotation.set(0,0,-Math.PI/2);\n this.dimensionPatiosFrontRight.visible = false;\n \n this.dimensionPatiosRightBottom = new Group();\n this.dimensionPatiosRightBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightBottom.rotation.set(0,-Math.PI/2,0);\n this.dimensionPatiosRightBottom.visible = false;\n\n this.dimensionPatiosRightLeft = new Group();\n this.dimensionPatiosRightLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightLeft.rotation.set(0,-Math.PI/2,-Math.PI/2);\n this.dimensionPatiosRightLeft.visible = false;\n\n this.dimensionPatiosRightRight = new Group();\n this.dimensionPatiosRightRight.rotation.set(0,-Math.PI/2,-Math.PI/2);\n this.dimensionPatiosRightRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightRight.visible = false;\n \n\n this.dimensionPatiosLeftBottom = new Group();\n this.dimensionPatiosLeftBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftBottom.rotation.set(0,-Math.PI/2,0);\n this.dimensionPatiosLeftBottom.visible = false;\n\n this.dimensionPatiosLeftRight = new Group();\n this.dimensionPatiosLeftRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftRight.rotation.set(Math.PI/2,-Math.PI/2,0);\n this.dimensionPatiosLeftRight.visible = false;\n\n this.dimensionPatiosLeftLeft = new Group();\n this.dimensionPatiosLeftLeft.rotation.set(0, -Math.PI / 2, Math.PI / 2);\n this.dimensionPatiosLeftLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftLeft.visible = false;\n \n\n\n this.dimensionPatiosPlanRight = new Group();\n this.dimensionPatiosPlanRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosPlanRight.rotation.set(-Math.PI/2, Math.PI, -Math.PI/2);\n\n this.dimensionPatiosPlanBottom = new Group();\n this.dimensionPatiosPlanBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosPlanBottom.rotation.set(-Math.PI / 2, 0, 0);\n\n this.dimensionPatiosPlanLeft = new Group();\n this.dimensionPatiosPlanLeft.userData = { type: GEOMETRY_TYPE.DIMENSION , position: { left: true } };\n this.dimensionPatiosPlanLeft.rotation.set(-Math.PI / 2, 0, -Math.PI / 2);\n\n this.dimensionPlanMiddle = new Group();\n this.dimensionPlanMiddle.userData = { type: GEOMETRY_TYPE.DIMENSION };\n //this.dimensionPlanMiddle.rotation.set(-Math.PI / 2, 0, 0);\n this.dimensionPlanMidleLeft = new Group();\n\n this.dimensionPatiosPlanLeftOverHang = new Group();\n\n this.dimensionPatiosLowerHeightDim = new Group();\n this.dimensionPatiosLowerHeightDim.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLowerHeightDim.rotation.set(0, 0, Math.PI / 2);\n \n this.dimensionPatiosFlyOverBraketHeightDim = new Group();\n this.dimensionPatiosFlyOverBraketHeightDim.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosFlyOverBraketHeightDim.rotation.set(0, 0, Math.PI / 2);\n\n this.scene.add(this.dimensionPatiosPlanRight);\n this.scene.add(this.dimensionPatiosPlanLeft);\n this.scene.add(this.dimensionPatiosFrontRight);\n this.APP.patiosManager.patiosGroup.add(\n this.dimensionPatiosFrontBottom, \n //this.dimensionPatiosFrontRight, \n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom, \n this.dimensionPatiosLeftRight, \n this.dimensionPatiosPlanBottom,\n this.dimensionPlanMiddle,\n this.dimensionPatiosPlanLeftOverHang,\n this.dimensionPatiosLeftLeft,\n this.dimensionPlanMidleLeft,\n this.dimensionPatiosLowerHeightDim,\n this.dimensionPatiosFlyOverBraketHeightDim,\n );\n\n loader.load( environment.modelBaseUrl + '/assets/fonts/helvetiker_regular.typeface.json', (font) => {\n this.font = font;\n\n this.textParameter = {\n font: this.font,\n size: 200,\n height: 5,\n curveSegments: 10\n };\n this.options = {\n container: HomeComponent.ins.scene,\n start: new Vector3(),\n end: new Vector3(),\n linePos: new Vector3(),\n views: [],\n allowDrag: true,\n textParameter: this.textParameter,\n textPos: new Vector3(),\n labelType: null,\n fitZ: 10,\n hasTextClone: false,\n axis: 'x',\n lineLength: 0,\n subtype: null,\n textUserData: null,\n onDragCallback: this.onDimDrag.bind(this),\n onDragStartCallback: this.onDimDragStart.bind(this),\n }\n\n this.isReady = true;\n this.draw();\n \n resolve();\n })\n });\n }\n\n public unload(){\n this.scene.remove(this.dimensionPatiosPlanRight);\n this.scene.remove(this.dimensionPatiosPlanLeft);\n this.scene.remove(this.dimensionPatiosFrontRight);\n if(this.APP.patiosManager && this.APP.patiosManager.patiosGroup){\n this.APP.patiosManager.patiosGroup.remove(\n this.dimensionPatiosFrontBottom, \n //this.dimensionPatiosFrontRight, \n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom, \n this.dimensionPatiosLeftRight,\n this.dimensionPatiosLeftLeft,\n this.dimensionPatiosPlanBottom,\n this.dimensionPlanMiddle,\n this.dimensionPlanMidleLeft,\n this.dimensionPatiosPlanLeftOverHang,\n this.dimensionPatiosLowerHeightDim,\n this.dimensionPatiosFlyOverBraketHeightDim,\n );\n }\n }\n \n public draw() {\n if (!this.isReady) {\n return;\n }\n // this.dimensionPatiosPlanBottom.children = [];\n // this.dimensionPatiosPlanRight.children = [];\n // this.dimensionPatiosPlanLeft.children = [];\n this.dimensionPatiosLowerHeightDim.children = this.dimensionPatiosLowerHeightDim.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.LOWER_HEIGHT_DIM\n );\n this.dimensionPatiosFlyOverBraketHeightDim.children = this.dimensionPatiosFlyOverBraketHeightDim.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.BRAKET_HEIGHT_DIM\n );\n this.dimensionPatiosPlanBottom.children = this.dimensionPatiosPlanBottom.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.LEFT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.RIGHT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY\n );\n this.dimensionPatiosPlanRight.children = this.dimensionPatiosPlanRight.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.MULTI_SPAN\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.FRONT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.BACK_OVERHANG\n );\n this.dimensionPatiosPlanLeft.children = this.dimensionPatiosPlanLeft.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL \n )\n this.dimensionPatiosFrontBottom.children = [];\n this.dimensionPatiosFrontRight.children = [];\n this.dimensionPatiosLeftBottom.children = [];\n this.dimensionPatiosLeftRight.children = [];\n this.dimensionPatiosRightBottom.children = [];\n this.dimensionPatiosRightLeft.children = [];\n this.dimensionPatiosRightRight.children = [];\n this.dimensionPlanMiddle.children = [];\n this.dimensionPatiosPlanLeftOverHang.children = [];\n this.dimensionPatiosLeftLeft.children = [];\n this.dimensionPlanMidleLeft.children = [];\n \n this.totalBaySize = 0;\n for(let b of this.APP.dialogEditBay.listBay){\n this.totalBaySize += b.value;\n }\n\n this.box = this.utils.getSceneBox();\n\n this.drawDimensionPatiosPlanBottom();\n this.drawDimensionPatiosPlanRight();\n this.drawDimensionPatiosPlanLeft();\n\n this.drawDimensionPatiosFrontBottom();\n this.drawDimensionPatiosFrontRight();\n\n this.drawDimensionPatiosLeftBottom();\n this.drawDimensionPatiosLeftRight();\n this.drawDimensionPatiosLeftLeft();\n\n this.drawDimensionPatiosRightBottom();\n this.drawDimensionPatiosRightLeft();\n this.drawDimensionPatiosRightRight();\n\n this.drawDimensionLowerHeightDim();\n this.drawDimensionFlyOverBraketHeightDim();\n\n //testing\n // [\n // this.dimensionPatiosFrontBottom,\n // this.dimensionPatiosFrontRight,\n // this.dimensionPatiosRightBottom,\n // this.dimensionPatiosRightLeft,\n // this.dimensionPatiosRightRight,\n // this.dimensionPatiosLeftBottom,\n // this.dimensionPatiosLeftRight,\n // this.dimensionPatiosLeftLeft,\n // ].forEach(g => { g.visible = true });\n\n this.drawDimensionMidle();\n //this.drawDimensionPatiosPlanLeftOverHang();\n this.drawDimensionMidleLeft();\n\n // var offset = this.calulateBoundingBox();\n // this.dimensionPatiosPlanRight.position.setX(offset.right);\n // this.dimensionPatiosPlanLeft.position.setX(offset.left);\n // this.dimensionPatiosPlanBottom.position.setZ(offset.front);\n\n // let existingHouseDimLeft = this.APP.scene.children.find(c => c.userData.type == GEOMETRY_TYPE.DIMENSION && c.userData.position?.planLeft);\n // if(existingHouseDimLeft && existingHouseDimLeft.position.x > offset.left){\n // existingHouseDimLeft.position.setX(offset.left - 500);\n // }\n\n this.APP.dimensionManager.draw();\n }\n private totalHeightFromEaveHeightToTopOfExistingRoof(){\n const height = \n this.geometryManager.EAVE.EAVE.height \n + UI.fasciaDepth \n + UI.eaveWidth * this.utils.tan(UI.existingRoofPitch) \n + this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.height / this.utils.cos(UI.existingRoofPitch)\n \n return height\n }\n private totalHeightFromEaveHeightToTopOfFlyoverBraket(){\n const height = this.totalHeightFromEaveHeightToTopOfExistingRoof() + UI.braketHeight - FIT_FLYOVER_BRAKET_ON_ROOF;\n \n return height\n }\n private drawDimensionFlyOverBraketHeightDim(){\n const bracketHeight =(UI.braketHeight + this.MANAGER.columnAndBeamManager.houseBeamHeight())\n const offsetZBackPos = - UI.existingWidth1 / 2 - this.MANAGER.columnAndBeamManager.extraOffsetZ - FIT_DIMENSION_FAR;\n\n this.dimensionPatiosFlyOverBraketHeightDim.position.set(0, UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfExistingRoof() - FIT_FLYOVER_BRAKET_ON_ROOF + bracketHeight / 2, offsetZBackPos);\n\n let textStr = this.utils.getDimensionValue(bracketHeight);\n let options : AddDimensionOptions = {\n ... this.options,\n lineLength: bracketHeight,\n container: this.dimensionPatiosFlyOverBraketHeightDim,\n views: [],\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, -200, 0),\n textRotation: new Vector3(Math.PI, 0, 0),\n labelType: DIMENSION_LABEL_TYPE.BRAKET_HEIGHT_DIM,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [] },\n allowDrag: false\n }\n let dimBay = this.dimensionPatiosFlyOverBraketHeightDim.children.find(el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.BRAKET_HEIGHT_DIM\n ) as Dimension;\n if(!dimBay){\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n\n private drawDimensionLowerHeightDim(){\n const frontPostHeight = UI.eaveHeight + this.MANAGER.columnAndBeamManager.getBracketHeight(UI.span + UI.multiSpan)\n const offsetZFrontPos = UI.span + UI.multiSpan - UI.existingWidth1 / 2 - this.MANAGER.columnAndBeamManager.extraOffsetZ + FIT_DIMENSION;\n\n this.dimensionPatiosLowerHeightDim.position.set(0, frontPostHeight / 2, offsetZFrontPos);\n\n let textStr = this.utils.getDimensionValue(frontPostHeight);\n let options : AddDimensionOptions = {\n ... this.options,\n lineLength: frontPostHeight,\n container: this.dimensionPatiosLowerHeightDim,\n views: [],\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, 200, 0),\n labelType: DIMENSION_LABEL_TYPE.LOWER_HEIGHT_DIM,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [] },\n allowDrag: false\n }\n let dimBay = this.dimensionPatiosLowerHeightDim.children.find(el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.LOWER_HEIGHT_DIM\n ) as Dimension;\n if(!dimBay){\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n\n private drawDimensionMidleLeft() {\n let offsetX = 0;\n let offsetZ = -this.APP.sldExistingWidth1.currentValue / 2 + 500;\n let origin = new Vector3(0, 0, 0);\n let head = new Vector3(0, 0, 1000);\n let hand1 = new Vector3(-50, 0, 950);\n let hand2 = new Vector3(50, 0, 950);\n\n //arrow\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n //let material = new LineBasicMaterial({ color: 0x0000ff });\n let geoLine = new Geometry();\n geoLine.vertices.push(origin);\n geoLine.vertices.push(head);\n\n geoLine.vertices.push(head);\n geoLine.vertices.push(hand1);\n\n geoLine.vertices.push(hand1);\n geoLine.vertices.push(hand2);\n\n geoLine.vertices.push(hand2);\n geoLine.vertices.push(head);\n let dim = new Line(geoLine);\n dim.userData = { type: \"Arrow\", views: views };\n\n //text of degree\n let textStr = \"Panel direction\";\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, 0, 0) };\n text.position.setZ(500);\n text.position.setX(200);\n\n dim.visible = false;\n text.visible = false;\n\n this.dimensionPlanMidleLeft.add(dim);\n this.dimensionPlanMidleLeft.add(text);\n\n\n if (this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT) {\n text.position.set(-200, 0, 500);\n this.dimensionPlanMidleLeft.rotation.set(0, -Math.PI / 2, 0);\n this.dimensionPlanMidleLeft.position.set(offsetX + 500, 0, offsetZ);\n }\n else {\n this.dimensionPlanMidleLeft.rotation.set(0, Math.PI / 2, 0);\n this.dimensionPlanMidleLeft.position.set(-offsetX - 500, 0, offsetZ);\n }\n }\n private drawDimensionMidle() {\n let offsetZ = this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue / 2 - this.APP.sldExistingWidth1.currentValue/2;\n let origin = new Vector3(0, 0, 0);\n let head = new Vector3(0, 0, 1000);\n let hand1 = new Vector3(-50, 0, 950);\n let hand2 = new Vector3(50, 0, 950);\n let dir = new Vector3(0,0,1);\n let arrow = new ArrowHelper(dir, origin, 1000);\n arrow.userData = { type: \"ARROW\", views: [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }] };\n\n //arrow\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n let material = new LineBasicMaterial({ color: 0x0000ff });\n let geoLine = new Geometry();\n geoLine.vertices.push(origin);\n geoLine.vertices.push(head);\n\n geoLine.vertices.push(head);\n geoLine.vertices.push(hand1);\n\n geoLine.vertices.push(hand1);\n geoLine.vertices.push(hand2);\n\n geoLine.vertices.push(hand2);\n geoLine.vertices.push(head);\n let dim = new Line(geoLine, material);\n dim.userData = { type: \"Arrow\", views: views };\n\n //text of degree\n let textStr = this.APP.sltRoofPitch.currentValue + ' degree';\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n \n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, Math.PI / 2, 0) };\n text.position.setZ(500);\n text.position.setX(200);\n\n dim.visible = false;\n text.visible = false;\n\n this.dimensionPlanMiddle.add(dim);\n this.dimensionPlanMiddle.add(text);\n\n this.dimensionPlanMiddle.position.set(0, 0, offsetZ);\n\n //console.log(dim);\n }\n private drawDimensionPatiosPlanBottom(){\n let offsetX = -this.totalBaySize / 2;\n //let offsetZ = this.box.max.z + this.dimensionDistance2;\n //let offsetZ = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance3 - this.APP.sldExistingWidth1.currentValue/2;\n //if (this.APP.sldExistingWidth1.currentValue > this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) {\n // offsetZ = this.APP.sldExistingWidth1.currentValue / 2 + this.dimensionDistance2\n // if(this.APP.sldExistingLength2.currentValue > 0){\n // offsetZ += 500;\n // }\n //}\n\n let views = [ { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS } ];\n\n //this.dimensionPatiosPlanBottom.position.setZ(offsetZ);\n this.dimensionPatiosPlanBottom.children = this.dimensionPatiosPlanBottom.children.filter(el => \n el.userData?.groupType != DIMENSION_LABEL_TYPE.BAY\n || (el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY && el.userData?.bayNum < HomeComponent.ins.dialogEditBay.listBay.length)\n );\n \n for(let i = 0; i <= this.APP.dialogEditBay.listBay.length; i++){\n let b: IBay = {index: 0, value: 0, isCut: false};\n if(i < this.APP.dialogEditBay.listBay.length){\n b = this.APP.dialogEditBay.listBay[i];\n }\n\n // let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n // cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n // cap2.position.setX(offsetX);\n // this.dimensionPatiosPlanBottom.add(cap2);\n\n if(i < this.APP.dialogEditBay.listBay.length){\n let textStr = this.utils.getDimensionValue(b.value);\n let options : AddDimensionOptions = {... this.options,\n lineLength: b.value,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(offsetX + b.value / 2, 0, 0),\n textPos: new Vector3(offsetX + b.value / 2, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.BAY,\n bayNum: i,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, position: { bottom: true } }\n }\n let dimBay = this.dimensionPatiosPlanBottom.children.find(el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY \n && el.userData?.bayNum == i\n ) as Dimension;\n if(!dimBay){\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n offsetX += b.value;\n }\n\n //rakecut\n if(this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE){\n let _offsetX = -this.APP.dialogEditBay.totalBaySize/2 + this.APP.sldLeftCutHorizontal.currentValue/2 - this.APP.sldLeftOverhang.currentValue;\n let options : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldLeftCutHorizontal.currentValue,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(_offsetX, 500, 0),\n textPos: new Vector3(_offsetX, 300, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL,\n subtype: GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT\n }\n let dimRake = this.dimensionPatiosPlanBottom.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL) as Dimension;\n if(!dimRake){\n new Dimension(options);\n } else {\n dimRake.update(options);\n }\n } else {\n this.dimensionPatiosPlanBottom.children = this.dimensionPatiosPlanBottom.children.filter(el => el.userData?.groupType != DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL)\n }\n if(this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE){\n let _offsetX = this.APP.dialogEditBay.totalBaySize/2 - this.APP.sldRightCutHorizontal.currentValue/2 + this.APP.sldRightOverhang.currentValue;\n let options : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldRightCutHorizontal.currentValue,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(_offsetX, 500, 0),\n textPos: new Vector3(_offsetX, 500-200, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL,\n subtype: GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT\n }\n let dimRake = this.dimensionPatiosPlanBottom.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL) as Dimension;\n if(!dimRake){\n new Dimension(options);\n } else {\n dimRake.update(options);\n }\n } else {\n this.dimensionPatiosPlanBottom.children = this.dimensionPatiosPlanBottom.children.filter(el => el.userData?.groupType != DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL)\n }\n //Left over hang\n this.addOverhang(this.dimensionPatiosPlanBottom, offsetX, this.APP.sldLeftOverhang.currentValue, views, \"Left\", 0, \"z\", DIMENSION_LABEL_TYPE.LEFT_OVERHANG);\n this.addOverhang(this.dimensionPatiosPlanBottom, offsetX, this.APP.sldRightOverhang.currentValue, views, \"Right\", 0, \"z\", DIMENSION_LABEL_TYPE.RIGHT_OVERHANG);\n this.repositionDimension(this.dimensionPatiosPlanBottom, DIMENSION_LOCATION.PLAN_BOTTOM);\n }\n onDimDrag(event){\n this.utils.handlerDimDragEvent(event, this.startPos, this.startMatrix, this.startBayLength);\n this.startPos = event.object.position.clone();\n }\n onDimDragStart(event){\n this.startPos = event.object.position.clone();\n this.startMatrix = event.object.matrixWorld.clone();\n if(event.object.userData?.dimType === DIMENSION_LABEL_TYPE.BAY){\n let bayNum = event.object.userData.bayNum;\n this.startBayLength = UI.listBay[+bayNum].value;\n }\n }\n private drawDimensionPatiosPlanRight(){\n \n let views = [ { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS } ];\n let offsetDimensionZ = this.APP.sldSpan.currentValue/2 \n - this.APP.sldExistingWidth1.currentValue/2 \n - this.APP.existingWallManager.geo_existingWallL1.width \n - this.APP.eaveManager.backOverhang;\n\n let _dimensionDistane = this.dimensionDistance2;\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n if(this.APP.sldExistingWidth1.currentValue > 0){\n _dimensionDistane = this.dimensionDistance;\n }\n }\n\n let offsetDimensionX = this.box.max.x + this.dimensionDistance2;\n //let offsetDimensionX = this.totalBaySize/2 + this.APP.patiosManager.patiosGroup.position.x + _dimensionDistane;\n //if(this.APP.sldExistingLength.currentValue/2 > this.totalBaySize/2){\n // offsetDimensionX = this.APP.sldExistingLength.currentValue/2 + _dimensionDistane;\n //}\n \n //if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n // offsetDimensionX += this.APP.sldExistingLength2.currentValue;\n //}\n\n //this.dimensionPatiosPlanRight.position.set(offsetDimensionX, 0, offsetDimensionZ);\n\n let dimLength = this.APP.sldSpan.currentValue;\n\n let textStr = this.utils.getDimensionValue(this.APP.sldSpan.currentValue);\n\n let options : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldSpan.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.SPAN,\n hasTextClone: false,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneRotation: new Vector3(0, Math.PI, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, -Math.PI, 0),\n fitZ: -10\n }\n let dimSpan = this.dimensionPatiosPlanRight.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN) as Dimension;\n if(!dimSpan){\n new Dimension(options);\n } else {\n dimSpan.update(options);\n }\n\n if(this.APP.sldMultiSpan.currentValue > 0){\n // let offsetX = this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue;\n // - this.APP.sldExistingWidth1.currentValue/2 \n // - this.APP.existingWallManager.geo_existingWallL1.width \n // - this.APP.eaveManager.backOverhang;\n dimLength += this.APP.sldMultiSpan.currentValue;\n\n let textStr = this.utils.getDimensionValue(this.APP.sldMultiSpan.currentValue);\n\n let optionsMul : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldMultiSpan.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue / 2, 0, 0),\n textPos: new Vector3(this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue / 2, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.MULTI_SPAN,\n hasTextClone: false,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneRotation: new Vector3(0, Math.PI, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, -Math.PI, 0),\n fitZ: -10\n }\n let dimMul = this.dimensionPatiosPlanRight.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.MULTI_SPAN) as Dimension;\n if(!dimMul){\n new Dimension(optionsMul);\n } else {\n dimMul.update(optionsMul);\n }\n } else {\n this.dimensionPatiosPlanRight.children = this.dimensionPatiosPlanRight.children.filter(el => el.userData?.groupType != DIMENSION_LABEL_TYPE.MULTI_SPAN)\n }\n\n let extraDistance = 0;\n //----Rake cut\n if(this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE){\n extraDistance = 500;\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n \n let offsetZ = dimLength/2 + UI.multiSpan / 2 + this.APP.sldFrontOverhang.currentValue - this.APP.sldRightCutVertical.currentValue/2;\n \n let optionsRake : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldRightCutVertical.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(offsetZ, 500, 0),\n textPos: new Vector3(offsetZ, 300, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL,\n textRotation: new Vector3( 0, Math.PI, 0),\n fitZ: -10,\n subtype: GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT\n }\n let dimRake = this.dimensionPatiosPlanRight.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL) as Dimension;\n if(!dimRake){\n new Dimension(optionsRake);\n } else {\n dimRake.update(optionsRake);\n }\n } else {\n this.dimensionPatiosPlanRight.children = this.dimensionPatiosPlanRight.children.filter(el => el.userData?.groupType != DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL)\n }\n //----End rake cut\n \n let offsetRight = this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue;\n let offsetLeft = this.APP.sldSpan.currentValue / 2;// + this.APP.sldMultiSpan.currentValue;\n\n this.addOverhang(this.dimensionPatiosPlanRight, offsetRight, this.APP.sldFrontOverhang.currentValue, views, \"Right\", Math.PI,\"y\", DIMENSION_LABEL_TYPE.FRONT_OVERHANG);\n this.addOverhang(this.dimensionPatiosPlanRight, offsetLeft, this.APP.sldBackOverhang.currentValue, views, \"Left\", Math.PI, \"y\", DIMENSION_LABEL_TYPE.BACK_OVERHANG);\n\n this.repositionDimension(this.dimensionPatiosPlanRight, DIMENSION_LOCATION.PLAN_RIGHT, extraDistance);\n }\n private drawDimensionPatiosPlanLeft(){\n if(this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.NONE){\n this.dimensionPatiosPlanLeft.children = this.dimensionPatiosPlanLeft.children.filter(el => el.userData?.groupType != DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL)\n return;\n }\n\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n\n let offsetDimensionZ = this.APP.sldSpan.currentValue\n + this.APP.sldMultiSpan.currentValue\n + this.APP.sldFrontOverhang.currentValue\n - this.APP.sldExistingWidth1.currentValue / 2\n - this.APP.existingWallManager.geo_existingWallL1.width\n - this.APP.eaveManager.backOverhang\n - this.APP.sldLeftCutVertical.currentValue/2;\n\n let optionsRake : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldLeftCutVertical.currentValue,\n container: this.dimensionPatiosPlanLeft,\n views: views,\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL,\n }\n let dimRake = this.dimensionPatiosPlanLeft.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL) as Dimension;\n if(!dimRake){\n new Dimension(optionsRake);\n } else {\n dimRake.update(optionsRake);\n }\n\n //let offsetDimensionX = this.MANAGER.boundingBox.min.x - this.dimensionDistance2;\n this.dimensionPatiosPlanLeft.position.set(0, 0, offsetDimensionZ);\n this.repositionDimension(this.dimensionPatiosPlanLeft, DIMENSION_LOCATION.PLAN_LEFT);\n }\n private drawDimensionPatiosFrontBottom(){\n let dimOffsetY = -this.dimensionDistance2;\n this.dimensionPatiosFrontBottom.position.set(0,dimOffsetY,0);\n\n let views = [ { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosPlanBottom.children.forEach( groupDim => {\n groupDim.children.filter(c => c.userData.subtype != GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT).forEach(e => {\n let dim = e.clone();\n dim.userData['views'] = views;\n if(dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n dim.rotation.set(0,Math.PI,0);\n dim.userData['rotation'] = new Vector3(0,0,0);\n dim.userData['position'] = { ...e.userData.position, bottom: true };\n }\n this.dimensionPatiosFrontBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosFrontRight(){\n let views = [ { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS } ];\n\n let _dimensionDistane = this.dimensionDistance2;\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n if(this.APP.sldExistingWidth1.currentValue > 0){\n _dimensionDistane = this.dimensionDistance;\n }\n }\n \n \n let dimOffsetX = this.totalBaySize/2 + this.APP.patiosManager.patiosGroup.position.x + _dimensionDistane;\n let height = this.utils.getHeightByAngle(UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.MANAGER.columnAndBeamManager.geo_superiorBeam.height, this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue, this.APP.sltRoofPitch.currentValue, -1);\n let dimOffsetY = height/2;\n // if(this.APP.sldExistingLength.currentValue/2 > this.totalBaySize/2){\n // dimOffsetX = this.APP.sldExistingLength.currentValue/2 + _dimensionDistane;\n // }\n \n // if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n // dimOffsetX += this.APP.sldExistingLength2.currentValue;\n // }\n\n //this.dimensionPatiosFrontRight.position.set(dimOffsetX,dimOffsetY,0);\n \n\n //--------\n let scaleLength = height/this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-dimOffsetY);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(dimOffsetY);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(height);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0,0,-Math.PI/2) };\n text.position.set(0,200,0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosFrontRight.add(line, cap1, cap2, text, ...this.utils.addArrowForLine(line));\n this.repositionDimension(this.dimensionPatiosFrontRight, DIMENSION_LOCATION.FRONT_RIGHT);\n }\n private drawDimensionPatiosLeftBottom(){\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z - (this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + this.APP.eaveManager.backOverhang - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0));\n \n this.dimensionPatiosLeftBottom.position.set(0,dimOffsetY,dimOffsetZ);\n\n let views = [ \n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n this.dimensionPatiosPlanRight.children.forEach( groupDim => {\n groupDim.children.forEach(e => {\n if(e.userData?.subType == GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT)\n return;\n \n let dim = e.clone();\n dim.userData['views'] = views;\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.rotation.set(0, 0, 0);\n dim.userData['views'] = [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }];\n dim.userData['rotation'] = new Vector3(0, 0, 0);\n dim.userData['position'] = {...e.userData.position, bottom: true}; \n }\n this.dimensionPatiosLeftBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosLeftRight() {\n let dimOffsetY = UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.MANAGER.columnAndBeamManager.geo_superiorBeam.height - (this.utils.tan(this.APP.sltRoofPitch.currentValue) * (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue));\n // let dimOffsetZ = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance2 - this.APP.sldExistingWidth1.currentValue/2 - 290;\n // if(this.APP.sldExistingWidth1.currentValue + this.APP.sldExistingWidth2.currentValue > this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue){\n // dimOffsetZ = this.APP.sldExistingWidth1.currentValue/2 + this.APP.sldExistingWidth2.currentValue + this.dimensionDistance2 - 290;\n // }\n // if(this.APP.sldExistingLength2.currentValue > 0){\n // dimOffsetZ += 500;\n // }\n\n //this.dimensionPatiosLeftRight.position.set(0,dimOffsetY/2,dimOffsetZ);\n\n let views = [ \n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n let offsetLength = dimOffsetY;\n let scaleLength = offsetLength / this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength/2);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength/2);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }], rotation: new Vector3(-Math.PI / 2, 0, 0) };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosLeftRight.add(line, cap1, cap2, text, ...this.utils.addArrowForLine(line));\n\n //this.dimensionPatiosFrontRight.children.forEach(e => {\n // let dim = e.clone();\n // dim.userData['views'] = views;\n // if(dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n // dim.userData['views'] = [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }];\n // dim.userData['rotation'] = new Vector3(-Math.PI/2,0,0);\n // }\n // this.dimensionPatiosLeftRight.add(dim);\n //});\n\n this.repositionDimension(this.dimensionPatiosLeftRight, DIMENSION_LOCATION.LEFT_RIGHT);\n }\n private drawDimensionPatiosRightBottom(){\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z - (this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + this.APP.eaveManager.backOverhang - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0));\n \n this.dimensionPatiosRightBottom.position.set(0,dimOffsetY,dimOffsetZ);\n\n let views = [ { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosPlanRight.children.forEach(groupDim => {\n groupDim.children.forEach(e => {\n if(e.userData?.subType == GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT)\n return;\n \n let dim = e.clone();\n dim.userData['views'] = views;\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.userData['rotation'] = new Vector3(0, 0, 0);\n dim.userData['position'] = {...e.userData.position, bottom: true};\n }\n this.dimensionPatiosRightBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosRightLeft(){\n // let dimOffsetY = this.APP.sldBuildingHeight.currentValue - (this.utils.tan(this.APP.sltRoofPitch.currentValue) * (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue));\n // let dimOffsetZ = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance2 - this.APP.sldExistingWidth1.currentValue / 2 - 290;\n // if(this.APP.sldExistingWidth1.currentValue > this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue){\n // dimOffsetZ = this.APP.sldExistingWidth1.currentValue/2 + this.dimensionDistance2;\n // }\n this.dimensionPatiosRightLeft.position.set(0,this.dimensionPatiosLeftRight.position.y,this.dimensionPatiosLeftRight.position.z);\n\n let views = [ { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosLeftRight.children.forEach(e => {\n let dim = e.clone();\n dim.userData['views'] = views;\n if(e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n dim.userData['rotation'] = new Vector3(Math.PI/2,0,0);\n dim.rotation.set(0,Math.PI,0);\n }\n this.dimensionPatiosRightLeft.add(dim);\n });\n\n this.repositionDimension(this.dimensionPatiosRightLeft, DIMENSION_LOCATION.RIGHT_LEFT);\n }\n private drawDimensionPatiosLeftLeft() { \n let dimOffsetY = UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.MANAGER.columnAndBeamManager.geo_superiorBeam.height;\n let dimOffsetZ = this.APP.sldExistingWidth1.currentValue / 2 + 1800;\n\n this.dimensionPatiosLeftLeft.position.set(0, dimOffsetY / 2, -dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n let offsetLength = dimOffsetY;\n let scaleLength = offsetLength / this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength / 2);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength / 2);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }], rotation: new Vector3(Math.PI / 2, 0, 0) };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosLeftLeft.add(line, cap1, cap2, text, ...this.utils.addArrowForLine(line));\n\n //this.dimensionPatiosFrontRight.children.forEach(e => {\n // let dim = e.clone();\n // dim.userData['views'] = views;\n // if(dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n // dim.userData['views'] = [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }];\n // dim.userData['rotation'] = new Vector3(-Math.PI/2,0,0);\n // }\n // this.dimensionPatiosLeftRight.add(dim);\n //});\n }\n private drawDimensionPatiosRightRight(){\n let dimOffsetY = UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.MANAGER.columnAndBeamManager.geo_superiorBeam.height;\n let dimOffsetZ = this.APP.sldExistingWidth1.currentValue / 2 + 1800;\n \n this.dimensionPatiosRightRight.position.set(0,dimOffsetY/2,-dimOffsetZ);\n\n let views = [ { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosLeftLeft.children.forEach(e => {\n if(e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n let dim = e.clone();\n dim.userData['views'] = views;\n dim.userData['rotation'] = new Vector3(-Math.PI/2,0,0);\n dim.rotation.set(0,Math.PI,0);\n dim.position.set(dim.position.x, -dim.position.y, dim.position.z);\n this.dimensionPatiosRightRight.add(dim);\n }\n });\n }\n\n private addOverhang(groupDim: Object3D, offset: number, overhangValue: number, views: any, side: string, rotateText: number, axis: string, labelType?: string) {\n // if (overhangValue == 0)\n // return;\n\n let textStr = this.utils.getDimensionValue(overhangValue);\n\n let textRotation = new Vector3();\n let textUserData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, position: { overhang: true }};\n if (axis === \"z\") {\n textRotation.setZ(rotateText);\n textUserData['rotation'] = new Vector3(0, 0, -rotateText / 2);\n textUserData['position']['bottom'] = true;\n }\n else if (axis === \"y\") {\n textRotation.setY(rotateText);\n textUserData['rotation'] = new Vector3(0, -rotateText / 2, 0);\n }\n else if (axis === \"x\") {\n textRotation.setX(rotateText);\n textUserData['rotation'] = new Vector3(-rotateText / 2, 0, 0);\n }\n\n let linePos = new Vector3();\n if (side === \"Left\") {\n linePos.setX(-offset - overhangValue / 2);\n }\n else if (side === \"Right\") {\n linePos.setX(offset + overhangValue / 2);\n }\n let fitZ = 0;\n if(labelType){\n if(axis === 'z'){\n fitZ = 10;\n } else if(axis === 'y'){\n fitZ = -10;\n }\n }\n let options : AddDimensionOptions = {... this.options,\n lineLength: overhangValue,\n container: groupDim,\n views: views,\n linePos: linePos,\n textPos: linePos.clone().setY(linePos.y - 200),\n labelType: labelType ? labelType : null,\n fitZ: fitZ,\n textRotation: textRotation,\n textUserData: textUserData\n }\n let dim = groupDim.children.find(el => el.userData?.groupType == labelType) as Dimension;\n if(!dim){\n new Dimension(options);\n } else {\n dim.update(options)\n }\n\n if(overhangValue == 0){\n groupDim.children = groupDim.children.filter(el => el.userData?.groupType != labelType)\n }\n }\n private getTextCover(textGeo: TextBufferGeometry, labelType: string, pos: Vector3, fitZ = 0, bayNum?: number){\n let textSize = new Vector3();\n textGeo.boundingBox.getSize(textSize)\n\n let textCover = new Mesh(new BoxBufferGeometry(textSize.x, textSize.y, textSize.z + fitZ))\n textCover.position.set(pos.x , pos.y, pos.z);\n textCover.userData = { type: GEOMETRY_TYPE.TEXT_COVER, labelType };\n if(bayNum !== undefined){\n textCover.userData['bayNum'] = bayNum;\n }\n textCover.material['opacity'] = 0;\n textCover.material['transparent'] = true;\n\n return textCover\n }\n\n public getOutlines(): Printing2DGeometry{\n let lsGeometries: Printing2DLine[] = [];\n let lsText: Print2DText[] = [];\n \n for(let dim of [\n ...this.dimensionPatiosPlanBottom.children,\n ...this.dimensionPatiosPlanRight.children,\n ...this.dimensionPatiosPlanLeft.children,\n ...this.dimensionPatiosFrontBottom.children,\n ...this.dimensionPatiosFrontRight.children,\n ...this.dimensionPatiosLeftBottom.children,\n ...this.dimensionPatiosLeftRight.children,\n ...this.dimensionPatiosRightBottom.children,\n ...this.dimensionPatiosRightLeft.children,\n ...this.dimensionPlanMiddle.children,\n ...this.dimensionPatiosPlanLeftOverHang.children,\n ...this.dimensionPatiosLeftLeft.children,\n ...this.dimensionPatiosRightRight.children,\n ...this.dimensionPlanMidleLeft.children\n\n ]){\n if(!dim.userData.views){\n // console.log(\"TEXT NO VIEW\", dim);\n continue;\n }\n\n if(dim.type == 'Group'){\n dim.children.forEach(el => {\n el.updateMatrix();\n let _clone = el.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(el.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n \n el.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(el.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(el.matrixWorld);\n\n let textRotation = el.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, el, pos, textRotation, points)\n })\n } else{\n dim.updateMatrix();\n let _clone = dim.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(dim.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n \n dim.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(dim.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(dim.matrixWorld);\n\n let textRotation = dim.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, dim, pos, textRotation, points)\n }\n }\n \n return { lines: lsGeometries, texts: lsText };\n }\n private getDimInfo(lsGeometries: Printing2DLine[], lsText: Print2DText[], dim: Object3D, pos: Vector3, textRotation: Vector3, points: Vector3[]){\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && dim.userData.views && dim.userData.value) {\n let box = new Box3().setFromObject(dim.parent);\n let startEnd = this.utils.getStartEndPoint(box);\n let line = new Line3(startEnd[0], startEnd[1]);\n\n let projectPoint = new Vector3();\n line.closestPointToPoint(pos, true, projectPoint);\n let _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(10));\n\n if(dim.userData.position?.bottom){\n if(dim.userData.position?.overhang){\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(180));\n }\n else{\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(120));\n }\n }\n else{\n if(dim.userData.position?.overhang){\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(100));\n }\n }\n\n let p = new Vector3().applyMatrix4(dim.matrixWorld);\n\n lsText.push({\n value: dim.userData.value,\n position: p,\n rotation: textRotation,\n views: dim.userData.views\n });\n\n \n }\n else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_LINE) {\n // this.scene.add(new LineSegments(new Geometry().setFromPoints(points), new LineBasicMaterial({color: new Color('red')})));\n\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_CAP) {\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n else if (dim.userData.type == \"Arrow\") {\n let geo = ((dim as Line).geometry as Geometry).clone();\n geo.applyMatrix4(dim.matrixWorld);\n lsGeometries.push({\n vertices: geo.vertices,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n }\n\n private getGeometryFromBufferGeometry(bufferGeo: BufferGeometry) {\n let points: Vector3[] = [];\n let verties = bufferGeo.getAttribute('position').array;\n for (let i = 0; i < verties.length; i += 3) {\n points.push(new Vector3(verties[i], verties[i + 1], verties[i+2]));\n }\n\n return new Geometry().setFromPoints(points);\n }\n public destroy(): void {\n this.unregisterEvent();\n this.unload();\n }\n\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldFrontOverhang,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sldExistingWallHeight,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sldFlyOverBracketHeight,\n this.APP.sltRoofPitch\n ];\n\n this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n \n //this.APP.sldSpan.addAction(this.eventHandleId);\n //this.APP.sldMultiSpan.addAction(this.eventHandleId);\n //this.APP.sldFrontOverhang.addAction(this.eventHandleId);\n //this.APP.sldExistingWidth1.addAction(this.eventHandleId);\n //this.APP.sldExistingWidth2.addAction(this.eventHandleId);\n //this.APP.sldExistingLength.addAction(this.eventHandleId);\n //this.APP.sldExistingLength2.addAction(this.eventHandleId);\n //this.APP.sltExistingType.addAction(this.eventHandleId);\n //this.APP.sldExistingWallHeight.addAction(this.eventHandleId);\n //this.APP.dialogEditBay.addAction(this.eventHandleId);\n\n //this.APP.sldLeftOverhang.addAction(this.eventHandleId);\n //this.APP.sldRightOverhang.addAction(this.eventHandleId);\n //this.APP.sldBackOverhang.addAction(this.eventHandleId);\n\n //this.APP.sldFlyOverBracketHeight.addAction(this.eventHandleId);\n //this.APP.sltRoofPitch.addAction(this.eventHandleId);\n }\n private unregisterEvent(): void{\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.APP.sldSpan.removeAction(this.eventHandleId);\n //this.APP.sldMultiSpan.removeAction(this.eventHandleId);\n //this.APP.sldFrontOverhang.removeAction(this.eventHandleId);\n //this.APP.sldExistingWidth1.removeAction(this.eventHandleId);\n //this.APP.sldExistingWidth2.removeAction(this.eventHandleId);\n //this.APP.sldExistingLength.removeAction(this.eventHandleId);\n //this.APP.sldExistingLength2.removeAction(this.eventHandleId);\n //this.APP.sltExistingType.removeAction(this.eventHandleId);\n //this.APP.sldExistingWallHeight.removeAction(this.eventHandleId);\n //this.APP.dialogEditBay.removeAction(this.eventHandleId);\n\n //this.APP.sldLeftOverhang.removeAction(this.eventHandleId);\n //this.APP.sldRightOverhang.removeAction(this.eventHandleId);\n //this.APP.sldBackOverhang.removeAction(this.eventHandleId);\n\n //this.APP.sldFlyOverBracketHeight.removeAction(this.eventHandleId);\n //this.APP.sltRoofPitch.removeAction(this.eventHandleId);\n }\n\n\n public uiChanged(preVal: number, curVal: number): void {\n this.draw();\n }\n private calulateBoundingBox(){\n this.APP.scene.remove(...this.APP.scene.children.filter(c => c.userData.type == 'BOX_HELPER_'));\n let patiosBox = this.MANAGER.boundingBox;\n \n let planRightBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosPlanRight);\n planRightBox.min.x = patiosBox.max.x;\n planRightBox.max.x = patiosBox.max.x + 500;\n planRightBox.max.y = 10000;\n \n let planLeftBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosPlanLeft);\n planLeftBox.min.x = patiosBox.min.x - 500;\n planLeftBox.max.x = patiosBox.min.x;\n planLeftBox.max.y = 10000;\n\n let planBottomBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosPlanBottom);\n let planBottomBoxWidth = planBottomBox.max.z - planBottomBox.min.z;\n planBottomBox.min.z = patiosBox.max.z;\n planBottomBox.max.z = patiosBox.max.z + planBottomBoxWidth;\n planBottomBox.max.y = 10000;\n \n let objs = [];\n\n objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && c.userData.position?.width1 || c.userData.position?.width2 || c.userData.position?.length2)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL)\n );\n\n // for(let e of objs){\n // let boxModelHelper = new BoxHelper(e);\n // boxModelHelper.userData = {type: 'BOX_HELPER_'};\n // this.scene.add(boxModelHelper);\n // }\n\n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(planRightBox.intersectsBox(objBox)){\n intersectBox = true;\n planRightBox.translate(new Vector3(100,0,0))\n }\n if(planLeftBox.intersectsBox(objBox)){\n intersectBox = true;\n planLeftBox.translate(new Vector3(-100,0,0))\n }\n if(planBottomBox.intersectsBox(objBox)){\n intersectBox = true;\n planBottomBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(planRightBox);\n // boxHelper.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper);\n\n // let boxHelper2 = new Box3Helper(planLeftBox);\n // boxHelper2.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper2);\n\n // let boxHelper3 = new Box3Helper(planBottomBox);\n // boxHelper3.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper3);\n \n return { left: planLeftBox.min.x, right: planRightBox.max.x, front: planBottomBox.max.z };\n }\n private repositionDimension(dimension, location, extraDistance = 0){\n this.APP.scene.remove(...this.APP.scene.children.filter(c => c.userData.type == location));\n this.APP.scene.remove(...this.APP.scene.children.filter(c => c.userData.type == location));\n\n let patiosBox = this.MANAGER.boundingBox;\n \n if(location == DIMENSION_LOCATION.FRONT_RIGHT){\n let height = this.utils.getHeightByAngle(UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.MANAGER.columnAndBeamManager.geo_superiorBeam.height, this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue, this.APP.sltRoofPitch.currentValue, -1);\n let dimOffsetY = height/2;\n dimension.position.setY(dimOffsetY);\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.max.x;\n dimBox.max.x = patiosBox.max.x + 500;\n dimBox.max.z = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && !c.userData.position.length1 && !c.userData.position.length2)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && !c.userData.position.length1 && !c.userData.position.length2)\n );\n\n if(this.APP.sldExistingWidth2.currentValue > 0){\n objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && !c.userData.position.length1)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && !c.userData.position.length1)\n );\n }\n \n // for(let e of objs){\n // let boxModelHelper = new BoxHelper(e);\n // boxModelHelper.userData = {type: 'BOX_HELPER_'};\n // this.scene.add(boxModelHelper);\n // }\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(100,0,0))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n //let dimOffsetY = this.APP.sldBuildingHeight.currentValue / 2;\n dimension.position.setX(dimBox.max.x + extraDistance);\n }\n else if(location == DIMENSION_LOCATION.PLAN_LEFT){\n // let offsetDimensionZ = this.APP.sldSpan.currentValue\n // + this.APP.sldMultiSpan.currentValue\n // + this.APP.sldFrontOverhang.currentValue\n // - this.APP.sldExistingWidth1.currentValue / 2\n // - this.APP.existingWallManager.geo_existingWallL1.width\n // - this.APP.eaveManager.backOverhang;\n // dimension.position.setZ(offsetDimensionZ);\n\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.min.x - 500;\n dimBox.max.x = patiosBox.min.x;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF || c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(-100,0,0))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setX(dimBox.min.x + extraDistance);\n dimension.translateX(this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + this.APP.eaveManager.backOverhang - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0));\n }\n else if(location == DIMENSION_LOCATION.PLAN_RIGHT){\n let offsetDimensionZ = this.APP.sldSpan.currentValue / 2\n - this.APP.sldExistingWidth1.currentValue / 2\n - this.APP.existingWallManager.geo_existingWallL1.width\n - this.APP.eaveManager.backOverhang;\n dimension.position.setZ(offsetDimensionZ);\n\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.max.x;\n dimBox.max.x = patiosBox.max.x + 500;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL)\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(100,0,0))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setX(dimBox.max.x + extraDistance);\n dimension.translateX(this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + this.APP.eaveManager.backOverhang - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0));\n }\n else if(location == DIMENSION_LOCATION.PLAN_BOTTOM){\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL)\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setZ(dimBox.max.z + extraDistance);\n\n if (this.APP.sltExistingType.currentValue == 1) {\n dimension.position.setX(this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0)/2)\n } else if(this.APP.sltExistingType.currentValue == 2) {\n dimension.position.setX( -(this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0)/2))\n } else {\n dimension.position.setX(0)\n }\n }\n else if(location == DIMENSION_LOCATION.LEFT_RIGHT){\n let dimOffsetY = UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.MANAGER.columnAndBeamManager.geo_superiorBeam.height - (this.utils.tan(this.APP.sltRoofPitch.currentValue) * (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue));\n dimension.position.setY(dimOffsetY / 2);\n\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n dimBox.min.x = -10000;\n dimBox.max.x = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && c.userData.position?.left)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && c.userData.position?.left)\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setZ(dimBox.max.z + extraDistance);\n }\n else if(location == DIMENSION_LOCATION.RIGHT_LEFT){\n let dimOffsetY = this.dimensionPatiosLeftRight.position.y;\n dimension.position.setY(dimOffsetY);\n\n let dimBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosLeftRight);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n \n dimBox.min.x = -10000;\n dimBox.max.x = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && c.userData.position?.right)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && c.userData.position?.right)\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setZ(dimBox.max.z + extraDistance);\n }\n }\n}\n","import { GEOMETRY_CATEGORY } from \"src/app/app.config\";\nimport {\n BUILDING_SIDE,\n CUTOUT_ENABLE,\n EXISTING_BUILDING_CONFIG,\n RAKECUT_TYPE,\n} from \"src/app/app.constants\";\nimport { Box3, Group, Vector3 } from \"three\";\nimport { HomeComponent as AppComponent } from \"../../containers/home/home.component\";\nimport { Printing2DGeometry } from \"src/app/core/models\";\nimport {\n PatiosManager,\n RafterBeamAndInternalBeamInfo,\n} from \"../patios.manager\";\nimport { ColumnAndBeamManager } from \"./column-and-beam.manager\";\nimport { DimensionManager } from \"./dimension.manager\";\nimport { RoofManager } from \"./roof.manager\";\n// import { environment } from 'src/environments/environment';\n\nexport class PatiosFlyOverManager implements PatiosManager {\n public columnAndBeamManager: ColumnAndBeamManager;\n public roofManager: RoofManager;\n private APP: AppComponent;\n public patiosGroup: Group;\n public boundingBox: Box3;\n private updateEventHandle: any;\n public dimensionManager: DimensionManager;\n private controlsToRegisterEvent: Array;\n public rafterBeamAndInternalBeamInfo: RafterBeamAndInternalBeamInfo = {\n numOfInternalRafter: 0,\n numOfSpanBeam: 0,\n numOfMultiSpanBeam: 0,\n };\n public ignoreBayEvent: boolean = false;\n private deferHandle;\n private deferTimeout = EXISTING_BUILDING_CONFIG.CUTOUT_DEFFER_TIME_OUT;\n public patiosWidth: number;\n public patiosLength: number;\n public get cutoutCondition(): boolean {\n return (\n [this.APP.sldSpan, this.APP.sldMultiSpan, this.APP.sldFrontOverhang]\n .map((x) => x.currentValue)\n .reduce((a, b) => a + b, 0) -\n this.APP.sldExistingWidth1.currentValue >=\n EXISTING_BUILDING_CONFIG.CUTOUT_ALLOW\n );\n }\n public get rakecutCondition(): boolean {\n this.patiosWidth =\n this.APP.dialogEditBay.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n this.patiosLength =\n this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue;\n\n return false;\n }\n\n public firstLoad = true;\n\n constructor(app: AppComponent) {\n this.APP = app;\n\n this.patiosGroup = new Group();\n this.patiosGroup.userData = {\n isGroup: true,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n app.scene.add(this.patiosGroup);\n\n this.roofManager = new RoofManager(app, this);\n this.columnAndBeamManager = new ColumnAndBeamManager(app, this);\n this.dimensionManager = new DimensionManager(app, this);\n\n this.registerEvents();\n }\n\n load(): Promise {\n return Promise.all([\n this.roofManager.optimize(),\n this.columnAndBeamManager.optimize(),\n this.dimensionManager.optimize(),\n ]).then(() => {\n this.roofManager.load();\n this.columnAndBeamManager.load();\n this.dimensionManager.load();\n });\n }\n loadBracket(bracketQuantity: number): void {\n this.columnAndBeamManager.numberOfBracketsBack = bracketQuantity;\n this.columnAndBeamManager.addPostOrBracketBack();\n }\n loadBracketCutout(bracketQuantity: number): void {\n this.columnAndBeamManager.numberOfBracketCutout = bracketQuantity;\n this.columnAndBeamManager.addPostOrBracketBackCutout();\n }\n loadSideGableBracket(bracketQuantity: number): void {}\n loadRafterBeamAndInternalBeam(info: RafterBeamAndInternalBeamInfo): void {\n this.rafterBeamAndInternalBeamInfo = info;\n this.columnAndBeamManager.addEndRafterBeam(info);\n }\n getOutlines(): Printing2DGeometry {\n let dimensionOutline = this.dimensionManager.getOutlines();\n return {\n lines: [\n ...this.columnAndBeamManager.getSection().lines,\n ...this.roofManager.getOutLines().lines,\n ...dimensionOutline.lines,\n ],\n texts: dimensionOutline.texts,\n };\n }\n public destroy(): void {\n this.columnAndBeamManager.destroy();\n this.roofManager.destroy();\n this.dimensionManager.destroy();\n this.unRegisterEvent();\n }\n registerEvents() {\n this.updateEventHandle = this.updateDefer.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sltCutOut,\n this.APP.sldFrontOverhang,\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltHouseBeamSize,\n this.APP.sltColourBarge,\n this.APP.sltColourGutter,\n this.APP.sltColourDownpipe,\n this.APP.sltColourRoof,\n this.APP.sldSpan,\n this.APP.sldExistingWallHeight,\n this.APP.sldEaveWidth,\n this.APP.sldFasciaDepth,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldFlyOverBracketHeight,\n this.APP.sltColourBeam,\n this.APP.sltColourPost,\n this.APP.sltColourBracket,\n this.APP.sltColourFasciaBracket,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n this.APP.sltLeftCutType,\n this.APP.sldLeftCutVertical,\n this.APP.sldLeftCutHorizontal,\n this.APP.sltRightCutType,\n this.APP.sldRightCutVertical,\n this.APP.sldRightCutHorizontal,\n this.APP.sltPanelDirection,\n this.APP.sltPanelDirectionShow,\n this.APP.sltBeamLayoutShow,\n this.APP.sltExistingRoofPitch,\n this.APP.btnTurnOnPanel,\n ];\n this.controlsToRegisterEvent.forEach((c) => {\n c.addAction(this.updateEventHandle);\n });\n }\n unRegisterEvent() {\n this.controlsToRegisterEvent.forEach((c) =>\n c.removeAction(this.updateEventHandle)\n );\n }\n\n updateDefer(previousValue: number, currentValue: number) {\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES ||\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE ||\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE\n ) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => {\n this.update(previousValue, currentValue);\n }, this.deferTimeout);\n } else {\n this.update(previousValue, currentValue);\n }\n }\n\n update(preVal: number, curVal: number) {\n let totalBaySize = this.APP.dialogEditBay.totalBaySize;\n this.patiosWidth =\n totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n this.patiosLength =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue;\n\n let diff = this.APP.sldExistingLength.currentValue - totalBaySize;\n\n let extraWallWidth =\n this.APP.existingWallManager.geo_existingWallW1.width +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n this.patiosGroup.position.setX(\n -diff / 2 -\n this.APP.sldExistingLength2.currentValue -\n extraWallWidth\n );\n } else {\n this.patiosGroup.position.setX(\n -diff / 2 - this.APP.sldExistingLength2.currentValue\n );\n }\n } else {\n this.patiosGroup.position.setX(-diff / 2 - extraWallWidth);\n }\n } else if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n this.patiosGroup.position.setX(\n diff / 2 + this.APP.sldExistingLength2.currentValue + extraWallWidth\n );\n } else {\n this.patiosGroup.position.setX(\n diff / 2 + this.APP.sldExistingLength2.currentValue\n );\n }\n } else {\n this.patiosGroup.position.setX(diff / 2 + extraWallWidth);\n }\n } else {\n this.patiosGroup.position.setX(0);\n }\n\n this.patiosGroup.position.setZ(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n this.APP.eaveManager.backOverhang -\n (this.columnAndBeamManager.geo_bracket?.width || 0)\n );\n\n Promise.all([\n this.roofManager.load(),\n this.columnAndBeamManager.load(),\n ]).then(() => {\n this.loadRafterBeamAndInternalBeam(this.rafterBeamAndInternalBeamInfo);\n this.boundingBox = this.getPatiosBox();\n this.dimensionManager.draw();\n });\n }\n public getPatiosBox(): Box3 {\n let left =\n -this.APP.dialogEditBay.totalBaySize / 2 -\n this.APP.sldLeftOverhang.currentValue;\n let right =\n this.APP.dialogEditBay.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue;\n let front =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue;\n let back = 0;\n let height = this.APP.sldBuildingHeight.currentValue;\n let extraOffsetZ =\n this.APP.existingWallManager.geo_existingWallL1.width +\n this.APP.eaveManager.backOverhang;\n\n let box = new Box3();\n box = box.expandByPoint(new Vector3(left, 0, front));\n box = box.expandByPoint(new Vector3(right, height, back));\n box.translate(new Vector3(0, 0, -extraOffsetZ));\n\n if (this.APP.sltExistingType.currentValue == 1) {\n let diff =\n (this.APP.sldExistingLength.currentValue -\n this.APP.dialogEditBay.totalBaySize) /\n 2;\n box.translate(new Vector3(-diff, 0, 0));\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n box.translate(new Vector3(this.APP.sldLeftOverhang.currentValue, 0, 0));\n\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n box.translate(\n new Vector3(-this.APP.sldExistingLength2.currentValue, 0, 0)\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 2) {\n let diff =\n (this.APP.sldExistingLength.currentValue -\n this.APP.dialogEditBay.totalBaySize) /\n 2;\n box.translate(new Vector3(diff, 0, 0));\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n box.translate(new Vector3(-this.APP.sldRightOverhang.currentValue, 0, 0));\n\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n box.translate(\n new Vector3(this.APP.sldExistingLength2.currentValue, 0, 0)\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 3) {\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n }\n\n // if (!environment.production) {\n // this.APP.scene.remove(...this.APP.scene.children.filter(o => o.userData.type == 'BOXHELPER'));\n // let boxHelper = new Box3Helper(box);\n // boxHelper.userData = { type: \"BOXHELPER\" };\n // this.APP.scene.add(boxHelper);\n // }\n\n return box;\n }\n}\n","import {\n BoxBufferGeometry,\n BufferGeometry,\n Color,\n Geometry,\n Group,\n LineSegments,\n Material,\n Matrix4,\n Mesh,\n MeshLambertMaterial,\n Object3D,\n Plane,\n Vector3,\n} from \"three\";\nimport { GEOMETRY_CATEGORY, GEOMETRY_TYPE } from \"src/app/app.config\";\nimport { Util } from \"../utils\";\n// import { AppComponent } from \"../../app.component\";\nimport {\n BUILDING_SIDE,\n EXISTING_BUILDING_CONFIG as CONST,\n CUTOUT_ENABLE,\n EXISTING_BUILDING_CONFIG,\n FIT_FLYOVER_BRAKET_ON_ROOF,\n PANEL_DIRECTION,\n RAKECUT_TYPE,\n RIBSPAN_BARGE_FIT,\n RIBSPAN_PANEL_WIDTH,\n} from \"src/app/app.constants\";\nimport HighLightBox from \"src/app-ribspan/models/HighlightBox\";\nimport { CSG } from \"three-csg-ts\";\nimport { PatiosFlyOverManager } from \".\";\nimport { HomeComponent as AppComponent } from \"../../containers/home/home.component\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport {\n GeometryInfo,\n LineType,\n Print2DView,\n Printing2DGeometry,\n Printing2DLine,\n ViewType,\n} from \"src/app/core/models\";\nimport { UI } from \"../ui\";\n\nexport class RoofManager {\n private scene: Group;\n private APP: AppComponent;\n private MANAGER: PatiosFlyOverManager;\n private material: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private geo_RoofPanel: GeometryInfo;\n private gutterRakecutLeftInfo: GeometryInfo;\n private gutterRakecutRightInfo: GeometryInfo;\n private geo_roofPanelBargeCappingLeft: GeometryInfo;\n private geo_roofPanelBargeCappingRight: GeometryInfo;\n private geo_roofPanelBargeCappingBack: GeometryInfo;\n private geo_bargeCutoutLeftHor: GeometryInfo;\n private geo_bargeCutoutRightHor: GeometryInfo;\n private geo_gutterBack: GeometryInfo;\n private geo_gutterCap: GeometryInfo;\n\n private geo_rakecutLeft: BoxBufferGeometry;\n private geo_rakecutRight: BoxBufferGeometry;\n private mesh_rakecutLeft: Mesh;\n private mesh_rakecutRight: Mesh;\n private csg_rakecutLeft: CSG;\n private csg_rakecutRight: CSG;\n\n private roofGroup: Group;\n\n private objectSizeChangedHandle: any;\n\n private totalBaySize: number;\n private extraOffsetZ: number;\n\n private eventHandleId: any;\n\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n\n private mesh_CutoutLeft: Mesh;\n private csg_cutoutLeft: CSG;\n private mesh_CutoutRight: Mesh;\n private csg_cutoutRight: CSG;\n private geo_cutoutLeft: BoxBufferGeometry;\n private geo_cutoutRight: BoxBufferGeometry;\n\n private geoCutGutter: BoxBufferGeometry;\n private meshCutGutterLeft1: Mesh;\n private csgCutGutterLeft1: CSG;\n private meshCutGutterLeft2: Mesh;\n private csgCutGutterLeft2: CSG;\n\n private meshCutGutterRight1: Mesh;\n private csgCutGutterRight1: CSG;\n private meshCutGutterRight2: Mesh;\n private csgCutGutterRight2: CSG;\n\n private roofWidth: number;\n private roofLength: number;\n\n private deferHandle;\n private deferTimeout = EXISTING_BUILDING_CONFIG.CUTOUT_DEFFER_TIME_OUT;\n\n constructor(app: AppComponent, flyOverManager: PatiosFlyOverManager) {\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.APP = app;\n this.MANAGER = flyOverManager;\n this.scene = new Group();\n flyOverManager.patiosGroup.add(this.scene)\n this.material = MaterialManager.Instance().ROOF;\n\n this.registerEvent();\n }\n\n public optimize(): Promise {\n return new Promise((resolve) => {\n this.geo_RoofPanel = this.geometryManager.getRoofRibspanPanel();\n this.geo_RoofPanel.geometry.translate(-this.geo_RoofPanel.width / 2, this.geo_RoofPanel.height / 2, -this.geo_RoofPanel.length / 2);\n this.geo_RoofPanel.geometry.rotateY(Math.PI)\n this.utils.changeGeoColor(this.geo_RoofPanel.geometry, new Vector3(0, 1, 0), UI.roofColor.toString());\n\n //Barge capping\n this.geo_roofPanelBargeCappingLeft = this.geometryManager.getRibspanBarge();\n this.geo_roofPanelBargeCappingLeft.geometry\n .rotateY(Math.PI)\n .translate(\n this.geo_roofPanelBargeCappingLeft.width / 2 - 3,\n this.geo_roofPanelBargeCappingLeft.height / 2 - RIBSPAN_BARGE_FIT,\n this.geo_roofPanelBargeCappingLeft.length / 2\n );\n\n this.geo_roofPanelBargeCappingRight = this.geometryManager.getRibspanBarge();\n this.geo_roofPanelBargeCappingRight.geometry.translate(\n -this.geo_roofPanelBargeCappingRight.width / 2 + 3,\n this.geo_roofPanelBargeCappingRight.height / 2 - RIBSPAN_BARGE_FIT,\n this.geo_roofPanelBargeCappingRight.length / 2\n );\n\n this.geo_roofPanelBargeCappingBack = this.geometryManager.getRibspanBarge();\n this.geo_roofPanelBargeCappingBack.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_roofPanelBargeCappingBack.length / 2,\n this.geo_roofPanelBargeCappingBack.height / 2 - RIBSPAN_BARGE_FIT,\n this.geo_roofPanelBargeCappingBack.width / 2 - 3\n );\n\n //Gutter\n this.geo_gutterBack = this.geometryManager.getGutter();\n this.geo_gutterBack.geometry\n .rotateY(-Math.PI / 2)\n .translate(\n this.geo_gutterBack.length / 2,\n -20,\n this.geo_gutterBack.width / 2\n );\n\n this.gutterRakecutLeftInfo = this.geometryManager.getGutter();\n this.gutterRakecutLeftInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(\n this.gutterRakecutLeftInfo.length / 2,\n -20,\n this.gutterRakecutLeftInfo.width / 2\n );\n\n this.gutterRakecutRightInfo = this.geometryManager.getGutter();\n this.gutterRakecutRightInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(\n -this.gutterRakecutRightInfo.length / 2,\n -20,\n this.gutterRakecutRightInfo.width / 2\n );\n\n //Gutter cap\n this.geo_gutterCap = this.geometryManager.getGuterEndCap();\n this.geo_gutterCap.geometry\n .rotateY(-Math.PI / 2)\n .translate(0, -20, this.geo_gutterCap.length / 2);\n\n this.geo_cutoutLeft = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_cutoutLeft.translate(-500, 500, -500);\n this.geo_cutoutRight = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_cutoutRight.translate(500, 500, -500);\n\n this.geo_rakecutLeft = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_rakecutLeft.translate(-500, 500, 500);\n this.geo_rakecutRight = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_rakecutRight.translate(500, 500, 500);\n\n this.geoCutGutter = new BoxBufferGeometry(500, 10000, 500);\n this.geoCutGutter.translate(0, 0, -250);\n //Barge cutout left\n this.geo_bargeCutoutLeftHor = this.geometryManager.getRibspanBarge();\n this.geo_bargeCutoutLeftHor.geometry\n .rotateY(Math.PI / 2)\n .translate(\n -this.geo_bargeCutoutLeftHor.length / 2,\n this.geo_bargeCutoutLeftHor.height / 2 - RIBSPAN_BARGE_FIT,\n this.geo_bargeCutoutLeftHor.width / 2\n );\n\n //Barge cutout right\n this.geo_bargeCutoutRightHor = this.geometryManager.getRibspanBarge();\n this.geo_bargeCutoutRightHor.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_bargeCutoutRightHor.length / 2,\n this.geo_bargeCutoutRightHor.height / 2 - RIBSPAN_BARGE_FIT,\n this.geo_bargeCutoutRightHor.width / 2\n );\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve) => {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.ROOF_PATIOS\n )\n );\n this.APP.scene.remove(\n ...this.APP.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SHEET_OUTLINE\n )\n );\n\n //test\n //this.scene.remove(...this.scene.children.filter(x => x.userData.type == 'HELPER'));\n this.APP.scene.remove(\n ...this.APP.scene.children.filter((x) => x.userData.type == \"RAKECUT\")\n );\n this.APP.scene.remove(\n ...this.APP.scene.children.filter((x) => x.userData.type == \"CUTGUTTER\")\n );\n this.extraOffsetZ =\n this.APP.existingWallManager.geo_existingWallL1.width +\n this.APP.eaveManager.backOverhang;\n this.totalBaySize = this.APP.dialogEditBay.totalBaySize;\n\n this.addRoof();\n this.addCutout();\n if (UI.rakeCutLeftType == 0) {\n new HighLightBox(this.roofGroup, {\n min: {\n x: -(UI.totalBayLength / 2 + UI.overhangLeft),\n y: 0,\n z: UI.span + UI.multiSpan + UI.overhangBack + UI.overhangFront,\n },\n max: {\n x: -(UI.totalBayLength / 2 + UI.overhangLeft) + 300,\n y: 0,\n z:\n UI.span + UI.multiSpan + UI.overhangBack + UI.overhangFront - 300,\n },\n userData: { side: BUILDING_SIDE.LEFT },\n });\n }\n if (UI.rakeCutRightType == 0) {\n new HighLightBox(this.roofGroup, {\n min: {\n x: UI.totalBayLength / 2 + UI.overhangRight - 300,\n y: 0,\n z: UI.span + UI.multiSpan + UI.overhangBack + UI.overhangFront,\n },\n max: {\n x: UI.totalBayLength / 2 + UI.overhangRight,\n y: 0,\n z:\n UI.span + UI.multiSpan + UI.overhangBack + UI.overhangFront - 300,\n },\n userData: { side: BUILDING_SIDE.RIGHT },\n });\n }\n\n // this.addAngleRakeCut();\n //Add angle rakecut\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n this.addAngleRakeCut(BUILDING_SIDE.LEFT);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n this.addAngleRakeCut(BUILDING_SIDE.RIGHT);\n }\n this.addStepRakeCut();\n\n let offsetLeft =\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue -\n this.MANAGER.patiosGroup.position.x;\n let offsetRight =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue +\n this.MANAGER.patiosGroup.position.x;\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetRight -= offsetX;\n offsetLeft += offsetX;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetLeft += offsetX;\n offsetRight += offsetX;\n }\n\n let clipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let clipingPlaneRight = new Plane(new Vector3(-1, 0, 0), offsetRight);\n\n this.material.clippingPlanes = [clipingPlaneLeft, clipingPlaneRight];\n MaterialManager.Instance().ROOF_BASE.clippingPlanes = [\n clipingPlaneLeft,\n clipingPlaneRight,\n ];\n let width =\n this.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n this.roofWidth = width;\n this.roofLength =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldBackOverhang.currentValue +\n this.APP.sldFrontOverhang.currentValue;\n let roofSheetingCount = Math.ceil(width / RIBSPAN_PANEL_WIDTH);\n let offsetX = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n\n let panelDirectionOfset = 1;\n if (\n this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT\n ) {\n offsetX =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue -\n RIBSPAN_PANEL_WIDTH;\n panelDirectionOfset = -1;\n } else if (\n this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.LEFT_TO_RIGHT\n ) {\n offsetX = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n }\n\n if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.APP.sltExistingType.currentValue == 1 &&\n this.MANAGER.cutoutCondition\n ) {\n for (let index = 0; index < roofSheetingCount; index++) {\n let last = index == roofSheetingCount - 1;\n\n this.addRoofSheeting(offsetX, [this.csg_cutoutLeft]);\n\n offsetX += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n } else if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.APP.sltExistingType.currentValue == 2 &&\n this.MANAGER.cutoutCondition\n ) {\n for (let index = 0; index < roofSheetingCount; index++) {\n let last = index == roofSheetingCount - 1;\n\n this.addRoofSheeting(offsetX, [this.csg_cutoutRight]);\n\n offsetX += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n } else if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.APP.sltExistingType.currentValue == 3 &&\n this.MANAGER.cutoutCondition\n ) {\n for (let index = 0; index < roofSheetingCount; index++) {\n let last = index == roofSheetingCount - 1;\n\n this.addRoofSheeting(offsetX, [\n this.csg_cutoutLeft,\n this.csg_cutoutRight,\n ]);\n\n offsetX += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n } else {\n for (let index = 0; index < roofSheetingCount; index++) {\n let last = index == roofSheetingCount - 1;\n\n this.addRoofSheeting(offsetX, null);\n\n offsetX += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n }\n this.addBargeCapping();\n this.addBargeStepRakecut();\n this.addGutter();\n this.addGutterStepRakecut();\n this.addGutterAngleRakecut();\n this.showPanelOutline();\n //this.getOutLines();\n\n this.scene.visible = UI.showRoof\n\n resolve();\n });\n }\n private addCutout() {\n if (this.APP.sltCutOut.currentValue == 1) {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter((x) => x.userData.type == \"CUTOUT\")\n );\n\n let offsetX =\n this.APP.sldExistingLength.currentValue / 2 +\n this.APP.existingWallManager.geo_existingWallL2.width +\n 100;\n let offsetY = 0;\n let offsetZ = UI.existingWidth1 / 2 - UI.existingWallW1.width - this.APP.eaveManager.backOverhang - UI.overhangBack;\n\n let scaleX = (this.APP.sldExistingLength2.currentValue + 5000) / 1000;\n if (scaleX == 0) scaleX = 1;\n let scaleY = (this.APP.sldExistingWallHeight.currentValue + 5000) / 1000;\n let scaleZ =\n (this.APP.sldExistingWidth1.currentValue +\n this.APP.sldBackOverhang.currentValue +\n 5000) /\n 1000;\n if (scaleZ == 0) scaleZ = 1;\n\n if (\n this.APP.sltExistingType.currentValue == 1 ||\n this.APP.sltExistingType.currentValue == 3\n ) {\n this.mesh_CutoutLeft = new Mesh(\n this.geo_cutoutLeft,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.mesh_CutoutLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"CUTOUT\",\n };\n\n this.mesh_CutoutLeft.position.set(-offsetX, offsetY, offsetZ);\n this.mesh_CutoutLeft.scale.set(scaleX, scaleY, scaleZ);\n\n // this.APP.scene.add(this.mesh_CutoutLeft);\n\n this.mesh_CutoutLeft.updateMatrix();\n this.csg_cutoutLeft = CSG.fromMesh(this.mesh_CutoutLeft);\n }\n if (\n this.APP.sltExistingType.currentValue == 2 ||\n this.APP.sltExistingType.currentValue == 3\n ) {\n this.mesh_CutoutRight = new Mesh(\n this.geo_cutoutRight,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.mesh_CutoutRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"CUTOUT\",\n };\n\n this.mesh_CutoutRight.position.set(offsetX, offsetY, offsetZ);\n this.mesh_CutoutRight.scale.set(scaleX, scaleY, scaleZ);\n\n // this.APP.scene.add(this.mesh_CutoutRight);\n\n this.mesh_CutoutRight.updateMatrix();\n this.csg_cutoutRight = CSG.fromMesh(this.mesh_CutoutRight);\n }\n }\n }\n private addAngleRakeCut(cutSide: BUILDING_SIDE) {\n let offsetXL =\n -this.totalBaySize / 2 - this.APP.sldLeftOverhang.currentValue;\n let offsetXR =\n this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n let offsetY = -100;\n\n let offsetZ =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue -\n // + this.APP.sldBackOverhang.currentValue\n this.extraOffsetZ -\n this.APP.sldExistingWidth1.currentValue / 2;\n //\n let angle;\n let _rotY;\n if (cutSide == BUILDING_SIDE.LEFT) {\n angle = Math.atan(\n this.APP.sldLeftCutHorizontal.currentValue /\n this.APP.sldLeftCutVertical.currentValue\n );\n _rotY = Math.atan(\n this.APP.sldLeftCutVertical.currentValue /\n this.APP.sldLeftCutHorizontal.currentValue\n );\n }\n if (cutSide == BUILDING_SIDE.RIGHT) {\n angle = Math.atan(\n this.APP.sldRightCutHorizontal.currentValue /\n this.APP.sldRightCutVertical.currentValue\n );\n _rotY = Math.atan(\n this.APP.sldRightCutVertical.currentValue /\n this.APP.sldRightCutHorizontal.currentValue\n );\n }\n const _offsetZ =\n (this.APP.sldFrontOverhang.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue +\n this.APP.sldBackOverhang.currentValue -\n CONST.GUTTER_ROOF_OFFSET_Z) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n let _angle = (Math.PI - _rotY) / 2;\n\n let hypotenuse = Math.sqrt(\n Math.pow(this.MANAGER.patiosLength, 2) +\n Math.pow(this.MANAGER.patiosWidth, 2)\n );\n let scaleLength = hypotenuse / 1000;\n let scaleWidth =\n (this.MANAGER.patiosLength * this.MANAGER.patiosWidth) /\n hypotenuse /\n 1000;\n //\n if (cutSide === BUILDING_SIDE.LEFT) {\n this.mesh_rakecutLeft = new Mesh(\n this.geo_rakecutLeft,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.mesh_rakecutLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"RAKECUT\",\n };\n\n this.mesh_rakecutLeft.position.set(\n offsetXL + this.MANAGER.patiosGroup.position.x,\n offsetY,\n offsetZ - this.APP.sldLeftCutVertical.currentValue\n );\n this.mesh_rakecutLeft.scale.set(scaleWidth, 5, scaleLength);\n this.mesh_rakecutLeft.rotateY(angle);\n this.mesh_rakecutLeft.updateMatrix();\n this.csg_rakecutLeft = CSG.fromMesh(this.mesh_rakecutLeft);\n // this.APP.scene.add(this.mesh_rakecutLeft);\n\n //cut gutter csg\n let scaleZ = (this.APP.dialogEditBay.totalBaySize + 200) / 500;\n let scaleX = (this.APP.dialogEditBay.totalBaySize + 200) / 500;\n this.meshCutGutterLeft1 = new Mesh(\n this.geoCutGutter,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.meshCutGutterLeft1.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"CUTGUTTER\",\n };\n this.meshCutGutterLeft1.position.set(\n offsetXL + this.APP.sldLeftCutHorizontal.currentValue,\n 0,\n _offsetZ\n );\n this.meshCutGutterLeft1.scale.set(scaleX, 1, scaleZ);\n this.meshCutGutterLeft1.rotation.set(0, _angle, 0);\n this.meshCutGutterLeft1.updateMatrix();\n this.csgCutGutterLeft1 = CSG.fromMesh(this.meshCutGutterLeft1);\n // this.APP.scene.add(this.meshCutGutterLeft1);\n\n this.meshCutGutterLeft2 = new Mesh(\n this.geoCutGutter,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.meshCutGutterLeft2.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"CUTGUTTER\",\n };\n this.meshCutGutterLeft2.position.set(\n offsetXL + this.APP.sldLeftCutHorizontal.currentValue,\n 0,\n _offsetZ\n );\n this.meshCutGutterLeft2.scale.set(scaleX, 1, scaleZ);\n this.meshCutGutterLeft2.rotation.set(0, _angle + Math.PI, 0);\n this.meshCutGutterLeft2.updateMatrix();\n this.csgCutGutterLeft2 = CSG.fromMesh(this.meshCutGutterLeft2);\n // this.APP.scene.add(this.meshCutGutterLeft2);\n }\n if (cutSide === BUILDING_SIDE.RIGHT) {\n this.mesh_rakecutRight = new Mesh(\n this.geo_rakecutRight,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.mesh_rakecutRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"RAKECUT\",\n };\n\n this.mesh_rakecutRight.position.set(\n offsetXR + this.MANAGER.patiosGroup.position.x,\n offsetY,\n offsetZ - this.APP.sldRightCutVertical.currentValue\n );\n this.mesh_rakecutRight.scale.set(scaleWidth, 5, scaleLength);\n this.mesh_rakecutRight.rotateY(-angle);\n this.mesh_rakecutRight.updateMatrix();\n this.csg_rakecutRight = CSG.fromMesh(this.mesh_rakecutRight);\n // this.APP.scene.add(this.mesh_rakecutRight);\n\n //cut gutter\n let scaleZ = (this.APP.dialogEditBay.totalBaySize + 200) / 500;\n let scaleX = (this.APP.dialogEditBay.totalBaySize + 200) / 500;\n this.meshCutGutterRight1 = new Mesh(\n this.geoCutGutter,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.meshCutGutterRight1.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"CUTGUTTER\",\n };\n this.meshCutGutterRight1.position.set(\n offsetXR - this.APP.sldRightCutHorizontal.currentValue,\n 0,\n _offsetZ\n );\n this.meshCutGutterRight1.rotation.set(0, -_angle, 0);\n this.meshCutGutterRight1.scale.set(scaleX, 1, scaleZ);\n this.meshCutGutterRight1.updateMatrix();\n this.csgCutGutterRight1 = CSG.fromMesh(this.meshCutGutterRight1);\n\n this.meshCutGutterRight2 = new Mesh(\n this.geoCutGutter,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.meshCutGutterRight2.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"CUTGUTTER\",\n };\n this.meshCutGutterRight2.position.set(\n offsetXR - this.APP.sldRightCutHorizontal.currentValue,\n 0,\n _offsetZ\n );\n this.meshCutGutterRight2.scale.set(scaleX, 1, scaleZ);\n this.meshCutGutterRight2.rotation.set(0, -(_angle + Math.PI), 0);\n this.meshCutGutterRight2.updateMatrix();\n this.csgCutGutterRight2 = CSG.fromMesh(this.meshCutGutterRight2);\n }\n }\n private addStepRakeCut() {\n let offsetXL =\n -this.totalBaySize / 2 -\n this.APP.sldLeftOverhang.currentValue +\n this.MANAGER.patiosGroup.position.x;\n let offsetXR =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue +\n this.MANAGER.patiosGroup.position.x;\n let offsetY = -100; //this.APP.sldExistingWallHeight.currentValue;\n\n let offsetZ =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue -\n this.extraOffsetZ -\n this.APP.sldExistingWidth1.currentValue / 2;\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n this.mesh_rakecutLeft = new Mesh(\n this.geo_rakecutLeft,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.mesh_rakecutLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"RAKECUT\",\n };\n\n this.mesh_rakecutLeft.position.set(\n offsetXL + this.APP.sldLeftCutHorizontal.currentValue,\n offsetY,\n offsetZ - this.APP.sldLeftCutVertical.currentValue\n );\n this.mesh_rakecutLeft.scale.set(5, 5, 5);\n\n //this.APP.scene.add(this.mesh_rakecutLeft);\n\n this.mesh_rakecutLeft.updateMatrix();\n this.csg_rakecutLeft = CSG.fromMesh(this.mesh_rakecutLeft);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n this.mesh_rakecutRight = new Mesh(\n this.geo_rakecutRight,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.mesh_rakecutRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"RAKECUT\",\n };\n\n this.mesh_rakecutRight.position.set(\n offsetXR - this.APP.sldRightCutHorizontal.currentValue,\n offsetY,\n offsetZ - this.APP.sldRightCutVertical.currentValue\n );\n this.mesh_rakecutRight.scale.set(5, 5, 5);\n\n //this.APP.scene.add(this.mesh_rakecutRight);\n\n this.mesh_rakecutRight.updateMatrix();\n this.csg_rakecutRight = CSG.fromMesh(this.mesh_rakecutRight);\n }\n }\n public getOutLines(): Printing2DGeometry {\n let objs = this.roofGroup.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n );\n\n let gutterGroupObjs = this.roofGroup.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS\n );\n let gutterObjs: Object3D[] = [];\n for (let group of gutterGroupObjs) {\n gutterObjs.push(...group.children);\n }\n objs = [...objs, ...gutterObjs];\n\n let lsGeometries: Printing2DLine[] = [];\n\n let offsetLeft =\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue -\n this.MANAGER.patiosGroup.position.x;\n let offsetRight =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue +\n this.MANAGER.patiosGroup.position.x;\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetRight -= offsetX;\n offsetLeft += offsetX;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetLeft += offsetX;\n offsetRight += offsetX;\n }\n let roofClipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let roofClipingPlaneRight = new Plane(new Vector3(-1, 0, 0), offsetRight);\n\n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n o as Mesh,\n 60\n );\n\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n outlineGeo.translate(0, 5000, 0);\n\n if (\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ) {\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneRight);\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n }\n // if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL) {\n // var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"SHEETING_OUTLINE\"};\n // this.APP.scene.add(line);\n // // let boxPost = new Box3().setFromObject(o);\n // // console.log('😋: RoofManager -> getOutLines -> boxPost', boxPost.min.distanceTo(boxPost.max));\n // }\n\n let simplifiedGeo = this.simplifyGeo(outlineGeo);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: simplifiedGeo.vertices,\n views: o.userData.views,\n });\n }\n\n lsGeometries.push({\n objectType: GEOMETRY_TYPE.ROOF_COVER,\n vertices: this.makeRoofPolygon(),\n color: this.utils.convertHexColorToRgb(`#${new Color(UI.panelColor).getHexString()}`),\n views: [\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ]\n });\n\n return { lines: lsGeometries, texts: [] };\n }\n makeRoofPolygon() {\n const polygon = this.utils.getRoofCoverPolygonForLRRoof()\n this.roofGroup.updateWorldMatrix(true, true)\n return polygon.map(el => (el as Vector3).applyMatrix4(this.roofGroup.matrixWorld))\n }\n public showPanelOutline() {\n if (this.APP.sltPanelDirectionShow.currentValue == false) return;\n\n let objs = this.roofGroup.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n );\n\n let offsetLeft =\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue -\n this.MANAGER.patiosGroup.position.x;\n let offsetRight =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue +\n this.MANAGER.patiosGroup.position.x;\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetRight -= offsetX;\n offsetLeft += offsetX;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetLeft += offsetX;\n offsetRight += offsetX;\n }\n let roofClipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let roofClipingPlaneRight = new Plane(new Vector3(-1, 0, 0), offsetRight);\n\n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n o as Mesh,\n 60\n );\n\n //let outlineBox = new Box3().setFromBufferAttribute(outlineGeo.getAttribute('position') as Buffer);\n\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n //outlineGeo.translate(0, 1000, 0);\n\n if (\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ) {\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneRight);\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n }\n\n var line = new LineSegments(\n outlineGeo,\n MaterialManager.Instance().MESH_OUTLINE\n );\n line.userData = { type: GEOMETRY_TYPE.SHEET_OUTLINE };\n this.APP.scene.add(line);\n }\n }\n public simplifyGeo(geo: BufferGeometry): Geometry {\n let simplifiedGeo = new Geometry();\n let vertices = geo.getAttribute(\"position\").array;\n for (let i = 0; i < vertices.length; i += 3) {\n simplifiedGeo.vertices.push(\n new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2])\n );\n }\n return simplifiedGeo;\n }\n //private getBracketHeight(offset): number{\n // let angle = this.APP.sltRoofPitch.currentValue;\n // return (this.APP.sldFlyOverBracketHeight.currentValue) - this.utils.tan(angle) * offset;\n //}\n\n public addRoof() {\n this.roofGroup = null;\n this.roofGroup = new Group();\n this.roofGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.ROOF_PATIOS,\n };\n\n let offsetY = this.getRoofOffsetY();\n let offsetZ = -(\n this.APP.sldExistingWidth1.currentValue / 2 +\n this.APP.sldBackOverhang.currentValue +\n this.extraOffsetZ\n );\n\n this.roofGroup.position.setY(offsetY);\n this.roofGroup.position.setZ(offsetZ);\n this.roofGroup.rotateX(\n this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue)\n );\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n this.roofGroup.position.setX(-offsetX);\n }\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n this.roofGroup.position.setX(offsetX);\n }\n\n this.scene.add(this.roofGroup);\n }\n public addRoofSheeting(offsetX: number, csgObjs: CSG[]) {\n let mesh = new Mesh(this.geo_RoofPanel.geometry, this.material);\n\n let scaleZ =\n (this.APP.sldSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldBackOverhang.currentValue +\n this.APP.sldMultiSpan.currentValue) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue) /\n this.geo_RoofPanel.length;\n\n let offsetY = 0;\n let offsetZ = 0;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setZ(scaleZ);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.ROOF_PANEL,\n views: views,\n };\n\n let cutoutCondition =\n this.APP.sltCutOut.currentValue == 1 &&\n this.APP.sltExistingType.currentValue != 0 &&\n this.APP.sldExistingLength2.currentValue > 0;\n let rakeCutCondition =\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE ||\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE;\n if (cutoutCondition || rakeCutCondition) {\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n mesh.position.set(\n offsetX + this.MANAGER.patiosGroup.position.x,\n offsetY,\n offsetZ + this.roofGroup.position.z\n );\n mesh.updateMatrix();\n let meshResult = mesh.clone();\n\n if (cutoutCondition) {\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(\n CSG.fromMesh(meshResult).subtract(csgObj),\n mesh.matrix\n );\n }\n }\n if (rakeCutCondition) {\n if (this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE) {\n meshResult = CSG.toMesh(\n CSG.fromMesh(meshResult).subtract(this.csg_rakecutLeft),\n mesh.matrix\n );\n }\n if (this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE) {\n meshResult = CSG.toMesh(\n CSG.fromMesh(meshResult).subtract(this.csg_rakecutRight),\n mesh.matrix\n );\n }\n }\n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix));\n meshResult.applyMatrix4(matrixBefore);\n\n let buferGeo = new BufferGeometry().fromGeometry((meshResult as Mesh).geometry as Geometry);\n this.utils.changeGeoColor(buferGeo, new Vector3(0, 1, 0), UI.roofColor.toString());\n let newGeo = new Geometry().fromBufferGeometry(buferGeo);\n (meshResult as Mesh).geometry = newGeo;\n\n this.roofGroup.add(meshResult);\n } else {\n this.roofGroup.add(mesh);\n }\n }\n private addBargeCapping() {\n let mesh: Mesh;\n\n let extraWallWidth =\n this.APP.existingWallManager.geo_existingWallW1.width +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n\n let offsetXB =\n -this.totalBaySize / 2 - this.APP.sldLeftOverhang.currentValue;\n let offsetXL1 =\n -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue) +\n this.APP.sldExistingLength2.currentValue -\n extraWallWidth;\n let offsetXL2 = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n\n let offsetXR1 =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue -\n this.APP.sldExistingLength2.currentValue +\n extraWallWidth;\n let offsetXR2 =\n this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n\n let offsetZL = 0;\n let offsetZR = 0;\n\n let bargeBackLength = this.roofWidth;\n let scaleCutoutVer =\n this.utils.getHypotenuseByCos(\n this.APP.sldExistingWidth1.currentValue +\n this.geo_roofPanelBargeCappingLeft.width,\n this.APP.sltRoofPitch.currentValue\n ) / this.geo_roofPanelBargeCappingLeft.length;\n let scaleZLeft =\n this.utils.getHypotenuseByCos(\n this.roofLength,\n this.APP.sltRoofPitch.currentValue\n ) / this.geo_roofPanelBargeCappingLeft.length;\n let scaleZRight =\n this.utils.getHypotenuseByCos(\n this.roofLength,\n this.APP.sltRoofPitch.currentValue\n ) / this.geo_roofPanelBargeCappingLeft.length;\n\n let offsetY = 0;\n let bargeLeftLength = this.roofLength;\n let bargeRightLength = this.roofLength;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n // cutout\n if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.APP.sldExistingLength2.currentValue > 0 &&\n this.MANAGER.cutoutCondition &&\n (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH)\n ) {\n bargeLeftLength -= this.APP.sldExistingWidth1.currentValue;\n scaleZLeft =\n this.utils.getHypotenuseByCos(\n this.roofLength - this.APP.sldExistingWidth1.currentValue,\n this.APP.sltRoofPitch.currentValue\n ) / this.geo_roofPanelBargeCappingLeft.length;\n\n let bargeCutoutHorLength =\n this.APP.sldExistingLength2.currentValue +\n this.APP.sldLeftOverhang.currentValue -\n extraWallWidth;\n\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n offsetXB += this.APP.sldExistingLength2.currentValue;\n offsetXL1 =\n -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue) +\n this.APP.sldExistingLength2.currentValue;\n bargeBackLength -= this.APP.sldExistingLength2.currentValue;\n bargeCutoutHorLength += extraWallWidth;\n } else {\n bargeBackLength -=\n this.APP.sldExistingLength2.currentValue - extraWallWidth;\n offsetXB += this.APP.sldExistingLength2.currentValue - extraWallWidth;\n }\n\n offsetZL += this.utils.getHypotenuseByCos(\n this.APP.sldExistingWidth1.currentValue,\n this.APP.sltRoofPitch.currentValue\n );\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n offsetXL1 =\n -this.APP.sldExistingLength.currentValue / 2 - extraWallWidth;\n bargeCutoutHorLength =\n (this.roofWidth -\n (this.APP.sldExistingLength.currentValue +\n this.APP.existingWallManager.geo_existingWallW1.width * 2)) /\n 2 -\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n }\n\n bargeBackLength -= this.APP.sldLeftOverhang.currentValue;\n offsetXL1 +=\n this.APP.sldLeftOverhang.currentValue -\n EXISTING_BUILDING_CONFIG.BARGE_ROOF_OFFSET_X;\n offsetXB += this.APP.sldLeftOverhang.currentValue;\n\n //cutout Hor\n let offsetZ = this.utils.getHypotenuseByCos(\n this.APP.sldExistingWidth1.currentValue,\n this.APP.sltRoofPitch.currentValue\n );\n mesh = new Mesh(\n this.geo_bargeCutoutLeftHor.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXL1, offsetY, offsetZ);\n mesh.scale.setX(\n bargeCutoutHorLength / this.geo_bargeCutoutLeftHor.length\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n\n //cutout Ver\n mesh = new Mesh(\n this.geo_roofPanelBargeCappingLeft.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXL1, offsetY, 0);\n mesh.scale.setZ(scaleCutoutVer);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n }\n if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.APP.sldExistingLength2.currentValue > 0 &&\n this.MANAGER.cutoutCondition &&\n (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH)\n ) {\n bargeRightLength -= this.APP.sldExistingWidth1.currentValue;\n let bargeCutoutHorLength =\n this.APP.sldExistingLength2.currentValue +\n this.APP.sldRightOverhang.currentValue -\n extraWallWidth;\n //scaleXB = (this.roofWidth - this.APP.sldExistingLength2.currentValue + extraWallWidth) / this.geo_roofPanelBargeCappingBack.length;\n //bargeBackLength -= (this.APP.sldExistingLength2.currentValue - extraWallWidth);\n scaleZRight =\n this.utils.getHypotenuseByCos(\n this.roofLength - this.APP.sldExistingWidth1.currentValue,\n this.APP.sltRoofPitch.currentValue\n ) / this.geo_roofPanelBargeCappingRight.length;\n offsetZR += this.utils.getHypotenuseByCos(\n this.APP.sldExistingWidth1.currentValue,\n this.APP.sltRoofPitch.currentValue\n );\n\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n //scaleXB = (this.roofWidth - this.APP.sldExistingLength2.currentValue) / this.geo_roofPanelBargeCappingBack.length;\n bargeBackLength -= this.APP.sldExistingLength2.currentValue;\n offsetXR1 -= extraWallWidth;\n\n bargeCutoutHorLength += extraWallWidth;\n } else {\n bargeBackLength -=\n this.APP.sldExistingLength2.currentValue - extraWallWidth;\n }\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n offsetXR1 =\n this.APP.sldExistingLength.currentValue / 2 +\n this.APP.existingWallManager.geo_existingWallW1.width +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n bargeCutoutHorLength =\n (this.roofWidth -\n (this.APP.sldExistingLength.currentValue +\n this.APP.existingWallManager.geo_existingWallW1.width * 2)) /\n 2 -\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n }\n\n bargeBackLength -= this.APP.sldRightOverhang.currentValue;\n offsetXR1 -=\n this.APP.sldRightOverhang.currentValue -\n EXISTING_BUILDING_CONFIG.BARGE_ROOF_OFFSET_X;\n\n //cutout hor\n let offsetZ = this.utils.getHypotenuseByCos(\n this.APP.sldExistingWidth1.currentValue,\n this.APP.sltRoofPitch.currentValue\n );\n mesh = new Mesh(\n this.geo_bargeCutoutRightHor.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXR1, offsetY, offsetZ);\n mesh.scale.setX(\n bargeCutoutHorLength / this.geo_bargeCutoutRightHor.length\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n\n //cutout ver\n mesh = new Mesh(\n this.geo_roofPanelBargeCappingRight.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXR1, offsetY, 0);\n mesh.scale.setZ(scaleCutoutVer);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n }\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES &&\n this.APP.sldExistingLength2.currentValue > 0 &&\n this.MANAGER.cutoutCondition &&\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n offsetXB = -this.APP.sldExistingLength.currentValue / 2 - extraWallWidth;\n //scaleXB = (this.APP.sldExistingLength.currentValue + this.APP.existingWallManager.geo_existingWallW1.width * 2 + EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK*2)/this.geo_roofPanelBargeCappingBack.length;\n bargeBackLength =\n this.APP.sldExistingLength.currentValue + extraWallWidth * 2;\n }\n //Rakecut\n if (\n this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE ||\n this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP\n ) {\n bargeLeftLength -= this.APP.sldLeftCutVertical.currentValue;\n }\n if (\n this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE ||\n this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP\n ) {\n bargeRightLength -= this.APP.sldRightCutVertical.currentValue;\n }\n\n scaleZLeft =\n this.utils.getHypotenuseByCos(\n bargeLeftLength,\n this.APP.sltRoofPitch.currentValue\n ) / this.geo_roofPanelBargeCappingLeft.length;\n scaleZRight =\n this.utils.getHypotenuseByCos(\n bargeRightLength,\n this.APP.sltRoofPitch.currentValue\n ) / this.geo_roofPanelBargeCappingLeft.length;\n\n //left\n mesh = new Mesh(\n this.geo_roofPanelBargeCappingLeft.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXL2, offsetY, offsetZL);\n mesh.scale.setZ(scaleZLeft);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n\n //right\n mesh = new Mesh(\n this.geo_roofPanelBargeCappingRight.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXR2, offsetY, offsetZR);\n mesh.scale.setZ(scaleZRight);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n\n //back\n mesh = new Mesh(\n this.geo_roofPanelBargeCappingBack.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.setX(offsetXB);\n mesh.scale.setX(\n bargeBackLength / this.geo_roofPanelBargeCappingBack.length\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n }\n // private addBargeAngleRakecut() {\n // if (this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.ANGLE && this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.ANGLE) {\n // return;\n // }\n\n // let offsetY = 0;\n // let offsetZ = (this.APP.sldSpan.currentValue\n // + this.APP.sldMultiSpan.currentValue\n // + this.APP.sldFrontOverhang.currentValue\n // + this.APP.sldBackOverhang.currentValue) / this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n // let views: Print2DView[] = [\n // { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n // { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n // { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n // { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n // ];\n\n // if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n // let length = Math.sqrt(Math.pow(this.APP.sldLeftCutVertical.currentValue, 2) + Math.pow(this.APP.sldLeftCutHorizontal.currentValue, 2));\n // let scaleZ = length / this.geo_bargeRakecutLeft.length;\n\n // let rotY = Math.atan(this.APP.sldLeftCutHorizontal.currentValue / this.APP.sldLeftCutVertical.currentValue);\n\n // let offsetX = -this.totalBaySize / 2 - this.APP.sldLeftOverhang.currentValue + this.APP.sldLeftCutHorizontal.currentValue;\n // let mesh = new Mesh(this.geo_bargeRakecutLeft.geometry, MaterialManager.Instance().BARGE);\n // mesh.position.set(offsetX, offsetY, offsetZ);\n // mesh.scale.setZ(scaleZ);\n // mesh.rotateY(rotY);\n // mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n // this.roofGroup.add(mesh);\n // }\n // if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n // let length = Math.sqrt(Math.pow(this.APP.sldRightCutVertical.currentValue, 2) + Math.pow(this.APP.sldRightCutHorizontal.currentValue, 2));\n // let scaleZ = length / this.geo_bargeRakecutLeft.length;\n\n // let rotY = Math.atan(this.APP.sldRightCutHorizontal.currentValue / this.APP.sldRightCutVertical.currentValue);\n\n // let offsetX = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue - this.APP.sldRightCutHorizontal.currentValue;\n // let mesh = new Mesh(this.geo_bargeRakecutRight.geometry, MaterialManager.Instance().BARGE);\n // mesh.position.set(offsetX, offsetY, offsetZ);\n // mesh.scale.setZ(scaleZ);\n // mesh.rotateY(-rotY);\n // mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n // this.roofGroup.add(mesh);\n // }\n // }\n private addGutterStepRakecut() {\n if (\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.STEP &&\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.STEP\n ) {\n return;\n }\n let mesh: Mesh;\n\n let offsetXLL = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n let offsetXLR = offsetXLL + this.APP.sldLeftCutHorizontal.currentValue;\n let offsetXRR = this.totalBaySize / 2 + UI.overhangRight;\n let offsetXRL = offsetXRR - this.APP.sldRightCutHorizontal.currentValue;\n let offsetY = 0;\n let offsetLZ =\n (this.APP.sldFrontOverhang.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue +\n this.APP.sldBackOverhang.currentValue -\n this.APP.sldLeftCutVertical.currentValue -\n 50) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n let offsetRZ =\n (this.APP.sldFrontOverhang.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue +\n this.APP.sldBackOverhang.currentValue -\n this.APP.sldRightCutVertical.currentValue -\n 50) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n let gutterLengthL = this.APP.sldLeftCutHorizontal.currentValue;\n let gutterLengthR = this.APP.sldRightCutHorizontal.currentValue;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n let scaleX = gutterLengthL / this.geo_gutterBack.length;\n mesh = new Mesh(\n this.geo_gutterBack.geometry,\n MaterialManager.Instance().GUTTER\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GUTTER_PATIOS,\n views: views,\n };\n mesh.position.set(offsetXLL, 0, 0);\n mesh.scale.setX(scaleX);\n\n let endCapMesh = new Mesh(\n this.geo_gutterCap.geometry,\n MaterialManager.Instance().GUTTER\n );\n endCapMesh.position.set(offsetXLL, 0, 0);\n\n let endCapMesh2 = new Mesh(\n this.geo_gutterCap.geometry,\n MaterialManager.Instance().GUTTER\n );\n endCapMesh2.position.set(offsetXLR, 0, 0);\n\n let gutterGroup = new Group();\n gutterGroup.add(mesh, endCapMesh, endCapMesh2);\n gutterGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GUTTER_PATIOS,\n views: views,\n };\n gutterGroup.position.set(0, offsetY, offsetLZ);\n gutterGroup.rotation.set(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue),\n 0,\n 0\n );\n this.roofGroup.add(gutterGroup);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n let scaleX = gutterLengthR / this.geo_gutterBack.length;\n mesh = new Mesh(\n this.geo_gutterBack.geometry,\n MaterialManager.Instance().GUTTER\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GUTTER_PATIOS,\n views: views,\n };\n mesh.position.set(offsetXRL, 0, 0);\n mesh.scale.setX(scaleX);\n\n let endCapMesh = new Mesh(\n this.geo_gutterCap.geometry,\n MaterialManager.Instance().GUTTER\n );\n endCapMesh.position.set(offsetXRL, 0, 0);\n\n let endCapMesh2 = new Mesh(\n this.geo_gutterCap.geometry,\n MaterialManager.Instance().GUTTER\n );\n endCapMesh2.position.set(offsetXRR, 0, 0);\n\n let gutterGroup = new Group();\n gutterGroup.add(mesh, endCapMesh, endCapMesh2);\n gutterGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GUTTER_PATIOS,\n views: views,\n };\n gutterGroup.position.set(0, offsetY, offsetRZ);\n gutterGroup.rotation.set(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue),\n 0,\n 0\n );\n this.roofGroup.add(gutterGroup);\n }\n }\n private addGutterAngleRakecut() {\n if (\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.ANGLE &&\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.ANGLE\n ) {\n return;\n }\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n let exLength = 300;\n let rc_offsetXL = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n let rc_offsetXR =\n this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n const rc_offsetZL =\n (this.APP.sldFrontOverhang.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue +\n this.APP.sldBackOverhang.currentValue -\n this.APP.sldLeftCutVertical.currentValue -\n CONST.GUTTER_ROOF_OFFSET_Z) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n const rc_offsetZR =\n (this.APP.sldFrontOverhang.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue +\n this.APP.sldBackOverhang.currentValue -\n this.APP.sldRightCutVertical.currentValue -\n CONST.GUTTER_ROOF_OFFSET_Z) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n const rc_offsetY = 0;\n\n let rc_rotYL = Math.atan(\n this.APP.sldLeftCutVertical.currentValue /\n this.APP.sldLeftCutHorizontal.currentValue\n );\n let rc_lengthL =\n exLength +\n Math.sqrt(\n Math.pow(this.APP.sldLeftCutVertical.currentValue, 2) +\n Math.pow(this.APP.sldLeftCutHorizontal.currentValue, 2)\n );\n let rc_rotYR = Math.atan(\n this.APP.sldRightCutVertical.currentValue /\n this.APP.sldRightCutHorizontal.currentValue\n );\n let rc_lengthR =\n exLength +\n Math.sqrt(\n Math.pow(this.APP.sldRightCutVertical.currentValue, 2) +\n Math.pow(this.APP.sldRightCutHorizontal.currentValue, 2)\n );\n\n if (\n this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE &&\n this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE\n ) {\n let gutterRakecutGroupLeft = this.utils.createGutterGroup(\n this.gutterRakecutLeftInfo,\n this.geo_gutterCap,\n rc_lengthL,\n new Vector3(rc_offsetXL, rc_offsetY, rc_offsetZL),\n new Vector3(0, -rc_rotYL, 0),\n views,\n 1,\n true,\n false,\n this.csgCutGutterLeft2,\n this.roofGroup\n );\n let gutterRakecutGroupRight = this.utils.createGutterGroup(\n this.gutterRakecutRightInfo,\n this.geo_gutterCap,\n rc_lengthR,\n new Vector3(rc_offsetXR, rc_offsetY, rc_offsetZR),\n new Vector3(0, rc_rotYR, 0),\n views,\n 1,\n true,\n false,\n this.csgCutGutterRight2,\n this.roofGroup\n );\n\n this.roofGroup.add(gutterRakecutGroupLeft, gutterRakecutGroupRight);\n } else {\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n let gutterRakecutGroup = this.utils.createGutterGroup(\n this.gutterRakecutLeftInfo,\n this.geo_gutterCap,\n rc_lengthL,\n new Vector3(rc_offsetXL, rc_offsetY, rc_offsetZL),\n new Vector3(0, -rc_rotYL, 0),\n views,\n 1,\n true,\n false,\n this.csgCutGutterLeft2,\n this.roofGroup\n );\n\n this.roofGroup.add(gutterRakecutGroup);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n let gutterRakecutGroup = this.utils.createGutterGroup(\n this.gutterRakecutRightInfo,\n this.geo_gutterCap,\n rc_lengthR,\n new Vector3(rc_offsetXR, rc_offsetY, rc_offsetZR),\n new Vector3(0, rc_rotYR, 0),\n views,\n 1,\n true,\n false,\n this.csgCutGutterRight2,\n this.roofGroup\n );\n\n this.roofGroup.add(gutterRakecutGroup);\n }\n }\n }\n private addBargeStepRakecut() {\n if (\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.STEP &&\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.STEP\n ) {\n return;\n }\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n let offsetXL =\n this.APP.dialogEditBay.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue;\n let offsetXR =\n this.APP.dialogEditBay.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue;\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n let offsetZ = this.utils.getHypotenuseByCos(\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldBackOverhang.currentValue -\n this.APP.sldLeftCutVertical.currentValue,\n this.APP.sltRoofPitch.currentValue\n );\n let scaleZ =\n this.APP.sldLeftCutVertical.currentValue /\n this.geo_roofPanelBargeCappingLeft.length;\n\n let bargeVer = new Mesh(\n this.geo_roofPanelBargeCappingLeft.geometry,\n MaterialManager.Instance().BARGE\n );\n bargeVer.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n bargeVer.position.set(\n -offsetXL -\n CONST.BARGE_ROOF_OFFSET_X +\n this.APP.sldLeftCutHorizontal.currentValue,\n 0,\n offsetZ\n );\n bargeVer.scale.set(1, 1, scaleZ);\n\n this.roofGroup.add(bargeVer);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n let offsetZ = this.utils.getHypotenuseByCos(\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldBackOverhang.currentValue -\n this.APP.sldRightCutVertical.currentValue,\n this.APP.sltRoofPitch.currentValue\n );\n let scaleZ =\n this.APP.sldRightCutVertical.currentValue /\n this.geo_roofPanelBargeCappingLeft.length;\n\n let bargeVer = new Mesh(\n this.geo_roofPanelBargeCappingRight.geometry,\n MaterialManager.Instance().BARGE\n );\n bargeVer.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n bargeVer.position.set(\n offsetXR -\n this.APP.sldRightCutHorizontal.currentValue +\n CONST.BARGE_ROOF_OFFSET_X,\n 0,\n offsetZ\n );\n bargeVer.scale.set(1, 1, scaleZ);\n this.roofGroup.add(bargeVer);\n }\n }\n public addGutter() {\n let offsetXL = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n let offsetY = 0;\n let offsetZ =\n (this.APP.sldFrontOverhang.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue +\n this.APP.sldBackOverhang.currentValue -\n CONST.GUTTER_ROOF_OFFSET_Z) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n let gutterLength = this.roofWidth;\n let exLength = 300; //Math.tan(extraAngle) * this.gutterInfo.width;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n //Rakecut\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n offsetXL += this.APP.sldLeftCutHorizontal.currentValue - exLength;\n gutterLength -= this.APP.sldLeftCutHorizontal.currentValue - exLength;\n } else if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n offsetXL += this.APP.sldLeftCutHorizontal.currentValue;\n gutterLength -= this.APP.sldLeftCutHorizontal.currentValue;\n }\n\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n gutterLength -= this.APP.sldRightCutHorizontal.currentValue - exLength;\n } else if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n gutterLength -= this.APP.sldRightCutHorizontal.currentValue;\n }\n if (\n this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE &&\n this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE\n ) {\n let gutterMesh = new Mesh(\n this.geo_gutterBack.geometry,\n MaterialManager.Instance().GUTTER\n );\n gutterMesh.scale.setX(gutterLength / this.geo_gutterBack.length);\n gutterMesh.updateMatrix();\n let matrixBefore = gutterMesh.matrix.clone();\n\n gutterMesh.position.set(offsetXL, offsetY, offsetZ);\n gutterMesh.rotation.set(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue),\n 0,\n 0\n );\n gutterMesh.updateMatrix();\n\n let meshClipped = CSG.toMesh(\n CSG.fromMesh(gutterMesh).subtract(this.csgCutGutterLeft1),\n gutterMesh.matrix\n );\n meshClipped = CSG.toMesh(\n CSG.fromMesh(meshClipped).subtract(this.csgCutGutterRight1),\n gutterMesh.matrix\n );\n meshClipped.applyMatrix4(new Matrix4().getInverse(gutterMesh.matrix));\n meshClipped.applyMatrix4(matrixBefore);\n meshClipped.material = gutterMesh.material;\n\n let gutterGroup = this.utils.createGutterGroupWithMesh(\n meshClipped,\n this.geo_gutterCap,\n gutterLength,\n new Vector3(offsetXL, offsetY, offsetZ),\n new Vector3(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue),\n 0,\n 0\n ),\n views,\n 1,\n false,\n false\n );\n\n this.roofGroup.add(gutterGroup);\n } else if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n let gutterGroup = this.utils.createGutterGroup(\n this.geo_gutterBack,\n this.geo_gutterCap,\n gutterLength,\n new Vector3(offsetXL, offsetY, offsetZ),\n new Vector3(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue),\n 0,\n 0\n ),\n views,\n 1,\n false,\n true,\n this.csgCutGutterLeft1,\n this.roofGroup\n );\n\n this.roofGroup.add(gutterGroup);\n } else if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n let gutterGroup = this.utils.createGutterGroup(\n this.geo_gutterBack,\n this.geo_gutterCap,\n gutterLength,\n new Vector3(offsetXL, offsetY, offsetZ),\n new Vector3(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue),\n 0,\n 0\n ),\n views,\n 1,\n true,\n false,\n this.csgCutGutterRight1,\n this.roofGroup\n );\n\n this.roofGroup.add(gutterGroup);\n } else {\n let gutterGroup = this.utils.createGutterGroup(\n this.geo_gutterBack,\n this.geo_gutterCap,\n gutterLength,\n new Vector3(offsetXL, offsetY, offsetZ),\n new Vector3(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue),\n 0,\n 0\n ),\n views,\n 1,\n true,\n true\n );\n this.roofGroup.add(gutterGroup);\n }\n }\n private totalHeightFromEaveHeightToTopOfExistingRoof(){\n const height = \n this.geometryManager.EAVE.EAVE.height \n + UI.fasciaDepth \n + UI.eaveWidth * this.utils.tan(UI.existingRoofPitch) \n + this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.height / this.utils.cos(UI.existingRoofPitch)\n\n return height\n }\n private totalHeightFromEaveHeightToTopOfFlyoverBraket(){\n const height = this.totalHeightFromEaveHeightToTopOfExistingRoof() + UI.braketHeight - FIT_FLYOVER_BRAKET_ON_ROOF;\n\n return height\n }\n public getRoofOffsetY() {\n return (\n this.APP.sldExistingWallHeight.currentValue +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geometryManager.getBeam().height +\n this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n this.APP.sldBackOverhang.currentValue\n );\n }\n public destroy(): void {\n this.unregisterEvent();\n }\n public onColorChanged() {\n if(this.utils && this.geo_RoofPanel.geometry){\n this.utils.changeGeoColor(this.geo_RoofPanel.geometry, new Vector3(0, 1, 0), UI.roofColor.toString());\n }\n }\n private registerEvent(): void {\n this.eventHandleId = this.onColorChanged.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sltColourRoof\n ];\n this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n\n this.controlsToRegisterEvent2 = [\n this.APP.sltRoofSheetingType,\n this.APP.sltRoofThickness,\n this.APP.sltBargeType,\n this.APP.sltDripBarge,\n this.APP.sltGutterType,\n ];\n this.controlsToRegisterEvent2.forEach((c) =>\n c.addAction(this.objectSizeChangedHandle)\n );\n }\n private unregisterEvent(): void {\n this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach((c) =>\n c.removeAction(this.objectSizeChangedHandle)\n );\n this.controlsToRegisterEvent2 = undefined;\n }\n private objectSizeChanged() {\n this.optimize().then(() => {\n this.load();\n });\n }\n public uiChanged(): void {\n this.load();\n }\n uiCHangedDefer() {\n if (this.APP.sltCutOut.currentValue == 1) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => {\n this.load();\n }, this.deferTimeout);\n } else {\n this.load();\n }\n }\n}\n","import {\n HomeComponent as AppComponent,\n HomeComponent,\n} from \"../../containers/home/home.component\";\nimport {\n Scene,\n Material,\n Mesh,\n BufferGeometry,\n Box3,\n Group,\n LineSegments,\n LineBasicMaterial,\n Plane,\n Vector3,\n BoxHelper,\n Geometry,\n BoxBufferGeometry,\n Object3D,\n Matrix4,\n Color,\n} from \"three\";\nimport { Util, getBeamEndCapCode } from \"../utils\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport {\n CONFIG as env,\n GEOMETRY_TYPE,\n GEOMETRY_CATEGORY,\n} from \"src/app/app.config\";\nimport {\n GeometryInfo,\n Printing2DGeometry,\n Printing2DLine,\n Printing2DGeometryType,\n Print2DView,\n ViewType,\n LineType,\n} from \"src/app/core/models\";\nimport { PatiosFreeStandingManager } from \".\";\nimport { UI } from \"../ui\";\nimport _ from \"lodash\";\nimport { EXISTING_BUILDING_CONFIG } from \"src/app/app.constants\";\n\nexport class ColumnAndPurlinManager {\n private scene: Group;\n private APP: AppComponent;\n private material: Material;\n //private beamMaterial: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private geo_superiorPost: GeometryInfo;\n public geo_superiorBeam: GeometryInfo;\n private geo_beamEndCap: GeometryInfo;\n private geo_bracket: GeometryInfo;\n private geo_groundBase: GeometryInfo;\n\n private geoBeamJoint: GeometryInfo;\n private geoHouseBeamJoint: GeometryInfo;\n\n private eventHandleId: any;\n private totalBaySize: number;\n private frontPostHeight: number;\n\n private geo_downPipe: GeometryInfo;\n private geo_downPipeL: GeometryInfo;\n private downpipeGroup: Group;\n private objectSizeChangedHandle: any;\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n\n private geo_RafterBeam: GeometryInfo;\n private geo_rafterBeamEndCap: GeometryInfo;\n\n private MANAGER: PatiosFreeStandingManager;\n\n constructor(app: AppComponent, manager: PatiosFreeStandingManager) {\n this.APP = app;\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.MANAGER = manager;\n this.scene = manager.patiosGroup;\n this.material = MaterialManager.Instance().DEFAULT.clone();\n //this.beamMaterial = MaterialManager.Instance().DEFAULT.clone();\n\n this.registerEvent();\n }\n\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n let bracketHeight =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height / 2;\n let bracketWidth = this.geometryManager.FLY_OVER_BRACKET.S65x3.width;\n\n this.geo_bracket = new GeometryInfo();\n this.geo_bracket.geometry =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.geometry\n .clone()\n .rotateX(Math.PI / 2)\n .translate(bracketWidth / 2, bracketHeight, bracketWidth / 2);\n this.geo_bracket.width =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.width;\n this.geo_bracket.length =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.length;\n this.geo_bracket.height =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n this.geo_superiorBeam = this.geometryManager.getBeam();\n this.geo_superiorBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_superiorBeam.length / 2,\n this.geo_superiorBeam.height / 2,\n this.geo_superiorBeam.width / 2\n );\n\n this.geoBeamJoint = this.geometryManager.getBeamJoint();\n this.geoHouseBeamJoint = this.geometryManager.getHouseBeamJoint();\n\n this.geo_RafterBeam = this.geometryManager.getBeam();\n this.geo_RafterBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_RafterBeam.length / 2,\n -this.geo_RafterBeam.height / 2,\n this.geo_RafterBeam.width / 2\n );\n\n this.geo_rafterBeamEndCap = this.geometryManager.getBeamEndCap();\n this.geo_rafterBeamEndCap.geometry.translate(\n 0,\n -this.geo_rafterBeamEndCap.height / 2,\n this.geo_rafterBeamEndCap.length / 2\n );\n\n this.geo_beamEndCap = this.geometryManager.getBeamEndCap();\n this.geo_beamEndCap.geometry.translate(\n 0,\n this.geo_beamEndCap.height / 2,\n 0\n );\n\n this.geo_superiorPost = this.geometryManager.getPost();\n this.geo_superiorPost.geometry\n .rotateX(Math.PI / 2)\n .translate(\n this.geo_superiorPost.width / 2,\n this.geo_superiorPost.height / 2,\n this.geo_superiorPost.width / 2\n );\n\n this.geo_groundBase = new GeometryInfo();\n this.geo_groundBase.width = 1000;\n this.geo_groundBase.height = 1;\n this.geo_groundBase.length = 1000;\n this.geo_groundBase.geometry = new BoxBufferGeometry(\n this.geo_groundBase.width,\n this.geo_groundBase.height,\n this.geo_groundBase.length\n );\n this.geo_groundBase.geometry.translate(\n 0,\n 0,\n this.geo_groundBase.length / 2\n );\n\n this.geo_downPipe = this.geometryManager.getDownPipe();\n this.geo_downPipeL = this.geometryManager.getDownPipeL();\n\n this.scene.remove(\n ...this.scene.children.filter(\n (c) => c.userData.type == GEOMETRY_TYPE.DOWNPIPE\n )\n );\n this.downpipeGroup = new Group();\n this.downpipeGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeGroup);\n\n resolve();\n });\n }\n\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SUPERIOR_POST\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.MESH_OUTLINE\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == \"COLUMN_OUTLINE\"\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.GROUND_BASE\n )\n );\n this.downpipeGroup.children = [];\n\n // this.outlineGroup = new Group();\n // this.outlineGroup.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.MESH_OUTLINE };\n // this.scene.add(this.outlineGroup);\n\n this.totalBaySize = 0;\n for (let b of this.APP.dialogEditBay.listBay) {\n this.totalBaySize += b.value;\n }\n\n this.addSuperiorBeam({ front: true });\n this.addSuperiorBeam({ back: true });\n if (this.APP.sldMultiSpan.currentValue > 0) {\n this.addSuperiorBeam({ multiSpan: true });\n }\n this.addGround();\n\n let offsetX = -this.totalBaySize / 2;\n let first = true;\n let last = false;\n for (let i = 0; i <= this.APP.dialogEditBay.listBay.length; i++) {\n if (i == this.APP.dialogEditBay.listBay.length) {\n last = true;\n }\n this.addPost(offsetX, { back: true, first, last });\n this.addPost(offsetX, { front: true, first, last });\n\n if (this.APP.sldMultiSpan.currentValue > 0) {\n this.addPost(offsetX, { multiSpan: true, first, last });\n }\n if (i < this.APP.dialogEditBay.listBay.length) {\n let b = this.APP.dialogEditBay.listBay[i];\n offsetX += b.value;\n }\n first = false;\n }\n\n this.showBeamOutline();\n this.addDownPipe();\n this.updateUI();\n resolve();\n });\n }\n public showBeamOutline() {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.BEAM_OUTLINE\n )\n );\n\n if (!UI.beamLayoutShow) return;\n\n const objs = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n const meshes = [];\n objs.forEach((el) => {\n if (el.type == \"Group\") {\n meshes.push(\n ...el.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n }\n });\n\n for (let o of meshes) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n o as Mesh,\n 10\n );\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n\n var line = new LineSegments(\n outlineGeo,\n MaterialManager.Instance().BEAM_OUTLINE\n );\n line.userData = { type: GEOMETRY_TYPE.BEAM_OUTLINE };\n this.APP.scene.add(line);\n }\n }\n public addEndRafterBeam(info: any) {\n const { numOfInternalRafter, numOfSpanBeam, numOfMultiSpanBeam } = info;\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM ||\n x.userData.type == GEOMETRY_TYPE.SUPERIOR_INTERNAL_BEAM\n )\n );\n // Add end rafter for two end side\n // Left side\n this.addRafterSuperiorBeam(-this.totalBaySize / 2, {\n span: true,\n first: true,\n last: false,\n });\n if (UI.multiSpan) {\n this.addRafterSuperiorBeam(-this.totalBaySize / 2, {\n multiSpan: true,\n first: true,\n last: false,\n });\n }\n\n // Right side\n this.addRafterSuperiorBeam(this.totalBaySize / 2, {\n span: true,\n first: false,\n last: true,\n });\n if (UI.multiSpan) {\n this.addRafterSuperiorBeam(this.totalBaySize / 2, {\n multiSpan: true,\n first: false,\n last: true,\n });\n }\n\n this.addInternalRafterBeam(\n numOfInternalRafter,\n numOfSpanBeam,\n numOfMultiSpanBeam\n );\n }\n private addInternalRafterBeam(\n numOfRafter: number,\n numOfSpanBeam: number,\n numOfMultiSpanBeam: number\n ) {\n let offsetX = -this.totalBaySize / 2;\n\n const mainRoofLeft = offsetX;\n const mainRoofRight = offsetX + UI.totalBayLength;\n const listRafterPos = [];\n const rafterSpacing = UI.totalBayLength / (numOfRafter + 1);\n for (let i = 0; i < numOfRafter; i++) {\n const offsetXRafter = offsetX + (i + 1) * rafterSpacing;\n\n listRafterPos.push({\n offsetX: offsetXRafter,\n isMainRoof:\n offsetXRafter >= mainRoofLeft && offsetXRafter <= mainRoofRight,\n });\n }\n\n listRafterPos.forEach((el) => {\n this.addRafterSuperiorBeam(el.offsetX, {\n span: true,\n first: false,\n last: false,\n });\n if (UI.multiSpan) {\n this.addRafterSuperiorBeam(el.offsetX, {\n multiSpan: true,\n first: false,\n last: false,\n });\n }\n });\n\n // Add internal beam in here\n this.addInternalBeam(numOfRafter, numOfSpanBeam, numOfMultiSpanBeam);\n }\n private addInternalBeam(\n numOfRafter: number,\n numOfSpanBeam: number = 0,\n numOfMultiSpanBeam: number = 0\n ) {\n if (UI.span > 0) {\n const internalBeamSpacing = UI.span / (numOfSpanBeam + 1);\n for (let i = 0; i < numOfSpanBeam; i++) {\n this.addInternalSuperiorBeam(\n numOfRafter,\n internalBeamSpacing * (i + 1)\n );\n }\n }\n if (UI.multiSpan > 0) {\n const internalBeamSpacing = UI.multiSpan / (numOfMultiSpanBeam + 1);\n for (let i = 0; i < numOfMultiSpanBeam; i++) {\n this.addInternalSuperiorBeam(\n numOfRafter,\n UI.span + internalBeamSpacing * (i + 1)\n );\n }\n }\n }\n public addInternalSuperiorBeam(numOfRafter: number, offsetZ: number) {\n const rafterSpacing = this.totalBaySize / (numOfRafter + 1);\n const beamWidth = this.geo_superiorBeam.width;\n for (let i = 0; i <= numOfRafter; i++) {\n let startX = -this.totalBaySize / 2 + i * rafterSpacing;\n let endX = -this.totalBaySize / 2 + (i + 1) * rafterSpacing;\n\n if (i == 0) {\n startX += beamWidth;\n } else {\n startX += beamWidth / 2;\n }\n\n if (i == numOfRafter) {\n endX -= beamWidth;\n } else {\n endX -= beamWidth / 2;\n }\n\n let scaleX = Math.abs(endX - startX) / this.geo_superiorBeam.length;\n\n let views: Print2DView[] = [\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n const offsetY = this.utils.getHeightByAngle(\n this.APP.sldBuildingHeight.currentValue - this.geo_superiorBeam.height,\n offsetZ + beamWidth / 2,\n UI.patiosPitch,\n -1\n );\n\n let mesh = new Mesh(\n this.geo_superiorBeam.geometry,\n MaterialManager.Instance().BEAM\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_INTERNAL_BEAM,\n views: views,\n };\n mesh.position.set(startX, 0, 0);\n mesh.scale.setX(scaleX);\n\n let capL = new Mesh(\n this.geo_beamEndCap.geometry,\n UI.beamLayoutShow\n ? MaterialManager.Instance().BRACKET_WARNING.clone()\n : MaterialManager.Instance().BEAM.clone()\n );\n capL.position.set(\n startX + this.geo_beamEndCap.length / 2 - 2,\n 0,\n this.geo_beamEndCap.width / 2\n );\n capL.rotateY(Math.PI / 2);\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n let capR = new Mesh(\n this.geo_beamEndCap.geometry,\n UI.beamLayoutShow\n ? MaterialManager.Instance().BRACKET_WARNING.clone()\n : MaterialManager.Instance().BEAM.clone()\n );\n capR.position.set(\n endX - this.geo_beamEndCap.length / 2 + 2,\n 0,\n this.geo_beamEndCap.width / 2\n );\n capR.rotateY(-Math.PI / 2);\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_INTERNAL_BEAM,\n views: views,\n };\n beamGroup.position.set(0, offsetY, offsetZ - beamWidth / 2);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n\n this.scene.add(beamGroup);\n }\n }\n /**\n *\n * @param offsetX : Position x of rafter beam\n */\n public addRafterSuperiorBeam(offsetX, userDataPos: any) {\n let mesh;\n let offsetXL = 0;\n let offsetXR =\n (this.APP.sldSpan.currentValue -\n (UI.multiSpan\n ? this.geo_superiorBeam.width * 1.5\n : this.geo_superiorBeam.width * 2)) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n if (userDataPos.multiSpan) {\n offsetXR =\n (UI.multiSpan - this.geo_superiorBeam.width * 1.5) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n }\n\n let offsetZ = 0;\n let offsetY = 0;\n\n let scaleX =\n (UI.span -\n (UI.multiSpan\n ? this.geo_superiorBeam.width * 1.5\n : this.geo_superiorBeam.width * 2)) /\n this.utils.cos(UI.patiosPitch) /\n this.geo_RafterBeam.length;\n if (userDataPos.multiSpan) {\n scaleX =\n (UI.multiSpan - this.geo_superiorBeam.width * 1.5) /\n this.utils.cos(UI.patiosPitch) /\n this.geo_RafterBeam.length;\n }\n\n scaleX +=\n (this.geo_RafterBeam.height * this.utils.tan(UI.patiosPitch)) /\n this.geo_RafterBeam.length;\n\n let views: Print2DView[];\n\n let material = MaterialManager.Instance().BEAM.clone();\n material.color = new Color(UI.beamColor);\n if (userDataPos.span) {\n let nBottom = new Vector3(0, 0, -1).normalize();\n let pBottom = new Vector3(0, 0, UI.span);\n let planeBottom = new Plane().setFromNormalAndCoplanarPoint(\n nBottom,\n pBottom\n );\n\n let nVer = new Vector3(0, 0, 1).normalize();\n let pVer = new Vector3(0, 0, this.geo_superiorBeam.width);\n let planeVer = new Plane().setFromNormalAndCoplanarPoint(nVer, pVer);\n\n material.clippingPlanes = [planeBottom, planeVer];\n\n mesh = new Mesh(this.geo_RafterBeam.geometry, material);\n\n offsetY =\n this.APP.sldBuildingHeight.currentValue -\n (UI.span -\n (UI.multiSpan\n ? this.geo_superiorBeam.width / 2\n : this.geo_superiorBeam.width)) *\n this.utils.tan(UI.patiosPitch);\n offsetZ =\n this.APP.sldSpan.currentValue -\n (UI.multiSpan\n ? this.geo_superiorBeam.width / 2\n : this.geo_superiorBeam.width);\n } else if (userDataPos.multiSpan) {\n let nBottom = new Vector3(0, 0, -1).normalize();\n let pBottom = new Vector3(\n 0,\n 0,\n UI.span + UI.multiSpan - this.geo_superiorBeam.width\n );\n let planeBottom = new Plane().setFromNormalAndCoplanarPoint(\n nBottom,\n pBottom\n );\n\n let nVer = new Vector3(0, 0, 1).normalize();\n let pVer = new Vector3(0, 0, UI.span + this.geo_superiorBeam.width / 2);\n let planeVer = new Plane().setFromNormalAndCoplanarPoint(nVer, pVer);\n\n material.clippingPlanes = [planeBottom, planeVer];\n\n mesh = new Mesh(this.geo_RafterBeam.geometry, material);\n\n offsetY =\n this.APP.sldBuildingHeight.currentValue -\n (UI.span + UI.multiSpan - this.geo_superiorBeam.width) *\n this.utils.tan(UI.patiosPitch);\n offsetZ = UI.span + UI.multiSpan - this.geo_superiorBeam.width;\n }\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM,\n position: userDataPos,\n views: views,\n };\n mesh.position.set(offsetXL, 0, 0);\n mesh.scale.setX(scaleX);\n\n let checkExec = /\\w{1}\\d{1,3}x(\\d{1,3})/.exec(this.geo_RafterBeam.name);\n let beamSize = checkExec && checkExec.length == 2 ? checkExec[1] : \"\";\n let lowerBraketName = getBeamEndCapCode(\n this.geo_rafterBeamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n );\n let higherBraketName = getBeamEndCapCode(\n this.geo_rafterBeamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n );\n\n let capL;\n let capR;\n if (userDataPos.span) {\n let matEndCap = UI.beamLayoutShow\n ? MaterialManager.Instance().BRACKET_WARNING.clone()\n : MaterialManager.Instance().BEAM.clone();\n\n capL = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capL.position.set(offsetXL - 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capL.scale.setY(\n (this.geo_RafterBeam.height /\n this.utils.cos(this.APP.sltRoofPitch.currentValue) +\n this.geo_rafterBeamEndCap.length *\n this.utils.tan(this.APP.sltRoofPitch.currentValue)) /\n this.geo_rafterBeamEndCap.height\n );\n capL.rotateY(Math.PI / 2);\n capL.rotateX(\n this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue)\n );\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: lowerBraketName,\n };\n\n capR = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capR.position.set(offsetXR + 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capR.scale.setY(\n (this.geo_RafterBeam.height /\n this.utils.cos(this.APP.sltRoofPitch.currentValue) +\n this.geo_rafterBeamEndCap.length *\n this.utils.tan(this.APP.sltRoofPitch.currentValue)) /\n this.geo_rafterBeamEndCap.height\n );\n capR.rotateY(-Math.PI / 2);\n capR.rotateX(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue)\n );\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: higherBraketName,\n };\n } else {\n let matEndCap = UI.beamLayoutShow\n ? MaterialManager.Instance().BRACKET_WARNING.clone()\n : MaterialManager.Instance().BEAM.clone();\n\n capL = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capL.position.set(offsetXL - 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capL.scale.setY(\n (this.geo_RafterBeam.height /\n this.utils.cos(this.APP.sltRoofPitch.currentValue) +\n this.geo_rafterBeamEndCap.length *\n this.utils.tan(this.APP.sltRoofPitch.currentValue)) /\n this.geo_rafterBeamEndCap.height\n );\n capL.rotateY(Math.PI / 2);\n capL.rotateX(\n this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue)\n );\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: lowerBraketName,\n };\n\n capR = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capR.position.set(offsetXR + 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capR.scale.setY(\n (this.geo_RafterBeam.height /\n this.utils.cos(this.APP.sltRoofPitch.currentValue) +\n this.geo_rafterBeamEndCap.length *\n this.utils.tan(this.APP.sltRoofPitch.currentValue)) /\n this.geo_rafterBeamEndCap.height\n );\n capR.rotateY(-Math.PI / 2);\n capR.rotateX(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue)\n );\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: higherBraketName,\n };\n }\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM,\n position: userDataPos,\n views: views,\n };\n let offsetXRafter = offsetX;\n if (userDataPos.last) {\n offsetXRafter = offsetX - this.geo_RafterBeam.width;\n } else if (!userDataPos.first && !userDataPos.last) {\n offsetXRafter = offsetX - this.geo_RafterBeam.width / 2;\n }\n beamGroup.position.set(offsetXRafter, offsetY, offsetZ);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n\n beamGroup.rotateY(Math.PI / 2);\n\n beamGroup.rotateZ(\n this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue)\n );\n\n this.scene.add(beamGroup);\n }\n private updateUI() {\n this.APP.sldMinHeight.setValue(_.round(this.frontPostHeight, 0));\n }\n private addDownPipe() {\n let offsetZ =\n this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + 100;\n let offsetX = -this.totalBaySize / 2 + 50;\n\n this.downpipeGroup.position.set(offsetX, 0, offsetZ);\n let offsetY =\n this.utils.getHeightByAngle(\n this.APP.sldBuildingHeight.currentValue,\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue,\n this.APP.sltRoofPitch.currentValue,\n -1\n ) + this.geometryManager.getRoofBase().height;\n\n if (this.APP.sltGutterType.currentValue == 0) {\n offsetY -= 80;\n } else {\n offsetY -= 60;\n }\n\n let userData = { type: GEOMETRY_TYPE.DOWNPIPE };\n\n if (this.APP.sldFrontOverhang.currentValue > 100) {\n offsetY -= 250;\n\n let meshLBottom = new Mesh(\n this.geo_downPipeL.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshLBottom.userData = userData;\n meshLBottom.position.set(0, offsetY, 20);\n meshLBottom.rotateY(Math.PI / 2);\n\n let meshLTop = new Mesh(\n this.geo_downPipeL.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshLTop.userData = userData;\n meshLTop.rotation.set(Math.PI, Math.PI / 2, 0);\n meshLTop.position.set(\n 0,\n offsetY + 230,\n this.APP.sldFrontOverhang.currentValue - 100\n );\n\n let meshPipeConnect = new Mesh(\n this.geo_downPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipeConnect.userData = userData;\n meshPipeConnect.rotation.set(Math.PI / 2, 0, 0);\n meshPipeConnect.position.set(0, offsetY + 115, 50);\n meshPipeConnect.scale.set(\n 1,\n (this.APP.sldFrontOverhang.currentValue - 140) /\n this.geo_downPipe.height,\n 1\n );\n\n this.downpipeGroup.add(meshLBottom, meshLTop, meshPipeConnect);\n }\n\n let scaleY = offsetY / this.geo_downPipe.height;\n\n let meshPipe = new Mesh(\n this.geo_downPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipe.userData = userData;\n meshPipe.scale.setY(scaleY);\n\n this.downpipeGroup.add(meshPipe);\n }\n private addGround() {\n let offsetZ = -this.APP.sldBackOverhang.currentValue;\n let width =\n this.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n let length =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldBackOverhang.currentValue;\n let offsetX =\n (this.APP.sldRightOverhang.currentValue -\n this.APP.sldLeftOverhang.currentValue) /\n 2;\n\n let base = new Mesh(\n this.geo_groundBase.geometry,\n MaterialManager.Instance().BASE\n );\n base.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GROUND_BASE,\n };\n base.position.set(offsetX, 0, offsetZ);\n base.scale.set(\n width / this.geo_groundBase.width,\n 1,\n length / this.geo_groundBase.length\n );\n\n this.scene.add(base);\n }\n private addPost(offsetX: number, userDataPos: any): void {\n let meshPost = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n meshPost.userData = {\n ...userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let postOffsetZ = 0;\n\n let scalePostY = 1;\n\n let views: Print2DView[];\n\n if (userDataPos.front) {\n postOffsetZ = this.APP.sldSpan.currentValue;\n this.frontPostHeight = this.utils.getHeightByAngle(\n this.APP.sldBuildingHeight.currentValue - this.geo_superiorBeam.height,\n this.APP.sldSpan.currentValue,\n this.APP.sltRoofPitch.currentValue,\n -1\n );\n\n scalePostY = this.frontPostHeight / this.geo_superiorPost.height;\n\n if (this.APP.sldMultiSpan.currentValue > 0) {\n postOffsetZ -= this.geo_superiorPost.width / 2;\n } else {\n postOffsetZ -= this.geo_superiorPost.width;\n }\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n if (userDataPos.back) {\n postOffsetZ = 0;\n scalePostY =\n (this.APP.sldBuildingHeight.currentValue -\n this.geo_superiorBeam.height) /\n this.geo_superiorPost.height;\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n if (userDataPos.multiSpan) {\n postOffsetZ =\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue -\n this.geo_superiorPost.width;\n scalePostY =\n this.utils.getHeightByAngle(\n this.APP.sldBuildingHeight.currentValue -\n this.geo_superiorBeam.height,\n this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue,\n this.APP.sltRoofPitch.currentValue,\n -1\n ) / this.geo_superiorPost.height;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n meshPost.userData.views = views;\n\n let postOffsetX = offsetX;\n\n // Dodge beam\n if (userDataPos.first) {\n postOffsetX += this.geo_superiorBeam.width;\n } else if (userDataPos.last) {\n postOffsetX -= this.geo_superiorPost.width + this.geo_superiorBeam.width;\n } else {\n postOffsetX -= this.geo_superiorPost.width / 2;\n }\n\n meshPost.position.set(postOffsetX, 0, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n\n this.scene.add(meshPost);\n }\n\n public addSuperiorBeam(userDataPos: any) {\n let offsetXL = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n let offsetXR =\n this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n let offsetZ = 0;\n let offsetY = 0;\n\n let beamLength =\n this.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n\n let views: Print2DView[];\n\n if (userDataPos.front) {\n offsetY = this.utils.getHeightByAngle(\n this.APP.sldBuildingHeight.currentValue - this.geo_superiorBeam.height,\n this.APP.sldSpan.currentValue +\n (UI.multiSpan ? this.geo_superiorBeam.width / 2 : 0),\n this.APP.sltRoofPitch.currentValue,\n -1\n );\n\n //this.APP.sldBuildingHeight.currentValue + this.getBracketHeight(this.APP.sldSpan.currentValue);\n offsetZ = this.APP.sldSpan.currentValue;\n if (this.APP.sldMultiSpan.currentValue > 0) {\n offsetZ -= this.geo_superiorBeam.width / 2;\n } else {\n offsetZ -= this.geo_superiorBeam.width;\n }\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.back) {\n offsetY =\n this.APP.sldBuildingHeight.currentValue -\n this.geo_superiorBeam.height -\n this.geo_superiorBeam.width * this.utils.tan(UI.patiosPitch);\n offsetZ = 0;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.multiSpan) {\n offsetY = this.utils.getHeightByAngle(\n this.APP.sldBuildingHeight.currentValue - this.geo_superiorBeam.height,\n this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue,\n this.APP.sltRoofPitch.currentValue,\n -1\n );\n offsetZ =\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue -\n this.geo_superiorBeam.width;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n this.cutStandardBeamByCutBeamWithinBayControl(\n this.geo_superiorBeam,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetXL, offsetY, offsetZ),\n new Vector3(),\n views,\n 1,\n userDataPos,\n this.geoBeamJoint\n );\n }\n private cutStandardBeamByCutBeamWithinBayControl(\n beamGeo: GeometryInfo,\n beamCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n userDataPos: any,\n jointGeo: GeometryInfo\n ) {\n // Map list cut beam here\n const beamStartX = pos.x;\n const beamEndX = pos.x + length;\n\n let endOfBayX = -UI.totalBayLength / 2;\n let startCutBeamX = beamStartX;\n let endCutBeamX = beamStartX;\n\n const beams = this.utils.getListSeperateBeamsByBays(\n endOfBayX,\n beamStartX,\n beamEndX,\n endCutBeamX,\n startCutBeamX\n );\n\n for (let i = 0; i < beams.length; i++) {\n endCutBeamX = beams[i][1];\n startCutBeamX = beams[i][0];\n let beamGroup = this.utils.createBeamGroup(\n beamGeo,\n beamCapGeo,\n endCutBeamX - startCutBeamX,\n new Vector3(startCutBeamX, pos.y, pos.z),\n rot,\n views,\n directionOffset,\n userDataPos,\n UI.beamLayoutShow,\n {\n hasStartCap: UI.beamType == 0 && i == 0,\n hasEndCap:\n UI.beamType == 0 &&\n (i == beams.length - 1 || (i == 0 && beams.length == 1)),\n hasStartJoint: i !== 0,\n hasEndJoint: false,\n jointGeo: jointGeo,\n }\n );\n this.scene.add(beamGroup);\n }\n }\n public getSection(): Printing2DGeometry {\n let objs = this.scene.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_POST ||\n o.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET\n );\n let beamGroups = this.scene.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM ||\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_INTERNAL_BEAM\n );\n let beamObjs: Object3D[] = [];\n for (let g of beamGroups) {\n beamObjs = beamObjs.concat(g.children);\n }\n\n objs = [...objs, ...beamObjs];\n let lsGeometries: Printing2DLine[] = [];\n\n for (let o of objs) {\n if (\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_INTERNAL_BEAM ||\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n ) {\n o.updateMatrix();\n\n let objCloned = o.clone();\n objCloned.applyMatrix4(new Matrix4().getInverse(o.matrix));\n\n const planView = _.find(\n o.userData.views,\n (el) => el.viewType == ViewType.PLAN\n );\n if (planView) {\n this.utils.getPlanVerticesOfBeam(o as Mesh, lsGeometries, [planView]);\n }\n\n let box = new BoxHelper(objCloned);\n o.updateWorldMatrix(true, true);\n box.geometry.applyMatrix4(o.matrixWorld);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: outlineGeo.vertices,\n views: _.filter(\n o.userData.views,\n (el) => el.viewType != ViewType.PLAN\n ),\n });\n } else {\n let box = new BoxHelper(o);\n box.geometry.translate(0, 5000, 0);\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: outlineGeo.vertices,\n views: o.userData.views,\n });\n }\n }\n\n let rafterBeamGroups = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n );\n for (let o of rafterBeamGroups) {\n o.children.forEach((el) => {\n this.utils.getOutlineRafterBeam(el as Mesh, lsGeometries);\n });\n }\n\n return { lines: lsGeometries, texts: [] };\n }\n public simplifyGeo(geo: BufferGeometry): Geometry {\n let vertices = geo.getAttribute(\"position\").array;\n let lineGeo = new Geometry();\n for (let i = 0; i < vertices.length; i += 3) {\n lineGeo.vertices.push(\n new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2])\n );\n }\n\n //2-3\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n //3-7\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n //7-6\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n //6-2\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n\n //1-4\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n //4-8\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n //8-5\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n //5-1\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n return lineGeo;\n }\n\n private getBracketHeight(offset): number {\n let angle = this.APP.sltRoofPitch.currentValue;\n return (\n this.APP.sldFlyOverBracketHeight.currentValue -\n this.utils.tan(angle) * offset\n );\n }\n\n public destroy(): void {\n this.unregisterEvent();\n }\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldBuildingHeight,\n this.APP.sltExistingType,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldFlyOverBracketHeight,\n this.APP.sldBackOverhang,\n this.APP.sldFrontOverhang,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n ];\n //this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n\n this.controlsToRegisterEvent2 = [\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltColumnType,\n ];\n this.controlsToRegisterEvent2.forEach((c) =>\n c.addAction(this.objectSizeChangedHandle)\n );\n }\n private unregisterEvent(): void {\n // this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n // this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach((c) =>\n c.removeAction(this.objectSizeChangedHandle)\n );\n this.controlsToRegisterEvent2 = undefined;\n }\n public uiChanged(preVal: number, curVal: number): void {\n this.load();\n }\n private objectSizeChanged(pre: number, cur: number) {\n this.optimize().then(() => {\n this.load();\n this.MANAGER.loadRafterBeamAndInternalBeam(\n this.MANAGER.rafterBeamAndInternalBeamInfo\n );\n });\n }\n}\n","import { Scene, Mesh, Object3D, Material, Group, FontLoader, TextBufferGeometry, PlaneBufferGeometry, Vector3, BoxHelper, Box3Helper, Matrix4, Box3, Geometry, LineSegments, LineBasicMaterial, Color, BoxBufferGeometry, Line, Line3 } from \"three\";\nimport { HomeComponent as AppComponent, HomeComponent } from '../../containers/home/home.component';\nimport { Util } from '../utils';\nimport { MaterialManager } from '../material.manager';\nimport { GeometryInfo, ViewType, LineType, IBay, Printing2DGeometry, Printing2DLine, Print2DText, Printing2DGeometryType } from 'src/app/core/models';\nimport { DIMENSION_LABEL_TYPE, GEOMETRY_TYPE } from 'src/app/app.config';\nimport { environment } from 'src/environments/environment';\nimport Dimension, { AddDimensionOptions } from \"src/app-ribspan/models/Dimension\";\nimport { UI } from \"../ui\";\nimport { PatiosFreeStandingManager } from \".\";\nimport { FIT_DIMENSION } from \"src/app/app.constants\";\n\nexport class DimensionManager {\n private scene: Scene;\n private APP: AppComponent;\n public listText: THREE.Object3D[] = [];\n private utils: Util;\n private MANAGER: PatiosFreeStandingManager;\n\n private eventHandleId: any;\n\n private material: Material;\n\n private materialManager: MaterialManager;\n\n private dimensionPatiosFrontBottom: Object3D;\n private dimensionPatiosFrontRight: Object3D;\n \n private dimensionPatiosRightBottom: Object3D;\n private dimensionPatiosRightLeft: Object3D;\n private dimensionPatiosRightRight: Object3D;\n\n private dimensionPatiosLeftBottom: Object3D;\n private dimensionPatiosLeftRight: Object3D;\n private dimensionPatiosLeftLeft: Object3D;\n\n private dimensionPatiosPlanRight: Object3D;\n private dimensionPatiosPlanBottom: Object3D;\n private dimensionPlanMiddle: Object3D;\n private dimensionPlanMidleLeft: Object3D;\n\n private dimensionPatiosLowerHeightDim: Object3D;\n private dimensionPatiosHigherHeightDim: Object3D;\n\n private lineCapGeo: GeometryInfo;\n private lineGeo: GeometryInfo;\n private textGeo: TextBufferGeometry;\n\n private dimensionDistance = 1500;\n private dimensionDistance2 = 500;\n\n private textDistance = 5000;\n\n private totalBaySize: number;\n\n private font: any\n private textParameter: any;\n private isReady = false;\n\n private controlsToRegisterEvent: Array;\n private options : AddDimensionOptions;\n private startPos: Vector3;\n private startMatrix: Matrix4;\n private startBayLength: number;\n\n constructor(app: AppComponent, freeStandingManager: PatiosFreeStandingManager) {\n this.utils = new Util();\n this.materialManager = MaterialManager.Instance();\n this.APP = app;\n this.scene = this.APP.scene;\n this.material = MaterialManager.Instance().DIMENSION_TEXT;\n\n this.MANAGER = freeStandingManager;\n\n this.registerEvent();\n }\n\n \n public optimize() : Promise{\n return new Promise((resolve, reject) => {\n this.lineGeo = new GeometryInfo();\n this.lineGeo.geometry = new PlaneBufferGeometry(1000, 50);\n this.lineGeo.width = 50;\n this.lineGeo.length = 1000;\n\n this.lineCapGeo = new GeometryInfo();\n this.lineCapGeo.geometry = new PlaneBufferGeometry(50, 200);\n this.lineCapGeo.width = 50;\n this.lineCapGeo.length = 200;\n\n resolve();\n });\n }\n public load(): Promise { \n return new Promise((resolve, reject) => {\n this.unload();\n var loader = new FontLoader();\n \n this.dimensionPatiosFrontBottom = new Group();\n this.dimensionPatiosFrontBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n // this.dimensionPatiosFrontBottom.rotation.set(0,Math.PI,0);\n this.dimensionPatiosFrontBottom.visible = false;\n\n this.dimensionPatiosFrontRight = new Group();\n this.dimensionPatiosFrontRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosFrontRight.rotation.set(0,0,-Math.PI/2);\n this.dimensionPatiosFrontRight.visible = false;\n \n this.dimensionPatiosRightBottom = new Group();\n this.dimensionPatiosRightBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightBottom.rotation.set(0,-Math.PI/2,0);\n this.dimensionPatiosRightBottom.visible = false;\n\n this.dimensionPatiosRightLeft = new Group();\n this.dimensionPatiosRightLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightLeft.rotation.set(0,-Math.PI/2,-Math.PI/2);\n this.dimensionPatiosRightLeft.visible = false;\n\n this.dimensionPatiosRightRight = new Group();\n this.dimensionPatiosRightRight.rotation.set(0,-Math.PI/2,-Math.PI/2);\n this.dimensionPatiosRightRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightRight.visible = false;\n\n this.dimensionPatiosLeftBottom = new Group();\n this.dimensionPatiosLeftBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftBottom.rotation.set(0,-Math.PI/2,0);\n this.dimensionPatiosLeftBottom.visible = false;\n\n this.dimensionPatiosLeftRight = new Group();\n this.dimensionPatiosLeftRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftRight.rotation.set(Math.PI/2,-Math.PI/2,0);\n this.dimensionPatiosLeftRight.visible = false;\n\n this.dimensionPatiosLeftLeft = new Group();\n this.dimensionPatiosLeftLeft.rotation.set(0, -Math.PI / 2, Math.PI / 2);\n this.dimensionPatiosLeftLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftLeft.visible = false;\n\n this.dimensionPatiosPlanRight = new Group();\n this.dimensionPatiosPlanRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosPlanRight.rotation.set(-Math.PI/2, Math.PI, -Math.PI/2);\n\n this.dimensionPatiosPlanBottom = new Group();\n this.dimensionPatiosPlanBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosPlanBottom.rotation.set(-Math.PI / 2, 0, 0);\n\n this.dimensionPatiosLowerHeightDim = new Group();\n this.dimensionPatiosLowerHeightDim.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLowerHeightDim.rotation.set(0, 0, Math.PI / 2);\n \n this.dimensionPatiosHigherHeightDim = new Group();\n this.dimensionPatiosHigherHeightDim.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosHigherHeightDim.rotation.set(0, 0, Math.PI / 2);\n\n this.dimensionPlanMiddle = new Group();\n this.dimensionPlanMidleLeft = new Group();\n\n this.scene.add(\n this.dimensionPatiosPlanRight,\n this.dimensionPatiosFrontBottom, \n this.dimensionPatiosFrontRight, \n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom, \n this.dimensionPatiosLeftRight, \n this.dimensionPatiosLeftLeft, \n this.dimensionPatiosPlanBottom,\n this.dimensionPlanMiddle,\n this.dimensionPlanMidleLeft,\n this.dimensionPatiosLowerHeightDim,\n this.dimensionPatiosHigherHeightDim,\n );\n\n loader.load( environment.modelBaseUrl + '/../assets/fonts/helvetiker_regular.typeface.json', (font) => {\n this.font = font;\n\n this.textParameter = {\n font: this.font,\n size: 200,\n height: 5,\n curveSegments: 10\n };\n this.options = {\n container: HomeComponent.ins.scene,\n start: new Vector3(),\n end: new Vector3(),\n linePos: new Vector3(),\n views: [],\n allowDrag: true,\n textParameter: this.textParameter,\n textPos: new Vector3(),\n labelType: null,\n fitZ: 10,\n hasTextClone: false,\n axis: 'x',\n lineLength: 0,\n subtype: null,\n textUserData: null,\n onDragCallback: this.onDimDrag.bind(this),\n onDragStartCallback: this.onDimDragStart.bind(this),\n }\n\n this.isReady = true;\n this.draw();\n\n resolve();\n })\n });\n }\n\n public unload(){\n this.scene.remove(\n this.dimensionPatiosPlanRight,\n this.dimensionPatiosFrontBottom, \n this.dimensionPatiosFrontRight, \n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom, \n this.dimensionPatiosLeftRight,\n this.dimensionPatiosLeftLeft, \n this.dimensionPatiosPlanBottom,\n this.dimensionPlanMiddle,\n this.dimensionPlanMidleLeft,\n this.dimensionPatiosLowerHeightDim,\n this.dimensionPatiosHigherHeightDim,\n );\n }\n \n public draw(){\n if (!this.isReady) {\n return;\n }\n // this.dimensionPatiosPlanBottom.children = [];\n // this.dimensionPatiosPlanRight.children = [];\n this.dimensionPatiosLowerHeightDim.children = this.dimensionPatiosLowerHeightDim.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.LOWER_HEIGHT_DIM\n );\n this.dimensionPatiosHigherHeightDim.children = this.dimensionPatiosHigherHeightDim.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.BRAKET_HEIGHT_DIM\n );\n this.dimensionPatiosPlanBottom.children = this.dimensionPatiosPlanBottom.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.LEFT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.RIGHT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY\n );\n this.dimensionPatiosPlanRight.children = this.dimensionPatiosPlanRight.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.MULTI_SPAN\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.FRONT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.BACK_OVERHANG\n );\n this.dimensionPatiosFrontBottom.children = [];\n this.dimensionPatiosFrontRight.children = [];\n this.dimensionPatiosLeftBottom.children = [];\n this.dimensionPatiosLeftRight.children = [];\n this.dimensionPatiosLeftLeft.children = [];\n this.dimensionPatiosRightBottom.children = [];\n this.dimensionPatiosRightLeft.children = [];\n this.dimensionPatiosRightRight.children = [];\n this.dimensionPlanMiddle.children = [];\n this.dimensionPlanMidleLeft.children = [];\n \n this.totalBaySize = 0;\n for(let b of this.APP.dialogEditBay.listBay){\n this.totalBaySize += b.value;\n }\n\n this.drawDimensionLowerHeightDim();\n this.drawDimensionHigherHeightDim();\n\n this.drawDimensionPatiosPlanBottom();\n this.drawDimensionPatiosPlanRight();\n\n this.drawDimensionPatiosFrontBottom();\n this.drawDimensionPatiosFrontRight();\n\n this.drawDimensionPatiosLeftBottom();\n this.drawDimensionPatiosLeftRight();\n this.drawDimensionPatiosLeftLeft();\n\n this.drawDimensionPatiosRightBottom();\n this.drawDimensionPatiosRightLeft();\n this.drawDimensionPatiosRightRight();\n\n this.drawDimensionMidle();\n this.drawDimensionMidleLeft();\n\n this.APP.dimensionManager.draw();\n }\n\n private drawDimensionLowerHeightDim(){\n const frontPostHeight = this.utils.getHeightByAngle(UI.height - this.MANAGER.columnAndPurlinManager.geo_superiorBeam.height, UI.span + UI.multiSpan, UI.patiosPitch, -1)\n const offsetZFrontPos = UI.span + UI.multiSpan + FIT_DIMENSION;\n\n this.dimensionPatiosLowerHeightDim.position.set(0, frontPostHeight / 2, offsetZFrontPos);\n\n let textStr = this.utils.getDimensionValue(frontPostHeight);\n let options : AddDimensionOptions = {\n ... this.options,\n lineLength: frontPostHeight,\n container: this.dimensionPatiosLowerHeightDim,\n views: [],\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, 200, 0),\n labelType: DIMENSION_LABEL_TYPE.LOWER_HEIGHT_DIM,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [] },\n allowDrag: false\n }\n let dimBay = this.dimensionPatiosLowerHeightDim.children.find(el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.LOWER_HEIGHT_DIM\n ) as Dimension;\n if(!dimBay){\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n\n private drawDimensionHigherHeightDim(){\n const backPostHeight = UI.height - this.MANAGER.columnAndPurlinManager.geo_superiorBeam.height\n const offsetZBackPos = - FIT_DIMENSION;\n\n this.dimensionPatiosHigherHeightDim.position.set(0, backPostHeight / 2, offsetZBackPos);\n\n let textStr = this.utils.getDimensionValue(backPostHeight);\n let options : AddDimensionOptions = {\n ... this.options,\n lineLength: backPostHeight,\n container: this.dimensionPatiosHigherHeightDim,\n views: [],\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, 200, 0),\n textRotation: new Vector3(Math.PI, 0, 0),\n labelType: DIMENSION_LABEL_TYPE.HIGHER_HEIGHT_DIM,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [] },\n allowDrag: false\n }\n let dimBay = this.dimensionPatiosHigherHeightDim.children.find(el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.HIGHER_HEIGHT_DIM\n ) as Dimension;\n if(!dimBay){\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n\n private drawDimensionMidleLeft() {\n let offsetX = this.totalBaySize / 2 + this.APP.patiosManager.patiosGroup.position.x;\n let offsetZ = this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue / 2 - this.APP.sldExistingWidth1.currentValue / 2;\n let origin = new Vector3(0, 0, 0);\n let head = new Vector3(0, 0, 1000);\n let hand1 = new Vector3(-50, 0, 950);\n let hand2 = new Vector3(50, 0, 950);\n\n //arrow\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n //let material = new LineBasicMaterial({ color: 0x0000ff });\n let geoLine = new Geometry();\n geoLine.vertices.push(origin);\n geoLine.vertices.push(head);\n\n geoLine.vertices.push(head);\n geoLine.vertices.push(hand1);\n\n geoLine.vertices.push(hand1);\n geoLine.vertices.push(hand2);\n\n geoLine.vertices.push(hand2);\n geoLine.vertices.push(head);\n let dim = new Line(geoLine);\n dim.userData = { type: \"Arrow\", views: views };\n\n //text of degree\n let textStr = \"Panel direction\";\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, 0, 0) };\n //text.position.setZ(-100);\n text.position.setX(100);\n\n dim.visible = false;\n text.visible = false;\n\n this.dimensionPlanMidleLeft.add(dim);\n this.dimensionPlanMidleLeft.add(text);\n\n\n if (this.APP.sltExistingType.currentValue == 2) {\n text.position.set(-100, 0, 1000);\n this.dimensionPlanMidleLeft.rotation.set(0, -Math.PI / 2, 0);\n this.dimensionPlanMidleLeft.position.set(offsetX, 0, offsetZ);\n }\n else {\n this.dimensionPlanMidleLeft.rotation.set(0, Math.PI / 2, 0);\n this.dimensionPlanMidleLeft.position.set(-offsetX, 0, offsetZ);\n }\n }\n private drawDimensionMidle() {\n let offsetZ = this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue / 2;\n let origin = new Vector3(0, 0, 0);\n let head = new Vector3(0, 0, 1000);\n let hand1 = new Vector3(-50, 0, 950);\n let hand2 = new Vector3(50, 0, 950);\n\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n let material = new LineBasicMaterial({ color: 0x0000ff });\n let geoLine = new Geometry();\n geoLine.vertices.push(origin);\n geoLine.vertices.push(head);\n\n geoLine.vertices.push(head);\n geoLine.vertices.push(hand1);\n\n geoLine.vertices.push(hand1);\n geoLine.vertices.push(hand2);\n\n geoLine.vertices.push(hand2);\n geoLine.vertices.push(head);\n let dim = new Line(geoLine, material);\n dim.userData = { type: \"Arrow\", views: views };\n\n //text of degree\n let textStr = this.APP.sltRoofPitch.currentValue + ' degree';\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n \n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, Math.PI / 2, 0) };\n text.position.setZ(900);\n text.position.setX(200);\n\n dim.visible = false;\n text.visible = false;\n\n this.dimensionPlanMiddle.add(dim);\n this.dimensionPlanMiddle.add(text);\n\n this.dimensionPlanMiddle.position.set(0, 0, offsetZ);\n\n //console.log(text);\n }\n\n private drawDimensionPatiosPlanBottom(){\n let offsetX = -this.totalBaySize/2;\n let offsetZ = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance2;\n\n let views = [ { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosPlanBottom.position.setZ(offsetZ);\n\n this.dimensionPatiosPlanBottom.children = this.dimensionPatiosPlanBottom.children.filter(el => \n el.userData?.groupType != DIMENSION_LABEL_TYPE.BAY\n || (el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY && el.userData?.bayNum < HomeComponent.ins.dialogEditBay.listBay.length)\n );\n \n for(let i = 0; i <= this.APP.dialogEditBay.listBay.length; i++){\n let b: IBay = {index: 0, value: 0, isCut: false};\n if(i < this.APP.dialogEditBay.listBay.length){\n b = this.APP.dialogEditBay.listBay[i];\n }\n\n if(i < this.APP.dialogEditBay.listBay.length){\n let textStr = this.utils.getDimensionValue(b.value);\n let options : AddDimensionOptions = {... this.options,\n lineLength: b.value,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(offsetX + b.value / 2, 0, 0),\n textPos: new Vector3(offsetX + b.value / 2, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.BAY,\n bayNum: i,\n }\n let dimBay = this.dimensionPatiosPlanBottom.children.find(el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY \n && el.userData?.bayNum == i\n ) as Dimension;\n if(!dimBay){\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n offsetX += b.value;\n }\n\n //Left over hang\n this.addOverhang(this.dimensionPatiosPlanBottom, offsetX, this.APP.sldLeftOverhang.currentValue, views, \"Left\", 0, \"z\", DIMENSION_LABEL_TYPE.LEFT_OVERHANG);\n this.addOverhang(this.dimensionPatiosPlanBottom, offsetX, this.APP.sldRightOverhang.currentValue, views, \"Right\", 0, \"z\", DIMENSION_LABEL_TYPE.RIGHT_OVERHANG);\n }\n onDimDrag(event){\n this.utils.handlerDimDragEvent(event, this.startPos, this.startMatrix, this.startBayLength);\n this.startPos = event.object.position.clone();\n }\n onDimDragStart(event){\n this.startPos = event.object.position.clone();\n this.startMatrix = event.object.matrixWorld.clone();\n if(event.object.userData?.dimType === DIMENSION_LABEL_TYPE.BAY){\n let bayNum = event.object.userData.bayNum;\n this.startBayLength = UI.listBay[+bayNum].value;\n }\n }\n private drawDimensionPatiosPlanRight(){\n \n let views = [ { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS } ];\n let offsetDimensionZ = this.APP.sldSpan.currentValue/2;\n \n\n let _dimensionDistane = this.dimensionDistance2;\n // if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n // if(this.APP.sldExistingWidth1.currentValue > 0){\n // _dimensionDistane = this.dimensionDistance;\n // }\n // }\n\n let offsetDimensionX = this.totalBaySize/2 + this.APP.sldRightOverhang.currentValue + this.APP.patiosManager.patiosGroup.position.x + _dimensionDistane;\n // if(this.APP.sldExistingLength.currentValue/2 > this.totalBaySize/2){\n // offsetDimensionX = this.APP.sldExistingLength.currentValue/2 + _dimensionDistane;\n // }\n \n // if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n // offsetDimensionX += this.APP.sldExistingLength2.currentValue;\n // }\n\n this.dimensionPatiosPlanRight.position.set(offsetDimensionX, 0, offsetDimensionZ);\n\n let textStr = this.utils.getDimensionValue(this.APP.sldSpan.currentValue);\n\n let options : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldSpan.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.SPAN,\n hasTextClone: false,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneRotation: new Vector3(0, Math.PI, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, -Math.PI, 0),\n fitZ: -10\n }\n let dimSpan = this.dimensionPatiosPlanRight.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN) as Dimension;\n if(!dimSpan){\n new Dimension(options);\n } else {\n dimSpan.update(options);\n }\n\n if(this.APP.sldMultiSpan.currentValue > 0){\n let offsetX = this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue;\n // - this.APP.existingWallManager.geo_existingWallL1.width \n // - this.APP.eaveManager.backOverhang;\n\n let optionsMul : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldMultiSpan.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue / 2, 0, 0),\n textPos: new Vector3(this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue / 2, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.MULTI_SPAN,\n hasTextClone: false,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneRotation: new Vector3(0, Math.PI, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, -Math.PI, 0),\n fitZ: -10\n }\n let dimMul = this.dimensionPatiosPlanRight.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.MULTI_SPAN) as Dimension;\n if(!dimMul){\n new Dimension(optionsMul);\n } else {\n dimMul.update(optionsMul);\n }\n } else {\n this.dimensionPatiosPlanRight.children = this.dimensionPatiosPlanRight.children.filter(el => el.userData?.groupType != DIMENSION_LABEL_TYPE.MULTI_SPAN)\n }\n\n let offsetRight = this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue;\n let offsetLeft = this.APP.sldSpan.currentValue / 2;// + this.APP.sldMultiSpan.currentValue;\n\n this.addOverhang(this.dimensionPatiosPlanRight, offsetRight, this.APP.sldFrontOverhang.currentValue, views, \"Right\", Math.PI, \"y\", DIMENSION_LABEL_TYPE.FRONT_OVERHANG);\n this.addOverhang(this.dimensionPatiosPlanRight, offsetLeft, this.APP.sldBackOverhang.currentValue, views, \"Left\", Math.PI, \"y\", DIMENSION_LABEL_TYPE.BACK_OVERHANG);\n\n }\n private drawDimensionPatiosFrontBottom(){\n let dimOffsetY = -this.dimensionDistance2;\n this.dimensionPatiosFrontBottom.position.set(0,dimOffsetY,0);\n\n let views = [ { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosPlanBottom.children.forEach( groupDim => {\n groupDim.children.filter(c => c.userData.subtype != GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT).forEach(e => {\n let dim = e.clone();\n dim.userData['views'] = views;\n if(dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n dim.rotation.set(0,Math.PI,0);\n dim.userData['rotation'] = new Vector3(0,0,0);\n }\n this.dimensionPatiosFrontBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosFrontRight(){\n let views = [ { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS } ];\n\n let _dimensionDistane = this.dimensionDistance2;\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n if(this.APP.sldExistingWidth1.currentValue > 0){\n _dimensionDistane = this.dimensionDistance;\n }\n }\n let height = this.utils.getHeightByAngle(this.APP.sldBuildingHeight.currentValue, this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue, this.APP.sltRoofPitch.currentValue, -1);\n let dimOffsetX = this.totalBaySize/2 + this.APP.patiosManager.patiosGroup.position.x + _dimensionDistane;\n let dimOffsetY = height/2;\n if(this.APP.sldExistingLength.currentValue/2 > this.totalBaySize/2){\n dimOffsetX = this.APP.sldExistingLength.currentValue/2 + _dimensionDistane;\n }\n \n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n dimOffsetX += this.APP.sldExistingLength2.currentValue;\n }\n\n this.dimensionPatiosFrontRight.position.set(dimOffsetX,dimOffsetY,0);\n \n\n //--------\n let scaleLength = height/this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-dimOffsetY);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(dimOffsetY);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(height);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0,0,-Math.PI/2) };\n text.position.set(0,200,0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosFrontRight.add(line, cap1, cap2, text);\n }\n private drawDimensionPatiosLeftBottom(){\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z;\n \n this.dimensionPatiosLeftBottom.position.set(0,dimOffsetY,dimOffsetZ);\n\n let views = [ \n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n this.dimensionPatiosPlanRight.children.forEach( groupDim => {\n groupDim.children.forEach(e => {\n let dim = e.clone();\n dim.userData['views'] = views;\n if(dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n dim.rotation.set(0,0,0);\n dim.userData['views'] = [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }];\n dim.userData['rotation'] = new Vector3(0,0,0);\n }\n this.dimensionPatiosLeftBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosLeftRight(){\n let dimOffsetY = this.utils.getHeightByAngle(this.APP.sldBuildingHeight.currentValue, this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue, this.APP.sltRoofPitch.currentValue, -1);\n let dimOffsetZ = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance2;\n \n\n this.dimensionPatiosLeftRight.position.set(0,dimOffsetY/2,dimOffsetZ);\n\n let views = [ \n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n \n let scaleLength = dimOffsetY / this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-dimOffsetY/2);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(dimOffsetY/2);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(dimOffsetY);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }], rotation: new Vector3(-Math.PI / 2, 0, 0) };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosLeftRight.add(line, cap1, cap2, text);\n }\n private drawDimensionPatiosLeftLeft() {\n let dimOffsetY = this.APP.sldBuildingHeight.currentValue;\n let dimOffsetZ = this.APP.sldBackOverhang.currentValue + 500;\n\n this.dimensionPatiosLeftLeft.position.set(0, dimOffsetY / 2, -dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n let offsetLength = dimOffsetY;\n let scaleLength = offsetLength / this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength / 2);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength / 2);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }], rotation: new Vector3(Math.PI / 2, 0, 0) };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosLeftLeft.add(line, cap1, cap2, text);\n\n //this.dimensionPatiosFrontRight.children.forEach(e => {\n // let dim = e.clone();\n // dim.userData['views'] = views;\n // if(dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n // dim.userData['views'] = [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }];\n // dim.userData['rotation'] = new Vector3(-Math.PI/2,0,0);\n // }\n // this.dimensionPatiosLeftRight.add(dim);\n //});\n }\n private drawDimensionPatiosRightBottom(){\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z;\n \n this.dimensionPatiosRightBottom.position.set(0,dimOffsetY,dimOffsetZ);\n\n let views = [ { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosPlanRight.children.forEach(groupDim => {\n groupDim.children.forEach(e => {\n if(e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n let dim = e.clone();\n dim.userData['views'] = views;\n dim.userData['rotation'] = new Vector3(0,0,0);\n \n this.dimensionPatiosRightBottom.add(dim);\n }\n });\n })\n }\n private drawDimensionPatiosRightLeft(){\n let dimOffsetY = this.utils.getHeightByAngle(this.APP.sldBuildingHeight.currentValue, this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue, this.APP.sltRoofPitch.currentValue, -1);\n let dimOffsetZ = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance2;\n\n this.dimensionPatiosRightLeft.position.set(0,dimOffsetY/2,dimOffsetZ);\n\n let views = [ { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosLeftRight.children.forEach(e => {\n if(e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n let dim = e.clone();\n dim.userData['views'] = views;\n dim.userData['rotation'] = new Vector3(Math.PI/2,0,0);\n dim.rotation.set(0,Math.PI,0);\n this.dimensionPatiosRightLeft.add(dim);\n }\n });\n }\n private drawDimensionPatiosRightRight(){\n let dimOffsetY = this.APP.sldBuildingHeight.currentValue;\n let dimOffsetZ = this.APP.sldBackOverhang.currentValue + 500;\n \n this.dimensionPatiosRightRight.position.set(0,dimOffsetY/2,-dimOffsetZ);\n\n let views = [ { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosLeftLeft.children.forEach(e => {\n if(e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){ \n let dim = e.clone();\n dim.userData['views'] = views;\n dim.userData['rotation'] = new Vector3(-Math.PI/2,0,0);\n dim.rotation.set(0,Math.PI,0);\n dim.position.set(dim.position.x, -dim.position.y, dim.position.z);\n this.dimensionPatiosRightRight.add(dim);\n }\n });\n }\n \n \n private addOverhang(groupDim: Object3D, offset: number, overhangValue: number, views: any, side: string, rotateText: number, axis: string, labelType?: string) {\n if (overhangValue == 0){\n let dim = groupDim.children.find(el => el.userData?.groupType == labelType) as Dimension;\n if(dim){\n groupDim.remove(dim)\n }\n return;\n }\n\n let textStr = this.utils.getDimensionValue(overhangValue);\n\n let textRotation = new Vector3();\n let textUserData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, position: { overhang: true }};\n if (axis === \"z\") {\n textRotation.setZ(rotateText);\n textUserData['rotation'] = new Vector3(0, 0, -rotateText / 2);\n textUserData['position']['bottom'] = true;\n }\n else if (axis === \"y\") {\n textRotation.setY(rotateText);\n textUserData['rotation'] = new Vector3(0, -rotateText / 2, 0);\n }\n else if (axis === \"x\") {\n textRotation.setX(rotateText);\n textUserData['rotation'] = new Vector3(-rotateText / 2, 0, 0);\n }\n\n let linePos = new Vector3();\n if (side === \"Left\") {\n linePos.setX(-offset - overhangValue / 2);\n }\n else if (side === \"Right\") {\n linePos.setX(offset + overhangValue / 2);\n }\n let fitZ = 0;\n if(labelType){\n if(axis === 'z'){\n fitZ = 10;\n } else if(axis === 'y'){\n fitZ = -10;\n }\n }\n let options : AddDimensionOptions = {... this.options,\n lineLength: overhangValue,\n container: groupDim,\n views: views,\n linePos: linePos,\n textPos: linePos.clone().setY(linePos.y - 200),\n labelType: labelType ? labelType : null,\n fitZ: fitZ,\n textRotation: textRotation,\n textUserData: textUserData\n }\n let dim = groupDim.children.find(el => el.userData?.groupType == labelType) as Dimension;\n if(!dim){\n new Dimension(options);\n } else {\n dim.update(options)\n }\n }\n private getTextCover(textGeo: TextBufferGeometry, labelType: string, pos: Vector3, fitZ = 0, bayNum?: number){\n let textSize = new Vector3();\n textGeo.boundingBox.getSize(textSize)\n\n let textCover = new Mesh(new BoxBufferGeometry(textSize.x, textSize.y, textSize.z))\n textCover.position.set(pos.x , pos.y, pos.z + fitZ);\n textCover.userData = { type: GEOMETRY_TYPE.TEXT_COVER, labelType };\n if(bayNum !== undefined){\n textCover.userData['bayNum'] = bayNum;\n }\n textCover.material['opacity'] = 0;\n textCover.material['transparent'] = true;\n\n return textCover\n }\n\n public getOutlines(): Printing2DGeometry{\n let lsGeometries: Printing2DLine[] = [];\n let lsText: Print2DText[] = [];\n \n for(let dim of [\n ...this.dimensionPatiosPlanBottom.children,\n ...this.dimensionPatiosPlanRight.children,\n ...this.dimensionPatiosFrontBottom.children,\n ...this.dimensionPatiosFrontRight.children,\n ...this.dimensionPatiosLeftBottom.children,\n ...this.dimensionPatiosLeftRight.children,\n ...this.dimensionPatiosLeftLeft.children,\n ...this.dimensionPatiosRightBottom.children,\n ...this.dimensionPatiosRightLeft.children,\n ...this.dimensionPatiosRightRight.children,\n ...this.dimensionPlanMiddle.children,\n ...this.dimensionPlanMidleLeft.children\n ]){\n if(!dim.userData.views){\n console.log(\"TEXT NO VIEW\", dim);\n continue;\n }\n \n if(dim.type == 'Group'){\n dim.children.forEach(el => {\n el.updateMatrix();\n let _clone = el.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(el.matrix));\n let _box = new Box3().setFromObject(_clone);\n \n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n \n el.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(el.matrixWorld);\n \n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(el.matrixWorld);\n \n let textRotation = el.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, el, pos, textRotation, points)\n })\n } else{\n dim.updateMatrix();\n let _clone = dim.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(dim.matrix));\n let _box = new Box3().setFromObject(_clone);\n \n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n \n dim.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(dim.matrixWorld);\n \n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(dim.matrixWorld);\n \n let textRotation = dim.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, dim, pos, textRotation, points)\n }\n }\n \n return { lines: lsGeometries, texts: lsText };\n }\n private getDimInfo(lsGeometries: Printing2DLine[], lsText: Print2DText[], dim: Object3D, pos: Vector3, textRotation: Vector3, points: Vector3[]){\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && dim.userData.views && dim.userData.value) {\n let box = new Box3().setFromObject(dim.parent);\n let startEnd = this.utils.getStartEndPoint(box);\n let line = new Line3(startEnd[0], startEnd[1]);\n \n let projectPoint = new Vector3();\n line.closestPointToPoint(pos, true, projectPoint);\n let _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(10));\n \n if(dim.userData.position?.bottom){\n if(dim.userData.position?.overhang){\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(180));\n }\n else{\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(120));\n }\n }\n else{\n if(dim.userData.position?.overhang){\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(100));\n }\n }\n \n let p = new Vector3().applyMatrix4(dim.matrixWorld);\n \n lsText.push({\n value: dim.userData.value,\n position: p,\n rotation: textRotation,\n views: dim.userData.views\n });\n \n \n }\n else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_LINE) {\n // this.scene.add(new LineSegments(new Geometry().setFromPoints(points), new LineBasicMaterial({color: new Color('red')})));\n \n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_CAP) {\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n else if (dim.userData.type == \"Arrow\") {\n let geo = ((dim as Line).geometry as Geometry).clone();\n geo.applyMatrix4(dim.matrixWorld);\n lsGeometries.push({\n vertices: geo.vertices,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n }\n public destroy(): void {\n this.unregisterEvent();\n this.unload();\n }\n\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldFrontOverhang,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sldExistingWallHeight,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch\n ];\n this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId)); \n }\n private unregisterEvent(): void{\n this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n this.controlsToRegisterEvent = undefined;\n }\n\n\n public uiChanged(preVal: number, curVal: number): void {\n this.draw();\n }\n}\n","import { HomeComponent as AppComponent } from '../../containers/home/home.component';\nimport { ColumnAndPurlinManager } from './column-and-purlin.manager';\nimport { RoofManager } from './roof.manager';\nimport { PatiosManager, RafterBeamAndInternalBeamInfo } from '../patios.manager';\nimport { Printing2DGeometry } from 'src/app/core/models';\nimport { Group, Box3 } from 'three';\nimport { GEOMETRY_CATEGORY } from 'src/app/app.config';\nimport { DimensionManager } from './dimension.manager';\n\nexport class PatiosFreeStandingManager implements PatiosManager{\n patiosGroup: Group;\n public boundingBox: Box3;\n public columnAndPurlinManager: ColumnAndPurlinManager;\n public roofManager: RoofManager;\n public dimesionManager: DimensionManager;\n public cutoutCondition: boolean;\n public get rakecutCondition(): boolean{\n return true;\n }\n public rafterBeamAndInternalBeamInfo: RafterBeamAndInternalBeamInfo = {\n numOfInternalRafter: 0,\n numOfSpanBeam: 0,\n numOfMultiSpanBeam: 0,\n }\n public ignoreBayEvent: boolean = false;\n public patiosWidth: number;\n public patiosLength: number;\n public firstLoad = true;\n private controlsToRegisterEvent: Array;\n private APP: AppComponent;\n private updateEventHandle: any;\n\n constructor(app: AppComponent){\n this.APP = app;\n this.patiosGroup = new Group();\n this.patiosGroup.userData = { category: GEOMETRY_CATEGORY.PATIOS }\n app.scene.add(this.patiosGroup);\n\n this.roofManager = new RoofManager(app, this);\n this.columnAndPurlinManager = new ColumnAndPurlinManager(app, this);\n this.dimesionManager = new DimensionManager(app, this);\n\n this.registerEvents();\n }\n\n load(): Promise {\n return Promise.all([\n this.roofManager.optimize(),\n this.columnAndPurlinManager.optimize(),\n this.dimesionManager.optimize()\n ])\n .then(() => {\n this.roofManager.load();\n this.columnAndPurlinManager.load();\n this.dimesionManager.load();\n });\n }\n loadBracket(bracketQuantity: number): void {\n \n }\n loadBracketCutout(bracketQuantity: number): void{\n \n }\n loadSideGableBracket(bracketQuantity: number): void{\n \n }\n enableCutout(enable: boolean){\n \n }\n changeToExistingTypeBoth(){\n \n }\n loadRafterBeamAndInternalBeam(info: RafterBeamAndInternalBeamInfo): void{\n this.rafterBeamAndInternalBeamInfo = info\n this.columnAndPurlinManager.addEndRafterBeam(info)\n }\n getOutlines(): Printing2DGeometry {\n let dimensionOutline = this.dimesionManager.getOutlines();\n return { \n lines: [\n ...this.columnAndPurlinManager.getSection().lines,\n ...this.roofManager.getOutLines().lines,\n ...dimensionOutline.lines\n ], \n texts: dimensionOutline.texts\n }\n }\n public destroy(): void {\n this.columnAndPurlinManager.destroy();\n this.roofManager.destroy();\n this.dimesionManager.destroy();\n this.unRegisterEvent();\n }\n registerEvents(): void {\n this.updateEventHandle = this.update.bind(this);\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldBuildingHeight,\n this.APP.sltExistingType,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldFlyOverBracketHeight,\n this.APP.sldBackOverhang,\n this.APP.sldFrontOverhang,\n this.APP.sltRoofThickness, \n this.APP.sltGutterType,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sldExistingWallHeight,\n this.APP.sltPanelDirection,\n this.APP.sltPanelDirectionShow,\n this.APP.sltBeamLayoutShow,\n this.APP.sltColourBeam,\n this.APP.sltBeamSize,\n this.APP.btnTurnOnPanel\n ];\n this.controlsToRegisterEvent.forEach(c => { c.addAction(this.updateEventHandle); });\n }\n unRegisterEvent(): void {\n this.controlsToRegisterEvent.forEach(c => c.removeAction(this.updateEventHandle));\n }\n update(preVal: number, curVal: number): void {\n this.patiosGroup.position.setX(0);\n Promise.all([\n this.roofManager.load(),\n this.columnAndPurlinManager.load()\n ]).then(() => {\n // this.boundingBox = this.APP.utils.getObjectsBoundingBox(\n // this.patiosGroup.children.filter(c => c.userData.type != GEOMETRY_TYPE.DIMENSION && c.userData.type != GEOMETRY_TYPE.ROOF_PATIOS)\n // );\n //this.boundingBox = this.getPatiosBox();\n this.loadRafterBeamAndInternalBeam(this.rafterBeamAndInternalBeamInfo)\n this.dimesionManager.draw();\n })\n }\n}\n","import { Scene, Mesh, Vector3, Material, Plane, Group, PlaneHelper, BufferGeometry, Geometry, LineSegments, Color } from \"three\";\nimport { Util } from \"../utils\";\nimport { CONFIG as env, GEOMETRY_TYPE, GEOMETRY_CATEGORY } from 'src/app/app.config';\nimport { HomeComponent as AppComponent } from '../../containers/home/home.component';\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport { GeometryInfo, Printing2DGeometry, Printing2DLine, Printing2DGeometryType, Print2DView, ViewType, LineType } from 'src/app/core/models';\nimport { PatiosFreeStandingManager } from '.';\nimport { PANEL_DIRECTION, RIBSPAN_BARGE_FIT, RIBSPAN_PANEL_WIDTH } from 'src/app/app.constants';\nimport { UI } from \"../ui\";\n\nexport class RoofManager {\n private scene: Group;\n private APP: AppComponent;\n private MANAGER: PatiosFreeStandingManager;\n private material: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private geo_RoofPanel: GeometryInfo;\n private geo_roofPanelBargeCappingLeft: GeometryInfo;\n private geo_roofPanelBargeCappingRight: GeometryInfo;\n private geo_roofPanelBargeCappingBack: GeometryInfo;\n private geo_gutterBack: GeometryInfo;\n private geo_gutterCap: GeometryInfo;\n\n private roofGroup: Group;\n\n private eventHandleId: any;\n\n private totalBaySize: number;\n\n private objectSizeChangedHandle: any;\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n\n\n constructor(app: AppComponent, freeStandingManager: PatiosFreeStandingManager) {\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.APP = app;\n this.MANAGER = freeStandingManager;\n this.scene = new Group();\n freeStandingManager.patiosGroup.add(this.scene)\n this.material = MaterialManager.Instance().ROOF;\n\n this.registerEvent();\n }\n \n \n public optimize() : Promise{\n return new Promise((resolve, reject) => {\n this.geo_RoofPanel = this.geometryManager.getRoofRibspanPanel();\n this.geo_RoofPanel.geometry\n .translate(-this.geo_RoofPanel.width / 2, this.geo_RoofPanel.height / 2, -this.geo_RoofPanel.length / 2);\n this.geo_RoofPanel.geometry.rotateY(Math.PI)\n this.utils.changeGeoColor(this.geo_RoofPanel.geometry, new Vector3(0, 1, 0), UI.roofColor.toString());\n \n //Barge capping\n this.geo_roofPanelBargeCappingLeft = this.geometryManager.getRibspanBarge();\n this.geo_roofPanelBargeCappingLeft.geometry\n .rotateY(Math.PI)\n .translate(this.geo_roofPanelBargeCappingLeft.width/2 - 3,this.geo_roofPanelBargeCappingLeft.height/2 - RIBSPAN_BARGE_FIT,this.geo_roofPanelBargeCappingLeft.length/2);\n\n this.geo_roofPanelBargeCappingRight = this.geometryManager.getRibspanBarge();\n this.geo_roofPanelBargeCappingRight.geometry\n .translate(-this.geo_roofPanelBargeCappingRight.width/2 + 3,this.geo_roofPanelBargeCappingRight.height/2 - RIBSPAN_BARGE_FIT,this.geo_roofPanelBargeCappingRight.length/2);\n\n this.geo_roofPanelBargeCappingBack = this.geometryManager.getRibspanBarge();\n this.geo_roofPanelBargeCappingBack.geometry\n .rotateY(Math.PI/2)\n .translate(this.geo_roofPanelBargeCappingBack.length/2,this.geo_roofPanelBargeCappingBack.height/2 - RIBSPAN_BARGE_FIT,this.geo_roofPanelBargeCappingBack.width/2 - 3);\n\n //Gutter\n this.geo_gutterBack = this.geometryManager.getGutter();\n this.geo_gutterBack.geometry\n .rotateY(-Math.PI/2)\n .translate(this.geo_gutterBack.length / 2, -20, this.geo_gutterBack.width / 2);\n\n //Gutter cap\n this.geo_gutterCap = this.geometryManager.getGuterEndCap();\n this.geo_gutterCap.geometry\n .rotateY(-Math.PI / 2)\n .translate(0, -20, this.geo_gutterCap.length / 2);\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PATIOS));\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.SHEET_OUTLINE));\n\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == 'HELPER'));\n \n this.totalBaySize = 0;\n for(let b of this.APP.dialogEditBay.listBay){\n this.totalBaySize += b.value;\n }\n \n this.addRoof();\n\n let offsetLeft = this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue - this.MANAGER.patiosGroup.position.x;\n let offsetRight = this.totalBaySize/2 + this.APP.sldRightOverhang.currentValue + this.MANAGER.patiosGroup.position.x;\n let clipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let clipingPlaneRight = new Plane( new Vector3( -1, 0, 0 ), offsetRight );\n \n this.material.clippingPlanes = [clipingPlaneLeft, clipingPlaneRight];\n MaterialManager.Instance().ROOF_BASE.clippingPlanes = [clipingPlaneLeft, clipingPlaneRight];\n\n let width = this.totalBaySize + this.APP.sldLeftOverhang.currentValue + this.APP.sldRightOverhang.currentValue;\n let roofSheetingCount = Math.ceil(width/RIBSPAN_PANEL_WIDTH);\n let offsetX = -(this.totalBaySize/2 + this.APP.sldLeftOverhang.currentValue);\n\n //panel direction\n let panelDirectionOfset = 1;\n if(this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT){\n offsetX = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue - RIBSPAN_PANEL_WIDTH;\n panelDirectionOfset = -1;\n }\n else if(this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.LEFT_TO_RIGHT){\n offsetX = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n }\n\n const OFFSET_TOLE_AND_BASE = 10\n\n for (let index = 0; index < roofSheetingCount; index++) {\n let last = index == roofSheetingCount - 1;\n \n this.addRoofSheeting(offsetX + OFFSET_TOLE_AND_BASE);\n\n offsetX += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n\n this.addBargeCapping();\n this.addGutter();\n //this.getOutLines();\n this.showPanelOutline();\n\n this.scene.visible = UI.showRoof\n\n resolve();\n });\n }\n public getOutLines(): Printing2DGeometry{\n \n let objs = this.roofGroup.children.filter(o => \n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL \n || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE \n );\n\n let gutterObjs = this.roofGroup.children.find(o => o.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS).children;\n objs = [...objs, ...gutterObjs];\n\n let lsGeometries: Printing2DLine[] = [];\n\n let offsetLeft = this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue - this.MANAGER.patiosGroup.position.x;\n let offsetRight = this.totalBaySize/2 + this.APP.sldRightOverhang.currentValue + this.MANAGER.patiosGroup.position.x;\n let roofClipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let roofClipingPlane = new Plane( new Vector3( -1, 0, 0 ), offsetRight );\n\n for(let o of objs){ \n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale((o as Mesh), 60);\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n outlineGeo.translate(0,5000,0); \n\n if(o.userData.type == GEOMETRY_TYPE.ROOF_PANEL || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE){\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlane);\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n }\n \n // var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"SHEETING_OUTLINE\"};\n // this.APP.scene.add( line );\n\n let simplifiedGeo = this.simplifyGeo(outlineGeo);\n lsGeometries.push({ \n objectType: o.userData.type,\n vertices: simplifiedGeo.vertices, \n views: o.userData.views\n });\n\n // var line = new LineSegments( simplifiedGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"SHEETING_OUTLINE\"};\n // this.APP.scene.add( line );\n }\n\n lsGeometries.push({\n objectType: GEOMETRY_TYPE.ROOF_COVER,\n vertices: this.makeRoofPolygon(),\n color: this.utils.convertHexColorToRgb(`#${new Color(UI.panelColor).getHexString()}`),\n views: [\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ]\n });\n\n return { lines: lsGeometries, texts: [] };\n }\n makeRoofPolygon() {\n const polygon = this.utils.getRoofCoverPolygonForLRRoof()\n this.roofGroup.updateWorldMatrix(true, true)\n return polygon.map(el => (el as Vector3).applyMatrix4(this.roofGroup.matrixWorld))\n }\n public showPanelOutline(){\n if(this.APP.sltPanelDirectionShow.currentValue == false)\n return;\n \n let objs = this.roofGroup.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n );\n \n let offsetLeft = this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue - this.MANAGER.patiosGroup.position.x;\n let offsetRight = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue + this.MANAGER.patiosGroup.position.x;\n let roofClipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let roofClipingPlaneRight = new Plane(new Vector3(-1, 0, 0), offsetRight);\n \n \n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale((o as Mesh), 60);\n \n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n //outlineGeo.translate(0, 5000, 0);\n \n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE) {\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneRight);\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n }\n \n var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n line.userData = {type: GEOMETRY_TYPE.SHEET_OUTLINE};\n this.APP.scene.add( line );\n }\n }\n public simplifyGeo(geo: BufferGeometry): Geometry{\n let simplifiedGeo = new Geometry();\n let vertices = geo.getAttribute('position').array;\n for(let i = 0; i < vertices.length; i+=3){\n simplifiedGeo.vertices.push(new Vector3(vertices[i], vertices[i+1] - 5000, vertices[i+2]));\n }\n return simplifiedGeo;\n } \n public addRoof(){\n this.roofGroup = null;\n this.roofGroup = new Group();\n this.roofGroup.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PATIOS };\n\n let offsetY = this.getRoofOffsetY();\n let offsetZ = -(this.APP.sldBackOverhang.currentValue);\n\n this.roofGroup.position.setY(offsetY);\n this.roofGroup.position.setZ(offsetZ);\n this.roofGroup.rotateX(this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue));\n\n this.scene.add(this.roofGroup);\n }\n public addRoofSheeting(offsetX: number){\n let mesh = new Mesh(this.geo_RoofPanel.geometry, this.material);\n \n let scaleZ = (this.APP.sldSpan.currentValue \n + this.APP.sldFrontOverhang.currentValue \n + this.APP.sldBackOverhang.currentValue\n + this.APP.sldMultiSpan.currentValue)/this.utils.cos(this.APP.sltRoofPitch.currentValue)/this.geo_RoofPanel.length;\n \n let offsetY = 0;\n let offsetZ = 0;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setZ(scaleZ);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PANEL, views: views };\n \n this.roofGroup.add(mesh);\n }\n private addBargeCapping(){\n let mesh: Mesh;\n\n let offsetLeft = this.totalBaySize/2 + this.APP.sldLeftOverhang.currentValue;\n let offsetRight = this.totalBaySize/2 + this.APP.sldRightOverhang.currentValue;\n\n let scaleX = (this.APP.sldLeftOverhang.currentValue \n + this.totalBaySize \n + this.APP.sldRightOverhang.currentValue)/this.geo_roofPanelBargeCappingBack.length;\n let scaleZ = (this.APP.sldSpan.currentValue \n + this.APP.sldFrontOverhang.currentValue \n + this.APP.sldBackOverhang.currentValue\n + this.APP.sldMultiSpan.currentValue)/this.utils.cos(this.APP.sltRoofPitch.currentValue)/this.geo_roofPanelBargeCappingLeft.length;\n\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n //left\n mesh = new Mesh(this.geo_roofPanelBargeCappingLeft.geometry, MaterialManager.Instance().BARGE);\n mesh.position.setX(-offsetLeft);\n mesh.scale.setZ(scaleZ);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroup.add(mesh);\n\n //right\n mesh = new Mesh(this.geo_roofPanelBargeCappingRight.geometry, MaterialManager.Instance().BARGE);\n mesh.position.setX(offsetRight);\n mesh.scale.setZ(scaleZ);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroup.add(mesh);\n\n //back\n mesh = new Mesh(this.geo_roofPanelBargeCappingBack.geometry, MaterialManager.Instance().BARGE); \n mesh.position.setX(-offsetLeft);\n mesh.scale.setX(scaleX);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroup.add(mesh);\n }\n\n public addGutter(){\n let mesh: Mesh;\n \n let offsetXL = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n let offsetXR = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n let offsetY = 0;\n let offsetZ = (this.APP.sldFrontOverhang.currentValue \n + this.APP.sldMultiSpan.currentValue \n + this.APP.sldSpan.currentValue\n + this.APP.sldBackOverhang.currentValue\n - 50)/this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n let scaleX = (this.totalBaySize + this.APP.sldLeftOverhang.currentValue + this.APP.sldRightOverhang.currentValue)/this.geo_gutterBack.length;\n \n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n mesh = new Mesh(this.geo_gutterBack.geometry, MaterialManager.Instance().GUTTER);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.GUTTER_PATIOS, views: views };\n mesh.position.set(offsetXL, 0, 0);\n mesh.scale.setX(scaleX);\n \n let endCapMesh = new Mesh(this.geo_gutterCap.geometry, MaterialManager.Instance().GUTTER);\n endCapMesh.position.set(offsetXL, 0, 0);\n\n let endCapMesh2 = new Mesh(this.geo_gutterCap.geometry, MaterialManager.Instance().GUTTER);\n endCapMesh2.position.set(offsetXR, 0, 0);\n\n let gutterGroup = new Group();\n gutterGroup.add(mesh, endCapMesh, endCapMesh2);\n gutterGroup.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.GUTTER_PATIOS, views: views};\n gutterGroup.position.set(0, offsetY, offsetZ);\n gutterGroup.rotation.set(-this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue), 0, 0);\n this.roofGroup.add(gutterGroup);\n }\n public getRoofOffsetY() {\n return this.APP.sldBuildingHeight.currentValue\n //+ this.geometryManager.getBeam().height\n + this.utils.tan(this.APP.sltRoofPitch.currentValue)*this.APP.sldBackOverhang.currentValue;\n }\n public destroy(): void {\n this.unregisterEvent();\n }\n public onColorChanged() {\n if(this.utils && this.geo_RoofPanel.geometry){\n this.utils.changeGeoColor(this.geo_RoofPanel.geometry, new Vector3(0, 1, 0), UI.roofColor.toString());\n }\n }\n private registerEvent(): void {\n this.eventHandleId = this.onColorChanged.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sltColourRoof\n ];\n this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n\n this.controlsToRegisterEvent2 = [\n this.APP.sltRoofSheetingType,\n this.APP.sltRoofThickness,\n this.APP.sltBargeType,\n this.APP.sltDripBarge,\n this.APP.sltGutterType,\n this.APP.sltRoofPitch\n ];\n this.controlsToRegisterEvent2.forEach(c => c.addAction(this.objectSizeChangedHandle));\n }\n private unregisterEvent(): void{\n this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach(c => c.removeAction(this.objectSizeChangedHandle));\n this.controlsToRegisterEvent2 = undefined;\n }\n public uiChanged(preVal: number, curVal: number): void {\n this.load();\n }\n private objectSizeChanged(pre: number, cur: number){\n this.optimize().then(() => { this.load() });\n }\n}\n","import { Scene, Mesh, Object3D, Material, Group, FontLoader, TextBufferGeometry, PlaneBufferGeometry, Vector3, BoxHelper, Box3Helper, Matrix4, Box3, Geometry, LineSegments, LineBasicMaterial, Color, BoxBufferGeometry, Line, Line3, BufferGeometry, Points, PointsMaterial } from \"three\";\nimport { HomeComponent as AppComponent, HomeComponent } from '../../containers/home/home.component';\nimport { Util } from '../utils';\nimport { MaterialManager } from '../material.manager';\nimport { GeometryInfo, ViewType, LineType, IBay, Printing2DGeometry, Printing2DLine, Print2DText, Printing2DGeometryType } from 'src/app/core/models';\nimport { GEOMETRY_TYPE, DIMENSION_LOCATION, DIMENSION_LABEL_TYPE } from 'src/app/app.config';\nimport { environment } from 'src/environments/environment';\nimport { GableFBExistingBuildingManager } from '.';\nimport { GeometryManager } from '../geometry.manager';\nimport { PANEL_DIRECTION, RAKECUT_TYPE } from 'src/app/app.constants';\nimport { UI } from \"../ui\";\nimport Dimension, { AddDimensionOptions } from \"src/app-ribspan/models/Dimension\";\n\nexport class DimensionManager {\n private scene: Scene;\n private APP: AppComponent;\n private MANAGER: GableFBExistingBuildingManager;\n public listText: THREE.Object3D[] = [];\n private utils: Util;\n\n private eventHandleId: any;\n\n private material: Material;\n private geometryManager: GeometryManager;\n\n private materialManager: MaterialManager;\n\n private dimensionPatiosFrontBottom: Object3D;\n private dimensionPatiosFrontRight: Object3D;\n\n private dimensionPatiosRightBottom: Object3D;\n private dimensionPatiosRightLeft: Object3D;\n private dimensionPatiosRightRight: Object3D;\n\n private dimensionPatiosLeftBottom: Object3D;\n private dimensionPatiosLeftRight: Object3D;\n private dimensionPatiosLeftLeft: Object3D;\n\n private dimensionPatiosPlanRight: Object3D;\n private dimensionPatiosPlanBottom: Object3D;\n private dimensionPatiosPlanLeft: Object3D;\n\n private dimensionPlanMiddle: Object3D;\n private dimensionPlanMidleLeft: Object3D;\n\n private lineCapGeo: GeometryInfo;\n private lineGeo: GeometryInfo;\n private textGeo: TextBufferGeometry;\n\n private dimensionDistance = 1500;\n private dimensionDistance2 = 500;\n\n private textDistance = 5000;\n\n private totalBaySize: number;\n\n private font: any\n private textParameter: any;\n\n private isReady = false;\n\n private box: Box3;\n\n private controlsToRegisterEvent: Array;\n private options : AddDimensionOptions;\n private startPos: Vector3;\n private startMatrix: Matrix4;\n private startBayLength: number;\n\n constructor(app: AppComponent, manager: GableFBExistingBuildingManager) {\n this.utils = new Util();\n this.materialManager = MaterialManager.Instance();\n this.APP = app;\n this.MANAGER = manager;\n this.scene = this.APP.scene;\n this.material = MaterialManager.Instance().DIMENSION_TEXT;\n this.geometryManager = GeometryManager.Instance();\n\n //this.registerEvent();\n }\n\n\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n this.lineGeo = this.geometryManager.getDimensionLine();\n this.lineCapGeo = this.geometryManager.getDimensionCap();\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.unload();\n \n var loader = new FontLoader();\n\n this.dimensionPatiosFrontBottom = new Group();\n this.dimensionPatiosFrontBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n // this.dimensionPatiosFrontBottom.rotation.set(0, Math.PI, 0);\n this.dimensionPatiosFrontBottom.visible = false;\n\n this.dimensionPatiosFrontRight = new Group();\n this.dimensionPatiosFrontRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosFrontRight.rotation.set(0, 0, -Math.PI / 2);\n this.dimensionPatiosFrontRight.visible = false;\n\n this.dimensionPatiosRightBottom = new Group();\n this.dimensionPatiosRightBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightBottom.rotation.set(0, -Math.PI / 2, 0);\n this.dimensionPatiosRightBottom.visible = false;\n\n this.dimensionPatiosRightLeft = new Group();\n this.dimensionPatiosRightLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightLeft.rotation.set(0, -Math.PI / 2, -Math.PI / 2);\n this.dimensionPatiosRightLeft.visible = false;\n\n this.dimensionPatiosRightRight = new Group();\n this.dimensionPatiosRightRight.rotation.set(0, -Math.PI / 2, -Math.PI / 2);\n this.dimensionPatiosRightRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightRight.visible = false;\n\n this.dimensionPatiosLeftBottom = new Group();\n this.dimensionPatiosLeftBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftBottom.rotation.set(0, -Math.PI / 2, 0);\n this.dimensionPatiosLeftBottom.visible = false;\n\n this.dimensionPatiosLeftRight = new Group();\n this.dimensionPatiosLeftRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftRight.rotation.set(Math.PI / 2, -Math.PI / 2, 0);\n this.dimensionPatiosLeftRight.visible = false;\n\n this.dimensionPatiosLeftLeft = new Group();\n this.dimensionPatiosLeftLeft.rotation.set(0, -Math.PI / 2, Math.PI / 2);\n this.dimensionPatiosLeftLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftLeft.visible = false;\n\n this.dimensionPatiosPlanRight = new Group();\n this.dimensionPatiosPlanRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosPlanRight.rotation.set(-Math.PI / 2, Math.PI, -Math.PI / 2);\n\n this.dimensionPatiosPlanBottom = new Group();\n this.dimensionPatiosPlanBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosPlanBottom.rotation.set(-Math.PI / 2, 0, 0);\n \n this.dimensionPatiosPlanLeft = new Group();\n this.dimensionPatiosPlanLeft.userData = { type: GEOMETRY_TYPE.DIMENSION , position: { left: true } };\n this.dimensionPatiosPlanLeft.rotation.set(-Math.PI / 2, 0, -Math.PI / 2);\n \n this.dimensionPlanMiddle = new Group();\n this.dimensionPlanMidleLeft = new Group();\n \n\n this.scene.add(this.dimensionPatiosPlanRight);\n this.scene.add(this.dimensionPatiosPlanLeft);\n this.scene.add(this.dimensionPatiosFrontRight);\n this.APP.patiosManager.patiosGroup.add(\n this.dimensionPatiosFrontBottom,\n //this.dimensionPatiosFrontRight,\n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom,\n this.dimensionPatiosLeftRight,\n this.dimensionPatiosLeftLeft,\n this.dimensionPatiosPlanBottom,\n //this.dimensionPatiosPlanRight,\n this.dimensionPlanMiddle,\n this.dimensionPlanMidleLeft\n );\n\n loader.load(environment.modelBaseUrl + '/assets/fonts/helvetiker_regular.typeface.json', (font) => {\n this.font = font;\n\n this.textParameter = {\n font: this.font,\n size: 200,\n height: 5,\n curveSegments: 10\n };\n this.options = {\n container: HomeComponent.ins.scene,\n start: new Vector3(),\n end: new Vector3(),\n linePos: new Vector3(),\n views: [],\n allowDrag: true,\n textParameter: this.textParameter,\n textPos: new Vector3(),\n labelType: null,\n fitZ: 10,\n hasTextClone: false,\n axis: 'x',\n lineLength: 0,\n subtype: null,\n textUserData: null,\n onDragCallback: this.onDimDrag.bind(this),\n onDragStartCallback: this.onDimDragStart.bind(this),\n }\n this.isReady = true;\n this.draw();\n\n\n resolve();\n })\n });\n }\n\n public unload() {\n this.scene.remove(this.dimensionPatiosPlanRight);\n this.scene.remove(this.dimensionPatiosPlanLeft);\n this.scene.remove(this.dimensionPatiosFrontRight);\n if (this.APP.patiosManager && this.APP.patiosManager.patiosGroup) {\n this.APP.patiosManager.patiosGroup.remove(\n this.dimensionPatiosFrontBottom,\n //this.dimensionPatiosFrontRight,\n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom,\n this.dimensionPatiosLeftRight,\n this.dimensionPatiosLeftLeft,\n this.dimensionPatiosPlanBottom,\n //this.dimensionPatiosPlanRight,\n this.dimensionPlanMiddle,\n this.dimensionPlanMidleLeft\n );\n }\n }\n \n public draw() {\n if (!this.isReady) {\n return;\n }\n\n // this.dimensionPatiosPlanBottom.children = [];\n // this.dimensionPatiosPlanRight.children = [];\n // this.dimensionPatiosPlanLeft.children = [];\n this.dimensionPatiosPlanBottom.children = this.dimensionPatiosPlanBottom.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.LEFT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.RIGHT_OVERHANG\n );\n this.dimensionPatiosPlanRight.children = this.dimensionPatiosPlanRight.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.FRONT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.BACK_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY\n );\n this.dimensionPatiosPlanLeft.children = this.dimensionPatiosPlanLeft.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL \n )\n this.dimensionPatiosFrontBottom.children = [];\n this.dimensionPatiosFrontRight.children = [];\n this.dimensionPatiosLeftBottom.children = [];\n this.dimensionPatiosLeftRight.children = [];\n this.dimensionPatiosLeftLeft.children = [];\n this.dimensionPatiosRightBottom.children = [];\n this.dimensionPatiosRightLeft.children = [];\n this.dimensionPatiosRightRight.children = [];\n this.dimensionPlanMiddle.children = [];\n this.dimensionPlanMidleLeft.children = [];\n\n //this.scene.remove(...this.scene.children.filter(o => o.userData.type == 'BOXHELPER'));\n\n this.totalBaySize = this.APP.dialogEditBay.listBay.map(b => b.value).reduce((sum, current) => sum + current);\n // for (let b of this.APP.dialogEditBay.listBay) {\n // this.totalBaySize += b.value;\n // }\n\n this.box = this.utils.getSceneBox();\n // let boxHelper = new Box3Helper(this.MANAGER.boundingBox);\n // boxHelper.userData = { type: \"BOXHELPER\" };\n // this.scene.add(boxHelper);\n\n\n this.drawDimensionPatiosPlanBottom();\n this.drawDimensionPatiosPlanRight();\n // this.drawDimensionPatiosPlanLeft();\n\n this.drawDimensionPatiosFrontBottom();\n this.drawDimensionPatiosFrontRight();\n\n this.drawDimensionPatiosLeftBottom();\n this.drawDimensionPatiosLeftRight();\n this.drawDimensionPatiosLeftLeft();\n\n this.drawDimensionPatiosRightBottom();\n this.drawDimensionPatiosRightLeft();\n this.drawDimensionPatiosRightRight();\n\n this.drawDimensionMidle();\n this.drawDimensionMidleLeft();\n\n //testing\n // [\n // this.dimensionPatiosFrontBottom,\n // this.dimensionPatiosFrontRight,\n // this.dimensionPatiosRightBottom,\n // this.dimensionPatiosRightLeft,\n // this.dimensionPatiosRightRight,\n // this.dimensionPatiosLeftBottom,\n // this.dimensionPatiosLeftRight,\n // this.dimensionPatiosLeftLeft,\n // ].forEach(g => { g.visible = true });\n\n // var offset = this.calulateBoundingBox();\n // this.dimensionPatiosPlanRight.position.setX(offset.right);\n // this.dimensionPatiosPlanLeft.position.setX(offset.left);\n // this.dimensionPatiosPlanBottom.position.setZ(offset.front);\n\n // let existingHouseDimLeft = this.APP.scene.children.find(c => c.userData.type == GEOMETRY_TYPE.DIMENSION && c.userData.position?.planLeft);\n // //let existingHouseDimBox = new Box3().setFromObject(existingHouseDimLeft);\n // if(existingHouseDimLeft && existingHouseDimLeft.position.x > offset.left){\n // existingHouseDimLeft.position.setX(offset.left - 500);\n // }\n\n this.APP.dimensionManager.draw();\n }\n\n private drawDimensionMidleLeft() {\n let offsetX = 0;\n\n let dimLeft = this.utils.createArrowLine([{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }]);\n dimLeft.visible = false;\n dimLeft.position.setX(-300)\n let textLeft = this.utils.createText(\"Panel direction\", [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }], this.textParameter, new Vector3(-500, 0, 650));\n textLeft.userData.rotation = new Vector3(0, Math.PI / 2, 0)\n textLeft.visible = false;\n\n let dimRight = dimLeft.clone()\n dimRight.position.setX(300);\n let textRight = textLeft.clone();\n textRight.position.setX(500);\n \n this.dimensionPlanMidleLeft.add(dimLeft);\n this.dimensionPlanMidleLeft.add(textLeft);\n this.dimensionPlanMidleLeft.add(dimRight);\n this.dimensionPlanMidleLeft.add(textRight);\n\n if (this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT) {\n let offsetZ = - UI.existingWidth1 / 2 + this.totalBaySize + UI.overhangFront;\n this.dimensionPlanMidleLeft.position.set(offsetX, 0, offsetZ);\n this.dimensionPlanMidleLeft.rotation.set(0, Math.PI, 0);\n }\n else {\n let offsetZ = - UI.existingWidth1 / 2;\n this.dimensionPlanMidleLeft.rotation.set(0, 0, 0);\n this.dimensionPlanMidleLeft.position.set(offsetX, 0, offsetZ);\n }\n }\n private drawDimensionMidle() {\n let offsetX = 0;\n\n let dimLeft = this.utils.createArrowLine([{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }]);\n dimLeft.visible = false;\n dimLeft.rotation.set(0, -Math.PI / 2, 0);\n\n let textLeft = this.utils.createText(`${UI.patiosPitch} degree`, [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }], this.textParameter, new Vector3(-500, 0, 200));\n textLeft.visible = false;\n\n let dimRight = dimLeft.clone()\n dimRight.rotation.set(0, Math.PI / 2, 0);\n\n let textRight = textLeft.clone();\n textRight.position.setX(500);\n \n this.dimensionPlanMiddle.add(dimLeft);\n this.dimensionPlanMiddle.add(textLeft);\n this.dimensionPlanMiddle.add(dimRight);\n this.dimensionPlanMiddle.add(textRight);\n\n let offsetZ = - UI.existingWidth1 / 2 + this.totalBaySize / 2;\n this.dimensionPlanMiddle.rotation.set(0, 0, 0);\n this.dimensionPlanMiddle.position.set(offsetX, 0, offsetZ);\n }\n\n private drawDimensionPatiosPlanBottom() {\n let views = [ { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS } ];\n\n let _dimensionDistane = this.dimensionDistance2;\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n if(this.APP.sldExistingWidth1.currentValue > 0){\n _dimensionDistane = this.dimensionDistance;\n }\n }\n\n let textStr = this.utils.getDimensionValue(this.APP.sldSpan.currentValue);\n\n let options : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldSpan.currentValue,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.SPAN,\n hasTextClone: false,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views },\n textCloneUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views },\n textCloneRotation: new Vector3(0, 0, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, 0, 0)\n }\n let dimSpan = this.dimensionPatiosPlanBottom.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN) as Dimension;\n if(!dimSpan){\n new Dimension(options);\n } else {\n dimSpan.update(options);\n }\n\n //Left over hang\n this.addOverhang(this.dimensionPatiosPlanBottom, UI.span / 2, this.APP.sldLeftOverhang.currentValue, views, \"Left\", 0, \"z\", DIMENSION_LABEL_TYPE.LEFT_OVERHANG);\n this.addOverhang(this.dimensionPatiosPlanBottom, UI.span / 2, this.APP.sldRightOverhang.currentValue, views, \"Right\", 0, \"z\", DIMENSION_LABEL_TYPE.RIGHT_OVERHANG);\n this.repositionDimension(this.dimensionPatiosPlanBottom, DIMENSION_LOCATION.PLAN_BOTTOM);\n }\n onDimDrag(event){\n this.utils.handlerDimDragEvent(event, this.startPos, this.startMatrix, this.startBayLength);\n this.startPos = event.object.position.clone();\n }\n onDimDragStart(event){\n this.startPos = event.object.position.clone();\n this.startMatrix = event.object.matrixWorld.clone();\n if(event.object.userData?.dimType === DIMENSION_LABEL_TYPE.BAY){\n let bayNum = event.object.userData.bayNum;\n this.startBayLength = UI.listBay[+bayNum].value;\n }\n }\n private drawDimensionPatiosPlanRight() {\n let offsetDimensionZ = this.totalBaySize / 2\n - this.APP.sldExistingWidth1.currentValue / 2;\n\n let _dimensionDistane = this.dimensionDistance2;\n if (this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3) {\n if (this.APP.sldExistingWidth1.currentValue > 0) {\n _dimensionDistane = this.dimensionDistance;\n }\n }\n\n let offsetDimensionX = this.box.max.x + this.dimensionDistance2;\n if (this.APP.sltExistingType.currentValue == 1) {\n offsetDimensionX += this.APP.sldEaveWidth.currentValue;\n }\n\n this.dimensionPatiosPlanRight.position.set(offsetDimensionX, 0, offsetDimensionZ);\n\n let views = [ { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS } ];\n let offsetX = -this.totalBaySize / 2;\n this.dimensionPatiosPlanRight.children = this.dimensionPatiosPlanRight.children.filter(el => \n el.userData?.groupType != DIMENSION_LABEL_TYPE.BAY\n || (el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY && el.userData?.bayNum < HomeComponent.ins.dialogEditBay.listBay.length)\n );\n \n for(let i = 0; i <= this.APP.dialogEditBay.listBay.length; i++){\n let b: IBay = {index: 0, value: 0, isCut: false};\n if(i < this.APP.dialogEditBay.listBay.length){\n b = this.APP.dialogEditBay.listBay[i];\n }\n\n if(i < this.APP.dialogEditBay.listBay.length){\n let textStr = this.utils.getDimensionValue(b.value);\n let options : AddDimensionOptions = {... this.options,\n lineLength: b.value,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(offsetX + b.value / 2, 0, 0),\n textPos: new Vector3(offsetX + b.value / 2, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.BAY,\n bayNum: i,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, position: { bottom: true }, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textRotation: new Vector3(0, - Math.PI, 0),\n fitZ: -10\n }\n let dimBay = this.dimensionPatiosPlanRight.children.find(el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY \n && el.userData?.bayNum == i\n ) as Dimension;\n if(!dimBay){\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n offsetX += b.value;\n }\n\n let offsetRight = this.totalBaySize / 2 ;\n let offsetLeft = this.totalBaySize / 2;\n\n this.addOverhang(this.dimensionPatiosPlanRight, offsetRight, this.APP.sldFrontOverhang.currentValue, views, \"Right\", Math.PI, \"y\", DIMENSION_LABEL_TYPE.FRONT_OVERHANG);\n this.addOverhang(this.dimensionPatiosPlanRight, offsetLeft, this.APP.sldBackOverhang.currentValue, views, \"Left\", Math.PI, \"y\", DIMENSION_LABEL_TYPE.BACK_OVERHANG);\n this.repositionDimension(this.dimensionPatiosPlanRight, DIMENSION_LOCATION.PLAN_RIGHT);\n }\n \n private drawDimensionPatiosFrontBottom() {\n let dimOffsetY = -this.dimensionDistance2;\n this.dimensionPatiosFrontBottom.position.set(0, dimOffsetY, 0);\n\n let views = [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosPlanBottom.children.forEach( groupDim => {\n groupDim.children.filter(c => c.userData.subtype != GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT).forEach(e => {\n let dim = e.clone();\n dim.userData['views'] = views;\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.rotation.set(0, Math.PI, 0);\n dim.userData['rotation'] = new Vector3(0, 0, 0);\n dim.userData['position'] = {...e.userData.position, bottom: true};\n }\n this.dimensionPatiosFrontBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosFrontRight() {\n let views = [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }];\n\n let _dimensionDistane = this.dimensionDistance2;\n if (this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3) {\n if (this.APP.sldExistingWidth1.currentValue > 0) {\n _dimensionDistane = this.dimensionDistance;\n }\n }\n let height = this.utils.getHeightByAngle(UI.height, UI.span / 2, UI.patiosPitch, 1);\n let dimOffsetX = this.box.max.x;\n //let dimOffsetX = this.totalBaySize / 2 + this.APP.patiosManager.patiosGroup.position.x + _dimensionDistane;\n let dimOffsetY = height / 2;\n //if (this.APP.sldExistingLength.currentValue / 2 > this.totalBaySize / 2) {\n // dimOffsetX = this.APP.sldExistingLength.currentValue / 2 + _dimensionDistane;\n //}\n\n //if (this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3) {\n // dimOffsetX += this.APP.sldExistingLength2.currentValue;\n //}\n\n this.dimensionPatiosFrontRight.position.set(dimOffsetX, dimOffsetY, 0);\n\n //-------- \n let scaleLength = height / this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-dimOffsetY);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(dimOffsetY);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(height);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, 0, -Math.PI / 2) };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosFrontRight.add(line, cap1, cap2, text, ...this.utils.addArrowForLine(line));\n this.repositionDimension(this.dimensionPatiosFrontRight, DIMENSION_LOCATION.FRONT_RIGHT);\n }\n private drawDimensionPatiosLeftBottom() {\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z;\n\n this.dimensionPatiosLeftBottom.position.set(0, dimOffsetY, dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n this.dimensionPatiosPlanRight.children.forEach( groupDim => {\n groupDim.children.forEach(e => {\n if(e.userData?.subType == GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT)\n return;\n \n let dim = e.clone();\n dim.userData['views'] = views;\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.rotation.set(0, 0, 0);\n dim.userData['views'] = [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }];\n dim.userData['rotation'] = new Vector3(0, 0, 0);\n dim.userData['position'] = {...e.userData.position, bottom: true}; \n }\n this.dimensionPatiosLeftBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosLeftRight() {\n let dimOffsetY = this.utils.getHeightByAngle(UI.height, UI.span / 2, UI.patiosPitch, 1);\n let dimOffsetZ = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance2 - this.APP.sldExistingWidth1.currentValue/2;\n if(this.APP.sldExistingWidth1.currentValue + this.APP.sldExistingWidth2.currentValue > this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue){\n dimOffsetZ = this.APP.sldExistingWidth1.currentValue/2 + this.APP.sldExistingWidth2.currentValue + this.dimensionDistance2 - 290;\n }\n if(this.APP.sldExistingLength2.currentValue > 0){\n dimOffsetZ += 500;\n }\n\n this.dimensionPatiosLeftRight.position.set(0,dimOffsetY/2,dimOffsetZ);\n\n let views = [ \n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n let offsetLength = dimOffsetY;\n let scaleLength = offsetLength / this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength/2);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength/2);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }], rotation: new Vector3(-Math.PI / 2, 0, 0) };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosLeftRight.add(line, cap1, cap2, text, ...this.utils.addArrowForLine(line));\n this.repositionDimension(this.dimensionPatiosLeftRight, DIMENSION_LOCATION.LEFT_RIGHT);\n }\n private drawDimensionPatiosRightBottom() {\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z;\n\n this.dimensionPatiosRightBottom.position.set(0, dimOffsetY, dimOffsetZ);\n\n let views = [{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosPlanRight.children.forEach(groupDim => {\n groupDim.children.forEach(e => {\n if(e.userData?.subType == GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT)\n return;\n \n let dim = e.clone();\n dim.userData['views'] = views;\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.userData['rotation'] = new Vector3(0, 0, 0);\n dim.userData['position'] = {...e.userData.position, bottom: true};\n }\n this.dimensionPatiosRightBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosRightLeft() {\n let dimOffsetY = this.utils.getHeightByAngle(UI.height, UI.span / 2, UI.patiosPitch, 1);\n let dimOffsetZ = this.dimensionPatiosLeftRight.position.z;//this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance2 - this.APP.sldExistingWidth1.currentValue/2;\n //this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance2;\n\n this.dimensionPatiosRightLeft.position.set(0,dimOffsetY/2,dimOffsetZ);\n\n let views = [ { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosLeftRight.children.forEach(e => {\n let dim = e.clone();\n dim.userData['views'] = views;\n if(e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n dim.userData['rotation'] = new Vector3(Math.PI/2,0,0);\n dim.rotation.set(0,Math.PI,0);\n }\n this.dimensionPatiosRightLeft.add(dim);\n });\n this.repositionDimension(this.dimensionPatiosRightLeft, DIMENSION_LOCATION.RIGHT_LEFT);\n }\n private drawDimensionPatiosLeftLeft() {\n let dimOffsetY = this.APP.sldBuildingHeight.currentValue;\n let dimOffsetZ = this.APP.sldExistingWidth1.currentValue / 2 + 1800;\n\n this.dimensionPatiosLeftLeft.position.set(0, dimOffsetY / 2, -dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n let offsetLength = dimOffsetY;\n let scaleLength = offsetLength / this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength / 2);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength / 2);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }], rotation: new Vector3(Math.PI / 2, 0, 0) };\n text.position.set(0, 200, 0);\n\n this.dimensionPatiosLeftLeft.add(line, cap1, cap2, text, ...this.utils.addArrowForLine(line));\n }\n private drawDimensionPatiosRightRight() {\n let dimOffsetY = this.APP.sldBuildingHeight.currentValue;\n let dimOffsetZ = this.APP.sldExistingWidth1.currentValue / 2 + 1800;\n\n this.dimensionPatiosRightRight.position.set(0, dimOffsetY / 2, -dimOffsetZ);\n\n let views = [{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosLeftLeft.children.forEach(e => {\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n let dim = e.clone();\n dim.userData['views'] = views;\n dim.userData['rotation'] = new Vector3(-Math.PI / 2, 0, 0);\n dim.rotation.set(0, Math.PI, 0);\n dim.position.set(dim.position.x, -dim.position.y, dim.position.z);\n this.dimensionPatiosRightRight.add(dim);\n }\n });\n }\n private addOverhang(groupDim: Object3D, offset: number, overhangValue: number, views: any, side: string, rotateText: number, axis: string, labelType?: string) {\n if (overhangValue == 0){\n let dim = groupDim.children.find(el => el.userData?.groupType == labelType) as Dimension;\n if(dim){\n groupDim.remove(dim)\n }\n return;\n }\n\n let textStr = this.utils.getDimensionValue(overhangValue);\n\n let textRotation = new Vector3();\n let textUserData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, position: { overhang: true }};\n if (axis === \"z\") {\n textRotation.setZ(rotateText);\n textUserData['rotation'] = new Vector3(0, 0, -rotateText / 2);\n textUserData['position']['bottom'] = true;\n }\n else if (axis === \"y\") {\n textRotation.setY(rotateText);\n textUserData['rotation'] = new Vector3(0, -rotateText / 2, 0);\n }\n else if (axis === \"x\") {\n textRotation.setX(rotateText);\n textUserData['rotation'] = new Vector3(-rotateText / 2, 0, 0);\n }\n\n let linePos = new Vector3();\n if (side === \"Left\") {\n linePos.setX(-offset - overhangValue / 2);\n }\n else if (side === \"Right\") {\n linePos.setX(offset + overhangValue / 2);\n }\n let fitZ = 0;\n if(labelType){\n if(axis === 'z'){\n fitZ = 10;\n } else if(axis === 'y'){\n fitZ = -10;\n }\n }\n let options : AddDimensionOptions = {... this.options,\n lineLength: overhangValue,\n container: groupDim,\n views: views,\n linePos: linePos,\n textPos: linePos.clone().setY(linePos.y - 200),\n labelType: labelType ? labelType : null,\n fitZ: fitZ,\n textRotation: textRotation,\n textUserData: textUserData\n }\n let dim = groupDim.children.find(el => el.userData?.groupType == labelType) as Dimension;\n if(!dim){\n new Dimension(options);\n } else {\n dim.update(options)\n }\n }\n private getTextCover(textGeo: TextBufferGeometry, labelType: string, pos: Vector3, fitZ = 0, bayNum?: number){\n let textSize = new Vector3();\n textGeo.boundingBox.getSize(textSize)\n\n let textCover = new Mesh(new BoxBufferGeometry(textSize.x, textSize.y, textSize.z))\n textCover.position.set(pos.x , pos.y, pos.z + fitZ);\n textCover.userData = { type: GEOMETRY_TYPE.TEXT_COVER, labelType };\n if(bayNum !== undefined){\n textCover.userData['bayNum'] = bayNum;\n }\n textCover.material['opacity'] = 0;\n textCover.material['transparent'] = true;\n\n return textCover\n }\n\n public getOutlines(): Printing2DGeometry {\n let lsGeometries: Printing2DLine[] = [];\n let lsText: Print2DText[] = [];\n\n for (let dim of [\n ...this.dimensionPatiosPlanBottom.children,\n ...this.dimensionPatiosPlanRight.children,\n ...this.dimensionPatiosPlanLeft.children,\n ...this.dimensionPatiosFrontBottom.children,\n ...this.dimensionPatiosFrontRight.children,\n ...this.dimensionPatiosLeftBottom.children,\n ...this.dimensionPatiosLeftRight.children,\n ...this.dimensionPatiosLeftLeft.children,\n ...this.dimensionPatiosRightBottom.children,\n ...this.dimensionPatiosRightLeft.children,\n ...this.dimensionPatiosRightRight.children,\n ...this.dimensionPlanMiddle.children,\n ...this.dimensionPlanMidleLeft.children\n ]) {\n if (!dim.userData.views) {\n console.log(\"TEXT NO VIEW\", dim);\n continue;\n }\n\n\n if(dim.type == 'Group'){\n dim.children.forEach(el => {\n el.updateMatrix();\n let _clone = el.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(el.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n \n el.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(el.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(el.matrixWorld);\n\n let textRotation = el.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, el, pos, textRotation, points)\n })\n } else{\n dim.updateMatrix();\n let _clone = dim.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(dim.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n \n dim.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(dim.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(dim.matrixWorld);\n\n let textRotation = dim.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, dim, pos, textRotation, points)\n }\n }\n return { lines: lsGeometries, texts: lsText };\n }\n private getDimInfo(lsGeometries: Printing2DLine[], lsText: Print2DText[], dim: Object3D, pos: Vector3, textRotation: Vector3, points: Vector3[]){\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && dim.userData.views && dim.userData.value) {\n let box = new Box3().setFromObject(dim.parent);\n let startEnd = this.utils.getStartEndPoint(box);\n let line = new Line3(startEnd[0], startEnd[1]);\n\n let projectPoint = new Vector3();\n line.closestPointToPoint(pos, true, projectPoint);\n let _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(10));\n\n if(dim.userData.position?.bottom){\n if(dim.userData.position?.overhang){\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(180));\n }\n else{\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(120));\n }\n }\n else{\n if(dim.userData.position?.overhang){\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(100));\n }\n }\n\n let p = new Vector3().applyMatrix4(dim.matrixWorld);\n\n lsText.push({\n value: dim.userData.value,\n position: p,\n rotation: textRotation,\n views: dim.userData.views\n });\n\n \n }\n else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_LINE) {\n // this.scene.add(new LineSegments(new Geometry().setFromPoints(points), new LineBasicMaterial({color: new Color('red')})));\n\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_CAP) {\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n else if (dim.userData.type == \"Arrow\") {\n let geo = ((dim as Line).geometry as Geometry).clone();\n geo.applyMatrix4(dim.matrixWorld);\n lsGeometries.push({\n vertices: geo.vertices,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n }\n public destroy(): void {\n this.unregisterEvent();\n this.unload();\n }\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldFrontOverhang,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sldExistingWallHeight,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch,\n\n\n this.APP.sldEaveWidth\n ];\n this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.controlsToRegisterEvent = undefined;\n }\n public uiChanged(preVal: number, curVal: number): void {\n this.draw();\n }\n private calulateBoundingBox(){\n this.APP.scene.remove(...this.APP.scene.children.filter(c => c.userData.type == 'BOX_HELPER_'));\n let patiosBox = this.MANAGER.boundingBox;\n \n let planRightBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosPlanRight);\n planRightBox.min.x = patiosBox.max.x;\n planRightBox.max.x = patiosBox.max.x + 500;\n planRightBox.max.y = 10000;\n \n let planLeftBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosPlanLeft);\n planLeftBox.min.x = patiosBox.min.x - 500;\n planLeftBox.max.x = patiosBox.min.x;\n planLeftBox.max.y = 10000;\n\n let planBottomBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosPlanBottom);\n let planBottomBoxWidth = planBottomBox.max.z - planBottomBox.min.z;\n planBottomBox.min.z = patiosBox.max.z;\n planBottomBox.max.z = patiosBox.max.z + planBottomBoxWidth;\n planBottomBox.max.y = 10000;\n \n let objs = [];\n\n objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && c.userData.position?.width1 || c.userData.position?.width2 || c.userData.position?.length2)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL)\n );\n\n // for(let e of objs){\n // let boxModelHelper = new BoxHelper(e);\n // boxModelHelper.userData = {type: 'BOX_HELPER_'};\n // this.scene.add(boxModelHelper);\n // }\n\n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(planRightBox.intersectsBox(objBox)){\n intersectBox = true;\n planRightBox.translate(new Vector3(100,0,0))\n }\n if(planLeftBox.intersectsBox(objBox)){\n intersectBox = true;\n planLeftBox.translate(new Vector3(-100,0,0))\n }\n if(planBottomBox.intersectsBox(objBox)){\n intersectBox = true;\n planBottomBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(planRightBox);\n // boxHelper.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper);\n\n // let boxHelper2 = new Box3Helper(planLeftBox);\n // boxHelper2.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper2);\n\n // let boxHelper3 = new Box3Helper(planBottomBox);\n // boxHelper3.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper3);\n \n return { left: planLeftBox.min.x, right: planRightBox.max.x, front: planBottomBox.max.z };\n }\n private repositionDimension(dimension, location, extraDistance = 0){\n \n this.APP.scene.remove(...this.APP.scene.children.filter(c => c.userData.type == location));\n\n let patiosBox = this.MANAGER.boundingBox;\n \n if(location == DIMENSION_LOCATION.FRONT_RIGHT){\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.max.x;\n dimBox.max.x = patiosBox.max.x + 500;\n dimBox.max.z = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && !c.userData.position.length1 && !c.userData.position.length2)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && !c.userData.position.length1 && !c.userData.position.length2)\n );\n\n if(this.APP.sldExistingWidth2.currentValue > 0){\n objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && !c.userData.position.length1)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && !c.userData.position.length1)\n );\n }\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(100,0,0))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n \n dimension.position.setX(dimBox.max.x + extraDistance);\n }\n else if(location == DIMENSION_LOCATION.PLAN_LEFT){\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.min.x - 500;\n dimBox.max.x = patiosBox.min.x;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF || c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(-100,0,0))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setX(dimBox.min.x + extraDistance);\n }\n else if(location == DIMENSION_LOCATION.PLAN_RIGHT){\n // patiosBox = this.APP.utils.getObjectsBoundingBox(\n // this.MANAGER.patiosGroup.children.filter(c => c.userData.type != GEOMETRY_TYPE.DIMENSION && c.userData.type != GEOMETRY_TYPE.ROOF_PATIOS)\n // );\n\n // let patiosBoxHelper = new Box3Helper(patiosBox);\n // patiosBoxHelper.userData = {type: location};\n // this.scene.add(patiosBoxHelper);\n\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.max.x;\n dimBox.max.x = patiosBox.max.x + 500;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL)\n );\n\n // for(let e of objs){\n // let boxModelHelper = new BoxHelper(e);\n // boxModelHelper.userData = {type: location};\n // this.scene.add(boxModelHelper);\n // }\n \n // for(let i = 0; i < 100; i++){\n // let intersectBox = false;\n // for(let o of objs){\n // let objBox = this.APP.utils.getObjectBoundingBox(o);\n // if(dimBox.intersectsBox(objBox)){\n // intersectBox = true;\n // dimBox.translate(new Vector3(100,0,0))\n // }\n // }\n \n // if(!intersectBox)\n // break;\n // }\n\n \n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n dimBox.translate(new Vector3(objBox.max.x - dimBox.min.x,0,0));\n }\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setX(dimBox.max.x + extraDistance);\n }\n else if(location == DIMENSION_LOCATION.PLAN_BOTTOM){\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL)\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setZ(dimBox.max.z + extraDistance);\n }\n else if(location == DIMENSION_LOCATION.LEFT_RIGHT){\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n dimBox.min.x = -10000;\n dimBox.max.x = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && c.userData.position?.left)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && c.userData.position?.left)\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setZ(dimBox.max.z);\n }\n else if(location == DIMENSION_LOCATION.RIGHT_LEFT){\n let dimBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosLeftRight);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n \n dimBox.min.x = -10000;\n dimBox.max.x = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && c.userData.position?.right)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && c.userData.position?.right)\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setZ(dimBox.max.z);\n }\n }\n}\n","import { PostAndBeamManager } from './post-and-beam.manager';\nimport { RoofManager } from './roof.manager';\nimport { HomeComponent as AppComponent } from '../../containers/home/home.component';\nimport { PatiosManager, RafterBeamAndInternalBeamInfo } from '../patios.manager';\nimport { Printing2DGeometry } from 'src/app/core/models';\nimport { Group, Box3, Vector3 } from 'three';\nimport { GEOMETRY_CATEGORY, OFFSET_GUTTER_TO_WALL } from 'src/app/app.config';\nimport { DimensionManager } from './dimension.manager';\nimport { CUTOUT_ENABLE, EXISTING_BUILDING_CONFIG, RAKECUT_TYPE } from 'src/app/app.constants';\nimport { UI } from '../ui';\n\nexport class GableFBExistingBuildingManager implements PatiosManager{\n private APP: AppComponent;\n patiosGroup: Group;\n public boundingBox: Box3;\n private postAndBeamManager: PostAndBeamManager;\n private roofManager: RoofManager;\n public dimesionManager: DimensionManager;\n public ignoreBayEvent: boolean = false;\n \n private updateEventHandle: any;\n private controlsToRegisterEvent: Array;\n private deferHandle;\n private deferTimeout = EXISTING_BUILDING_CONFIG.CUTOUT_DEFFER_TIME_OUT;\n public get cutoutCondition(): boolean {\n return [\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldFrontOverhang\n ].map(x => x.currentValue).reduce((a, b) => a + b, 0) - this.APP.sldExistingWidth1.currentValue >= EXISTING_BUILDING_CONFIG.CUTOUT_ALLOW;\n };\n public get rakecutCondition(): boolean{\n let patiosWidth = this.APP.dialogEditBay.totalBaySize + this.APP.sldLeftOverhang.currentValue + this.APP.sldRightOverhang.currentValue;\n let patiosLength = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue;\n\n return false;\n }\n\n public patiosLength: number;\n public patiosWidth: number;\n public firstLoad = true;\n\n constructor(app: AppComponent) {\n this.APP = app;\n this.patiosGroup = new Group();\n this.patiosGroup.userData = { category: GEOMETRY_CATEGORY.PATIOS }\n app.scene.add(this.patiosGroup);\n \n this.postAndBeamManager = new PostAndBeamManager(app, this);\n this.roofManager = new RoofManager(app, this);\n this.dimesionManager = new DimensionManager(app, this);\n\n this.registerEvents();\n }\n\n load(): Promise {\n return Promise.all([\n this.postAndBeamManager.optimize(),\n this.roofManager.optimize(),\n this.dimesionManager.optimize()\n ])\n .then(() => {\n this.postAndBeamManager.load();\n this.roofManager.load();\n this.dimesionManager.load();\n });\n }\n loadBracket(bracketQuantity: number): void {\n \n }\n loadBracketCutout(bracketQuantity: number): void{\n \n }\n loadSideGableBracket(bracketQuantity: number): void{\n \n }\n loadRafterBeamAndInternalBeam(info: RafterBeamAndInternalBeamInfo): void{\n \n }\n public destroy(): void {\n this.postAndBeamManager.destroy();\n this.roofManager.destroy();\n this.dimesionManager.destroy();\n this.unRegisterEvent();\n }\n\n registerEvents(): void {\n this.updateEventHandle = this.updateDefer.bind(this);\n this.controlsToRegisterEvent = [\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sltCutOut,\n this.APP.sldFrontOverhang,\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltColourBarge,\n this.APP.sltColourGutter,\n this.APP.sltColourDownpipe,\n this.APP.sltColourRoof,\n this.APP.sldSpan,\n this.APP.sldExistingWallHeight,\n this.APP.sldEaveWidth,\n this.APP.sldFasciaDepth,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldFlyOverBracketHeight,\n this.APP.sltColourBeam,\n this.APP.sltColourPost,\n this.APP.sltColourBracket,\n this.APP.sltColourFasciaBracket,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n this.APP.sltLeftCutType,\n this.APP.sldLeftCutVertical,\n this.APP.sldLeftCutHorizontal,\n this.APP.sltRightCutType,\n this.APP.sldRightCutVertical,\n this.APP.sldRightCutHorizontal,\n this.APP.sldBuildingHeight,\n this.APP.sltPanelDirection,\n this.APP.sltPanelDirectionShow,\n this.APP.sltBeamLayoutShow,\n this.APP.btnTurnOnPanel\n ];\n this.controlsToRegisterEvent.forEach(c => { c.addAction(this.updateEventHandle); });\n }\n unRegisterEvent(): void {\n this.controlsToRegisterEvent.forEach(c => c.removeAction(this.updateEventHandle));\n }\n updateDefer(previousValue: number, currentValue: number) {\n if(this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES || this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE || this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE){\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => { this.update(previousValue, currentValue) }, this.deferTimeout);\n }\n else{\n this.update(previousValue, currentValue);\n }\n }\n update(preVal: number, curVal: number) {\n let totalBaySize = this.APP.dialogEditBay.totalBaySize;\n \n let diff = this.APP.sldExistingLength.currentValue - UI.span;\n \n this.patiosLength = totalBaySize + UI.overhangFront;\n this.patiosWidth = UI.span + UI.overhangLeft + UI.overhangRight;\n \n //let cutoutCondition = this.cutoutCondition.map(x => x.currentValue).reduce((a,b) => a + b, 0) - this.APP.sldExistingWidth1.currentValue >= EXISTING_BUILDING_CONFIG.CUTOUT_ALLOW;\n if (this.APP.sltExistingType.currentValue == 1) {\n if(this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition){\n this.patiosGroup.position.setX(-diff / 2 + this.APP.sldLeftOverhang.currentValue - this.APP.sldExistingLength2.currentValue + OFFSET_GUTTER_TO_WALL);\n }\n else{\n this.patiosGroup.position.setX(-diff / 2 + this.APP.sldLeftOverhang.currentValue + OFFSET_GUTTER_TO_WALL);\n }\n }\n else if (this.APP.sltExistingType.currentValue == 2) {\n if(this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition){\n this.patiosGroup.position.setX(diff / 2 - this.APP.sldRightOverhang.currentValue + this.APP.sldExistingLength2.currentValue - OFFSET_GUTTER_TO_WALL);\n }\n else{\n this.patiosGroup.position.setX(diff / 2 - this.APP.sldRightOverhang.currentValue - OFFSET_GUTTER_TO_WALL);\n }\n }\n else {\n this.patiosGroup.position.setX(0);\n }\n\n Promise.all([\n this.roofManager.load(),\n this.postAndBeamManager.load()\n ]).then(() => {\n this.boundingBox = this.getPatiosBox();\n this.dimesionManager.draw();\n })\n }\n getOutlines(): Printing2DGeometry {\n let dimensionOutline = this.dimesionManager.getOutlines();\n return { \n lines: [\n ...this.postAndBeamManager.getSection().lines,\n ...this.roofManager.getOutLines().lines,\n ...dimensionOutline.lines\n ], \n texts: dimensionOutline.texts\n }\n }\n public getPatiosBox(): Box3{\n let left = - UI.span / 2 - UI.overhangLeft;\n let right = UI.span / 2 + UI.overhangRight;\n let front = this.APP.dialogEditBay.totalBaySize + this.APP.sldFrontOverhang.currentValue;\n let back = 0;\n let height = this.APP.sldBuildingHeight.currentValue;\n \n let box = new Box3();\n box = box.expandByPoint(new Vector3(left, 0, front));\n box = box.expandByPoint(new Vector3(right, height, back));\n \n if(this.APP.sltExistingType.currentValue == 1){\n let diff = (this.APP.sldExistingLength.currentValue - UI.span) / 2;\n box.translate(new Vector3(-diff, 0, 0));\n box.translate(new Vector3(0,0,-this.APP.sldExistingWidth1.currentValue/2));\n box.translate(new Vector3(this.APP.sldLeftOverhang.currentValue, 0, 0));\n\n if(this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition){\n box.translate(new Vector3(-this.APP.sldExistingLength2.currentValue, 0, 0));\n }\n }\n else if(this.APP.sltExistingType.currentValue == 2){\n let diff = (this.APP.sldExistingLength.currentValue - UI.span) / 2;\n box.translate(new Vector3(diff, 0, 0));\n box.translate(new Vector3(0,0,-this.APP.sldExistingWidth1.currentValue/2));\n box.translate(new Vector3(-this.APP.sldRightOverhang.currentValue, 0, 0));\n\n if(this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition){\n box.translate(new Vector3(this.APP.sldExistingLength2.currentValue, 0, 0));\n }\n }\n else if(this.APP.sltExistingType.currentValue == 3){\n box.translate(new Vector3(0,0,-this.APP.sldExistingWidth1.currentValue/2));\n }\n\n // if(!environment.production){\n // this.APP.scene.remove(...this.APP.scene.children.filter(o => o.userData.type == 'BOXHELPER'));\n // let boxHelper = new Box3Helper(box);\n // boxHelper.userData = { type: \"BOXHELPER\" };\n // this.APP.scene.add(boxHelper);\n // }\n \n return box;\n }\n}\n","import { HomeComponent as AppComponent } from \"../../containers/home/home.component\";\nimport {\n Material,\n Mesh,\n Vector3,\n BufferGeometry,\n BoxHelper,\n Geometry,\n BoxBufferGeometry,\n Group,\n Matrix4,\n Plane,\n LineSegments,\n} from \"three\";\nimport { Util, getRafterBeamEndCapCode } from \"../utils\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport {\n CONFIG as env,\n GEOMETRY_TYPE,\n GEOMETRY_CATEGORY,\n} from \"src/app/app.config\";\nimport {\n BUILDING_SIDE,\n EXISTING_BUILDING_CONFIG as CONST,\n EXISTING_BUILDING_CONFIG,\n RAKECUT_TYPE,\n} from \"src/app/app.constants\";\nimport {\n GeometryInfo,\n Printing2DLine,\n Printing2DGeometry,\n Print2DView,\n ViewType,\n LineType,\n} from \"src/app/core/models\";\nimport { GableFBExistingBuildingManager } from \".\";\nimport { UI } from \"../ui\";\nimport _ from \"lodash\";\n\nexport class PostAndBeamManager {\n private scene: Group;\n private APP: AppComponent;\n private material: Material;\n private utils: Util;\n private geometryManager: GeometryManager;\n private postInfo: GeometryInfo;\n private beamInfo: GeometryInfo;\n private beamRakecutInfoLeft: GeometryInfo;\n private beamRakecutInfoRight: GeometryInfo;\n private geo_centerSuperiorPost: GeometryInfo;\n private geo_beamEndCap: GeometryInfo;\n private geo_groundBase: GeometryInfo;\n private geo_RafterBeam: GeometryInfo;\n private geo_rafterBeamEndCap: GeometryInfo;\n private eventHandleId: any;\n private roofWidth: number;\n private frontPostHeight: number;\n private totalBaySize: number;\n private downpipeGroupRight: Group;\n private downpipeGroupLeft: Group;\n private downpipeStepRakeCutGroupLeft: Group;\n private downpipeStepRakeCutGroupRight: Group;\n private geo_downPipe: GeometryInfo;\n private geo_downPipeL: GeometryInfo;\n private objectSizeChangedHandle: any;\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n private MANAGER: GableFBExistingBuildingManager;\n private enableCutout: boolean;\n private deferHandle;\n private deferTimeout = EXISTING_BUILDING_CONFIG.CUTOUT_DEFFER_TIME_OUT;\n\n private geoBeamJoint: GeometryInfo;\n private geoHouseBeamJoint: GeometryInfo;\n\n private geo_beamStepRakecutLeft: GeometryInfo;\n private geo_beamStepRakecutRight: GeometryInfo;\n\n private beamLeftCutSizeInfo: any;\n private beamRightCutSizeInfo: any;\n\n constructor(\n app: AppComponent,\n existingManager: GableFBExistingBuildingManager\n ) {\n this.APP = app;\n this.MANAGER = existingManager;\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.scene = existingManager.patiosGroup;\n this.material = MaterialManager.Instance().DEFAULT.clone();\n this.registerEvent();\n }\n public destroy(): void {\n this.unregisterEvent();\n }\n public uiChanged(preVal: number, curVal: number): void {\n this.load();\n }\n uiCHangedDefer(previousValue: number, currentValue: number) {\n if (this.APP.sltCutOut.currentValue == 1) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => {\n this.load();\n }, this.deferTimeout);\n } else {\n this.load();\n }\n }\n private objectSizeChanged(pre: number, cur: number) {\n this.optimize().then(() => {\n this.load();\n });\n }\n private registerEvent(): void {\n this.eventHandleId = this.uiCHangedDefer.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldBuildingHeight,\n this.APP.sltRoofPitch,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldExistingWidth1,\n this.APP.sltExistingType,\n //this.APP.dialogEditBay,\n this.APP.sldFrontOverhang,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n this.APP.sltCutOut,\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sldExistingWidth1,\n ];\n //this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n this.controlsToRegisterEvent2 = [\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltColumnType,\n ];\n this.controlsToRegisterEvent2.forEach((c) =>\n c.addAction(this.objectSizeChangedHandle)\n );\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach((c) =>\n c.removeAction(this.objectSizeChangedHandle)\n );\n this.controlsToRegisterEvent2 = undefined;\n }\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n this.beamInfo = this.geometryManager.getBeam();\n this.beamInfo.geometry\n .rotateY(Math.PI / 2)\n .translate(this.beamInfo.length / 2, -this.beamInfo.height / 2, 0);\n //.scale(this.APP.sldBaySize.currentValue / this.beamInfo.length, 1, 1);\n\n this.geoBeamJoint = this.geometryManager.getBeamJoint();\n this.geoHouseBeamJoint = this.geometryManager.getHouseBeamJoint();\n\n this.beamRakecutInfoLeft = this.geometryManager.getBeam();\n this.beamRakecutInfoLeft.geometry.translate(\n this.beamInfo.width / 2,\n -this.beamInfo.height / 2,\n -this.beamInfo.length / 2\n );\n\n this.beamRakecutInfoRight = this.geometryManager.getBeam();\n this.beamRakecutInfoRight.geometry.translate(\n -this.beamInfo.width / 2,\n -this.beamInfo.height / 2,\n -this.beamInfo.length / 2\n );\n\n this.geo_beamStepRakecutLeft = this.geometryManager.getBeam();\n this.geo_beamStepRakecutLeft.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_beamStepRakecutLeft.length / 2,\n -this.geo_beamStepRakecutLeft.height / 2,\n -this.geo_beamStepRakecutLeft.width / 2\n );\n\n this.geo_beamStepRakecutRight = this.geometryManager.getBeam();\n this.geo_beamStepRakecutRight.geometry\n .rotateY(Math.PI / 2)\n .translate(\n -this.geo_beamStepRakecutRight.length / 2,\n -this.geo_beamStepRakecutRight.height / 2,\n -this.geo_beamStepRakecutRight.width / 2\n );\n\n this.geo_beamEndCap = this.geometryManager.getBeamEndCap();\n this.geo_beamEndCap.geometry.translate(\n 0,\n -this.geo_beamEndCap.height / 2,\n 0\n );\n\n this.postInfo = this.geometryManager.getPost();\n this.postInfo.geometry\n .rotateX(Math.PI / 2)\n .translate(0, this.postInfo.height / 2, 0);\n //.scale(1, env.height.default / this.postInfo.height, 1);\n\n this.geo_groundBase = new GeometryInfo();\n this.geo_groundBase.width = 1000;\n this.geo_groundBase.height = 1;\n this.geo_groundBase.length = 1000;\n this.geo_groundBase.geometry = new BoxBufferGeometry(\n this.geo_groundBase.width,\n this.geo_groundBase.height,\n this.geo_groundBase.length\n );\n this.geo_groundBase.geometry.translate(\n this.geo_groundBase.width / 2,\n 0,\n this.geo_groundBase.length / 2\n );\n\n this.geo_downPipe = this.geometryManager.getDownPipe();\n this.geo_downPipeL = this.geometryManager.getDownPipeL();\n\n this.scene.remove(\n ...this.scene.children.filter(\n (c) => c.userData.type == GEOMETRY_TYPE.DOWNPIPE\n )\n );\n this.downpipeGroupRight = new Group();\n this.downpipeGroupRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.downpipeGroupRight.rotateY(Math.PI / 2);\n this.scene.add(this.downpipeGroupRight);\n\n this.downpipeGroupLeft = new Group();\n this.downpipeGroupLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.downpipeGroupLeft.rotateY(-Math.PI / 2);\n this.scene.add(this.downpipeGroupLeft);\n\n this.downpipeStepRakeCutGroupLeft = new Group();\n this.downpipeStepRakeCutGroupLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeStepRakeCutGroupLeft);\n\n this.downpipeStepRakeCutGroupRight = new Group();\n this.downpipeStepRakeCutGroupRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeStepRakeCutGroupRight);\n\n this.geo_centerSuperiorPost = this.geometryManager.getCenterPost();\n this.geo_centerSuperiorPost.geometry\n .rotateX(Math.PI / 2)\n .translate(\n this.geo_centerSuperiorPost.width / 2,\n this.geo_centerSuperiorPost.height / 2,\n this.geo_centerSuperiorPost.width / 2\n );\n\n this.geo_RafterBeam = this.geometryManager.getRafterBeam();\n this.geo_RafterBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_RafterBeam.length / 2,\n -this.geo_RafterBeam.height / 2,\n this.geo_RafterBeam.width / 2\n );\n\n this.geo_rafterBeamEndCap = this.geometryManager.getRafterBeamEndCap();\n this.geo_rafterBeamEndCap.geometry.translate(\n 0,\n -this.geo_rafterBeamEndCap.height / 2,\n this.geo_rafterBeamEndCap.length / 2\n );\n\n resolve();\n });\n }\n\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.SUPERIOR_POST\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.SUPERIOR_CENTER_POST\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === \"COLUMN_OUTLINE\"\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.GROUND_BASE\n )\n );\n this.downpipeGroupRight.children = [];\n this.downpipeGroupLeft.children = [];\n this.downpipeStepRakeCutGroupLeft.children = [];\n this.downpipeStepRakeCutGroupRight.children = [];\n\n this.beamLeftCutSizeInfo = this.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.LEFT\n );\n this.beamRightCutSizeInfo = this.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.RIGHT\n );\n\n this.totalBaySize = this.APP.dialogEditBay.totalBaySize;\n this.roofWidth =\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue +\n UI.span;\n this.enableCutout = this.MANAGER.cutoutCondition;\n\n let offsetZ = 0;\n let idx = 0;\n\n this.addGround();\n this.addCenterSuperiorBeam();\n\n this.addHorSuperiorBeam(-UI.span / 2 + this.beamInfo.width / 2, {\n left: true,\n first: true,\n last: false,\n });\n this.addHorSuperiorBeam(UI.span / 2 - this.beamInfo.width / 2, {\n right: true,\n first: false,\n last: true,\n });\n\n this.APP.dialogEditBay.listBay.forEach((m) => {\n offsetZ += m.value;\n\n this.addBeam(offsetZ, {\n back: idx + 1 == 0,\n center:\n !(idx + 1 == this.APP.dialogEditBay.listBay.length) &&\n !(idx + 1 == 0),\n front: idx + 1 == this.APP.dialogEditBay.listBay.length,\n });\n\n this.addCenterPost(offsetZ, {\n center:\n !(idx + 1 == this.APP.dialogEditBay.listBay.length) &&\n !(idx + 1 == 0),\n first: idx + 1 == 0,\n last: idx + 1 == this.APP.dialogEditBay.listBay.length,\n });\n\n this.addPost(offsetZ, {\n back: idx + 1 == 0,\n center:\n !(idx + 1 == this.APP.dialogEditBay.listBay.length) &&\n !(idx + 1 == 0),\n front: idx + 1 == this.APP.dialogEditBay.listBay.length,\n first: idx + 1 == 0,\n last: idx + 1 == this.APP.dialogEditBay.listBay.length,\n left: true,\n right: false,\n });\n this.addPost(offsetZ, {\n back: idx + 1 == 0,\n center:\n !(idx + 1 == this.APP.dialogEditBay.listBay.length) &&\n !(idx + 1 == 0),\n front: idx + 1 == this.APP.dialogEditBay.listBay.length,\n first: idx + 1 == 0,\n last: idx + 1 == this.APP.dialogEditBay.listBay.length,\n left: false,\n right: true,\n });\n\n let fitBeam = 0;\n if (idx + 1 > 0 && idx + 1 < this.APP.dialogEditBay.listBay.length) {\n fitBeam = this.geo_RafterBeam.width / 2;\n } else if (idx + 1 == this.APP.dialogEditBay.listBay.length) {\n fitBeam = this.geo_RafterBeam.width;\n }\n\n this.addRafterSuperiorBeam(offsetZ - fitBeam - UI.existingWidth1 / 2, {\n front: idx + 1 == this.APP.dialogEditBay.listBay.length,\n right: true,\n first: idx + 1 === 0,\n last: idx + 1 == this.APP.dialogEditBay.listBay.length,\n });\n this.addRafterSuperiorBeam(offsetZ - fitBeam - UI.existingWidth1 / 2, {\n back: idx + 1 == 0,\n left: true,\n first: idx + 1 === 0,\n last: idx + 1 == this.APP.dialogEditBay.listBay.length,\n });\n\n idx++;\n });\n\n this.addDownPipeRight();\n this.addDownPipeLeft();\n this.showBeamOutline();\n this.updateUI();\n resolve();\n });\n }\n public showBeamOutline() {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.BEAM_OUTLINE\n )\n );\n\n if (!UI.beamLayoutShow) return;\n\n const objs = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n const meshes = [];\n objs.forEach((el) => {\n if (el.type == \"Group\") {\n meshes.push(\n ...el.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n }\n });\n\n for (let o of meshes) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n o as Mesh,\n 10\n );\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n\n var line = new LineSegments(\n outlineGeo,\n MaterialManager.Instance().BEAM_OUTLINE\n );\n line.userData = { type: GEOMETRY_TYPE.BEAM_OUTLINE };\n this.APP.scene.add(line);\n }\n }\n private addDownPipeRight() {\n let offsetZ = this.totalBaySize - 50;\n let offsetX = UI.span / 2 + 100;\n\n if (this.APP.sltExistingType.currentValue != 0) {\n offsetZ -= this.APP.sldExistingWidth1.currentValue / 2;\n }\n\n let offsetY =\n this.utils.getHeightByAngle(\n UI.height,\n UI.overhangRight,\n UI.patiosPitch,\n -1\n ) + 90;\n\n if (this.APP.sltGutterType.currentValue == 0) {\n offsetY -= 80;\n } else {\n offsetY -= 60;\n }\n\n this.utils.createDownpipeGroup(\n this.APP,\n this.downpipeGroupRight,\n this.geo_downPipe,\n this.geo_downPipeL,\n offsetX,\n offsetY,\n offsetZ,\n 0,\n 0,\n UI.overhangRight,\n offsetY,\n true\n );\n }\n private addDownPipeLeft() {\n let offsetZ = this.totalBaySize - 50;\n let offsetX = -UI.span / 2 - 100;\n\n if (this.APP.sltExistingType.currentValue != 0) {\n offsetZ -= this.APP.sldExistingWidth1.currentValue / 2;\n }\n\n let offsetY =\n this.utils.getHeightByAngle(\n UI.height,\n UI.overhangLeft,\n UI.patiosPitch,\n -1\n ) + 90;\n\n if (this.APP.sltGutterType.currentValue == 0) {\n offsetY -= 80;\n } else {\n offsetY -= 60;\n }\n\n this.utils.createDownpipeGroup(\n this.APP,\n this.downpipeGroupLeft,\n this.geo_downPipe,\n this.geo_downPipeL,\n offsetX,\n offsetY,\n offsetZ,\n 0,\n 0,\n UI.overhangLeft,\n offsetY,\n true\n );\n }\n private updateUI() {\n this.APP.sldMinHeight.setValue(_.round(this.frontPostHeight, 0));\n }\n public getSection(): Printing2DGeometry {\n let objs = this.scene.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_POST ||\n o.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET ||\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_CENTER_POST\n );\n\n objs = [...objs];\n\n let lsGeometries: Printing2DLine[] = [];\n\n for (let o of objs) {\n let box = new BoxHelper(o);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n //this.scene.add(box);\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: outlineGeo.vertices,\n views: o.userData.views,\n });\n\n // var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"OUTLINE\"};\n // //line.position.set(o.position.x - 5000, o.position.y, o.position.z);\n // this.scene.add( line );\n }\n let beamGroups = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n for (let g of beamGroups) {\n for (let c of g.children) {\n c.updateMatrix();\n\n let objCloned = c.clone();\n objCloned.applyMatrix4(new Matrix4().getInverse(c.matrix));\n\n let box = new BoxHelper(objCloned);\n\n c.updateWorldMatrix(true, true);\n\n box.geometry.applyMatrix4(c.matrixWorld);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n const planView = _.find(\n g.userData.views,\n (el) => el.viewType == ViewType.PLAN\n );\n const anotherViews = _.filter(\n g.userData.views,\n (el) => el.viewType != ViewType.PLAN\n );\n if (anotherViews.length > 0) {\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo.vertices,\n views: anotherViews,\n });\n }\n if (planView) {\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo.vertices\n .slice(0, 8)\n .filter((el, index) => [0, 1, 4, 5].includes(index)),\n views: [planView],\n });\n }\n }\n }\n\n let rafterBeamGroups = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n );\n for (let o of rafterBeamGroups) {\n o.children.forEach((el) => {\n this.utils.getOutlineRafterBeam(el as Mesh, lsGeometries);\n });\n }\n\n return { lines: lsGeometries, texts: [] };\n }\n public simplifyGeo(geo: BufferGeometry): Geometry {\n let vertices = geo.getAttribute(\"position\").array;\n let lineGeo = new Geometry();\n for (let i = 0; i < vertices.length; i += 3) {\n lineGeo.vertices.push(\n new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2])\n );\n }\n\n //2-3\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n //3-7\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n //7-6\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n //6-2\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n\n //1-4\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n //4-8\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n //8-5\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n //5-1\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n\n return lineGeo;\n }\n private addGround() {\n let offsetX = -(UI.span / 2 + this.APP.sldLeftOverhang.currentValue);\n let offsetZ = -this.APP.sldExistingWidth1.currentValue / 2;\n let width = UI.span + UI.overhangLeft + UI.overhangRight;\n let length = this.totalBaySize + UI.overhangFront + UI.overhangBack;\n\n let base = new Mesh(\n this.geo_groundBase.geometry,\n MaterialManager.Instance().BASE\n );\n base.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GROUND_BASE,\n };\n base.position.set(offsetX, 0, offsetZ);\n base.scale.set(\n width / this.geo_groundBase.width,\n 1,\n length / this.geo_groundBase.length\n );\n\n this.scene.add(base);\n }\n public addHorSuperiorBeam(offsetX, userDataPos: any) {\n let offsetZ = 0;\n let offsetY = 0;\n\n let beamLength = this.totalBaySize + UI.overhangFront;\n\n let views: Print2DView[];\n offsetY = UI.height;\n offsetZ = this.totalBaySize + UI.overhangFront - UI.existingWidth1 / 2;\n\n if (userDataPos.left) {\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else {\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n this.cutStandardBeamByCutBeamWithinBayControl(\n this.beamInfo,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetX, offsetY, offsetZ),\n new Vector3(0, Math.PI / 2, 0),\n views,\n 1,\n userDataPos,\n 0,\n \"x\",\n \"EB\",\n this.geoBeamJoint\n );\n }\n private cutStandardBeamByCutBeamWithinBayControl(\n beamGeo: GeometryInfo,\n beamCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n userDataPos: any,\n beamGeoTranslationZ: number,\n beamDirection: string,\n beamName = \"\",\n jointGeo: GeometryInfo\n ) {\n // Map list cut beam here\n const beamStartZ = pos.z - length;\n const beamEndZ = pos.z;\n\n let endOfBayZ = -UI.existingWidth1 / 2;\n let startCutBeamZ = beamStartZ;\n let endCutBeamZ = beamStartZ;\n\n const beams = this.utils.getListSeperateBeamsByBaysForFbGable(\n endOfBayZ,\n beamStartZ,\n beamEndZ,\n endCutBeamZ,\n startCutBeamZ\n );\n\n for (let i = 0; i < beams.length; i++) {\n endCutBeamZ = beams[i][1];\n startCutBeamZ = beams[i][0];\n let beamGroup = this.utils.createBeamGroup2(\n beamGeo,\n beamCapGeo,\n endCutBeamZ - startCutBeamZ,\n new Vector3(pos.x, pos.y, endCutBeamZ),\n rot,\n views,\n directionOffset,\n userDataPos,\n beamGeoTranslationZ,\n beamDirection,\n UI.beamLayoutShow,\n {\n hasStartCap:\n UI.beamType == 0 &&\n (i == beams.length - 1 || (i == 0 && beams.length == 1)),\n hasEndCap: UI.beamType == 0 && i == 0,\n hasStartJoint: false,\n hasEndJoint: i !== 0,\n jointGeo: jointGeo,\n }\n );\n beamGroup.userData = {\n ...beamGroup.userData,\n name: beamName,\n };\n this.scene.add(beamGroup);\n }\n }\n public addPost(offsetZ: number, userDataPos: any) {\n const condition = offsetZ + this.APP.sldEaveWidth.currentValue;\n if (\n (UI.existingType === 1 || UI.existingType === 3) &&\n userDataPos.left &&\n (UI.existingWidth1 >= condition + UI.multiSpan ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition + UI.multiSpan &&\n UI.cutOutType == 1))\n ) {\n return;\n }\n if (\n (UI.existingType === 2 || UI.existingType === 3) &&\n userDataPos.right &&\n (UI.existingWidth1 >= condition + UI.multiSpan ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition + UI.multiSpan &&\n UI.cutOutType == 1))\n ) {\n return;\n }\n\n let views: Print2DView[] = [];\n if (userDataPos.back || userDataPos.center) {\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else {\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n const mesh = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n let posZ = offsetZ - UI.existingWidth1 / 2;\n if (userDataPos.back) {\n posZ = offsetZ + this.postInfo.width / 2 - UI.existingWidth1 / 2;\n } else if (userDataPos.front) {\n posZ = offsetZ - this.postInfo.width / 2 - UI.existingWidth1 / 2;\n }\n\n let scaleY = 0;\n let length = 0;\n\n if (userDataPos.isMultiSpan) {\n length = this.APP.sldBuildingHeight.currentValue;\n scaleY = length / this.postInfo.height;\n } else {\n length = this.APP.sldBuildingHeight.currentValue;\n scaleY = length / this.postInfo.height;\n }\n\n let offsetX = 0;\n if (userDataPos.left) {\n offsetX = -UI.span / 2 + this.postInfo.width / 2;\n } else if (userDataPos.right) {\n offsetX = UI.span / 2 - this.postInfo.width / 2;\n }\n\n mesh.position.set(offsetX, 0, posZ);\n mesh.scale.setY(scaleY);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n this.scene.add(mesh);\n }\n public addCenterSuperiorBeam() {\n let beamLength = this.totalBaySize + UI.overhangFront;\n\n let offsetY =\n UI.height +\n (UI.span / 2 - this.beamInfo.width / 2) * this.utils.tan(UI.patiosPitch);\n let offsetZ = this.totalBaySize + UI.overhangFront - UI.existingWidth1 / 2;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n this.cutStandardBeamByCutBeamWithinBayControl(\n this.beamInfo,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(0, offsetY, offsetZ),\n new Vector3(0, Math.PI / 2, 0),\n views,\n 1,\n { center: true },\n 0,\n \"x\",\n \"RB\",\n this.geoBeamJoint\n );\n }\n private addCenterPost(offsetZ, userDataPos) {\n let meshPost = new Mesh(\n this.geo_centerSuperiorPost.geometry,\n MaterialManager.Instance().BEAM\n );\n meshPost.userData = {\n ...userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_CENTER_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let scalePostY = 1;\n\n let views: Print2DView[];\n\n this.frontPostHeight = UI.height;\n\n scalePostY =\n ((UI.span / 2 - this.beamInfo.width / 2) *\n this.utils.tan(UI.patiosPitch) -\n this.beamInfo.height) /\n this.geo_centerSuperiorPost.height;\n\n if (userDataPos.last) {\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else {\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n let postOffsetX = -this.geo_centerSuperiorPost.width / 2;\n\n let postOffsetZ =\n offsetZ - this.geo_centerSuperiorPost.width / 2 - UI.existingWidth1 / 2;\n if (userDataPos.first) {\n postOffsetZ =\n offsetZ - this.geo_centerSuperiorPost.width / 2 - UI.existingWidth1 / 2;\n } else if (userDataPos.last) {\n postOffsetZ =\n offsetZ - this.geo_centerSuperiorPost.width - UI.existingWidth1 / 2;\n }\n\n meshPost.userData.views = views;\n meshPost.position.set(postOffsetX, UI.height, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n\n this.scene.add(meshPost);\n }\n public addRafterSuperiorBeam(offsetZ, userDataPos: any) {\n if (\n this.APP.sltWindClass.currentValue == 0 ||\n this.APP.sltWindClass.currentValue == 1\n ) {\n if (this.totalBaySize <= 6000 && this.APP.sldSpan.currentValue <= 7000) {\n return;\n }\n }\n if (\n this.APP.sltWindClass.currentValue == 3 ||\n this.APP.sltWindClass.currentValue == 4 ||\n this.APP.sltWindClass.currentValue == 5\n ) {\n return;\n }\n let mesh;\n\n let offsetXL = 0;\n let offsetXR =\n (UI.span / 2 - this.beamInfo.width / 2) / this.utils.cos(UI.patiosPitch);\n let offsetY = 0;\n\n let scaleX =\n (UI.span / 2 - this.beamInfo.width / 2) /\n this.utils.cos(UI.patiosPitch) /\n this.geo_RafterBeam.length;\n\n let views: Print2DView[];\n\n let fitZ = 0;\n\n if (userDataPos.left) {\n let material = MaterialManager.Instance().BEAM.clone();\n\n let nBottom = new Vector3(0, 1, 0).normalize();\n let pBottom = new Vector3(0, UI.height, 0);\n let planeBottom = new Plane().setFromNormalAndCoplanarPoint(\n nBottom,\n pBottom\n );\n\n let beamOffsetX = 0;\n\n let nVer = new Vector3(-1, 0, 0).normalize();\n let pVer = new Vector3(\n -this.beamInfo.width / 2 + beamOffsetX + this.scene.position.x + fitZ,\n 0,\n 0\n );\n let planeVer = new Plane().setFromNormalAndCoplanarPoint(nVer, pVer);\n\n material.clippingPlanes = [planeBottom, planeVer];\n\n mesh = new Mesh(this.geo_RafterBeam.geometry, material);\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.right) {\n let material = MaterialManager.Instance().BEAM.clone();\n\n let nBottom = new Vector3(0, 1, 0).normalize();\n let pBottom = new Vector3(0, UI.height, 0);\n let planeBottom = new Plane().setFromNormalAndCoplanarPoint(\n nBottom,\n pBottom\n );\n\n let beamOffsetX = 0;\n let nVer = new Vector3(1, 0, 0).normalize();\n let pVer = new Vector3(\n this.beamInfo.width / 2 + beamOffsetX + this.scene.position.x + fitZ,\n 0,\n 0\n );\n let planeVer = new Plane().setFromNormalAndCoplanarPoint(nVer, pVer);\n\n material.clippingPlanes = [planeBottom, planeVer];\n\n mesh = new Mesh(this.geo_RafterBeam.geometry, material);\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM,\n position: userDataPos,\n views: views,\n };\n mesh.position.set(offsetXL, 0, 0);\n mesh.scale.setX(scaleX);\n\n let checkExec = /\\w{1}\\d{1,3}x(\\d{1,3})/.exec(this.geo_RafterBeam.name);\n let beamSize = checkExec && checkExec.length == 2 ? checkExec[1] : \"\";\n let lowerBraketName = getRafterBeamEndCapCode(\n EXISTING_BUILDING_CONFIG.RAFTER_BEAM_SIZE,\n false\n );\n let higherBraketName = getRafterBeamEndCapCode(\n EXISTING_BUILDING_CONFIG.RAFTER_BEAM_SIZE,\n true\n );\n let capL;\n let capR;\n if (userDataPos.left) {\n let matEndCap = MaterialManager.Instance().BEAM.clone();\n\n let heightReal =\n UI.height + (this.utils.tan(UI.patiosPitch) * UI.span) / 2;\n let heightPlane = heightReal * this.utils.cos(UI.patiosPitch);\n let translateZ = this.utils.sin(UI.patiosPitch) * heightPlane;\n\n let planeTop = new Plane(new Vector3(0, -1, 0));\n let matrixTranslateTop = new Matrix4().makeTranslation(\n -translateZ / 2,\n heightPlane,\n 0\n );\n let matrixRotateTop = new Matrix4().makeRotationZ(\n this.utils.degreesToRadians(UI.patiosPitch)\n );\n let matrixTotalTop = matrixTranslateTop.multiply(matrixRotateTop);\n planeTop.applyMatrix4(matrixTotalTop);\n\n let heightRealBottom =\n UI.height -\n this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n (this.utils.tan(UI.patiosPitch) * UI.span) / 2;\n let heightPlaneBottom = heightRealBottom * this.utils.cos(UI.patiosPitch);\n let translateZBottom = this.utils.sin(UI.patiosPitch) * heightPlaneBottom;\n\n let planeBottom = new Plane(new Vector3(0, 1, 0));\n let matrixTranslateBottom = new Matrix4().makeTranslation(\n -translateZBottom / 2,\n heightPlaneBottom,\n 0\n );\n let matrixRotateBottom = new Matrix4().makeRotationZ(\n this.utils.degreesToRadians(UI.patiosPitch)\n );\n let matrixTotalBottom =\n matrixTranslateBottom.multiply(matrixRotateBottom);\n planeBottom.applyMatrix4(matrixTotalBottom);\n\n let beamOffsetX = this.scene.position.x;\n\n planeTop.translate(new Vector3(beamOffsetX, 0, 0));\n planeBottom.translate(new Vector3(beamOffsetX, 0, 0));\n\n matEndCap.clippingPlanes = [planeTop, planeBottom];\n\n capL = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capL.position.set(offsetXL - 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capL.scale.setY(\n (this.geo_RafterBeam.height / this.utils.sin(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length / this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capL.rotateY(Math.PI / 2);\n capL.rotateX(-Math.PI / 2 + this.utils.degreesToRadians(UI.patiosPitch));\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: lowerBraketName,\n };\n\n capR = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capR.position.set(offsetXR + 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capR.scale.setY(\n (this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length * this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capR.rotateY(-Math.PI / 2);\n capR.rotateX(-this.utils.degreesToRadians(UI.patiosPitch));\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: higherBraketName,\n };\n } else {\n let matEndCap = MaterialManager.Instance().BEAM.clone();\n\n let heightReal =\n UI.height + (this.utils.tan(UI.patiosPitch) * UI.span) / 2;\n let heightPlane = heightReal * this.utils.cos(UI.patiosPitch);\n let translateZ = this.utils.sin(UI.patiosPitch) * heightPlane;\n\n let planeTop = new Plane(new Vector3(0, -1, 0));\n let matrixTranslateTop = new Matrix4().makeTranslation(\n translateZ / 2,\n heightPlane,\n 0\n );\n let matrixRotateTop = new Matrix4().makeRotationZ(\n -this.utils.degreesToRadians(UI.patiosPitch)\n ); //tao voi z pitch do\n let matrixTotalTop = matrixTranslateTop.multiply(matrixRotateTop);\n planeTop.applyMatrix4(matrixTotalTop);\n\n let heightRealBottom =\n UI.height -\n this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n (this.utils.tan(UI.patiosPitch) * UI.span) / 2;\n let heightPlaneBottom = heightRealBottom * this.utils.cos(UI.patiosPitch);\n let translateZBottom = this.utils.sin(UI.patiosPitch) * heightPlaneBottom;\n\n let planeBottom = new Plane(new Vector3(0, 1, 0));\n let matrixTranslateBottom = new Matrix4().makeTranslation(\n translateZBottom / 2,\n heightPlaneBottom,\n 0\n );\n let matrixRotateBottom = new Matrix4().makeRotationZ(\n -this.utils.degreesToRadians(UI.patiosPitch)\n ); //tao voi z pitch do\n let matrixTotalBottom =\n matrixTranslateBottom.multiply(matrixRotateBottom);\n planeBottom.applyMatrix4(matrixTotalBottom);\n\n let beamOffsetX = this.scene.position.x;\n\n planeTop.translate(new Vector3(beamOffsetX, 0, 0));\n planeBottom.translate(new Vector3(beamOffsetX, 0, 0));\n\n matEndCap.clippingPlanes = [planeTop, planeBottom];\n\n capL = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capL.position.set(offsetXL - 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capL.scale.setY(\n (this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length * this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capL.rotateY(Math.PI / 2);\n capL.rotateX(-this.utils.degreesToRadians(UI.patiosPitch));\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: higherBraketName,\n };\n\n capR = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capR.position.set(offsetXR + 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capR.scale.setY(\n (this.geo_RafterBeam.height / this.utils.sin(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length / this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capR.rotateY(-Math.PI / 2);\n capR.rotateX(-Math.PI / 2 + this.utils.degreesToRadians(UI.patiosPitch));\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: lowerBraketName,\n };\n }\n\n let offsetX = 0;\n if (userDataPos.left) {\n offsetX = -UI.span / 2;\n offsetY = UI.height;\n } else if (userDataPos.right) {\n offsetX = this.geo_centerSuperiorPost.width / 2;\n offsetY =\n UI.height +\n (UI.span / 2 - this.beamInfo.width / 2) *\n this.utils.tan(UI.patiosPitch);\n }\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM,\n position: userDataPos,\n views: views,\n };\n beamGroup.position.set(offsetX, offsetY, offsetZ);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n\n if (userDataPos.left) {\n beamGroup.rotateZ(this.utils.degreesToRadians(UI.patiosPitch));\n } else if (userDataPos.right) {\n beamGroup.rotateZ(-this.utils.degreesToRadians(UI.patiosPitch));\n }\n\n this.scene.add(beamGroup);\n }\n public addBeam(offsetZ: number, userDataPos: any) {\n let offsetY = 0;\n\n let beamLength = UI.span - 2 * this.postInfo.width;\n if (userDataPos.back) {\n beamLength = UI.span - 2 * this.beamInfo.width;\n }\n\n let offsetX = -UI.span / 2 + this.postInfo.width;\n if (userDataPos.back) {\n offsetX = -UI.span / 2 + this.beamInfo.width;\n }\n\n let posZ = 0;\n let views: Print2DView[] = [];\n if (userDataPos.front) {\n offsetY = UI.height;\n posZ = offsetZ - this.beamInfo.width / 2 - UI.existingWidth1 / 2;\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.center) {\n offsetY = UI.height;\n posZ = offsetZ - UI.existingWidth1 / 2;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.back) {\n offsetY = UI.height;\n posZ = offsetZ + this.beamInfo.width / 2 - UI.existingWidth1 / 2;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n let beamGroup: Group;\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup = this.utils.createBeamGroup2(\n this.beamInfo,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetX, offsetY, posZ),\n new Vector3(),\n views,\n 1,\n userDataPos,\n 0,\n \"x\",\n false,\n {\n hasStartCap: UI.beamType == 0,\n hasEndCap: UI.beamType == 0,\n hasStartJoint: false,\n hasEndJoint: false,\n jointGeo: null,\n }\n );\n } else {\n beamGroup = this.utils.createBeamGroup2(\n this.beamInfo,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetX, offsetY, posZ),\n new Vector3(),\n views,\n 1,\n userDataPos,\n 0,\n \"x\",\n false,\n {\n hasStartCap: UI.beamType == 0,\n hasEndCap: UI.beamType == 0,\n hasStartJoint: false,\n hasEndJoint: false,\n jointGeo: null,\n }\n );\n }\n beamGroup.userData = {\n ...beamGroup.userData,\n name: \"GB\",\n };\n\n this.scene.add(beamGroup);\n }\n\n private getHeightByRoofPitch(isSpan: boolean): number {\n if (isSpan) {\n return (\n this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n this.APP.sldSpan.currentValue\n );\n } else {\n return (\n this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue)\n );\n }\n }\n}\n","import { Mesh, Vector3, Material, Plane, Geometry, BufferGeometry, Group, BoxBufferGeometry, MeshLambertMaterial, Matrix4, Object3D, LineSegments, Color } from 'three';\nimport { Util } from '../utils';\nimport { CONFIG as env, GEOMETRY_TYPE, GEOMETRY_CATEGORY } from 'src/app/app.config';\nimport { BUILDING_SIDE, CUTOUT_ENABLE, EXISTING_BUILDING_CONFIG as CONST, EXISTING_BUILDING_CONFIG, PANEL_DIRECTION, RIBSPAN_PANEL_WIDTH, RIBSPAN_BARGE_FIT, RIBSPAN_RECEIVER_CHANNEL_FIT } from 'src/app/app.constants';\nimport { HomeComponent as AppComponent } from '../../containers/home/home.component';\nimport { GeometryManager } from '../geometry.manager';\nimport { MaterialManager } from '../material.manager';\nimport { GeometryInfo, Printing2DGeometry, Printing2DLine, Print2DView, ViewType, LineType } from 'src/app/core/models';\nimport { GableFBExistingBuildingManager } from '.';\nimport { CSG } from 'three-csg-ts';\nimport { UI } from '../ui';\n\nexport class RoofManager {\n private scene: Group;\n private APP: AppComponent;\n private MANAGER: GableFBExistingBuildingManager;\n private material: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n public ridgeGeo: GeometryInfo;\n private roofInfo: GeometryInfo;\n private bargeLeftInfo: GeometryInfo;\n private bargeRightInfo: GeometryInfo;\n private receiverCutoutLeftHor: GeometryInfo;\n private receiverCutoutRightHor: GeometryInfo;\n private receiverCutoutRightVer: GeometryInfo;\n private receiverCutoutRightVer2: GeometryInfo;\n private receiverCutoutLeftVer: GeometryInfo;\n private receiverCutoutLeftVer2: GeometryInfo;\n private gutterInfo: GeometryInfo;\n private gutterRakecutLeftInfo: GeometryInfo;\n private gutterRakecutRightInfo: GeometryInfo;\n //private flashingInfo: GeometryInfo;\n private geo_receiverChanel: GeometryInfo;\n private geo_gutterCap: GeometryInfo;\n private roofGroupRight: Group;\n private roofGroupLeft: Group;\n\n private eventHandleId: any;\n\n // Var\n private roofLengthPlus: number;\n private roofWidth: number;\n private roofLength: number;\n private totalBaySize: number;\n\n private objectSizeChangedHandle: any;\n\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n\n private mesh_CutoutLeft: Mesh;\n private csg_cutoutLeft: CSG;\n private mesh_CutoutRight: Mesh;\n private csg_cutoutRight: CSG;\n private geo_cutoutLeft: BoxBufferGeometry;\n private geo_cutoutRight: BoxBufferGeometry;\n\n private geo_rakecutLeft: BoxBufferGeometry;\n private geo_rakecutRight: BoxBufferGeometry;\n private mesh_rakecutLeft: Mesh;\n private mesh_rakecutRight: Mesh;\n private csg_rakecutLeft: CSG;\n private csg_rakecutRight: CSG;\n\n private geoCutGutter: BoxBufferGeometry;\n private meshCutGutterLeft1: Mesh;\n private csgCutGutterLeft1: CSG;\n private meshCutGutterLeft2: Mesh;\n private csgCutGutterLeft2: CSG;\n\n private meshCutGutterRight1: Mesh;\n private csgCutGutterRight1: CSG;\n private meshCutGutterRight2: Mesh;\n private csgCutGutterRight2: CSG;\n\n private enableCutout: boolean;\n private deferHandle;\n private deferTimeout = EXISTING_BUILDING_CONFIG.CUTOUT_DEFFER_TIME_OUT;\n\n\n constructor(app: AppComponent, existingManager: GableFBExistingBuildingManager) {\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.APP = app;\n this.MANAGER = existingManager;\n this.scene = new Group();\n existingManager.patiosGroup.add(this.scene);\n this.material = MaterialManager.Instance().ROOF;\n this.registerEvent();\n }\n\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n this.roofInfo = this.geometryManager.getRoofRibspanPanel();\n this.roofInfo.geometry\n .translate(-this.roofInfo.width / 2, this.roofInfo.height / 2, this.roofInfo.length / 2);\n this.roofInfo.geometry.rotateY(Math.PI / 2)\n this.utils.changeGeoColor(this.roofInfo.geometry, new Vector3(0, 1, 0), UI.roofColor.toString());\n\n // Barge capping - left\n this.bargeLeftInfo = this.geometryManager.getRibspanBarge();\n this.bargeLeftInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.bargeLeftInfo.length / 2, this.bargeLeftInfo.height / 2 - RIBSPAN_BARGE_FIT, -this.bargeLeftInfo.width / 2 + 3);\n\n // Barge capping - right\n this.bargeRightInfo = this.geometryManager.getRibspanBarge();\n this.bargeRightInfo.geometry\n .rotateY(Math.PI / 2)\n .translate(this.bargeRightInfo.length / 2, this.bargeRightInfo.height / 2 - RIBSPAN_BARGE_FIT, this.bargeRightInfo.width / 2 - 3);\n\n //Barge cutout left\n this.receiverCutoutLeftHor = this.geometryManager.getRibspanReceiverChannel();\n this.receiverCutoutLeftHor.geometry\n .rotateY(Math.PI / 2)\n .translate(-this.receiverCutoutLeftHor.length / 2, this.receiverCutoutLeftHor.height / 2 - RIBSPAN_RECEIVER_CHANNEL_FIT, this.receiverCutoutLeftHor.width / 2);\n\n //Barge cutout right\n this.receiverCutoutRightHor = this.geometryManager.getRibspanReceiverChannel();\n this.receiverCutoutRightHor.geometry\n .rotateY(Math.PI / 2)\n .translate(this.receiverCutoutRightHor.length / 2, this.receiverCutoutRightHor.height / 2 - RIBSPAN_RECEIVER_CHANNEL_FIT, this.receiverCutoutRightHor.width / 2);\n\n \n //Vertical Barge cutout left 2\n this.receiverCutoutLeftVer2 = this.geometryManager.getRibspanReceiverChannel();\n this.receiverCutoutLeftVer2.geometry\n .rotateY(Math.PI)\n .translate(this.receiverCutoutLeftVer2.width / 2, this.receiverCutoutLeftVer2.height / 2 - RIBSPAN_RECEIVER_CHANNEL_FIT, this.receiverCutoutLeftVer2.length / 2);\n\n //Vertical cutout right 2\n this.receiverCutoutRightVer2 = this.geometryManager.getRibspanReceiverChannel();\n this.receiverCutoutRightVer2.geometry\n .translate(-this.receiverCutoutRightVer2.width / 2, this.receiverCutoutRightVer2.height / 2 - RIBSPAN_RECEIVER_CHANNEL_FIT, this.receiverCutoutRightVer2.length / 2);\n\n //Vertical Barge cutout left\n this.receiverCutoutLeftVer = this.geometryManager.getRibspanReceiverChannel();\n this.receiverCutoutLeftVer.geometry\n .rotateY(Math.PI)\n .translate(this.receiverCutoutLeftVer.width / 2, this.receiverCutoutLeftVer.height / 2 - RIBSPAN_RECEIVER_CHANNEL_FIT, this.receiverCutoutLeftVer.length / 2);\n\n //Vertical cutout right\n this.receiverCutoutRightVer = this.geometryManager.getRibspanReceiverChannel();\n this.receiverCutoutRightVer.geometry\n .translate(-this.receiverCutoutRightVer.width / 2, this.receiverCutoutRightVer.height / 2 - RIBSPAN_RECEIVER_CHANNEL_FIT, this.receiverCutoutRightVer.length / 2);\n\n //Receiver chanel - barge caping back\n this.geo_receiverChanel = this.geometryManager.getRibspanReceiverChannel();\n this.geo_receiverChanel.geometry\n .rotateY(Math.PI / 2)\n .translate(this.geo_receiverChanel.length / 2, this.geo_receiverChanel.height / 2 - RIBSPAN_RECEIVER_CHANNEL_FIT, this.geo_receiverChanel.width / 2);\n\n // Gutter\n let gtExtraOffsetY = 0;\n if (this.APP.sltGutterType.currentValue == 1 || this.APP.sltGutterType.currentValue == 2) {\n gtExtraOffsetY = 20;\n }\n\n this.gutterInfo = this.geometryManager.getGutter();\n this.gutterInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.gutterInfo.length / 2, -20, this.gutterInfo.width / 2);\n\n this.gutterRakecutLeftInfo = this.geometryManager.getGutter();\n this.gutterRakecutLeftInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.gutterRakecutLeftInfo.length / 2, -20, this.gutterRakecutLeftInfo.width / 2);\n\n this.gutterRakecutRightInfo = this.geometryManager.getGutter();\n this.gutterRakecutRightInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(-this.gutterRakecutRightInfo.length / 2, -20, this.gutterRakecutRightInfo.width / 2);\n\n //Gutter cap\n this.geo_gutterCap = this.geometryManager.getGuterEndCap();\n this.geo_gutterCap.geometry\n .rotateY(-Math.PI / 2)\n .translate(0, -20, this.geo_gutterCap.length / 2);\n\n this.geo_cutoutLeft = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_cutoutLeft.translate(-500, 0, -500);\n\n this.geo_cutoutRight = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_cutoutRight.translate(500, 0, -500);\n\n this.geo_rakecutLeft = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_rakecutLeft.translate(-500, 500, 500);\n this.geo_rakecutRight = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_rakecutRight.translate(500, 500, 500);\n\n this.geoCutGutter = new BoxBufferGeometry(500, 10000, 500);\n this.geoCutGutter.translate(0, 0, -250);\n\n this.ridgeGeo = this.geometryManager.getRibspanRidgeCapping();\n this.ridgeGeo.geometry.translate(- this.ridgeGeo.width / 2 + 1, -this.ridgeGeo.height / 2, 0);\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(...this.scene.children.filter(x => x.userData.type === GEOMETRY_TYPE.ROOF_PANEL \n || x.userData.type === GEOMETRY_TYPE.ROOF_PANEL_BASE\n || x.userData.type === GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING\n || x.userData.type === GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n || x.userData.type === GEOMETRY_TYPE.GUTTER_PATIOS\n || x.userData.type === GEOMETRY_TYPE.ROOF_PATIOS\n || x.userData.type === GEOMETRY_TYPE.HIGHLIGHT_BOX));\n\n // this.scene.remove(...this.scene.children.filter(x => x.userData.type === GEOMETRY_TYPE.ROOF_PANEL_BASE));\n // this.scene.remove(...this.scene.children.filter(x => x.userData.type === this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING));\n // this.scene.remove(...this.scene.children.filter(x => x.userData.type === GEOMETRY_TYPE.GUTTER_PATIOS));\n // this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PATIOS));\n // this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PATIOS));\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.SHEET_OUTLINE));\n\n //test\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == 'HELPER'));\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == 'RAKECUT'));\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == 'CUTGUTTER'));\n\n //this.scene.remove(...this.scene.children.filter(x => x.userData.type === 'ROOF_OUTLINE'));\n\n this.totalBaySize = this.APP.dialogEditBay.totalBaySize;\n this.roofLength = UI.span / 2 + UI.overhangRight;\n this.roofLengthPlus = (UI.span / 2 + UI.overhangRight) / this.utils.cos(UI.patiosPitch);\n this.roofWidth = this.totalBaySize + UI.overhangFront;\n\n this.addRoofGroupRight();\n this.addRoofGroupLeft();\n this.addCutout();\n\n let roofPanelCount = Math.ceil(this.roofWidth / RIBSPAN_PANEL_WIDTH);\n this.enableCutout = this.MANAGER.cutoutCondition;\n\n //clipping plane\n let offsetFront = this.totalBaySize + UI.overhangFront - UI.existingWidth1 / 2;\n let offsetBack = - UI.overhangBack - UI.existingWidth1 / 2;\n\n let clipingPlaneFront = new Plane(new Vector3(0, 0, -1), offsetFront);\n let clipingPlaneBack = new Plane(new Vector3(0, 0, 1), -offsetBack);\n \n this.material.clippingPlanes = [clipingPlaneFront, clipingPlaneBack];\n MaterialManager.Instance().ROOF_BASE.clippingPlanes = [clipingPlaneFront, clipingPlaneBack];\n\n //panel direction\n let offsetZ = 0;\n let panelDirectionOfset = 1;\n if(this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT){\n offsetZ = this.totalBaySize + UI.overhangFront - RIBSPAN_PANEL_WIDTH;\n panelDirectionOfset = -1;\n }\n else if(this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.LEFT_TO_RIGHT){\n offsetZ = 0;\n }\n\n if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT && this.enableCutout) {\n let totalPanelLength = 0;\n let cuted = true;\n for (let index = 0; index < roofPanelCount; index++) {\n totalPanelLength += RIBSPAN_PANEL_WIDTH;\n let isOver = totalPanelLength < this.APP.sldExistingLength2.currentValue;\n\n this.addRoofRight(offsetZ, [this.csg_cutoutLeft]);\n\n this.addRoofLeft(offsetZ, [this.csg_cutoutLeft]);\n\n cuted = isOver;\n offsetZ += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n }\n else if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT && this.enableCutout) {\n let totalPanelLength = 0;\n let cuted = false;\n for (let index = 0; index < roofPanelCount; index++) {\n totalPanelLength += RIBSPAN_PANEL_WIDTH;\n let isOver = totalPanelLength >= this.roofWidth - this.APP.sldExistingLength2.currentValue + RIBSPAN_PANEL_WIDTH;\n cuted = totalPanelLength >= this.roofWidth - this.APP.sldExistingLength2.currentValue && !isOver;\n this.addRoofRight(offsetZ, [this.csg_cutoutRight] );\n\n this.addRoofLeft(offsetZ, [this.csg_cutoutRight]);\n\n offsetZ += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n }\n else if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH && this.enableCutout) {\n let totalPanelLength = 0;\n let cuted = false;\n let cuted2 = false;\n for (let index = 0; index < roofPanelCount; index++) {\n totalPanelLength += RIBSPAN_PANEL_WIDTH;\n let isOver = totalPanelLength < this.APP.sldExistingLength2.currentValue;\n let isOver2 = totalPanelLength >= this.roofWidth - this.APP.sldExistingLength2.currentValue + RIBSPAN_PANEL_WIDTH;\n let flag = totalPanelLength >= this.roofWidth - this.APP.sldExistingLength2.currentValue;\n\n this.addRoofRight(offsetZ, [this.csg_cutoutLeft, this.csg_cutoutRight]);\n\n this.addRoofLeft(offsetZ, [this.csg_cutoutLeft, this.csg_cutoutRight]);\n\n offsetZ += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n }\n else {\n for (let index = 0; index < roofPanelCount; index++) {\n this.addRoofRight(offsetZ, []);\n\n this.addRoofLeft(offsetZ, []);\n\n offsetZ += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n }\n\n this.addBargeRight();\n this.addBargeLeft();\n\n this.addGutterRight();\n this.addGutterLeft();\n\n this.addRidgeCapping();\n\n this.showPanelOutline();\n\n this.scene.visible = UI.showRoof\n\n //this.getOutLines();\n resolve();\n });\n }\n private addCutout() {\n if (this.APP.sltCutOut.currentValue == 1) {\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == 'CUTOUT'));\n\n let offsetX = this.APP.sldExistingLength.currentValue / 2;\n let offsetY = 0;\n let offsetZ = this.APP.sldExistingWidth1.currentValue / 2;\n\n let scaleX = (this.APP.sldExistingLength2.currentValue + 5000) / 1000;\n if (scaleX == 0) scaleX = 1;\n let scaleY = (this.APP.sldExistingWallHeight.currentValue + 5000) / 1000;\n let scaleZ = (this.APP.sldExistingWidth1.currentValue + 5000) / 1000;\n if (scaleZ == 0) scaleZ = 1;\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT || this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n this.mesh_CutoutLeft = new Mesh(this.geo_cutoutLeft, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.mesh_CutoutLeft.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: 'CUTOUT' };\n\n this.mesh_CutoutLeft.position.set(-offsetX, offsetY, offsetZ);\n this.mesh_CutoutLeft.scale.set(scaleX, scaleY, scaleZ);\n\n //this.APP.scene.add(this.mesh_CutoutLeft);\n\n this.mesh_CutoutLeft.updateMatrix();\n this.csg_cutoutLeft = CSG.fromMesh(this.mesh_CutoutLeft);\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT || this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n this.mesh_CutoutRight = new Mesh(this.geo_cutoutRight, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.mesh_CutoutRight.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: 'CUTOUT' };\n\n this.mesh_CutoutRight.position.set(offsetX, offsetY, offsetZ);\n this.mesh_CutoutRight.scale.set(scaleX, scaleY, scaleZ);\n\n //this.APP.scene.add(this.mesh_CutoutRight);\n\n this.mesh_CutoutRight.updateMatrix();\n this.csg_cutoutRight = CSG.fromMesh(this.mesh_CutoutRight);\n }\n }\n }\n \n public addRoofGroupRight() {\n this.roofGroupRight = null;\n this.roofGroupRight = new Group();\n this.roofGroupRight.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PATIOS };\n\n //let offsetX = -this.APP.sldLeftOverhang.currentValue;\n let offsetY = this.getRoofOffsetY();\n let offsetZ = -UI.existingWidth1 / 2;\n\n this.roofGroupRight.position.set(0, offsetY, offsetZ);\n this.roofGroupRight.rotation.set(0, 0, -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue));\n\n this.scene.add(this.roofGroupRight);\n }\n public addRoofGroupLeft() {\n this.roofGroupLeft = null;\n this.roofGroupLeft = new Group();\n this.roofGroupLeft.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PATIOS };\n\n //let offsetX = -this.APP.sldLeftOverhang.currentValue;\n let offsetY = this.getRoofOffsetY();\n let offsetZ = -UI.existingWidth1 / 2;\n\n this.roofGroupLeft.position.set(0, offsetY, offsetZ);\n this.roofGroupLeft.rotation.set(0, 0, this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue));\n\n this.scene.add(this.roofGroupLeft);\n }\n public getOutLines(): Printing2DGeometry {\n\n let objs = this.roofGroupRight.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL\n || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ).concat(\n ...this.roofGroupLeft.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n )\n );\n\n let gutterGroupObjs = this.roofGroupRight.children.filter(o => o.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS).concat(\n ...this.roofGroupLeft.children.filter(o => o.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS)\n );\n let gutterObjs: Object3D[] = [];\n for(let group of gutterGroupObjs){\n gutterObjs.push(...group.children);\n }\n\n objs = [...objs, ...gutterObjs];\n\n let lsGeometries: Printing2DLine[] = [];\n\n let offsetFront = this.totalBaySize + UI.overhangFront - UI.existingWidth1 / 2;\n let offsetBack = - UI.overhangBack - UI.existingWidth1 / 2;\n\n let clipingPlaneFront = new Plane(new Vector3(0, 0, -1), offsetFront);\n let clipingPlaneBack = new Plane(new Vector3(0, 0, 1), -offsetBack);\n\n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale((o as Mesh), 60);\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n outlineGeo.translate(0, 5000, 0);\n\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL) {\n outlineGeo = this.utils.clipOutline(outlineGeo, clipingPlaneFront);\n outlineGeo = this.utils.clipOutline(outlineGeo, clipingPlaneBack);\n }\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE) {\n outlineGeo = this.utils.clipOutlineBasePanel(outlineGeo, clipingPlaneFront);\n outlineGeo = this.utils.clipOutlineBasePanel(outlineGeo, clipingPlaneBack);\n }\n\n let simplifiedGeo = this.simplifyGeo(outlineGeo);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: simplifiedGeo.vertices,\n views: o.userData.views\n });\n }\n\n let ridgeCapping = this.scene.children.find(el => el.userData.type === GEOMETRY_TYPE.RIDGE_CAPPING)\n if(ridgeCapping){\n ridgeCapping.children.forEach(el => {\n this.utils.createOutline(el as Mesh, lsGeometries);\n })\n }\n\n lsGeometries.push({\n objectType: GEOMETRY_TYPE.ROOF_COVER,\n vertices: this.makeRoofPolygon(),\n color: this.utils.convertHexColorToRgb(`#${new Color(UI.panelColor).getHexString()}`),\n views: [\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ]\n });\n\n return { lines: lsGeometries, texts: [] };\n }\n makeRoofPolygon() {\n const polygon = this.utils.getRoofCoverPolygonForFBRoof()\n this.MANAGER.patiosGroup.updateWorldMatrix(true, true)\n return polygon.map(el => (el as Vector3).applyMatrix4(this.MANAGER.patiosGroup.matrixWorld).add(new Vector3(0, 0, -UI.existingWidth1 / 2 - UI.overhangBack)))\n }\n public showPanelOutline(){\n if(this.APP.sltPanelDirectionShow.currentValue == false)\n return;\n\n let objs = this.roofGroupRight.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ).concat(\n ...this.roofGroupLeft.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n )\n );\n\n let offsetFront = this.totalBaySize + UI.overhangFront - UI.existingWidth1 / 2;\n let offsetBack = - UI.overhangBack - UI.existingWidth1 / 2;\n\n let clipingPlaneFront = new Plane(new Vector3(0, 0, -1), offsetFront);\n let clipingPlaneBack = new Plane(new Vector3(0, 0, 1), -offsetBack);\n\n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale((o as Mesh), 60);\n\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n //outlineGeo.translate(0, 5000, 0);\n\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE) {\n outlineGeo = this.utils.clipOutline(outlineGeo, clipingPlaneFront);\n outlineGeo = this.utils.clipOutline(outlineGeo, clipingPlaneBack);\n }\n\n var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n line.userData = {type: GEOMETRY_TYPE.SHEET_OUTLINE};\n this.APP.scene.add( line );\n }\n}\n public simplifyGeo(geo: BufferGeometry): Geometry {\n let simplifiedGeo = new Geometry();\n let vertices = geo.getAttribute('position').array;\n for (let i = 0; i < vertices.length; i += 3) {\n simplifiedGeo.vertices.push(new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2]));\n }\n return simplifiedGeo;\n }\n public addRoofRight(offsetZ: number, csgObjs: CSG[]) {\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n // { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n const mesh: Mesh = new Mesh(this.roofInfo.geometry, MaterialManager.Instance().ROOF);\n\n let scaleZ = (UI.span / 2 + UI.overhangRight) / this.utils.cos(UI.patiosPitch) / this.roofInfo.length;\n const offsetY = 0;\n let offsetX = 0;\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setX(scaleZ);\n mesh.userData = { \n category: GEOMETRY_CATEGORY.PATIOS, \n type: GEOMETRY_TYPE.ROOF_PANEL, \n views: views,\n dir: UI.panelDirection === PANEL_DIRECTION.RIGHT_TO_LEFT ? \"L-R\" : \"R-L\"\n };\n \n let cutoutCondition = this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue != BUILDING_SIDE.NONE && this.APP.sldExistingLength2.currentValue > 0;\n \n if (cutoutCondition) {\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n mesh.position.set(offsetX + this.MANAGER.patiosGroup.position.x, offsetY, offsetZ + this.roofGroupRight.position.z);\n\n mesh.updateMatrix();\n\n let meshResult = mesh.clone();\n\n if(cutoutCondition){\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n }\n }\n \n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix));\n meshResult.applyMatrix4(matrixBefore);\n\n this.roofGroupRight.add(meshResult);\n }\n else {\n this.roofGroupRight.add(mesh);\n }\n }\n public addRoofLeft(offsetZ: number, csgObjs: CSG[]) {\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n // { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n const mesh: Mesh = new Mesh(this.roofInfo.geometry, MaterialManager.Instance().ROOF);\n\n let scaleZ = (UI.span / 2 + UI.overhangLeft) / this.utils.cos(UI.patiosPitch) / this.roofInfo.length;\n const offsetY = 0;\n let offsetX = 0;\n mesh.position.set(offsetX - scaleZ * this.roofInfo.length, offsetY, offsetZ);\n mesh.scale.setX(scaleZ);\n mesh.userData = { \n category: GEOMETRY_CATEGORY.PATIOS, \n type: GEOMETRY_TYPE.ROOF_PANEL, \n views: views,\n dir: UI.panelDirection === PANEL_DIRECTION.LEFT_TO_RIGHT ? \"L-R\" : \"R-L\"\n };\n \n let cutoutCondition = this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue != BUILDING_SIDE.NONE && this.APP.sldExistingLength2.currentValue > 0;\n \n if (cutoutCondition) {\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n mesh.position.set(offsetX - scaleZ * this.roofInfo.length + this.MANAGER.patiosGroup.position.x, offsetY, offsetZ + this.roofGroupRight.position.z);\n\n mesh.updateMatrix();\n\n let meshResult = mesh.clone();\n\n if(cutoutCondition){\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n }\n }\n \n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix));\n meshResult.applyMatrix4(matrixBefore);\n\n this.roofGroupLeft.add(meshResult);\n }\n else {\n this.roofGroupLeft.add(mesh);\n }\n }\n private addBargeRight() {\n let mesh: Mesh;\n let extraWallWidth = this.APP.existingWallManager.geo_existingWallW1.width + EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n let offsetXL2 = 0;\n\n let offsetXR2 = 0;\n\n let offsetZL = this.totalBaySize + UI.overhangFront;\n let offsetZR = 0;\n\n let offsetY = 0;\n let bargeLeftLength = UI.span / 2 + UI.overhangRight;\n let bargeRightLength = UI.span / 2 + UI.overhangRight;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n let scaleZLeft = this.utils.getHypotenuseByCos(bargeLeftLength, this.APP.sltRoofPitch.currentValue) / this.bargeLeftInfo.length;\n let scaleZRight = this.utils.getHypotenuseByCos(bargeRightLength, this.APP.sltRoofPitch.currentValue) / this.bargeLeftInfo.length;\n\n let fitScale = this.bargeLeftInfo.height * this.utils.tan(UI.patiosPitch) / this.bargeLeftInfo.length;\n\n //left\n mesh = new Mesh(this.bargeLeftInfo.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXL2 - fitScale * this.bargeLeftInfo.length, offsetY, offsetZL);\n mesh.scale.setX(scaleZLeft + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupRight.add(mesh);\n \n // back\n fitScale = this.geo_receiverChanel.height * this.utils.tan(UI.patiosPitch) / this.geo_receiverChanel.length;\n mesh = new Mesh(this.geo_receiverChanel.geometry, MaterialManager.Instance().RECEIVER_CHANEL);\n mesh.position.set(- fitScale * this.bargeRightInfo.length, offsetY, 0);\n mesh.scale.setX(scaleZRight + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.RECEIVER_CHANEL, views: views };\n this.roofGroupRight.add(mesh);\n }\n private addBargeLeft() {\n let mesh: Mesh;\n let extraWallWidth = this.APP.existingWallManager.geo_existingWallW1.width + EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n let offsetXL2 = 0;\n\n let offsetXR2 = 0;\n\n let offsetZL = this.totalBaySize + UI.overhangFront;\n let offsetZR = 0;\n\n let offsetY = 0;\n let bargeLeftLength = UI.span / 2 + UI.overhangLeft;\n let bargeRightLength = UI.span / 2 + UI.overhangLeft;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n let scaleZLeft = this.utils.getHypotenuseByCos(bargeLeftLength, this.APP.sltRoofPitch.currentValue) / this.bargeLeftInfo.length;\n let scaleZRight = this.utils.getHypotenuseByCos(bargeRightLength, this.APP.sltRoofPitch.currentValue) / this.bargeLeftInfo.length;\n\n let fitScale = this.bargeLeftInfo.height * this.utils.tan(UI.patiosPitch) / this.bargeLeftInfo.length;\n\n //left\n mesh = new Mesh(this.bargeLeftInfo.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXL2 - scaleZLeft * this.bargeLeftInfo.length, offsetY, offsetZL);\n mesh.scale.setX(scaleZLeft + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupLeft.add(mesh);\n \n // back\n fitScale = this.geo_receiverChanel.height * this.utils.tan(UI.patiosPitch) / this.geo_receiverChanel.length;\n mesh = new Mesh(this.geo_receiverChanel.geometry, MaterialManager.Instance().RECEIVER_CHANEL);\n mesh.position.set(- scaleZLeft * this.bargeRightInfo.length, offsetY, 0);\n mesh.scale.setX(scaleZRight + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.RECEIVER_CHANEL, views: views };\n this.roofGroupLeft.add(mesh);\n }\n public addGutterRight() {\n let offsetXL = (UI.span / 2 + UI.overhangRight - CONST.GUTTER_ROOF_OFFSET_Z) / this.utils.cos(UI.patiosPitch);\n let offsetY = 0;\n let offsetZ = this.totalBaySize + UI.overhangFront;\n\n let gutterLength = this.roofWidth;\n let exLength = 300\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n // { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n let gutterGroup = this.utils.createGutterGroup(this.gutterInfo, this.geo_gutterCap,\n gutterLength, new Vector3(offsetXL, offsetY, offsetZ), new Vector3(0, Math.PI / 2, 0),\n views, 1, true, true);\n gutterGroup.rotateX(-this.utils.degreesToRadians(UI.patiosPitch))\n this.roofGroupRight.add(gutterGroup); \n }\n public addGutterLeft() {\n let offsetXL = (UI.span / 2 + UI.overhangLeft - CONST.GUTTER_ROOF_OFFSET_Z) / this.utils.cos(UI.patiosPitch);\n let offsetY = 0;\n let offsetZ = 0;\n\n let gutterLength = this.roofWidth;\n let exLength = 300\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n // { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n let gutterGroup = this.utils.createGutterGroup(this.gutterInfo, this.geo_gutterCap,\n gutterLength, new Vector3(-offsetXL, offsetY, offsetZ), new Vector3(0, -Math.PI / 2, 0),\n views, 1, true, true);\n gutterGroup.rotateX(-this.utils.degreesToRadians(UI.patiosPitch))\n this.roofGroupLeft.add(gutterGroup); \n }\n public addRidgeCapping(){\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.RIDGE_CAPPING));\n\n let ridgeFront = this.createRidgeCapping();\n\n const height = this.getRoofOffsetY() + \n this.roofInfo.height / this.utils.cos(this.APP.sltRoofPitch.currentValue);\n \n let offsetX = 0\n \n const ridgeLength = this.totalBaySize + UI.overhangFront;\n ridgeFront.scale.setZ(ridgeLength / this.ridgeGeo.length);\n ridgeFront.position.set( offsetX, height, this.totalBaySize / 2 + UI.overhangFront / 2 - UI.existingWidth1 / 2);\n ridgeFront.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.RIDGE_CAPPING, length: ridgeLength, views: [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }]};\n this.scene.add(ridgeFront)\n }\n public createRidgeCapping(){\n let leftCap = new Mesh(this.ridgeGeo.geometry, MaterialManager.Instance().RIDGE_CAPPING);\n let rightCap = new Mesh(this.ridgeGeo.geometry, MaterialManager.Instance().RIDGE_CAPPING);\n\n rightCap.rotateY(Math.PI)\n\n leftCap.rotateZ(this.utils.degreesToRadians(UI.patiosPitch))\n rightCap.rotateZ(this.utils.degreesToRadians(UI.patiosPitch))\n\n leftCap.userData = {views: [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }]}\n rightCap.userData = {views: [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }]}\n\n return new Group().add(leftCap, rightCap)\n }\n public getRoofOffsetY() {\n return UI.height + this.utils.tan(UI.patiosPitch) * (UI.span / 2);\n }\n public destroy(): void {\n this.unregisterEvent();\n }\n uiCHangedDefer(previousValue: number, currentValue: number) {\n if (this.APP.sltCutOut.currentValue == 1) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => { this.load() }, this.deferTimeout);\n }\n else {\n this.load();\n }\n }\n public uiChanged(preVal: number, curVal: number): void {\n this.load();\n }\n public onColorChanged() {\n if(this.utils && this.roofInfo.geometry){\n this.utils.changeGeoColor(this.roofInfo.geometry, new Vector3(0, 1, 0), UI.roofColor.toString());\n }\n }\n private registerEvent(): void {\n this.eventHandleId = this.onColorChanged.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sltColourRoof\n ];\n this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n this.controlsToRegisterEvent2 = [\n this.APP.sltRoofSheetingType,\n this.APP.sltRoofThickness,\n this.APP.sltBargeType,\n this.APP.sltDripBarge,\n this.APP.sltGutterType,\n this.APP.sltReceiverType,\n this.APP.sltRoofPitch\n ];\n this.controlsToRegisterEvent2.forEach(c => c.addAction(this.objectSizeChangedHandle));\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach(c => c.removeAction(this.objectSizeChangedHandle));\n this.controlsToRegisterEvent2 = undefined;\n }\n private objectSizeChanged(preVal: number, curVal: number) {\n this.optimize().then(() => { this.load() });\n }\n}\n\n","import {\n DIMENSION_LABEL_TYPE,\n DIMENSION_LOCATION,\n GEOMETRY_TYPE,\n} from \"src/app/app.config\";\nimport { PANEL_DIRECTION, RAKECUT_TYPE } from \"src/app/app.constants\";\nimport Dimension, { AddDimensionOptions } from \"src/app-ribspan/models/Dimension\";\nimport { environment } from \"src/environments/environment\";\nimport {\n Box3,\n BoxBufferGeometry,\n FontLoader,\n Geometry,\n Group,\n Line,\n Line3,\n LineBasicMaterial,\n Material,\n Matrix4,\n Mesh,\n Object3D,\n Scene,\n TextBufferGeometry,\n Vector3,\n} from \"three\";\nimport { GableFBFasciaManager } from \".\";\nimport {\n HomeComponent as AppComponent,\n HomeComponent,\n} from \"../../containers/home/home.component\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport {\n GeometryInfo,\n IBay,\n LineType,\n Print2DText,\n Printing2DGeometry,\n Printing2DLine,\n ViewType,\n} from \"src/app/core/models\";\nimport { UI } from \"../ui\";\nimport { Util } from \"../utils\";\n\nexport class DimensionManager {\n private scene: Scene;\n private APP: AppComponent;\n private MANAGER: GableFBFasciaManager;\n public listText: THREE.Object3D[] = [];\n private utils: Util;\n\n private eventHandleId: any;\n\n private material: Material;\n\n private materialManager: MaterialManager;\n\n private dimensionPatiosFrontBottom: Object3D;\n private dimensionPatiosFrontRight: Object3D;\n\n private dimensionPatiosRightBottom: Object3D;\n private dimensionPatiosRightLeft: Object3D;\n private dimensionPatiosRightRight: Object3D;\n\n private dimensionPatiosLeftBottom: Object3D;\n private dimensionPatiosLeftRight: Object3D;\n private dimensionPatiosLeftLeft: Object3D;\n\n private dimensionPatiosPlanRight: Object3D;\n private dimensionPatiosPlanBottom: Object3D;\n private dimensionPatiosPlanLeft: Object3D;\n\n private dimensionPlanMiddle: Object3D;\n private dimensionPlanMidleLeft: Object3D;\n\n private lineCapGeo: GeometryInfo;\n private lineGeo: GeometryInfo;\n private textGeo: TextBufferGeometry;\n\n private dimensionDistance = 1500;\n private dimensionDistance2 = 500;\n\n private textDistance = 5000;\n\n private totalBaySize: number;\n private box: Box3;\n\n private font: any;\n private textParameter: any;\n private isReady = false;\n private controlsToRegisterEvent: Array;\n private options: AddDimensionOptions;\n private startPos: Vector3;\n private startMatrix: Matrix4;\n private startBayLength: number;\n\n private geometryManager: GeometryManager;\n\n constructor(app: AppComponent, manager: GableFBFasciaManager) {\n this.utils = new Util();\n this.materialManager = MaterialManager.Instance();\n this.APP = app;\n this.MANAGER = manager;\n this.scene = this.APP.scene;\n this.material = MaterialManager.Instance().DIMENSION_TEXT;\n this.geometryManager = GeometryManager.Instance();\n //this.registerEvent();\n }\n\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n this.lineGeo = this.geometryManager.getDimensionLine();\n this.lineCapGeo = this.geometryManager.getDimensionCap();\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.unload();\n\n var loader = new FontLoader();\n\n this.dimensionPatiosFrontBottom = new Group();\n this.dimensionPatiosFrontBottom.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n // this.dimensionPatiosFrontBottom.rotation.set(0, Math.PI, 0);\n this.dimensionPatiosFrontBottom.visible = false;\n\n this.dimensionPatiosFrontRight = new Group();\n this.dimensionPatiosFrontRight.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosFrontRight.rotation.set(0, 0, -Math.PI / 2);\n this.dimensionPatiosFrontRight.visible = false;\n\n this.dimensionPatiosRightBottom = new Group();\n this.dimensionPatiosRightBottom.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosRightBottom.rotation.set(0, -Math.PI / 2, 0);\n this.dimensionPatiosRightBottom.visible = false;\n\n this.dimensionPatiosRightLeft = new Group();\n this.dimensionPatiosRightLeft.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosRightLeft.rotation.set(0, -Math.PI / 2, -Math.PI / 2);\n this.dimensionPatiosRightLeft.visible = false;\n\n this.dimensionPatiosRightRight = new Group();\n this.dimensionPatiosRightRight.rotation.set(\n 0,\n -Math.PI / 2,\n -Math.PI / 2\n );\n this.dimensionPatiosRightRight.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosRightRight.visible = false;\n\n this.dimensionPatiosLeftBottom = new Group();\n this.dimensionPatiosLeftBottom.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosLeftBottom.rotation.set(0, -Math.PI / 2, 0);\n this.dimensionPatiosLeftBottom.visible = false;\n\n this.dimensionPatiosLeftRight = new Group();\n this.dimensionPatiosLeftRight.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosLeftRight.rotation.set(Math.PI / 2, -Math.PI / 2, 0);\n this.dimensionPatiosLeftRight.visible = false;\n\n this.dimensionPatiosLeftLeft = new Group();\n this.dimensionPatiosLeftLeft.rotation.set(0, -Math.PI / 2, Math.PI / 2);\n this.dimensionPatiosLeftLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftLeft.visible = false;\n\n this.dimensionPatiosPlanRight = new Group();\n this.dimensionPatiosPlanRight.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosPlanRight.rotation.set(\n -Math.PI / 2,\n Math.PI,\n -Math.PI / 2\n );\n\n this.dimensionPatiosPlanBottom = new Group();\n this.dimensionPatiosPlanBottom.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosPlanBottom.rotation.set(-Math.PI / 2, 0, 0);\n\n this.dimensionPatiosPlanLeft = new Group();\n this.dimensionPatiosPlanLeft.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n position: { left: true },\n };\n this.dimensionPatiosPlanLeft.rotation.set(-Math.PI / 2, 0, -Math.PI / 2);\n\n this.dimensionPlanMiddle = new Group();\n this.dimensionPlanMidleLeft = new Group();\n\n //testing\n // [\n // this.dimensionPatiosFrontBottom,\n // this.dimensionPatiosFrontRight,\n // this.dimensionPatiosRightBottom,\n // this.dimensionPatiosRightLeft,\n // this.dimensionPatiosRightRight,\n // this.dimensionPatiosLeftBottom,\n // this.dimensionPatiosLeftRight,\n // this.dimensionPatiosLeftLeft,\n // ].forEach(g => { g.visible = true });\n\n this.scene.add(this.dimensionPatiosPlanRight);\n this.scene.add(this.dimensionPatiosPlanLeft);\n this.scene.add(this.dimensionPatiosFrontRight);\n this.APP.patiosManager.patiosGroup.add(\n this.dimensionPatiosFrontBottom,\n //this.dimensionPatiosFrontRight,\n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom,\n this.dimensionPatiosLeftRight,\n this.dimensionPatiosLeftLeft,\n this.dimensionPatiosPlanBottom,\n this.dimensionPlanMiddle,\n this.dimensionPlanMidleLeft\n );\n\n loader.load(\n environment.modelBaseUrl +\n \"/assets/fonts/helvetiker_regular.typeface.json\",\n (font) => {\n this.font = font;\n\n this.textParameter = {\n font: this.font,\n size: 200,\n height: 5,\n curveSegments: 10,\n };\n this.options = {\n container: HomeComponent.ins.scene,\n start: new Vector3(),\n end: new Vector3(),\n linePos: new Vector3(),\n views: [],\n allowDrag: true,\n textParameter: this.textParameter,\n textPos: new Vector3(),\n labelType: null,\n fitZ: 10,\n hasTextClone: false,\n axis: \"x\",\n lineLength: 0,\n subtype: null,\n textUserData: null,\n onDragCallback: this.onDimDrag.bind(this),\n onDragStartCallback: this.onDimDragStart.bind(this),\n };\n\n this.isReady = true;\n this.draw();\n resolve();\n }\n );\n });\n }\n\n public unload() {\n this.scene.remove(this.dimensionPatiosPlanRight);\n this.scene.remove(this.dimensionPatiosPlanLeft);\n this.scene.remove(this.dimensionPatiosFrontRight);\n if (this.APP.patiosManager && this.APP.patiosManager.patiosGroup) {\n this.APP.patiosManager.patiosGroup.remove(\n this.dimensionPatiosFrontBottom,\n //this.dimensionPatiosFrontRight,\n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom,\n this.dimensionPatiosLeftRight,\n this.dimensionPatiosLeftLeft,\n this.dimensionPatiosPlanBottom,\n this.dimensionPlanMiddle,\n this.dimensionPlanMidleLeft\n );\n }\n }\n\n public draw() {\n if (!this.isReady) {\n return;\n }\n // this.dimensionPatiosPlanBottom.children = [];\n // this.dimensionPatiosPlanRight.children = [];\n // this.dimensionPatiosPlanLeft.children = [];\n this.dimensionPatiosPlanBottom.children =\n this.dimensionPatiosPlanBottom.children.filter(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.LEFT_OVERHANG ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.RIGHT_OVERHANG\n );\n this.dimensionPatiosPlanRight.children =\n this.dimensionPatiosPlanRight.children.filter(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.FRONT_OVERHANG ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.BACK_OVERHANG ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY\n );\n this.dimensionPatiosPlanLeft.children =\n this.dimensionPatiosPlanLeft.children.filter(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL\n );\n this.dimensionPatiosFrontBottom.children = [];\n this.dimensionPatiosFrontRight.children = [];\n this.dimensionPatiosLeftBottom.children = [];\n this.dimensionPatiosLeftRight.children = [];\n this.dimensionPatiosLeftLeft.children = [];\n this.dimensionPatiosRightBottom.children = [];\n this.dimensionPatiosRightLeft.children = [];\n this.dimensionPatiosRightRight.children = [];\n this.dimensionPlanMiddle.children = [];\n this.dimensionPlanMidleLeft.children = [];\n\n //this.scene.remove(...this.scene.children.filter(o => o.userData.type == 'BOXHELPER'));\n\n this.totalBaySize = 0;\n for (let b of this.APP.dialogEditBay.listBay) {\n this.totalBaySize += b.value;\n }\n\n this.box = this.utils.getSceneBox();\n\n this.drawDimensionPatiosPlanBottom();\n this.drawDimensionPatiosPlanRight();\n // this.drawDimensionPatiosPlanLeft();\n\n this.drawDimensionPatiosFrontBottom();\n this.drawDimensionPatiosFrontRight();\n\n this.drawDimensionPatiosLeftBottom();\n this.drawDimensionPatiosLeftRight();\n this.drawDimensionPatiosLeftLeft();\n\n this.drawDimensionPatiosRightBottom();\n this.drawDimensionPatiosRightLeft();\n this.drawDimensionPatiosRightRight();\n\n this.drawDimensionMidle();\n this.drawDimensionMidleLeft();\n\n // var offset = this.calulateBoundingBox();\n // this.dimensionPatiosPlanRight.position.setX(offset.right);\n // this.dimensionPatiosPlanLeft.position.setX(offset.left);\n // this.dimensionPatiosPlanBottom.position.setZ(offset.front);\n\n // let existingHouseDimLeft = this.APP.scene.children.find(c => c.userData.type == GEOMETRY_TYPE.DIMENSION && c.userData.position?.planLeft);\n // if (existingHouseDimLeft && existingHouseDimLeft.position.x > offset.left) {\n // existingHouseDimLeft.position.setX(offset.left - 500);\n // }\n this.APP.dimensionManager.draw();\n }\n private drawDimensionMidleLeft() {\n let offsetX = 0;\n\n let dimLeft = this.utils.createArrowLine([{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }]);\n dimLeft.visible = false;\n dimLeft.position.setX(-300)\n let textLeft = this.utils.createText(\"Panel direction\", [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }], this.textParameter, new Vector3(-500, 0, 650));\n textLeft.userData.rotation = new Vector3(0, Math.PI / 2, 0)\n textLeft.visible = false;\n\n let dimRight = dimLeft.clone()\n dimRight.position.setX(300);\n let textRight = textLeft.clone();\n textRight.position.setX(500);\n \n this.dimensionPlanMidleLeft.add(dimLeft);\n this.dimensionPlanMidleLeft.add(textLeft);\n this.dimensionPlanMidleLeft.add(dimRight);\n this.dimensionPlanMidleLeft.add(textRight);\n\n\n if (this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT) {\n let offsetZ = this.totalBaySize + UI.overhangFront - UI.existingWidth1 / 2 + UI.eaveWidth + this.MANAGER.postAndBeamManager.geoBraket_2.height / 4;\n this.dimensionPlanMidleLeft.position.set(offsetX, 0, offsetZ);\n this.dimensionPlanMidleLeft.rotation.set(0, Math.PI, 0);\n }\n else {\n let offsetZ = - UI.overhangBack - UI.existingWidth1 / 2 + UI.eaveWidth + this.MANAGER.postAndBeamManager.geoBraket_2.height / 4;\n this.dimensionPlanMidleLeft.rotation.set(0, 0, 0);\n this.dimensionPlanMidleLeft.position.set(offsetX, 0, offsetZ);\n }\n }\n private drawDimensionMidle() {\n let offsetX = 0;\n\n let dimLeft = this.utils.createArrowLine([{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }]);\n dimLeft.visible = false;\n dimLeft.rotation.set(0, -Math.PI / 2, 0);\n\n let textLeft = this.utils.createText(`${UI.patiosPitch} degree`, [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }], this.textParameter, new Vector3(-500, 0, 200));\n textLeft.visible = false;\n\n let dimRight = dimLeft.clone()\n dimRight.rotation.set(0, Math.PI / 2, 0);\n\n let textRight = textLeft.clone();\n textRight.position.setX(500);\n \n this.dimensionPlanMiddle.add(dimLeft);\n this.dimensionPlanMiddle.add(textLeft);\n this.dimensionPlanMiddle.add(dimRight);\n this.dimensionPlanMiddle.add(textRight);\n\n let offsetZ = - UI.existingWidth1 / 2 + UI.eaveWidth + this.MANAGER.postAndBeamManager.geoBraket_2.height / 4 + this.totalBaySize / 2;\n this.dimensionPlanMiddle.rotation.set(0, 0, 0);\n this.dimensionPlanMiddle.position.set(offsetX, 0, offsetZ);\n }\n\n private drawDimensionPatiosPlanBottom() {\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n\n let _dimensionDistane = this.dimensionDistance2;\n if (\n this.APP.sltExistingType.currentValue == 2 ||\n this.APP.sltExistingType.currentValue == 3\n ) {\n if (this.APP.sldExistingWidth1.currentValue > 0) {\n _dimensionDistane = this.dimensionDistance;\n }\n }\n\n let textStr = this.utils.getDimensionValue(this.APP.sldSpan.currentValue);\n\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldSpan.currentValue,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.SPAN,\n hasTextClone: false,\n textUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n },\n textCloneUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n },\n textCloneRotation: new Vector3(0, 0, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, 0, 0),\n };\n let dimSpan = this.dimensionPatiosPlanBottom.children.find(\n (el) => el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN\n ) as Dimension;\n if (!dimSpan) {\n new Dimension(options);\n } else {\n dimSpan.update(options);\n }\n\n //Left over hang\n this.addOverhang(\n this.dimensionPatiosPlanBottom,\n UI.span / 2,\n UI.overhangLeft,\n views,\n \"Left\",\n 0,\n \"z\",\n DIMENSION_LABEL_TYPE.LEFT_OVERHANG\n );\n this.addOverhang(\n this.dimensionPatiosPlanBottom,\n UI.span / 2,\n UI.overhangRight,\n views,\n \"Right\",\n 0,\n \"z\",\n DIMENSION_LABEL_TYPE.RIGHT_OVERHANG\n );\n this.repositionDimension(\n this.dimensionPatiosPlanBottom,\n DIMENSION_LOCATION.PLAN_BOTTOM\n );\n }\n onDimDrag(event) {\n this.utils.handlerDimDragEvent(\n event,\n this.startPos,\n this.startMatrix,\n this.startBayLength\n );\n this.startPos = event.object.position.clone();\n }\n onDimDragStart(event) {\n this.startPos = event.object.position.clone();\n this.startMatrix = event.object.matrixWorld.clone();\n if (event.object.userData?.dimType === DIMENSION_LABEL_TYPE.BAY) {\n let bayNum = event.object.userData.bayNum;\n this.startBayLength = UI.listBay[+bayNum].value;\n }\n }\n private drawDimensionPatiosPlanRight() {\n let offsetDimensionZ =\n this.totalBaySize / 2 +\n this.APP.sldEaveWidth.currentValue -\n this.APP.sldExistingWidth1.currentValue / 2 +\n this.MANAGER.postAndBeamManager.geoBraket_2.height / 4;\n\n let _dimensionDistane = this.dimensionDistance2;\n if (\n this.APP.sltExistingType.currentValue == 2 ||\n this.APP.sltExistingType.currentValue == 3\n ) {\n if (this.APP.sldExistingWidth1.currentValue > 0) {\n _dimensionDistane = this.dimensionDistance;\n }\n }\n\n let offsetDimensionX = this.box.max.x + this.dimensionDistance2;\n if (this.APP.sltExistingType.currentValue == 1) {\n offsetDimensionX += this.APP.sldEaveWidth.currentValue;\n }\n\n this.dimensionPatiosPlanRight.position.set(\n offsetDimensionX,\n 0,\n offsetDimensionZ\n );\n\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n let offsetX = -this.totalBaySize / 2;\n this.dimensionPatiosPlanRight.children =\n this.dimensionPatiosPlanRight.children.filter(\n (el) =>\n el.userData?.groupType != DIMENSION_LABEL_TYPE.BAY ||\n (el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY &&\n el.userData?.bayNum <\n HomeComponent.ins.dialogEditBay.listBay.length)\n );\n\n for (let i = 0; i <= this.APP.dialogEditBay.listBay.length; i++) {\n let b: IBay = { index: 0, value: 0, isCut: false };\n if (i < this.APP.dialogEditBay.listBay.length) {\n b = this.APP.dialogEditBay.listBay[i];\n }\n\n if (i < this.APP.dialogEditBay.listBay.length) {\n let textStr = this.utils.getDimensionValue(b.value);\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: b.value,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(offsetX + b.value / 2, 0, 0),\n textPos: new Vector3(offsetX + b.value / 2, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.BAY,\n bayNum: i,\n textUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n position: { bottom: true },\n rotation: new Vector3(0, -Math.PI / 2, 0),\n },\n textRotation: new Vector3(0, -Math.PI, 0),\n fitZ: -10,\n };\n let dimBay = this.dimensionPatiosPlanRight.children.find(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY &&\n el.userData?.bayNum == i\n ) as Dimension;\n if (!dimBay) {\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n offsetX += b.value;\n }\n\n let offsetRight = this.totalBaySize / 2;\n let offsetLeft = this.totalBaySize / 2;\n\n this.addOverhang(\n this.dimensionPatiosPlanRight,\n offsetRight,\n UI.overhangFront,\n views,\n \"Right\",\n Math.PI,\n \"y\",\n DIMENSION_LABEL_TYPE.FRONT_OVERHANG\n );\n this.addOverhang(\n this.dimensionPatiosPlanRight,\n offsetLeft,\n UI.overhangBack,\n views,\n \"Left\",\n Math.PI,\n \"y\",\n DIMENSION_LABEL_TYPE.BACK_OVERHANG\n );\n\n this.repositionDimension(\n this.dimensionPatiosPlanRight,\n DIMENSION_LOCATION.PLAN_RIGHT\n );\n }\n private drawDimensionPatiosPlanLeft() {\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.NONE) {\n this.dimensionPatiosPlanLeft.children =\n this.dimensionPatiosPlanLeft.children.filter(\n (el) =>\n el.userData?.groupType !=\n DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL\n );\n return;\n }\n\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n\n let offsetDimensionZ =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldEaveWidth.currentValue -\n this.APP.sldExistingWidth1.currentValue / 2 -\n // - this.APP.existingWallManager.geo_existingWallL1.width\n // - this.APP.eaveManager.backOverhang\n this.APP.sldLeftCutVertical.currentValue / 2;\n\n let optionsRake: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldLeftCutVertical.currentValue,\n container: this.dimensionPatiosPlanLeft,\n views: views,\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL,\n };\n let dimRake = this.dimensionPatiosPlanLeft.children.find(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL\n ) as Dimension;\n if (!dimRake) {\n new Dimension(optionsRake);\n } else {\n dimRake.update(optionsRake);\n }\n\n //let offsetDimensionX = this.MANAGER.boundingBox.min.x - this.dimensionDistance2;\n this.dimensionPatiosPlanLeft.position.set(0, 0, offsetDimensionZ);\n this.repositionDimension(\n this.dimensionPatiosPlanLeft,\n DIMENSION_LOCATION.PLAN_LEFT\n );\n }\n private drawDimensionPatiosFrontBottom() {\n let dimOffsetY = -this.dimensionDistance2;\n this.dimensionPatiosFrontBottom.position.set(0, dimOffsetY, 0);\n\n let views = [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosPlanBottom.children.forEach((groupDim) => {\n groupDim.children\n .filter(\n (c) => c.userData.subtype != GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT\n )\n .forEach((e) => {\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.rotation.set(0, Math.PI, 0);\n dim.userData[\"rotation\"] = new Vector3(0, 0, 0);\n dim.userData[\"position\"] = { ...e.userData.position, bottom: true };\n }\n this.dimensionPatiosFrontBottom.add(dim);\n });\n });\n }\n private drawDimensionPatiosFrontRight() {\n let views = [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }];\n\n let _dimensionDistane = this.dimensionDistance2;\n if (\n this.APP.sltExistingType.currentValue == 2 ||\n this.APP.sltExistingType.currentValue == 3\n ) {\n if (this.APP.sldExistingWidth1.currentValue > 0) {\n _dimensionDistane = this.dimensionDistance;\n }\n }\n let height =\n this.APP.sldExistingWallHeight.currentValue +\n +UI.upstandBraketType +\n this.MANAGER.postAndBeamManager.beamInfo.height +\n (UI.span / 2) * this.utils.tan(UI.patiosPitch);\n let dimOffsetX =\n UI.span / 2 +\n this.APP.patiosManager.patiosGroup.position.x +\n _dimensionDistane;\n let dimOffsetY = height / 2;\n if (this.APP.sldExistingLength.currentValue / 2 > UI.span / 2) {\n dimOffsetX =\n this.APP.sldExistingLength.currentValue / 2 + _dimensionDistane;\n }\n\n if (\n this.APP.sltExistingType.currentValue == 2 ||\n this.APP.sltExistingType.currentValue == 3\n ) {\n dimOffsetX += this.APP.sldExistingLength2.currentValue;\n }\n\n this.dimensionPatiosFrontRight.position.set(dimOffsetX, dimOffsetY, 0);\n\n //--------\n\n let scaleLength = height / this.lineGeo.length;\n\n let cap1 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-dimOffsetY);\n\n let cap2 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(dimOffsetY);\n\n let line = new Mesh(\n this.lineGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(height);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(\n this.textGeo,\n MaterialManager.Instance().DIMENSION_TEXT\n );\n text.userData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, 0, -Math.PI / 2),\n };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosFrontRight.add(\n line,\n cap1,\n cap2,\n text,\n ...this.utils.addArrowForLine(line)\n );\n this.repositionDimension(\n this.dimensionPatiosFrontRight,\n DIMENSION_LOCATION.FRONT_RIGHT\n );\n }\n private drawDimensionPatiosLeftBottom() {\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z;\n\n this.dimensionPatiosLeftBottom.position.set(0, dimOffsetY, dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n this.dimensionPatiosPlanRight.children.forEach((groupDim) => {\n groupDim.children.forEach((e) => {\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n if (e.userData?.subType == GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT)\n return;\n dim.rotation.set(0, 0, 0);\n dim.userData[\"views\"] = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n ];\n dim.userData[\"rotation\"] = new Vector3(0, 0, 0);\n dim.userData[\"position\"] = { ...e.userData.position, bottom: true };\n }\n this.dimensionPatiosLeftBottom.add(dim);\n });\n });\n }\n private drawDimensionPatiosLeftRight() {\n let dimOffsetY =\n UI.eaveHeight +\n +UI.upstandBraketType +\n this.MANAGER.postAndBeamManager.beamInfo.height +\n (UI.span / 2) * this.utils.tan(UI.patiosPitch);\n\n let dimOffsetZ =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldEaveWidth.currentValue +\n this.dimensionDistance2 -\n this.APP.sldExistingWidth1.currentValue / 2;\n if (\n this.APP.sldExistingWidth1.currentValue +\n this.APP.sldExistingWidth2.currentValue >\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue\n ) {\n dimOffsetZ =\n this.APP.sldExistingWidth1.currentValue / 2 +\n this.APP.sldExistingWidth2.currentValue +\n this.dimensionDistance2 -\n 290;\n }\n if (this.APP.sldExistingLength2.currentValue > 0) {\n dimOffsetZ += 500;\n }\n\n this.dimensionPatiosLeftRight.position.set(0, dimOffsetY / 2, dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n let offsetLength = +dimOffsetY.toFixed(0);\n let scaleLength = offsetLength / this.lineGeo.length;\n\n let cap1 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength / 2);\n\n let cap2 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength / 2);\n\n let line = new Mesh(\n this.lineGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(\n this.textGeo,\n MaterialManager.Instance().DIMENSION_TEXT\n );\n text.userData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }],\n rotation: new Vector3(-Math.PI / 2, 0, 0),\n };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosLeftRight.add(\n line,\n cap1,\n cap2,\n text,\n ...this.utils.addArrowForLine(line)\n );\n this.repositionDimension(\n this.dimensionPatiosLeftRight,\n DIMENSION_LOCATION.LEFT_RIGHT\n );\n }\n private drawDimensionPatiosRightBottom() {\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z;\n\n this.dimensionPatiosRightBottom.position.set(0, dimOffsetY, dimOffsetZ);\n\n let views = [{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosPlanRight.children.forEach((groupDim) => {\n groupDim.children.forEach((e) => {\n if (e.userData?.subType == GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT) return;\n\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.userData[\"rotation\"] = new Vector3(0, 0, 0);\n dim.userData[\"position\"] = { ...e.userData.position, bottom: true };\n }\n this.dimensionPatiosRightBottom.add(dim);\n });\n });\n }\n private drawDimensionPatiosRightLeft() {\n let dimOffsetY =\n UI.eaveHeight +\n +UI.upstandBraketType +\n this.MANAGER.postAndBeamManager.beamInfo.height +\n (UI.span / 2) * this.utils.tan(UI.patiosPitch);\n let dimOffsetZ = this.dimensionPatiosLeftRight.position.z;\n\n this.dimensionPatiosRightLeft.position.set(0, dimOffsetY / 2, dimOffsetZ);\n let views = [{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosLeftRight.children.forEach((e) => {\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.userData[\"rotation\"] = new Vector3(Math.PI / 2, 0, 0);\n dim.rotation.set(0, Math.PI, 0);\n }\n this.dimensionPatiosRightLeft.add(dim);\n });\n this.repositionDimension(\n this.dimensionPatiosRightLeft,\n DIMENSION_LOCATION.RIGHT_LEFT\n );\n }\n private drawDimensionPatiosLeftLeft() {\n let dimOffsetY =\n this.APP.sldExistingWallHeight.currentValue +\n +UI.upstandBraketType +\n this.MANAGER.postAndBeamManager.beamInfo.height;\n let dimOffsetZ = this.APP.sldExistingWidth1.currentValue / 2 + 1800;\n\n this.dimensionPatiosLeftLeft.position.set(0, dimOffsetY / 2, -dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n ];\n\n let offsetLength = dimOffsetY;\n let scaleLength = offsetLength / this.lineGeo.length;\n\n let cap1 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength / 2);\n\n let cap2 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength / 2);\n\n let line = new Mesh(\n this.lineGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(\n this.textGeo,\n MaterialManager.Instance().DIMENSION_TEXT\n );\n text.userData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }],\n rotation: new Vector3(Math.PI / 2, 0, 0),\n };\n text.position.set(0, 200, 0);\n\n this.dimensionPatiosLeftLeft.add(\n line,\n cap1,\n cap2,\n text,\n ...this.utils.addArrowForLine(line)\n );\n }\n private drawDimensionPatiosRightRight() {\n let dimOffsetY =\n this.APP.sldExistingWallHeight.currentValue +\n +UI.upstandBraketType +\n this.MANAGER.postAndBeamManager.beamInfo.height;\n let dimOffsetZ = this.APP.sldExistingWidth1.currentValue / 2 + 1800;\n\n this.dimensionPatiosRightRight.position.set(0, dimOffsetY / 2, -dimOffsetZ);\n\n let views = [{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosLeftLeft.children.forEach((e) => {\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n dim.userData[\"rotation\"] = new Vector3(-Math.PI / 2, 0, 0);\n dim.rotation.set(0, Math.PI, 0);\n dim.position.set(dim.position.x, -dim.position.y, dim.position.z);\n this.dimensionPatiosRightRight.add(dim);\n }\n });\n }\n private addOverhang(\n groupDim: Object3D,\n offset: number,\n overhangValue: number,\n views: any,\n side: string,\n rotateText: number,\n axis: string,\n labelType?: string\n ) {\n if (overhangValue == 0) {\n let dim = groupDim.children.find(\n (el) => el.userData?.groupType == labelType\n ) as Dimension;\n if (dim) {\n groupDim.remove(dim);\n }\n return;\n }\n\n let textStr = this.utils.getDimensionValue(overhangValue);\n\n let textRotation = new Vector3();\n let textUserData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n position: { overhang: true },\n };\n if (axis === \"z\") {\n textRotation.setZ(rotateText);\n textUserData[\"rotation\"] = new Vector3(0, 0, -rotateText / 2);\n textUserData[\"position\"][\"bottom\"] = true;\n } else if (axis === \"y\") {\n textRotation.setY(rotateText);\n textUserData[\"rotation\"] = new Vector3(0, -rotateText / 2, 0);\n } else if (axis === \"x\") {\n textRotation.setX(rotateText);\n textUserData[\"rotation\"] = new Vector3(-rotateText / 2, 0, 0);\n }\n\n let linePos = new Vector3();\n if (side === \"Left\") {\n linePos.setX(-offset - overhangValue / 2);\n } else if (side === \"Right\") {\n linePos.setX(offset + overhangValue / 2);\n }\n let fitZ = 0;\n if (labelType) {\n if (axis === \"z\") {\n fitZ = 10;\n } else if (axis === \"y\") {\n fitZ = -10;\n }\n }\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: overhangValue,\n container: groupDim,\n views: views,\n linePos: linePos,\n textPos: linePos.clone().setY(linePos.y - 200),\n labelType: labelType ? labelType : null,\n fitZ: fitZ,\n textRotation: textRotation,\n textUserData: textUserData,\n };\n let dim = groupDim.children.find(\n (el) => el.userData?.groupType == labelType\n ) as Dimension;\n if (!dim) {\n new Dimension(options);\n } else {\n dim.update(options);\n }\n }\n private getTextCover(\n textGeo: TextBufferGeometry,\n labelType: string,\n pos: Vector3,\n fitZ = 0,\n bayNum?: number\n ) {\n let textSize = new Vector3();\n textGeo.boundingBox.getSize(textSize);\n\n let textCover = new Mesh(\n new BoxBufferGeometry(textSize.x, textSize.y, textSize.z)\n );\n textCover.position.set(pos.x, pos.y, pos.z + fitZ);\n textCover.userData = { type: GEOMETRY_TYPE.TEXT_COVER, labelType };\n if (bayNum !== undefined) {\n textCover.userData[\"bayNum\"] = bayNum;\n }\n textCover.material[\"opacity\"] = 0;\n textCover.material[\"transparent\"] = true;\n\n return textCover;\n }\n public getOutlines(): Printing2DGeometry {\n let lsGeometries: Printing2DLine[] = [];\n let lsText: Print2DText[] = [];\n\n for (let dim of [\n ...this.dimensionPatiosPlanBottom.children,\n ...this.dimensionPatiosPlanRight.children,\n ...this.dimensionPatiosPlanLeft.children,\n ...this.dimensionPatiosFrontBottom.children,\n ...this.dimensionPatiosFrontRight.children,\n ...this.dimensionPatiosLeftBottom.children,\n ...this.dimensionPatiosLeftRight.children,\n ...this.dimensionPatiosLeftLeft.children,\n ...this.dimensionPatiosRightBottom.children,\n ...this.dimensionPatiosRightLeft.children,\n ...this.dimensionPatiosRightRight.children,\n ...this.dimensionPlanMiddle.children,\n ...this.dimensionPlanMidleLeft.children,\n ]) {\n if (!dim.userData.views) {\n console.log(\"TEXT NO VIEW\", dim);\n continue;\n }\n\n if (dim.type == \"Group\") {\n dim.children.forEach((el) => {\n el.updateMatrix();\n let _clone = el.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(el.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n\n el.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(el.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(el.matrixWorld);\n\n let textRotation = el.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, el, pos, textRotation, points);\n });\n } else {\n dim.updateMatrix();\n let _clone = dim.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(dim.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n\n dim.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(dim.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(dim.matrixWorld);\n\n let textRotation = dim.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, dim, pos, textRotation, points);\n }\n }\n\n return { lines: lsGeometries, texts: lsText };\n }\n private getDimInfo(\n lsGeometries: Printing2DLine[],\n lsText: Print2DText[],\n dim: Object3D,\n pos: Vector3,\n textRotation: Vector3,\n points: Vector3[]\n ) {\n if (\n dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT &&\n dim.userData.views &&\n dim.userData.value\n ) {\n let box = new Box3().setFromObject(dim.parent);\n let startEnd = this.utils.getStartEndPoint(box);\n let line = new Line3(startEnd[0], startEnd[1]);\n\n let projectPoint = new Vector3();\n line.closestPointToPoint(pos, true, projectPoint);\n let _pos = new Vector3().addVectors(\n projectPoint,\n new Vector3()\n .subVectors(pos, projectPoint)\n .normalize()\n .multiplyScalar(10)\n );\n\n if (dim.userData.position?.bottom) {\n if (dim.userData.position?.overhang) {\n _pos = new Vector3().addVectors(\n projectPoint,\n new Vector3()\n .subVectors(pos, projectPoint)\n .normalize()\n .multiplyScalar(180)\n );\n } else {\n _pos = new Vector3().addVectors(\n projectPoint,\n new Vector3()\n .subVectors(pos, projectPoint)\n .normalize()\n .multiplyScalar(120)\n );\n }\n } else {\n if (dim.userData.position?.overhang) {\n _pos = new Vector3().addVectors(\n projectPoint,\n new Vector3()\n .subVectors(pos, projectPoint)\n .normalize()\n .multiplyScalar(100)\n );\n }\n }\n\n let p = new Vector3().applyMatrix4(dim.matrixWorld);\n\n lsText.push({\n value: dim.userData.value,\n position: p,\n rotation: textRotation,\n views: dim.userData.views,\n });\n } else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_LINE) {\n // this.scene.add(new LineSegments(new Geometry().setFromPoints(points), new LineBasicMaterial({color: new Color('red')})));\n\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views,\n });\n } else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_CAP) {\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views,\n });\n } else if (dim.userData.type == \"Arrow\") {\n let geo = ((dim as Line).geometry as Geometry).clone();\n geo.applyMatrix4(dim.matrixWorld);\n lsGeometries.push({\n vertices: geo.vertices,\n objectType: dim.userData.type,\n views: dim.userData.views,\n });\n }\n }\n public destroy(): void {\n this.unregisterEvent();\n this.unload();\n }\n\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldFrontOverhang,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sldExistingWallHeight,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch,\n ];\n this.controlsToRegisterEvent.forEach((c) =>\n c.addAction(this.eventHandleId)\n );\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.controlsToRegisterEvent = undefined;\n }\n\n public uiChanged(preVal: number, curVal: number): void {\n this.draw();\n }\n private calulateBoundingBox() {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter((c) => c.userData.type == \"BOX_HELPER_\")\n );\n let patiosBox = this.MANAGER.boundingBox;\n\n let planRightBox = this.APP.utils.getObjectBoundingBox(\n this.dimensionPatiosPlanRight\n );\n planRightBox.min.x = patiosBox.max.x;\n planRightBox.max.x = patiosBox.max.x + 500;\n planRightBox.max.y = 10000;\n\n let planLeftBox = this.APP.utils.getObjectBoundingBox(\n this.dimensionPatiosPlanLeft\n );\n planLeftBox.min.x = patiosBox.min.x - 500;\n planLeftBox.max.x = patiosBox.min.x;\n planLeftBox.max.y = 10000;\n\n let planBottomBox = this.APP.utils.getObjectBoundingBox(\n this.dimensionPatiosPlanBottom\n );\n let planBottomBoxWidth = planBottomBox.max.z - planBottomBox.min.z;\n planBottomBox.min.z = patiosBox.max.z;\n planBottomBox.max.z = patiosBox.max.z + planBottomBoxWidth;\n planBottomBox.max.y = 10000;\n\n let objs = [];\n\n objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n c.userData.position?.width1) ||\n c.userData.position?.width2 ||\n c.userData.position?.length2 ||\n c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n\n // for(let e of objs){\n // let boxModelHelper = new BoxHelper(e);\n // boxModelHelper.userData = {type: 'BOX_HELPER_'};\n // this.scene.add(boxModelHelper);\n // }\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (planRightBox.intersectsBox(objBox)) {\n intersectBox = true;\n planRightBox.translate(new Vector3(100, 0, 0));\n }\n if (planLeftBox.intersectsBox(objBox)) {\n intersectBox = true;\n planLeftBox.translate(new Vector3(-100, 0, 0));\n }\n if (planBottomBox.intersectsBox(objBox)) {\n intersectBox = true;\n planBottomBox.translate(new Vector3(0, 0, 100));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(planRightBox);\n // boxHelper.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper);\n\n // let boxHelper2 = new Box3Helper(planLeftBox);\n // boxHelper2.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper2);\n\n // let boxHelper3 = new Box3Helper(planBottomBox);\n // boxHelper3.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper3);\n\n return {\n left: planLeftBox.min.x,\n right: planRightBox.max.x,\n front: planBottomBox.max.z,\n };\n }\n private repositionDimension(dimension, location, extraDistance = 0) {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter((c) => c.userData.type == location)\n );\n\n let patiosBox = this.MANAGER.boundingBox;\n\n if (location == DIMENSION_LOCATION.FRONT_RIGHT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.max.x;\n dimBox.max.x = patiosBox.max.x + 500;\n dimBox.max.z = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n !c.userData.position.length1 &&\n !c.userData.position.length2) ||\n (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL &&\n !c.userData.position.length1 &&\n !c.userData.position.length2)\n );\n\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n !c.userData.position.length1) ||\n (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL &&\n !c.userData.position.length1)\n );\n }\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(100, 0, 0));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setX(dimBox.max.x + extraDistance);\n } else if (location == DIMENSION_LOCATION.PLAN_LEFT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.min.x - 500;\n dimBox.max.x = patiosBox.min.x;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF ||\n c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(-100, 0, 0));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setX(dimBox.min.x + extraDistance);\n } else if (location == DIMENSION_LOCATION.PLAN_RIGHT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.max.x;\n dimBox.max.x = patiosBox.max.x + 500;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF ||\n c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n\n // for(let e of objs){\n // let boxModelHelper = new BoxHelper(e);\n // boxModelHelper.userData = {type: location};\n // this.scene.add(boxModelHelper);\n // }\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(100, 0, 0));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setX(dimBox.max.x + extraDistance);\n } else if (location == DIMENSION_LOCATION.PLAN_BOTTOM) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF ||\n c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(0, 0, 100));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setZ(dimBox.max.z + extraDistance);\n } else if (location == DIMENSION_LOCATION.LEFT_RIGHT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n dimBox.min.x = -10000;\n dimBox.max.x = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n c.userData.position?.left) ||\n (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL &&\n c.userData.position?.left)\n );\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(0, 0, 100));\n }\n }\n\n if (!intersectBox) break;\n }\n\n dimension.position.setZ(dimBox.max.z + extraDistance);\n } else if (location == DIMENSION_LOCATION.RIGHT_LEFT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(\n this.dimensionPatiosLeftRight\n );\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n\n dimBox.min.x = -10000;\n dimBox.max.x = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n c.userData.position?.right) ||\n (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL &&\n c.userData.position?.right)\n );\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(0, 0, 100));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setZ(dimBox.max.z + extraDistance);\n }\n }\n}\n","import { PostAndBeamManager } from \"./post-and-beam.manager\";\nimport { RoofManager } from \"./roof.manager\";\nimport { HomeComponent as AppComponent } from \"../../containers/home/home.component\";\nimport { PatiosManager, RafterBeamAndInternalBeamInfo } from \"../patios.manager\";\nimport { Printing2DGeometry } from \"src/app/core/models\";\nimport { Group, Box3, Vector3 } from \"three\";\nimport { GEOMETRY_CATEGORY } from \"src/app/app.config\";\nimport { DimensionManager } from \"./dimension.manager\";\nimport {\n CUTOUT_ENABLE,\n EXISTING_BUILDING_CONFIG,\n FASCIA_BRACKET_FIT,\n RAKECUT_TYPE,\n} from \"src/app/app.constants\";\nimport { UI } from \"../ui\";\n\nexport class GableFBFasciaManager implements PatiosManager {\n public patiosGroup: Group;\n public boundingBox: Box3;\n private APP: AppComponent;\n public postAndBeamManager: PostAndBeamManager;\n public roofManager: RoofManager;\n public dimesionManager: DimensionManager;\n public ignoreBayEvent: boolean = false;\n\n private updateEventHandle: any;\n private deferHandle;\n private deferTimeout = EXISTING_BUILDING_CONFIG.CUTOUT_DEFFER_TIME_OUT;\n private controlsToRegisterEvent: Array;\n public patiosWidth: number;\n public patiosLength: number;\n public get cutoutCondition(): boolean {\n return (\n [\n this.APP.sldEaveWidth,\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldFrontOverhang,\n ]\n .map((x) => x.currentValue)\n .reduce((a, b) => a + b, 0) -\n this.APP.sldExistingWidth1.currentValue >=\n EXISTING_BUILDING_CONFIG.CUTOUT_ALLOW\n );\n }\n public get rakecutCondition(): boolean {\n let patiosWidth =\n this.APP.dialogEditBay.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n let patiosLength =\n this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue;\n\n return false;\n }\n\n public firstLoad = true;\n\n constructor(app: AppComponent) {\n this.APP = app;\n this.patiosGroup = new Group();\n this.patiosGroup.userData = { category: GEOMETRY_CATEGORY.PATIOS };\n app.scene.add(this.patiosGroup);\n\n this.postAndBeamManager = new PostAndBeamManager(app, this);\n this.roofManager = new RoofManager(app, this);\n this.dimesionManager = new DimensionManager(app, this);\n this.registerEvents();\n }\n\n load(): Promise {\n return Promise.all([\n this.postAndBeamManager.optimize(),\n this.roofManager.optimize(),\n this.dimesionManager.optimize(),\n ]).then(() => {\n this.postAndBeamManager.load();\n this.roofManager.load();\n this.dimesionManager.load();\n });\n }\n loadBracket(bracketQuantity: number): void {\n this.postAndBeamManager.numOfBraket = bracketQuantity;\n this.postAndBeamManager.addUpstandBraket();\n }\n loadBracketCutout(bracketQuantity: number): void {\n // this.postAndBeamManager.addUpstandBraketCutOut(bracketQuantity);\n }\n loadSideGableBracket(bracketQuantity: number): void{\n this.postAndBeamManager.numberOfBracketsSide = bracketQuantity\n this.postAndBeamManager.addBraketOrBeamSideRoof();\n }\n loadRafterBeamAndInternalBeam(info: RafterBeamAndInternalBeamInfo): void{\n \n }\n public destroy(): void {\n this.postAndBeamManager.destroy();\n this.roofManager.destroy();\n this.dimesionManager.destroy();\n this.unRegisterEvent();\n }\n registerEvents(): void {\n this.updateEventHandle = this.updateDefer.bind(this);\n this.controlsToRegisterEvent = [\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sltCutOut,\n this.APP.sldFrontOverhang,\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltColourBarge,\n this.APP.sltColourGutter,\n this.APP.sltColourDownpipe,\n this.APP.sltColourRoof,\n this.APP.sldSpan,\n this.APP.sldExistingWallHeight,\n this.APP.sldEaveWidth,\n this.APP.sldFasciaDepth,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldFlyOverBracketHeight,\n this.APP.sltColourBeam,\n this.APP.sltColourPost,\n this.APP.sltColourBracket,\n this.APP.sltColourFasciaBracket,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n this.APP.sltLeftCutType,\n this.APP.sldLeftCutVertical,\n this.APP.sldLeftCutHorizontal,\n this.APP.sltRightCutType,\n this.APP.sldRightCutVertical,\n this.APP.sldRightCutHorizontal,\n this.APP.sltPanelDirection,\n this.APP.sltPanelDirectionShow,\n this.APP.sltBeamLayoutShow,\n this.APP.sltFasciaUpstandBrackets,\n this.APP.sltUpFasciaUpstandBracket,\n this.APP.btnTurnOnPanel\n ];\n this.controlsToRegisterEvent.forEach((c) => {\n c.addAction(this.updateEventHandle);\n });\n }\n unRegisterEvent(): void {\n this.controlsToRegisterEvent.forEach((c) =>\n c.removeAction(this.updateEventHandle)\n );\n }\n updateDefer(previousValue: number, currentValue: number) {\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES ||\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE ||\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE\n ) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => {\n this.update(previousValue, currentValue);\n }, this.deferTimeout);\n } else {\n this.update(previousValue, currentValue);\n }\n }\n update(preVal: number, curVal: number): void {\n let totalBaySize = this.APP.dialogEditBay.totalBaySize;\n let diff = this.APP.sldExistingLength.currentValue - UI.span;\n\n this.patiosLength = totalBaySize + UI.overhangFront;\n this.patiosWidth = UI.span + UI.overhangLeft + UI.overhangRight;\n\n if (this.APP.sltExistingType.currentValue == 1) {\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n this.patiosGroup.position.setX(\n -diff / 2 +\n this.APP.sldEaveWidth.currentValue -\n this.APP.sldExistingLength2.currentValue\n );\n } else {\n this.patiosGroup.position.setX(\n -diff / 2 + this.APP.sldEaveWidth.currentValue + FASCIA_BRACKET_FIT\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 2) {\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n this.patiosGroup.position.setX(\n diff / 2 -\n this.APP.sldEaveWidth.currentValue +\n this.APP.sldExistingLength2.currentValue\n );\n } else {\n this.patiosGroup.position.setX(\n diff / 2 - this.APP.sldEaveWidth.currentValue - FASCIA_BRACKET_FIT\n );\n }\n } else {\n this.patiosGroup.position.setX(0);\n }\n\n Promise.all([this.roofManager.load(), this.postAndBeamManager.load()]).then(\n () => {\n // this.boundingBox = this.APP.utils.getObjectsBoundingBox(\n // this.patiosGroup.children.filter(c => c.userData.type != GEOMETRY_TYPE.DIMENSION && c.userData.type != GEOMETRY_TYPE.ROOF_PATIOS)\n // );\n this.boundingBox = this.getPatiosBox();\n this.dimesionManager.draw();\n }\n );\n }\n getOutlines(): Printing2DGeometry {\n let dimensionOutline = this.dimesionManager.getOutlines();\n return {\n lines: [\n ...this.postAndBeamManager.getSection().lines,\n ...this.roofManager.getOutLines().lines,\n ...dimensionOutline.lines,\n ],\n texts: dimensionOutline.texts,\n };\n }\n public getPatiosBox(): Box3 {\n let left = -UI.span / 2 - UI.overhangLeft;\n let right = UI.span / 2 + UI.overhangRight;\n let front =\n this.APP.dialogEditBay.totalBaySize +\n this.APP.sldFrontOverhang.currentValue;\n let back = 0;\n let height = this.APP.sldBuildingHeight.currentValue;\n\n let box = new Box3();\n box = box.expandByPoint(new Vector3(left, 0, front));\n box = box.expandByPoint(new Vector3(right, height, back));\n box.translate(new Vector3(0, 0, this.APP.sldEaveWidth.currentValue));\n\n if (this.APP.sltExistingType.currentValue == 1) {\n let diff = (this.APP.sldExistingLength.currentValue - UI.span) / 2;\n box.translate(new Vector3(-diff, 0, 0));\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n box.translate(new Vector3(this.APP.sldLeftOverhang.currentValue, 0, 0));\n box.translate(new Vector3(this.APP.sldEaveWidth.currentValue, 0, 0));\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n box.translate(\n new Vector3(-this.APP.sldExistingLength2.currentValue, 0, 0)\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 2) {\n let diff = (this.APP.sldExistingLength.currentValue - UI.span) / 2;\n box.translate(new Vector3(diff, 0, 0));\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n box.translate(new Vector3(-this.APP.sldRightOverhang.currentValue, 0, 0));\n box.translate(new Vector3(-this.APP.sldEaveWidth.currentValue, 0, 0));\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n box.translate(\n new Vector3(this.APP.sldExistingLength2.currentValue, 0, 0)\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 3) {\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n }\n\n // if (!environment.production) {\n // this.APP.scene.remove(...this.APP.scene.children.filter(o => o.userData.type == 'BOXHELPER'));\n // let boxHelper = new Box3Helper(box);\n // boxHelper.userData = { type: \"BOXHELPER\" };\n // this.APP.scene.add(boxHelper);\n // }\n\n return box;\n }\n}\n","import _ from \"lodash\";\nimport UpstandBraket, {\n UpstandBraketOptions,\n} from \"src/app-ribspan/models/UpstandBraket.model\";\nimport {\n Box3,\n BoxBufferGeometry,\n BoxHelper,\n BufferGeometry,\n Geometry,\n Group,\n LineSegments,\n Material,\n Matrix4,\n Mesh,\n Plane,\n Vector3,\n} from \"three\";\nimport { GableFBFasciaManager } from \".\";\nimport { GEOMETRY_CATEGORY, GEOMETRY_TYPE, INIT } from \"src/app/app.config\";\nimport {\n BUILDING_SIDE,\n EXISTING_BUILDING_CONFIG,\n FASCIA_BRACKET_FIT,\n} from \"src/app/app.constants\";\nimport {\n HomeComponent as AppComponent,\n HomeComponent,\n} from \"../../containers/home/home.component\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport {\n GeometryInfo,\n LineType,\n Print2DView,\n Printing2DGeometry,\n Printing2DLine,\n ViewType,\n} from \"src/app/core/models\";\nimport { UI } from \"../ui\";\nimport { Util, getRafterBeamEndCapCode } from \"../utils\";\n\nexport class PostAndBeamManager {\n private scene: Group;\n private APP: AppComponent;\n private MANAGER: GableFBFasciaManager;\n private material: Material;\n private utils: Util;\n private geometryManager: GeometryManager;\n private postInfo: GeometryInfo;\n public beamInfo: GeometryInfo;\n private beamRakecutInfoLeft: GeometryInfo;\n private beamRakecutInfoRight: GeometryInfo;\n private geo_centerSuperiorPost: GeometryInfo;\n private geo_RafterBeam: GeometryInfo;\n private geo_rafterBeamEndCap: GeometryInfo;\n private geo_beamEndCap: GeometryInfo;\n private geo_groundBase: GeometryInfo;\n private eventHandleId: any;\n private roofWidth: number;\n private existingTypeLeftX: number;\n private existingTypeRightX: number;\n private existingType: number;\n private totalBaySize: number;\n private frontPostHeight: number;\n private downpipeGroupRight: Group;\n private downpipeGroupLeft: Group;\n private downpipeStepRakeCutGroupLeft: Group;\n private downpipeStepRakeCutGroupRight: Group;\n public geo_downPipe: GeometryInfo;\n private geo_downPipeL: GeometryInfo;\n private geoBraketExtL_2: GeometryInfo;\n private geoBraketExtR_2: GeometryInfo;\n private objectSizeChangedHandle: any;\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n\n private geo_beamStepRakecutLeft: GeometryInfo;\n private geo_beamStepRakecutRight: GeometryInfo;\n\n private geoBeamJoint: GeometryInfo;\n private geoHouseBeamJoint: GeometryInfo;\n\n private beamLeftCutSizeInfo: any;\n private beamRightCutSizeInfo: any;\n\n private geoBraket_1: GeometryInfo;\n public geoBraket_2: GeometryInfo;\n private geoBeam: GeometryInfo;\n private geoBeamEndCap: GeometryInfo;\n\n private offsetYBraket = 0;\n public numberOfBracketsSide = INIT.DEFAULT_BRACKET_NUMBER;\n public numOfBraket = INIT.DEFAULT_BRACKET_NUMBER;\n\n k: number;\n k_: number;\n j: number;\n l: number;\n m: number;\n v: number;\n\n constructor(app: AppComponent, fasciaManager: GableFBFasciaManager) {\n this.APP = app;\n this.MANAGER = fasciaManager;\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.scene = fasciaManager.patiosGroup;\n this.material = MaterialManager.Instance().DEFAULT.clone();\n this.registerEvent();\n }\n public destroy(): void {\n this.unregisterEvent();\n }\n public uiChanged(preVal: number, curVal: number): void {\n this.load();\n }\n private objectSizeChanged(pre: number, cur: number) {\n this.optimize().then(() => {\n this.load();\n });\n }\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldExistingWallHeight,\n this.APP.sltRoofPitch,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldExistingWidth1,\n this.APP.sltExistingType,\n this.APP.dialogEditBay,\n this.APP.sldEaveWidth,\n this.APP.sldFrontOverhang,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n ];\n //this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n this.controlsToRegisterEvent2 = [\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltColumnType,\n ];\n this.controlsToRegisterEvent2.forEach((c) =>\n c.addAction(this.objectSizeChangedHandle)\n );\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach((c) =>\n c.removeAction(this.objectSizeChangedHandle)\n );\n this.controlsToRegisterEvent2 = undefined;\n }\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n this.beamInfo = this.geometryManager.getBeam();\n this.beamInfo.geometry\n .rotateY(Math.PI / 2)\n .translate(this.beamInfo.length / 2, -this.beamInfo.height / 2, 0);\n //.scale(this.APP.sldBaySize.currentValue / this.beamInfo.length, 1, 1);\n\n this.geoBeamJoint = this.geometryManager.getBeamJoint();\n this.geoHouseBeamJoint = this.geometryManager.getHouseBeamJoint();\n\n this.beamRakecutInfoLeft = this.geometryManager.getBeam();\n this.beamRakecutInfoLeft.geometry.translate(\n this.beamInfo.width / 2,\n -this.beamInfo.height / 2,\n -this.beamInfo.length / 2\n );\n\n this.beamRakecutInfoRight = this.geometryManager.getBeam();\n this.beamRakecutInfoRight.geometry.translate(\n -this.beamInfo.width / 2,\n -this.beamInfo.height / 2,\n -this.beamInfo.length / 2\n );\n\n this.geo_beamStepRakecutLeft = this.geometryManager.getBeam();\n this.geo_beamStepRakecutLeft.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_beamStepRakecutLeft.length / 2,\n -this.geo_beamStepRakecutLeft.height / 2,\n -this.geo_beamStepRakecutLeft.width / 2\n );\n\n this.geo_beamStepRakecutRight = this.geometryManager.getBeam();\n this.geo_beamStepRakecutRight.geometry\n .rotateY(Math.PI / 2)\n .translate(\n -this.geo_beamStepRakecutRight.length / 2,\n -this.geo_beamStepRakecutRight.height / 2,\n -this.geo_beamStepRakecutRight.width / 2\n );\n\n this.geo_beamEndCap = this.geometryManager.getBeamEndCap();\n this.geo_beamEndCap.geometry.translate(\n 0,\n -this.geo_beamEndCap.height / 2,\n 0\n );\n\n this.geo_RafterBeam = this.geometryManager.getRafterBeam();\n this.geo_RafterBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_RafterBeam.length / 2,\n -this.geo_RafterBeam.height / 2,\n this.geo_RafterBeam.width / 2\n );\n\n this.geo_rafterBeamEndCap = this.geometryManager.getRafterBeamEndCap();\n this.geo_rafterBeamEndCap.geometry.translate(\n 0,\n -this.geo_rafterBeamEndCap.height / 2,\n this.geo_rafterBeamEndCap.length / 2\n );\n\n this.postInfo = this.geometryManager.getPost();\n this.postInfo.geometry\n .rotateX(Math.PI / 2)\n .translate(0, this.postInfo.height / 2, 0);\n //.scale(1, scalePostHeight, 1);\n\n this.geo_centerSuperiorPost = this.geometryManager.getCenterPost();\n this.geo_centerSuperiorPost.geometry\n .rotateX(Math.PI / 2)\n .translate(\n this.geo_centerSuperiorPost.width / 2,\n this.geo_centerSuperiorPost.height / 2,\n this.geo_centerSuperiorPost.width / 2\n );\n\n this.geo_groundBase = new GeometryInfo();\n this.geo_groundBase.width = 1000;\n this.geo_groundBase.height = 1;\n this.geo_groundBase.length = 1000;\n this.geo_groundBase.geometry = new BoxBufferGeometry(\n this.geo_groundBase.width,\n this.geo_groundBase.height,\n this.geo_groundBase.length\n );\n this.geo_groundBase.geometry.translate(\n this.geo_groundBase.width / 2,\n 0,\n this.geo_groundBase.length / 2\n );\n\n this.geo_downPipe = this.geometryManager.getDownPipe();\n this.geo_downPipeL = this.geometryManager.getDownPipeL();\n\n this.scene.remove(\n ...this.scene.children.filter(\n (c) => c.userData.type == GEOMETRY_TYPE.DOWNPIPE\n )\n );\n this.downpipeGroupRight = new Group();\n this.downpipeGroupRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.downpipeGroupRight.rotateY(Math.PI / 2);\n this.scene.add(this.downpipeGroupRight);\n\n this.downpipeGroupLeft = new Group();\n this.downpipeGroupLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.downpipeGroupLeft.rotateY(-Math.PI / 2);\n this.scene.add(this.downpipeGroupLeft);\n\n this.downpipeStepRakeCutGroupLeft = new Group();\n this.downpipeStepRakeCutGroupLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeStepRakeCutGroupLeft);\n\n this.downpipeStepRakeCutGroupRight = new Group();\n this.downpipeStepRakeCutGroupRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeStepRakeCutGroupRight);\n\n this.geoBraket_1 = this.geometryManager.getUpstandBraket(1);\n this.geoBraket_1.geometry.rotateX(Math.PI / 2);\n this.geoBraket_1.geometry.translate(0, this.geoBraket_1.length / 2, 0);\n this.geoBraket_2 = this.geometryManager.getUpstandBraket(2);\n this.geoBraket_2.geometry.rotateY(Math.PI);\n this.geoBraket_2.geometry.rotateX(Math.PI / 2);\n this.geoBraket_2.geometry.translate(\n 0,\n this.geoBraket_2.length / 2,\n -this.geoBraket_2.height / 4\n );\n\n this.geoBraketExtL_2 = this.geometryManager.getUpstandBraket(2);\n this.geoBraketExtL_2.geometry.rotateX(Math.PI / 2);\n this.geoBraketExtL_2.geometry.rotateY(-Math.PI / 2);\n this.geoBraketExtL_2.geometry.rotateZ(-Math.PI);\n this.geoBraketExtL_2.geometry.translate(\n -this.geoBraketExtL_2.height / 2,\n this.geoBraketExtL_2.length / 2,\n this.geoBraketExtL_2.height / 3 - this.geoBraket_1.width / 2\n );\n //Right\n this.geoBraketExtR_2 = this.geometryManager.getUpstandBraket(2);\n this.geoBraketExtR_2.geometry.rotateX(Math.PI / 2);\n this.geoBraketExtR_2.geometry.rotateY(Math.PI / 2);\n this.geoBraketExtR_2.geometry.rotateZ(-Math.PI);\n this.geoBraketExtR_2.geometry.translate(\n this.geoBraketExtR_2.height / 2,\n this.geoBraketExtR_2.length / 2,\n this.geoBraketExtR_2.height / 3 - this.geoBraket_1.width / 2\n );\n\n this.geoBeam = this.geometryManager.getBeam();\n this.geoBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(0, this.geoBeam.height / 2, 0);\n\n this.geoBeamEndCap = this.geometryManager.getBeamEndCap();\n this.geoBeamEndCap.geometry\n .translate(\n 0,\n this.geoBeamEndCap.height / 2,\n this.geoBeamEndCap.length / 2\n )\n .rotateY(Math.PI / 2);\n\n resolve();\n });\n }\n\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.SUPERIOR_POST\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.SUPERIOR_CENTER_POST\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.GROUND_BASE\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (o) => o.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET_EXT\n )\n );\n this.downpipeGroupRight.children = [];\n this.downpipeGroupLeft.children = [];\n this.downpipeStepRakeCutGroupLeft.children = [];\n this.downpipeStepRakeCutGroupRight.children = [];\n\n this.beamLeftCutSizeInfo = this.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.LEFT\n );\n this.beamRightCutSizeInfo = this.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.RIGHT\n );\n\n this.totalBaySize = this.APP.dialogEditBay.listBay.reduce(\n (total, val) => total + val.value,\n 0\n );\n this.roofWidth = UI.span;\n this.existingType = +this.APP.sltExistingType.currentValue;\n this.existingTypeLeftX = 0;\n this.existingTypeRightX = 0;\n if (this.existingType === 1 || this.existingType === 3) {\n this.existingTypeLeftX = this.APP.sldEaveWidth.currentValue;\n }\n if (this.existingType === 2 || this.existingType === 3) {\n this.existingTypeRightX = this.APP.sldEaveWidth.currentValue;\n }\n this.offsetYBraket = 0;\n if (UI.upstandBraketType == 150) {\n this.offsetYBraket =\n 150 +\n this.beamInfo.height +\n (this.geoBraket_2.height / 4 + this.geoBraket_1.width) *\n this.utils.tan(UI.patiosPitch);\n } else if (UI.upstandBraketType == 300) {\n this.offsetYBraket =\n 300 +\n this.beamInfo.height +\n (this.geoBraket_2.height / 4 + this.geoBraket_1.width) *\n this.utils.tan(UI.patiosPitch);\n } else if (UI.upstandBraketType == 450) {\n this.offsetYBraket =\n 450 +\n this.beamInfo.height +\n (this.geoBraket_2.height / 4 + this.geoBraket_1.width) *\n this.utils.tan(UI.patiosPitch);\n } else if (UI.upstandBraketType == 600) {\n this.offsetYBraket =\n 600 +\n this.beamInfo.height +\n (this.geoBraket_2.height / 4 + this.geoBraket_1.width) *\n this.utils.tan(UI.patiosPitch);\n }\n if (UI.isUpFasciaUpstandardBracket) {\n this.offsetYBraket -=\n (this.geoBraket_2.height / 4 + this.geoBraket_1.width) *\n this.utils.tan(UI.patiosPitch) +\n (this.geoBraket_2.height / 4) * this.utils.tan(UI.patiosPitch);\n }\n\n this.addCenterSuperiorBeam();\n this.addGround();\n let offsetZ = 0;\n let idx = 0;\n\n this.addHorSuperiorBeam(-UI.span / 2 + this.geoBeam.width / 2, {\n left: true,\n first: true,\n last: false,\n });\n this.addHorSuperiorBeam(UI.span / 2 - this.geoBeam.width / 2, {\n right: true,\n first: false,\n last: true,\n });\n\n this.addBeam(offsetZ, {\n back: idx == 0,\n center: !(idx == this.APP.dialogEditBay.listBay.length) && !(idx == 0),\n front: idx == this.APP.dialogEditBay.listBay.length,\n });\n\n this.addCenterPost(offsetZ, {\n center: !(idx == this.APP.dialogEditBay.listBay.length) && !(idx == 0),\n first: idx == 0,\n last: idx == this.APP.dialogEditBay.listBay.length,\n });\n\n this.addRafterSuperiorBeam(\n -UI.existingWidth1 / 2 + UI.eaveWidth + this.geoBraket_2.height / 4,\n {\n front: idx == this.APP.dialogEditBay.listBay.length,\n right: true,\n first: idx === 0,\n last: idx == this.APP.dialogEditBay.listBay.length,\n }\n );\n this.addRafterSuperiorBeam(\n -UI.existingWidth1 / 2 + UI.eaveWidth + this.geoBraket_2.height / 4,\n {\n back: idx == 0,\n left: true,\n first: idx === 0,\n last: idx == this.APP.dialogEditBay.listBay.length,\n }\n );\n\n this.APP.dialogEditBay.listBay.map((m) => {\n offsetZ += m.value;\n\n this.addBeam(offsetZ, {\n back: idx + 1 == 0,\n center:\n !(idx + 1 == this.APP.dialogEditBay.listBay.length) &&\n !(idx + 1 == 0),\n front: idx + 1 == this.APP.dialogEditBay.listBay.length,\n });\n\n this.addCenterPost(offsetZ, {\n center:\n !(idx + 1 == this.APP.dialogEditBay.listBay.length) &&\n !(idx + 1 == 0),\n first: idx + 1 == 0,\n last: idx + 1 == this.APP.dialogEditBay.listBay.length,\n });\n\n let fitBeam = 0;\n if (idx + 1 > 0 && idx + 1 < this.APP.dialogEditBay.listBay.length) {\n fitBeam = this.geo_RafterBeam.width / 2;\n } else if (idx + 1 == this.APP.dialogEditBay.listBay.length) {\n fitBeam = this.geo_RafterBeam.width;\n }\n\n this.addRafterSuperiorBeam(\n offsetZ -\n fitBeam -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4,\n {\n front: idx + 1 == this.APP.dialogEditBay.listBay.length,\n right: true,\n first: idx + 1 === 0,\n last: idx + 1 == this.APP.dialogEditBay.listBay.length,\n }\n );\n this.addRafterSuperiorBeam(\n offsetZ -\n fitBeam -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4,\n {\n back: idx + 1 == 0,\n left: true,\n first: idx + 1 === 0,\n last: idx + 1 == this.APP.dialogEditBay.listBay.length,\n }\n );\n\n idx++;\n });\n\n this.addBraketOrBeamSideRoof();\n\n this.addDownPipeRight();\n this.addDownPipeLeft();\n this.addUpstandBraket();\n this.showBeamOutline();\n this.updateUI();\n resolve();\n });\n }\n public showBeamOutline() {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.BEAM_OUTLINE\n )\n );\n\n if (!UI.beamLayoutShow) return;\n\n const objs = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n const meshes = [];\n objs.forEach((el) => {\n if (el.type == \"Group\") {\n meshes.push(\n ...el.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n }\n });\n\n for (let o of meshes) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n o as Mesh,\n 10\n );\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n\n var line = new LineSegments(\n outlineGeo,\n MaterialManager.Instance().BEAM_OUTLINE\n );\n line.userData = { type: GEOMETRY_TYPE.BEAM_OUTLINE };\n this.APP.scene.add(line);\n }\n }\n public addBraketOrBeamSideRoof() {\n this.scene.remove(\n ...this.scene.children.filter(\n (o) => o.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET_EXT\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.SUPERIOR_POST\n )\n );\n\n let offsetZ = 0;\n for (let i = 0; i <= UI.listBay.length; i++) {\n if (i == 0) {\n offsetZ += UI.listBay[i].value;\n continue;\n }\n this.addPost(offsetZ, {\n back: i + 1 == 0,\n center: !(i == this.APP.dialogEditBay.listBay.length) && !(i == 0),\n front: i == this.APP.dialogEditBay.listBay.length,\n first: i == 0,\n last: i == this.APP.dialogEditBay.listBay.length,\n left: true,\n right: false,\n });\n this.addPost(offsetZ, {\n back: i == 0,\n center: !(i == this.APP.dialogEditBay.listBay.length) && !(i == 0),\n front: i == this.APP.dialogEditBay.listBay.length,\n first: i == 0,\n last: i == this.APP.dialogEditBay.listBay.length,\n left: false,\n right: true,\n });\n\n if (i < UI.listBay.length) {\n offsetZ += UI.listBay[i].value;\n }\n }\n\n //LEFT SIDE\n if (\n UI.existingType == BUILDING_SIDE.LEFT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n offsetZ = 0;\n let numOfBrakets = this.numberOfBracketsSide + 1;\n let distance =\n (UI.existingWidth1 - UI.eaveWidth - this.geoBraket_2.height / 4 >\n UI.totalBayLength\n ? UI.totalBayLength\n : UI.existingWidth1 - UI.eaveWidth - this.geoBraket_2.height / 4) /\n (numOfBrakets - 1);\n for (let i = 0; i < numOfBrakets; i++) {\n this.addUpstandBraketExt(offsetZ, {\n back: i == 0,\n center: !(i + 1 == numOfBrakets) && !(i == 0),\n front: i + 1 == numOfBrakets,\n first: i == 0,\n last: i + 1 == numOfBrakets,\n left: true,\n right: false,\n });\n\n offsetZ += distance;\n }\n }\n\n //RIGHT SIDE\n if (\n UI.existingType == BUILDING_SIDE.RIGHT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n offsetZ = 0;\n let numOfBrakets = this.numberOfBracketsSide + 1;\n let distance =\n (UI.existingWidth1 - UI.eaveWidth - this.geoBraket_2.height / 4 >\n UI.totalBayLength\n ? UI.totalBayLength\n : UI.existingWidth1 - UI.eaveWidth - this.geoBraket_2.height / 4) /\n (numOfBrakets - 1);\n for (let i = 0; i < numOfBrakets; i++) {\n this.addUpstandBraketExt(offsetZ, {\n back: i == 0,\n center: !(i + 1 == numOfBrakets) && !(i == 0),\n front: i + 1 == numOfBrakets,\n first: i == 0,\n last: i + 1 == numOfBrakets,\n left: false,\n right: true,\n });\n\n offsetZ += distance;\n }\n }\n }\n public addUpstandBraket() {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.UPSTAND_BRAKET\n )\n );\n if (UI.upstandBraketType == 0 || UI.listBay.length == 0) {\n return;\n }\n let height = +UI.upstandBraketType;\n\n const _bracketOffsetXExt = this.geoBraket_2.height / 5;\n let distance = 1000;\n let offsetX = -UI.existingLength1 / 2;\n let spanLength = UI.span;\n\n if (!HomeComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n if (UI.existingType == 1 || UI.existingType == 2) {\n spanLength -= UI.existingLength2;\n }\n if (UI.existingType == 3) {\n spanLength -= 2 * UI.existingLength2;\n }\n }\n\n if (UI.existingType == 0) {\n let startX =\n -spanLength / 2 > -UI.existingLength1 / 2\n ? -spanLength / 2\n : -UI.existingLength1 / 2;\n let endX =\n spanLength / 2 < UI.existingLength1 / 2\n ? spanLength / 2\n : UI.existingLength1 / 2;\n distance = (endX - startX) / (this.numOfBraket - 1);\n offsetX = startX;\n } else if (UI.existingType == 1) {\n distance = (spanLength - _bracketOffsetXExt) / (this.numOfBraket - 1);\n offsetX = -spanLength / 2 + _bracketOffsetXExt;\n if (spanLength > UI.existingLength1 - UI.eaveWidth) {\n distance =\n (UI.existingLength1 - UI.eaveWidth - _bracketOffsetXExt) /\n (this.numOfBraket - 1);\n }\n if (!HomeComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n offsetX = -spanLength / 2 + UI.existingLength2 / 2 + _bracketOffsetXExt;\n }\n } else if (UI.existingType == 2) {\n offsetX = -spanLength / 2;\n distance = (spanLength - _bracketOffsetXExt) / (this.numOfBraket - 1);\n\n if (spanLength > UI.existingLength1 - UI.eaveWidth) {\n offsetX =\n -spanLength / 2 + (spanLength - UI.existingLength1 + UI.eaveWidth);\n distance =\n (UI.existingLength1 - _bracketOffsetXExt - UI.eaveWidth) /\n (this.numOfBraket - 1);\n }\n\n if (!HomeComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n offsetX -= UI.existingLength2 / 2;\n }\n } else if (UI.existingType == 3) {\n distance = (spanLength - _bracketOffsetXExt * 2) / (this.numOfBraket - 1);\n offsetX = -spanLength / 2 + _bracketOffsetXExt;\n }\n\n let optionBrakets: UpstandBraketOptions = {\n container: this.scene,\n position: new Vector3(),\n geoBraket_1: this.geoBraket_1,\n geoBraket_2: this.geoBraket_2,\n height: height,\n material: MaterialManager.Instance().FASCIA_BRACKET.clone(),\n };\n let views: Print2DView[] = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n let userData = {\n type: GEOMETRY_TYPE.UPSTAND_BRAKET,\n views: views,\n };\n for (let i = 0; i < this.numOfBraket; i++) {\n let posX = offsetX;\n if (i == 0) {\n posX = posX + this.geoBraket_1.width / 2;\n } else if (i == this.numOfBraket - 1) {\n posX = posX - this.geoBraket_1.width / 2;\n }\n if (\n (UI.existingType == BUILDING_SIDE.LEFT ||\n UI.existingType == BUILDING_SIDE.BOTH) &&\n i == 0\n ) {\n offsetX += distance;\n continue;\n }\n if (\n (UI.existingType == BUILDING_SIDE.RIGHT ||\n UI.existingType == BUILDING_SIDE.BOTH) &&\n i == this.numOfBraket - 1\n ) {\n offsetX += distance;\n continue;\n }\n\n new UpstandBraket({\n ...optionBrakets,\n position: new Vector3(\n posX,\n UI.existingWallHeight,\n UI.eaveWidth - UI.existingWidth1 / 2\n ),\n userData: userData,\n });\n offsetX += distance;\n }\n }\n private addDownPipeRight() {\n let offsetZ =\n this.totalBaySize - 50 + UI.eaveWidth + this.geoBraket_2.height / 4;\n let offsetX = UI.span / 2 + 100;\n\n if (this.APP.sltExistingType.currentValue != 0) {\n offsetZ -= this.APP.sldExistingWidth1.currentValue / 2;\n }\n\n let offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight + +UI.upstandBraketType,\n UI.overhangRight,\n UI.patiosPitch,\n -1\n ) +\n this.geoBeam.height +\n 90;\n\n if (this.APP.sltGutterType.currentValue == 0) {\n offsetY -= 80;\n } else {\n offsetY -= 60;\n }\n\n if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n let meshPipe = new Mesh(\n this.geo_downPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipe.userData = { type: GEOMETRY_TYPE.DOWNPIPE_NOZZLE };\n meshPipe.scale.setY(100 / this.geo_downPipe.height);\n meshPipe.position.set(\n 0,\n -190,\n UI.overhangRight / this.utils.cos(UI.patiosPitch) -\n this.geo_downPipe.width / 2 -\n 20\n );\n\n this.downpipeGroupRight.add(meshPipe);\n this.downpipeGroupRight.position.set(offsetX, offsetY, offsetZ);\n } else {\n this.utils.createDownpipeGroup(\n this.APP,\n this.downpipeGroupRight,\n this.geo_downPipe,\n this.geo_downPipeL,\n offsetX,\n offsetY,\n offsetZ,\n 0,\n 0,\n UI.overhangRight,\n offsetY,\n true\n );\n }\n }\n private addDownPipeLeft() {\n let offsetZ =\n this.totalBaySize - 50 + UI.eaveWidth + this.geoBraket_2.height / 4;\n let offsetX = -UI.span / 2 - 100;\n\n if (this.APP.sltExistingType.currentValue != 0) {\n offsetZ -= this.APP.sldExistingWidth1.currentValue / 2;\n }\n\n let offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight + +UI.upstandBraketType,\n UI.overhangLeft,\n UI.patiosPitch,\n -1\n ) +\n this.geoBeam.height +\n 90;\n\n if (this.APP.sltGutterType.currentValue == 0) {\n offsetY -= 80;\n } else {\n offsetY -= 60;\n }\n\n if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n let meshPipe = new Mesh(\n this.geo_downPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipe.userData = { type: GEOMETRY_TYPE.DOWNPIPE_NOZZLE };\n meshPipe.scale.setY(100 / this.geo_downPipe.height);\n meshPipe.position.set(\n 0,\n -190,\n UI.overhangLeft / this.utils.cos(UI.patiosPitch) -\n this.geo_downPipe.width / 2 -\n 20\n );\n\n this.downpipeGroupLeft.add(meshPipe);\n this.downpipeGroupLeft.position.set(offsetX, offsetY, offsetZ);\n } else {\n this.utils.createDownpipeGroup(\n this.APP,\n this.downpipeGroupLeft,\n this.geo_downPipe,\n this.geo_downPipeL,\n offsetX,\n offsetY,\n offsetZ,\n 0,\n 0,\n UI.overhangLeft,\n offsetY,\n true\n );\n }\n }\n private addGround() {\n let offsetX = -(UI.span / 2 + UI.overhangLeft);\n let offsetZ =\n -this.APP.sldExistingWidth1.currentValue / 2 - UI.overhangBack;\n let width = UI.span + UI.overhangLeft + UI.overhangRight;\n let length =\n this.totalBaySize +\n UI.overhangFront +\n UI.overhangBack +\n this.APP.sldEaveWidth.currentValue +\n this.geoBraket_2.height / 4;\n\n let base = new Mesh(\n this.geo_groundBase.geometry,\n MaterialManager.Instance().BASE\n );\n base.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GROUND_BASE,\n };\n base.position.set(offsetX, 0, offsetZ);\n base.scale.set(\n width / this.geo_groundBase.width,\n 1,\n length / this.geo_groundBase.length\n );\n\n this.scene.add(base);\n }\n private getRoofHeight() {\n const _height = this.utils.getHeightByAngle(\n this.APP.sldExistingWallHeight.currentValue,\n UI.span / 2,\n this.APP.sltRoofPitch.currentValue,\n 1\n );\n return this.APP.sldExistingWallHeight.currentValue - _height;\n }\n private updateUI() {\n this.APP.roofHeight = this.getRoofHeight();\n this.APP.sldMinHeight.setValue(_.round(this.frontPostHeight, 0));\n }\n public getSection(): Printing2DGeometry {\n let objs = this.scene.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_POST ||\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_CENTER_POST\n );\n\n objs = [...objs];\n\n let lsGeometries: Printing2DLine[] = [];\n\n for (let o of objs) {\n let box = new BoxHelper(o);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n //this.scene.add(box);\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: outlineGeo.vertices,\n views: o.userData.views,\n });\n }\n let beamGroups = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n for (let g of beamGroups) {\n for (let c of g.children) {\n c.updateMatrix();\n\n let objCloned = c.clone();\n objCloned.applyMatrix4(new Matrix4().getInverse(c.matrix));\n\n let box = new BoxHelper(objCloned);\n\n c.updateWorldMatrix(true, true);\n\n box.geometry.applyMatrix4(c.matrixWorld);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n const planView = _.find(\n g.userData.views,\n (el) => el.viewType == ViewType.PLAN\n );\n const anotherViews = _.filter(\n g.userData.views,\n (el) => el.viewType != ViewType.PLAN\n );\n if (anotherViews.length > 0) {\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo.vertices,\n views: anotherViews,\n });\n }\n if (planView) {\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo.vertices\n .slice(0, 8)\n .filter((el, index) => [0, 1, 4, 5].includes(index)),\n views: [planView],\n });\n }\n }\n }\n\n let braketGroup = this.scene.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.UPSTAND_BRAKET ||\n o.userData.type == GEOMETRY_TYPE.UPSTAND_BRAKET_CUTOUT ||\n o.userData.type == GEOMETRY_TYPE.UPSTAND_BRAKET_EXT\n );\n\n for (let g of braketGroup) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n g.children[1] as Mesh,\n 60\n );\n g.children[1].updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(g.children[1].matrixWorld);\n outlineGeo.translate(0, 5000, 0);\n\n let simplifiedGeo = this.simplifyGeo(outlineGeo);\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: simplifiedGeo.vertices,\n views: g.userData.views,\n });\n\n g.children[0].updateMatrix();\n let objCloned = g.children[0].clone();\n objCloned.applyMatrix4(new Matrix4().getInverse(g.children[0].matrix));\n\n let box = new BoxHelper(objCloned);\n\n g.children[0].updateWorldMatrix(true, true);\n\n box.geometry.applyMatrix4(g.children[0].matrixWorld);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n //this.APP.scene.add(box);\n\n let outlineGeo1 = this.simplifyGeo(box.geometry as BufferGeometry);\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo1.vertices,\n views: g.userData.views,\n });\n }\n\n let rafterBeamGroups = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n );\n for (let o of rafterBeamGroups) {\n o.children.forEach((el) => {\n this.utils.getOutlineRafterBeam(el as Mesh, lsGeometries);\n });\n }\n\n return { lines: lsGeometries, texts: [] };\n }\n public simplifyGeo(geo: BufferGeometry): Geometry {\n let vertices = geo.getAttribute(\"position\").array;\n let lineGeo = new Geometry();\n for (let i = 0; i < vertices.length; i += 3) {\n lineGeo.vertices.push(\n new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2])\n );\n }\n\n //2-3\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n //3-7\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n //7-6\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n //6-2\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n\n //1-4\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n //4-8\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n //8-5\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n //5-1\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n\n return lineGeo;\n }\n private addCenterPost(offsetZ, userDataPos) {\n let meshPost = new Mesh(\n this.geo_centerSuperiorPost.geometry,\n MaterialManager.Instance().BEAM\n );\n meshPost.userData = {\n ...userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_CENTER_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let scalePostY = 1;\n\n let views: Print2DView[];\n\n this.frontPostHeight = UI.existingWallHeight + +UI.upstandBraketType;\n\n scalePostY =\n ((UI.span / 2 - this.geoBeam.width / 2) * this.utils.tan(UI.patiosPitch) -\n this.geoBeam.height) /\n this.geo_centerSuperiorPost.height;\n\n if (userDataPos.last) {\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else {\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n let postOffsetX = -this.geo_centerSuperiorPost.width / 2;\n\n let postOffsetZ =\n offsetZ -\n this.geo_centerSuperiorPost.width / 2 -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4;\n if (userDataPos.first) {\n postOffsetZ =\n offsetZ -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4;\n } else if (userDataPos.last) {\n postOffsetZ =\n offsetZ -\n this.geo_centerSuperiorPost.width -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4;\n }\n\n meshPost.userData.views = views;\n meshPost.position.set(\n postOffsetX,\n UI.existingWallHeight + +UI.upstandBraketType + this.geoBeam.height,\n postOffsetZ\n );\n meshPost.scale.setY(scalePostY);\n\n this.scene.add(meshPost);\n }\n public addPost(offsetZ: number, userDataPos: any) {\n const condition = offsetZ + this.APP.sldEaveWidth.currentValue;\n if (\n (this.existingType === 1 || this.existingType === 3) &&\n userDataPos.left &&\n (UI.existingWidth1 >= condition + UI.multiSpan ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition + UI.multiSpan &&\n UI.cutOutType == 1))\n ) {\n return;\n }\n if (\n (this.existingType === 2 || this.existingType === 3) &&\n userDataPos.right &&\n (UI.existingWidth1 >= condition + UI.multiSpan ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition + UI.multiSpan &&\n UI.cutOutType == 1))\n ) {\n return;\n }\n\n let views: Print2DView[] = [];\n if (userDataPos.back || userDataPos.center) {\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else {\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n const mesh = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n let posZ =\n offsetZ -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4;\n if (userDataPos.back) {\n posZ =\n offsetZ +\n this.postInfo.width / 2 -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4;\n } else if (userDataPos.front) {\n posZ =\n offsetZ -\n this.postInfo.width / 2 -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4;\n }\n\n let length =\n UI.existingWallHeight + +UI.upstandBraketType + this.geoBeam.height;\n let scaleY = length / this.postInfo.height;\n\n let offsetX = 0;\n if (userDataPos.left) {\n offsetX = -UI.span / 2 + this.postInfo.width / 2;\n } else if (userDataPos.right) {\n offsetX = UI.span / 2 - this.postInfo.width / 2;\n }\n\n mesh.position.set(offsetX, 0, posZ);\n mesh.scale.setY(scaleY);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n this.scene.add(mesh);\n }\n\n private addUpstandBraketExt(offsetZ: number, userDataPos: any) {\n if (\n UI.upstandBraketType == 0 ||\n UI.listBay.length == 0 ||\n UI.existingType == 0\n ) {\n return;\n }\n if (\n (this.existingType == 1 && userDataPos.right) ||\n (this.existingType == 2 && userDataPos.left)\n ) {\n return;\n }\n let _flag = false;\n\n const condition = offsetZ + this.APP.sldEaveWidth.currentValue;\n if (!userDataPos.isMultiSpan && !_flag) {\n if (\n (this.existingType === 1 || this.existingType === 3) &&\n userDataPos.left &&\n (UI.existingWidth1 >= condition ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition &&\n UI.cutOutType == 1))\n ) {\n _flag = true;\n // return;\n }\n if (\n (this.existingType === 2 || this.existingType === 3) &&\n userDataPos.right &&\n (UI.existingWidth1 >= condition ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition &&\n UI.cutOutType == 1))\n ) {\n _flag = true;\n // return;\n }\n } else if (!_flag) {\n if (\n (this.existingType === 1 || this.existingType === 3) &&\n userDataPos.left &&\n (UI.existingWidth1 >= condition + UI.multiSpan ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition + UI.multiSpan &&\n UI.cutOutType == 1))\n ) {\n _flag = true;\n // return;\n }\n if (\n (this.existingType === 2 || this.existingType === 3) &&\n userDataPos.right &&\n (UI.existingWidth1 >= condition + UI.multiSpan ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition + UI.multiSpan &&\n UI.cutOutType == 1))\n ) {\n _flag = true;\n // return;\n }\n }\n if (!_flag) {\n return;\n }\n\n const _bracketOffsetXExt = this.geoBraket_2.height / 5; // + this.geoBraket_1.width / 4;\n let height = 0;\n let offsetX = -UI.existingLength1 / 2;\n let spanLength = UI.span;\n\n if (!AppComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n if (UI.existingType == 1 || UI.existingType == 2) {\n spanLength -= UI.existingLength2;\n }\n if (UI.existingType == 3) {\n spanLength -= 2 * UI.existingLength2;\n }\n }\n\n const _cond1 =\n UI.existingWidth1 < condition &&\n UI.existingWidth1 + UI.existingWidth2 > condition;\n const _cond2 =\n userDataPos.isMultiSpan &&\n UI.existingWidth1 < condition + UI.multiSpan &&\n UI.existingWidth1 + UI.existingWidth2 > condition + UI.multiSpan;\n\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n offsetX = -spanLength / 2 + this.geoBraket_1.width - FASCIA_BRACKET_FIT;\n if (!AppComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n offsetX = -spanLength / 2 + UI.existingLength2 / 2;\n }\n offsetX += _bracketOffsetXExt;\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n offsetX = spanLength / 2 - this.geoBraket_1.width + FASCIA_BRACKET_FIT;\n if (!AppComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n offsetX -= UI.existingLength2 / 2;\n }\n offsetX -= _bracketOffsetXExt;\n } else if (UI.existingType == 3) {\n offsetX =\n (-spanLength / 2) * (userDataPos.left ? 1 : -1) +\n (userDataPos.left ? this.geoBraket_1.width - FASCIA_BRACKET_FIT : 0) -\n (userDataPos.right ? this.geoBraket_1.width - FASCIA_BRACKET_FIT : 0);\n if ((!userDataPos.isMultiSpan && _cond1) || _cond2) {\n offsetX -=\n UI.existingLength2 * (userDataPos.left ? 1 : -1) +\n (userDataPos.right ? this.geoBraket_1.width : 0);\n }\n offsetX += _bracketOffsetXExt * (userDataPos.left ? 1 : -1);\n }\n\n let posZ =\n offsetZ -\n this.geoBraket_1.width / 2 -\n UI.existingWidth1 / 2 +\n UI.eaveWidth;\n if (userDataPos.front) {\n posZ =\n offsetZ - this.geoBraket_1.width - UI.existingWidth1 / 2 + UI.eaveWidth;\n }\n if (userDataPos.back) {\n posZ =\n offsetZ +\n this.geoBraket_1.width / 2 -\n UI.existingWidth1 / 2 +\n UI.eaveWidth;\n }\n\n height = +UI.upstandBraketType;\n\n let optionBrakets: UpstandBraketOptions = {\n container: this.scene,\n position: new Vector3(),\n geoBraket_1: this.geoBraket_1,\n geoBraket_2:\n UI.existingType == 2 ? this.geoBraketExtR_2 : this.geoBraketExtL_2,\n height: height,\n material: MaterialManager.Instance().FASCIA_BRACKET.clone(),\n };\n if (UI.existingType == 1) {\n optionBrakets = { ...optionBrakets, geoBraket_2: this.geoBraketExtL_2 };\n } else if (UI.existingType == 2) {\n optionBrakets = { ...optionBrakets, geoBraket_2: this.geoBraketExtR_2 };\n } else {\n optionBrakets = {\n ...optionBrakets,\n geoBraket_2: userDataPos.right\n ? this.geoBraketExtR_2\n : this.geoBraketExtL_2,\n };\n }\n let views: Print2DView[] = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n if (userDataPos.right) {\n views = [\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n new UpstandBraket({\n ...optionBrakets,\n position: new Vector3(offsetX, UI.existingWallHeight, posZ),\n userData: { type: GEOMETRY_TYPE.UPSTAND_BRAKET_EXT, views },\n });\n }\n\n public addBeam(offsetZ: number, userDataPos: any) {\n let offsetY = 0;\n let offsetX = -UI.span / 2 + this.postInfo.width;\n if (userDataPos.back) {\n offsetX = -UI.span / 2 + this.geoBeam.width;\n }\n\n let beamLength = UI.span - 2 * this.postInfo.width;\n if (userDataPos.back) {\n beamLength = UI.span - 2 * this.geoBeam.width;\n }\n\n let posZ = 0;\n let views: Print2DView[] = [];\n if (userDataPos.front) {\n offsetY =\n UI.existingWallHeight + +UI.upstandBraketType + this.geoBeam.height;\n posZ =\n offsetZ -\n this.geoBeam.width / 2 -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4;\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.center) {\n offsetY =\n UI.existingWallHeight + +UI.upstandBraketType + this.geoBeam.height;\n posZ =\n offsetZ -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.back) {\n offsetY =\n UI.existingWallHeight + +UI.upstandBraketType + this.geoBeam.height;\n posZ =\n offsetZ +\n this.geoBeam.width / 2 -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n let beamGroup: Group;\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup = this.utils.createBeamGroup2(\n this.beamInfo,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetX, offsetY, posZ),\n new Vector3(),\n views,\n 1,\n userDataPos,\n 0,\n \"x\",\n false,\n {\n hasStartCap: UI.beamType == 0,\n hasEndCap: UI.beamType == 0,\n hasStartJoint: false,\n hasEndJoint: false,\n jointGeo: null,\n }\n );\n } else {\n beamGroup = this.utils.createBeamGroup2(\n this.beamInfo,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetX, offsetY, posZ),\n new Vector3(),\n views,\n 1,\n userDataPos,\n 0,\n \"x\",\n false,\n {\n hasStartCap: UI.beamType == 0,\n hasEndCap: UI.beamType == 0,\n hasStartJoint: false,\n hasEndJoint: false,\n jointGeo: null,\n }\n );\n }\n\n beamGroup.userData = {\n ...beamGroup.userData,\n name: \"GB\",\n };\n\n this.scene.add(beamGroup);\n }\n public addHorSuperiorBeam(offsetX, userDataPos: any) {\n let offsetZ = 0;\n let offsetY = 0;\n\n let beamLength = this.totalBaySize + UI.overhangBack + UI.overhangFront;\n\n let views: Print2DView[];\n\n offsetY = UI.existingWallHeight + +UI.upstandBraketType;\n offsetZ =\n this.totalBaySize +\n UI.overhangFront -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4;\n\n if (userDataPos.left) {\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else {\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n this.cutStandardBeamByCutBeamWithinBayControl(\n this.beamInfo,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetX, offsetY + this.beamInfo.height, offsetZ),\n new Vector3(0, Math.PI / 2, 0),\n views,\n 1,\n userDataPos,\n 0,\n \"x\",\n \"EB\",\n this.geoBeamJoint\n );\n }\n private cutStandardBeamByCutBeamWithinBayControl(\n beamGeo: GeometryInfo,\n beamCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n userDataPos: any,\n beamGeoTranslationZ: number,\n beamDirection: string,\n beamName = \"\",\n jointGeo: GeometryInfo\n ) {\n // Map list cut beam here\n const beamStartZ = pos.z - length;\n const beamEndZ = pos.z;\n\n let endOfBayZ =\n -UI.existingWidth1 / 2 + UI.eaveWidth + this.geoBraket_2.height / 4;\n let startCutBeamZ = beamStartZ;\n let endCutBeamZ = beamStartZ;\n\n const beams = this.utils.getListSeperateBeamsByBaysForFbGable(\n endOfBayZ,\n beamStartZ,\n beamEndZ,\n endCutBeamZ,\n startCutBeamZ\n );\n\n for (let i = 0; i < beams.length; i++) {\n endCutBeamZ = beams[i][1];\n startCutBeamZ = beams[i][0];\n let beamGroup = this.utils.createBeamGroup2(\n beamGeo,\n beamCapGeo,\n endCutBeamZ - startCutBeamZ,\n new Vector3(pos.x, pos.y, endCutBeamZ),\n rot,\n views,\n directionOffset,\n userDataPos,\n beamGeoTranslationZ,\n beamDirection,\n UI.beamLayoutShow,\n {\n hasStartCap:\n UI.beamType == 0 &&\n (i == beams.length - 1 || (i == 0 && beams.length == 1)),\n hasEndCap: UI.beamType == 0 && i == 0,\n hasStartJoint: false,\n hasEndJoint: i !== 0,\n jointGeo: jointGeo,\n }\n );\n beamGroup.userData = {\n ...beamGroup.userData,\n name: beamName,\n };\n this.scene.add(beamGroup);\n }\n }\n public addRafterSuperiorBeam(offsetZ, userDataPos: any) {\n if (\n this.APP.sltWindClass.currentValue == 0 ||\n this.APP.sltWindClass.currentValue == 1\n ) {\n if (this.totalBaySize <= 6000 && this.APP.sldSpan.currentValue <= 7000) {\n return;\n }\n }\n if (\n this.APP.sltWindClass.currentValue == 3 ||\n this.APP.sltWindClass.currentValue == 4 ||\n this.APP.sltWindClass.currentValue == 5\n ) {\n return;\n }\n let mesh;\n\n let offsetXL = 0;\n let offsetXR =\n (UI.span / 2 - this.geoBeam.width / 2) / this.utils.cos(UI.patiosPitch);\n let offsetY = 0;\n\n let scaleX =\n (UI.span / 2 - this.geoBeam.width / 2) /\n this.utils.cos(UI.patiosPitch) /\n this.geo_RafterBeam.length;\n\n let views: Print2DView[];\n\n let fitZ = 0;\n\n if (userDataPos.left) {\n let material = MaterialManager.Instance().BEAM.clone();\n\n let nBottom = new Vector3(0, 1, 0).normalize();\n let pBottom = new Vector3(\n 0,\n UI.existingWallHeight + +UI.upstandBraketType + this.geoBeam.height,\n 0\n );\n let planeBottom = new Plane().setFromNormalAndCoplanarPoint(\n nBottom,\n pBottom\n );\n\n let beamOffsetX = 0;\n\n let nVer = new Vector3(-1, 0, 0).normalize();\n let pVer = new Vector3(\n -this.geoBeam.width / 2 + beamOffsetX + this.scene.position.x + fitZ,\n 0,\n 0\n );\n let planeVer = new Plane().setFromNormalAndCoplanarPoint(nVer, pVer);\n\n material.clippingPlanes = [planeBottom, planeVer];\n\n mesh = new Mesh(this.geo_RafterBeam.geometry, material);\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.right) {\n let material = MaterialManager.Instance().BEAM.clone();\n\n let nBottom = new Vector3(0, 1, 0).normalize();\n let pBottom = new Vector3(\n 0,\n UI.existingWallHeight + +UI.upstandBraketType + this.geoBeam.height,\n 0\n );\n let planeBottom = new Plane().setFromNormalAndCoplanarPoint(\n nBottom,\n pBottom\n );\n\n let beamOffsetX = 0;\n let nVer = new Vector3(1, 0, 0).normalize();\n let pVer = new Vector3(\n this.geoBeam.width / 2 + beamOffsetX + this.scene.position.x + fitZ,\n 0,\n 0\n );\n let planeVer = new Plane().setFromNormalAndCoplanarPoint(nVer, pVer);\n\n material.clippingPlanes = [planeBottom, planeVer];\n\n mesh = new Mesh(this.geo_RafterBeam.geometry, material);\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM,\n position: userDataPos,\n views: views,\n };\n mesh.position.set(offsetXL, 0, 0);\n mesh.scale.setX(scaleX);\n\n let checkExec = /\\w{1}\\d{1,3}x(\\d{1,3})/.exec(this.geo_RafterBeam.name);\n let beamSize = checkExec && checkExec.length == 2 ? checkExec[1] : \"\";\n let lowerBraketName = getRafterBeamEndCapCode(\n EXISTING_BUILDING_CONFIG.RAFTER_BEAM_SIZE,\n false\n );\n let higherBraketName = getRafterBeamEndCapCode(\n EXISTING_BUILDING_CONFIG.RAFTER_BEAM_SIZE,\n true\n );\n\n let capL;\n let capR;\n if (userDataPos.left) {\n let matEndCap = MaterialManager.Instance().BEAM.clone();\n\n let heightReal =\n UI.existingWallHeight +\n +UI.upstandBraketType +\n this.geoBeam.height +\n (this.utils.tan(UI.patiosPitch) * UI.span) / 2;\n let heightPlane = heightReal * this.utils.cos(UI.patiosPitch);\n let translateZ = this.utils.sin(UI.patiosPitch) * heightPlane;\n\n let planeTop = new Plane(new Vector3(0, -1, 0));\n let matrixTranslateTop = new Matrix4().makeTranslation(\n -translateZ / 2,\n heightPlane,\n 0\n );\n let matrixRotateTop = new Matrix4().makeRotationZ(\n this.utils.degreesToRadians(UI.patiosPitch)\n );\n let matrixTotalTop = matrixTranslateTop.multiply(matrixRotateTop);\n planeTop.applyMatrix4(matrixTotalTop);\n\n let heightRealBottom =\n UI.existingWallHeight +\n +UI.upstandBraketType +\n this.geoBeam.height -\n this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n (this.utils.tan(UI.patiosPitch) * UI.span) / 2;\n let heightPlaneBottom = heightRealBottom * this.utils.cos(UI.patiosPitch);\n let translateZBottom = this.utils.sin(UI.patiosPitch) * heightPlaneBottom;\n\n let planeBottom = new Plane(new Vector3(0, 1, 0));\n let matrixTranslateBottom = new Matrix4().makeTranslation(\n -translateZBottom / 2,\n heightPlaneBottom,\n 0\n );\n let matrixRotateBottom = new Matrix4().makeRotationZ(\n this.utils.degreesToRadians(UI.patiosPitch)\n );\n let matrixTotalBottom =\n matrixTranslateBottom.multiply(matrixRotateBottom);\n planeBottom.applyMatrix4(matrixTotalBottom);\n\n let beamOffsetX = 0;\n\n planeTop.translate(\n new Vector3(beamOffsetX + this.scene.position.x, 0, 0)\n );\n planeBottom.translate(\n new Vector3(beamOffsetX + this.scene.position.x, 0, 0)\n );\n\n matEndCap.clippingPlanes = [planeTop, planeBottom];\n\n capL = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capL.position.set(offsetXL - 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capL.scale.setY(\n (this.geo_RafterBeam.height / this.utils.sin(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length / this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capL.rotateY(Math.PI / 2);\n capL.rotateX(-Math.PI / 2 + this.utils.degreesToRadians(UI.patiosPitch));\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: lowerBraketName,\n };\n\n capR = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capR.position.set(offsetXR + 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capR.scale.setY(\n (this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length * this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capR.rotateY(-Math.PI / 2);\n capR.rotateX(-this.utils.degreesToRadians(UI.patiosPitch));\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: higherBraketName,\n };\n } else {\n let matEndCap = MaterialManager.Instance().BEAM.clone();\n\n let heightReal =\n UI.existingWallHeight +\n +UI.upstandBraketType +\n this.geoBeam.height +\n (this.utils.tan(UI.patiosPitch) * UI.span) / 2;\n let heightPlane = heightReal * this.utils.cos(UI.patiosPitch);\n let translateZ = this.utils.sin(UI.patiosPitch) * heightPlane;\n\n let planeTop = new Plane(new Vector3(0, -1, 0));\n let matrixTranslateTop = new Matrix4().makeTranslation(\n translateZ / 2,\n heightPlane,\n 0\n );\n let matrixRotateTop = new Matrix4().makeRotationZ(\n -this.utils.degreesToRadians(UI.patiosPitch)\n ); //tao voi z pitch do\n let matrixTotalTop = matrixTranslateTop.multiply(matrixRotateTop);\n planeTop.applyMatrix4(matrixTotalTop);\n\n let heightRealBottom =\n UI.existingWallHeight +\n +UI.upstandBraketType +\n this.geoBeam.height -\n this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n (this.utils.tan(UI.patiosPitch) * UI.span) / 2;\n let heightPlaneBottom = heightRealBottom * this.utils.cos(UI.patiosPitch);\n let translateZBottom = this.utils.sin(UI.patiosPitch) * heightPlaneBottom;\n\n let planeBottom = new Plane(new Vector3(0, 1, 0));\n let matrixTranslateBottom = new Matrix4().makeTranslation(\n translateZBottom / 2,\n heightPlaneBottom,\n 0\n );\n let matrixRotateBottom = new Matrix4().makeRotationZ(\n -this.utils.degreesToRadians(UI.patiosPitch)\n ); //tao voi z pitch do\n let matrixTotalBottom =\n matrixTranslateBottom.multiply(matrixRotateBottom);\n planeBottom.applyMatrix4(matrixTotalBottom);\n\n let beamOffsetX = 0;\n\n planeTop.translate(\n new Vector3(beamOffsetX + this.scene.position.x, 0, 0)\n );\n planeBottom.translate(\n new Vector3(beamOffsetX + this.scene.position.x, 0, 0)\n );\n\n matEndCap.clippingPlanes = [planeTop, planeBottom];\n\n capL = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capL.position.set(offsetXL - 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capL.scale.setY(\n (this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length * this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capL.rotateY(Math.PI / 2);\n capL.rotateX(-this.utils.degreesToRadians(UI.patiosPitch));\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: higherBraketName,\n };\n\n capR = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capR.position.set(offsetXR + 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capR.scale.setY(\n (this.geo_RafterBeam.height / this.utils.sin(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length / this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capR.rotateY(-Math.PI / 2);\n capR.rotateX(-Math.PI / 2 + this.utils.degreesToRadians(UI.patiosPitch));\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: lowerBraketName,\n };\n }\n\n let offsetX = 0;\n if (userDataPos.left) {\n offsetX = -UI.span / 2;\n offsetY =\n UI.existingWallHeight + +UI.upstandBraketType + this.geoBeam.height;\n } else if (userDataPos.right) {\n offsetX = this.geo_centerSuperiorPost.width / 2;\n offsetY =\n UI.existingWallHeight +\n +UI.upstandBraketType +\n this.geoBeam.height +\n (UI.span / 2 - this.geoBeam.width / 2) * this.utils.tan(UI.patiosPitch);\n }\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM,\n position: userDataPos,\n views: views,\n };\n beamGroup.position.set(offsetX, offsetY, offsetZ);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n\n if (userDataPos.left) {\n beamGroup.rotateZ(this.utils.degreesToRadians(UI.patiosPitch));\n } else if (userDataPos.right) {\n beamGroup.rotateZ(-this.utils.degreesToRadians(UI.patiosPitch));\n }\n\n this.scene.add(beamGroup);\n }\n public addCenterSuperiorBeam() {\n let beamLength = this.totalBaySize + UI.overhangBack + UI.overhangFront;\n\n let views: Print2DView[];\n\n let offsetY =\n UI.existingWallHeight +\n +UI.upstandBraketType +\n (UI.span / 2 - this.geoBeam.width / 2) * this.utils.tan(UI.patiosPitch);\n let offsetZ =\n this.totalBaySize +\n UI.overhangFront -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4;\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n this.cutStandardBeamByCutBeamWithinBayControl(\n this.beamInfo,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(0, offsetY + this.beamInfo.height, offsetZ),\n new Vector3(0, Math.PI / 2, 0),\n views,\n 1,\n { center: true },\n 0,\n \"x\",\n \"RB\",\n this.geoBeamJoint\n );\n }\n private getHeightByRoofPitch(isSpan: boolean): number {\n if (isSpan) {\n if (UI.isUpFasciaUpstandardBracket) {\n return (\n -this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n this.APP.sldSpan.currentValue\n );\n } else {\n return (\n this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n this.APP.sldSpan.currentValue\n );\n }\n } else {\n if (UI.isUpFasciaUpstandardBracket) {\n return (\n -this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue)\n );\n } else {\n return (\n this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue)\n );\n }\n }\n }\n}\n","import { BoxBufferGeometry, BufferGeometry, Color, Geometry, Group, LineSegments, Material, Matrix4, Mesh, MeshLambertMaterial, Object3D, Plane, Vector3 } from 'three';\nimport { GEOMETRY_CATEGORY, GEOMETRY_TYPE } from 'src/app/app.config';\nimport { BUILDING_SIDE, CUTOUT_ENABLE, EXISTING_BUILDING_CONFIG as CONST, EXISTING_BUILDING_CONFIG, PANEL_DIRECTION, RAKECUT_TYPE, RIBSPAN_PANEL_WIDTH, RIBSPAN_BARGE_FIT, RIBSPAN_RECEIVER_CHANNEL_FIT } from 'src/app/app.constants';\nimport { Util } from '../utils';\nimport { CSG } from 'three-csg-ts';\nimport { GableFBFasciaManager } from '.';\nimport { HomeComponent as AppComponent } from '../../containers/home/home.component';\nimport { GeometryManager } from '../geometry.manager';\nimport { MaterialManager } from '../material.manager';\nimport { GeometryInfo, LineType, Print2DView, Printing2DGeometry, Printing2DLine, ViewType } from 'src/app/core/models';\nimport { UI } from '../ui';\n\nexport class RoofManager {\n private scene: Group;\n private APP: AppComponent;\n private MANAGER: GableFBFasciaManager;\n private material: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n public ridgeGeo: GeometryInfo;\n private roofInfo: GeometryInfo;\n private bargeLeftInfo: GeometryInfo;\n private bargeRightInfo: GeometryInfo;\n private bargeFrontInfo: GeometryInfo;\n private bargeBackInfo: GeometryInfo;\n private geo_bargeCutoutLeftHor: GeometryInfo;\n private geo_bargeCutoutRightHor: GeometryInfo;\n private geo_bargeRakecutLeft: GeometryInfo;\n private geo_bargeRakecutRight: GeometryInfo;\n private receiverCutoutLeftHor: GeometryInfo;\n private receiverCutoutLeftVer: GeometryInfo;\n private receiverCutoutRightHor: GeometryInfo;\n private receiverCutoutRightVer: GeometryInfo;\n private gutterInfo: GeometryInfo;\n private gutterRakecutLeftInfo: GeometryInfo;\n private gutterRakecutRightInfo: GeometryInfo;\n //private flashingInfo: GeometryInfo;\n private geo_receiverChanel: GeometryInfo;\n private geo_gutterCap: GeometryInfo;\n public geoBraket_1: GeometryInfo;\n public geoBraket_2: GeometryInfo;\n private geoBeam: GeometryInfo;\n private geoBeamEndCap: GeometryInfo;\n private eventHandleId: any;\n // Var\n private roofLength: number;\n private roofLengthPlus: number;\n private roofWidth: number;\n //private existingTypeLeftX: number;\n //private existingTypeRightX: number;\n private existingType: number;\n private totalBaySize: number;\n private objectSizeChangedHandle: any;\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n\n private mesh_CutoutLeft: Mesh;\n private csg_cutoutLeft: CSG;\n private mesh_CutoutRight: Mesh;\n private csg_cutoutRight: CSG;\n private geo_cutoutLeft: BoxBufferGeometry;\n private geo_cutoutRight: BoxBufferGeometry;\n\n private geo_rakecutLeft: BoxBufferGeometry;\n private geo_rakecutRight: BoxBufferGeometry;\n private mesh_rakecutLeft: Mesh;\n private mesh_rakecutRight: Mesh;\n private csg_rakecutLeft: CSG;\n private csg_rakecutRight: CSG;\n\n private geoCutGutter: BoxBufferGeometry;\n private meshCutGutterLeft1: Mesh;\n private csgCutGutterLeft1: CSG;\n private meshCutGutterLeft2: Mesh;\n private csgCutGutterLeft2: CSG;\n\n private meshCutGutterRight1: Mesh;\n private csgCutGutterRight1: CSG;\n private meshCutGutterRight2: Mesh;\n private csgCutGutterRight2: CSG;\n\n private roofGroupRight: Group;\n private roofGroupLeft: Group;\n private cutoutExistingBothLength: number;\n\n constructor(app: AppComponent, fasciaManager: GableFBFasciaManager) {\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.APP = app;\n this.MANAGER = fasciaManager;\n this.scene = new Group();\n fasciaManager.patiosGroup.add(this.scene);\n this.material = MaterialManager.Instance().ROOF;\n this.registerEvent();\n }\n public destroy(): void {\n this.unregisterEvent();\n }\n public uiChanged(preVal: number, curVal: number): void {\n this.load();\n }\n private objectSizeChanged(preVal: number, curVal: number) {\n this.optimize().then(() => { this.load() });\n }\n public onColorChanged() {\n if(this.utils && this.roofInfo.geometry){\n this.utils.changeGeoColor(this.roofInfo.geometry, new Vector3(0, 1, 0), UI.roofColor.toString());\n }\n }\n private registerEvent(): void {\n this.eventHandleId = this.onColorChanged.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sltColourRoof\n ];\n this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n this.controlsToRegisterEvent2 = [\n this.APP.sltRoofSheetingType,\n this.APP.sltRoofThickness,\n this.APP.sltBargeType,\n this.APP.sltDripBarge,\n this.APP.sltGutterType,\n this.APP.sltRoofPitch\n ];\n this.controlsToRegisterEvent2.forEach(c => c.addAction(this.objectSizeChangedHandle));\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach(c => c.removeAction(this.objectSizeChangedHandle));\n this.controlsToRegisterEvent2 = undefined;\n }\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n this.roofInfo = this.geometryManager.getRoofRibspanPanel();\n this.roofInfo.geometry\n .translate(-this.roofInfo.width / 2, this.roofInfo.height / 2, this.roofInfo.length / 2);\n this.roofInfo.geometry.rotateY(Math.PI / 2)\n this.utils.changeGeoColor(this.roofInfo.geometry, new Vector3(0, 1, 0), UI.roofColor.toString());\n\n // Barge capping\n this.bargeLeftInfo = this.geometryManager.getRibspanBarge();\n this.bargeLeftInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.bargeLeftInfo.length / 2, this.bargeLeftInfo.height / 2 - RIBSPAN_BARGE_FIT, -this.bargeLeftInfo.width / 2 + 3);\n\n this.bargeRightInfo = this.geometryManager.getRibspanBarge();\n this.bargeRightInfo.geometry\n .rotateY(Math.PI / 2)\n .translate(this.bargeRightInfo.length / 2, this.bargeRightInfo.height / 2 - RIBSPAN_BARGE_FIT, this.bargeRightInfo.width / 2 - 3);\n\n //Barge cutout left\n this.receiverCutoutLeftHor = this.geometryManager.getRibspanReceiverChannel();\n this.receiverCutoutLeftHor.geometry\n .rotateY(Math.PI / 2)\n .translate(-this.receiverCutoutLeftHor.length / 2, this.receiverCutoutLeftHor.height / 2 - RIBSPAN_RECEIVER_CHANNEL_FIT, this.receiverCutoutLeftHor.width / 2);\n\n //Barge cutout right\n this.receiverCutoutRightHor = this.geometryManager.getRibspanReceiverChannel();\n this.receiverCutoutRightHor.geometry\n .rotateY(Math.PI / 2)\n .translate(this.receiverCutoutLeftHor.length / 2, this.receiverCutoutLeftHor.height / 2 - RIBSPAN_RECEIVER_CHANNEL_FIT, this.receiverCutoutLeftHor.width / 2);\n\n //Vertical Barge cutout left\n this.receiverCutoutLeftVer = this.geometryManager.getRibspanReceiverChannel();\n this.receiverCutoutLeftVer.geometry\n .rotateY(Math.PI)\n .translate(this.receiverCutoutLeftVer.width / 2, this.receiverCutoutLeftVer.height / 2 - RIBSPAN_RECEIVER_CHANNEL_FIT, this.receiverCutoutLeftVer.length / 2);\n\n //Vertical cutout right\n this.receiverCutoutRightVer = this.geometryManager.getRibspanReceiverChannel();\n this.receiverCutoutRightVer.geometry\n .translate(-this.receiverCutoutRightVer.width / 2, this.receiverCutoutRightVer.height / 2 - RIBSPAN_RECEIVER_CHANNEL_FIT, this.receiverCutoutRightVer.length / 2);\n\n //Receiver chanel - barge caping back\n this.geo_receiverChanel = this.geometryManager.getRibspanReceiverChannel();\n this.geo_receiverChanel.geometry\n .rotateY(Math.PI / 2)\n .translate(this.geo_receiverChanel.length / 2, this.geo_receiverChanel.height / 2 + 2 - RIBSPAN_RECEIVER_CHANNEL_FIT, this.geo_receiverChanel.width / 2);\n\n // Gutter\n this.gutterInfo = this.geometryManager.getGutter();\n this.gutterInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.gutterInfo.length / 2, -20, this.gutterInfo.width / 2);\n\n this.gutterRakecutLeftInfo = this.geometryManager.getGutter();\n this.gutterRakecutLeftInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.gutterRakecutLeftInfo.length / 2, -20, this.gutterRakecutLeftInfo.width / 2);\n\n this.gutterRakecutRightInfo = this.geometryManager.getGutter();\n this.gutterRakecutRightInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(-this.gutterRakecutRightInfo.length / 2, -20, this.gutterRakecutRightInfo.width / 2);\n\n //Gutter cap\n this.geo_gutterCap = this.geometryManager.getGuterEndCap();\n this.geo_gutterCap.geometry\n .rotateY(-Math.PI / 2)\n .translate(0, -20, this.geo_gutterCap.length / 2);\n\n\n this.geo_cutoutLeft = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_cutoutLeft.translate(-500, 0, -500);\n\n this.geo_cutoutRight = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_cutoutRight.translate(500, 0, -500);\n\n this.geo_rakecutLeft = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_rakecutLeft.translate(-500, 500, 500);\n this.geo_rakecutRight = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_rakecutRight.translate(500, 500, 500);\n\n this.geoCutGutter = new BoxBufferGeometry(800, 10000, 500);\n this.geoCutGutter.translate(0, 0, -250);\n\n this.geoBraket_1 = this.geometryManager.getUpstandBraket(1);\n this.geoBraket_1.geometry.rotateX(Math.PI / 2);\n this.geoBraket_1.geometry.translate(0, this.geoBraket_1.length / 2, 0);\n\n this.geoBraket_2 = this.geometryManager.getUpstandBraket(2);\n this.geoBraket_2.geometry.rotateY(Math.PI);\n this.geoBraket_2.geometry.rotateX(Math.PI / 2);\n this.geoBraket_2.geometry.translate(0, this.geoBraket_2.length / 2, - this.geoBraket_2.height / 4);\n\n this.geoBeam = this.geometryManager.getBeam();\n this.geoBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(0, this.geoBeam.height / 2, 0);\n\n this.geoBeamEndCap = this.geometryManager.getBeamEndCap();\n this.geoBeamEndCap.geometry\n .translate(0, this.geoBeamEndCap.height / 2, this.geoBeamEndCap.length / 2)\n .rotateY(Math.PI / 2);\n\n this.bargeFrontInfo = this.geometryManager.getRibspanBarge();\n this.bargeFrontInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.bargeFrontInfo.length / 2, this.bargeFrontInfo.height / 2 - RIBSPAN_BARGE_FIT, -this.bargeFrontInfo.width / 2);\n\n this.bargeBackInfo = this.geometryManager.getRibspanBarge();\n this.bargeBackInfo.geometry\n .rotateY(Math.PI / 2)\n .translate(this.bargeBackInfo.length / 2, this.bargeBackInfo.height / 2 - RIBSPAN_BARGE_FIT, this.bargeBackInfo.width / 2 - 3);\n\n this.geo_bargeRakecutLeft = this.geometryManager.getRibspanBarge();\n this.geo_bargeRakecutLeft.geometry\n .rotateY(Math.PI)\n .translate(this.geo_bargeRakecutLeft.width / 2, this.geo_bargeRakecutLeft.height / 2 - RIBSPAN_BARGE_FIT, -this.geo_bargeRakecutLeft.length / 2);\n\n this.geo_bargeRakecutRight = this.geometryManager.getRibspanBarge();\n this.geo_bargeRakecutRight.geometry\n .translate(-this.geo_bargeRakecutRight.width / 2, this.geo_bargeRakecutRight.height / 2 - RIBSPAN_BARGE_FIT, -this.geo_bargeRakecutRight.length / 2);\n\n this.geo_bargeRakecutLeft = this.geometryManager.getRibspanBarge();\n this.geo_bargeRakecutLeft.geometry\n .rotateY(Math.PI)\n .translate(this.geo_bargeRakecutLeft.width / 2, this.geo_bargeRakecutLeft.height / 2 - RIBSPAN_BARGE_FIT, -this.geo_bargeRakecutLeft.length / 2);\n\n this.geo_bargeRakecutRight = this.geometryManager.getRibspanBarge();\n this.geo_bargeRakecutRight.geometry\n .translate(-this.geo_bargeRakecutRight.width / 2, this.geo_bargeRakecutRight.height / 2 - RIBSPAN_BARGE_FIT, -this.geo_bargeRakecutRight.length / 2);\n\n //Barge cutout left\n this.geo_bargeCutoutLeftHor = this.geometryManager.getRibspanBarge();\n this.geo_bargeCutoutLeftHor.geometry\n .rotateY(Math.PI / 2)\n .translate(-this.geo_bargeCutoutLeftHor.length / 2, this.geo_bargeCutoutLeftHor.height / 2 - RIBSPAN_BARGE_FIT, this.geo_bargeCutoutLeftHor.width / 2);\n\n //Barge cutout right\n this.geo_bargeCutoutRightHor = this.geometryManager.getRibspanBarge();\n this.geo_bargeCutoutRightHor.geometry\n .rotateY(Math.PI / 2)\n .translate(this.geo_bargeCutoutRightHor.length / 2, this.geo_bargeCutoutRightHor.height / 2 - RIBSPAN_BARGE_FIT, this.geo_bargeCutoutRightHor.width / 2);\n\n this.ridgeGeo = this.geometryManager.getRibspanRidgeCapping();\n this.ridgeGeo.geometry.translate(- this.ridgeGeo.width / 2 + 1, -this.ridgeGeo.height / 2, 0);\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(...this.scene.children.filter(x => x.userData.type === GEOMETRY_TYPE.ROOF_PANEL));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type === GEOMETRY_TYPE.ROOF_PANEL_BASE));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type === GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type === GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type === GEOMETRY_TYPE.GUTTER_PATIOS));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PATIOS));\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.SHEET_OUTLINE));\n //test\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == 'RAKECUT'));\n\n this.totalBaySize = this.APP.dialogEditBay.listBay.reduce((total, val) => total + val.value, 0);\n this.roofLength = UI.span / 2 + UI.overhangRight;\n this.roofLengthPlus = (UI.span / 2 + UI.overhangRight) / this.utils.cos(UI.patiosPitch);\n\n this.roofWidth = this.totalBaySize + UI.overhangBack + UI.overhangFront;\n this.cutoutExistingBothLength = (this.totalBaySize - (this.APP.sldExistingLength.currentValue + this.APP.existingWallManager.geo_existingWallW1.width * 2)) / 2;\n\n this.addRoofGroupRight();\n this.addRoofGroupLeft();\n this.addCutout();\n\n this.existingType = +this.APP.sltExistingType.currentValue;\n\n let offsetFront = this.totalBaySize + UI.overhangFront - UI.existingWidth1 / 2 + UI.eaveWidth + this.geoBraket_2.height / 4;\n let offsetBack = - UI.overhangBack - UI.existingWidth1 / 2 + UI.eaveWidth + this.geoBraket_2.height / 4;\n\n let clipingPlaneFront = new Plane(new Vector3(0, 0, -1), offsetFront);\n let clipingPlaneBack = new Plane(new Vector3(0, 0, 1), -offsetBack);\n \n this.material.clippingPlanes = [clipingPlaneFront, clipingPlaneBack];\n MaterialManager.Instance().ROOF_BASE.clippingPlanes = [clipingPlaneFront, clipingPlaneBack];\n\n const roofPanelCount = Math.ceil(this.roofWidth / RIBSPAN_PANEL_WIDTH);\n let offsetZ = - UI.overhangBack;\n\n //panel direction\n let panelDirectionOfset = 1;\n if (this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT) {\n offsetZ = this.totalBaySize + UI.overhangFront - RIBSPAN_PANEL_WIDTH;\n panelDirectionOfset = -1;\n }\n else if (this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.LEFT_TO_RIGHT) {\n offsetZ = - UI.overhangBack;\n }\n\n if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT && this.MANAGER.cutoutCondition) {\n let totalPanelLength = 0;\n let cuted = true;\n\n for (let index = 0; index < roofPanelCount; index++) {\n totalPanelLength += RIBSPAN_PANEL_WIDTH;\n let isOver = totalPanelLength < this.APP.sldExistingLength2.currentValue;\n\n this.addRoofRight(offsetZ, [this.csg_cutoutLeft]);\n\n this.addRoofLeft(offsetZ, [this.csg_cutoutLeft]);\n cuted = isOver;\n\n offsetZ += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n }\n else if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT && this.MANAGER.cutoutCondition) {\n let totalPanelLength = 0;\n let cuted = false;\n for (let index = 0; index < roofPanelCount; index++) {\n totalPanelLength += RIBSPAN_PANEL_WIDTH;\n let isOver = totalPanelLength >= this.roofWidth - this.APP.sldExistingLength2.currentValue + RIBSPAN_PANEL_WIDTH;\n cuted = totalPanelLength >= this.roofWidth - this.APP.sldExistingLength2.currentValue && !isOver;\n\n this.addRoofRight(offsetZ, [this.csg_cutoutRight]);\n\n this.addRoofLeft(offsetZ, [this.csg_cutoutRight]);\n offsetZ += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n }\n else if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH && this.MANAGER.cutoutCondition) {\n let totalPanelLength = 0;\n for (let index = 0; index < roofPanelCount; index++) {\n totalPanelLength += RIBSPAN_PANEL_WIDTH;\n this.addRoofRight(offsetZ, [this.csg_cutoutLeft, this.csg_cutoutRight]);\n\n this.addRoofLeft(offsetZ, [this.csg_cutoutLeft, this.csg_cutoutRight]);\n\n offsetZ += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n }\n else {\n for (let index = 0; index < roofPanelCount; index++) {\n this.addRoofRight(offsetZ, []);\n\n this.addRoofLeft(offsetZ, []);\n offsetZ += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n }\n\n this.addBargeCappingRight();\n this.addBargeCappingLeft();\n\n this.addGutterRight();\n this.addGutterLeft();\n\n this.addRidgeCapping();\n\n this.showPanelOutline();\n\n this.scene.visible = UI.showRoof\n\n resolve();\n });\n }\n\n private addCutout() {\n if (this.APP.sltCutOut.currentValue == 1) {\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == 'CUTOUT'));\n\n let offsetX = this.APP.sldExistingLength.currentValue / 2 - this.APP.sldEaveWidth.currentValue;\n let offsetY = 0;\n const eaveThickness = 50;\n let offsetZ = this.APP.sldExistingWidth1.currentValue / 2 + UI.eaveWidth + eaveThickness - UI.overhangBack;\n\n //extra length to prevent lack when cut\n let extra = 5000;\n\n let scaleX = (this.APP.sldExistingLength2.currentValue + extra) / 1000;\n if (scaleX == 0) scaleX = 1;\n let scaleY = (this.APP.sldExistingWallHeight.currentValue + extra) / 1000;\n let scaleZ = (this.APP.sldExistingWidth1.currentValue + UI.overhangBack + extra) / 1000;\n if (scaleZ == 0) scaleZ = 1;\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT || this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n this.mesh_CutoutLeft = new Mesh(this.geo_cutoutLeft, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.mesh_CutoutLeft.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: 'CUTOUT' };\n\n this.mesh_CutoutLeft.position.set(-offsetX - this.APP.sldLeftOverhang.currentValue, offsetY, offsetZ);\n this.mesh_CutoutLeft.scale.set(scaleX, scaleY, scaleZ);\n\n //this.APP.scene.add(this.mesh_CutoutLeft);\n\n this.mesh_CutoutLeft.updateMatrix();\n this.csg_cutoutLeft = CSG.fromMesh(this.mesh_CutoutLeft);\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT || this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n this.mesh_CutoutRight = new Mesh(this.geo_cutoutRight, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.mesh_CutoutRight.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: 'CUTOUT' };\n\n this.mesh_CutoutRight.position.set(offsetX + this.APP.sldRightOverhang.currentValue, offsetY, offsetZ);\n this.mesh_CutoutRight.scale.set(scaleX, scaleY, scaleZ);\n\n //this.APP.scene.add(this.mesh_CutoutRight);\n\n this.mesh_CutoutRight.updateMatrix();\n this.csg_cutoutRight = CSG.fromMesh(this.mesh_CutoutRight);\n }\n }\n }\n public addRoofGroupRight() {\n this.roofGroupRight = null;\n this.roofGroupRight = new Group();\n this.roofGroupRight.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PATIOS };\n\n let offsetY = this.getRoofOffsetY();\n let offsetZ = - UI.existingWidth1 / 2 + UI.eaveWidth + this.geoBraket_2.height / 4;\n\n this.roofGroupRight.position.setY(offsetY);\n this.roofGroupRight.position.setZ(offsetZ);\n this.roofGroupRight.rotateZ(-this.utils.degreesToRadians(UI.patiosPitch));\n\n this.scene.add(this.roofGroupRight);\n }\n public addRoofGroupLeft() {\n this.roofGroupLeft = null;\n this.roofGroupLeft = new Group();\n this.roofGroupLeft.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PATIOS };\n\n let offsetY = this.getRoofOffsetY();\n let offsetZ = - UI.existingWidth1 / 2 + UI.eaveWidth + this.geoBraket_2.height / 4;\n\n this.roofGroupLeft.position.setY(offsetY);\n this.roofGroupLeft.position.setZ(offsetZ);\n this.roofGroupLeft.rotateZ(this.utils.degreesToRadians(UI.patiosPitch));\n\n this.scene.add(this.roofGroupLeft);\n }\n public getOutLines(): Printing2DGeometry {\n\n let objs = this.roofGroupRight.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL\n || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ).concat(\n ...this.roofGroupLeft.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n )\n );;\n\n let gutterGroupObjs = this.roofGroupRight.children.filter(o => o.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS)\n .concat(\n ...this.roofGroupLeft.children.filter(o => o.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS)\n );;\n let gutterObjs: Object3D[] = [];\n for (let group of gutterGroupObjs) {\n gutterObjs.push(...group.children);\n }\n\n objs = [...objs, ...gutterObjs];\n\n\n let lsGeometries: Printing2DLine[] = [];\n\n let offsetFront = this.totalBaySize + UI.overhangFront - UI.existingWidth1 / 2 + UI.eaveWidth + this.geoBraket_2.height / 4;\n let offsetBack = - UI.overhangBack - UI.existingWidth1 / 2 + UI.eaveWidth + this.geoBraket_2.height / 4;\n\n let clipingPlaneFront = new Plane(new Vector3(0, 0, -1), offsetFront);\n let clipingPlaneBack = new Plane(new Vector3(0, 0, 1), -offsetBack);\n\n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale((o as Mesh), 60);\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n outlineGeo.translate(0, 5000, 0);\n\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL) {\n outlineGeo = this.utils.clipOutline(outlineGeo, clipingPlaneFront);\n outlineGeo = this.utils.clipOutline(outlineGeo, clipingPlaneBack);\n }\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE) {\n outlineGeo = this.utils.clipOutlineBasePanel(outlineGeo, clipingPlaneFront);\n outlineGeo = this.utils.clipOutlineBasePanel(outlineGeo, clipingPlaneBack);\n }\n\n\n // var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"ROOF_OUTLINE\"};\n // this.APP.scene.add( line );\n\n let simplifiedGeo = this.simplifyGeo(outlineGeo);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: simplifiedGeo.vertices,\n views: o.userData.views\n });\n\n let ridgeCapping = this.scene.children.find(el => el.userData.type === GEOMETRY_TYPE.RIDGE_CAPPING)\n if(ridgeCapping){\n ridgeCapping.children.forEach(el => {\n this.utils.createOutline(el as Mesh, lsGeometries);\n })\n }\n }\n\n lsGeometries.push({\n objectType: GEOMETRY_TYPE.ROOF_COVER,\n vertices: this.makeRoofPolygon(),\n color: this.utils.convertHexColorToRgb(`#${new Color(UI.panelColor).getHexString()}`),\n views: [\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ]\n });\n\n return { lines: lsGeometries, texts: [] };\n }\n makeRoofPolygon() {\n const polygon = this.utils.getRoofCoverPolygonForFBRoof()\n this.MANAGER.patiosGroup.updateWorldMatrix(true, true)\n return polygon.map(el => (el as Vector3).applyMatrix4(this.MANAGER.patiosGroup.matrixWorld).add(new Vector3(0, 0, - UI.existingWidth1 / 2 + UI.eaveWidth + this.geoBraket_2.height / 4 - UI.overhangBack)))\n }\n public showPanelOutline() {\n if (this.APP.sltPanelDirectionShow.currentValue == false)\n return;\n\n let objs = this.roofGroupRight.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ).concat(\n ...this.roofGroupLeft.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n )\n );\n\n let offsetFront = this.totalBaySize + UI.overhangFront - UI.existingWidth1 / 2 + UI.eaveWidth + this.geoBraket_2.height / 4;\n let offsetBack = - UI.overhangBack - UI.existingWidth1 / 2 + UI.eaveWidth + this.geoBraket_2.height / 4;\n\n let clipingPlaneFront = new Plane(new Vector3(0, 0, -1), offsetFront);\n let clipingPlaneBack = new Plane(new Vector3(0, 0, 1), -offsetBack);\n\n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale((o as Mesh), 60);\n\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n //outlineGeo.translate(0, 5000, 0);\n\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE) {\n outlineGeo = this.utils.clipOutline(outlineGeo, clipingPlaneFront);\n outlineGeo = this.utils.clipOutline(outlineGeo, clipingPlaneBack);\n }\n\n var line = new LineSegments(outlineGeo, MaterialManager.Instance().MESH_OUTLINE);\n line.userData = { type: GEOMETRY_TYPE.SHEET_OUTLINE };\n this.APP.scene.add(line);\n }\n }\n public simplifyGeo(geo: BufferGeometry): Geometry {\n let simplifiedGeo = new Geometry();\n let vertices = geo.getAttribute('position').array;\n for (let i = 0; i < vertices.length; i += 3) {\n simplifiedGeo.vertices.push(new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2]));\n }\n return simplifiedGeo;\n }\n public addRoofRight(offsetZ: number, csgObjs: CSG[]) {\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n // { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n const mesh: Mesh = new Mesh(this.roofInfo.geometry, MaterialManager.Instance().ROOF);\n\n let scaleZ = this.roofLengthPlus / this.roofInfo.length;\n const offsetY = 0;\n let offsetX = 0;\n\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setX(scaleZ);\n mesh.userData = { \n category: GEOMETRY_CATEGORY.PATIOS, \n type: GEOMETRY_TYPE.ROOF_PANEL, \n views: views, length: scaleZ,\n dir: UI.panelDirection === PANEL_DIRECTION.RIGHT_TO_LEFT ? \"L-R\" : \"R-L\"\n };\n\n let cutoutCondition = this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue != BUILDING_SIDE.NONE && this.APP.sldExistingLength2.currentValue > 0;\n\n if (cutoutCondition) {\n\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n //cho no cung he toa do\n mesh.position.set(offsetX + this.MANAGER.patiosGroup.position.x, offsetY, offsetZ + this.roofGroupRight.position.z);\n mesh.updateMatrix();\n\n let meshResult = mesh.clone();\n\n if (cutoutCondition) {\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n }\n }\n \n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix)); //=> tra ve goc toa do\n meshResult.applyMatrix4(matrixBefore);\n this.roofGroupRight.add(meshResult);\n }\n else {\n this.roofGroupRight.add(mesh);\n }\n }\n public addRoofLeft(offsetZ: number, csgObjs: CSG[]) {\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n // { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n const mesh: Mesh = new Mesh(this.roofInfo.geometry, MaterialManager.Instance().ROOF);\n\n let scaleZ = (UI.span / 2 + UI.overhangLeft) / this.utils.cos(UI.patiosPitch) / this.roofInfo.length;\n const offsetY = 0;\n let offsetX = - scaleZ * this.roofInfo.length;\n\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setX(scaleZ);\n mesh.userData = { \n category: GEOMETRY_CATEGORY.PATIOS, \n type: GEOMETRY_TYPE.ROOF_PANEL, \n views: views, \n length: scaleZ,\n dir: UI.panelDirection === PANEL_DIRECTION.LEFT_TO_RIGHT ? \"L-R\" : \"R-L\"\n };\n\n let cutoutCondition = this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue != BUILDING_SIDE.NONE && this.APP.sldExistingLength2.currentValue > 0;\n\n if (cutoutCondition) {\n\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n //cho no cung he toa do\n mesh.position.set(offsetX + this.MANAGER.patiosGroup.position.x, offsetY, offsetZ + this.roofGroupRight.position.z);\n mesh.updateMatrix();\n\n let meshResult = mesh.clone();\n\n if (cutoutCondition) {\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n }\n }\n \n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix)); //=> tra ve goc toa do\n meshResult.applyMatrix4(matrixBefore);\n this.roofGroupLeft.add(meshResult);\n }\n else {\n this.roofGroupLeft.add(mesh);\n }\n }\n private addBargeCappingRight() {\n let mesh: Mesh;\n let extraWallWidth = this.APP.existingWallManager.geo_existingWallW1.width + EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n let offsetXL2 = 0;\n\n let offsetXR2 = 0;\n\n let offsetZL = this.totalBaySize + UI.overhangFront;\n let offsetZR = - UI.overhangBack;\n\n let offsetY = 0;\n let bargeLeftLength = this.roofLength;\n let bargeRightLength = this.roofLength;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n let scaleZLeft = this.utils.getHypotenuseByCos(bargeLeftLength, this.APP.sltRoofPitch.currentValue) / this.bargeLeftInfo.length;\n let scaleZRight = this.utils.getHypotenuseByCos(bargeRightLength, this.APP.sltRoofPitch.currentValue) / this.bargeLeftInfo.length;\n\n let fitScale = this.bargeLeftInfo.height * this.utils.tan(UI.patiosPitch) / this.bargeLeftInfo.length;\n\n //left\n mesh = new Mesh(this.bargeLeftInfo.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXL2 - fitScale * this.bargeLeftInfo.length, offsetY, offsetZL);\n mesh.scale.setX(scaleZLeft + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupRight.add(mesh);\n\n //right\n mesh = new Mesh(this.bargeRightInfo.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXR2 - fitScale * this.bargeRightInfo.length, offsetY, offsetZR);\n mesh.scale.setX(scaleZRight + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupRight.add(mesh);\n }\n private addBargeCappingLeft() {\n let mesh: Mesh;\n\n let extraWallWidth = this.APP.existingWallManager.geo_existingWallW1.width + EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n\n let offsetXB = -this.totalBaySize / 2 - this.APP.sldLeftOverhang.currentValue;\n let offsetXL1 = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue) + this.APP.sldExistingLength2.currentValue - extraWallWidth;\n let offsetXL2 = 0;\n\n let offsetXR1 = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue - this.APP.sldExistingLength2.currentValue + extraWallWidth;\n let offsetXR2 = 0;\n\n let offsetZL = this.totalBaySize + UI.overhangFront;\n let offsetZR = - UI.overhangBack;\n\n let bargeBackLength = this.roofWidth;\n let scaleCutoutVer = this.utils.getHypotenuseByCos(this.APP.sldExistingWidth1.currentValue + this.bargeLeftInfo.width, this.APP.sltRoofPitch.currentValue) / this.bargeLeftInfo.length;\n\n let offsetY = 0;\n let bargeLeftLength = UI.span / 2 + UI.overhangLeft;\n let bargeRightLength = UI.span / 2 + UI.overhangLeft;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n let scaleZLeft = this.utils.getHypotenuseByCos(bargeLeftLength, this.APP.sltRoofPitch.currentValue) / this.bargeLeftInfo.length;\n let scaleZRight = this.utils.getHypotenuseByCos(bargeRightLength, this.APP.sltRoofPitch.currentValue) / this.bargeLeftInfo.length;\n\n let fitScale = this.bargeLeftInfo.height * this.utils.tan(UI.patiosPitch) / this.bargeLeftInfo.length;\n\n //left\n mesh = new Mesh(this.bargeLeftInfo.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXL2 - scaleZLeft * this.bargeLeftInfo.length, offsetY, offsetZL);\n mesh.scale.setX(scaleZLeft + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupLeft.add(mesh);\n\n //right\n mesh = new Mesh(this.bargeRightInfo.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXR2 - scaleZRight * this.bargeRightInfo.length, offsetY, offsetZR);\n mesh.scale.setX(scaleZRight + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupLeft.add(mesh);\n }\n public addGutterRight() {\n let offsetXL = (UI.span / 2 + UI.overhangRight - CONST.GUTTER_ROOF_OFFSET_Z) / this.utils.cos(UI.patiosPitch);\n let offsetY = 0;\n let offsetZ = this.totalBaySize + UI.overhangFront;\n\n let gutterLength = this.roofWidth;\n let exLength = 300\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n let gutterGroup = this.utils.createGutterGroup(this.gutterInfo, this.geo_gutterCap,\n gutterLength, new Vector3(offsetXL, offsetY, offsetZ), new Vector3(0, Math.PI / 2, 0),\n views, 1, true, true);\n gutterGroup.rotateX(-this.utils.degreesToRadians(UI.patiosPitch))\n this.roofGroupRight.add(gutterGroup); \n }\n public addGutterLeft() {\n let offsetXL = (UI.span / 2 + UI.overhangLeft - CONST.GUTTER_ROOF_OFFSET_Z) / this.utils.cos(UI.patiosPitch);\n let offsetY = 0;\n let offsetZ = - UI.overhangBack;\n\n let gutterLength = this.roofWidth;\n let exLength = 300\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n let gutterGroup = this.utils.createGutterGroup(this.gutterInfo, this.geo_gutterCap,\n gutterLength, new Vector3(-offsetXL, offsetY, offsetZ), new Vector3(0, -Math.PI / 2, 0),\n views, 1, true, true);\n gutterGroup.rotateX(-this.utils.degreesToRadians(UI.patiosPitch))\n this.roofGroupLeft.add(gutterGroup); \n }\n public addRidgeCapping(){\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.RIDGE_CAPPING));\n\n let ridgeFront = this.createRidgeCapping();\n\n const height = this.getRoofOffsetY() + \n this.roofInfo.height / this.utils.cos(this.APP.sltRoofPitch.currentValue);\n \n let offsetX = 0\n \n const ridgeLength = this.totalBaySize + UI.overhangBack + UI.overhangFront;\n ridgeFront.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.RIDGE_CAPPING, length: ridgeLength, views: [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }]};\n ridgeFront.scale.setZ(ridgeLength / this.ridgeGeo.length);\n ridgeFront.position.set( offsetX, height, this.totalBaySize / 2 + (UI.overhangFront - UI.overhangBack) / 2 + this.geoBraket_2.height / 4 - UI.existingWidth1 / 2 + UI.eaveWidth);\n this.scene.add(ridgeFront)\n }\n public createRidgeCapping(){\n let leftCap = new Mesh(this.ridgeGeo.geometry, MaterialManager.Instance().RIDGE_CAPPING);\n let rightCap = new Mesh(this.ridgeGeo.geometry, MaterialManager.Instance().RIDGE_CAPPING);\n\n rightCap.rotateY(Math.PI)\n\n leftCap.rotateZ(this.utils.degreesToRadians(UI.patiosPitch))\n rightCap.rotateZ(this.utils.degreesToRadians(UI.patiosPitch))\n\n leftCap.userData = {views: [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }]}\n rightCap.userData = {views: [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }]}\n\n return new Group().add(leftCap, rightCap)\n }\n\n public getRoofOffsetY() {\n return UI.existingWallHeight\n + +UI.upstandBraketType\n + this.geometryManager.getBeam().height\n + this.utils.tan(UI.patiosPitch) * (UI.span / 2);\n }\n}\n\n","import {\n BUILDING_SIDE,\n EXISTING_BUILDING_CONFIG as CONST,\n CUTOUT_ENABLE,\n EXISTING_BUILDING_CONFIG,\n FIT_FLYOVER_BRAKET_ON_ROOF,\n} from \"src/app/app.constants\";\nimport {\n Box3,\n BoxBufferGeometry,\n BoxHelper,\n BufferGeometry,\n Geometry,\n Group,\n LineSegments,\n Material,\n Matrix4,\n Mesh,\n Plane,\n Vector3,\n} from \"three\";\nimport { PatiosGableFBFlyOverManager } from \".\";\nimport { GEOMETRY_CATEGORY, GEOMETRY_TYPE, INIT } from \"src/app/app.config\";\nimport { HomeComponent as AppComponent } from \"../../containers/home/home.component\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport {\n GeometryInfo,\n LineType,\n Print2DView,\n Printing2DGeometry,\n Printing2DLine,\n ViewType,\n} from \"src/app/core/models\";\nimport { UI } from \"../ui\";\nimport { Util, getRafterBeamEndCapCode } from \"../utils\";\nimport _ from \"lodash\";\n\nexport class ColumnAndBeamManager {\n private scene: Group;\n private APP: AppComponent;\n private MANAGER: PatiosGableFBFlyOverManager;\n private material: Material;\n //private beamMaterial: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private geo_RafterBeam: GeometryInfo;\n private geo_rafterBeamEndCap: GeometryInfo;\n\n private geo_superiorPost: GeometryInfo;\n private geo_centerSuperiorPost: GeometryInfo;\n public geo_superiorBeam: GeometryInfo;\n private geo_beamRakecutLeft: GeometryInfo;\n private geo_beamRakecutRight: GeometryInfo;\n private geo_beamStepRakecutLeft: GeometryInfo;\n private geo_beamStepRakecutRight: GeometryInfo;\n private geo_beamEndCap: GeometryInfo;\n public geo_bracket: GeometryInfo;\n private geo_groundBase: GeometryInfo;\n private geo_downPipe: GeometryInfo;\n private geo_downPipeL: GeometryInfo;\n private downpipeGroupRight: Group;\n private downpipeGroupLeft: Group;\n private downpipeStepRakeCutGroupLeft: Group;\n private downpipeStepRakeCutGroupRight: Group;\n private eventHandleId: any;\n private objectSizeChangedHandle: any;\n private totalBaySize: number;\n private extraOffsetZ: number;\n\n private geoBeamJoint: GeometryInfo;\n\n private frontPostHeight: number;\n //private extraBracketHeight = 250;\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n\n private deferHandle;\n private deferTimeout = CONST.CUTOUT_DEFFER_TIME_OUT;\n\n public numberOfBracketsBack = INIT.DEFAULT_BRACKET_NUMBER;\n public numberOfBracketCutout = INIT.DEFAULT_BRACKET_CUTOUT_NUMBER;\n public numberOfBracketsSide = INIT.DEFAULT_BRACKET_NUMBER;\n private cutoutExistingBothLength: number;\n private beamLeftCutSizeInfo: any;\n private beamRightCutSizeInfo: any;\n\n constructor(app: AppComponent, flyOverManager: PatiosGableFBFlyOverManager) {\n this.APP = app;\n this.MANAGER = flyOverManager;\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n\n this.scene = flyOverManager.patiosGroup;\n this.material = MaterialManager.Instance().DEFAULT.clone();\n //this.beamMaterial = MaterialManager.Instance().DEFAULT.clone();\n\n this.registerEvent();\n }\n\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n let bracketHeight =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height / 2;\n let bracketWidth = this.geometryManager.FLY_OVER_BRACKET.S65x3.width;\n\n this.geo_bracket = new GeometryInfo();\n this.geo_bracket.geometry =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.geometry\n .clone()\n .rotateX(Math.PI / 2)\n .translate(bracketWidth / 2, bracketHeight, bracketWidth / 2);\n this.geo_bracket.width =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.width;\n this.geo_bracket.length =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.length;\n this.geo_bracket.height =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n this.geo_superiorBeam = this.geometryManager.getBeam();\n this.geo_superiorBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_superiorBeam.length / 2,\n this.geo_superiorBeam.height / 2,\n this.geo_superiorBeam.width / 2\n );\n\n this.geoBeamJoint = this.geometryManager.getBeamJoint();\n this.geoBeamJoint.geometry.translate(0, this.geoBeamJoint.height, 0);\n\n this.geo_beamRakecutLeft = this.geometryManager.getBeam();\n this.geo_beamRakecutLeft.geometry.translate(\n this.geo_beamRakecutLeft.width / 2,\n this.geo_beamRakecutLeft.height / 2,\n -this.geo_beamRakecutLeft.length / 2\n );\n\n this.geo_beamRakecutRight = this.geometryManager.getBeam();\n this.geo_beamRakecutRight.geometry.translate(\n -this.geo_beamRakecutRight.width / 2,\n this.geo_beamRakecutRight.height / 2,\n -this.geo_beamRakecutRight.length / 2\n );\n\n this.geo_beamStepRakecutLeft = this.geometryManager.getBeam();\n this.geo_beamStepRakecutLeft.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_beamStepRakecutLeft.length / 2,\n this.geo_beamStepRakecutLeft.height / 2,\n -this.geo_beamStepRakecutLeft.width / 2\n );\n\n this.geo_beamStepRakecutRight = this.geometryManager.getBeam();\n this.geo_beamStepRakecutRight.geometry\n .rotateY(Math.PI / 2)\n .translate(\n -this.geo_beamStepRakecutRight.length / 2,\n this.geo_beamStepRakecutRight.height / 2,\n -this.geo_beamStepRakecutRight.width / 2\n );\n\n this.geo_beamEndCap = this.geometryManager.getBeamEndCap();\n this.geo_beamEndCap.geometry.translate(\n 0,\n this.geo_beamEndCap.height / 2,\n 0\n );\n\n this.geo_superiorPost = this.geometryManager.getPost();\n this.geo_superiorPost.geometry\n .rotateX(Math.PI / 2)\n .translate(\n this.geo_superiorPost.width / 2,\n this.geo_superiorPost.height / 2,\n this.geo_superiorPost.width / 2\n );\n\n this.geo_centerSuperiorPost = this.geometryManager.getCenterPost();\n this.geo_centerSuperiorPost.geometry\n .rotateX(Math.PI / 2)\n .translate(\n this.geo_centerSuperiorPost.width / 2,\n this.geo_centerSuperiorPost.height / 2,\n this.geo_centerSuperiorPost.width / 2\n );\n\n this.geo_RafterBeam = this.geometryManager.getRafterBeam();\n this.geo_RafterBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_RafterBeam.length / 2,\n -this.geo_RafterBeam.height / 2,\n this.geo_RafterBeam.width / 2\n );\n\n this.geo_rafterBeamEndCap = this.geometryManager.getRafterBeamEndCap();\n this.geo_rafterBeamEndCap.geometry.translate(\n 0,\n -this.geo_rafterBeamEndCap.height / 2,\n this.geo_rafterBeamEndCap.length / 2\n );\n\n this.geo_groundBase = new GeometryInfo();\n this.geo_groundBase.width = 1000;\n this.geo_groundBase.height = 1;\n this.geo_groundBase.length = 1000;\n this.geo_groundBase.geometry = new BoxBufferGeometry(\n this.geo_groundBase.width,\n this.geo_groundBase.height,\n this.geo_groundBase.length\n );\n this.geo_groundBase.geometry.translate(\n 0,\n 0,\n this.geo_groundBase.length / 2\n );\n\n this.geo_downPipe = this.geometryManager.getDownPipe();\n this.geo_downPipeL = this.geometryManager.getDownPipeL();\n\n this.scene.remove(\n ...this.scene.children.filter(\n (c) => c.userData.type == GEOMETRY_TYPE.DOWNPIPE\n )\n );\n\n this.downpipeGroupRight = new Group();\n this.downpipeGroupRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.downpipeGroupRight.rotateY(Math.PI / 2);\n this.scene.add(this.downpipeGroupRight);\n\n this.downpipeGroupLeft = new Group();\n this.downpipeGroupLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.downpipeGroupLeft.rotateY(-Math.PI / 2);\n this.scene.add(this.downpipeGroupLeft);\n this.downpipeStepRakeCutGroupLeft = new Group();\n this.downpipeStepRakeCutGroupLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeStepRakeCutGroupLeft);\n\n this.downpipeStepRakeCutGroupRight = new Group();\n this.downpipeStepRakeCutGroupRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeStepRakeCutGroupRight);\n resolve();\n });\n }\n\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SUPERIOR_CENTER_POST\n )\n );\n this.scene.remove(\n ...this.scene.children.filter((x) => x.userData.type == \"BOXHELPER\")\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.GROUND_BASE\n )\n );\n this.APP.scene.remove(\n ...this.APP.scene.children.filter(\n (o) =>\n o.userData.type == \"OUTLINE\" || o.userData.type == \"COLUMN_OUTLINE\"\n )\n );\n\n this.beamLeftCutSizeInfo = this.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.LEFT\n );\n this.beamRightCutSizeInfo = this.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.RIGHT\n );\n this.downpipeGroupRight.children = [];\n this.downpipeGroupLeft.children = [];\n this.downpipeStepRakeCutGroupLeft.children = [];\n this.downpipeStepRakeCutGroupRight.children = [];\n\n this.extraOffsetZ =\n this.APP.existingWallManager.geo_existingWallL1.width +\n this.APP.eaveManager.backOverhang;\n this.totalBaySize = this.APP.dialogEditBay.totalBaySize;\n this.cutoutExistingBothLength =\n (this.totalBaySize - this.APP.sldExistingLength.currentValue) / 2;\n\n this.addCenterSuperiorBeam();\n this.addGround();\n\n let offsetZ = 0;\n let first = true;\n let last = false;\n\n this.addHorSuperiorBeam(-UI.span / 2, {\n left: true,\n first: true,\n last: false,\n });\n this.addHorSuperiorBeam(UI.span / 2 - this.geo_superiorBeam.width, {\n right: true,\n first: false,\n last: true,\n });\n\n for (let i = 0; i <= this.APP.dialogEditBay.listBay.length; i++) {\n if (i == this.APP.dialogEditBay.listBay.length) {\n last = true;\n }\n\n this.addSuperiorBeam(offsetZ, {\n back: i == 0,\n center: !(i == this.APP.dialogEditBay.listBay.length) && !(i == 0),\n front: i == this.APP.dialogEditBay.listBay.length,\n });\n\n this.addCenterPost(offsetZ, {\n center: !(i == this.APP.dialogEditBay.listBay.length) && !(i == 0),\n first: i == 0,\n last: i == this.APP.dialogEditBay.listBay.length,\n });\n\n let fitBeam = 0;\n if (i > 0 && i < this.APP.dialogEditBay.listBay.length) {\n fitBeam = this.geo_RafterBeam.width / 2;\n } else if (i == this.APP.dialogEditBay.listBay.length) {\n fitBeam = this.geo_RafterBeam.width;\n }\n\n this.addRafterSuperiorBeam(\n offsetZ - fitBeam - UI.existingWidth1 / 2 - this.extraOffsetZ,\n {\n front: i == this.APP.dialogEditBay.listBay.length,\n right: true,\n first,\n last,\n }\n );\n this.addRafterSuperiorBeam(\n offsetZ - fitBeam - UI.existingWidth1 / 2 - this.extraOffsetZ,\n { back: i == 0, left: true, first, last }\n );\n\n if (i < this.APP.dialogEditBay.listBay.length) {\n let b = this.APP.dialogEditBay.listBay[i];\n offsetZ += b.value;\n }\n first = false;\n }\n first = true;\n last = false;\n\n this.addBraketOrBeamSideRoof();\n\n this.addPostOrBracketBack();\n this.addPostOrBracketBackCutout();\n\n this.addDownPipeRight();\n this.addDownPipeLeft();\n this.showBeamOutline();\n this.updateUI();\n resolve();\n });\n }\n public showBeamOutline() {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.BEAM_OUTLINE\n )\n );\n\n if (!UI.beamLayoutShow) return;\n\n const objs = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n const meshes = [];\n objs.forEach((el) => {\n if (el.type == \"Group\") {\n meshes.push(\n ...el.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n }\n });\n\n for (let o of meshes) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n o as Mesh,\n 10\n );\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n\n var line = new LineSegments(\n outlineGeo,\n MaterialManager.Instance().BEAM_OUTLINE\n );\n line.userData = { type: GEOMETRY_TYPE.BEAM_OUTLINE };\n this.APP.scene.add(line);\n }\n }\n private totalHeightFromEaveHeightToTopOfExistingRoof() {\n const height =\n this.geometryManager.EAVE.EAVE.height +\n UI.fasciaDepth +\n UI.eaveWidth * this.utils.tan(UI.existingRoofPitch) +\n this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.height /\n this.utils.cos(UI.existingRoofPitch);\n\n return height;\n }\n private totalHeightFromEaveHeightToTopOfFlyoverBraket() {\n const height =\n this.totalHeightFromEaveHeightToTopOfExistingRoof() +\n UI.braketHeight -\n FIT_FLYOVER_BRAKET_ON_ROOF;\n\n return height;\n }\n public addBraketOrBeamSideRoof() {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET &&\n !x.userData?.position?.back\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.SUPERIOR_POST &&\n !x.userData?.position?.back\n )\n );\n\n // LEFT SIDE\n let numOfBrakets = this.numberOfBracketsSide;\n let first = true;\n let last = false;\n\n let offsetZ = 0;\n for (let i = 0; i <= UI.listBay.length; i++) {\n if (i == UI.listBay.length) {\n last = true;\n }\n if (\n i !== 0 &&\n (offsetZ - 2 * this.geo_superiorPost.width > UI.existingWidth1 ||\n (UI.existingType != BUILDING_SIDE.LEFT &&\n UI.existingType != BUILDING_SIDE.BOTH))\n ) {\n this.addPostOrBracket(offsetZ, {\n back: i == 0,\n center: !(i == UI.listBay.length) && !(i == 0),\n front: i == UI.listBay.length,\n first: i == 0,\n last: i == UI.listBay.length,\n left: true,\n right: false,\n });\n }\n\n if (i < UI.listBay.length) {\n offsetZ += UI.listBay[i].value;\n }\n first = false;\n }\n if (\n UI.existingType == BUILDING_SIDE.LEFT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n offsetZ = 0;\n numOfBrakets = this.numberOfBracketsSide;\n let distance =\n (UI.existingWidth1 > UI.totalBayLength\n ? UI.totalBayLength\n : UI.existingWidth1) / numOfBrakets;\n for (let i = 0; i <= numOfBrakets; i++) {\n if (i == numOfBrakets) {\n last = true;\n }\n if (i !== 0) {\n this.addPostOrBracket(offsetZ, {\n back: i == 0,\n center: !(i == numOfBrakets) && !(i == 0),\n front: i == numOfBrakets,\n first: i == 0,\n last: i == numOfBrakets,\n left: true,\n right: false,\n });\n }\n\n offsetZ += distance;\n first = false;\n }\n }\n\n //RIGHT SIDE\n offsetZ = 0;\n for (let i = 0; i <= UI.listBay.length; i++) {\n if (i == UI.listBay.length) {\n last = true;\n }\n if (\n i !== 0 &&\n (offsetZ - 2 * this.geo_superiorPost.width > UI.existingWidth1 ||\n (UI.existingType != BUILDING_SIDE.RIGHT &&\n UI.existingType != BUILDING_SIDE.BOTH))\n ) {\n this.addPostOrBracket(offsetZ, {\n back: i == 0,\n center: !(i == UI.listBay.length) && !(i == 0),\n front: i == UI.listBay.length,\n first: i == 0,\n last: i == UI.listBay.length,\n left: false,\n right: true,\n });\n }\n\n if (i < UI.listBay.length) {\n offsetZ += UI.listBay[i].value;\n }\n first = false;\n }\n if (\n UI.existingType == BUILDING_SIDE.RIGHT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n offsetZ = 0;\n numOfBrakets = this.numberOfBracketsSide;\n let distance =\n (UI.existingWidth1 > UI.totalBayLength\n ? UI.totalBayLength\n : UI.existingWidth1) / numOfBrakets;\n for (let i = 0; i <= numOfBrakets; i++) {\n if (i == numOfBrakets) {\n last = true;\n }\n if (i !== 0) {\n this.addPostOrBracket(offsetZ, {\n back: i == 0,\n center: !(i == numOfBrakets) && !(i == 0),\n front: i == numOfBrakets,\n first: i == 0,\n last: i == numOfBrakets,\n left: false,\n right: true,\n });\n }\n\n offsetZ += distance;\n first = false;\n }\n }\n }\n private addDownPipeRight() {\n let offsetZ = this.totalBaySize - this.extraOffsetZ - 50;\n let offsetX = UI.span / 2 + 100;\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let offsetXExtra =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetX -= offsetXExtra;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let offsetXExtra =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetX += offsetXExtra;\n }\n\n if (this.APP.sltExistingType.currentValue != 0) {\n offsetZ -= this.APP.sldExistingWidth1.currentValue / 2;\n }\n\n let offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.overhangRight,\n UI.patiosPitch,\n -1\n ) +\n this.geo_superiorBeam.height +\n 90;\n\n if (this.APP.sltGutterType.currentValue == 0) {\n offsetY -= 80;\n } else {\n offsetY -= 60;\n }\n\n if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n let meshPipe = new Mesh(\n this.geo_downPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipe.userData = { type: GEOMETRY_TYPE.DOWNPIPE_NOZZLE };\n meshPipe.scale.setY(100 / this.geo_downPipe.height);\n meshPipe.position.set(\n 0,\n -190,\n UI.overhangRight / this.utils.cos(UI.patiosPitch) -\n this.geo_downPipe.width / 2 -\n 20\n );\n\n this.downpipeGroupRight.add(meshPipe);\n this.downpipeGroupRight.position.set(offsetX, offsetY, offsetZ);\n } else {\n this.utils.createDownpipeGroup(\n this.APP,\n this.downpipeGroupRight,\n this.geo_downPipe,\n this.geo_downPipeL,\n offsetX,\n offsetY,\n offsetZ,\n 0,\n 0,\n UI.overhangRight,\n offsetY,\n true\n );\n }\n }\n private addDownPipeLeft() {\n let offsetZ = this.totalBaySize - this.extraOffsetZ - 50;\n let offsetX = -UI.span / 2 - 100;\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let offsetXExtra =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetX -= offsetXExtra;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let offsetXExtra =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetX += offsetXExtra;\n }\n\n if (this.APP.sltExistingType.currentValue != 0) {\n offsetZ -= this.APP.sldExistingWidth1.currentValue / 2;\n }\n\n let offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.overhangLeft,\n UI.patiosPitch,\n -1\n ) +\n this.geo_superiorBeam.height +\n 90;\n\n if (this.APP.sltGutterType.currentValue == 0) {\n offsetY -= 80;\n } else {\n offsetY -= 60;\n }\n\n if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n let meshPipe = new Mesh(\n this.geo_downPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipe.userData = { type: GEOMETRY_TYPE.DOWNPIPE_NOZZLE };\n meshPipe.scale.setY(100 / this.geo_downPipe.height);\n meshPipe.position.set(\n 0,\n -190,\n UI.overhangLeft / this.utils.cos(UI.patiosPitch) -\n this.geo_downPipe.width / 2 -\n 20\n );\n\n this.downpipeGroupLeft.add(meshPipe);\n this.downpipeGroupLeft.position.set(offsetX, offsetY, offsetZ);\n } else {\n this.utils.createDownpipeGroup(\n this.APP,\n this.downpipeGroupLeft,\n this.geo_downPipe,\n this.geo_downPipeL,\n offsetX,\n offsetY,\n offsetZ,\n 0,\n 0,\n UI.overhangLeft,\n offsetY,\n true\n );\n }\n }\n private updateUI() {\n this.APP.sldMinHeight.setValue(_.round(this.frontPostHeight, 0));\n }\n public getSection(): Printing2DGeometry {\n let objs = this.scene.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_POST ||\n o.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET ||\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_CENTER_POST\n );\n\n objs = [...objs];\n\n let lsGeometries: Printing2DLine[] = [];\n\n for (let o of objs) {\n let box = new BoxHelper(o);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: outlineGeo.vertices,\n views: o.userData.views,\n });\n }\n let beamGroups = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n for (let g of beamGroups) {\n for (let c of g.children) {\n c.updateMatrix();\n\n let objCloned = c.clone();\n objCloned.applyMatrix4(new Matrix4().getInverse(c.matrix));\n\n let box = new BoxHelper(objCloned);\n\n c.updateWorldMatrix(true, true);\n\n box.geometry.applyMatrix4(c.matrixWorld);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n const planView = _.find(\n g.userData.views,\n (el) => el.viewType == ViewType.PLAN\n );\n const anotherViews = _.filter(\n g.userData.views,\n (el) => el.viewType != ViewType.PLAN\n );\n if (anotherViews.length > 0) {\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo.vertices,\n views: anotherViews,\n });\n }\n if (planView) {\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo.vertices\n .slice(0, 8)\n .filter((el, index) => [0, 1, 4, 5].includes(index)),\n views: [planView],\n });\n }\n }\n }\n\n let rafterBeamGroups = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n );\n for (let o of rafterBeamGroups) {\n o.children.forEach((el) => {\n this.utils.getOutlineRafterBeam(el as Mesh, lsGeometries);\n });\n }\n\n return { lines: lsGeometries, texts: [] };\n }\n public simplifyGeo(geo: BufferGeometry): Geometry {\n //let simplifiedGeo = new Geometry();\n let vertices = geo.getAttribute(\"position\").array;\n let lineGeo = new Geometry();\n for (let i = 0; i < vertices.length; i += 3) {\n //simplifiedGeo.vertices.push();\n\n lineGeo.vertices.push(\n new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2])\n );\n //lineGeo.vertices.push(new Vector3(vertices[i+3], vertices[i+4], vertices[i+5]));\n\n //if(i == 18) break;\n }\n\n //2-3\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n //3-7\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n //7-6\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n //6-2\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n\n //1-4\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n //4-8\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n //8-5\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n //5-1\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n\n //let line = new LineSegments(lineGeo, new LineBasicMaterial({color: new Color('red')}));\n //this.scene.add(line);\n return lineGeo;\n }\n\n private addGround() {\n let offsetZ = -(\n this.APP.sldExistingWidth1.currentValue / 2 +\n this.extraOffsetZ +\n UI.overhangBack\n );\n let width = UI.span + UI.overhangLeft + UI.overhangRight;\n let length = this.totalBaySize + UI.overhangBack + UI.overhangFront;\n\n let base = new Mesh(\n this.geo_groundBase.geometry,\n MaterialManager.Instance().BASE\n );\n base.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GROUND_BASE,\n };\n base.position.set((UI.overhangRight - UI.overhangLeft) / 2, 0, offsetZ);\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2;\n if (this.APP.sltExistingType.currentValue == 1) {\n base.position.setX(offsetX);\n }\n if (this.APP.sltExistingType.currentValue == 2) {\n base.position.setX(-offsetX);\n }\n base.scale.set(\n width / this.geo_groundBase.width,\n 1,\n length / this.geo_groundBase.length\n );\n\n this.scene.add(base);\n }\n private addPostOrBracket(offsetZ: number, userDataPos: any): void {\n let meshPost = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n meshPost.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let meshBracket = new Mesh(\n this.geo_bracket.geometry,\n MaterialManager.Instance().BRACKET\n );\n meshBracket.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let offsetY =\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfExistingRoof() -\n FIT_FLYOVER_BRAKET_ON_ROOF;\n let postOffsetZ = 0;\n let bracketOffsetZ = 0;\n let scalePostY =\n (UI.existingWallHeight +\n +this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height) /\n this.geo_superiorPost.height;\n let scaleBracketY = 1;\n\n let views: Print2DView[];\n if (userDataPos.front) {\n postOffsetZ =\n offsetZ -\n this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ;\n bracketOffsetZ =\n offsetZ -\n this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ;\n scaleBracketY = UI.braketHeight / this.geo_bracket.height;\n\n postOffsetZ -= this.geo_superiorPost.width;\n bracketOffsetZ -= this.geometryManager.FLY_OVER_BRACKET.S65x3.width;\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n if (userDataPos.back) {\n postOffsetZ =\n offsetZ -\n this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ;\n bracketOffsetZ =\n offsetZ -\n this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ;\n\n scaleBracketY = UI.braketHeight / this.geo_bracket.height;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n if (userDataPos.center) {\n postOffsetZ =\n offsetZ -\n this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ;\n bracketOffsetZ =\n offsetZ -\n this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ;\n\n postOffsetZ -= this.geo_superiorPost.width / 2;\n bracketOffsetZ -= this.geometryManager.FLY_OVER_BRACKET.S65x3.width / 2;\n\n scaleBracketY = UI.braketHeight / this.geo_bracket.height;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n meshPost.userData.views = views;\n meshBracket.userData.views = views;\n\n let offsetX = -UI.span / 2;\n if (userDataPos.right) {\n offsetX = UI.span / 2;\n }\n\n let bracketOffsetX = offsetX;\n let postOffsetX = offsetX;\n if (userDataPos.left) {\n } else if (userDataPos.right) {\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n }\n\n let exceedMoveBackLimit = false;\n\n //post can not go behind existing wall\n if (exceedMoveBackLimit) {\n return;\n }\n\n meshPost.position.set(postOffsetX, 0, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n\n meshBracket.position.set(bracketOffsetX, offsetY, bracketOffsetZ);\n meshBracket.scale.setY(scaleBracketY);\n\n let boxPost = new Box3().setFromObject(meshPost);\n // let boxPostHelper = new Box3Helper(boxPost);\n // this.APP.scene.add(boxPostHelper);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n if (isIntersect) {\n if (this.APP.sltExistingType.currentValue != 3) {\n if (meshBracket.userData.position.left) {\n meshBracket.translateX(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n );\n } else if (meshBracket.userData.position.right) {\n meshBracket.translateX(\n -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n )\n );\n }\n }\n this.scene.add(meshBracket);\n } else {\n if (this.APP.sltExistingType.currentValue == 1) {\n meshPost.translateX(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n );\n } else if (this.APP.sltExistingType.currentValue == 2) {\n meshPost.translateX(\n -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n )\n );\n }\n this.scene.add(meshPost);\n }\n }\n\n public addPostOrBracketBack() {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET &&\n x.userData?.position?.back\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.SUPERIOR_POST &&\n x.userData?.position?.back\n )\n );\n\n let first = true;\n let last = false;\n let offsetX = -UI.span / 2;\n let userDataPos = { back: true };\n\n let bracketDistance = UI.span / (this.numberOfBracketsBack - 1);\n\n for (let i = 0; i < this.numberOfBracketsBack; i++) {\n if (i == this.numberOfBracketsBack - 1) {\n last = true;\n }\n let meshPost = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n meshPost.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let meshBracket = new Mesh(\n this.geo_bracket.geometry,\n MaterialManager.Instance().BRACKET\n );\n meshBracket.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let bracketOffsetY =\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfExistingRoof() -\n FIT_FLYOVER_BRAKET_ON_ROOF;\n let postOffsetZ = 0;\n let bracketOffsetZ = 0;\n\n let scalePostY = 1;\n let scaleBracketY = 1;\n\n let views: Print2DView[];\n\n postOffsetZ =\n -this.APP.sldExistingWidth1.currentValue / 2 - this.extraOffsetZ;\n bracketOffsetZ =\n -this.APP.sldExistingWidth1.currentValue / 2 - this.extraOffsetZ;\n scalePostY =\n (this.APP.sldExistingWallHeight.currentValue +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket()) /\n this.geo_superiorPost.height;\n scaleBracketY =\n UI.braketHeight / this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n meshPost.userData.views = views;\n meshBracket.userData.views = views;\n\n let bracketOffsetX = offsetX;\n let postOffsetX = offsetX;\n\n if (first) {\n } else if (last) {\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n } else {\n bracketOffsetX -= this.geo_bracket.width / 2;\n postOffsetX -= this.geo_superiorPost.width / 2;\n }\n\n meshPost.position.set(postOffsetX, 0, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n meshBracket.position.set(bracketOffsetX, bracketOffsetY, bracketOffsetZ);\n meshBracket.scale.setY(scaleBracketY);\n\n //Check intersect eave\n let boxPost = new Box3().setFromObject(meshPost);\n boxPost.translate(this.scene.position);\n\n let isIntersect = false;\n //let isCutoutInterset = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n }\n }\n\n if (isIntersect) {\n if (this.APP.sltExistingType.currentValue == 1) {\n meshBracket.translateX(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n );\n } else if (this.APP.sltExistingType.currentValue == 2) {\n meshBracket.translateX(\n -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n )\n );\n }\n\n this.scene.add(meshBracket);\n } else {\n if (this.APP.sltExistingType.currentValue == 1) {\n meshPost.translateX(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n );\n } else if (this.APP.sltExistingType.currentValue == 2) {\n meshPost.translateX(\n -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n )\n );\n }\n this.scene.add(meshPost);\n }\n\n if (i < this.numberOfBracketsBack) {\n offsetX += bracketDistance;\n }\n first = false;\n }\n }\n public addPostOrBracketBackCutout(): void {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET &&\n x.userData?.position?.back &&\n x.userData?.position?.cutout\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.SUPERIOR_POST &&\n x.userData?.position?.back &&\n x.userData?.position?.cutout\n )\n );\n\n if (\n this.APP.sltCutOut.currentValue != CUTOUT_ENABLE.YES ||\n !this.MANAGER.cutoutCondition\n )\n return;\n\n let first = true;\n let last = false;\n let offsetXL = -UI.span / 2;\n let offsetXR = UI.span / 2;\n\n let userDataPos = { back: true, cutout: true };\n\n let extraWalWidth =\n this.APP.existingWallManager.geo_existingWallL1.width +\n CONST.EAVE_OFFSET_BACK;\n let bracketDistance =\n (this.APP.sldExistingLength2.currentValue - extraWalWidth) /\n (this.numberOfBracketCutout - 1);\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n bracketDistance =\n this.APP.sldExistingLength2.currentValue /\n (this.numberOfBracketCutout - 1);\n }\n\n if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n for (let i = 0; i < this.numberOfBracketCutout; i++) {\n if (i == this.numberOfBracketCutout - 1) {\n last = true;\n }\n\n let meshPost = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n meshPost.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let meshBracket = new Mesh(\n this.geo_bracket.geometry,\n MaterialManager.Instance().BRACKET\n );\n meshBracket.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n //let offsetX = 0;\n let offsetY = this.APP.sldExistingWallHeight.currentValue;\n\n let postOffsetZ =\n -this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ +\n this.APP.sldExistingWidth1.currentValue;\n let bracketOffsetZ =\n -this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ +\n this.APP.sldExistingWidth1.currentValue;\n\n let views: Print2DView[];\n\n let scalePostY =\n this.utils.getHeightByAngle(\n this.APP.sldExistingWallHeight.currentValue +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.existingWidth1 > (UI.span + UI.multiSpan) / 2\n ? Math.abs(UI.span + UI.multiSpan - UI.existingWidth1)\n : UI.existingWidth1,\n UI.patiosPitch,\n 1\n ) / this.geo_superiorPost.height;\n\n let scaleBracketY =\n this.utils.getHeightByAngle(\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.existingWidth1 > (UI.span + UI.multiSpan) / 2\n ? Math.abs(UI.span + UI.multiSpan - UI.existingWidth1)\n : UI.existingWidth1,\n UI.patiosPitch,\n 1\n ) / this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n meshPost.userData.views = views;\n meshBracket.userData.views = views;\n\n let bracketOffsetX = offsetXL;\n let postOffsetX = offsetXL;\n if (first) {\n } else if (last) {\n } else {\n bracketOffsetX -= this.geo_bracket.width / 2;\n postOffsetX -= this.geo_superiorPost.width / 2;\n }\n\n meshPost.position.set(postOffsetX, 0, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n\n meshBracket.position.set(bracketOffsetX, offsetY, bracketOffsetZ);\n meshBracket.scale.setY(scaleBracketY);\n\n //Check intersect eave\n let boxPost = new Box3().setFromObject(meshPost);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n if (isIntersect) {\n if (this.APP.sltExistingType.currentValue == 1) {\n meshBracket.translateX(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n );\n }\n this.scene.add(meshBracket);\n } else {\n this.scene.add(meshPost);\n }\n\n if (i < this.numberOfBracketCutout) {\n offsetXL += bracketDistance;\n }\n first = false;\n }\n }\n\n if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n first = true;\n\n for (let i = 0; i < this.numberOfBracketCutout; i++) {\n if (i == this.numberOfBracketCutout - 1) {\n last = true;\n }\n\n let meshPost = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n meshPost.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let meshBracket = new Mesh(\n this.geo_bracket.geometry,\n MaterialManager.Instance().BRACKET\n );\n meshBracket.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let offsetY = this.APP.sldExistingWallHeight.currentValue;\n\n let postOffsetZ =\n -this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ +\n this.APP.sldExistingWidth1.currentValue;\n let bracketOffsetZ =\n -this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ +\n this.APP.sldExistingWidth1.currentValue;\n\n let views: Print2DView[];\n\n let scalePostY =\n this.utils.getHeightByAngle(\n this.APP.sldExistingWallHeight.currentValue +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.existingWidth1 > (UI.span + UI.multiSpan) / 2\n ? Math.abs(UI.span + UI.multiSpan - UI.existingWidth1)\n : UI.existingWidth1,\n UI.patiosPitch,\n 1\n ) / this.geo_superiorPost.height;\n\n let scaleBracketY =\n this.utils.getHeightByAngle(\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.existingWidth1 > (UI.span + UI.multiSpan) / 2\n ? Math.abs(UI.span + UI.multiSpan - UI.existingWidth1)\n : UI.existingWidth1,\n UI.patiosPitch,\n 1\n ) / this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n views = [\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n meshPost.userData.views = views;\n meshBracket.userData.views = views;\n\n let bracketOffsetX = offsetXR;\n let postOffsetX = offsetXR;\n if (first) {\n if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n }\n } else if (last) {\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n } else {\n bracketOffsetX -= this.geo_bracket.width / 2;\n postOffsetX -= this.geo_superiorPost.width / 2;\n }\n\n meshPost.position.set(postOffsetX, 0, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n\n meshBracket.position.set(bracketOffsetX, offsetY, bracketOffsetZ);\n meshBracket.scale.setY(scaleBracketY);\n\n //Check intersect eave\n let boxPost = new Box3().setFromObject(meshPost);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n if (isIntersect) {\n if (this.APP.sltExistingType.currentValue == 2) {\n meshBracket.translateX(\n -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n )\n );\n }\n\n this.scene.add(meshBracket);\n } else {\n this.scene.add(meshPost);\n }\n\n if (i < this.numberOfBracketCutout) {\n offsetXR -= bracketDistance;\n }\n first = false;\n }\n }\n }\n\n public addCenterSuperiorBeam() {\n let offsetXL = -(this.totalBaySize / 2 + UI.overhangFront);\n let offsetXR = this.totalBaySize / 2 + UI.overhangBack;\n let offsetZ = 0;\n let offsetY = 0;\n\n let beamLength = this.totalBaySize + UI.overhangBack + UI.overhangFront;\n\n let views: Print2DView[];\n\n offsetY =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n (UI.span / 2 - this.geo_superiorBeam.width / 2) *\n this.utils.tan(UI.patiosPitch);\n offsetZ =\n this.totalBaySize +\n UI.overhangFront -\n UI.existingWidth1 / 2 -\n this.extraOffsetZ;\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n const fixX = this.getContainerOffsetXToFitBraketToExistingWall();\n this.cutStandardBeamByCutBeamWithinBayControl(\n this.geo_superiorBeam,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(fixX - this.geo_superiorBeam.width / 2, offsetY, offsetZ),\n new Vector3(0, Math.PI / 2, 0),\n views,\n 1,\n { center: true },\n this.geo_beamEndCap.width / 2,\n \"x\",\n \"RB\",\n this.geoBeamJoint\n );\n }\n\n private addCenterPost(offsetZ, userDataPos) {\n let meshPost = new Mesh(\n this.geo_centerSuperiorPost.geometry,\n MaterialManager.Instance().BEAM\n );\n meshPost.userData = {\n ...userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_CENTER_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let scalePostY = 1;\n\n let views: Print2DView[];\n\n this.frontPostHeight =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket();\n\n scalePostY =\n ((UI.span / 2 - this.geo_superiorBeam.width / 2) *\n this.utils.tan(UI.patiosPitch) -\n this.geo_superiorBeam.height) /\n this.geo_centerSuperiorPost.height;\n\n if (userDataPos.last) {\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else {\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n let postOffsetX = -this.geo_centerSuperiorPost.width / 2;\n\n let postOffsetZ =\n offsetZ -\n this.geo_centerSuperiorPost.width / 2 -\n UI.existingWidth1 / 2 -\n this.extraOffsetZ;\n if (userDataPos.first) {\n postOffsetZ = offsetZ - UI.existingWidth1 / 2 - this.extraOffsetZ;\n } else if (userDataPos.last) {\n postOffsetZ =\n offsetZ -\n this.geo_centerSuperiorPost.width -\n UI.existingWidth1 / 2 -\n this.extraOffsetZ;\n }\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n postOffsetX -= offsetX;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n postOffsetX += offsetX;\n }\n\n meshPost.userData.views = views;\n meshPost.position.set(\n postOffsetX,\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height,\n postOffsetZ\n );\n meshPost.scale.setY(scalePostY);\n\n this.scene.add(meshPost);\n }\n\n public addHorSuperiorBeam(offsetX, userDataPos: any) {\n let offsetXL = 0;\n let offsetXR = this.totalBaySize + UI.overhangBack + UI.overhangFront;\n let offsetZ = 0;\n let offsetY = 0;\n\n let beamLength = this.totalBaySize + UI.overhangBack + UI.overhangFront;\n\n let views: Print2DView[];\n\n offsetY =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket();\n offsetZ =\n this.totalBaySize +\n UI.overhangFront -\n UI.existingWidth1 / 2 -\n this.extraOffsetZ;\n\n if (userDataPos.left) {\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else {\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n const fixX = this.getContainerOffsetXToFitBraketToExistingWall();\n this.cutStandardBeamByCutBeamWithinBayControl(\n this.geo_superiorBeam,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetX + fixX, offsetY, offsetZ),\n new Vector3(0, Math.PI / 2, 0),\n views,\n 1,\n userDataPos,\n this.geo_beamEndCap.width / 2,\n \"x\",\n \"EB\",\n this.geoBeamJoint\n );\n }\n private getContainerOffsetXToFitBraketToExistingWall() {\n let fitX = 0;\n if (UI.existingType == BUILDING_SIDE.RIGHT) {\n fitX = -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0)\n );\n }\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n fitX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n }\n\n return fitX;\n }\n private cutStandardBeamByCutBeamWithinBayControl(\n beamGeo: GeometryInfo,\n beamCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n userDataPos: any,\n beamGeoTranslationZ: number,\n beamDirection: string,\n beamName = \"\",\n jointGeo: GeometryInfo\n ) {\n // Map list cut beam here\n const beamStartZ = pos.z - length;\n const beamEndZ = pos.z;\n\n let endOfBayZ = -UI.existingWidth1 / 2 - this.extraOffsetZ;\n let startCutBeamZ = beamStartZ;\n let endCutBeamZ = beamStartZ;\n\n const beams = this.utils.getListSeperateBeamsByBaysForFbGable(\n endOfBayZ,\n beamStartZ,\n beamEndZ,\n endCutBeamZ,\n startCutBeamZ\n );\n\n for (let i = 0; i < beams.length; i++) {\n endCutBeamZ = beams[i][1];\n startCutBeamZ = beams[i][0];\n let beamGroup = this.utils.createBeamGroup2(\n beamGeo,\n beamCapGeo,\n endCutBeamZ - startCutBeamZ,\n new Vector3(pos.x, pos.y, endCutBeamZ),\n rot,\n views,\n directionOffset,\n userDataPos,\n beamGeoTranslationZ,\n beamDirection,\n UI.beamLayoutShow,\n {\n hasStartCap:\n UI.beamType == 0 &&\n (i == beams.length - 1 || (i == 0 && beams.length == 1)),\n hasEndCap: UI.beamType == 0 && i == 0,\n hasStartJoint: false,\n hasEndJoint: i !== 0,\n jointGeo: jointGeo,\n }\n );\n beamGroup.userData = {\n ...beamGroup.userData,\n name: beamName,\n };\n this.scene.add(beamGroup);\n }\n }\n public addRafterSuperiorBeam(offsetZ, userDataPos: any) {\n if (\n this.APP.sltWindClass.currentValue == 0 ||\n this.APP.sltWindClass.currentValue == 1\n ) {\n if (this.totalBaySize <= 6000 && this.APP.sldSpan.currentValue <= 7000) {\n return;\n }\n }\n if (\n this.APP.sltWindClass.currentValue == 3 ||\n this.APP.sltWindClass.currentValue == 4 ||\n this.APP.sltWindClass.currentValue == 5\n ) {\n return;\n }\n let mesh;\n\n let offsetXL = 0;\n let offsetXR =\n (UI.span / 2 - this.geo_superiorBeam.width / 2) /\n this.utils.cos(UI.patiosPitch);\n let offsetY = 0;\n\n let scaleX =\n (UI.span / 2 - this.geo_superiorBeam.width / 2) /\n this.utils.cos(UI.patiosPitch) /\n this.geo_RafterBeam.length;\n\n let views: Print2DView[];\n\n let fitZ = 0;\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n fitZ = -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0) -\n this.geo_superiorBeam.width / 2\n );\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0) -\n this.geo_superiorBeam.width / 2;\n }\n\n if (userDataPos.left) {\n let material = MaterialManager.Instance().BEAM.clone();\n\n let nBottom = new Vector3(0, 1, 0).normalize();\n let pBottom = new Vector3(\n 0,\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height,\n 0\n );\n let planeBottom = new Plane().setFromNormalAndCoplanarPoint(\n nBottom,\n pBottom\n );\n\n let beamOffsetX = 0;\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n beamOffsetX -=\n this.MANAGER.columnAndBeamManager.geo_bracket?.width / 2 || 0;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n beamOffsetX +=\n this.MANAGER.columnAndBeamManager.geo_bracket?.width / 2 || 0;\n }\n\n let nVer = new Vector3(-1, 0, 0).normalize();\n let pVer = new Vector3(\n -this.geo_superiorBeam.width / 2 +\n beamOffsetX +\n this.scene.position.x +\n fitZ,\n 0,\n 0\n );\n let planeVer = new Plane().setFromNormalAndCoplanarPoint(nVer, pVer);\n\n material.clippingPlanes = [planeBottom, planeVer];\n\n mesh = new Mesh(this.geo_RafterBeam.geometry, material);\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.right) {\n let material = MaterialManager.Instance().BEAM.clone();\n\n let nBottom = new Vector3(0, 1, 0).normalize();\n let pBottom = new Vector3(\n 0,\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height,\n 0\n );\n let planeBottom = new Plane().setFromNormalAndCoplanarPoint(\n nBottom,\n pBottom\n );\n\n let beamOffsetX = 0;\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n beamOffsetX -=\n this.MANAGER.columnAndBeamManager.geo_bracket?.width / 2 || 0;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n beamOffsetX +=\n this.MANAGER.columnAndBeamManager.geo_bracket?.width / 2 || 0;\n }\n let nVer = new Vector3(1, 0, 0).normalize();\n let pVer = new Vector3(\n this.geo_superiorBeam.width / 2 +\n beamOffsetX +\n this.scene.position.x +\n fitZ,\n 0,\n 0\n );\n let planeVer = new Plane().setFromNormalAndCoplanarPoint(nVer, pVer);\n\n material.clippingPlanes = [planeBottom, planeVer];\n\n mesh = new Mesh(this.geo_RafterBeam.geometry, material);\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM,\n position: userDataPos,\n views: views,\n };\n mesh.position.set(offsetXL, 0, 0);\n mesh.scale.setX(scaleX);\n\n let checkExec = /\\w{1}\\d{1,3}x(\\d{1,3})/.exec(this.geo_RafterBeam.name);\n let beamSize = checkExec && checkExec.length == 2 ? checkExec[1] : \"\";\n let lowerBraketName = getRafterBeamEndCapCode(\n EXISTING_BUILDING_CONFIG.RAFTER_BEAM_SIZE,\n false\n );\n let higherBraketName = getRafterBeamEndCapCode(\n EXISTING_BUILDING_CONFIG.RAFTER_BEAM_SIZE,\n true\n );\n\n let capL;\n let capR;\n if (userDataPos.left) {\n let matEndCap = MaterialManager.Instance().BEAM.clone();\n\n let heightReal =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height +\n (this.utils.tan(UI.patiosPitch) * UI.span) / 2;\n let heightPlane = heightReal * this.utils.cos(UI.patiosPitch);\n let translateZ = this.utils.sin(UI.patiosPitch) * heightPlane;\n\n let planeTop = new Plane(new Vector3(0, -1, 0));\n let matrixTranslateTop = new Matrix4().makeTranslation(\n -translateZ / 2,\n heightPlane,\n 0\n );\n let matrixRotateTop = new Matrix4().makeRotationZ(\n this.utils.degreesToRadians(UI.patiosPitch)\n );\n let matrixTotalTop = matrixTranslateTop.multiply(matrixRotateTop);\n planeTop.applyMatrix4(matrixTotalTop);\n\n let heightRealBottom =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height -\n this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n (this.utils.tan(UI.patiosPitch) * UI.span) / 2;\n let heightPlaneBottom = heightRealBottom * this.utils.cos(UI.patiosPitch);\n let translateZBottom = this.utils.sin(UI.patiosPitch) * heightPlaneBottom;\n\n let planeBottom = new Plane(new Vector3(0, 1, 0));\n let matrixTranslateBottom = new Matrix4().makeTranslation(\n -translateZBottom / 2,\n heightPlaneBottom,\n 0\n );\n let matrixRotateBottom = new Matrix4().makeRotationZ(\n this.utils.degreesToRadians(UI.patiosPitch)\n );\n let matrixTotalBottom =\n matrixTranslateBottom.multiply(matrixRotateBottom);\n planeBottom.applyMatrix4(matrixTotalBottom);\n\n let beamOffsetX = 0;\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n beamOffsetX -=\n this.MANAGER.columnAndBeamManager.geo_bracket?.width / 2 || 0;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n beamOffsetX +=\n this.MANAGER.columnAndBeamManager.geo_bracket?.width / 2 || 0;\n }\n\n planeTop.translate(\n new Vector3(beamOffsetX + this.scene.position.x + fitZ, 0, 0)\n );\n planeBottom.translate(\n new Vector3(beamOffsetX + this.scene.position.x + fitZ, 0, 0)\n );\n\n matEndCap.clippingPlanes = [planeTop, planeBottom];\n\n capL = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capL.position.set(offsetXL - 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capL.scale.setY(\n (this.geo_RafterBeam.height / this.utils.sin(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length / this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capL.rotateY(Math.PI / 2);\n capL.rotateX(-Math.PI / 2 + this.utils.degreesToRadians(UI.patiosPitch));\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: lowerBraketName,\n };\n\n capR = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capR.position.set(offsetXR + 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capR.scale.setY(\n (this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length * this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capR.rotateY(-Math.PI / 2);\n capR.rotateX(-this.utils.degreesToRadians(UI.patiosPitch));\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: higherBraketName,\n };\n } else {\n let matEndCap = MaterialManager.Instance().BEAM.clone();\n\n let heightReal =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height +\n (this.utils.tan(UI.patiosPitch) * UI.span) / 2;\n let heightPlane = heightReal * this.utils.cos(UI.patiosPitch);\n let translateZ = this.utils.sin(UI.patiosPitch) * heightPlane;\n\n let planeTop = new Plane(new Vector3(0, -1, 0));\n let matrixTranslateTop = new Matrix4().makeTranslation(\n translateZ / 2,\n heightPlane,\n 0\n );\n let matrixRotateTop = new Matrix4().makeRotationZ(\n -this.utils.degreesToRadians(UI.patiosPitch)\n ); //tao voi z pitch do\n let matrixTotalTop = matrixTranslateTop.multiply(matrixRotateTop);\n planeTop.applyMatrix4(matrixTotalTop);\n\n let heightRealBottom =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height -\n this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n (this.utils.tan(UI.patiosPitch) * UI.span) / 2;\n let heightPlaneBottom = heightRealBottom * this.utils.cos(UI.patiosPitch);\n let translateZBottom = this.utils.sin(UI.patiosPitch) * heightPlaneBottom;\n\n let planeBottom = new Plane(new Vector3(0, 1, 0));\n let matrixTranslateBottom = new Matrix4().makeTranslation(\n translateZBottom / 2,\n heightPlaneBottom,\n 0\n );\n let matrixRotateBottom = new Matrix4().makeRotationZ(\n -this.utils.degreesToRadians(UI.patiosPitch)\n ); //tao voi z pitch do\n let matrixTotalBottom =\n matrixTranslateBottom.multiply(matrixRotateBottom);\n planeBottom.applyMatrix4(matrixTotalBottom);\n\n let beamOffsetX = 0;\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n beamOffsetX -=\n this.MANAGER.columnAndBeamManager.geo_bracket?.width / 2 || 0;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n beamOffsetX +=\n this.MANAGER.columnAndBeamManager.geo_bracket?.width / 2 || 0;\n }\n\n planeTop.translate(\n new Vector3(beamOffsetX + this.scene.position.x + fitZ, 0, 0)\n );\n planeBottom.translate(\n new Vector3(beamOffsetX + this.scene.position.x + fitZ, 0, 0)\n );\n\n matEndCap.clippingPlanes = [planeTop, planeBottom];\n\n capL = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capL.position.set(offsetXL - 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capL.scale.setY(\n (this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length * this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capL.rotateY(Math.PI / 2);\n capL.rotateX(-this.utils.degreesToRadians(UI.patiosPitch));\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: higherBraketName,\n };\n\n capR = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capR.position.set(offsetXR + 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capR.scale.setY(\n (this.geo_RafterBeam.height / this.utils.sin(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length / this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capR.rotateY(-Math.PI / 2);\n capR.rotateX(-Math.PI / 2 + this.utils.degreesToRadians(UI.patiosPitch));\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: lowerBraketName,\n };\n }\n\n let offsetX = 0;\n if (userDataPos.left) {\n offsetX = -UI.span / 2;\n offsetY =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height;\n } else if (userDataPos.right) {\n offsetX = this.geo_centerSuperiorPost.width / 2;\n offsetY =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height +\n (UI.span / 2 - this.geo_superiorBeam.width / 2) *\n this.utils.tan(UI.patiosPitch);\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetX -= fitZ;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetX += fitZ;\n }\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM,\n position: userDataPos,\n views: views,\n };\n beamGroup.position.set(offsetX, offsetY, offsetZ);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n\n if (userDataPos.left) {\n beamGroup.rotateZ(this.utils.degreesToRadians(UI.patiosPitch));\n } else if (userDataPos.right) {\n beamGroup.rotateZ(-this.utils.degreesToRadians(UI.patiosPitch));\n }\n\n this.scene.add(beamGroup);\n }\n\n public addSuperiorBeam(offsetZ: number, userDataPos: any) {\n let offsetX = -UI.span / 2 + this.geo_superiorPost.width;\n if (userDataPos.back) {\n offsetX = -UI.span / 2 + this.geo_superiorBeam.width;\n }\n let offsetY = 0;\n\n let beamLength = UI.span - 2 * this.geo_superiorPost.width;\n if (userDataPos.back) {\n beamLength = UI.span - 2 * this.geo_superiorBeam.width;\n }\n if (\n offsetZ - this.geo_bracket.width - this.geo_superiorPost.width / 2 <\n UI.existingWidth1 &&\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n beamLength = UI.span - 2 * this.geo_superiorBeam.width;\n offsetX = -UI.span / 2 + this.geo_superiorBeam.width;\n }\n let extraWallWidth =\n this.APP.existingWallManager.geo_existingWallW1.width +\n CONST.EAVE_OFFSET_BACK;\n let views: Print2DView[];\n let posZ = offsetZ;\n\n if (userDataPos.front) {\n offsetY =\n this.APP.sldExistingWallHeight.currentValue +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket();\n posZ =\n offsetZ -\n this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ -\n this.geo_superiorBeam.width;\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.center) {\n offsetY =\n this.APP.sldExistingWallHeight.currentValue +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket();\n posZ =\n offsetZ -\n this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ -\n this.geo_superiorBeam.width / 2;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.back) {\n offsetY =\n this.APP.sldExistingWallHeight.currentValue +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket();\n posZ =\n offsetZ -\n (this.APP.sldExistingWidth1.currentValue / 2 + this.extraOffsetZ);\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetX -= fitZ;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetX += fitZ;\n }\n let beamGroup = this.utils.createBeamGroup(\n this.geo_superiorBeam,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetX, offsetY, posZ),\n new Vector3(),\n views,\n 1,\n userDataPos\n );\n beamGroup.userData = {\n ...beamGroup.userData,\n name: \"GB\",\n };\n this.scene.add(beamGroup);\n\n //Add one more beam cutout right\n if (userDataPos.cutout && this.APP.sltExistingType.currentValue == 3) {\n offsetX =\n UI.span / 2 -\n (UI.span - this.APP.sldExistingLength.currentValue) / 2 +\n this.APP.existingWallManager.geo_existingWallW1.width +\n CONST.EAVE_OFFSET_BACK -\n this.geo_superiorBeam.width -\n (this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2);\n let beamGroup = this.utils.createBeamGroup(\n this.geo_superiorBeam,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetX, offsetY, posZ),\n new Vector3(),\n views,\n 1,\n userDataPos\n );\n beamGroup.userData = {\n ...beamGroup.userData,\n name: \"GB\",\n };\n this.scene.add(beamGroup);\n }\n }\n public getBracketHeight(offset): number {\n let angle = UI.patiosPitch;\n return this.utils.tan(angle) * offset;\n }\n\n public destroy(): void {\n this.unregisterEvent();\n }\n\n private registerEvent(): void {\n this.eventHandleId = this.uiChangedDefer.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldExistingWallHeight,\n this.APP.sldEaveWidth,\n this.APP.sldFasciaDepth,\n\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n\n this.APP.sltExistingType,\n this.APP.dialogEditBay,\n\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldFrontOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldFlyOverBracketHeight,\n\n this.APP.sltColourBeam,\n this.APP.sltColourPost,\n this.APP.sltColourBracket,\n this.APP.sltColourFasciaBracket,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n ];\n //this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n\n this.controlsToRegisterEvent2 = [\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltColumnType,\n ];\n this.controlsToRegisterEvent2.forEach((c) =>\n c.addAction(this.objectSizeChangedHandle)\n );\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach((c) =>\n c.removeAction(this.objectSizeChangedHandle)\n );\n this.controlsToRegisterEvent2 = undefined;\n }\n private objectSizeChanged(pre: number, cur: number) {\n this.optimize().then(() => {\n this.load();\n });\n }\n uiChangedDefer(previousValue: number, currentValue: number) {\n if (this.APP.sltCutOut.currentValue == 1) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => {\n this.load();\n }, this.deferTimeout);\n } else {\n this.load();\n }\n }\n}\n","import { Scene, Mesh, Object3D, Material, Group, FontLoader, TextBufferGeometry, PlaneBufferGeometry, Vector3, BoxHelper, Box3Helper, Matrix4, Box3, Geometry, LineSegments, LineBasicMaterial, Color, BoxBufferGeometry, ArrowHelper, BufferGeometry, Line, Line3 } from \"three\";\nimport { HomeComponent as AppComponent, HomeComponent } from '../../containers/home/home.component';\nimport { Util } from '../utils';\nimport { MaterialManager } from '../material.manager';\nimport { GeometryInfo, ViewType, LineType, IBay, Printing2DGeometry, Printing2DLine, Print2DText, Printing2DGeometryType } from 'src/app/core/models';\nimport { GEOMETRY_TYPE, DIMENSION_LOCATION, DIMENSION_LABEL_TYPE } from 'src/app/app.config';\nimport { environment } from 'src/environments/environment';\nimport { PatiosGableFBFlyOverManager } from '.';\nimport { GeometryManager } from '../geometry.manager';\nimport { BUILDING_SIDE, PANEL_DIRECTION, RAKECUT_TYPE } from 'src/app/app.constants';\nimport Dimension, { AddDimensionOptions } from \"src/app-ribspan/models/Dimension\";\nimport { UI } from \"../ui\";\n\nexport class DimensionManager {\n private scene: Scene;\n private APP: AppComponent;\n private MANAGER: PatiosGableFBFlyOverManager;\n public listText: THREE.Object3D[] = [];\n private utils: Util;\n\n\n private eventHandleId: any;\n\n private material: Material;\n\n private materialManager: MaterialManager;\n\n private dimensionPatiosFrontBottom: Object3D;\n private dimensionPatiosFrontRight: Object3D;\n \n private dimensionPatiosRightBottom: Object3D;\n private dimensionPatiosRightLeft: Object3D;\n private dimensionPatiosRightRight: Object3D;\n\n private dimensionPatiosLeftBottom: Object3D;\n private dimensionPatiosLeftRight: Object3D;\n private dimensionPatiosLeftLeft: Object3D;\n\n private dimensionPatiosPlanRight: Object3D;\n private dimensionPatiosPlanBottom: Object3D;\n private dimensionPatiosPlanLeft: Object3D;\n private dimensionPlanMiddle: Object3D;\n private dimensionPlanMidleLeft: Object3D;\n private dimensionPatiosPlanLeftOverHang: Object3D;\n\n private lineCapGeo: GeometryInfo;\n private lineGeo: GeometryInfo;\n private textGeo: TextBufferGeometry;\n\n private dimensionDistance = 1500;\n private dimensionDistance2 = 500;\n private dimensionDistance3 = 300;\n\n private textDistance = 5000;\n\n private totalBaySize: number;\n private box: Box3;\n\n private font: any\n private textParameter: any;\n private isReady = false;\n\n private controlsToRegisterEvent: Array;\n private geometryManager: GeometryManager;\n\n private options : AddDimensionOptions;\n private startPos: Vector3;\n private startMatrix: Matrix4;\n private startBayLength: number;\n\n constructor(app: AppComponent, flyOverManager: PatiosGableFBFlyOverManager) {\n this.utils = new Util();\n this.materialManager = MaterialManager.Instance();\n this.APP = app;\n this.MANAGER = flyOverManager;\n this.scene = this.APP.scene;\n this.material = MaterialManager.Instance().DIMENSION_TEXT;\n this.geometryManager = GeometryManager.Instance();\n //this.registerEvent();\n }\n\n \n public optimize() : Promise{\n return new Promise((resolve, reject) => {\n this.lineGeo = this.geometryManager.getDimensionLine();\n this.lineCapGeo = this.geometryManager.getDimensionCap();\n\n resolve();\n });\n }\n public load(): Promise { \n return new Promise((resolve, reject) => {\n this.unload();\n \n var loader = new FontLoader();\n \n this.dimensionPatiosFrontBottom = new Group();\n this.dimensionPatiosFrontBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n // this.dimensionPatiosFrontBottom.rotation.set(0,Math.PI,0);\n this.dimensionPatiosFrontBottom.visible = false;\n\n this.dimensionPatiosFrontRight = new Group();\n this.dimensionPatiosFrontRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosFrontRight.rotation.set(0,0,-Math.PI/2);\n this.dimensionPatiosFrontRight.visible = false;\n \n this.dimensionPatiosRightBottom = new Group();\n this.dimensionPatiosRightBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightBottom.rotation.set(0,-Math.PI/2,0);\n this.dimensionPatiosRightBottom.visible = false;\n\n this.dimensionPatiosRightLeft = new Group();\n this.dimensionPatiosRightLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightLeft.rotation.set(0,-Math.PI/2,-Math.PI/2);\n this.dimensionPatiosRightLeft.visible = false;\n\n this.dimensionPatiosRightRight = new Group();\n this.dimensionPatiosRightRight.rotation.set(0,-Math.PI/2,-Math.PI/2);\n this.dimensionPatiosRightRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightRight.visible = false;\n \n\n this.dimensionPatiosLeftBottom = new Group();\n this.dimensionPatiosLeftBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftBottom.rotation.set(0,-Math.PI/2,0);\n this.dimensionPatiosLeftBottom.visible = false;\n\n this.dimensionPatiosLeftRight = new Group();\n this.dimensionPatiosLeftRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftRight.rotation.set(Math.PI/2,-Math.PI/2,0);\n this.dimensionPatiosLeftRight.visible = false;\n\n this.dimensionPatiosLeftLeft = new Group();\n this.dimensionPatiosLeftLeft.rotation.set(0, -Math.PI / 2, Math.PI / 2);\n this.dimensionPatiosLeftLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftLeft.visible = false;\n \n\n\n this.dimensionPatiosPlanRight = new Group();\n this.dimensionPatiosPlanRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosPlanRight.rotation.set(-Math.PI/2, Math.PI, -Math.PI/2);\n\n this.dimensionPatiosPlanBottom = new Group();\n this.dimensionPatiosPlanBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosPlanBottom.rotation.set(-Math.PI / 2, 0, 0);\n\n this.dimensionPatiosPlanLeft = new Group();\n this.dimensionPatiosPlanLeft.userData = { type: GEOMETRY_TYPE.DIMENSION , position: { left: true } };\n this.dimensionPatiosPlanLeft.rotation.set(-Math.PI / 2, 0, -Math.PI / 2);\n\n this.dimensionPlanMiddle = new Group();\n this.dimensionPlanMiddle.userData = { type: GEOMETRY_TYPE.DIMENSION };\n //this.dimensionPlanMiddle.rotation.set(-Math.PI / 2, 0, 0);\n this.dimensionPlanMidleLeft = new Group();\n\n this.dimensionPatiosPlanLeftOverHang = new Group();\n\n this.scene.add(this.dimensionPatiosPlanRight);\n this.scene.add(this.dimensionPatiosPlanLeft);\n this.scene.add(this.dimensionPatiosFrontRight);\n this.APP.patiosManager.patiosGroup.add(\n this.dimensionPatiosFrontBottom, \n //this.dimensionPatiosFrontRight, \n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom, \n this.dimensionPatiosLeftRight, \n this.dimensionPatiosPlanBottom,\n this.dimensionPlanMiddle,\n this.dimensionPatiosPlanLeftOverHang,\n this.dimensionPatiosLeftLeft,\n this.dimensionPlanMidleLeft\n );\n\n\n\n loader.load( environment.modelBaseUrl + '/assets/fonts/helvetiker_regular.typeface.json', (font) => {\n this.font = font;\n\n this.textParameter = {\n font: this.font,\n size: 200,\n height: 5,\n curveSegments: 10\n };\n this.options = {\n container: HomeComponent.ins.scene,\n start: new Vector3(),\n end: new Vector3(),\n linePos: new Vector3(),\n views: [],\n allowDrag: true,\n textParameter: this.textParameter,\n textPos: new Vector3(),\n labelType: null,\n fitZ: 10,\n hasTextClone: false,\n axis: 'x',\n lineLength: 0,\n subtype: null,\n textUserData: null,\n onDragCallback: this.onDimDrag.bind(this),\n onDragStartCallback: this.onDimDragStart.bind(this),\n }\n\n this.isReady = true;\n this.draw();\n \n resolve();\n })\n });\n }\n\n public unload(){\n this.scene.remove(this.dimensionPatiosPlanRight);\n this.scene.remove(this.dimensionPatiosPlanLeft);\n this.scene.remove(this.dimensionPatiosFrontRight);\n if(this.APP.patiosManager && this.APP.patiosManager.patiosGroup){\n this.APP.patiosManager.patiosGroup.remove(\n this.dimensionPatiosFrontBottom, \n //this.dimensionPatiosFrontRight, \n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom, \n this.dimensionPatiosLeftRight,\n this.dimensionPatiosLeftLeft,\n this.dimensionPatiosPlanBottom,\n this.dimensionPlanMiddle,\n this.dimensionPlanMidleLeft,\n this.dimensionPatiosPlanLeftOverHang\n );\n }\n }\n \n public draw() {\n if (!this.isReady) {\n return;\n }\n // this.dimensionPatiosPlanBottom.children = [];\n // this.dimensionPatiosPlanRight.children = [];\n // this.dimensionPatiosPlanLeft.children = [];\n this.dimensionPatiosPlanBottom.children = this.dimensionPatiosPlanBottom.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.LEFT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.RIGHT_OVERHANG\n );\n this.dimensionPatiosPlanRight.children = this.dimensionPatiosPlanRight.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.FRONT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.BACK_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY\n );\n this.dimensionPatiosPlanLeft.children = this.dimensionPatiosPlanLeft.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL \n )\n this.dimensionPatiosFrontBottom.children = [];\n this.dimensionPatiosFrontRight.children = [];\n this.dimensionPatiosLeftBottom.children = [];\n this.dimensionPatiosLeftRight.children = [];\n this.dimensionPatiosRightBottom.children = [];\n this.dimensionPatiosRightLeft.children = [];\n this.dimensionPatiosRightRight.children = [];\n this.dimensionPlanMiddle.children = [];\n this.dimensionPatiosPlanLeftOverHang.children = [];\n this.dimensionPatiosLeftLeft.children = [];\n this.dimensionPlanMidleLeft.children = [];\n \n this.totalBaySize = 0;\n for(let b of this.APP.dialogEditBay.listBay){\n this.totalBaySize += b.value;\n }\n\n this.box = this.utils.getSceneBox();\n\n this.drawDimensionPatiosPlanBottom();\n this.drawDimensionPatiosPlanRight();\n // this.drawDimensionPatiosPlanLeft();\n\n this.drawDimensionPatiosFrontBottom();\n this.drawDimensionPatiosFrontRight();\n\n this.drawDimensionPatiosLeftBottom();\n this.drawDimensionPatiosLeftRight();\n this.drawDimensionPatiosLeftLeft();\n\n this.drawDimensionPatiosRightBottom();\n this.drawDimensionPatiosRightLeft();\n this.drawDimensionPatiosRightRight();\n\n //testing\n // [\n // this.dimensionPatiosFrontBottom,\n // this.dimensionPatiosFrontRight,\n // this.dimensionPatiosRightBottom,\n // this.dimensionPatiosRightLeft,\n // this.dimensionPatiosRightRight,\n // this.dimensionPatiosLeftBottom,\n // this.dimensionPatiosLeftRight,\n // this.dimensionPatiosLeftLeft,\n // ].forEach(g => { g.visible = true });\n\n this.drawDimensionMidle();\n this.drawDimensionMidleLeft();\n\n this.APP.dimensionManager.draw();\n }\n\n private drawDimensionMidleLeft() {\n let offsetX = 0;\n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT){\n offsetX = -this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width - 100 + ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n }\n\n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT){\n offsetX = this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n }\n\n let dimLeft = this.utils.createArrowLine([{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }]);\n dimLeft.visible = false;\n dimLeft.position.setX(-300)\n let textLeft = this.utils.createText(\"Panel direction\", [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }], this.textParameter, new Vector3(-500, 0, 650));\n textLeft.userData.rotation = new Vector3(0, Math.PI / 2, 0)\n textLeft.visible = false;\n\n let dimRight = dimLeft.clone()\n dimRight.position.setX(300);\n let textRight = textLeft.clone();\n textRight.position.setX(500);\n \n this.dimensionPlanMidleLeft.add(dimLeft);\n this.dimensionPlanMidleLeft.add(textLeft);\n this.dimensionPlanMidleLeft.add(dimRight);\n this.dimensionPlanMidleLeft.add(textRight);\n\n\n if (this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT) {\n let offsetZ = this.totalBaySize + UI.overhangFront - UI.existingWidth1 / 2 - this.MANAGER.patiosGroup.position.z - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n this.dimensionPlanMidleLeft.position.set(offsetX, 0, offsetZ);\n this.dimensionPlanMidleLeft.rotation.set(0, Math.PI, 0);\n }\n else {\n let offsetZ = - UI.overhangBack - UI.existingWidth1 / 2 - this.MANAGER.patiosGroup.position.z - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n this.dimensionPlanMidleLeft.rotation.set(0, 0, 0);\n this.dimensionPlanMidleLeft.position.set(offsetX, 0, offsetZ);\n }\n }\n private drawDimensionMidle() {\n let offsetX = 0;\n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT){\n offsetX = -this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width - 100 + ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n }\n\n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT){\n offsetX = this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n }\n\n let dimLeft = this.utils.createArrowLine([{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }]);\n dimLeft.visible = false;\n dimLeft.rotation.set(0, -Math.PI / 2, 0);\n\n let textLeft = this.utils.createText(`${UI.patiosPitch} degree`, [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }], this.textParameter, new Vector3(-500, 0, 200));\n textLeft.visible = false;\n\n let dimRight = dimLeft.clone()\n dimRight.rotation.set(0, Math.PI / 2, 0);\n\n let textRight = textLeft.clone();\n textRight.position.setX(500);\n \n this.dimensionPlanMiddle.add(dimLeft);\n this.dimensionPlanMiddle.add(textLeft);\n this.dimensionPlanMiddle.add(dimRight);\n this.dimensionPlanMiddle.add(textRight);\n\n let offsetZ = - UI.existingWidth1 / 2 - this.MANAGER.patiosGroup.position.z - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0) + this.totalBaySize / 2;\n this.dimensionPlanMiddle.rotation.set(0, 0, 0);\n this.dimensionPlanMiddle.position.set(offsetX, 0, offsetZ);\n }\n\n private drawDimensionPatiosPlanBottom(){\n let views = [ { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS } ];\n\n let _dimensionDistane = this.dimensionDistance2;\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n if(this.APP.sldExistingWidth1.currentValue > 0){\n _dimensionDistane = this.dimensionDistance;\n }\n }\n\n let textStr = this.utils.getDimensionValue(this.APP.sldSpan.currentValue);\n\n let options : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldSpan.currentValue,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.SPAN,\n hasTextClone: false,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views },\n textCloneUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views },\n textCloneRotation: new Vector3(0, 0, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, 0, 0)\n }\n let dimSpan = this.dimensionPatiosPlanBottom.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN) as Dimension;\n if(!dimSpan){\n new Dimension(options);\n } else {\n dimSpan.update(options);\n }\n\n //Left over hang\n this.addOverhang(this.dimensionPatiosPlanBottom, UI.span / 2, UI.overhangLeft, views, \"Left\", 0, \"z\", DIMENSION_LABEL_TYPE.LEFT_OVERHANG);\n this.addOverhang(this.dimensionPatiosPlanBottom, UI.span / 2, UI.overhangRight, views, \"Right\", 0, \"z\", DIMENSION_LABEL_TYPE.RIGHT_OVERHANG);\n this.repositionDimension(this.dimensionPatiosPlanBottom, DIMENSION_LOCATION.PLAN_BOTTOM);\n }\n onDimDrag(event){\n this.utils.handlerDimDragEvent(event, this.startPos, this.startMatrix, this.startBayLength);\n this.startPos = event.object.position.clone();\n }\n onDimDragStart(event){\n this.startPos = event.object.position.clone();\n this.startMatrix = event.object.matrixWorld.clone();\n if(event.object.userData?.dimType === DIMENSION_LABEL_TYPE.BAY){\n let bayNum = event.object.userData.bayNum;\n this.startBayLength = UI.listBay[+bayNum].value;\n }\n }\n private drawDimensionPatiosPlanRight(){\n let views = [ { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS } ];\n\n let offsetX = -this.totalBaySize / 2;\n this.dimensionPatiosPlanRight.children = this.dimensionPatiosPlanRight.children.filter(el => \n el.userData?.groupType != DIMENSION_LABEL_TYPE.BAY\n || (el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY && el.userData?.bayNum < HomeComponent.ins.dialogEditBay.listBay.length)\n );\n \n for(let i = 0; i <= this.APP.dialogEditBay.listBay.length; i++){\n let b: IBay = {index: 0, value: 0, isCut: false};\n if(i < this.APP.dialogEditBay.listBay.length){\n b = this.APP.dialogEditBay.listBay[i];\n }\n\n if(i < this.APP.dialogEditBay.listBay.length){\n let textStr = this.utils.getDimensionValue(b.value);\n let options : AddDimensionOptions = {... this.options,\n lineLength: b.value,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(offsetX + b.value / 2, 0, 0),\n textPos: new Vector3(offsetX + b.value / 2, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.BAY,\n bayNum: i,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, position: { bottom: true }, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textRotation: new Vector3(0, - Math.PI, 0),\n fitZ: -10\n }\n let dimBay = this.dimensionPatiosPlanRight.children.find(el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY \n && el.userData?.bayNum == i\n ) as Dimension;\n if(!dimBay){\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n offsetX += b.value;\n }\n \n let offsetRight = this.totalBaySize / 2 ;\n let offsetLeft = this.totalBaySize / 2;\n\n this.addOverhang(this.dimensionPatiosPlanRight, offsetRight, UI.overhangFront, views, \"Right\", Math.PI,\"y\", DIMENSION_LABEL_TYPE.FRONT_OVERHANG);\n this.addOverhang(this.dimensionPatiosPlanRight, offsetLeft, UI.overhangBack, views, \"Left\", Math.PI, \"y\", DIMENSION_LABEL_TYPE.BACK_OVERHANG);\n\n this.repositionDimension(this.dimensionPatiosPlanRight, DIMENSION_LOCATION.PLAN_RIGHT);\n }\n private drawDimensionPatiosPlanLeft(){\n if(this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.NONE){\n this.dimensionPatiosPlanLeft.children = this.dimensionPatiosPlanLeft.children.filter(el => el.userData?.groupType != DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL)\n return;\n }\n\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n\n let offsetDimensionZ = this.APP.sldSpan.currentValue\n + this.APP.sldMultiSpan.currentValue\n + this.APP.sldFrontOverhang.currentValue\n - this.APP.sldExistingWidth1.currentValue / 2\n - this.APP.existingWallManager.geo_existingWallL1.width\n - this.APP.eaveManager.backOverhang\n - this.APP.sldLeftCutVertical.currentValue/2;\n\n let optionsRake : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldLeftCutVertical.currentValue,\n container: this.dimensionPatiosPlanLeft,\n views: views,\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL,\n }\n let dimRake = this.dimensionPatiosPlanLeft.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL) as Dimension;\n if(!dimRake){\n new Dimension(optionsRake);\n } else {\n dimRake.update(optionsRake);\n }\n\n //let offsetDimensionX = this.MANAGER.boundingBox.min.x - this.dimensionDistance2;\n this.dimensionPatiosPlanLeft.position.set(0, 0, offsetDimensionZ);\n this.repositionDimension(this.dimensionPatiosPlanLeft, DIMENSION_LOCATION.PLAN_LEFT);\n }\n private drawDimensionPatiosFrontBottom(){\n let dimOffsetY = -this.dimensionDistance2;\n this.dimensionPatiosFrontBottom.position.set(0,dimOffsetY,0);\n\n let views = [ { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosPlanBottom.children.forEach( groupDim => {\n groupDim.children.filter(c => c.userData.subtype != GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT).forEach(e => {\n let dim = e.clone();\n dim.userData['views'] = views;\n if(dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n dim.rotation.set(0,Math.PI,0);\n dim.userData['rotation'] = new Vector3(0,0,0);\n dim.userData['position'] = { ...e.userData.position, bottom: true };\n }\n this.dimensionPatiosFrontBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosFrontRight(){\n let views = [ { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS } ];\n\n let _dimensionDistane = this.dimensionDistance2;\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n if(this.APP.sldExistingWidth1.currentValue > 0){\n _dimensionDistane = this.dimensionDistance;\n }\n }\n \n \n let dimOffsetX = this.totalBaySize/2 + this.APP.patiosManager.patiosGroup.position.x + _dimensionDistane;\n let height = this.utils.getHeightByAngle(UI.eaveHeight + UI.braketHeight + this.geometryManager.getBeam().height, UI.span / 2, this.APP.sltRoofPitch.currentValue, 1);\n let dimOffsetY = height/2;\n\n let scaleLength = height/this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-dimOffsetY);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(dimOffsetY);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(height);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0,0,-Math.PI/2) };\n text.position.set(0,200,0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosFrontRight.add(line, cap1, cap2, text, ...this.utils.addArrowForLine(line));\n this.repositionDimension(this.dimensionPatiosFrontRight, DIMENSION_LOCATION.FRONT_RIGHT);\n }\n private drawDimensionPatiosLeftBottom(){\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z - (this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + this.APP.eaveManager.backOverhang - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0));\n \n this.dimensionPatiosLeftBottom.position.set(0,dimOffsetY,dimOffsetZ);\n\n let views = [ \n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n this.dimensionPatiosPlanRight.children.forEach( groupDim => {\n groupDim.children.forEach(e => {\n if(e.userData?.subType == GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT)\n return;\n \n let dim = e.clone();\n dim.userData['views'] = views;\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.rotation.set(0, 0, 0);\n dim.userData['views'] = [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }];\n dim.userData['rotation'] = new Vector3(0, 0, 0);\n dim.userData['position'] = {...e.userData.position, bottom: true}; \n }\n this.dimensionPatiosLeftBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosLeftRight() {\n let dimOffsetY = this.utils.getHeightByAngle(UI.eaveHeight + UI.braketHeight + this.geometryManager.getBeam().height, UI.span / 2, this.APP.sltRoofPitch.currentValue, 1);\n\n let views = [ \n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n let offsetLength = dimOffsetY;\n let scaleLength = offsetLength / this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength/2);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength/2);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }], rotation: new Vector3(-Math.PI / 2, 0, 0) };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosLeftRight.add(line, cap1, cap2, text, ...this.utils.addArrowForLine(line));\n\n this.repositionDimension(this.dimensionPatiosLeftRight, DIMENSION_LOCATION.LEFT_RIGHT);\n }\n private drawDimensionPatiosRightBottom(){\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z - (this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + this.APP.eaveManager.backOverhang - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0));\n \n this.dimensionPatiosRightBottom.position.set(0,dimOffsetY,dimOffsetZ);\n\n let views = [ { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosPlanRight.children.forEach(groupDim => {\n groupDim.children.forEach(e => {\n if(e.userData?.subType == GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT)\n return;\n \n let dim = e.clone();\n dim.userData['views'] = views;\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.userData['rotation'] = new Vector3(0, 0, 0);\n dim.userData['position'] = {...e.userData.position, bottom: true};\n }\n this.dimensionPatiosRightBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosRightLeft(){\n this.dimensionPatiosRightLeft.position.set(0,this.dimensionPatiosLeftRight.position.y,this.dimensionPatiosLeftRight.position.z);\n\n let views = [ { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosLeftRight.children.forEach(e => {\n let dim = e.clone();\n dim.userData['views'] = views;\n if(e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n dim.userData['rotation'] = new Vector3(Math.PI/2,0,0);\n dim.rotation.set(0,Math.PI,0);\n }\n this.dimensionPatiosRightLeft.add(dim);\n });\n\n this.repositionDimension(this.dimensionPatiosRightLeft, DIMENSION_LOCATION.RIGHT_LEFT);\n }\n private drawDimensionPatiosLeftLeft() { \n let dimOffsetY = this.APP.sldBuildingHeight.currentValue;\n let dimOffsetZ = this.APP.sldExistingWidth1.currentValue / 2 + 1800;\n\n this.dimensionPatiosLeftLeft.position.set(0, dimOffsetY / 2, -dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n let offsetLength = dimOffsetY;\n let scaleLength = offsetLength / this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength / 2);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength / 2);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }], rotation: new Vector3(Math.PI / 2, 0, 0) };\n text.position.set(0, 200, 0);\n\n this.dimensionPatiosLeftLeft.add(line, cap1, cap2, text, ...this.utils.addArrowForLine(line));\n }\n private drawDimensionPatiosRightRight(){\n let dimOffsetY = this.APP.sldBuildingHeight.currentValue;\n let dimOffsetZ = this.APP.sldExistingWidth1.currentValue / 2 + 1800;\n \n this.dimensionPatiosRightRight.position.set(0,dimOffsetY/2,-dimOffsetZ);\n\n let views = [ { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosLeftLeft.children.forEach(e => {\n if(e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n let dim = e.clone();\n dim.userData['views'] = views;\n dim.userData['rotation'] = new Vector3(-Math.PI/2,0,0);\n dim.rotation.set(0,Math.PI,0);\n dim.position.set(dim.position.x, -dim.position.y, dim.position.z);\n this.dimensionPatiosRightRight.add(dim);\n }\n });\n }\n\n private addOverhang(groupDim: Object3D, offset: number, overhangValue: number, views: any, side: string, rotateText: number, axis: string, labelType?: string) {\n if (overhangValue == 0){\n let dim = groupDim.children.find(el => el.userData?.groupType == labelType) as Dimension;\n if(dim){\n groupDim.remove(dim)\n }\n return;\n }\n\n let textStr = this.utils.getDimensionValue(overhangValue);\n\n let textRotation = new Vector3();\n let textUserData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, position: { overhang: true }};\n if (axis === \"z\") {\n textRotation.setZ(rotateText);\n textUserData['rotation'] = new Vector3(0, 0, -rotateText / 2);\n textUserData['position']['bottom'] = true;\n }\n else if (axis === \"y\") {\n textRotation.setY(rotateText);\n textUserData['rotation'] = new Vector3(0, -rotateText / 2, 0);\n }\n else if (axis === \"x\") {\n textRotation.setX(rotateText);\n textUserData['rotation'] = new Vector3(-rotateText / 2, 0, 0);\n }\n\n let linePos = new Vector3();\n if (side === \"Left\") {\n linePos.setX(-offset - overhangValue / 2);\n }\n else if (side === \"Right\") {\n linePos.setX(offset + overhangValue / 2);\n }\n let fitZ = 0;\n if(labelType){\n if(axis === 'z'){\n fitZ = 10;\n } else if(axis === 'y'){\n fitZ = -10;\n }\n }\n let options : AddDimensionOptions = {... this.options,\n lineLength: overhangValue,\n container: groupDim,\n views: views,\n linePos: linePos,\n textPos: linePos.clone().setY(linePos.y - 200),\n labelType: labelType ? labelType : null,\n fitZ: fitZ,\n textRotation: textRotation,\n textUserData: textUserData\n }\n let dim = groupDim.children.find(el => el.userData?.groupType == labelType) as Dimension;\n if(!dim){\n new Dimension(options);\n } else {\n dim.update(options)\n }\n }\n private getTextCover(textGeo: TextBufferGeometry, labelType: string, pos: Vector3, fitZ = 0, bayNum?: number){\n let textSize = new Vector3();\n textGeo.boundingBox.getSize(textSize)\n\n let textCover = new Mesh(new BoxBufferGeometry(textSize.x, textSize.y, textSize.z + fitZ))\n textCover.position.set(pos.x , pos.y, pos.z);\n textCover.userData = { type: GEOMETRY_TYPE.TEXT_COVER, labelType };\n if(bayNum !== undefined){\n textCover.userData['bayNum'] = bayNum;\n }\n textCover.material['opacity'] = 0;\n textCover.material['transparent'] = true;\n\n return textCover\n }\n\n public getOutlines(): Printing2DGeometry{\n let lsGeometries: Printing2DLine[] = [];\n let lsText: Print2DText[] = [];\n \n for(let dim of [\n ...this.dimensionPatiosPlanBottom.children,\n ...this.dimensionPatiosPlanRight.children,\n ...this.dimensionPatiosPlanLeft.children,\n ...this.dimensionPatiosFrontBottom.children,\n ...this.dimensionPatiosFrontRight.children,\n ...this.dimensionPatiosLeftBottom.children,\n ...this.dimensionPatiosLeftRight.children,\n ...this.dimensionPatiosRightBottom.children,\n ...this.dimensionPatiosRightLeft.children,\n ...this.dimensionPlanMiddle.children,\n ...this.dimensionPatiosPlanLeftOverHang.children,\n ...this.dimensionPatiosLeftLeft.children,\n ...this.dimensionPatiosRightRight.children,\n ...this.dimensionPlanMidleLeft.children\n\n ]){\n if(!dim.userData.views){\n // console.log(\"TEXT NO VIEW\", dim);\n continue;\n }\n\n if(dim.type == 'Group'){\n dim.children.forEach(el => {\n el.updateMatrix();\n let _clone = el.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(el.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n \n el.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(el.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(el.matrixWorld);\n\n let textRotation = el.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, el, pos, textRotation, points)\n })\n } else{\n dim.updateMatrix();\n let _clone = dim.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(dim.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n \n dim.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(dim.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(dim.matrixWorld);\n\n let textRotation = dim.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, dim, pos, textRotation, points)\n }\n }\n \n return { lines: lsGeometries, texts: lsText };\n }\n private getDimInfo(lsGeometries: Printing2DLine[], lsText: Print2DText[], dim: Object3D, pos: Vector3, textRotation: Vector3, points: Vector3[]){\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && dim.userData.views && dim.userData.value) {\n let box = new Box3().setFromObject(dim.parent);\n let startEnd = this.utils.getStartEndPoint(box);\n let line = new Line3(startEnd[0], startEnd[1]);\n\n let projectPoint = new Vector3();\n line.closestPointToPoint(pos, true, projectPoint);\n let _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(10));\n\n if(dim.userData.position?.bottom){\n if(dim.userData.position?.overhang){\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(180));\n }\n else{\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(120));\n }\n }\n else{\n if(dim.userData.position?.overhang){\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(100));\n }\n }\n\n let p = new Vector3().applyMatrix4(dim.matrixWorld);\n\n lsText.push({\n value: dim.userData.value,\n position: p,\n rotation: textRotation,\n views: dim.userData.views\n });\n\n \n }\n else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_LINE) {\n // this.scene.add(new LineSegments(new Geometry().setFromPoints(points), new LineBasicMaterial({color: new Color('red')})));\n\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_CAP) {\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n else if (dim.userData.type == \"Arrow\") {\n let geo = ((dim as Line).geometry as Geometry).clone();\n geo.applyMatrix4(dim.matrixWorld);\n lsGeometries.push({\n vertices: geo.vertices,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n }\n\n private getGeometryFromBufferGeometry(bufferGeo: BufferGeometry) {\n let points: Vector3[] = [];\n let verties = bufferGeo.getAttribute('position').array;\n for (let i = 0; i < verties.length; i += 3) {\n points.push(new Vector3(verties[i], verties[i + 1], verties[i+2]));\n }\n\n return new Geometry().setFromPoints(points);\n }\n public destroy(): void {\n this.unregisterEvent();\n this.unload();\n }\n\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldFrontOverhang,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sldExistingWallHeight,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sldFlyOverBracketHeight,\n this.APP.sltRoofPitch\n ];\n\n this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n \n //this.APP.sldSpan.addAction(this.eventHandleId);\n //this.APP.sldMultiSpan.addAction(this.eventHandleId);\n //this.APP.sldFrontOverhang.addAction(this.eventHandleId);\n //this.APP.sldExistingWidth1.addAction(this.eventHandleId);\n //this.APP.sldExistingWidth2.addAction(this.eventHandleId);\n //this.APP.sldExistingLength.addAction(this.eventHandleId);\n //this.APP.sldExistingLength2.addAction(this.eventHandleId);\n //this.APP.sltExistingType.addAction(this.eventHandleId);\n //this.APP.sldExistingWallHeight.addAction(this.eventHandleId);\n //this.APP.dialogEditBay.addAction(this.eventHandleId);\n\n //this.APP.sldLeftOverhang.addAction(this.eventHandleId);\n //this.APP.sldRightOverhang.addAction(this.eventHandleId);\n //this.APP.sldBackOverhang.addAction(this.eventHandleId);\n\n //this.APP.sldFlyOverBracketHeight.addAction(this.eventHandleId);\n //this.APP.sltRoofPitch.addAction(this.eventHandleId);\n }\n private unregisterEvent(): void{\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.APP.sldSpan.removeAction(this.eventHandleId);\n //this.APP.sldMultiSpan.removeAction(this.eventHandleId);\n //this.APP.sldFrontOverhang.removeAction(this.eventHandleId);\n //this.APP.sldExistingWidth1.removeAction(this.eventHandleId);\n //this.APP.sldExistingWidth2.removeAction(this.eventHandleId);\n //this.APP.sldExistingLength.removeAction(this.eventHandleId);\n //this.APP.sldExistingLength2.removeAction(this.eventHandleId);\n //this.APP.sltExistingType.removeAction(this.eventHandleId);\n //this.APP.sldExistingWallHeight.removeAction(this.eventHandleId);\n //this.APP.dialogEditBay.removeAction(this.eventHandleId);\n\n //this.APP.sldLeftOverhang.removeAction(this.eventHandleId);\n //this.APP.sldRightOverhang.removeAction(this.eventHandleId);\n //this.APP.sldBackOverhang.removeAction(this.eventHandleId);\n\n //this.APP.sldFlyOverBracketHeight.removeAction(this.eventHandleId);\n //this.APP.sltRoofPitch.removeAction(this.eventHandleId);\n }\n\n\n public uiChanged(preVal: number, curVal: number): void {\n this.draw();\n }\n private calulateBoundingBox(){\n this.APP.scene.remove(...this.APP.scene.children.filter(c => c.userData.type == 'BOX_HELPER_'));\n let patiosBox = this.MANAGER.boundingBox;\n \n let planRightBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosPlanRight);\n planRightBox.min.x = patiosBox.max.x;\n planRightBox.max.x = patiosBox.max.x + 500;\n planRightBox.max.y = 10000;\n \n let planLeftBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosPlanLeft);\n planLeftBox.min.x = patiosBox.min.x - 500;\n planLeftBox.max.x = patiosBox.min.x;\n planLeftBox.max.y = 10000;\n\n let planBottomBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosPlanBottom);\n let planBottomBoxWidth = planBottomBox.max.z - planBottomBox.min.z;\n planBottomBox.min.z = patiosBox.max.z;\n planBottomBox.max.z = patiosBox.max.z + planBottomBoxWidth;\n planBottomBox.max.y = 10000;\n \n let objs = [];\n\n objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && c.userData.position?.width1 || c.userData.position?.width2 || c.userData.position?.length2)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL)\n );\n\n // for(let e of objs){\n // let boxModelHelper = new BoxHelper(e);\n // boxModelHelper.userData = {type: 'BOX_HELPER_'};\n // this.scene.add(boxModelHelper);\n // }\n\n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(planRightBox.intersectsBox(objBox)){\n intersectBox = true;\n planRightBox.translate(new Vector3(100,0,0))\n }\n if(planLeftBox.intersectsBox(objBox)){\n intersectBox = true;\n planLeftBox.translate(new Vector3(-100,0,0))\n }\n if(planBottomBox.intersectsBox(objBox)){\n intersectBox = true;\n planBottomBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(planRightBox);\n // boxHelper.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper);\n\n // let boxHelper2 = new Box3Helper(planLeftBox);\n // boxHelper2.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper2);\n\n // let boxHelper3 = new Box3Helper(planBottomBox);\n // boxHelper3.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper3);\n \n return { left: planLeftBox.min.x, right: planRightBox.max.x, front: planBottomBox.max.z };\n }\n private repositionDimension(dimension, location, extraDistance = 0){\n this.APP.scene.remove(...this.APP.scene.children.filter(c => c.userData.type == location));\n this.APP.scene.remove(...this.APP.scene.children.filter(c => c.userData.type == location));\n\n let patiosBox = this.MANAGER.boundingBox;\n \n if(location == DIMENSION_LOCATION.FRONT_RIGHT){\n let height = this.utils.getHeightByAngle(UI.eaveHeight + UI.braketHeight + this.geometryManager.getBeam().height, UI.span / 2, this.APP.sltRoofPitch.currentValue, 1);\n let dimOffsetY = height/2;\n dimension.position.setY(dimOffsetY);\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.max.x;\n dimBox.max.x = patiosBox.max.x + 500;\n dimBox.max.z = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && !c.userData.position.length1 && !c.userData.position.length2)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && !c.userData.position.length1 && !c.userData.position.length2)\n );\n\n if(this.APP.sldExistingWidth2.currentValue > 0){\n objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && !c.userData.position.length1)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && !c.userData.position.length1)\n );\n }\n \n // for(let e of objs){\n // let boxModelHelper = new BoxHelper(e);\n // boxModelHelper.userData = {type: 'BOX_HELPER_'};\n // this.scene.add(boxModelHelper);\n // }\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(100,0,0))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n //let dimOffsetY = this.APP.sldBuildingHeight.currentValue / 2;\n dimension.position.setX(dimBox.max.x + extraDistance);\n }\n else if(location == DIMENSION_LOCATION.PLAN_LEFT){\n // let offsetDimensionZ = this.APP.sldSpan.currentValue\n // + this.APP.sldMultiSpan.currentValue\n // + this.APP.sldFrontOverhang.currentValue\n // - this.APP.sldExistingWidth1.currentValue / 2\n // - this.APP.existingWallManager.geo_existingWallL1.width\n // - this.APP.eaveManager.backOverhang;\n // dimension.position.setZ(offsetDimensionZ);\n\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.min.x - 500;\n dimBox.max.x = patiosBox.min.x;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF || c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(-100,0,0))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setX(dimBox.min.x + extraDistance);\n dimension.translateX(this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + this.APP.eaveManager.backOverhang - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0));\n }\n else if(location == DIMENSION_LOCATION.PLAN_RIGHT){\n let offsetDimensionZ = this.totalBaySize / 2\n - this.APP.sldExistingWidth1.currentValue / 2\n - this.APP.existingWallManager.geo_existingWallL1.width\n - this.APP.eaveManager.backOverhang;\n dimension.position.setZ(offsetDimensionZ);\n\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.max.x;\n dimBox.max.x = patiosBox.max.x + 500;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL)\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(100,0,0))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setX(dimBox.max.x + extraDistance);\n dimension.translateX(this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + this.APP.eaveManager.backOverhang - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0));\n }\n else if(location == DIMENSION_LOCATION.PLAN_BOTTOM){\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL)\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setZ(dimBox.max.z + extraDistance);\n\n if (this.APP.sltExistingType.currentValue == 1) {\n dimension.position.setX(this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0)/2)\n } else if(this.APP.sltExistingType.currentValue == 2) {\n dimension.position.setX( -(this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0)/2))\n } else {\n dimension.position.setX(0)\n }\n }\n else if(location == DIMENSION_LOCATION.LEFT_RIGHT){\n let dimOffsetY = this.utils.getHeightByAngle(UI.eaveHeight + UI.braketHeight + this.geometryManager.getBeam().height, UI.span / 2, this.APP.sltRoofPitch.currentValue, 1);\n dimension.position.setY(dimOffsetY / 2);\n\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n dimBox.min.x = -10000;\n dimBox.max.x = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && c.userData.position?.left)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && c.userData.position?.left)\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setZ(dimBox.max.z + extraDistance);\n }\n else if(location == DIMENSION_LOCATION.RIGHT_LEFT){\n let dimOffsetY = this.utils.getHeightByAngle(UI.eaveHeight + UI.braketHeight + this.geometryManager.getBeam().height, UI.span / 2, this.APP.sltRoofPitch.currentValue, 1);\n dimension.position.setY(dimOffsetY / 2);\n\n let dimBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosLeftRight);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n \n dimBox.min.x = -10000;\n dimBox.max.x = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && c.userData.position?.right)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && c.userData.position?.right)\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setZ(dimBox.max.z + extraDistance);\n }\n }\n}\n","import { HomeComponent as AppComponent } from \"../../containers/home/home.component\";\nimport { ColumnAndBeamManager } from \"./column-and-beam.manager\";\nimport { RoofManager } from \"./roof.manager\";\nimport { Group, Box3, Vector3, Box3Helper } from \"three\";\nimport { GEOMETRY_CATEGORY, CONFIG, GEOMETRY_TYPE } from \"src/app/app.config\";\nimport {\n PatiosManager,\n RafterBeamAndInternalBeamInfo,\n} from \"../patios.manager\";\nimport { Printing2DGeometry } from \"src/app/core/models\";\nimport { DimensionManager } from \"./dimension.manager\";\nimport {\n EXISTING_BUILDING_CONFIG,\n CUTOUT_ENABLE,\n RAKECUT_TYPE,\n BUILDING_SIDE,\n} from \"src/app/app.constants\";\nimport { environment } from \"src/environments/environment\";\nimport { UI } from \"../ui\";\n// import { environment } from 'src/environments/environment';\n\nexport class PatiosGableFBFlyOverManager implements PatiosManager {\n public columnAndBeamManager: ColumnAndBeamManager;\n public roofManager: RoofManager;\n private APP: AppComponent;\n public patiosGroup: Group;\n public boundingBox: Box3;\n private updateEventHandle: any;\n public dimensionManager: DimensionManager;\n private controlsToRegisterEvent: Array;\n public ignoreBayEvent: boolean = false;\n private deferHandle;\n private deferTimeout = EXISTING_BUILDING_CONFIG.CUTOUT_DEFFER_TIME_OUT;\n public patiosWidth: number;\n public patiosLength: number;\n public get cutoutCondition(): boolean {\n return (\n [this.APP.sldSpan, this.APP.sldMultiSpan, this.APP.sldFrontOverhang]\n .map((x) => x.currentValue)\n .reduce((a, b) => a + b, 0) -\n this.APP.sldExistingWidth1.currentValue >=\n EXISTING_BUILDING_CONFIG.CUTOUT_ALLOW\n );\n }\n public get rakecutCondition(): boolean {\n this.patiosWidth =\n this.APP.dialogEditBay.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n this.patiosLength =\n this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue;\n\n return false;\n }\n\n public firstLoad = true;\n\n constructor(app: AppComponent) {\n this.APP = app;\n\n this.patiosGroup = new Group();\n this.patiosGroup.userData = {\n isGroup: true,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n app.scene.add(this.patiosGroup);\n\n this.roofManager = new RoofManager(app, this);\n this.columnAndBeamManager = new ColumnAndBeamManager(app, this);\n this.dimensionManager = new DimensionManager(app, this);\n\n this.registerEvents();\n }\n\n load(): Promise {\n return Promise.all([\n this.roofManager.optimize(),\n this.columnAndBeamManager.optimize(),\n this.dimensionManager.optimize(),\n ]).then(() => {\n this.roofManager.load();\n this.columnAndBeamManager.load();\n this.dimensionManager.load();\n });\n }\n loadBracket(bracketQuantity: number): void {\n this.columnAndBeamManager.numberOfBracketsBack = bracketQuantity;\n this.columnAndBeamManager.addPostOrBracketBack();\n }\n loadBracketCutout(bracketQuantity: number): void {\n this.columnAndBeamManager.numberOfBracketCutout = bracketQuantity;\n this.columnAndBeamManager.addPostOrBracketBackCutout();\n }\n loadSideGableBracket(bracketQuantity: number): void {\n this.columnAndBeamManager.numberOfBracketsSide = bracketQuantity;\n this.columnAndBeamManager.addBraketOrBeamSideRoof();\n }\n loadRafterBeamAndInternalBeam(info: RafterBeamAndInternalBeamInfo): void {}\n getOutlines(): Printing2DGeometry {\n let dimensionOutline = this.dimensionManager.getOutlines();\n return {\n lines: [\n ...this.columnAndBeamManager.getSection().lines,\n ...this.roofManager.getOutLines().lines,\n ...dimensionOutline.lines,\n ],\n texts: dimensionOutline.texts,\n };\n }\n public destroy(): void {\n this.columnAndBeamManager.destroy();\n this.roofManager.destroy();\n this.dimensionManager.destroy();\n this.unRegisterEvent();\n }\n registerEvents() {\n this.updateEventHandle = this.updateDefer.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sltCutOut,\n this.APP.sldFrontOverhang,\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltColourBarge,\n this.APP.sltColourGutter,\n this.APP.sltColourDownpipe,\n this.APP.sltColourRoof,\n this.APP.sldSpan,\n this.APP.sldExistingWallHeight,\n this.APP.sldEaveWidth,\n this.APP.sldFasciaDepth,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldFlyOverBracketHeight,\n this.APP.sltColourBeam,\n this.APP.sltColourPost,\n this.APP.sltColourBracket,\n this.APP.sltColourFasciaBracket,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n this.APP.sltLeftCutType,\n this.APP.sldLeftCutVertical,\n this.APP.sldLeftCutHorizontal,\n this.APP.sltRightCutType,\n this.APP.sldRightCutVertical,\n this.APP.sldRightCutHorizontal,\n this.APP.sltPanelDirection,\n this.APP.sltPanelDirectionShow,\n this.APP.sltBeamLayoutShow,\n this.APP.sltExistingRoofPitch,\n this.APP.btnTurnOnPanel,\n ];\n this.controlsToRegisterEvent.forEach((c) => {\n c.addAction(this.updateEventHandle);\n });\n }\n unRegisterEvent() {\n this.controlsToRegisterEvent.forEach((c) =>\n c.removeAction(this.updateEventHandle)\n );\n }\n\n updateDefer(previousValue: number, currentValue: number) {\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES ||\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE ||\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE\n ) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => {\n this.update(previousValue, currentValue);\n }, this.deferTimeout);\n } else {\n this.update(previousValue, currentValue);\n }\n }\n\n update(preVal: number, curVal: number) {\n let totalBaySize = this.APP.dialogEditBay.totalBaySize;\n this.patiosLength = totalBaySize + UI.overhangFront;\n this.patiosWidth = UI.span + UI.overhangLeft + UI.overhangRight;\n\n let diff = this.APP.sldExistingLength.currentValue - UI.span;\n\n let extraWallWidth =\n this.APP.existingWallManager.geo_existingWallW1.width +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n this.patiosGroup.position.setX(\n -diff / 2 -\n this.APP.sldExistingLength2.currentValue -\n extraWallWidth\n );\n } else {\n this.patiosGroup.position.setX(\n -diff / 2 - this.APP.sldExistingLength2.currentValue\n );\n }\n } else {\n this.patiosGroup.position.setX(-diff / 2 - extraWallWidth);\n }\n } else if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n this.patiosGroup.position.setX(\n diff / 2 + this.APP.sldExistingLength2.currentValue + extraWallWidth\n );\n } else {\n this.patiosGroup.position.setX(\n diff / 2 + this.APP.sldExistingLength2.currentValue\n );\n }\n } else {\n this.patiosGroup.position.setX(diff / 2 + extraWallWidth);\n }\n } else {\n this.patiosGroup.position.setX(0);\n }\n\n this.patiosGroup.position.setZ(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n this.APP.eaveManager.backOverhang -\n (this.columnAndBeamManager.geo_bracket?.width || 0)\n );\n\n Promise.all([\n this.roofManager.load(),\n this.columnAndBeamManager.load(),\n ]).then(() => {\n this.boundingBox = this.getPatiosBox();\n this.dimensionManager.draw();\n });\n }\n public getPatiosBox(): Box3 {\n let left = -UI.span / 2 - UI.overhangLeft;\n let right = UI.span / 2 + UI.overhangRight;\n let front =\n this.APP.dialogEditBay.totalBaySize + UI.overhangFront + UI.overhangBack;\n let back = 0;\n let height = this.APP.sldBuildingHeight.currentValue;\n let extraOffsetZ =\n this.APP.existingWallManager.geo_existingWallL1.width +\n this.APP.eaveManager.backOverhang;\n\n let box = new Box3();\n box = box.expandByPoint(new Vector3(left, 0, front));\n box = box.expandByPoint(new Vector3(right, height, back));\n box.translate(new Vector3(0, 0, -extraOffsetZ));\n\n if (this.APP.sltExistingType.currentValue == 1) {\n let diff = (this.APP.sldExistingLength.currentValue - UI.span) / 2;\n box.translate(new Vector3(-diff, 0, 0));\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n box.translate(new Vector3(this.APP.sldLeftOverhang.currentValue, 0, 0));\n\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n box.translate(\n new Vector3(-this.APP.sldExistingLength2.currentValue, 0, 0)\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 2) {\n let diff = (this.APP.sldExistingLength.currentValue - UI.span) / 2;\n box.translate(new Vector3(diff, 0, 0));\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n box.translate(new Vector3(-this.APP.sldRightOverhang.currentValue, 0, 0));\n\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n box.translate(\n new Vector3(this.APP.sldExistingLength2.currentValue, 0, 0)\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 3) {\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n }\n\n // if (!environment.production) {\n // this.APP.scene.remove(...this.APP.scene.children.filter(o => o.userData.type == 'BOXHELPER'));\n // let boxHelper = new Box3Helper(box);\n // boxHelper.userData = { type: \"BOXHELPER\" };\n // this.APP.scene.add(boxHelper);\n // }\n\n return box;\n }\n}\n","\nimport { Mesh, Vector3, Material, Plane, Group, BufferGeometry, Geometry, BoxBufferGeometry, MeshLambertMaterial, Matrix4, Object3D, LineSegments, LineBasicMaterial, Box3, Box3Helper, Color } from \"three\";\nimport { Util } from \"../utils\";\nimport { GEOMETRY_TYPE, GEOMETRY_CATEGORY } from 'src/app/app.config';\n// import { AppComponent } from \"../../app.component\";\nimport { HomeComponent as AppComponent } from '../../containers/home/home.component';\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport { GeometryInfo, Print2DView, ViewType, LineType, Printing2DLine, Printing2DGeometry } from 'src/app/core/models';\nimport { PatiosGableFBFlyOverManager } from '.';\nimport { CSG } from 'three-csg-ts';\nimport { EXISTING_BUILDING_CONFIG, RAKECUT_TYPE, EXISTING_BUILDING_CONFIG as CONST, BUILDING_SIDE, CUTOUT_ENABLE, PANEL_DIRECTION, RIBSPAN_PANEL_WIDTH, RIBSPAN_BARGE_FIT, FIT_FLYOVER_BRAKET_ON_ROOF } from 'src/app/app.constants';\nimport { UI } from \"../ui\";\n\nexport class RoofManager {\n private scene: Group;\n private APP: AppComponent;\n private MANAGER: PatiosGableFBFlyOverManager;\n private material: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private geo_RoofPanel: GeometryInfo;\n private gutterRakecutLeftInfo: GeometryInfo;\n private gutterRakecutRightInfo: GeometryInfo;\n private geo_roofPanelBargeCappingLeft: GeometryInfo;\n private geo_roofPanelBargeCappingRight: GeometryInfo;\n private geo_roofPanelBargeCappingBack: GeometryInfo;\n private geo_bargeCutoutLeftHor: GeometryInfo;\n private geo_bargeCutoutRightHor: GeometryInfo;\n private geo_gutterBack: GeometryInfo;\n private geo_gutterCap: GeometryInfo;\n public ridgeGeo: GeometryInfo;\n\n private geo_rakecutLeft: BoxBufferGeometry;\n private geo_rakecutRight: BoxBufferGeometry;\n private mesh_rakecutLeft: Mesh;\n private mesh_rakecutRight: Mesh;\n private csg_rakecutLeft: CSG;\n private csg_rakecutRight: CSG;\n\n private roofGroupRight: Group;\n private roofGroupLeft: Group;\n\n private objectSizeChangedHandle: any;\n\n private totalBaySize: number;\n private extraOffsetZ: number;\n\n private eventHandleId: any;\n\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n\n private mesh_CutoutLeft: Mesh;\n private csg_cutoutLeft: CSG;\n private mesh_CutoutRight: Mesh;\n private csg_cutoutRight: CSG;\n private geo_cutoutLeft: BoxBufferGeometry;\n private geo_cutoutRight: BoxBufferGeometry;\n\n private geoCutGutter: BoxBufferGeometry;\n private meshCutGutterLeft1: Mesh;\n private csgCutGutterLeft1: CSG;\n private meshCutGutterLeft2: Mesh;\n private csgCutGutterLeft2: CSG;\n\n private meshCutGutterRight1: Mesh;\n private csgCutGutterRight1: CSG;\n private meshCutGutterRight2: Mesh;\n private csgCutGutterRight2: CSG\n \n private roofWidth: number;\n private roofLength: number;\n\n private deferHandle;\n private deferTimeout = EXISTING_BUILDING_CONFIG.CUTOUT_DEFFER_TIME_OUT;\n\n constructor(app: AppComponent, flyOverManager: PatiosGableFBFlyOverManager) {\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.APP = app;\n this.MANAGER = flyOverManager;\n this.scene = new Group();\n flyOverManager.patiosGroup.add(this.scene);\n this.material = MaterialManager.Instance().ROOF;\n\n this.registerEvent();\n }\n\n\n public optimize(): Promise {\n return new Promise((resolve) => {\n\n this.geo_RoofPanel = this.geometryManager.getRoofRibspanPanel();\n this.geo_RoofPanel.geometry\n .translate(- this.geo_RoofPanel.width / 2, this.geo_RoofPanel.height / 2, this.geo_RoofPanel.length / 2);\n this.geo_RoofPanel.geometry.rotateY(Math.PI / 2)\n this.utils.changeGeoColor(this.geo_RoofPanel.geometry, new Vector3(0, 1, 0), UI.roofColor.toString());\n\n //Barge capping\n this.geo_roofPanelBargeCappingLeft = this.geometryManager.getRibspanBarge();\n this.geo_roofPanelBargeCappingLeft.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.geo_roofPanelBargeCappingLeft.length / 2, this.geo_roofPanelBargeCappingLeft.height / 2 - RIBSPAN_BARGE_FIT, -this.geo_roofPanelBargeCappingLeft.width / 2 + 3);\n\n this.geo_roofPanelBargeCappingRight = this.geometryManager.getRibspanBarge();\n this.geo_roofPanelBargeCappingRight.geometry\n .rotateY(Math.PI / 2)\n .translate(this.geo_roofPanelBargeCappingRight.length / 2, this.geo_roofPanelBargeCappingRight.height / 2 - RIBSPAN_BARGE_FIT, this.geo_roofPanelBargeCappingRight.width / 2 - 3);\n\n this.geo_roofPanelBargeCappingBack = this.geometryManager.getRibspanBarge();\n this.geo_roofPanelBargeCappingBack.geometry\n .rotateY(Math.PI)\n .translate(this.geo_roofPanelBargeCappingBack.length / 2, this.geo_roofPanelBargeCappingBack.height / 2 - RIBSPAN_BARGE_FIT, this.geo_roofPanelBargeCappingBack.width / 2 - 3);\n\n //Gutter\n this.geo_gutterBack = this.geometryManager.getGutter();\n this.geo_gutterBack.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.geo_gutterBack.length / 2, -20, this.geo_gutterBack.width / 2);\n\n this.gutterRakecutLeftInfo = this.geometryManager.getGutter();\n this.gutterRakecutLeftInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.gutterRakecutLeftInfo.length / 2, -20, this.gutterRakecutLeftInfo.width / 2);\n \n this.gutterRakecutRightInfo = this.geometryManager.getGutter();\n this.gutterRakecutRightInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(-this.gutterRakecutRightInfo.length / 2, -20, this.gutterRakecutRightInfo.width / 2);\n\n //Gutter cap\n this.geo_gutterCap = this.geometryManager.getGuterEndCap();\n this.geo_gutterCap.geometry\n .rotateY(-Math.PI / 2)\n .translate(0, -20, this.geo_gutterCap.length / 2);\n\n this.geo_cutoutLeft = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_cutoutLeft.translate(-500, 500, -500);\n this.geo_cutoutRight = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_cutoutRight.translate(500, 500, -500);\n\n this.geo_rakecutLeft = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_rakecutLeft.translate(-500, 500, 500);\n this.geo_rakecutRight = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_rakecutRight.translate(500, 500, 500);\n\n this.geoCutGutter = new BoxBufferGeometry(500, 10000, 500);\n this.geoCutGutter.translate(0, 0, -250);\n //Barge cutout left\n this.geo_bargeCutoutLeftHor = this.geometryManager.getRibspanBarge();\n this.geo_bargeCutoutLeftHor.geometry\n .rotateY(Math.PI / 2)\n .translate(-this.geo_bargeCutoutLeftHor.length / 2, this.geo_bargeCutoutLeftHor.height / 2 - RIBSPAN_BARGE_FIT, this.geo_bargeCutoutLeftHor.width / 2);\n\n //Barge cutout right\n this.geo_bargeCutoutRightHor = this.geometryManager.getRibspanBarge();\n this.geo_bargeCutoutRightHor.geometry\n .rotateY(Math.PI / 2)\n .translate(this.geo_bargeCutoutRightHor.length / 2, this.geo_bargeCutoutRightHor.height / 2 - RIBSPAN_BARGE_FIT, this.geo_bargeCutoutRightHor.width / 2);\n\n this.ridgeGeo = this.geometryManager.getRibspanRidgeCapping();\n this.ridgeGeo.geometry.translate(- this.ridgeGeo.width / 2 + 1, -this.ridgeGeo.height / 2, 0);\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve) => {\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PATIOS));\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.SHEET_OUTLINE));\n\n //test\n //this.scene.remove(...this.scene.children.filter(x => x.userData.type == 'HELPER'));\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == 'RAKECUT'));\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == 'CUTGUTTER'));\n this.extraOffsetZ = this.APP.existingWallManager.geo_existingWallL1.width + this.APP.eaveManager.backOverhang;\n this.totalBaySize = this.APP.dialogEditBay.totalBaySize;\n\n this.addRoofLeft();\n this.addRoofRight();\n this.addCutout();\n\n let offsetFront = this.totalBaySize + UI.overhangFront - UI.existingWidth1 / 2 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n let offsetBack = - UI.overhangBack - UI.existingWidth1 / 2 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n\n let clipingPlaneFront = new Plane(new Vector3(0, 0, -1), offsetFront);\n let clipingPlaneBack = new Plane(new Vector3(0, 0, 1), -offsetBack);\n \n\n this.material.clippingPlanes = [clipingPlaneFront, clipingPlaneBack];\n MaterialManager.Instance().ROOF_BASE.clippingPlanes = [clipingPlaneFront, clipingPlaneBack];\n let width = this.totalBaySize + UI.overhangBack + UI.overhangFront;\n this.roofWidth = width;\n this.roofLength = UI.span / 2 + UI.overhangRight;\n let roofSheetingCount = Math.ceil(width / RIBSPAN_PANEL_WIDTH);\n let offsetZ = - UI.overhangBack;\n\n let panelDirectionOfset = 1;\n if(this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT){\n offsetZ = this.totalBaySize + UI.overhangFront - RIBSPAN_PANEL_WIDTH;\n panelDirectionOfset = -1;\n }\n else if(this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.LEFT_TO_RIGHT){\n offsetZ = - UI.overhangBack;\n }\n\n if (this.APP.sltCutOut.currentValue == 1 && this.APP.sltExistingType.currentValue == 1 && this.MANAGER.cutoutCondition) {\n for (let index = 0; index < roofSheetingCount; index++) {\n let last = index == roofSheetingCount - 1;\n\n this.addRoofSheetingRight(offsetZ, [this.csg_cutoutLeft]);\n\n this.addRoofSheetingLeft(offsetZ, [this.csg_cutoutLeft]);\n\n offsetZ += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n }\n else if (this.APP.sltCutOut.currentValue == 1 && this.APP.sltExistingType.currentValue == 2 && this.MANAGER.cutoutCondition) {\n for (let index = 0; index < roofSheetingCount; index++) {\n let last = index == roofSheetingCount - 1;\n\n this.addRoofSheetingRight(offsetZ, [this.csg_cutoutRight]);\n\n this.addRoofSheetingLeft(offsetZ, [this.csg_cutoutRight]);\n\n offsetZ += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n }\n else if (this.APP.sltCutOut.currentValue == 1 && this.APP.sltExistingType.currentValue == 3 && this.MANAGER.cutoutCondition) {\n for (let index = 0; index < roofSheetingCount; index++) {\n let last = index == roofSheetingCount - 1;\n\n\n this.addRoofSheetingRight(offsetZ, [this.csg_cutoutLeft, this.csg_cutoutRight]);\n\n this.addRoofSheetingLeft(offsetZ, [this.csg_cutoutLeft, this.csg_cutoutRight]);\n\n offsetZ += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n }\n else {\n for (let index = 0; index < roofSheetingCount; index++) {\n let last = index == roofSheetingCount - 1;\n\n this.addRoofSheetingRight(offsetZ, null);\n\n this.addRoofSheetingLeft(offsetZ, null);\n\n offsetZ += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n }\n\n this.addBargeCappingRight();\n this.addBargeCappingLeft();\n\n this.addGutterRight();\n this.addGutterLeft();\n\n this.addRidgeCapping();\n\n this.showPanelOutline();\n\n this.scene.visible = UI.showRoof\n\n resolve();\n });\n }\n private totalHeightFromEaveHeightToTopOfExistingRoof(){\n const height = \n this.geometryManager.EAVE.EAVE.height \n + UI.fasciaDepth \n + UI.eaveWidth * this.utils.tan(UI.existingRoofPitch) \n + this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.height / this.utils.cos(UI.existingRoofPitch)\n \n return height\n }\n private totalHeightFromEaveHeightToTopOfFlyoverBraket(){\n const height = this.totalHeightFromEaveHeightToTopOfExistingRoof() + UI.braketHeight - FIT_FLYOVER_BRAKET_ON_ROOF;\n\n return height\n }\n private addCutout() {\n if (this.APP.sltCutOut.currentValue == 1) {\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == 'CUTOUT'));\n\n let offsetX = this.APP.sldExistingLength.currentValue / 2 + this.APP.existingWallManager.geo_existingWallL2.width + 100;\n let offsetY = 0;\n let offsetZ = this.APP.sldExistingWidth1.currentValue / 2 - this.APP.existingWallManager.geo_existingWallL2.width - this.APP.sldBackOverhang.currentValue;\n\n let scaleX = (this.APP.sldExistingLength2.currentValue + 5000) / 1000;\n if (scaleX == 0) scaleX = 1;\n let scaleY = (this.APP.sldExistingWallHeight.currentValue + 5000) / 1000;\n let scaleZ = (this.APP.sldExistingWidth1.currentValue + this.APP.sldBackOverhang.currentValue + 5000) / 1000;\n if (scaleZ == 0) scaleZ = 1;\n\n if (this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3) {\n this.mesh_CutoutLeft = new Mesh(this.geo_cutoutLeft, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.mesh_CutoutLeft.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: 'CUTOUT' };\n\n this.mesh_CutoutLeft.position.set(-offsetX, offsetY, offsetZ);\n this.mesh_CutoutLeft.scale.set(scaleX, scaleY, scaleZ);\n\n // this.APP.scene.add(this.mesh_CutoutLeft);\n\n this.mesh_CutoutLeft.updateMatrix();\n this.csg_cutoutLeft = CSG.fromMesh(this.mesh_CutoutLeft);\n }\n if (this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3) {\n this.mesh_CutoutRight = new Mesh(this.geo_cutoutRight, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.mesh_CutoutRight.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: 'CUTOUT' };\n\n this.mesh_CutoutRight.position.set(offsetX, offsetY, offsetZ);\n this.mesh_CutoutRight.scale.set(scaleX, scaleY, scaleZ);\n\n // this.APP.scene.add(this.mesh_CutoutRight);\n\n this.mesh_CutoutRight.updateMatrix();\n this.csg_cutoutRight = CSG.fromMesh(this.mesh_CutoutRight);\n }\n }\n }\n public getOutLines(): Printing2DGeometry {\n\n let objs = this.roofGroupRight.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL\n || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ).concat(...this.roofGroupLeft.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ));\n\n let gutterGroupObjs = this.roofGroupRight.children.filter(o => o.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS)\n .concat(...this.roofGroupLeft.children.filter(o => o.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS));\n let gutterObjs: Object3D[] = [];\n for(let group of gutterGroupObjs){\n gutterObjs.push(...group.children);\n }\n objs = [...objs, ...gutterObjs];\n\n let lsGeometries: Printing2DLine[] = [];\n\n let offsetFront = this.totalBaySize + UI.overhangFront - UI.existingWidth1 / 2 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n let offsetBack = - UI.overhangBack - UI.existingWidth1 / 2 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n\n let roofClipingPlaneLeft = new Plane(new Vector3(0, 0, -1), offsetFront);\n let roofClipingPlaneRight = new Plane(new Vector3(0, 0, 1), -offsetBack);\n\n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale((o as Mesh), 60);\n\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n outlineGeo.translate(0, 5000, 0);\n\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL) {\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneRight);\n }\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE) {\n outlineGeo = this.utils.clipOutlineBasePanel(outlineGeo, roofClipingPlaneLeft);\n outlineGeo = this.utils.clipOutlineBasePanel(outlineGeo, roofClipingPlaneRight);\n }\n\n let simplifiedGeo = this.simplifyGeo(outlineGeo);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: simplifiedGeo.vertices,\n views: o.userData.views\n });\n }\n\n let ridgeCapping = this.scene.children.find(el => el.userData.type === GEOMETRY_TYPE.RIDGE_CAPPING)\n if(ridgeCapping){\n ridgeCapping.children.forEach(el => {\n this.utils.createOutline(el as Mesh, lsGeometries);\n })\n }\n\n lsGeometries.push({\n objectType: GEOMETRY_TYPE.ROOF_COVER,\n vertices: this.makeRoofPolygon(),\n color: this.utils.convertHexColorToRgb(`#${new Color(UI.panelColor).getHexString()}`),\n views: [\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ]\n });\n\n return { lines: lsGeometries, texts: [] };\n }\n makeRoofPolygon() {\n const polygon = this.utils.getRoofCoverPolygonForFBRoof()\n this.MANAGER.patiosGroup.updateWorldMatrix(true, true)\n return polygon.map(el => (el as Vector3).applyMatrix4(this.MANAGER.patiosGroup.matrixWorld).add(new Vector3(this.roofGroupLeft.position.x, 0, -(UI.existingWidth1 / 2 + this.extraOffsetZ) - UI.overhangBack)))\n }\n public showPanelOutline(){\n if(this.APP.sltPanelDirectionShow.currentValue == false)\n return;\n\n let objs = this.roofGroupRight.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ).concat(...this.roofGroupLeft.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ));\n\n let offsetFront = this.totalBaySize + UI.overhangFront - UI.existingWidth1 / 2 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n let offsetBack = - UI.overhangBack - UI.existingWidth1 / 2 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n\n let roofClipingPlaneLeft = new Plane(new Vector3(0, 0, -1), offsetFront);\n let roofClipingPlaneRight = new Plane(new Vector3(0, 0, 1), -offsetBack);\n \n\n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale((o as Mesh), 60);\n\n //let outlineBox = new Box3().setFromBufferAttribute(outlineGeo.getAttribute('position') as Buffer);\n\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n //outlineGeo.translate(0, 1000, 0);\n\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE) {\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneRight);\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n }\n\n var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n line.userData = {type: GEOMETRY_TYPE.SHEET_OUTLINE};\n this.APP.scene.add( line );\n }\n }\n public simplifyGeo(geo: BufferGeometry): Geometry {\n let simplifiedGeo = new Geometry();\n let vertices = geo.getAttribute('position').array;\n for (let i = 0; i < vertices.length; i += 3) {\n simplifiedGeo.vertices.push(new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2]));\n }\n return simplifiedGeo;\n }\n //private getBracketHeight(offset): number{\n // let angle = this.APP.sltRoofPitch.currentValue;\n // return (this.APP.sldFlyOverBracketHeight.currentValue) - this.utils.tan(angle) * offset;\n //}\n public addRidgeCapping(){\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.RIDGE_CAPPING));\n\n let ridgeFront = this.createRidgeCapping();\n\n const height = this.getRoofOffsetY() +\n this.geo_RoofPanel.height / this.utils.cos(this.APP.sltRoofPitch.currentValue);\n \n let offsetX = 0\n if(UI.existingType == BUILDING_SIDE.RIGHT){\n offsetX = - this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width - 100 + ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n }\n if(UI.existingType == BUILDING_SIDE.LEFT){\n offsetX = this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n }\n \n const ridgeLength = this.totalBaySize + UI.overhangBack + UI.overhangFront;\n ridgeFront.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.RIDGE_CAPPING, length: ridgeLength, views: [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }]};\n ridgeFront.scale.setZ(ridgeLength / this.ridgeGeo.length);\n ridgeFront.position.set( offsetX, height, this.totalBaySize / 2 + (UI.overhangFront - UI.overhangBack) / 2 - UI.existingWidth1 / 2 - this.extraOffsetZ);\n this.scene.add(ridgeFront)\n }\n\n public createRidgeCapping(){\n let leftCap = new Mesh(this.ridgeGeo.geometry, MaterialManager.Instance().RIDGE_CAPPING);\n let rightCap = new Mesh(this.ridgeGeo.geometry, MaterialManager.Instance().RIDGE_CAPPING);\n \n rightCap.rotateY(Math.PI)\n \n leftCap.rotateZ(this.utils.degreesToRadians(UI.patiosPitch))\n rightCap.rotateZ(this.utils.degreesToRadians(UI.patiosPitch))\n \n leftCap.userData = {views: [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }]}\n rightCap.userData = {views: [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }]}\n \n return new Group().add(leftCap, rightCap)\n }\n\n public addRoofRight() {\n this.roofGroupRight = null;\n this.roofGroupRight = new Group();\n this.roofGroupRight.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PATIOS };\n\n let offsetY = this.getRoofOffsetY();\n // 0\n let offsetZ = -(UI.existingWidth1 / 2 + this.extraOffsetZ);\n\n this.roofGroupRight.position.setY(offsetY);\n this.roofGroupRight.position.setZ(offsetZ);\n this.roofGroupRight.rotateZ(-this.utils.degreesToRadians(UI.patiosPitch));\n\n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT){\n let offsetX = this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n this.roofGroupRight.position.setX(- offsetX)\n }\n\n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT){\n let offsetX = this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n this.roofGroupRight.position.setX(offsetX)\n }\n\n this.scene.add(this.roofGroupRight);\n }\n public addRoofLeft() {\n this.roofGroupLeft = null;\n this.roofGroupLeft = new Group();\n this.roofGroupLeft.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PATIOS };\n\n let offsetY = this.getRoofOffsetY();\n // 0\n let offsetZ = -(UI.existingWidth1 / 2 + this.extraOffsetZ);\n\n this.roofGroupLeft.position.setY(offsetY);\n this.roofGroupLeft.position.setZ(offsetZ);\n this.roofGroupLeft.rotateZ(this.utils.degreesToRadians(UI.patiosPitch));\n\n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT){\n let offsetX = this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n this.roofGroupLeft.position.setX(- offsetX)\n }\n\n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT){\n let offsetX = this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n this.roofGroupLeft.position.setX(offsetX)\n }\n\n this.scene.add(this.roofGroupLeft);\n }\n public addRoofSheetingRight(offsetZ: number, csgObjs: CSG[]) {\n let mesh = new Mesh(this.geo_RoofPanel.geometry, this.material);\n\n let scaleZ = (UI.span / 2 + UI.overhangRight) / this.utils.cos(UI.patiosPitch) / this.geo_RoofPanel.length;\n\n let offsetY = 0;\n let offsetX = 0;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setX(scaleZ);\n mesh.userData = { \n category: GEOMETRY_CATEGORY.PATIOS, \n type: GEOMETRY_TYPE.ROOF_PANEL, \n views: views,\n dir: UI.panelDirection === PANEL_DIRECTION.RIGHT_TO_LEFT ? \"L-R\" : \"R-L\"\n };\n\n let cutoutCondition = this.APP.sltCutOut.currentValue == 1 && this.APP.sltExistingType.currentValue != 0 && this.APP.sldExistingLength2.currentValue > 0;\n if (cutoutCondition) {\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n mesh.position.set(offsetX + this.MANAGER.patiosGroup.position.x, offsetY, offsetZ + this.roofGroupRight.position.z);\n mesh.updateMatrix();\n let meshResult = mesh.clone();\n\n if (cutoutCondition) {\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n }\n }\n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix));\n meshResult.applyMatrix4(matrixBefore);\n\n this.roofGroupRight.add(meshResult);\n }\n else {\n this.roofGroupRight.add(mesh);\n }\n }\n public addRoofSheetingLeft(offsetZ: number, csgObjs: CSG[]) {\n let mesh = new Mesh(this.geo_RoofPanel.geometry, this.material);\n\n let scaleZ = (UI.span / 2 + UI.overhangLeft) / this.utils.cos(UI.patiosPitch) / this.geo_RoofPanel.length;\n\n let offsetY = 0;\n let offsetX = -scaleZ * this.geo_RoofPanel.length;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setX(scaleZ);\n mesh.userData = { \n category: GEOMETRY_CATEGORY.PATIOS, \n type: GEOMETRY_TYPE.ROOF_PANEL, \n views: views,\n dir: UI.panelDirection === PANEL_DIRECTION.LEFT_TO_RIGHT ? \"L-R\" : \"R-L\"\n };\n\n let cutoutCondition = this.APP.sltCutOut.currentValue == 1 && this.APP.sltExistingType.currentValue != 0 && this.APP.sldExistingLength2.currentValue > 0;\n if (cutoutCondition) {\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n mesh.position.set(offsetX + this.MANAGER.patiosGroup.position.x, offsetY, offsetZ + this.roofGroupLeft.position.z);\n mesh.updateMatrix();\n let meshResult = mesh.clone();\n\n if (cutoutCondition) {\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n }\n }\n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix));\n meshResult.applyMatrix4(matrixBefore);\n\n this.roofGroupLeft.add(meshResult);\n }\n else {\n this.roofGroupLeft.add(mesh);\n }\n }\n private addBargeCappingRight() {\n let mesh: Mesh;\n\n let extraWallWidth = this.APP.existingWallManager.geo_existingWallW1.width + EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n\n let offsetXB = -this.totalBaySize / 2 - this.APP.sldLeftOverhang.currentValue;\n let offsetXL1 = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue) + this.APP.sldExistingLength2.currentValue - extraWallWidth;\n let offsetXL2 = 0;\n\n let offsetXR1 = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue - this.APP.sldExistingLength2.currentValue + extraWallWidth;\n let offsetXR2 = 0;\n\n let offsetZL = this.totalBaySize + UI.overhangFront;\n let offsetZR = - UI.overhangBack;\n\n let bargeBackLength = this.roofWidth;\n let scaleCutoutVer = this.utils.getHypotenuseByCos(this.APP.sldExistingWidth1.currentValue + this.geo_roofPanelBargeCappingLeft.width, this.APP.sltRoofPitch.currentValue) / this.geo_roofPanelBargeCappingLeft.length;\n let scaleZLeft = this.utils.getHypotenuseByCos(this.roofLength, this.APP.sltRoofPitch.currentValue) / this.geo_roofPanelBargeCappingLeft.length;\n let scaleZRight = this.utils.getHypotenuseByCos(this.roofLength, this.APP.sltRoofPitch.currentValue) / this.geo_roofPanelBargeCappingLeft.length;\n\n let offsetY = 0;\n let bargeLeftLength = this.roofLength;\n let bargeRightLength = this.roofLength;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n scaleZLeft = this.utils.getHypotenuseByCos(bargeLeftLength, this.APP.sltRoofPitch.currentValue) / this.geo_roofPanelBargeCappingLeft.length;\n scaleZRight = this.utils.getHypotenuseByCos(bargeRightLength, this.APP.sltRoofPitch.currentValue) / this.geo_roofPanelBargeCappingLeft.length;\n\n let fitScale = this.geo_roofPanelBargeCappingLeft.height * this.utils.tan(UI.patiosPitch) / this.geo_roofPanelBargeCappingLeft.length;\n\n //left\n mesh = new Mesh(this.geo_roofPanelBargeCappingLeft.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXL2 - fitScale * this.geo_roofPanelBargeCappingLeft.length, offsetY, offsetZL);\n mesh.scale.setX(scaleZLeft + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupRight.add(mesh);\n\n //right\n mesh = new Mesh(this.geo_roofPanelBargeCappingRight.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXR2 - fitScale * this.geo_roofPanelBargeCappingLeft.length, offsetY, offsetZR);\n mesh.scale.setX(scaleZRight + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupRight.add(mesh);\n }\n private addBargeCappingLeft() {\n let mesh: Mesh;\n\n let extraWallWidth = this.APP.existingWallManager.geo_existingWallW1.width + EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n\n let offsetXB = -this.totalBaySize / 2 - this.APP.sldLeftOverhang.currentValue;\n let offsetXL1 = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue) + this.APP.sldExistingLength2.currentValue - extraWallWidth;\n let offsetXL2 = 0;\n\n let offsetXR1 = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue - this.APP.sldExistingLength2.currentValue + extraWallWidth;\n let offsetXR2 = 0;\n\n let offsetZL = this.totalBaySize + UI.overhangFront;\n let offsetZR = - UI.overhangBack;\n\n let offsetY = 0;\n let bargeLeftLength = UI.span / 2 + UI.overhangLeft;\n let bargeRightLength = UI.span / 2 + UI.overhangLeft;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n let scaleZLeft = this.utils.getHypotenuseByCos(bargeLeftLength, this.APP.sltRoofPitch.currentValue) / this.geo_roofPanelBargeCappingLeft.length;\n let scaleZRight = this.utils.getHypotenuseByCos(bargeRightLength, this.APP.sltRoofPitch.currentValue) / this.geo_roofPanelBargeCappingLeft.length;\n\n let fitScale = this.geo_roofPanelBargeCappingLeft.height * this.utils.tan(UI.patiosPitch) / this.geo_roofPanelBargeCappingLeft.length;\n\n //left\n mesh = new Mesh(this.geo_roofPanelBargeCappingLeft.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXL2 - scaleZLeft * this.geo_roofPanelBargeCappingLeft.length, offsetY, offsetZL);\n mesh.scale.setX(scaleZLeft + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupLeft.add(mesh);\n\n //right\n mesh = new Mesh(this.geo_roofPanelBargeCappingRight.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXR2 - scaleZRight * this.geo_roofPanelBargeCappingLeft.length, offsetY, offsetZR);\n mesh.scale.setX(scaleZRight + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupLeft.add(mesh);\n }\n public addGutterRight() {\n let offsetXL = (UI.span / 2 + UI.overhangRight - CONST.GUTTER_ROOF_OFFSET_Z) / this.utils.cos(UI.patiosPitch);\n let offsetY = 0;\n let offsetZ = this.totalBaySize + UI.overhangFront;\n\n let gutterLength = this.roofWidth;\n let exLength = 300//Math.tan(extraAngle) * this.gutterInfo.width;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n\n let gutterGroup = this.utils.createGutterGroup(this.geo_gutterBack, this.geo_gutterCap,\n gutterLength, new Vector3(offsetXL, offsetY, offsetZ), new Vector3(0, Math.PI / 2, 0),\n views, 1, true, true);\n gutterGroup.rotateX(-this.utils.degreesToRadians(UI.patiosPitch))\n this.roofGroupRight.add(gutterGroup); \n }\n public addGutterLeft() {\n let offsetXL = (UI.span / 2 + UI.overhangLeft - CONST.GUTTER_ROOF_OFFSET_Z) / this.utils.cos(UI.patiosPitch);\n let offsetY = 0;\n let offsetZ = - UI.overhangBack;\n\n let gutterLength = this.roofWidth;\n let exLength = 300//Math.tan(extraAngle) * this.gutterInfo.width;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n\n let gutterGroup = this.utils.createGutterGroup(this.geo_gutterBack, this.geo_gutterCap,\n gutterLength, new Vector3(-offsetXL, offsetY, offsetZ), new Vector3(0, -Math.PI / 2, 0),\n views, 1, true, true);\n gutterGroup.rotateX(-this.utils.degreesToRadians(UI.patiosPitch))\n this.roofGroupLeft.add(gutterGroup); \n }\n public getRoofOffsetY() {\n return UI.eaveHeight\n + this.totalHeightFromEaveHeightToTopOfFlyoverBraket()\n + this.geometryManager.getBeam().height\n + this.utils.tan(UI.patiosPitch) * (UI.span / 2);\n }\n public destroy(): void {\n this.unregisterEvent();\n }\n public onColorChanged() {\n if(this.utils && this.geo_RoofPanel.geometry){\n this.utils.changeGeoColor(this.geo_RoofPanel.geometry, new Vector3(0, 1, 0), UI.roofColor.toString());\n }\n }\n private registerEvent(): void {\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.eventHandleId = this.onColorChanged.bind(this);\n this.controlsToRegisterEvent = [\n this.APP.sltColourRoof\n ];\n this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n\n this.controlsToRegisterEvent2 = [\n this.APP.sltRoofSheetingType,\n this.APP.sltRoofThickness,\n this.APP.sltBargeType,\n this.APP.sltDripBarge,\n this.APP.sltGutterType,\n this.APP.sltRoofPitch\n ];\n this.controlsToRegisterEvent2.forEach(c => c.addAction(this.objectSizeChangedHandle));\n }\n private unregisterEvent(): void {\n this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach(c => c.removeAction(this.objectSizeChangedHandle));\n this.controlsToRegisterEvent2 = undefined;\n }\n private objectSizeChanged() {\n this.optimize().then(() => { this.load() });\n }\n public uiChanged(): void {\n this.load();\n }\n uiCHangedDefer() {\n if (this.APP.sltCutOut.currentValue == 1) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => { this.load() }, this.deferTimeout);\n }\n else {\n this.load();\n }\n }\n}\n","import {\n HomeComponent as AppComponent,\n HomeComponent,\n} from \"../../containers/home/home.component\";\nimport {\n Scene,\n Material,\n Mesh,\n BufferGeometry,\n Box3,\n Group,\n LineSegments,\n LineBasicMaterial,\n Plane,\n Vector3,\n BoxHelper,\n Geometry,\n BoxBufferGeometry,\n Object3D,\n Matrix4,\n} from \"three\";\nimport { Util, getBeamEndCapCode, getRafterBeamEndCapCode } from \"../utils\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport {\n CONFIG as env,\n GEOMETRY_TYPE,\n GEOMETRY_CATEGORY,\n} from \"src/app/app.config\";\nimport {\n GeometryInfo,\n Printing2DGeometry,\n Printing2DLine,\n Printing2DGeometryType,\n Print2DView,\n ViewType,\n LineType,\n} from \"src/app/core/models\";\nimport { PatiosGableFreeStandingManager } from \".\";\nimport { UI } from \"../ui\";\nimport { EXISTING_BUILDING_CONFIG } from \"src/app/app.constants\";\nimport _ from \"lodash\";\n\nexport class ColumnAndPurlinManager {\n private scene: Group;\n private APP: AppComponent;\n private material: Material;\n //private beamMaterial: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private geo_superiorPost: GeometryInfo;\n private geo_centerSuperiorPost: GeometryInfo;\n public geo_superiorBeam: GeometryInfo;\n private geo_beamEndCap: GeometryInfo;\n private geo_rafterBeamEndCap: GeometryInfo;\n private geo_bracket: GeometryInfo;\n private geo_groundBase: GeometryInfo;\n\n private eventHandleId: any;\n private totalBaySize: number;\n private frontPostHeight: number;\n\n private geoBeamJoint: GeometryInfo;\n private geoHouseBeamJoint: GeometryInfo;\n\n private geo_RafterBeam: GeometryInfo;\n private geo_downPipe: GeometryInfo;\n private geo_downPipeL: GeometryInfo;\n private downpipeGroup: Group;\n private downpipeGroupBack: Group;\n private objectSizeChangedHandle: any;\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n\n private FIT_SHEETING: number = 0;\n private FIT_SHEETING_BASE: number = -60;\n\n constructor(app: AppComponent, manager: PatiosGableFreeStandingManager) {\n this.APP = app;\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n\n this.scene = manager.patiosGroup;\n this.material = MaterialManager.Instance().DEFAULT.clone();\n //this.beamMaterial = MaterialManager.Instance().DEFAULT.clone();\n\n this.registerEvent();\n }\n\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n let bracketHeight =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height / 2;\n let bracketWidth = this.geometryManager.FLY_OVER_BRACKET.S65x3.width;\n\n this.geo_bracket = new GeometryInfo();\n this.geo_bracket.geometry =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.geometry\n .clone()\n .rotateX(Math.PI / 2)\n .translate(bracketWidth / 2, bracketHeight, bracketWidth / 2);\n this.geo_bracket.width =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.width;\n this.geo_bracket.length =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.length;\n this.geo_bracket.height =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n this.geo_superiorBeam = this.geometryManager.getBeam();\n this.geo_superiorBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_superiorBeam.length / 2,\n this.geo_superiorBeam.height / 2,\n this.geo_superiorBeam.width / 2\n );\n\n this.geoBeamJoint = this.geometryManager.getBeamJoint();\n this.geoHouseBeamJoint = this.geometryManager.getHouseBeamJoint();\n\n this.geo_RafterBeam = this.geometryManager.getRafterBeam();\n this.geo_RafterBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_RafterBeam.length / 2,\n -this.geo_RafterBeam.height / 2,\n this.geo_RafterBeam.width / 2\n );\n\n this.geo_beamEndCap = this.geometryManager.getBeamEndCap();\n this.geo_beamEndCap.geometry.translate(\n 0,\n this.geo_beamEndCap.height / 2,\n 0\n );\n\n this.geo_rafterBeamEndCap = this.geometryManager.getRafterBeamEndCap();\n this.geo_rafterBeamEndCap.geometry.translate(\n 0,\n -this.geo_rafterBeamEndCap.height / 2,\n this.geo_rafterBeamEndCap.length / 2\n );\n\n this.geo_superiorPost = this.geometryManager.getPost();\n this.geo_superiorPost.geometry\n .rotateX(Math.PI / 2)\n .translate(\n this.geo_superiorPost.width / 2,\n this.geo_superiorPost.height / 2,\n this.geo_superiorPost.width / 2\n );\n\n this.geo_centerSuperiorPost = this.geometryManager.getCenterPost();\n this.geo_centerSuperiorPost.geometry\n .rotateX(Math.PI / 2)\n .translate(\n this.geo_centerSuperiorPost.width / 2,\n this.geo_centerSuperiorPost.height / 2,\n this.geo_centerSuperiorPost.width / 2\n );\n\n this.geo_groundBase = new GeometryInfo();\n this.geo_groundBase.width = 1000;\n this.geo_groundBase.height = 1;\n this.geo_groundBase.length = 1000;\n this.geo_groundBase.geometry = new BoxBufferGeometry(\n this.geo_groundBase.width,\n this.geo_groundBase.height,\n this.geo_groundBase.length\n );\n this.geo_groundBase.geometry.translate(\n 0,\n 0,\n this.geo_groundBase.length / 2\n );\n\n this.geo_downPipe = this.geometryManager.getDownPipe();\n this.geo_downPipeL = this.geometryManager.getDownPipeL();\n\n this.scene.remove(\n ...this.scene.children.filter(\n (c) => c.userData.type == GEOMETRY_TYPE.DOWNPIPE\n )\n );\n this.downpipeGroup = new Group();\n this.downpipeGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeGroup);\n\n this.downpipeGroupBack = new Group();\n this.downpipeGroupBack.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeGroupBack);\n\n resolve();\n });\n }\n\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SUPERIOR_POST\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SUPERIOR_CENTER_POST\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.MESH_OUTLINE\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == \"COLUMN_OUTLINE\"\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.GROUND_BASE\n )\n );\n this.downpipeGroup.children = [];\n this.downpipeGroupBack.children = [];\n\n // this.outlineGroup = new Group();\n // this.outlineGroup.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.MESH_OUTLINE };\n // this.scene.add(this.outlineGroup);\n\n this.totalBaySize = 0;\n for (let b of this.APP.dialogEditBay.listBay) {\n this.totalBaySize += b.value;\n }\n\n this.addSuperiorBeam({ front: true });\n this.addSuperiorBeam({ back: true });\n if (this.APP.sldMultiSpan.currentValue > 0) {\n this.addSuperiorBeam({ multiSpan: true });\n }\n\n this.addCenterSuperiorBeam();\n\n this.addGround();\n\n let offsetX = -this.totalBaySize / 2;\n let first = true;\n let last = false;\n for (let i = 0; i <= this.APP.dialogEditBay.listBay.length; i++) {\n if (i == this.APP.dialogEditBay.listBay.length) {\n last = true;\n }\n this.addPost(offsetX, { back: true, first, last });\n this.addPost(offsetX, { front: true, first, last });\n\n this.addCenterPost(offsetX, { center: true, first, last });\n\n let fitBeam = 0;\n\n if (i !== 0) {\n if (i == this.APP.dialogEditBay.listBay.length) {\n fitBeam = this.geo_superiorBeam.width;\n } else {\n fitBeam = this.geo_superiorBeam.width / 2;\n }\n }\n\n this.addHorSuperiorBeam(offsetX - fitBeam, {\n front: true,\n first,\n last,\n });\n this.addRafterSuperiorBeam(offsetX - fitBeam, {\n front: true,\n first,\n last,\n });\n this.addRafterSuperiorBeam(offsetX - fitBeam, {\n back: true,\n first,\n last,\n });\n\n if (this.APP.sldMultiSpan.currentValue > 0) {\n this.addPost(offsetX, { multiSpan: true, first, last });\n }\n if (i < this.APP.dialogEditBay.listBay.length) {\n let b = this.APP.dialogEditBay.listBay[i];\n offsetX += b.value;\n }\n first = false;\n }\n\n this.addDownPipeFront();\n this.addDownPipeBack();\n this.showBeamOutline();\n this.updateUI();\n resolve();\n });\n }\n public showBeamOutline() {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.BEAM_OUTLINE\n )\n );\n\n if (!UI.beamLayoutShow) return;\n\n const objs = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n const meshes = [];\n objs.forEach((el) => {\n if (el.type == \"Group\") {\n meshes.push(\n ...el.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n }\n });\n\n for (let o of meshes) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n o as Mesh,\n 10\n );\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n\n var line = new LineSegments(\n outlineGeo,\n MaterialManager.Instance().BEAM_OUTLINE\n );\n line.userData = { type: GEOMETRY_TYPE.BEAM_OUTLINE };\n this.APP.scene.add(line);\n }\n }\n private updateUI() {\n this.APP.sldMinHeight.setValue(_.round(this.frontPostHeight, 0));\n }\n private addDownPipeFront() {\n let offsetZ =\n this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + 100;\n let offsetX = -this.totalBaySize / 2 + 50;\n\n this.downpipeGroup.position.set(offsetX, 0, offsetZ);\n let offsetY =\n this.APP.sldBuildingHeight.currentValue -\n this.APP.sldFrontOverhang.currentValue *\n this.utils.tan(this.APP.sltRoofPitch.currentValue);\n\n if (this.APP.sltGutterType.currentValue == 0) {\n offsetY -= 80;\n } else {\n offsetY -= 60;\n }\n\n let userData = { type: GEOMETRY_TYPE.DOWNPIPE };\n\n offsetY -= 160;\n\n let meshLBottom = new Mesh(\n this.geo_downPipeL.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshLBottom.userData = userData;\n meshLBottom.position.set(0, offsetY, 20);\n meshLBottom.rotateY(Math.PI / 2);\n\n let meshLTop = new Mesh(\n this.geo_downPipeL.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshLTop.userData = userData;\n meshLTop.rotation.set(Math.PI, Math.PI / 2, 0);\n meshLTop.position.set(\n 0,\n offsetY + 230,\n this.APP.sldFrontOverhang.currentValue + this.FIT_SHEETING - 100\n );\n\n let meshPipeConnect = new Mesh(\n this.geo_downPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipeConnect.userData = userData;\n meshPipeConnect.rotation.set(Math.PI / 2, 0, 0);\n meshPipeConnect.position.set(0, offsetY + 115, 50);\n meshPipeConnect.scale.set(\n 1,\n (this.APP.sldFrontOverhang.currentValue + this.FIT_SHEETING - 140) /\n this.geo_downPipe.height,\n 1\n );\n\n this.downpipeGroup.add(meshLBottom, meshLTop, meshPipeConnect);\n\n let scaleY = offsetY / this.geo_downPipe.height;\n\n let meshPipe = new Mesh(\n this.geo_downPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipe.userData = userData;\n meshPipe.scale.setY(scaleY);\n\n this.downpipeGroup.add(meshPipe);\n }\n private addDownPipeBack() {\n let offsetZ = -100;\n let offsetX = -this.totalBaySize / 2 + 50;\n\n this.downpipeGroupBack.position.set(offsetX, 0, offsetZ);\n let offsetY =\n this.APP.sldBuildingHeight.currentValue -\n this.APP.sldBackOverhang.currentValue *\n this.utils.tan(this.APP.sltRoofPitch.currentValue);\n\n if (this.APP.sltGutterType.currentValue == 0) {\n offsetY -= 80;\n } else {\n offsetY -= 60;\n }\n\n let userData = { type: GEOMETRY_TYPE.DOWNPIPE };\n\n offsetY -= 160;\n\n let meshLBottom = new Mesh(\n this.geo_downPipeL.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshLBottom.userData = userData;\n meshLBottom.position.set(0, offsetY, 20);\n meshLBottom.rotateY(Math.PI / 2);\n\n let meshLTop = new Mesh(\n this.geo_downPipeL.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshLTop.userData = userData;\n meshLTop.rotation.set(Math.PI, Math.PI / 2, 0);\n meshLTop.position.set(\n 0,\n offsetY + 230,\n this.APP.sldBackOverhang.currentValue + this.FIT_SHEETING - 100\n );\n\n let meshPipeConnect = new Mesh(\n this.geo_downPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipeConnect.userData = userData;\n meshPipeConnect.rotation.set(Math.PI / 2, 0, 0);\n meshPipeConnect.position.set(0, offsetY + 115, 50);\n meshPipeConnect.scale.set(\n 1,\n (this.APP.sldBackOverhang.currentValue + this.FIT_SHEETING - 140) /\n this.geo_downPipe.height,\n 1\n );\n\n this.downpipeGroupBack.add(meshLBottom, meshLTop, meshPipeConnect);\n\n let scaleY = offsetY / this.geo_downPipe.height;\n\n let meshPipe = new Mesh(\n this.geo_downPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipe.userData = userData;\n meshPipe.scale.setY(scaleY);\n\n this.downpipeGroupBack.rotation.set(0, Math.PI, 0);\n this.downpipeGroupBack.add(meshPipe);\n }\n private addGround() {\n let offsetZ = -this.APP.sldBackOverhang.currentValue;\n let width =\n this.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n let length =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldBackOverhang.currentValue;\n let offsetX =\n (this.APP.sldRightOverhang.currentValue -\n this.APP.sldLeftOverhang.currentValue) /\n 2;\n\n let base = new Mesh(\n this.geo_groundBase.geometry,\n MaterialManager.Instance().BASE\n );\n base.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GROUND_BASE,\n };\n base.position.set(offsetX, 0, offsetZ);\n base.scale.set(\n width / this.geo_groundBase.width,\n 1,\n length / this.geo_groundBase.length\n );\n\n this.scene.add(base);\n }\n private addCenterPost(offsetX, userDataPos) {\n let meshPost = new Mesh(\n this.geo_centerSuperiorPost.geometry,\n MaterialManager.Instance().BEAM\n );\n meshPost.userData = {\n ...userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_CENTER_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let postOffsetZ = 0;\n\n let scalePostY = 1;\n\n let views: Print2DView[];\n\n postOffsetZ =\n (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2 -\n this.geo_centerSuperiorPost.width / 2;\n\n this.frontPostHeight =\n this.APP.sldBuildingHeight.currentValue - this.geo_superiorBeam.height;\n\n scalePostY =\n (((this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) /\n 2 -\n this.geo_superiorBeam.width / 2) *\n this.utils.tan(this.APP.sltRoofPitch.currentValue) -\n this.geo_superiorBeam.height) /\n this.geo_centerSuperiorPost.height;\n views = [\n // { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n let postOffsetX = offsetX - this.geo_centerSuperiorPost.width / 2;\n\n if (userDataPos.first) {\n postOffsetX += this.geo_centerSuperiorPost.width / 2;\n } else if (userDataPos.last) {\n postOffsetX -= this.geo_centerSuperiorPost.width / 2;\n } else {\n // postOffsetX -= this.geo_superiorPost.width / 2\n }\n\n meshPost.userData.views = views;\n meshPost.position.set(\n postOffsetX,\n this.APP.sldBuildingHeight.currentValue,\n postOffsetZ\n );\n meshPost.scale.setY(scalePostY);\n\n this.scene.add(meshPost);\n }\n private addPost(offsetX: number, userDataPos: any): void {\n let meshPost = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n meshPost.userData = {\n ...userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let postOffsetZ = 0;\n\n let scalePostY = 1;\n\n let views: Print2DView[];\n\n if (userDataPos.front) {\n postOffsetZ = this.APP.sldSpan.currentValue;\n this.frontPostHeight =\n this.APP.sldBuildingHeight.currentValue - this.geo_superiorBeam.height;\n\n scalePostY =\n this.APP.sldBuildingHeight.currentValue / this.geo_superiorPost.height;\n\n if (this.APP.sldMultiSpan.currentValue > 0) {\n postOffsetZ -= this.geo_superiorPost.width / 2;\n } else {\n postOffsetZ -= this.geo_superiorPost.width;\n }\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n if (userDataPos.back) {\n postOffsetZ = 0;\n scalePostY =\n this.APP.sldBuildingHeight.currentValue / this.geo_superiorPost.height;\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n if (userDataPos.multiSpan) {\n postOffsetZ =\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue -\n this.geo_superiorPost.width;\n // scalePostY = this.utils.getHeightByAngle(this.APP.sldBuildingHeight.currentValue - this.geo_superiorBeam.height,\n // this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue,\n // this.APP.sltRoofPitch.currentValue, -1)/this.geo_superiorPost.height;\n\n scalePostY =\n this.APP.sldBuildingHeight.currentValue / this.geo_superiorPost.height;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n meshPost.userData.views = views;\n\n let postOffsetX = offsetX;\n if (userDataPos.first) {\n } else if (userDataPos.last) {\n postOffsetX -= this.geo_superiorPost.width;\n } else {\n postOffsetX -= this.geo_superiorPost.width / 2;\n }\n\n meshPost.position.set(postOffsetX, 0, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n\n this.scene.add(meshPost);\n }\n\n public addSuperiorBeam(userDataPos: any) {\n let offsetXL = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n let offsetZ = 0;\n let offsetY = 0;\n\n let beamLength =\n this.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n\n let views: Print2DView[];\n\n if (userDataPos.front) {\n offsetY =\n this.APP.sldBuildingHeight.currentValue - this.geo_superiorBeam.height;\n\n //this.APP.sldBuildingHeight.currentValue + this.getBracketHeight(this.APP.sldSpan.currentValue);\n offsetZ = this.APP.sldSpan.currentValue;\n if (this.APP.sldMultiSpan.currentValue > 0) {\n offsetZ -= this.geo_superiorBeam.width / 2;\n } else {\n offsetZ -= this.geo_superiorBeam.width;\n }\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.back) {\n offsetY =\n this.APP.sldBuildingHeight.currentValue - this.geo_superiorBeam.height;\n offsetZ = 0;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.multiSpan) {\n offsetY =\n this.APP.sldBuildingHeight.currentValue - this.geo_superiorBeam.height;\n offsetZ =\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue -\n this.geo_superiorBeam.width;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n this.cutStandardBeamByCutBeamWithinBayControl(\n this.geo_superiorBeam,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetXL, offsetY, offsetZ),\n new Vector3(),\n views,\n 1,\n userDataPos,\n \"EB\",\n this.geoBeamJoint\n );\n }\n\n public addCenterSuperiorBeam() {\n let offsetXL = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n let offsetZ = 0;\n let offsetY = 0;\n\n let beamLength =\n this.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n\n offsetY =\n this.APP.sldBuildingHeight.currentValue +\n ((this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) /\n 2 -\n this.geo_superiorBeam.width / 2) *\n this.utils.tan(this.APP.sltRoofPitch.currentValue) -\n this.geo_superiorBeam.height;\n\n offsetZ =\n (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2 -\n this.geo_superiorBeam.width / 2;\n\n let views: Print2DView[] = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n this.cutStandardBeamByCutBeamWithinBayControl(\n this.geo_superiorBeam,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetXL, offsetY, offsetZ),\n new Vector3(),\n views,\n 1,\n { center: true },\n \"RB\",\n this.geoBeamJoint\n );\n }\n private cutStandardBeamByCutBeamWithinBayControl(\n beamGeo: GeometryInfo,\n beamCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n userDataPos: any,\n beamName = \"\",\n jointGeo: GeometryInfo\n ) {\n // Map list cut beam here\n const beamStartX = pos.x;\n const beamEndX = pos.x + length;\n\n let endOfBayX = -UI.totalBayLength / 2;\n let startCutBeamX = beamStartX;\n let endCutBeamX = beamStartX;\n\n const beams = this.utils.getListSeperateBeamsByBays(\n endOfBayX,\n beamStartX,\n beamEndX,\n endCutBeamX,\n startCutBeamX\n );\n\n for (let i = 0; i < beams.length; i++) {\n endCutBeamX = beams[i][1];\n startCutBeamX = beams[i][0];\n let beamGroup = this.utils.createBeamGroup(\n beamGeo,\n beamCapGeo,\n endCutBeamX - startCutBeamX,\n new Vector3(startCutBeamX, pos.y, pos.z),\n rot,\n views,\n directionOffset,\n userDataPos,\n UI.beamLayoutShow,\n {\n hasStartCap: UI.beamType == 0 && i == 0,\n hasEndCap:\n UI.beamType == 0 &&\n (i == beams.length - 1 || (i == 0 && beams.length == 1)),\n hasStartJoint: i !== 0,\n hasEndJoint: false,\n jointGeo: jointGeo,\n }\n );\n beamGroup.userData = {\n ...beamGroup.userData,\n name: beamName,\n };\n this.scene.add(beamGroup);\n }\n }\n public addRafterSuperiorBeam(offsetX, userDataPos: any) {\n if (\n this.APP.sltWindClass.currentValue == 0 ||\n this.APP.sltWindClass.currentValue == 1\n ) {\n if (this.totalBaySize <= 6000 && this.APP.sldSpan.currentValue <= 7000) {\n return;\n }\n }\n if (\n this.APP.sltWindClass.currentValue == 3 ||\n this.APP.sltWindClass.currentValue == 4 ||\n this.APP.sltWindClass.currentValue == 5\n ) {\n return;\n }\n let mesh;\n\n let offsetXL = 0;\n let offsetXR =\n ((this.APP.sldMultiSpan.currentValue + this.APP.sldSpan.currentValue) /\n 2 -\n this.geo_superiorBeam.width / 2) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n let offsetZ = 0;\n let offsetY = 0;\n\n let scaleX =\n ((this.APP.sldMultiSpan.currentValue + this.APP.sldSpan.currentValue) /\n 2 -\n this.geo_superiorBeam.width / 2) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue) /\n this.geo_RafterBeam.length;\n\n let views: Print2DView[];\n\n if (userDataPos.front) {\n let material = MaterialManager.Instance().BEAM.clone();\n\n let nBottom = new Vector3(0, 1, 0).normalize();\n let pBottom = new Vector3(0, this.APP.sldBuildingHeight.currentValue, 0);\n let planeBottom = new Plane().setFromNormalAndCoplanarPoint(\n nBottom,\n pBottom\n );\n\n let nVer = new Vector3(0, 0, 1).normalize();\n let pVer = new Vector3(0, 0, this.geo_superiorBeam.width / 2);\n let planeVer = new Plane().setFromNormalAndCoplanarPoint(nVer, pVer);\n\n material.clippingPlanes = [planeBottom, planeVer];\n\n mesh = new Mesh(this.geo_RafterBeam.geometry, material);\n\n offsetY = this.APP.sldBuildingHeight.currentValue;\n offsetZ =\n this.APP.sldMultiSpan.currentValue + this.APP.sldSpan.currentValue;\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.back) {\n let material = MaterialManager.Instance().BEAM.clone();\n\n let nBottom = new Vector3(0, 1, 0).normalize();\n let pBottom = new Vector3(0, this.APP.sldBuildingHeight.currentValue, 0);\n let planeBottom = new Plane().setFromNormalAndCoplanarPoint(\n nBottom,\n pBottom\n );\n\n let nVer = new Vector3(0, 0, -1).normalize();\n let pVer = new Vector3(0, 0, -this.geo_superiorBeam.width / 2);\n let planeVer = new Plane().setFromNormalAndCoplanarPoint(nVer, pVer);\n\n material.clippingPlanes = [planeBottom, planeVer];\n\n mesh = new Mesh(this.geo_RafterBeam.geometry, material);\n\n offsetY =\n this.APP.sldBuildingHeight.currentValue +\n ((this.APP.sldMultiSpan.currentValue + this.APP.sldSpan.currentValue) /\n 2 -\n this.geo_superiorBeam.width / 2) *\n this.utils.tan(this.APP.sltRoofPitch.currentValue);\n offsetZ =\n (this.APP.sldMultiSpan.currentValue + this.APP.sldSpan.currentValue) /\n 2 -\n this.geo_superiorBeam.width / 2;\n\n views = [\n // { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM,\n position: userDataPos,\n views: views,\n };\n mesh.position.set(offsetXL, 0, 0);\n mesh.scale.setX(scaleX);\n\n let checkExec = /\\w{1}\\d{1,3}x(\\d{1,3})/.exec(this.geo_RafterBeam.name);\n let beamSize = checkExec && checkExec.length == 2 ? checkExec[1] : \"\";\n let lowerBraketName = getRafterBeamEndCapCode(\n EXISTING_BUILDING_CONFIG.RAFTER_BEAM_SIZE,\n false\n );\n let higherBraketName = getRafterBeamEndCapCode(\n EXISTING_BUILDING_CONFIG.RAFTER_BEAM_SIZE,\n true\n );\n\n let capL;\n let capR;\n if (userDataPos.front) {\n let matEndCap = MaterialManager.Instance().BEAM.clone();\n\n let heightReal =\n this.APP.sldBuildingHeight.currentValue +\n (this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n (this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue)) /\n 2;\n let heightPlane =\n heightReal * this.utils.cos(this.APP.sltRoofPitch.currentValue);\n let translateZ =\n this.utils.sin(this.APP.sltRoofPitch.currentValue) * heightPlane;\n\n let planeTop = new Plane(new Vector3(0, -1, 0));\n let matrixTranslateTop = new Matrix4().makeTranslation(\n 0,\n heightPlane,\n translateZ / 2\n );\n let matrixRotateTop = new Matrix4().makeRotationX(\n this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue)\n ); //tao voi z pitch do\n let matrixTotalTop = matrixTranslateTop.multiply(matrixRotateTop);\n planeTop.applyMatrix4(matrixTotalTop);\n\n let heightRealBottom =\n this.APP.sldBuildingHeight.currentValue -\n this.geo_RafterBeam.height /\n this.utils.cos(this.APP.sltRoofPitch.currentValue) +\n (this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n (this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue)) /\n 2;\n let heightPlaneBottom =\n heightRealBottom * this.utils.cos(this.APP.sltRoofPitch.currentValue);\n let translateZBottom =\n this.utils.sin(this.APP.sltRoofPitch.currentValue) * heightPlaneBottom;\n\n let planeBottom = new Plane(new Vector3(0, 1, 0));\n let matrixTranslateBottom = new Matrix4().makeTranslation(\n 0,\n heightPlaneBottom,\n translateZBottom / 2\n );\n let matrixRotateBottom = new Matrix4().makeRotationX(\n this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue)\n ); //tao voi z pitch do\n let matrixTotalBottom =\n matrixTranslateBottom.multiply(matrixRotateBottom);\n planeBottom.applyMatrix4(matrixTotalBottom);\n\n matEndCap.clippingPlanes = [planeTop, planeBottom];\n\n capL = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capL.position.set(offsetXL - 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capL.scale.setY(\n (this.geo_RafterBeam.height /\n this.utils.sin(this.APP.sltRoofPitch.currentValue) +\n this.geo_rafterBeamEndCap.length /\n this.utils.tan(this.APP.sltRoofPitch.currentValue)) /\n this.geo_rafterBeamEndCap.height\n );\n capL.rotateY(Math.PI / 2);\n capL.rotateX(\n -Math.PI / 2 +\n this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue)\n );\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: lowerBraketName,\n };\n\n capR = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capR.position.set(offsetXR + 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capR.scale.setY(\n (this.geo_RafterBeam.height /\n this.utils.cos(this.APP.sltRoofPitch.currentValue) +\n this.geo_rafterBeamEndCap.length *\n this.utils.tan(this.APP.sltRoofPitch.currentValue)) /\n this.geo_rafterBeamEndCap.height\n );\n capR.rotateY(-Math.PI / 2);\n capR.rotateX(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue)\n );\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: higherBraketName,\n };\n } else {\n let matEndCap = MaterialManager.Instance().BEAM.clone();\n\n let heightReal =\n this.APP.sldBuildingHeight.currentValue +\n (this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n (this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue)) /\n 2;\n let heightPlane =\n heightReal * this.utils.cos(this.APP.sltRoofPitch.currentValue);\n let translateZ =\n this.utils.sin(this.APP.sltRoofPitch.currentValue) * heightPlane;\n\n let planeTop = new Plane(new Vector3(0, -1, 0));\n let matrixTranslateTop = new Matrix4().makeTranslation(\n 0,\n heightPlane,\n -translateZ / 2\n );\n let matrixRotateTop = new Matrix4().makeRotationX(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue)\n ); //tao voi z pitch do\n let matrixTotalTop = matrixTranslateTop.multiply(matrixRotateTop);\n planeTop.applyMatrix4(matrixTotalTop);\n\n let heightRealBottom =\n this.APP.sldBuildingHeight.currentValue -\n this.geo_RafterBeam.height /\n this.utils.cos(this.APP.sltRoofPitch.currentValue) +\n (this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n (this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue)) /\n 2;\n let heightPlaneBottom =\n heightRealBottom * this.utils.cos(this.APP.sltRoofPitch.currentValue);\n let translateZBottom =\n this.utils.sin(this.APP.sltRoofPitch.currentValue) * heightPlaneBottom;\n\n let planeBottom = new Plane(new Vector3(0, 1, 0));\n let matrixTranslateBottom = new Matrix4().makeTranslation(\n 0,\n heightPlaneBottom,\n -translateZBottom / 2\n );\n let matrixRotateBottom = new Matrix4().makeRotationX(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue)\n ); //tao voi z pitch do\n let matrixTotalBottom =\n matrixTranslateBottom.multiply(matrixRotateBottom);\n planeBottom.applyMatrix4(matrixTotalBottom);\n\n matEndCap.clippingPlanes = [planeTop, planeBottom];\n\n capL = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capL.position.set(offsetXL - 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capL.scale.setY(\n (this.geo_RafterBeam.height /\n this.utils.cos(this.APP.sltRoofPitch.currentValue) +\n this.geo_rafterBeamEndCap.length *\n this.utils.tan(this.APP.sltRoofPitch.currentValue)) /\n this.geo_rafterBeamEndCap.height\n );\n capL.rotateY(Math.PI / 2);\n capL.rotateX(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue)\n );\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: higherBraketName,\n };\n\n capR = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capR.position.set(offsetXR + 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capR.scale.setY(\n (this.geo_RafterBeam.height /\n this.utils.sin(this.APP.sltRoofPitch.currentValue) +\n this.geo_rafterBeamEndCap.length /\n this.utils.tan(this.APP.sltRoofPitch.currentValue)) /\n this.geo_rafterBeamEndCap.height\n );\n capR.rotateY(-Math.PI / 2);\n capR.rotateX(\n -Math.PI / 2 +\n this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue)\n );\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: lowerBraketName,\n };\n }\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM,\n position: userDataPos,\n views: views,\n };\n beamGroup.position.set(offsetX, offsetY, offsetZ);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n\n beamGroup.rotateY(Math.PI / 2);\n\n if (userDataPos.front) {\n beamGroup.rotateZ(\n this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue)\n );\n } else if (userDataPos.back) {\n beamGroup.rotateZ(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue)\n );\n }\n\n this.scene.add(beamGroup);\n }\n\n public addHorSuperiorBeam(offsetX, userDataPos: any) {\n let mesh = new Mesh(\n this.geo_superiorBeam.geometry,\n MaterialManager.Instance().BEAM\n );\n\n let offsetXL = 0;\n let offsetXR =\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue -\n 2 * this.geo_superiorBeam.width;\n let offsetZ = 0;\n let offsetY = 0;\n\n let scaleX =\n (this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue -\n 2 * this.geo_superiorPost.width) /\n this.geo_superiorBeam.length;\n\n let views: Print2DView[];\n\n if (userDataPos.front) {\n offsetY =\n this.APP.sldBuildingHeight.currentValue - this.geo_superiorBeam.height;\n offsetZ =\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue -\n this.geo_superiorPost.width;\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n position: userDataPos,\n views: views,\n };\n mesh.position.set(offsetXL, 0, 0);\n mesh.scale.setX(scaleX);\n\n let capL = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capL.position.set(\n offsetXL + this.geo_beamEndCap.length / 2 - 2,\n 0,\n this.geo_beamEndCap.width / 2\n );\n capL.rotateY(Math.PI / 2);\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n let capR = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capR.position.set(\n offsetXR - this.geo_beamEndCap.length / 2 + 2,\n 0,\n this.geo_beamEndCap.width / 2\n );\n capR.rotateY(-Math.PI / 2);\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n position: userDataPos,\n views: views,\n name: \"GB\",\n };\n beamGroup.position.set(offsetX, offsetY, offsetZ);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n\n beamGroup.rotateY(Math.PI / 2);\n\n this.scene.add(beamGroup);\n }\n\n public getSection(): Printing2DGeometry {\n let objs = this.scene.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_POST ||\n o.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET ||\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_CENTER_POST\n );\n let beamGroups = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n let beamObjs: Object3D[] = [];\n for (let g of beamGroups) {\n beamObjs = beamObjs.concat(g.children);\n }\n\n objs = [...objs, ...beamObjs];\n let lsGeometries: Printing2DLine[] = [];\n\n for (let o of objs) {\n let box = new BoxHelper(o);\n box.geometry.translate(0, 5000, 0);\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n const planView = _.find(\n o.userData.views,\n (el) => el.viewType == ViewType.PLAN\n );\n const anotherViews = _.filter(\n o.userData.views,\n (el) => el.viewType != ViewType.PLAN\n );\n if (anotherViews.length > 0) {\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: outlineGeo.vertices,\n views: anotherViews,\n });\n }\n if (planView) {\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: outlineGeo.vertices\n .slice(0, 8)\n .filter((el, index) => [0, 1, 4, 5].includes(index)),\n views: [planView],\n });\n }\n }\n\n let rafterBeamGroups = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n );\n for (let o of rafterBeamGroups) {\n o.children.forEach((el) => {\n this.utils.getOutlineRafterBeam(el as Mesh, lsGeometries);\n });\n }\n return { lines: lsGeometries, texts: [] };\n }\n public simplifyGeo(geo: BufferGeometry): Geometry {\n let vertices = geo.getAttribute(\"position\").array;\n let lineGeo = new Geometry();\n for (let i = 0; i < vertices.length; i += 3) {\n lineGeo.vertices.push(\n new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2])\n );\n }\n\n //2-3\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n //3-7\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n //7-6\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n //6-2\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n\n //1-4\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n //4-8\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n //8-5\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n //5-1\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n return lineGeo;\n }\n\n private getBracketHeight(offset): number {\n let angle = this.APP.sltRoofPitch.currentValue;\n return (\n this.APP.sldFlyOverBracketHeight.currentValue -\n this.utils.tan(angle) * offset\n );\n }\n\n public destroy(): void {\n this.unregisterEvent();\n }\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldBuildingHeight,\n this.APP.sltExistingType,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldFlyOverBracketHeight,\n this.APP.sldBackOverhang,\n this.APP.sldFrontOverhang,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n ];\n //this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n\n this.controlsToRegisterEvent2 = [\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltColumnType,\n this.APP.sltRoofPitch,\n this.APP.sltWindClass,\n ];\n this.controlsToRegisterEvent2.forEach((c) =>\n c.addAction(this.objectSizeChangedHandle)\n );\n }\n private unregisterEvent(): void {\n // this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n // this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach((c) =>\n c.removeAction(this.objectSizeChangedHandle)\n );\n this.controlsToRegisterEvent2 = undefined;\n }\n public uiChanged(preVal: number, curVal: number): void {\n this.load();\n }\n private objectSizeChanged(pre: number, cur: number) {\n this.optimize().then(() => {\n this.load();\n });\n }\n}\n","import { Mesh, Object3D, Material, Group, FontLoader, TextBufferGeometry, PlaneBufferGeometry, Vector3, Matrix4, Box3, Geometry, BoxBufferGeometry, Line, Line3 } from \"three\";\nimport { HomeComponent as AppComponent, HomeComponent } from '../../containers/home/home.component';\nimport { Util } from '../utils';\nimport { MaterialManager } from '../material.manager';\nimport { GeometryInfo, ViewType, LineType, IBay, Printing2DGeometry, Printing2DLine, Print2DText } from 'src/app/core/models';\nimport { DIMENSION_LABEL_TYPE, GEOMETRY_TYPE } from 'src/app/app.config';\nimport { environment } from 'src/environments/environment';\nimport Dimension, { AddDimensionOptions } from \"src/app-ribspan/models/Dimension\";\nimport { UI } from \"../ui\";\nimport { PatiosGableFreeStandingManager } from \".\";\nimport { FIT_DIMENSION, FIT_DIMENSION_MEDIUM, PANEL_DIRECTION } from \"src/app/app.constants\";\n\nexport class DimensionManager {\n private scene: Group;\n private APP: AppComponent;\n public listText: THREE.Object3D[] = [];\n private utils: Util;\n private MANAGER: PatiosGableFreeStandingManager;\n\n private eventHandleId: any;\n\n private material: Material;\n\n private materialManager: MaterialManager;\n\n private dimensionPatiosFrontBottom: Object3D;\n private dimensionPatiosFrontRight: Object3D;\n \n private dimensionPatiosRightBottom: Object3D;\n private dimensionPatiosRightLeft: Object3D;\n private dimensionPatiosRightRight: Object3D;\n\n private dimensionPatiosLeftBottom: Object3D;\n private dimensionPatiosLeftRight: Object3D;\n private dimensionPatiosLeftLeft: Object3D;\n\n private dimensionPatiosPlanRight: Object3D;\n private dimensionPatiosPlanBottom: Object3D;\n private dimensionPlanMiddle: Object3D;\n private dimensionPlanMidleLeft: Object3D;\n\n private dimensionPatiosLowerHeightDim: Object3D;\n private dimensionPatiosHigherHeightDim: Object3D;\n\n private lineCapGeo: GeometryInfo;\n private lineGeo: GeometryInfo;\n private textGeo: TextBufferGeometry;\n\n private dimensionDistance = 1500;\n private dimensionDistance2 = 500;\n\n private textDistance = 5000;\n\n private totalBaySize: number;\n\n private font: any\n private textParameter: any;\n private isReady = false;\n\n private controlsToRegisterEvent: Array;\n private options : AddDimensionOptions;\n private startPos: Vector3;\n private startMatrix: Matrix4;\n private startBayLength: number;\n\n constructor(app: AppComponent, freeStandingManager: PatiosGableFreeStandingManager) {\n this.utils = new Util();\n this.materialManager = MaterialManager.Instance();\n this.APP = app;\n this.scene = freeStandingManager.patiosGroup;\n this.material = MaterialManager.Instance().DIMENSION_TEXT;\n this.MANAGER = freeStandingManager;\n\n this.registerEvent();\n }\n\n \n public optimize() : Promise{\n return new Promise((resolve, reject) => {\n this.lineGeo = new GeometryInfo();\n this.lineGeo.geometry = new PlaneBufferGeometry(1000, 50);\n this.lineGeo.width = 50;\n this.lineGeo.length = 1000;\n\n this.lineCapGeo = new GeometryInfo();\n this.lineCapGeo.geometry = new PlaneBufferGeometry(50, 200);\n this.lineCapGeo.width = 50;\n this.lineCapGeo.length = 200;\n\n resolve();\n });\n }\n public load(): Promise { \n return new Promise((resolve, reject) => {\n this.unload();\n var loader = new FontLoader();\n \n this.dimensionPatiosFrontBottom = new Group();\n this.dimensionPatiosFrontBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n // this.dimensionPatiosFrontBottom.rotation.set(0,Math.PI,0);\n this.dimensionPatiosFrontBottom.visible = false;\n\n this.dimensionPatiosFrontRight = new Group();\n this.dimensionPatiosFrontRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosFrontRight.rotation.set(0,0,-Math.PI/2);\n this.dimensionPatiosFrontRight.visible = false;\n \n this.dimensionPatiosRightBottom = new Group();\n this.dimensionPatiosRightBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightBottom.rotation.set(0,-Math.PI/2,0);\n this.dimensionPatiosRightBottom.visible = false;\n\n this.dimensionPatiosRightLeft = new Group();\n this.dimensionPatiosRightLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightLeft.rotation.set(0,-Math.PI/2,-Math.PI/2);\n this.dimensionPatiosRightLeft.visible = false;\n\n this.dimensionPatiosRightRight = new Group();\n this.dimensionPatiosRightRight.rotation.set(0,-Math.PI/2,-Math.PI/2);\n this.dimensionPatiosRightRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightRight.visible = false;\n\n this.dimensionPatiosLeftBottom = new Group();\n this.dimensionPatiosLeftBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftBottom.rotation.set(0,-Math.PI/2,0);\n this.dimensionPatiosLeftBottom.visible = false;\n\n this.dimensionPatiosLeftRight = new Group();\n this.dimensionPatiosLeftRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftRight.rotation.set(Math.PI/2,-Math.PI/2,0);\n this.dimensionPatiosLeftRight.visible = false;\n\n this.dimensionPatiosLeftLeft = new Group();\n this.dimensionPatiosLeftLeft.rotation.set(0, -Math.PI / 2, Math.PI / 2);\n this.dimensionPatiosLeftLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftLeft.visible = false;\n\n this.dimensionPatiosPlanRight = new Group();\n this.dimensionPatiosPlanRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosPlanRight.rotation.set(-Math.PI/2, Math.PI, -Math.PI/2);\n\n this.dimensionPatiosPlanBottom = new Group();\n this.dimensionPatiosPlanBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosPlanBottom.rotation.set(-Math.PI / 2, 0, 0);\n\n this.dimensionPatiosLowerHeightDim = new Group();\n this.dimensionPatiosLowerHeightDim.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLowerHeightDim.rotation.set(0, 0, Math.PI / 2);\n \n this.dimensionPatiosHigherHeightDim = new Group();\n this.dimensionPatiosHigherHeightDim.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosHigherHeightDim.rotation.set(0, Math.PI / 2, Math.PI / 2);\n\n this.dimensionPlanMiddle = new Group();\n this.dimensionPlanMidleLeft = new Group();\n\n this.scene.add(\n this.dimensionPatiosPlanRight,\n this.dimensionPatiosFrontBottom, \n this.dimensionPatiosFrontRight, \n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom, \n this.dimensionPatiosLeftRight, \n this.dimensionPatiosLeftLeft, \n this.dimensionPatiosPlanBottom,\n this.dimensionPlanMiddle,\n this.dimensionPlanMidleLeft,\n this.dimensionPatiosLowerHeightDim,\n this.dimensionPatiosHigherHeightDim,\n );\n\n loader.load( environment.modelBaseUrl + '/../assets/fonts/helvetiker_regular.typeface.json', (font) => {\n this.font = font;\n\n this.textParameter = {\n font: this.font,\n size: 200,\n height: 5,\n curveSegments: 10\n };\n this.options = {\n container: HomeComponent.ins.scene,\n start: new Vector3(),\n end: new Vector3(),\n linePos: new Vector3(),\n views: [],\n allowDrag: true,\n textParameter: this.textParameter,\n textPos: new Vector3(),\n labelType: null,\n fitZ: 10,\n hasTextClone: false,\n axis: 'x',\n lineLength: 0,\n subtype: null,\n textUserData: null,\n onDragCallback: this.onDimDrag.bind(this),\n onDragStartCallback: this.onDimDragStart.bind(this),\n }\n\n this.isReady = true;\n this.draw();\n\n resolve();\n })\n });\n }\n\n public unload(){\n this.scene.remove(\n this.dimensionPatiosPlanRight,\n this.dimensionPatiosFrontBottom, \n this.dimensionPatiosFrontRight, \n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom, \n this.dimensionPatiosLeftRight,\n this.dimensionPatiosLeftLeft, \n this.dimensionPatiosPlanBottom,\n this.dimensionPlanMiddle,\n this.dimensionPlanMidleLeft,\n this.dimensionPatiosLowerHeightDim,\n this.dimensionPatiosHigherHeightDim,\n );\n }\n \n public draw(){\n if (!this.isReady) {\n return;\n }\n // this.dimensionPatiosPlanBottom.children = [];\n // this.dimensionPatiosPlanRight.children = [];\n this.dimensionPatiosLowerHeightDim.children = this.dimensionPatiosLowerHeightDim.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.LOWER_HEIGHT_DIM\n );\n this.dimensionPatiosHigherHeightDim.children = this.dimensionPatiosHigherHeightDim.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.BRAKET_HEIGHT_DIM\n );\n this.dimensionPatiosPlanBottom.children = this.dimensionPatiosPlanBottom.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.LEFT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.RIGHT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY\n );\n this.dimensionPatiosPlanRight.children = this.dimensionPatiosPlanRight.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.MULTI_SPAN\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.FRONT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.BACK_OVERHANG\n );\n this.dimensionPatiosFrontBottom.children = [];\n this.dimensionPatiosFrontRight.children = [];\n this.dimensionPatiosLeftBottom.children = [];\n this.dimensionPatiosLeftRight.children = [];\n this.dimensionPatiosLeftLeft.children = [];\n this.dimensionPatiosRightBottom.children = [];\n this.dimensionPatiosRightLeft.children = [];\n this.dimensionPatiosRightRight.children = [];\n this.dimensionPlanMiddle.children = [];\n this.dimensionPlanMidleLeft.children = [];\n \n this.totalBaySize = 0;\n for(let b of this.APP.dialogEditBay.listBay){\n this.totalBaySize += b.value;\n }\n\n this.drawDimensionLowerHeightDim();\n this.drawDimensionHigherHeightDim();\n\n this.drawDimensionPatiosPlanBottom();\n this.drawDimensionPatiosPlanRight();\n\n this.drawDimensionPatiosFrontBottom();\n this.drawDimensionPatiosFrontRight();\n\n this.drawDimensionPatiosLeftBottom();\n this.drawDimensionPatiosLeftRight();\n this.drawDimensionPatiosLeftLeft();\n\n this.drawDimensionPatiosRightBottom();\n this.drawDimensionPatiosRightLeft();\n this.drawDimensionPatiosRightRight();\n\n this.drawDimensionMidle();\n this.drawDimensionMidleLeft();\n\n this.APP.dimensionManager.draw();\n }\n\n private drawDimensionLowerHeightDim(){\n const height = UI.height - this.MANAGER.columnAndPurlinManager.geo_superiorBeam.height\n const offsetZ = UI.span + UI.multiSpan +FIT_DIMENSION;\n\n this.dimensionPatiosLowerHeightDim.position.set(0, height / 2, offsetZ);\n\n let textStr = this.utils.getDimensionValue(height);\n let options : AddDimensionOptions = {\n ... this.options,\n lineLength: height,\n container: this.dimensionPatiosLowerHeightDim,\n views: [],\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, 200, 0),\n labelType: DIMENSION_LABEL_TYPE.LOWER_HEIGHT_DIM,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [] },\n allowDrag: false\n }\n let dimBay = this.dimensionPatiosLowerHeightDim.children.find(el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.LOWER_HEIGHT_DIM\n ) as Dimension;\n if(!dimBay){\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n\n private drawDimensionHigherHeightDim(){\n const height = UI.height + ( UI.span + UI.multiSpan) / 2 * this.utils.tan(UI.patiosPitch)\n const offsetZ = - UI.overhangBack - FIT_DIMENSION_MEDIUM;\n const offsetX = UI.totalBayLength / 2 + FIT_DIMENSION_MEDIUM + UI.overhangRight;\n\n this.dimensionPatiosHigherHeightDim.position.set(offsetX, height / 2, offsetZ);\n\n let textStr = this.utils.getDimensionValue(height);\n let options : AddDimensionOptions = {\n ... this.options,\n lineLength: height,\n container: this.dimensionPatiosHigherHeightDim,\n views: [],\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.HIGHER_HEIGHT_DIM,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [] },\n allowDrag: false\n }\n let dimBay = this.dimensionPatiosHigherHeightDim.children.find(el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.HIGHER_HEIGHT_DIM\n ) as Dimension;\n if(!dimBay){\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n\n private drawDimensionMidleLeft() {\n let dimLeft = this.utils.createArrowLine([{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }]);\n dimLeft.visible = false;\n dimLeft.position.setX(-300)\n let textLeft = this.utils.createText(\"Panel direction\", [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }], this.textParameter, new Vector3(-500, 0, 650));\n textLeft.visible = false;\n\n let dimRight = dimLeft.clone()\n dimRight.position.setX(300);\n let textRight = textLeft.clone();\n textRight.position.setX(500);\n \n this.dimensionPlanMidleLeft.add(dimLeft);\n this.dimensionPlanMidleLeft.add(textLeft);\n this.dimensionPlanMidleLeft.add(dimRight);\n this.dimensionPlanMidleLeft.add(textRight);\n\n let offsetZ = UI.span / 2 - UI.existingWidth1 / 2;\n if (this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT) {\n let offsetX = this.totalBaySize / 2 + UI.overhangRight;\n this.dimensionPlanMidleLeft.position.set(offsetX, 0, offsetZ);\n this.dimensionPlanMidleLeft.rotation.set(0, -Math.PI / 2, 0);\n }\n else {\n let offsetX = - this.totalBaySize / 2 - UI.overhangLeft;\n this.dimensionPlanMidleLeft.rotation.set(0, Math.PI / 2, 0);\n this.dimensionPlanMidleLeft.position.set(offsetX, 0, offsetZ);\n }\n }\n private drawDimensionMidle() {\n let offsetX = 0;\n\n let dimLeft = this.utils.createArrowLine([{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }]);\n dimLeft.rotation.set(0, -Math.PI / 2, 0);\n dimLeft.visible = false;\n\n let textLeft = this.utils.createText(`${UI.patiosPitch} degree`, [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }], this.textParameter, new Vector3(-500, 0, 200));\n textLeft.userData.rotation = new Vector3(0, Math.PI / 2, 0)\n textLeft.visible = false;\n\n let dimRight = dimLeft.clone()\n dimRight.rotation.set(0, Math.PI / 2, 0);\n\n let textRight = textLeft.clone();\n textRight.position.setX(500);\n \n this.dimensionPlanMiddle.add(dimLeft);\n this.dimensionPlanMiddle.add(textLeft);\n this.dimensionPlanMiddle.add(dimRight);\n this.dimensionPlanMiddle.add(textRight);\n\n let offsetZ = UI.span / 2 - UI.existingWidth1 / 2;\n this.dimensionPlanMiddle.rotation.set(0, Math.PI / 2, 0);\n this.dimensionPlanMiddle.position.set(offsetX, 0, offsetZ);\n }\n\n private drawDimensionPatiosPlanBottom(){\n let offsetX = -this.totalBaySize/2;\n let offsetZ = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance2;\n\n let views = [ { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosPlanBottom.position.setZ(offsetZ);\n\n this.dimensionPatiosPlanBottom.children = this.dimensionPatiosPlanBottom.children.filter(el => \n el.userData?.groupType != DIMENSION_LABEL_TYPE.BAY\n || (el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY && el.userData?.bayNum < HomeComponent.ins.dialogEditBay.listBay.length)\n );\n \n for(let i = 0; i <= this.APP.dialogEditBay.listBay.length; i++){\n let b: IBay = {index: 0, value: 0, isCut: false};\n if(i < this.APP.dialogEditBay.listBay.length){\n b = this.APP.dialogEditBay.listBay[i];\n }\n\n if(i < this.APP.dialogEditBay.listBay.length){\n let textStr = this.utils.getDimensionValue(b.value);\n let options : AddDimensionOptions = {... this.options,\n lineLength: b.value,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(offsetX + b.value / 2, 0, 0),\n textPos: new Vector3(offsetX + b.value / 2, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.BAY,\n bayNum: i,\n }\n let dimBay = this.dimensionPatiosPlanBottom.children.find(el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY \n && el.userData?.bayNum == i\n ) as Dimension;\n if(!dimBay){\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n offsetX += b.value;\n }\n\n //Left over hang\n this.addOverhang(this.dimensionPatiosPlanBottom, offsetX, this.APP.sldLeftOverhang.currentValue, views, \"Left\", 0, \"z\", DIMENSION_LABEL_TYPE.LEFT_OVERHANG);\n this.addOverhang(this.dimensionPatiosPlanBottom, offsetX, this.APP.sldRightOverhang.currentValue, views, \"Right\", 0, \"z\", DIMENSION_LABEL_TYPE.RIGHT_OVERHANG);\n }\n onDimDrag(event){\n this.utils.handlerDimDragEvent(event, this.startPos, this.startMatrix, this.startBayLength);\n this.startPos = event.object.position.clone();\n }\n onDimDragStart(event){\n this.startPos = event.object.position.clone();\n this.startMatrix = event.object.matrixWorld.clone();\n if(event.object.userData?.dimType === DIMENSION_LABEL_TYPE.BAY){\n let bayNum = event.object.userData.bayNum;\n this.startBayLength = UI.listBay[+bayNum].value;\n }\n }\n private drawDimensionPatiosPlanRight(){\n \n let views = [ { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS } ];\n let offsetDimensionZ = this.APP.sldSpan.currentValue/2;\n \n\n let _dimensionDistane = this.dimensionDistance2;\n // if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n // if(this.APP.sldExistingWidth1.currentValue > 0){\n // _dimensionDistane = this.dimensionDistance;\n // }\n // }\n\n let offsetDimensionX = this.totalBaySize/2 + this.APP.sldRightOverhang.currentValue + this.APP.patiosManager.patiosGroup.position.x + _dimensionDistane;\n // if(this.APP.sldExistingLength.currentValue/2 > this.totalBaySize/2){\n // offsetDimensionX = this.APP.sldExistingLength.currentValue/2 + _dimensionDistane;\n // }\n \n // if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n // offsetDimensionX += this.APP.sldExistingLength2.currentValue;\n // }\n\n this.dimensionPatiosPlanRight.position.set(offsetDimensionX, 0, offsetDimensionZ);\n\n let textStr = this.utils.getDimensionValue(this.APP.sldSpan.currentValue);\n\n let options : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldSpan.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.SPAN,\n hasTextClone: false,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneRotation: new Vector3(0, Math.PI, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, -Math.PI, 0),\n fitZ: -10\n }\n let dimSpan = this.dimensionPatiosPlanRight.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN) as Dimension;\n if(!dimSpan){\n new Dimension(options);\n } else {\n dimSpan.update(options);\n }\n\n if(this.APP.sldMultiSpan.currentValue > 0){\n let offsetX = this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue;\n // - this.APP.existingWallManager.geo_existingWallL1.width \n // - this.APP.eaveManager.backOverhang;\n\n let optionsMul : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldMultiSpan.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue / 2, 0, 0),\n textPos: new Vector3(this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue / 2, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.MULTI_SPAN,\n hasTextClone: false,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneRotation: new Vector3(0, Math.PI, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, -Math.PI, 0),\n fitZ: -10\n }\n let dimMul = this.dimensionPatiosPlanRight.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.MULTI_SPAN) as Dimension;\n if(!dimMul){\n new Dimension(optionsMul);\n } else {\n dimMul.update(optionsMul);\n }\n } else {\n this.dimensionPatiosPlanRight.children = this.dimensionPatiosPlanRight.children.filter(el => el.userData?.groupType != DIMENSION_LABEL_TYPE.MULTI_SPAN)\n }\n\n let offsetRight = this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue;\n let offsetLeft = this.APP.sldSpan.currentValue / 2;// + this.APP.sldMultiSpan.currentValue;\n\n this.addOverhang(this.dimensionPatiosPlanRight, offsetRight, this.APP.sldFrontOverhang.currentValue, views, \"Right\", Math.PI, \"y\", DIMENSION_LABEL_TYPE.FRONT_OVERHANG);\n this.addOverhang(this.dimensionPatiosPlanRight, offsetLeft, this.APP.sldBackOverhang.currentValue, views, \"Left\", Math.PI, \"y\", DIMENSION_LABEL_TYPE.BACK_OVERHANG);\n\n }\n private drawDimensionPatiosFrontBottom(){\n let dimOffsetY = -this.dimensionDistance2;\n this.dimensionPatiosFrontBottom.position.set(0,dimOffsetY,0);\n\n let views = [ { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosPlanBottom.children.forEach( groupDim => {\n groupDim.children.filter(c => c.userData.subtype != GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT).forEach(e => {\n let dim = e.clone();\n dim.userData['views'] = views;\n if(dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n dim.rotation.set(0,Math.PI,0);\n dim.userData['rotation'] = new Vector3(0,0,0);\n }\n this.dimensionPatiosFrontBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosFrontRight(){\n let views = [ { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS } ];\n\n let _dimensionDistane = this.dimensionDistance2;\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n if(this.APP.sldExistingWidth1.currentValue > 0){\n _dimensionDistane = this.dimensionDistance;\n }\n }\n let height = Math.ceil(this.APP.sldBuildingHeight.currentValue + (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2 * this.utils.tan(this.APP.sltRoofPitch.currentValue))\n \n let dimOffsetX = this.totalBaySize/2 + this.APP.patiosManager.patiosGroup.position.x + _dimensionDistane;\n let dimOffsetY = height/2;\n\n // if(this.APP.sldExistingLength.currentValue/2 > this.totalBaySize/2){\n // dimOffsetX = this.APP.sldExistingLength.currentValue/2 + _dimensionDistane;\n // }\n \n // if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n // dimOffsetX += this.APP.sldExistingLength2.currentValue;\n // }\n\n this.dimensionPatiosFrontRight.position.set(dimOffsetX,dimOffsetY,0);\n \n let scaleLength = height/this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-dimOffsetY);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(dimOffsetY);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(height);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0,0,-Math.PI/2) };\n text.position.set(0,200,0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosFrontRight.add(line, cap1, cap2, text);\n }\n private drawDimensionPatiosLeftBottom(){\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z;\n \n this.dimensionPatiosLeftBottom.position.set(0,dimOffsetY,dimOffsetZ);\n\n let views = [ \n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n this.dimensionPatiosPlanRight.children.forEach( groupDim => {\n groupDim.children.forEach(e => {\n let dim = e.clone();\n dim.userData['views'] = views;\n if(dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n dim.rotation.set(0,0,0);\n dim.userData['views'] = [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }];\n dim.userData['rotation'] = new Vector3(0,0,0);\n }\n this.dimensionPatiosLeftBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosLeftRight(){\n let dimOffsetY = Math.ceil(this.APP.sldBuildingHeight.currentValue + (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2 * this.utils.tan(this.APP.sltRoofPitch.currentValue));\n let dimOffsetZ = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance2;\n \n\n this.dimensionPatiosLeftRight.position.set(0,dimOffsetY/2,dimOffsetZ);\n\n let views = [ \n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n \n let scaleLength = dimOffsetY / this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-dimOffsetY/2);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(dimOffsetY/2);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(dimOffsetY);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }], rotation: new Vector3(-Math.PI / 2, 0, 0) };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosLeftRight.add(line, cap1, cap2, text);\n }\n private drawDimensionPatiosLeftLeft() {\n let dimOffsetY = this.APP.sldBuildingHeight.currentValue;\n let dimOffsetZ = this.APP.sldBackOverhang.currentValue + 500;\n\n this.dimensionPatiosLeftLeft.position.set(0, dimOffsetY / 2, -dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n let offsetLength = dimOffsetY;\n let scaleLength = offsetLength / this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength / 2);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength / 2);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }], rotation: new Vector3(Math.PI / 2, 0, 0) };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosLeftLeft.add(line, cap1, cap2, text);\n\n //this.dimensionPatiosFrontRight.children.forEach(e => {\n // let dim = e.clone();\n // dim.userData['views'] = views;\n // if(dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n // dim.userData['views'] = [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }];\n // dim.userData['rotation'] = new Vector3(-Math.PI/2,0,0);\n // }\n // this.dimensionPatiosLeftRight.add(dim);\n //});\n }\n private drawDimensionPatiosRightBottom(){\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z;\n \n this.dimensionPatiosRightBottom.position.set(0,dimOffsetY,dimOffsetZ);\n\n let views = [ { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosPlanRight.children.forEach(groupDim => {\n groupDim.children.forEach(e => {\n if(e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n let dim = e.clone();\n dim.userData['views'] = views;\n dim.userData['rotation'] = new Vector3(0,0,0);\n \n this.dimensionPatiosRightBottom.add(dim);\n }\n });\n })\n }\n private drawDimensionPatiosRightLeft(){\n let dimOffsetY = Math.ceil(this.APP.sldBuildingHeight.currentValue + (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2 * this.utils.tan(this.APP.sltRoofPitch.currentValue));\n let dimOffsetZ = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance2;\n\n this.dimensionPatiosRightLeft.position.set(0,dimOffsetY/2,dimOffsetZ);\n\n let views = [ { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosLeftRight.children.forEach(e => {\n if(e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n let dim = e.clone();\n dim.userData['views'] = views;\n dim.userData['rotation'] = new Vector3(Math.PI/2,0,0);\n dim.rotation.set(0,Math.PI,0);\n this.dimensionPatiosRightLeft.add(dim);\n }\n });\n }\n private drawDimensionPatiosRightRight(){\n let dimOffsetY = this.APP.sldBuildingHeight.currentValue;\n let dimOffsetZ = this.APP.sldBackOverhang.currentValue + 500;\n \n this.dimensionPatiosRightRight.position.set(0,dimOffsetY/2,-dimOffsetZ);\n\n let views = [ { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosLeftLeft.children.forEach(e => {\n if(e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){ \n let dim = e.clone();\n dim.userData['views'] = views;\n dim.userData['rotation'] = new Vector3(-Math.PI/2,0,0);\n dim.rotation.set(0,Math.PI,0);\n dim.position.set(dim.position.x, -dim.position.y, dim.position.z);\n this.dimensionPatiosRightRight.add(dim);\n }\n });\n }\n \n \n private addOverhang(groupDim: Object3D, offset: number, overhangValue: number, views: any, side: string, rotateText: number, axis: string, labelType?: string) {\n if (overhangValue == 0){\n let dim = groupDim.children.find(el => el.userData?.groupType == labelType) as Dimension;\n if(dim){\n groupDim.remove(dim)\n }\n return;\n }\n\n let textStr = this.utils.getDimensionValue(overhangValue);\n\n let textRotation = new Vector3();\n let textUserData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, position: { overhang: true }};\n if (axis === \"z\") {\n textRotation.setZ(rotateText);\n textUserData['rotation'] = new Vector3(0, 0, -rotateText / 2);\n textUserData['position']['bottom'] = true;\n }\n else if (axis === \"y\") {\n textRotation.setY(rotateText);\n textUserData['rotation'] = new Vector3(0, -rotateText / 2, 0);\n }\n else if (axis === \"x\") {\n textRotation.setX(rotateText);\n textUserData['rotation'] = new Vector3(-rotateText / 2, 0, 0);\n }\n\n let linePos = new Vector3();\n if (side === \"Left\") {\n linePos.setX(-offset - overhangValue / 2);\n }\n else if (side === \"Right\") {\n linePos.setX(offset + overhangValue / 2);\n }\n let fitZ = 0;\n if(labelType){\n if(axis === 'z'){\n fitZ = 10;\n } else if(axis === 'y'){\n fitZ = -10;\n }\n }\n let options : AddDimensionOptions = {... this.options,\n lineLength: overhangValue,\n container: groupDim,\n views: views,\n linePos: linePos,\n textPos: linePos.clone().setY(linePos.y - 200),\n labelType: labelType ? labelType : null,\n fitZ: fitZ,\n textRotation: textRotation,\n textUserData: textUserData\n }\n let dim = groupDim.children.find(el => el.userData?.groupType == labelType) as Dimension;\n if(!dim){\n new Dimension(options);\n } else {\n dim.update(options)\n }\n }\n private getTextCover(textGeo: TextBufferGeometry, labelType: string, pos: Vector3, fitZ = 0, bayNum?: number){\n let textSize = new Vector3();\n textGeo.boundingBox.getSize(textSize)\n\n let textCover = new Mesh(new BoxBufferGeometry(textSize.x, textSize.y, textSize.z))\n textCover.position.set(pos.x , pos.y, pos.z + fitZ);\n textCover.userData = { type: GEOMETRY_TYPE.TEXT_COVER, labelType };\n if(bayNum !== undefined){\n textCover.userData['bayNum'] = bayNum;\n }\n textCover.material['opacity'] = 0;\n textCover.material['transparent'] = true;\n\n return textCover\n }\n\n public getOutlines(): Printing2DGeometry{\n let lsGeometries: Printing2DLine[] = [];\n let lsText: Print2DText[] = [];\n \n for(let dim of [\n ...this.dimensionPatiosPlanBottom.children,\n ...this.dimensionPatiosPlanRight.children,\n ...this.dimensionPatiosFrontBottom.children,\n ...this.dimensionPatiosFrontRight.children,\n ...this.dimensionPatiosLeftBottom.children,\n ...this.dimensionPatiosLeftRight.children,\n ...this.dimensionPatiosLeftLeft.children,\n ...this.dimensionPatiosRightBottom.children,\n ...this.dimensionPatiosRightLeft.children,\n ...this.dimensionPatiosRightRight.children,\n ...this.dimensionPlanMiddle.children,\n ...this.dimensionPlanMidleLeft.children\n ]){\n if(!dim.userData.views){\n console.log(\"TEXT NO VIEW\", dim);\n continue;\n }\n \n if(dim.type == 'Group'){\n dim.children.forEach(el => {\n el.updateMatrix();\n let _clone = el.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(el.matrix));\n let _box = new Box3().setFromObject(_clone);\n \n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n \n el.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(el.matrixWorld);\n \n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(el.matrixWorld);\n \n let textRotation = el.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, el, pos, textRotation, points)\n })\n } else{\n dim.updateMatrix();\n let _clone = dim.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(dim.matrix));\n let _box = new Box3().setFromObject(_clone);\n \n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n \n dim.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(dim.matrixWorld);\n \n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(dim.matrixWorld);\n \n let textRotation = dim.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, dim, pos, textRotation, points)\n }\n }\n \n return { lines: lsGeometries, texts: lsText };\n }\n private getDimInfo(lsGeometries: Printing2DLine[], lsText: Print2DText[], dim: Object3D, pos: Vector3, textRotation: Vector3, points: Vector3[]){\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && dim.userData.views && dim.userData.value) {\n let box = new Box3().setFromObject(dim.parent);\n let startEnd = this.utils.getStartEndPoint(box);\n let line = new Line3(startEnd[0], startEnd[1]);\n \n let projectPoint = new Vector3();\n line.closestPointToPoint(pos, true, projectPoint);\n let _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(10));\n \n if(dim.userData.position?.bottom){\n if(dim.userData.position?.overhang){\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(180));\n }\n else{\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(120));\n }\n }\n else{\n if(dim.userData.position?.overhang){\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(100));\n }\n }\n \n let p = new Vector3().applyMatrix4(dim.matrixWorld);\n \n lsText.push({\n value: dim.userData.value,\n position: p,\n rotation: textRotation,\n views: dim.userData.views\n });\n \n \n }\n else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_LINE) {\n // this.scene.add(new LineSegments(new Geometry().setFromPoints(points), new LineBasicMaterial({color: new Color('red')})));\n \n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_CAP) {\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n else if (dim.userData.type == \"Arrow\") {\n let geo = ((dim as Line).geometry as Geometry).clone();\n geo.applyMatrix4(dim.matrixWorld);\n lsGeometries.push({\n vertices: geo.vertices,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n }\n public destroy(): void {\n this.unregisterEvent();\n this.unload();\n }\n\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldFrontOverhang,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sldExistingWallHeight,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch\n ];\n this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId)); \n }\n private unregisterEvent(): void{\n this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n this.controlsToRegisterEvent = undefined;\n }\n\n\n public uiChanged(preVal: number, curVal: number): void {\n this.draw();\n }\n}\n","import { HomeComponent as AppComponent } from '../../containers/home/home.component';\nimport { ColumnAndPurlinManager } from './column-and-purlin.manager';\nimport { RoofManager } from './roof.manager';\nimport { PatiosManager, RafterBeamAndInternalBeamInfo } from '../patios.manager';\nimport { Printing2DGeometry } from 'src/app/core/models';\nimport { Group, Box3 } from 'three';\nimport { GEOMETRY_CATEGORY } from 'src/app/app.config';\nimport { DimensionManager } from './dimension.manager';\n\nexport class PatiosGableFreeStandingManager implements PatiosManager{\n patiosGroup: Group;\n public boundingBox: Box3;\n public columnAndPurlinManager: ColumnAndPurlinManager;\n public roofManager: RoofManager;\n public dimesionManager: DimensionManager;\n public cutoutCondition: boolean;\n public get rakecutCondition(): boolean{\n return true;\n }\n public ignoreBayEvent: boolean = false;\n public patiosWidth: number;\n public patiosLength: number;\n public firstLoad = true;\n private controlsToRegisterEvent: Array;\n private APP: AppComponent;\n private updateEventHandle: any;\n\n constructor(app: AppComponent){\n this.APP = app;\n this.patiosGroup = new Group();\n this.patiosGroup.userData = { category: GEOMETRY_CATEGORY.PATIOS }\n app.scene.add(this.patiosGroup);\n\n this.roofManager = new RoofManager(app, this);\n this.columnAndPurlinManager = new ColumnAndPurlinManager(app, this);\n this.dimesionManager = new DimensionManager(app, this);\n\n this.registerEvents();\n }\n\n load(): Promise {\n return Promise.all([\n this.roofManager.optimize(),\n this.columnAndPurlinManager.optimize(),\n this.dimesionManager.optimize()\n ])\n .then(() => {\n this.roofManager.load();\n this.columnAndPurlinManager.load();\n this.dimesionManager.load();\n });\n }\n loadBracket(bracketQuantity: number): void {\n \n }\n loadBracketCutout(bracketQuantity: number): void{\n \n }\n loadSideGableBracket(bracketQuantity: number): void{\n \n }\n enableCutout(enable: boolean){\n \n }\n changeToExistingTypeBoth(){\n \n }\n loadRafterBeamAndInternalBeam(info: RafterBeamAndInternalBeamInfo): void{\n \n }\n getOutlines(): Printing2DGeometry {\n let dimensionOutline = this.dimesionManager.getOutlines();\n return { \n lines: [\n ...this.columnAndPurlinManager.getSection().lines,\n ...this.roofManager.getOutLines().lines,\n ...dimensionOutline.lines\n ], \n texts: dimensionOutline.texts\n }\n }\n public destroy(): void {\n this.columnAndPurlinManager.destroy();\n this.roofManager.destroy();\n this.dimesionManager.destroy();\n this.unRegisterEvent();\n }\n registerEvents(): void {\n this.updateEventHandle = this.update.bind(this);\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldBuildingHeight,\n this.APP.sltExistingType,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldFlyOverBracketHeight,\n this.APP.sldBackOverhang,\n this.APP.sldFrontOverhang,\n this.APP.sltRoofThickness, \n this.APP.sltGutterType,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sldExistingWallHeight,\n this.APP.sltPanelDirection,\n this.APP.sltPanelDirectionShow,\n this.APP.sltBeamLayoutShow,\n this.APP.sltColourBeam,\n this.APP.btnTurnOnPanel\n ];\n this.controlsToRegisterEvent.forEach(c => { c.addAction(this.updateEventHandle); });\n }\n unRegisterEvent(): void {\n this.controlsToRegisterEvent.forEach(c => c.removeAction(this.updateEventHandle));\n }\n update(preVal: number, curVal: number): void {\n this.patiosGroup.position.setX(0);\n this.patiosGroup.position.setZ(- (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2);\n Promise.all([\n this.roofManager.load(),\n this.columnAndPurlinManager.load()\n ]).then(() => {\n // this.boundingBox = this.APP.utils.getObjectsBoundingBox(\n // this.patiosGroup.children.filter(c => c.userData.type != GEOMETRY_TYPE.DIMENSION && c.userData.type != GEOMETRY_TYPE.ROOF_PATIOS)\n // );\n //this.boundingBox = this.getPatiosBox();\n this.dimesionManager.draw();\n })\n }\n}\n","import { Mesh, Vector3, Material, Plane, Group, BufferGeometry, Geometry, LineSegments, Color } from \"three\";\nimport { Util } from \"../utils\";\nimport { CONFIG as env, GEOMETRY_TYPE, GEOMETRY_CATEGORY } from 'src/app/app.config';\nimport { HomeComponent as AppComponent } from '../../containers/home/home.component';\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport { GeometryInfo, Printing2DGeometry, Printing2DLine, Print2DView, ViewType, LineType } from 'src/app/core/models';\nimport { PatiosGableFreeStandingManager } from '.';\nimport { PANEL_DIRECTION, RIBSPAN_BARGE_FIT, RIBSPAN_PANEL_WIDTH } from 'src/app/app.constants';\nimport { UI } from \"../ui\";\n\nexport class RoofManager {\n private scene: Group;\n private APP: AppComponent;\n private MANAGER: PatiosGableFreeStandingManager;\n private material: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private geo_RoofPanel: GeometryInfo;\n private geo_roofPanelBargeCappingLeft: GeometryInfo;\n private geo_roofPanelBargeCappingRight: GeometryInfo;\n private geo_roofPanelBargeCappingBack: GeometryInfo;\n private geo_gutterBack: GeometryInfo;\n private geo_gutterCap: GeometryInfo;\n public ridgeGeo: GeometryInfo;\n\n private roofGroupFront: Group;\n private roofGroupBack: Group;\n\n private eventHandleId: any;\n\n private totalBaySize: number;\n\n private objectSizeChangedHandle: any;\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n private FIT_SHEETING: number = 0;\n private FIT_SHEETING_BASE: number = -60;\n\n\n constructor(app: AppComponent, freeStandingManager: PatiosGableFreeStandingManager) {\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.APP = app;\n this.MANAGER = freeStandingManager;\n this.scene = new Group();\n freeStandingManager.patiosGroup.add(this.scene);\n this.material = MaterialManager.Instance().ROOF;\n\n this.registerEvent();\n }\n \n \n public optimize() : Promise{\n return new Promise((resolve, reject) => {\n this.geo_RoofPanel = this.geometryManager.getRoofRibspanPanel();\n this.geo_RoofPanel.geometry\n .translate(-this.geo_RoofPanel.width / 2, this.geo_RoofPanel.height / 2, -this.geo_RoofPanel.length / 2);\n this.geo_RoofPanel.geometry.rotateY(Math.PI)\n this.utils.changeGeoColor(this.geo_RoofPanel.geometry, new Vector3(0, 1, 0), UI.roofColor.toString());\n \n //Barge capping\n this.geo_roofPanelBargeCappingLeft = this.geometryManager.getRibspanBarge();\n this.geo_roofPanelBargeCappingLeft.geometry\n .rotateY(Math.PI)\n .translate(this.geo_roofPanelBargeCappingLeft.width/2 - 3,this.geo_roofPanelBargeCappingLeft.height/2 - RIBSPAN_BARGE_FIT,this.geo_roofPanelBargeCappingLeft.length/2);\n\n this.geo_roofPanelBargeCappingRight = this.geometryManager.getRibspanBarge();\n this.geo_roofPanelBargeCappingRight.geometry\n .translate(-this.geo_roofPanelBargeCappingRight.width/2 + 3,this.geo_roofPanelBargeCappingRight.height/2 - RIBSPAN_BARGE_FIT,this.geo_roofPanelBargeCappingRight.length/2);\n\n this.geo_roofPanelBargeCappingBack = this.geometryManager.getRibspanBarge();\n this.geo_roofPanelBargeCappingBack.geometry\n .rotateY(Math.PI/2)\n .translate(this.geo_roofPanelBargeCappingBack.length/2,this.geo_roofPanelBargeCappingBack.height/2 - RIBSPAN_BARGE_FIT,this.geo_roofPanelBargeCappingBack.width/2 - 3);\n\n //Gutter\n this.geo_gutterBack = this.geometryManager.getGutter();\n this.geo_gutterBack.geometry\n .rotateY(-Math.PI/2)\n .translate(this.geo_gutterBack.length / 2, -20, this.geo_gutterBack.width / 2);\n\n //Gutter cap\n this.geo_gutterCap = this.geometryManager.getGuterEndCap();\n this.geo_gutterCap.geometry\n .rotateY(-Math.PI / 2)\n .translate(0, -20, this.geo_gutterCap.length / 2);\n\n this.ridgeGeo = this.geometryManager.getRibspanRidgeCapping();\n this.ridgeGeo.geometry.translate(- this.ridgeGeo.width / 2 + 1, -this.ridgeGeo.height / 2, 0);\n // this.ridgeGeo.geometry.rotateY(Math.PI / 2)\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PATIOS));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.RIDGE_CAPPING));\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.SHEET_OUTLINE));\n\n //test\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == 'HELPER'));\n \n this.totalBaySize = 0;\n for(let b of this.APP.dialogEditBay.listBay){\n this.totalBaySize += b.value;\n }\n \n this.addRoofFront();\n this.addRoofBack();\n\n let offsetLeft = this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue - this.MANAGER.patiosGroup.position.x;\n let offsetRight = this.totalBaySize/2 + this.APP.sldRightOverhang.currentValue + this.MANAGER.patiosGroup.position.x;\n let clipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let clipingPlaneRight = new Plane( new Vector3( -1, 0, 0 ), offsetRight );\n \n this.material.clippingPlanes = [clipingPlaneLeft, clipingPlaneRight];\n MaterialManager.Instance().ROOF_BASE.clippingPlanes = [clipingPlaneLeft, clipingPlaneRight];\n\n // this.material.clippingPlanes = [];\n // MaterialManager.Instance().ROOF_BASE.clippingPlanes = [];\n\n let width = this.totalBaySize + this.APP.sldLeftOverhang.currentValue + this.APP.sldRightOverhang.currentValue;\n let roofSheetingCount = Math.ceil(width/RIBSPAN_PANEL_WIDTH);\n let offsetX = -(this.totalBaySize/2 + this.APP.sldLeftOverhang.currentValue);\n\n //panel direction\n let panelDirectionOfset = 1;\n if(this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT){\n offsetX = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue - RIBSPAN_PANEL_WIDTH;\n panelDirectionOfset = -1;\n }\n else if(this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.LEFT_TO_RIGHT){\n offsetX = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n }\n\n // let helper = new PlaneHelper(clipingPlaneRight, 10000, 0xffff00);\n // helper.userData = { type: 'HELPER' };\n // this.APP.scene.add(helper);\n\n const OFFSET_TOLE_AND_BASE = 10\n\n for (let index = 0; index < roofSheetingCount; index++) {\n let last = index == roofSheetingCount - 1;\n \n this.addRoofSheetingFront(offsetX + OFFSET_TOLE_AND_BASE);\n this.addRoofSheetingBack(offsetX + OFFSET_TOLE_AND_BASE);\n\n offsetX += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n\n this.addBargeCappingFront();\n this.addBargeCappingBack();\n \n this.addGutterFront();\n this.addGutterBack();\n\n this.addRidgeCapping();\n\n this.showPanelOutline();\n\n this.scene.visible = UI.showRoof\n\n resolve();\n });\n }\n public getOutLines(): Printing2DGeometry{\n \n let objs = this.roofGroupFront.children.filter(o => \n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL \n || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE \n ).concat(...this.roofGroupBack.children.filter(o => \n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL \n || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE \n ));\n\n let gutterObjs = this.roofGroupFront.children.find(o => o.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS).children.concat(...this.roofGroupBack.children.find(o => o.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS).children);\n objs = [...objs, ...gutterObjs];\n\n let lsGeometries: Printing2DLine[] = [];\n\n let offsetLeft = this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue - this.MANAGER.patiosGroup.position.x;\n let offsetRight = this.totalBaySize/2 + this.APP.sldRightOverhang.currentValue + this.MANAGER.patiosGroup.position.x;\n let roofClipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let roofClipingPlane = new Plane( new Vector3( -1, 0, 0 ), offsetRight );\n\n for(let o of objs){ \n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale((o as Mesh), 60);\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n outlineGeo.translate(0,5000,0); \n\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL) {\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlane);\n }\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE) {\n outlineGeo = this.utils.clipOutlineBasePanel(outlineGeo, roofClipingPlaneLeft);\n outlineGeo = this.utils.clipOutlineBasePanel(outlineGeo, roofClipingPlane);\n }\n \n // var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"SHEETING_OUTLINE\"};\n // this.APP.scene.add( line );\n\n let simplifiedGeo = this.simplifyGeo(outlineGeo);\n lsGeometries.push({ \n objectType: o.userData.type,\n vertices: simplifiedGeo.vertices, \n views: o.userData.views\n });\n\n // var line = new LineSegments( simplifiedGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"SHEETING_OUTLINE\"};\n // this.APP.scene.add( line );\n }\n\n let ridgeCapping = this.scene.children.find(el => el.userData.type === GEOMETRY_TYPE.RIDGE_CAPPING)\n if(ridgeCapping){\n ridgeCapping.children.forEach(el => {\n this.utils.createOutline(el as Mesh, lsGeometries);\n })\n }\n\n lsGeometries.push({\n objectType: GEOMETRY_TYPE.ROOF_COVER,\n vertices: this.makeRoofPolygon(),\n color: this.utils.convertHexColorToRgb(`#${new Color(UI.panelColor).getHexString()}`),\n views: [\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ]\n });\n\n return { lines: lsGeometries, texts: [] };\n }\n makeRoofPolygon() {\n const polygon = this.utils.getRoofCoverPolygonForLRRoof()\n this.MANAGER.patiosGroup.updateWorldMatrix(true, true)\n return polygon.map(el => (el as Vector3).applyMatrix4(this.MANAGER.patiosGroup.matrixWorld).add(new Vector3(0, 0, - UI.overhangBack)))\n }\n public showPanelOutline(){\n if(this.APP.sltPanelDirectionShow.currentValue == false)\n return;\n \n let objs = this.roofGroupFront.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ).concat(...this.roofGroupBack.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ));\n \n let offsetLeft = this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue - this.MANAGER.patiosGroup.position.x;\n let offsetRight = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue + this.MANAGER.patiosGroup.position.x;\n let roofClipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let roofClipingPlaneRight = new Plane(new Vector3(-1, 0, 0), offsetRight);\n \n \n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale((o as Mesh), 60);\n \n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n //outlineGeo.translate(0, 5000, 0);\n \n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE) {\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneRight);\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n }\n \n var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n line.userData = {type: GEOMETRY_TYPE.SHEET_OUTLINE};\n this.APP.scene.add( line );\n }\n }\n public simplifyGeo(geo: BufferGeometry): Geometry{\n let simplifiedGeo = new Geometry();\n let vertices = geo.getAttribute('position').array;\n for(let i = 0; i < vertices.length; i+=3){\n simplifiedGeo.vertices.push(new Vector3(vertices[i], vertices[i+1] - 5000, vertices[i+2]));\n }\n return simplifiedGeo;\n } \n public addRoofFront(){\n this.roofGroupFront = null;\n this.roofGroupFront = new Group();\n this.roofGroupFront.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PATIOS };\n\n let offsetY = this.getRoofOffsetY();\n let offsetZ = (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2;\n\n this.roofGroupFront.position.setY(offsetY);\n this.roofGroupFront.position.setZ(offsetZ);\n this.roofGroupFront.rotateX(this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue));\n\n this.scene.add(this.roofGroupFront);\n }\n public addRoofBack(){\n this.roofGroupBack = null;\n this.roofGroupBack = new Group();\n this.roofGroupBack.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PATIOS };\n\n let offsetY = this.getRoofOffsetY();\n let offsetZ = (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2;\n\n this.roofGroupBack.position.setY(offsetY);\n this.roofGroupBack.position.setZ(offsetZ);\n this.roofGroupBack.rotateX(-this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue));\n\n this.scene.add(this.roofGroupBack);\n }\n public addRoofSheetingFront(offsetX: number){\n let mesh = new Mesh(this.geo_RoofPanel.geometry, this.material);\n \n let scaleZ = ((this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2\n + this.APP.sldFrontOverhang.currentValue\n + this.FIT_SHEETING)/this.utils.cos(this.APP.sltRoofPitch.currentValue)/this.geo_RoofPanel.length;\n \n let offsetY = 0;\n let offsetZ = 0;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setZ(scaleZ);\n mesh.userData = { \n category: GEOMETRY_CATEGORY.PATIOS, \n type: GEOMETRY_TYPE.ROOF_PANEL, \n views: views,\n dir: UI.panelDirection === PANEL_DIRECTION.LEFT_TO_RIGHT ? \"L-R\" : \"R-L\"\n };\n \n this.roofGroupFront.add(mesh);\n }\n public addRoofSheetingBack(offsetX: number){\n let mesh = new Mesh(this.geo_RoofPanel.geometry, this.material);\n \n let scaleZ = ((this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2\n + this.APP.sldBackOverhang.currentValue\n + this.FIT_SHEETING)/this.utils.cos(this.APP.sltRoofPitch.currentValue)/this.geo_RoofPanel.length;\n \n let offsetY = 0;\n let offsetZ = - scaleZ * this.geo_RoofPanel.length;\n\n let views: Print2DView[] = [\n // { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setZ(scaleZ);\n mesh.userData = { \n category: GEOMETRY_CATEGORY.PATIOS, \n type: GEOMETRY_TYPE.ROOF_PANEL, \n views: views,\n dir: UI.panelDirection === PANEL_DIRECTION.RIGHT_TO_LEFT ? \"L-R\" : \"R-L\"\n };\n \n this.roofGroupBack.add(mesh);\n }\n private addBargeCappingFront(){\n let mesh: Mesh;\n\n let offsetLeft = this.totalBaySize/2 + this.APP.sldLeftOverhang.currentValue;\n let offsetRight = this.totalBaySize/2 + this.APP.sldRightOverhang.currentValue;\n\n let scaleX = (this.APP.sldLeftOverhang.currentValue \n + this.totalBaySize \n + this.APP.sldRightOverhang.currentValue)/this.geo_roofPanelBargeCappingBack.length;\n \n let fitZ = this.geo_roofPanelBargeCappingLeft.height * this.utils.tan(this.APP.sltRoofPitch.currentValue)\n\n let scaleZ = ((this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2\n + this.APP.sldFrontOverhang.currentValue \n + this.FIT_SHEETING + fitZ)/this.utils.cos(this.APP.sltRoofPitch.currentValue)/this.geo_roofPanelBargeCappingLeft.length;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n //left\n mesh = new Mesh(this.geo_roofPanelBargeCappingLeft.geometry, MaterialManager.Instance().BARGE);\n mesh.position.setX(-offsetLeft);\n mesh.position.setZ(-fitZ)\n mesh.scale.setZ(scaleZ);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupFront.add(mesh);\n\n //right\n mesh = new Mesh(this.geo_roofPanelBargeCappingRight.geometry, MaterialManager.Instance().BARGE);\n mesh.position.setX(offsetRight);\n mesh.position.setZ(-fitZ)\n mesh.scale.setZ(scaleZ);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupFront.add(mesh);\n }\n\n private addBargeCappingBack(){\n let mesh: Mesh;\n\n let offsetLeft = this.totalBaySize/2 + this.APP.sldLeftOverhang.currentValue;\n let offsetRight = this.totalBaySize/2 + this.APP.sldRightOverhang.currentValue;\n\n let scaleX = (this.APP.sldLeftOverhang.currentValue \n + this.totalBaySize \n + this.APP.sldRightOverhang.currentValue)/this.geo_roofPanelBargeCappingBack.length;\n\n let fitZ = this.geo_roofPanelBargeCappingLeft.height * this.utils.tan(this.APP.sltRoofPitch.currentValue);\n\n let scaleZ = ((this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2\n + this.APP.sldBackOverhang.currentValue \n + this.FIT_SHEETING + fitZ)/this.utils.cos(this.APP.sltRoofPitch.currentValue)/this.geo_roofPanelBargeCappingLeft.length;\n\n\n let views: Print2DView[] = [\n // { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n //left\n mesh = new Mesh(this.geo_roofPanelBargeCappingLeft.geometry, MaterialManager.Instance().BARGE);\n mesh.position.setX(-offsetLeft);\n mesh.position.setZ(- scaleZ * this.geo_roofPanelBargeCappingLeft.length + fitZ);\n mesh.scale.setZ(scaleZ);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupBack.add(mesh);\n\n //right\n mesh = new Mesh(this.geo_roofPanelBargeCappingRight.geometry, MaterialManager.Instance().BARGE);\n mesh.position.setX(offsetRight);\n mesh.position.setZ(- scaleZ * this.geo_roofPanelBargeCappingLeft.length + fitZ);\n mesh.scale.setZ(scaleZ);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupBack.add(mesh);\n }\n\n public addGutterFront(){\n let mesh: Mesh;\n \n let offsetXL = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n let offsetXR = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n let offsetY = 0;\n let offsetZ = (this.APP.sldFrontOverhang.currentValue \n + (this.APP.sldMultiSpan.currentValue + this.APP.sldSpan.currentValue) / 2\n + this.FIT_SHEETING - 50)/this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n let scaleX = (this.totalBaySize + this.APP.sldLeftOverhang.currentValue + this.APP.sldRightOverhang.currentValue)/this.geo_gutterBack.length;\n \n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n mesh = new Mesh(this.geo_gutterBack.geometry, MaterialManager.Instance().GUTTER);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.GUTTER_PATIOS, views: views };\n mesh.position.set(offsetXL, 0, 0);\n mesh.scale.setX(scaleX);\n \n let endCapMesh = new Mesh(this.geo_gutterCap.geometry, MaterialManager.Instance().GUTTER);\n endCapMesh.position.set(offsetXL, 0, 0);\n\n let endCapMesh2 = new Mesh(this.geo_gutterCap.geometry, MaterialManager.Instance().GUTTER);\n endCapMesh2.position.set(offsetXR, 0, 0);\n\n let gutterGroup = new Group();\n gutterGroup.add(mesh, endCapMesh, endCapMesh2);\n gutterGroup.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.GUTTER_PATIOS, views: views};\n gutterGroup.position.set(0, offsetY, offsetZ);\n gutterGroup.rotation.set(-this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue), 0, 0);\n this.roofGroupFront.add(gutterGroup);\n }\n\n public addRidgeCapping(){\n let ridgeFront = this.createRidgeCapping();\n const height = this.getRoofOffsetY() + \n this.geo_RoofPanel.height / this.utils.cos(this.APP.sltRoofPitch.currentValue);\n const ridgeLength = this.totalBaySize + this.APP.sldLeftOverhang.currentValue + this.APP.sldRightOverhang.currentValue;\n ridgeFront.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.RIDGE_CAPPING, length: ridgeLength, views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }]};\n ridgeFront.scale.setZ(ridgeLength / this.ridgeGeo.length);\n ridgeFront.rotation.set(0, Math.PI / 2, 0)\n ridgeFront.position.set((this.APP.sldRightOverhang.currentValue - this.APP.sldLeftOverhang.currentValue) / 2, height, (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2);\n this.scene.add(ridgeFront)\n }\n\n public createRidgeCapping(){\n let leftCap = new Mesh(this.ridgeGeo.geometry, MaterialManager.Instance().RIDGE_CAPPING);\n let rightCap = new Mesh(this.ridgeGeo.geometry, MaterialManager.Instance().RIDGE_CAPPING);\n \n rightCap.rotateY(Math.PI)\n \n leftCap.rotateZ(this.utils.degreesToRadians(UI.patiosPitch))\n rightCap.rotateZ(this.utils.degreesToRadians(UI.patiosPitch))\n \n leftCap.userData = {views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }]}\n rightCap.userData = {views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }]}\n \n return new Group().add(leftCap, rightCap)\n }\n\n public addGutterBack(){\n let mesh: Mesh;\n \n let offsetXL = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n let offsetXR = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n let offsetY = 0;\n let offsetZ = -(this.APP.sldBackOverhang.currentValue \n + (this.APP.sldMultiSpan.currentValue + this.APP.sldSpan.currentValue) / 2\n + this.FIT_SHEETING - 50)/this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n let scaleX = (this.totalBaySize + this.APP.sldLeftOverhang.currentValue + this.APP.sldRightOverhang.currentValue)/this.geo_gutterBack.length;\n \n let views: Print2DView[] = [\n // { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n mesh = new Mesh(this.geo_gutterBack.geometry, MaterialManager.Instance().GUTTER);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.GUTTER_PATIOS, views: views };\n mesh.position.set(offsetXL, 0, 0);\n mesh.scale.setX(scaleX);\n \n let endCapMesh = new Mesh(this.geo_gutterCap.geometry, MaterialManager.Instance().GUTTER);\n endCapMesh.position.set(offsetXL, 0, 0);\n\n let endCapMesh2 = new Mesh(this.geo_gutterCap.geometry, MaterialManager.Instance().GUTTER);\n endCapMesh2.position.set(offsetXR, 0, 0);\n\n let gutterGroup = new Group();\n gutterGroup.add(mesh, endCapMesh, endCapMesh2);\n gutterGroup.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.GUTTER_PATIOS, views: views};\n gutterGroup.position.set(-(this.APP.sldLeftOverhang.currentValue - this.APP.sldRightOverhang.currentValue), offsetY, offsetZ);\n gutterGroup.rotation.set(this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue), Math.PI, 0);\n this.roofGroupBack.add(gutterGroup);\n }\n public getRoofOffsetY() {\n return this.APP.sldBuildingHeight.currentValue + this.utils.tan(this.APP.sltRoofPitch.currentValue) * (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2\n }\n public destroy(): void {\n this.unregisterEvent();\n }\n public onColorChanged() {\n if(this.utils && this.geo_RoofPanel.geometry){\n this.utils.changeGeoColor(this.geo_RoofPanel.geometry, new Vector3(0, 1, 0), UI.roofColor.toString());\n }\n }\n private registerEvent(): void {\n this.eventHandleId = this.onColorChanged.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sltColourRoof\n ];\n this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n\n this.controlsToRegisterEvent2 = [\n this.APP.sltRoofSheetingType,\n this.APP.sltRoofThickness,\n this.APP.sltBargeType,\n this.APP.sltDripBarge,\n this.APP.sltGutterType,\n this.APP.sltRoofPitch\n ];\n this.controlsToRegisterEvent2.forEach(c => c.addAction(this.objectSizeChangedHandle));\n }\n private unregisterEvent(): void{\n // this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n // this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach(c => c.removeAction(this.objectSizeChangedHandle));\n this.controlsToRegisterEvent2 = undefined;\n }\n public uiChanged(preVal: number, curVal: number): void {\n this.load();\n }\n private objectSizeChanged(pre: number, cur: number){\n this.optimize().then(() => { this.load() });\n }\n}\n","import {\n DIMENSION_LABEL_TYPE,\n DIMENSION_LOCATION,\n GEOMETRY_TYPE,\n} from \"src/app/app.config\";\nimport { PANEL_DIRECTION, RAKECUT_TYPE } from \"src/app/app.constants\";\nimport Dimension, { AddDimensionOptions } from \"src/app-ribspan/models/Dimension\";\nimport { environment } from \"src/environments/environment\";\nimport {\n Box3,\n BoxBufferGeometry,\n FontLoader,\n Geometry,\n Group,\n Line,\n Line3,\n Material,\n Matrix4,\n Mesh,\n Object3D,\n Scene,\n TextBufferGeometry,\n Vector3,\n} from \"three\";\nimport { GableLRFasciaManager } from \".\";\nimport {\n HomeComponent as AppComponent,\n HomeComponent,\n} from \"../../containers/home/home.component\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport {\n GeometryInfo,\n IBay,\n LineType,\n Print2DText,\n Printing2DGeometry,\n Printing2DLine,\n ViewType,\n} from \"src/app/core/models\";\nimport { UI } from \"../ui\";\nimport { Util } from \"../utils\";\n\nexport class DimensionManager {\n private scene: Scene;\n private APP: AppComponent;\n private MANAGER: GableLRFasciaManager;\n public listText: THREE.Object3D[] = [];\n private utils: Util;\n\n private eventHandleId: any;\n\n private material: Material;\n\n private materialManager: MaterialManager;\n\n private dimensionPatiosFrontBottom: Object3D;\n private dimensionPatiosFrontRight: Object3D;\n\n private dimensionPatiosRightBottom: Object3D;\n private dimensionPatiosRightLeft: Object3D;\n private dimensionPatiosRightRight: Object3D;\n\n private dimensionPatiosLeftBottom: Object3D;\n private dimensionPatiosLeftRight: Object3D;\n private dimensionPatiosLeftLeft: Object3D;\n\n private dimensionPatiosPlanRight: Object3D;\n private dimensionPatiosPlanBottom: Object3D;\n private dimensionPatiosPlanLeft: Object3D;\n\n private dimensionPlanMiddle: Object3D;\n private dimensionPlanMidleLeft: Object3D;\n\n private lineCapGeo: GeometryInfo;\n private lineGeo: GeometryInfo;\n private textGeo: TextBufferGeometry;\n\n private dimensionDistance = 1500;\n private dimensionDistance2 = 500;\n\n private textDistance = 5000;\n\n private totalBaySize: number;\n private box: Box3;\n\n private font: any;\n private textParameter: any;\n private isReady = false;\n private controlsToRegisterEvent: Array;\n private options: AddDimensionOptions;\n private startPos: Vector3;\n private startMatrix: Matrix4;\n private startBayLength: number;\n\n private geometryManager: GeometryManager;\n\n constructor(app: AppComponent, manager: GableLRFasciaManager) {\n this.utils = new Util();\n this.materialManager = MaterialManager.Instance();\n this.APP = app;\n this.MANAGER = manager;\n this.scene = this.APP.scene;\n this.material = MaterialManager.Instance().DIMENSION_TEXT;\n this.geometryManager = GeometryManager.Instance();\n //this.registerEvent();\n }\n\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n this.lineGeo = this.geometryManager.getDimensionLine();\n this.lineCapGeo = this.geometryManager.getDimensionCap();\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.unload();\n\n var loader = new FontLoader();\n\n this.dimensionPatiosFrontBottom = new Group();\n this.dimensionPatiosFrontBottom.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n // this.dimensionPatiosFrontBottom.rotation.set(0, Math.PI, 0);\n this.dimensionPatiosFrontBottom.visible = false;\n\n this.dimensionPatiosFrontRight = new Group();\n this.dimensionPatiosFrontRight.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosFrontRight.rotation.set(0, 0, -Math.PI / 2);\n this.dimensionPatiosFrontRight.visible = false;\n\n this.dimensionPatiosRightBottom = new Group();\n this.dimensionPatiosRightBottom.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosRightBottom.rotation.set(0, -Math.PI / 2, 0);\n this.dimensionPatiosRightBottom.visible = false;\n\n this.dimensionPatiosRightLeft = new Group();\n this.dimensionPatiosRightLeft.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosRightLeft.rotation.set(0, -Math.PI / 2, -Math.PI / 2);\n this.dimensionPatiosRightLeft.visible = false;\n\n this.dimensionPatiosRightRight = new Group();\n this.dimensionPatiosRightRight.rotation.set(\n 0,\n -Math.PI / 2,\n -Math.PI / 2\n );\n this.dimensionPatiosRightRight.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosRightRight.visible = false;\n\n this.dimensionPatiosLeftBottom = new Group();\n this.dimensionPatiosLeftBottom.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosLeftBottom.rotation.set(0, -Math.PI / 2, 0);\n this.dimensionPatiosLeftBottom.visible = false;\n\n this.dimensionPatiosLeftRight = new Group();\n this.dimensionPatiosLeftRight.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosLeftRight.rotation.set(Math.PI / 2, -Math.PI / 2, 0);\n this.dimensionPatiosLeftRight.visible = false;\n\n this.dimensionPatiosLeftLeft = new Group();\n this.dimensionPatiosLeftLeft.rotation.set(0, -Math.PI / 2, Math.PI / 2);\n this.dimensionPatiosLeftLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftLeft.visible = false;\n\n this.dimensionPatiosPlanRight = new Group();\n this.dimensionPatiosPlanRight.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosPlanRight.rotation.set(\n -Math.PI / 2,\n Math.PI,\n -Math.PI / 2\n );\n\n this.dimensionPatiosPlanBottom = new Group();\n this.dimensionPatiosPlanBottom.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosPlanBottom.rotation.set(-Math.PI / 2, 0, 0);\n\n this.dimensionPatiosPlanLeft = new Group();\n this.dimensionPatiosPlanLeft.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n position: { left: true },\n };\n this.dimensionPatiosPlanLeft.rotation.set(-Math.PI / 2, 0, -Math.PI / 2);\n\n this.dimensionPlanMiddle = new Group();\n this.dimensionPlanMidleLeft = new Group();\n\n //testing\n // [\n // this.dimensionPatiosFrontBottom,\n // this.dimensionPatiosFrontRight,\n // this.dimensionPatiosRightBottom,\n // this.dimensionPatiosRightLeft,\n // this.dimensionPatiosRightRight,\n // this.dimensionPatiosLeftBottom,\n // this.dimensionPatiosLeftRight,\n // this.dimensionPatiosLeftLeft,\n // ].forEach(g => { g.visible = true });\n\n this.scene.add(this.dimensionPatiosPlanRight);\n this.scene.add(this.dimensionPatiosPlanLeft);\n this.scene.add(this.dimensionPatiosFrontRight);\n this.APP.patiosManager.patiosGroup.add(\n this.dimensionPatiosFrontBottom,\n //this.dimensionPatiosFrontRight,\n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom,\n this.dimensionPatiosLeftRight,\n this.dimensionPatiosLeftLeft,\n this.dimensionPatiosPlanBottom,\n this.dimensionPlanMiddle,\n this.dimensionPlanMidleLeft\n );\n\n loader.load(\n environment.modelBaseUrl +\n \"/assets/fonts/helvetiker_regular.typeface.json\",\n (font) => {\n this.font = font;\n\n this.textParameter = {\n font: this.font,\n size: 200,\n height: 5,\n curveSegments: 10,\n };\n this.options = {\n container: HomeComponent.ins.scene,\n start: new Vector3(),\n end: new Vector3(),\n linePos: new Vector3(),\n views: [],\n allowDrag: true,\n textParameter: this.textParameter,\n textPos: new Vector3(),\n labelType: null,\n fitZ: 10,\n hasTextClone: false,\n axis: \"x\",\n lineLength: 0,\n subtype: null,\n textUserData: null,\n onDragCallback: this.onDimDrag.bind(this),\n onDragStartCallback: this.onDimDragStart.bind(this),\n };\n\n this.isReady = true;\n this.draw();\n resolve();\n }\n );\n });\n }\n\n public unload() {\n this.scene.remove(this.dimensionPatiosPlanRight);\n this.scene.remove(this.dimensionPatiosPlanLeft);\n this.scene.remove(this.dimensionPatiosFrontRight);\n if (this.APP.patiosManager && this.APP.patiosManager.patiosGroup) {\n this.APP.patiosManager.patiosGroup.remove(\n this.dimensionPatiosFrontBottom,\n //this.dimensionPatiosFrontRight,\n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom,\n this.dimensionPatiosLeftRight,\n this.dimensionPatiosLeftLeft,\n this.dimensionPatiosPlanBottom,\n this.dimensionPlanMiddle,\n this.dimensionPlanMidleLeft\n );\n }\n }\n\n public draw() {\n if (!this.isReady) {\n return;\n }\n // this.dimensionPatiosPlanBottom.children = [];\n // this.dimensionPatiosPlanRight.children = [];\n // this.dimensionPatiosPlanLeft.children = [];\n this.dimensionPatiosPlanBottom.children =\n this.dimensionPatiosPlanBottom.children.filter(\n (el) =>\n el.userData?.groupType ==\n DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL ||\n el.userData?.groupType ==\n DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.LEFT_OVERHANG ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.RIGHT_OVERHANG ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY\n );\n this.dimensionPatiosPlanRight.children =\n this.dimensionPatiosPlanRight.children.filter(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.MULTI_SPAN ||\n el.userData?.groupType ==\n DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.FRONT_OVERHANG ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.BACK_OVERHANG\n );\n this.dimensionPatiosPlanLeft.children =\n this.dimensionPatiosPlanLeft.children.filter(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL\n );\n this.dimensionPatiosFrontBottom.children = [];\n this.dimensionPatiosFrontRight.children = [];\n this.dimensionPatiosLeftBottom.children = [];\n this.dimensionPatiosLeftRight.children = [];\n this.dimensionPatiosLeftLeft.children = [];\n this.dimensionPatiosRightBottom.children = [];\n this.dimensionPatiosRightLeft.children = [];\n this.dimensionPatiosRightRight.children = [];\n this.dimensionPlanMiddle.children = [];\n this.dimensionPlanMidleLeft.children = [];\n\n //this.scene.remove(...this.scene.children.filter(o => o.userData.type == 'BOXHELPER'));\n\n this.totalBaySize = 0;\n for (let b of this.APP.dialogEditBay.listBay) {\n this.totalBaySize += b.value;\n }\n\n this.box = this.utils.getSceneBox();\n\n this.drawDimensionPatiosPlanBottom();\n this.drawDimensionPatiosPlanRight();\n this.drawDimensionPatiosPlanLeft();\n\n this.drawDimensionPatiosFrontBottom();\n this.drawDimensionPatiosFrontRight();\n\n this.drawDimensionPatiosLeftBottom();\n this.drawDimensionPatiosLeftRight();\n this.drawDimensionPatiosLeftLeft();\n\n this.drawDimensionPatiosRightBottom();\n this.drawDimensionPatiosRightLeft();\n this.drawDimensionPatiosRightRight();\n\n this.drawDimensionMidle();\n this.drawDimensionMidleLeft();\n\n // var offset = this.calulateBoundingBox();\n // this.dimensionPatiosPlanRight.position.setX(offset.right);\n // this.dimensionPatiosPlanLeft.position.setX(offset.left);\n // this.dimensionPatiosPlanBottom.position.setZ(offset.front);\n\n // let existingHouseDimLeft = this.APP.scene.children.find(c => c.userData.type == GEOMETRY_TYPE.DIMENSION && c.userData.position?.planLeft);\n // if (existingHouseDimLeft && existingHouseDimLeft.position.x > offset.left) {\n // existingHouseDimLeft.position.setX(offset.left - 500);\n // }\n this.APP.dimensionManager.draw();\n }\n private drawDimensionMidleLeft() {\n let dimLeft = this.utils.createArrowLine([{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }]);\n dimLeft.visible = false;\n dimLeft.position.setX(-300)\n let textLeft = this.utils.createText(\"Panel direction\", [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }], this.textParameter, new Vector3(-500, 0, 650));\n textLeft.visible = false;\n\n let dimRight = dimLeft.clone()\n dimRight.position.setX(300);\n let textRight = textLeft.clone();\n textRight.position.setX(500);\n \n this.dimensionPlanMidleLeft.add(dimLeft);\n this.dimensionPlanMidleLeft.add(textLeft);\n this.dimensionPlanMidleLeft.add(dimRight);\n this.dimensionPlanMidleLeft.add(textRight);\n\n let offsetZ =UI.span / 2 - UI.existingWidth1 / 2 + UI.eaveWidth + this.MANAGER.postAndBeamManager.geoBraket_2.height / 4;\n if (this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT) {\n let offsetX = this.totalBaySize / 2 + UI.overhangRight;\n this.dimensionPlanMidleLeft.position.set(offsetX, 0, offsetZ);\n this.dimensionPlanMidleLeft.rotation.set(0, -Math.PI / 2, 0);\n }\n else {\n let offsetX = - this.totalBaySize / 2 - UI.overhangLeft;\n this.dimensionPlanMidleLeft.rotation.set(0, Math.PI / 2, 0);\n this.dimensionPlanMidleLeft.position.set(offsetX, 0, offsetZ);\n }\n }\n private drawDimensionMidle() {\n let offsetX = 0;\n\n let dimLeft = this.utils.createArrowLine([{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }]);\n dimLeft.rotation.set(0, -Math.PI / 2, 0);\n dimLeft.visible = false;\n\n let textLeft = this.utils.createText(`${UI.patiosPitch} degree`, [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }], this.textParameter, new Vector3(-500, 0, 200));\n textLeft.userData.rotation = new Vector3(0, Math.PI / 2, 0)\n textLeft.visible = false;\n\n let dimRight = dimLeft.clone()\n dimRight.rotation.set(0, Math.PI / 2, 0);\n\n let textRight = textLeft.clone();\n textRight.position.setX(500);\n \n this.dimensionPlanMiddle.add(dimLeft);\n this.dimensionPlanMiddle.add(textLeft);\n this.dimensionPlanMiddle.add(dimRight);\n this.dimensionPlanMiddle.add(textRight);\n\n let offsetZ = - UI.existingWidth1 / 2 + UI.eaveWidth + this.MANAGER.postAndBeamManager.geoBraket_2.height / 4 + UI.span / 2;\n this.dimensionPlanMiddle.rotation.set(0, Math.PI / 2, 0);\n this.dimensionPlanMiddle.position.set(offsetX, 0, offsetZ);\n }\n\n private drawDimensionPatiosPlanBottom() {\n let offsetX = -this.totalBaySize / 2;\n //let offsetZ = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance2 + this.APP.sldEaveWidth.currentValue - this.APP.sldExistingWidth1.currentValue / 2;\n //if (this.APP.sldExistingWidth1.currentValue > this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) {\n // offsetZ = this.APP.sldExistingWidth1.currentValue / 2 + this.dimensionDistance2;\n //}\n\n let offsetZ =\n this.box.max.z +\n this.dimensionDistance2 +\n this.APP.sldEaveWidth.currentValue;\n\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosPlanBottom.position.setZ(offsetZ);\n\n this.dimensionPatiosPlanBottom.children =\n this.dimensionPatiosPlanBottom.children.filter(\n (el) =>\n el.userData?.groupType != DIMENSION_LABEL_TYPE.BAY ||\n (el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY &&\n el.userData?.bayNum <\n HomeComponent.ins.dialogEditBay.listBay.length)\n );\n\n for (let i = 0; i <= this.APP.dialogEditBay.listBay.length; i++) {\n let b: IBay = { index: 0, value: 0, isCut: false };\n if (i < this.APP.dialogEditBay.listBay.length) {\n b = this.APP.dialogEditBay.listBay[i];\n }\n\n if (i < this.APP.dialogEditBay.listBay.length) {\n let textStr = this.utils.getDimensionValue(b.value);\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: b.value,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(offsetX + b.value / 2, 0, 0),\n textPos: new Vector3(offsetX + b.value / 2, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.BAY,\n bayNum: i,\n textUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n position: { bottom: true },\n },\n };\n let dimBay = this.dimensionPatiosPlanBottom.children.find(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY &&\n el.userData?.bayNum == i\n ) as Dimension;\n if (!dimBay) {\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n\n offsetX += b.value;\n }\n\n //rakecut\n if (this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE) {\n let _offsetX =\n -this.APP.dialogEditBay.totalBaySize / 2 +\n this.APP.sldLeftCutHorizontal.currentValue / 2 -\n this.APP.sldLeftOverhang.currentValue;\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldLeftCutHorizontal.currentValue,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(_offsetX, 500, 0),\n textPos: new Vector3(_offsetX, 300, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL,\n subtype: GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT,\n };\n let dimRake = this.dimensionPatiosPlanBottom.children.find(\n (el) =>\n el.userData?.groupType ==\n DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL\n ) as Dimension;\n if (!dimRake) {\n new Dimension(options);\n } else {\n dimRake.update(options);\n }\n } else {\n this.dimensionPatiosPlanBottom.children =\n this.dimensionPatiosPlanBottom.children.filter(\n (el) =>\n el.userData?.groupType !=\n DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL\n );\n }\n if (this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE) {\n let _offsetX =\n this.APP.dialogEditBay.totalBaySize / 2 -\n this.APP.sldRightCutHorizontal.currentValue / 2 +\n this.APP.sldRightOverhang.currentValue;\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldRightCutHorizontal.currentValue,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(_offsetX, 500, 0),\n textPos: new Vector3(_offsetX, 500 - 200, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL,\n subtype: GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT,\n };\n let dimRake = this.dimensionPatiosPlanBottom.children.find(\n (el) =>\n el.userData?.groupType ==\n DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL\n ) as Dimension;\n if (!dimRake) {\n new Dimension(options);\n } else {\n dimRake.update(options);\n }\n } else {\n this.dimensionPatiosPlanBottom.children =\n this.dimensionPatiosPlanBottom.children.filter(\n (el) =>\n el.userData?.groupType !=\n DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL\n );\n }\n //End rakecut\n\n //Left over hang\n this.addOverhang(\n this.dimensionPatiosPlanBottom,\n offsetX,\n this.APP.sldLeftOverhang.currentValue,\n views,\n \"Left\",\n 0,\n \"z\",\n DIMENSION_LABEL_TYPE.LEFT_OVERHANG\n );\n this.addOverhang(\n this.dimensionPatiosPlanBottom,\n offsetX,\n this.APP.sldRightOverhang.currentValue,\n views,\n \"Right\",\n 0,\n \"z\",\n DIMENSION_LABEL_TYPE.RIGHT_OVERHANG\n );\n this.repositionDimension(\n this.dimensionPatiosPlanBottom,\n DIMENSION_LOCATION.PLAN_BOTTOM\n );\n }\n onDimDrag(event) {\n this.utils.handlerDimDragEvent(\n event,\n this.startPos,\n this.startMatrix,\n this.startBayLength\n );\n this.startPos = event.object.position.clone();\n }\n onDimDragStart(event) {\n this.startPos = event.object.position.clone();\n this.startMatrix = event.object.matrixWorld.clone();\n if (event.object.userData?.dimType === DIMENSION_LABEL_TYPE.BAY) {\n let bayNum = event.object.userData.bayNum;\n this.startBayLength = UI.listBay[+bayNum].value;\n }\n }\n private drawDimensionPatiosPlanRight() {\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n let offsetDimensionZ =\n this.APP.sldSpan.currentValue / 2 +\n this.APP.sldEaveWidth.currentValue -\n this.APP.sldExistingWidth1.currentValue / 2 +\n this.MANAGER.postAndBeamManager.geoBraket_2.height / 4;\n\n let _dimensionDistane = this.dimensionDistance2;\n if (\n this.APP.sltExistingType.currentValue == 2 ||\n this.APP.sltExistingType.currentValue == 3\n ) {\n if (this.APP.sldExistingWidth1.currentValue > 0) {\n _dimensionDistane = this.dimensionDistance;\n }\n }\n\n let offsetDimensionX = this.box.max.x + this.dimensionDistance2;\n if (this.APP.sltExistingType.currentValue == 1) {\n offsetDimensionX += this.APP.sldEaveWidth.currentValue;\n }\n //let offsetDimensionX = this.totalBaySize / 2 + this.APP.patiosManager.patiosGroup.position.x + _dimensionDistane;\n //if (this.APP.sldExistingLength.currentValue / 2 > this.totalBaySize / 2) {\n // offsetDimensionX = this.APP.sldExistingLength.currentValue / 2 + _dimensionDistane;\n //}\n\n //if (this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3) {\n // offsetDimensionX += this.APP.sldExistingLength2.currentValue;\n //}\n\n this.dimensionPatiosPlanRight.position.set(\n offsetDimensionX,\n 0,\n offsetDimensionZ\n );\n let dimLength = this.APP.sldSpan.currentValue;\n\n let textStr = this.utils.getDimensionValue(this.APP.sldSpan.currentValue);\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldSpan.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.SPAN,\n hasTextClone: false,\n textUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, -Math.PI / 2, 0),\n },\n textCloneUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, -Math.PI / 2, 0),\n },\n textCloneRotation: new Vector3(0, Math.PI, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, -Math.PI, 0),\n fitZ: -10,\n };\n let dimSpan = this.dimensionPatiosPlanRight.children.find(\n (el) => el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN\n ) as Dimension;\n if (!dimSpan) {\n new Dimension(options);\n } else {\n dimSpan.update(options);\n }\n\n if (this.APP.sldMultiSpan.currentValue > 0) {\n // let offsetX = this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue;\n // - this.APP.sldExistingWidth1.currentValue/2\n // - this.APP.existingWallManager.geo_existingWallL1.width\n // - this.APP.eaveManager.backOverhang;\n\n // let scaleLength = this.APP.sldMultiSpan.currentValue / this.lineGeo.length;\n dimLength += this.APP.sldMultiSpan.currentValue;\n let textStr = this.utils.getDimensionValue(\n this.APP.sldMultiSpan.currentValue\n );\n let optionsMul: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldMultiSpan.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(\n this.APP.sldSpan.currentValue / 2 +\n this.APP.sldMultiSpan.currentValue / 2,\n 0,\n 0\n ),\n textPos: new Vector3(\n this.APP.sldSpan.currentValue / 2 +\n this.APP.sldMultiSpan.currentValue / 2,\n -200,\n 0\n ),\n labelType: DIMENSION_LABEL_TYPE.MULTI_SPAN,\n hasTextClone: false,\n textUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, -Math.PI / 2, 0),\n },\n textCloneUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, -Math.PI / 2, 0),\n },\n textCloneRotation: new Vector3(0, Math.PI, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, -Math.PI, 0),\n fitZ: -10,\n };\n let dimMul = this.dimensionPatiosPlanRight.children.find(\n (el) => el.userData?.groupType == DIMENSION_LABEL_TYPE.MULTI_SPAN\n ) as Dimension;\n if (!dimMul) {\n new Dimension(optionsMul);\n } else {\n dimMul.update(optionsMul);\n }\n } else {\n this.dimensionPatiosPlanRight.children =\n this.dimensionPatiosPlanRight.children.filter(\n (el) => el.userData?.groupType != DIMENSION_LABEL_TYPE.MULTI_SPAN\n );\n }\n\n let extraDistance = 0;\n\n //----Rake cut\n if (this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE) {\n extraDistance = 500;\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n\n let offsetZ =\n dimLength / 2 +\n UI.multiSpan / 2 +\n this.APP.sldFrontOverhang.currentValue -\n this.APP.sldRightCutVertical.currentValue / 2;\n\n let optionsRake: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldRightCutVertical.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(offsetZ, 500, 0),\n textPos: new Vector3(offsetZ, 300, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL,\n textRotation: new Vector3(0, Math.PI, 0),\n fitZ: -10,\n subtype: GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT,\n };\n let dimRake = this.dimensionPatiosPlanRight.children.find(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL\n ) as Dimension;\n if (!dimRake) {\n new Dimension(optionsRake);\n } else {\n dimRake.update(optionsRake);\n }\n } else {\n this.dimensionPatiosPlanRight.children =\n this.dimensionPatiosPlanRight.children.filter(\n (el) =>\n el.userData?.groupType !=\n DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL\n );\n }\n //----End rake cut\n\n let offsetRight =\n this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue;\n let offsetLeft = this.APP.sldSpan.currentValue / 2; // + this.APP.sldMultiSpan.currentValue;\n\n this.addOverhang(\n this.dimensionPatiosPlanRight,\n offsetRight,\n this.APP.sldFrontOverhang.currentValue,\n views,\n \"Right\",\n Math.PI,\n \"y\",\n DIMENSION_LABEL_TYPE.FRONT_OVERHANG\n );\n this.addOverhang(\n this.dimensionPatiosPlanRight,\n offsetLeft,\n this.APP.sldBackOverhang.currentValue,\n views,\n \"Left\",\n Math.PI,\n \"y\",\n DIMENSION_LABEL_TYPE.BACK_OVERHANG\n );\n this.repositionDimension(\n this.dimensionPatiosPlanRight,\n DIMENSION_LOCATION.PLAN_RIGHT,\n extraDistance\n );\n }\n private drawDimensionPatiosPlanLeft() {\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.NONE) {\n this.dimensionPatiosPlanLeft.children =\n this.dimensionPatiosPlanLeft.children.filter(\n (el) =>\n el.userData?.groupType !=\n DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL\n );\n return;\n }\n\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n\n let offsetDimensionZ =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldEaveWidth.currentValue -\n this.APP.sldExistingWidth1.currentValue / 2 -\n // - this.APP.existingWallManager.geo_existingWallL1.width\n // - this.APP.eaveManager.backOverhang\n this.APP.sldLeftCutVertical.currentValue / 2;\n\n let optionsRake: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldLeftCutVertical.currentValue,\n container: this.dimensionPatiosPlanLeft,\n views: views,\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL,\n };\n let dimRake = this.dimensionPatiosPlanLeft.children.find(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL\n ) as Dimension;\n if (!dimRake) {\n new Dimension(optionsRake);\n } else {\n dimRake.update(optionsRake);\n }\n\n //let offsetDimensionX = this.MANAGER.boundingBox.min.x - this.dimensionDistance2;\n this.dimensionPatiosPlanLeft.position.set(0, 0, offsetDimensionZ);\n this.repositionDimension(\n this.dimensionPatiosPlanLeft,\n DIMENSION_LOCATION.PLAN_LEFT\n );\n }\n private drawDimensionPatiosFrontBottom() {\n let dimOffsetY = -this.dimensionDistance2;\n this.dimensionPatiosFrontBottom.position.set(0, dimOffsetY, 0);\n\n let views = [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosPlanBottom.children.forEach((groupDim) => {\n groupDim.children\n .filter(\n (c) => c.userData.subtype != GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT\n )\n .forEach((e) => {\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.rotation.set(0, Math.PI, 0);\n dim.userData[\"rotation\"] = new Vector3(0, 0, 0);\n dim.userData[\"position\"] = { ...e.userData.position, bottom: true };\n }\n this.dimensionPatiosFrontBottom.add(dim);\n });\n });\n }\n private drawDimensionPatiosFrontRight() {\n let views = [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }];\n\n let _dimensionDistane = this.dimensionDistance2;\n if (\n this.APP.sltExistingType.currentValue == 2 ||\n this.APP.sltExistingType.currentValue == 3\n ) {\n if (this.APP.sldExistingWidth1.currentValue > 0) {\n _dimensionDistane = this.dimensionDistance;\n }\n }\n let height = UI.existingWallHeight + +UI.upstandBraketType + this.MANAGER.postAndBeamManager.beamInfo.height + (UI.span / 2) * this.utils.tan(UI.patiosPitch);\n\n let dimOffsetX =\n this.totalBaySize / 2 +\n this.APP.patiosManager.patiosGroup.position.x +\n _dimensionDistane;\n let dimOffsetY = height / 2;\n if (this.APP.sldExistingLength.currentValue / 2 > this.totalBaySize / 2) {\n dimOffsetX =\n this.APP.sldExistingLength.currentValue / 2 + _dimensionDistane;\n }\n\n if (\n this.APP.sltExistingType.currentValue == 2 ||\n this.APP.sltExistingType.currentValue == 3\n ) {\n dimOffsetX += this.APP.sldExistingLength2.currentValue;\n }\n\n this.dimensionPatiosFrontRight.position.set(dimOffsetX, dimOffsetY, 0);\n\n //--------\n\n let scaleLength = height / this.lineGeo.length;\n\n let cap1 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-dimOffsetY);\n\n let cap2 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(dimOffsetY);\n\n let line = new Mesh(\n this.lineGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(height);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(\n this.textGeo,\n MaterialManager.Instance().DIMENSION_TEXT\n );\n text.userData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, 0, -Math.PI / 2),\n };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosFrontRight.add(\n line,\n cap1,\n cap2,\n text,\n ...this.utils.addArrowForLine(line)\n );\n this.repositionDimension(\n this.dimensionPatiosFrontRight,\n DIMENSION_LOCATION.FRONT_RIGHT\n );\n }\n private drawDimensionPatiosLeftBottom() {\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z;\n\n this.dimensionPatiosLeftBottom.position.set(0, dimOffsetY, dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n this.dimensionPatiosPlanRight.children.forEach((groupDim) => {\n groupDim.children.forEach((e) => {\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n if (e.userData?.subType == GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT)\n return;\n dim.rotation.set(0, 0, 0);\n dim.userData[\"views\"] = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n ];\n dim.userData[\"rotation\"] = new Vector3(0, 0, 0);\n dim.userData[\"position\"] = { ...e.userData.position, bottom: true };\n }\n this.dimensionPatiosLeftBottom.add(dim);\n });\n });\n }\n private drawDimensionPatiosLeftRight() {\n let dimOffsetY = UI.existingWallHeight + +UI.upstandBraketType + this.MANAGER.postAndBeamManager.beamInfo.height + (UI.span / 2) * this.utils.tan(UI.patiosPitch);\n\n let dimOffsetZ =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldEaveWidth.currentValue +\n this.dimensionDistance2 -\n this.APP.sldExistingWidth1.currentValue / 2;\n if (\n this.APP.sldExistingWidth1.currentValue +\n this.APP.sldExistingWidth2.currentValue >\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue\n ) {\n dimOffsetZ =\n this.APP.sldExistingWidth1.currentValue / 2 +\n this.APP.sldExistingWidth2.currentValue +\n this.dimensionDistance2 -\n 290;\n }\n if (this.APP.sldExistingLength2.currentValue > 0) {\n dimOffsetZ += 500;\n }\n\n this.dimensionPatiosLeftRight.position.set(0, dimOffsetY / 2, dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n let offsetLength = +dimOffsetY.toFixed(0);\n let scaleLength = offsetLength / this.lineGeo.length;\n\n let cap1 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength / 2);\n\n let cap2 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength / 2);\n\n let line = new Mesh(\n this.lineGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(\n this.textGeo,\n MaterialManager.Instance().DIMENSION_TEXT\n );\n text.userData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }],\n rotation: new Vector3(-Math.PI / 2, 0, 0),\n };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosLeftRight.add(\n line,\n cap1,\n cap2,\n text,\n ...this.utils.addArrowForLine(line)\n );\n this.repositionDimension(\n this.dimensionPatiosLeftRight,\n DIMENSION_LOCATION.LEFT_RIGHT\n );\n }\n private drawDimensionPatiosRightBottom() {\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z;\n\n this.dimensionPatiosRightBottom.position.set(0, dimOffsetY, dimOffsetZ);\n\n let views = [{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosPlanRight.children.forEach((groupDim) => {\n groupDim.children.forEach((e) => {\n if (e.userData?.subType == GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT) return;\n\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.userData[\"rotation\"] = new Vector3(0, 0, 0);\n dim.userData[\"position\"] = { ...e.userData.position, bottom: true };\n }\n this.dimensionPatiosRightBottom.add(dim);\n });\n });\n }\n private drawDimensionPatiosRightLeft() {\n let dimOffsetY = UI.existingWallHeight + +UI.upstandBraketType + this.MANAGER.postAndBeamManager.beamInfo.height + (UI.span / 2) * this.utils.tan(UI.patiosPitch);\n let dimOffsetZ = this.dimensionPatiosLeftRight.position.z;\n\n this.dimensionPatiosRightLeft.position.set(0, dimOffsetY / 2, dimOffsetZ);\n let views = [{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosLeftRight.children.forEach((e) => {\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.userData[\"rotation\"] = new Vector3(Math.PI / 2, 0, 0);\n dim.rotation.set(0, Math.PI, 0);\n }\n this.dimensionPatiosRightLeft.add(dim);\n });\n this.repositionDimension(\n this.dimensionPatiosRightLeft,\n DIMENSION_LOCATION.RIGHT_LEFT\n );\n }\n private drawDimensionPatiosLeftLeft() {\n let dimOffsetY =\n this.APP.sldExistingWallHeight.currentValue +\n +UI.upstandBraketType +\n this.MANAGER.postAndBeamManager.beamInfo.height;\n let dimOffsetZ = this.APP.sldExistingWidth1.currentValue / 2 + 1800;\n\n this.dimensionPatiosLeftLeft.position.set(0, dimOffsetY / 2, -dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n ];\n\n let offsetLength = dimOffsetY;\n let scaleLength = offsetLength / this.lineGeo.length;\n\n let cap1 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength / 2);\n\n let cap2 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength / 2);\n\n let line = new Mesh(\n this.lineGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(\n this.textGeo,\n MaterialManager.Instance().DIMENSION_TEXT\n );\n text.userData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }],\n rotation: new Vector3(Math.PI / 2, 0, 0),\n };\n text.position.set(0, 200, 0);\n\n this.dimensionPatiosLeftLeft.add(\n line,\n cap1,\n cap2,\n text,\n ...this.utils.addArrowForLine(line)\n );\n }\n private drawDimensionPatiosRightRight() {\n let dimOffsetY =\n this.APP.sldExistingWallHeight.currentValue +\n +UI.upstandBraketType +\n this.MANAGER.postAndBeamManager.beamInfo.height;\n let dimOffsetZ = this.APP.sldExistingWidth1.currentValue / 2 + 1800;\n\n this.dimensionPatiosRightRight.position.set(0, dimOffsetY / 2, -dimOffsetZ);\n\n let views = [{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosLeftLeft.children.forEach((e) => {\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n dim.userData[\"rotation\"] = new Vector3(-Math.PI / 2, 0, 0);\n dim.rotation.set(0, Math.PI, 0);\n dim.position.set(dim.position.x, -dim.position.y, dim.position.z);\n this.dimensionPatiosRightRight.add(dim);\n }\n });\n }\n private addOverhang(\n groupDim: Object3D,\n offset: number,\n overhangValue: number,\n views: any,\n side: string,\n rotateText: number,\n axis: string,\n labelType?: string\n ) {\n if (overhangValue == 0) {\n let dim = groupDim.children.find(\n (el) => el.userData?.groupType == labelType\n ) as Dimension;\n if (dim) {\n groupDim.remove(dim);\n }\n return;\n }\n\n let textStr = this.utils.getDimensionValue(overhangValue);\n\n let textRotation = new Vector3();\n let textUserData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n position: { overhang: true },\n };\n if (axis === \"z\") {\n textRotation.setZ(rotateText);\n textUserData[\"rotation\"] = new Vector3(0, 0, -rotateText / 2);\n textUserData[\"position\"][\"bottom\"] = true;\n } else if (axis === \"y\") {\n textRotation.setY(rotateText);\n textUserData[\"rotation\"] = new Vector3(0, -rotateText / 2, 0);\n } else if (axis === \"x\") {\n textRotation.setX(rotateText);\n textUserData[\"rotation\"] = new Vector3(-rotateText / 2, 0, 0);\n }\n\n let linePos = new Vector3();\n if (side === \"Left\") {\n linePos.setX(-offset - overhangValue / 2);\n } else if (side === \"Right\") {\n linePos.setX(offset + overhangValue / 2);\n }\n let fitZ = 0;\n if (labelType) {\n if (axis === \"z\") {\n fitZ = 10;\n } else if (axis === \"y\") {\n fitZ = -10;\n }\n }\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: overhangValue,\n container: groupDim,\n views: views,\n linePos: linePos,\n textPos: linePos.clone().setY(linePos.y - 200),\n labelType: labelType ? labelType : null,\n fitZ: fitZ,\n textRotation: textRotation,\n textUserData: textUserData,\n };\n let dim = groupDim.children.find(\n (el) => el.userData?.groupType == labelType\n ) as Dimension;\n if (!dim) {\n new Dimension(options);\n } else {\n dim.update(options);\n }\n }\n private getTextCover(\n textGeo: TextBufferGeometry,\n labelType: string,\n pos: Vector3,\n fitZ = 0,\n bayNum?: number\n ) {\n let textSize = new Vector3();\n textGeo.boundingBox.getSize(textSize);\n\n let textCover = new Mesh(\n new BoxBufferGeometry(textSize.x, textSize.y, textSize.z)\n );\n textCover.position.set(pos.x, pos.y, pos.z + fitZ);\n textCover.userData = { type: GEOMETRY_TYPE.TEXT_COVER, labelType };\n if (bayNum !== undefined) {\n textCover.userData[\"bayNum\"] = bayNum;\n }\n textCover.material[\"opacity\"] = 0;\n textCover.material[\"transparent\"] = true;\n\n return textCover;\n }\n public getOutlines(): Printing2DGeometry {\n let lsGeometries: Printing2DLine[] = [];\n let lsText: Print2DText[] = [];\n\n for (let dim of [\n ...this.dimensionPatiosPlanBottom.children,\n ...this.dimensionPatiosPlanRight.children,\n ...this.dimensionPatiosPlanLeft.children,\n ...this.dimensionPatiosFrontBottom.children,\n ...this.dimensionPatiosFrontRight.children,\n ...this.dimensionPatiosLeftBottom.children,\n ...this.dimensionPatiosLeftRight.children,\n ...this.dimensionPatiosLeftLeft.children,\n ...this.dimensionPatiosRightBottom.children,\n ...this.dimensionPatiosRightLeft.children,\n ...this.dimensionPatiosRightRight.children,\n ...this.dimensionPlanMiddle.children,\n ...this.dimensionPlanMidleLeft.children,\n ]) {\n if (!dim.userData.views) {\n console.log(\"TEXT NO VIEW\", dim);\n continue;\n }\n\n if (dim.type == \"Group\") {\n dim.children.forEach((el) => {\n el.updateMatrix();\n let _clone = el.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(el.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n\n el.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(el.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(el.matrixWorld);\n\n let textRotation = el.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, el, pos, textRotation, points);\n });\n } else {\n dim.updateMatrix();\n let _clone = dim.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(dim.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n\n dim.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(dim.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(dim.matrixWorld);\n\n let textRotation = dim.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, dim, pos, textRotation, points);\n }\n }\n\n return { lines: lsGeometries, texts: lsText };\n }\n private getDimInfo(\n lsGeometries: Printing2DLine[],\n lsText: Print2DText[],\n dim: Object3D,\n pos: Vector3,\n textRotation: Vector3,\n points: Vector3[]\n ) {\n if (\n dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT &&\n dim.userData.views &&\n dim.userData.value\n ) {\n let box = new Box3().setFromObject(dim.parent);\n let startEnd = this.utils.getStartEndPoint(box);\n let line = new Line3(startEnd[0], startEnd[1]);\n\n let projectPoint = new Vector3();\n line.closestPointToPoint(pos, true, projectPoint);\n let _pos = new Vector3().addVectors(\n projectPoint,\n new Vector3()\n .subVectors(pos, projectPoint)\n .normalize()\n .multiplyScalar(10)\n );\n\n if (dim.userData.position?.bottom) {\n if (dim.userData.position?.overhang) {\n _pos = new Vector3().addVectors(\n projectPoint,\n new Vector3()\n .subVectors(pos, projectPoint)\n .normalize()\n .multiplyScalar(180)\n );\n } else {\n _pos = new Vector3().addVectors(\n projectPoint,\n new Vector3()\n .subVectors(pos, projectPoint)\n .normalize()\n .multiplyScalar(120)\n );\n }\n } else {\n if (dim.userData.position?.overhang) {\n _pos = new Vector3().addVectors(\n projectPoint,\n new Vector3()\n .subVectors(pos, projectPoint)\n .normalize()\n .multiplyScalar(100)\n );\n }\n }\n\n let p = new Vector3().applyMatrix4(dim.matrixWorld);\n\n lsText.push({\n value: dim.userData.value,\n position: p,\n rotation: textRotation,\n views: dim.userData.views,\n });\n } else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_LINE) {\n // this.scene.add(new LineSegments(new Geometry().setFromPoints(points), new LineBasicMaterial({color: new Color('red')})));\n\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views,\n });\n } else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_CAP) {\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views,\n });\n } else if (dim.userData.type == \"Arrow\") {\n let geo = ((dim as Line).geometry as Geometry).clone();\n geo.applyMatrix4(dim.matrixWorld);\n lsGeometries.push({\n vertices: geo.vertices,\n objectType: dim.userData.type,\n views: dim.userData.views,\n });\n }\n }\n public destroy(): void {\n this.unregisterEvent();\n this.unload();\n }\n\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldFrontOverhang,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sldExistingWallHeight,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch,\n ];\n this.controlsToRegisterEvent.forEach((c) =>\n c.addAction(this.eventHandleId)\n );\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.controlsToRegisterEvent = undefined;\n }\n\n public uiChanged(preVal: number, curVal: number): void {\n this.draw();\n }\n private calulateBoundingBox() {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter((c) => c.userData.type == \"BOX_HELPER_\")\n );\n let patiosBox = this.MANAGER.boundingBox;\n\n let planRightBox = this.APP.utils.getObjectBoundingBox(\n this.dimensionPatiosPlanRight\n );\n planRightBox.min.x = patiosBox.max.x;\n planRightBox.max.x = patiosBox.max.x + 500;\n planRightBox.max.y = 10000;\n\n let planLeftBox = this.APP.utils.getObjectBoundingBox(\n this.dimensionPatiosPlanLeft\n );\n planLeftBox.min.x = patiosBox.min.x - 500;\n planLeftBox.max.x = patiosBox.min.x;\n planLeftBox.max.y = 10000;\n\n let planBottomBox = this.APP.utils.getObjectBoundingBox(\n this.dimensionPatiosPlanBottom\n );\n let planBottomBoxWidth = planBottomBox.max.z - planBottomBox.min.z;\n planBottomBox.min.z = patiosBox.max.z;\n planBottomBox.max.z = patiosBox.max.z + planBottomBoxWidth;\n planBottomBox.max.y = 10000;\n\n let objs = [];\n\n objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n c.userData.position?.width1) ||\n c.userData.position?.width2 ||\n c.userData.position?.length2 ||\n c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n\n // for(let e of objs){\n // let boxModelHelper = new BoxHelper(e);\n // boxModelHelper.userData = {type: 'BOX_HELPER_'};\n // this.scene.add(boxModelHelper);\n // }\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (planRightBox.intersectsBox(objBox)) {\n intersectBox = true;\n planRightBox.translate(new Vector3(100, 0, 0));\n }\n if (planLeftBox.intersectsBox(objBox)) {\n intersectBox = true;\n planLeftBox.translate(new Vector3(-100, 0, 0));\n }\n if (planBottomBox.intersectsBox(objBox)) {\n intersectBox = true;\n planBottomBox.translate(new Vector3(0, 0, 100));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(planRightBox);\n // boxHelper.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper);\n\n // let boxHelper2 = new Box3Helper(planLeftBox);\n // boxHelper2.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper2);\n\n // let boxHelper3 = new Box3Helper(planBottomBox);\n // boxHelper3.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper3);\n\n return {\n left: planLeftBox.min.x,\n right: planRightBox.max.x,\n front: planBottomBox.max.z,\n };\n }\n private repositionDimension(dimension, location, extraDistance = 0) {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter((c) => c.userData.type == location)\n );\n\n let patiosBox = this.MANAGER.boundingBox;\n\n if (location == DIMENSION_LOCATION.FRONT_RIGHT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.max.x;\n dimBox.max.x = patiosBox.max.x + 500;\n dimBox.max.z = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n !c.userData.position.length1 &&\n !c.userData.position.length2) ||\n (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL &&\n !c.userData.position.length1 &&\n !c.userData.position.length2)\n );\n\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n !c.userData.position.length1) ||\n (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL &&\n !c.userData.position.length1)\n );\n }\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(100, 0, 0));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setX(dimBox.max.x + extraDistance);\n } else if (location == DIMENSION_LOCATION.PLAN_LEFT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.min.x - 500;\n dimBox.max.x = patiosBox.min.x;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF ||\n c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(-100, 0, 0));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setX(dimBox.min.x + extraDistance);\n } else if (location == DIMENSION_LOCATION.PLAN_RIGHT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.max.x;\n dimBox.max.x = patiosBox.max.x + 500;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF ||\n c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n\n // for(let e of objs){\n // let boxModelHelper = new BoxHelper(e);\n // boxModelHelper.userData = {type: location};\n // this.scene.add(boxModelHelper);\n // }\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(100, 0, 0));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setX(dimBox.max.x + extraDistance);\n } else if (location == DIMENSION_LOCATION.PLAN_BOTTOM) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF ||\n c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(0, 0, 100));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setZ(dimBox.max.z + extraDistance);\n } else if (location == DIMENSION_LOCATION.LEFT_RIGHT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n dimBox.min.x = -10000;\n dimBox.max.x = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n c.userData.position?.left) ||\n (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL &&\n c.userData.position?.left)\n );\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(0, 0, 100));\n }\n }\n\n if (!intersectBox) break;\n }\n\n dimension.position.setZ(dimBox.max.z + extraDistance);\n } else if (location == DIMENSION_LOCATION.RIGHT_LEFT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(\n this.dimensionPatiosLeftRight\n );\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n\n dimBox.min.x = -10000;\n dimBox.max.x = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n c.userData.position?.right) ||\n (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL &&\n c.userData.position?.right)\n );\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(0, 0, 100));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setZ(dimBox.max.z + extraDistance);\n }\n }\n}\n","import { PostAndBeamManager } from \"./post-and-beam.manager\";\nimport { RoofManager } from \"./roof.manager\";\nimport { HomeComponent as AppComponent } from \"../../containers/home/home.component\";\nimport { PatiosManager, RafterBeamAndInternalBeamInfo } from \"../patios.manager\";\nimport { Printing2DGeometry } from \"src/app/core/models\";\nimport { Group, Box3, Vector3 } from \"three\";\nimport { GEOMETRY_CATEGORY } from \"src/app/app.config\";\nimport { DimensionManager } from \"./dimension.manager\";\nimport {\n CUTOUT_ENABLE,\n EXISTING_BUILDING_CONFIG,\n RAKECUT_TYPE,\n} from \"src/app/app.constants\";\n\nexport class GableLRFasciaManager implements PatiosManager {\n public patiosGroup: Group;\n public boundingBox: Box3;\n private APP: AppComponent;\n public postAndBeamManager: PostAndBeamManager;\n public roofManager: RoofManager;\n public dimesionManager: DimensionManager;\n public ignoreBayEvent: boolean = false;\n\n private updateEventHandle: any;\n private deferHandle;\n private deferTimeout = EXISTING_BUILDING_CONFIG.CUTOUT_DEFFER_TIME_OUT;\n private controlsToRegisterEvent: Array;\n public patiosWidth: number;\n public patiosLength: number;\n public get cutoutCondition(): boolean {\n return (\n [\n this.APP.sldEaveWidth,\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldFrontOverhang,\n ]\n .map((x) => x.currentValue)\n .reduce((a, b) => a + b, 0) -\n this.APP.sldExistingWidth1.currentValue >=\n EXISTING_BUILDING_CONFIG.CUTOUT_ALLOW\n );\n }\n public get rakecutCondition(): boolean {\n let patiosWidth =\n this.APP.dialogEditBay.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n let patiosLength =\n this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue;\n\n return false;\n }\n\n public firstLoad = true;\n\n constructor(app: AppComponent) {\n this.APP = app;\n this.patiosGroup = new Group();\n this.patiosGroup.userData = { category: GEOMETRY_CATEGORY.PATIOS };\n app.scene.add(this.patiosGroup);\n\n this.postAndBeamManager = new PostAndBeamManager(app, this);\n this.roofManager = new RoofManager(app, this);\n this.dimesionManager = new DimensionManager(app, this);\n this.registerEvents();\n }\n\n load(): Promise {\n return Promise.all([\n this.postAndBeamManager.optimize(),\n this.roofManager.optimize(),\n this.dimesionManager.optimize(),\n ]).then(() => {\n this.postAndBeamManager.load();\n this.roofManager.load();\n this.dimesionManager.load();\n });\n }\n loadBracket(bracketQuantity: number): void {\n this.postAndBeamManager.addUpstandBraket(bracketQuantity);\n }\n loadBracketCutout(bracketQuantity: number): void {\n this.postAndBeamManager.addUpstandBraketCutOut(bracketQuantity);\n }\n loadSideGableBracket(bracketQuantity: number): void{\n \n }\n loadRafterBeamAndInternalBeam(info: RafterBeamAndInternalBeamInfo): void{\n \n }\n public destroy(): void {\n this.postAndBeamManager.destroy();\n this.roofManager.destroy();\n this.dimesionManager.destroy();\n this.unRegisterEvent();\n }\n registerEvents(): void {\n this.updateEventHandle = this.updateDefer.bind(this);\n this.controlsToRegisterEvent = [\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sltCutOut,\n this.APP.sldFrontOverhang,\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltColourBarge,\n this.APP.sltColourGutter,\n this.APP.sltColourDownpipe,\n this.APP.sltColourRoof,\n this.APP.sldSpan,\n this.APP.sldExistingWallHeight,\n this.APP.sldEaveWidth,\n this.APP.sldFasciaDepth,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldFlyOverBracketHeight,\n this.APP.sltColourBeam,\n this.APP.sltColourPost,\n this.APP.sltColourBracket,\n this.APP.sltColourFasciaBracket,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n this.APP.sltLeftCutType,\n this.APP.sldLeftCutVertical,\n this.APP.sldLeftCutHorizontal,\n this.APP.sltRightCutType,\n this.APP.sldRightCutVertical,\n this.APP.sldRightCutHorizontal,\n this.APP.sltPanelDirection,\n this.APP.sltPanelDirectionShow,\n this.APP.sltFasciaUpstandBrackets,\n this.APP.sltUpFasciaUpstandBracket,\n this.APP.sltBeamLayoutShow,\n this.APP.btnTurnOnPanel\n ];\n this.controlsToRegisterEvent.forEach((c) => {\n c.addAction(this.updateEventHandle);\n });\n }\n unRegisterEvent(): void {\n this.controlsToRegisterEvent.forEach((c) =>\n c.removeAction(this.updateEventHandle)\n );\n }\n updateDefer(previousValue: number, currentValue: number) {\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES ||\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE ||\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE\n ) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => {\n this.update(previousValue, currentValue);\n }, this.deferTimeout);\n } else {\n this.update(previousValue, currentValue);\n }\n }\n update(preVal: number, curVal: number): void {\n let totalBaySize = this.APP.dialogEditBay.totalBaySize;\n let diff = this.APP.sldExistingLength.currentValue - totalBaySize;\n\n this.patiosWidth =\n totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n this.patiosLength =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue;\n\n //let cutoutCondition = this.cutoutCondition.map(x => x.currentValue).reduce((a, b) => a + b, 0) - this.APP.sldExistingWidth1.currentValue >= EXISTING_BUILDING_CONFIG.CUTOUT_ALLOW;\n if (this.APP.sltExistingType.currentValue == 1) {\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n // this.patiosGroup.position.setX(-diff / 2 + this.APP.sldLeftOverhang.currentValue + this.APP.sldEaveWidth.currentValue - this.APP.sldExistingLength2.currentValue);\n this.patiosGroup.position.setX(\n -diff / 2 +\n this.APP.sldEaveWidth.currentValue -\n this.APP.sldExistingLength2.currentValue\n );\n } else {\n // this.patiosGroup.position.setX(-diff / 2 + this.APP.sldLeftOverhang.currentValue + this.APP.sldEaveWidth.currentValue);\n this.patiosGroup.position.setX(\n -diff / 2 + this.APP.sldEaveWidth.currentValue\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 2) {\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n // this.patiosGroup.position.setX(diff / 2 - this.APP.sldRightOverhang.currentValue - this.APP.sldEaveWidth.currentValue + this.APP.sldExistingLength2.currentValue);\n this.patiosGroup.position.setX(\n diff / 2 -\n this.APP.sldEaveWidth.currentValue +\n this.APP.sldExistingLength2.currentValue\n );\n } else {\n // this.patiosGroup.position.setX(diff / 2 - this.APP.sldRightOverhang.currentValue - this.APP.sldEaveWidth.currentValue);\n this.patiosGroup.position.setX(\n diff / 2 - this.APP.sldEaveWidth.currentValue\n );\n }\n } else {\n this.patiosGroup.position.setX(0);\n }\n\n Promise.all([this.roofManager.load(), this.postAndBeamManager.load()]).then(\n () => {\n // this.boundingBox = this.APP.utils.getObjectsBoundingBox(\n // this.patiosGroup.children.filter(c => c.userData.type != GEOMETRY_TYPE.DIMENSION && c.userData.type != GEOMETRY_TYPE.ROOF_PATIOS)\n // );\n this.boundingBox = this.getPatiosBox();\n this.dimesionManager.draw();\n }\n );\n }\n getOutlines(): Printing2DGeometry {\n let dimensionOutline = this.dimesionManager.getOutlines();\n return {\n lines: [\n ...this.postAndBeamManager.getSection().lines,\n ...this.roofManager.getOutLines().lines,\n ...dimensionOutline.lines,\n ],\n texts: dimensionOutline.texts,\n };\n }\n public getPatiosBox(): Box3 {\n let left =\n -this.APP.dialogEditBay.totalBaySize / 2 -\n this.APP.sldLeftOverhang.currentValue;\n let right =\n this.APP.dialogEditBay.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue;\n let front =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue;\n let back = 0;\n let height = this.APP.sldBuildingHeight.currentValue;\n\n let box = new Box3();\n box = box.expandByPoint(new Vector3(left, 0, front));\n box = box.expandByPoint(new Vector3(right, height, back));\n box.translate(new Vector3(0, 0, this.APP.sldEaveWidth.currentValue));\n\n if (this.APP.sltExistingType.currentValue == 1) {\n let diff =\n (this.APP.sldExistingLength.currentValue -\n this.APP.dialogEditBay.totalBaySize) /\n 2;\n box.translate(new Vector3(-diff, 0, 0));\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n box.translate(new Vector3(this.APP.sldLeftOverhang.currentValue, 0, 0));\n box.translate(new Vector3(this.APP.sldEaveWidth.currentValue, 0, 0));\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n box.translate(\n new Vector3(-this.APP.sldExistingLength2.currentValue, 0, 0)\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 2) {\n let diff =\n (this.APP.sldExistingLength.currentValue -\n this.APP.dialogEditBay.totalBaySize) /\n 2;\n box.translate(new Vector3(diff, 0, 0));\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n box.translate(new Vector3(-this.APP.sldRightOverhang.currentValue, 0, 0));\n box.translate(new Vector3(-this.APP.sldEaveWidth.currentValue, 0, 0));\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n box.translate(\n new Vector3(this.APP.sldExistingLength2.currentValue, 0, 0)\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 3) {\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n }\n\n // if (!environment.production) {\n // this.APP.scene.remove(...this.APP.scene.children.filter(o => o.userData.type == 'BOXHELPER'));\n // let boxHelper = new Box3Helper(box);\n // boxHelper.userData = { type: \"BOXHELPER\" };\n // this.APP.scene.add(boxHelper);\n // }\n\n return box;\n }\n}\n","import _ from \"lodash\";\nimport Beam, { BeamOptions } from \"src/app-ribspan/models/Beam.model\";\nimport UpstandBraket, {\n UpstandBraketOptions,\n} from \"src/app-ribspan/models/UpstandBraket.model\";\nimport {\n BoxBufferGeometry,\n BoxHelper,\n BufferGeometry,\n Geometry,\n Group,\n LineSegments,\n Material,\n Matrix4,\n Mesh,\n Plane,\n Vector3,\n} from \"three\";\nimport { GableLRFasciaManager } from \".\";\nimport { GEOMETRY_CATEGORY, GEOMETRY_TYPE } from \"src/app/app.config\";\nimport { BUILDING_SIDE, EXISTING_BUILDING_CONFIG } from \"src/app/app.constants\";\nimport {\n HomeComponent as AppComponent,\n HomeComponent,\n} from \"../../containers/home/home.component\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport {\n GeometryInfo,\n LineType,\n Print2DView,\n Printing2DGeometry,\n Printing2DLine,\n ViewType,\n} from \"src/app/core/models\";\nimport { UI } from \"../ui\";\nimport { Util, getBeamEndCapCode, getRafterBeamEndCapCode } from \"../utils\";\n\nexport class PostAndBeamManager {\n private scene: Group;\n private APP: AppComponent;\n private MANAGER: GableLRFasciaManager;\n private material: Material;\n private utils: Util;\n private geometryManager: GeometryManager;\n private postInfo: GeometryInfo;\n public beamInfo: GeometryInfo;\n private beamRakecutInfoLeft: GeometryInfo;\n private beamRakecutInfoRight: GeometryInfo;\n private geo_centerSuperiorPost: GeometryInfo;\n private geo_RafterBeam: GeometryInfo;\n private geo_rafterBeamEndCap: GeometryInfo;\n private geo_beamEndCap: GeometryInfo;\n private geo_groundBase: GeometryInfo;\n private eventHandleId: any;\n private roofWidth: number;\n private existingTypeLeftX: number;\n private existingTypeRightX: number;\n private existingType: number;\n private totalBaySize: number;\n private frontPostHeight: number;\n private downpipeGroup: Group;\n private downpipeStepRakeCutGroupLeft: Group;\n private downpipeStepRakeCutGroupRight: Group;\n public geo_downPipe: GeometryInfo;\n private geo_downPipeL: GeometryInfo;\n private geoBraketExtL_2: GeometryInfo;\n private geoBraketExtR_2: GeometryInfo;\n private objectSizeChangedHandle: any;\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n\n private geo_beamStepRakecutLeft: GeometryInfo;\n private geo_beamStepRakecutRight: GeometryInfo;\n\n private geoBeamJoint: GeometryInfo;\n\n private beamLeftCutSizeInfo: any;\n private beamRightCutSizeInfo: any;\n\n private geoBraket_1: GeometryInfo;\n public geoBraket_2: GeometryInfo;\n private geoBeam: GeometryInfo;\n private geoBeamEndCap: GeometryInfo;\n\n private offsetYBraket = 0;\n\n k: number;\n k_: number;\n j: number;\n l: number;\n m: number;\n v: number;\n\n constructor(app: AppComponent, fasciaManager: GableLRFasciaManager) {\n this.APP = app;\n this.MANAGER = fasciaManager;\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.scene = fasciaManager.patiosGroup;\n this.material = MaterialManager.Instance().DEFAULT.clone();\n this.registerEvent();\n }\n public destroy(): void {\n this.unregisterEvent();\n }\n public uiChanged(preVal: number, curVal: number): void {\n this.load();\n }\n private objectSizeChanged(pre: number, cur: number) {\n this.optimize().then(() => {\n this.load();\n });\n }\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldExistingWallHeight,\n this.APP.sltRoofPitch,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldExistingWidth1,\n this.APP.sltExistingType,\n this.APP.dialogEditBay,\n this.APP.sldEaveWidth,\n this.APP.sldFrontOverhang,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n ];\n //this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n this.controlsToRegisterEvent2 = [\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltColumnType,\n ];\n this.controlsToRegisterEvent2.forEach((c) =>\n c.addAction(this.objectSizeChangedHandle)\n );\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach((c) =>\n c.removeAction(this.objectSizeChangedHandle)\n );\n this.controlsToRegisterEvent2 = undefined;\n }\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n this.beamInfo = this.geometryManager.getBeam();\n this.beamInfo.geometry\n .rotateY(Math.PI / 2)\n .translate(this.beamInfo.length / 2, -this.beamInfo.height / 2, 0);\n //.scale(this.APP.sldBaySize.currentValue / this.beamInfo.length, 1, 1);\n\n this.geoBeamJoint = this.geometryManager.getBeamJoint();\n\n this.beamRakecutInfoLeft = this.geometryManager.getBeam();\n this.beamRakecutInfoLeft.geometry.translate(\n this.beamInfo.width / 2,\n -this.beamInfo.height / 2,\n -this.beamInfo.length / 2\n );\n\n this.beamRakecutInfoRight = this.geometryManager.getBeam();\n this.beamRakecutInfoRight.geometry.translate(\n -this.beamInfo.width / 2,\n -this.beamInfo.height / 2,\n -this.beamInfo.length / 2\n );\n\n this.geo_beamStepRakecutLeft = this.geometryManager.getBeam();\n this.geo_beamStepRakecutLeft.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_beamStepRakecutLeft.length / 2,\n -this.geo_beamStepRakecutLeft.height / 2,\n -this.geo_beamStepRakecutLeft.width / 2\n );\n\n this.geo_beamStepRakecutRight = this.geometryManager.getBeam();\n this.geo_beamStepRakecutRight.geometry\n .rotateY(Math.PI / 2)\n .translate(\n -this.geo_beamStepRakecutRight.length / 2,\n -this.geo_beamStepRakecutRight.height / 2,\n -this.geo_beamStepRakecutRight.width / 2\n );\n\n this.geo_beamEndCap = this.geometryManager.getBeamEndCap();\n this.geo_beamEndCap.geometry.translate(\n 0,\n -this.geo_beamEndCap.height / 2,\n 0\n );\n\n this.geo_RafterBeam = this.geometryManager.getRafterBeam();\n this.geo_RafterBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_RafterBeam.length / 2,\n -this.geo_RafterBeam.height / 2,\n this.geo_RafterBeam.width / 2\n );\n\n this.geo_rafterBeamEndCap = this.geometryManager.getRafterBeamEndCap();\n this.geo_rafterBeamEndCap.geometry.translate(\n 0,\n -this.geo_rafterBeamEndCap.height / 2,\n this.geo_rafterBeamEndCap.length / 2\n );\n\n this.postInfo = this.geometryManager.getPost();\n this.postInfo.geometry\n .rotateX(Math.PI / 2)\n .translate(0, this.postInfo.height / 2, 0);\n //.scale(1, scalePostHeight, 1);\n\n this.geo_centerSuperiorPost = this.geometryManager.getCenterPost();\n this.geo_centerSuperiorPost.geometry\n .rotateX(Math.PI / 2)\n .translate(\n this.geo_centerSuperiorPost.width / 2,\n this.geo_centerSuperiorPost.height / 2,\n this.geo_centerSuperiorPost.width / 2\n );\n\n this.geo_groundBase = new GeometryInfo();\n this.geo_groundBase.width = 1000;\n this.geo_groundBase.height = 1;\n this.geo_groundBase.length = 1000;\n this.geo_groundBase.geometry = new BoxBufferGeometry(\n this.geo_groundBase.width,\n this.geo_groundBase.height,\n this.geo_groundBase.length\n );\n this.geo_groundBase.geometry.translate(\n this.geo_groundBase.width / 2,\n 0,\n this.geo_groundBase.length / 2\n );\n\n this.geo_downPipe = this.geometryManager.getDownPipe();\n this.geo_downPipeL = this.geometryManager.getDownPipeL();\n\n this.scene.remove(\n ...this.scene.children.filter(\n (c) => c.userData.type == GEOMETRY_TYPE.DOWNPIPE\n )\n );\n this.downpipeGroup = new Group();\n this.downpipeGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeGroup);\n\n this.downpipeStepRakeCutGroupLeft = new Group();\n this.downpipeStepRakeCutGroupLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeStepRakeCutGroupLeft);\n\n this.downpipeStepRakeCutGroupRight = new Group();\n this.downpipeStepRakeCutGroupRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeStepRakeCutGroupRight);\n\n this.geoBraket_1 = this.geometryManager.getUpstandBraket(1);\n this.geoBraket_1.geometry.rotateX(Math.PI / 2);\n this.geoBraket_1.geometry.translate(0, this.geoBraket_1.length / 2, 0);\n this.geoBraket_2 = this.geometryManager.getUpstandBraket(2);\n this.geoBraket_2.geometry.rotateY(Math.PI);\n this.geoBraket_2.geometry.rotateX(Math.PI / 2);\n this.geoBraket_2.geometry.translate(\n 0,\n this.geoBraket_2.length / 2,\n -this.geoBraket_2.height / 4\n );\n\n this.geoBraketExtL_2 = this.geometryManager.getUpstandBraket(2);\n this.geoBraketExtL_2.geometry.rotateX(Math.PI / 2);\n this.geoBraketExtL_2.geometry.rotateY(-Math.PI / 2);\n this.geoBraketExtL_2.geometry.rotateZ(-Math.PI);\n this.geoBraketExtL_2.geometry.translate(\n -this.geoBraketExtL_2.height / 2,\n this.geoBraketExtL_2.length / 2,\n this.geoBraketExtL_2.height / 3 - this.geoBraket_1.width / 2\n );\n //Right\n this.geoBraketExtR_2 = this.geometryManager.getUpstandBraket(2);\n this.geoBraketExtR_2.geometry.rotateX(Math.PI / 2);\n this.geoBraketExtR_2.geometry.rotateY(Math.PI / 2);\n this.geoBraketExtR_2.geometry.rotateZ(-Math.PI);\n this.geoBraketExtR_2.geometry.translate(\n this.geoBraketExtR_2.height / 2,\n this.geoBraketExtR_2.length / 2,\n this.geoBraketExtR_2.height / 3 - this.geoBraket_1.width / 2\n );\n\n this.geoBeam = this.geometryManager.getBeam();\n this.geoBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(0, this.geoBeam.height / 2, 0);\n\n this.geoBeamEndCap = this.geometryManager.getBeamEndCap();\n this.geoBeamEndCap.geometry\n .translate(\n 0,\n this.geoBeamEndCap.height / 2,\n this.geoBeamEndCap.length / 2\n )\n .rotateY(Math.PI / 2);\n\n resolve();\n });\n }\n\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.SUPERIOR_POST\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.SUPERIOR_CENTER_POST\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.GROUND_BASE\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (o) => o.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET_EXT\n )\n );\n this.downpipeGroup.children = [];\n this.downpipeStepRakeCutGroupLeft.children = [];\n this.downpipeStepRakeCutGroupRight.children = [];\n\n this.beamLeftCutSizeInfo = this.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.LEFT\n );\n this.beamRightCutSizeInfo = this.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.RIGHT\n );\n\n this.totalBaySize = this.APP.dialogEditBay.listBay.reduce(\n (total, val) => total + val.value,\n 0\n );\n this.roofWidth = this.totalBaySize;\n this.existingType = +this.APP.sltExistingType.currentValue;\n this.existingTypeLeftX = 0;\n this.existingTypeRightX = 0;\n if (this.existingType === 1 || this.existingType === 3) {\n this.existingTypeLeftX = this.APP.sldEaveWidth.currentValue;\n }\n if (this.existingType === 2 || this.existingType === 3) {\n this.existingTypeRightX = this.APP.sldEaveWidth.currentValue;\n }\n this.offsetYBraket = 0;\n if (UI.upstandBraketType == 150) {\n this.offsetYBraket =\n 150 +\n this.beamInfo.height +\n (this.geoBraket_2.height / 4 + this.geoBraket_1.width) *\n this.utils.tan(UI.patiosPitch);\n } else if (UI.upstandBraketType == 300) {\n this.offsetYBraket =\n 300 +\n this.beamInfo.height +\n (this.geoBraket_2.height / 4 + this.geoBraket_1.width) *\n this.utils.tan(UI.patiosPitch);\n } else if (UI.upstandBraketType == 450) {\n this.offsetYBraket =\n 450 +\n this.beamInfo.height +\n (this.geoBraket_2.height / 4 + this.geoBraket_1.width) *\n this.utils.tan(UI.patiosPitch);\n } else if (UI.upstandBraketType == 600) {\n this.offsetYBraket =\n 600 +\n this.beamInfo.height +\n (this.geoBraket_2.height / 4 + this.geoBraket_1.width) *\n this.utils.tan(UI.patiosPitch);\n }\n if (UI.isUpFasciaUpstandardBracket) {\n this.offsetYBraket -=\n (this.geoBraket_2.height / 4 + this.geoBraket_1.width) *\n this.utils.tan(UI.patiosPitch) +\n (this.geoBraket_2.height / 4) * this.utils.tan(UI.patiosPitch);\n }\n\n this.addBeam({ isMultiSpan: false });\n this.addBeam({ isMultiSpan: true });\n\n this.addGround();\n let offsetX = -(this.totalBaySize / 2) + this.postInfo.width / 2;\n let offsetXOrigin = -(this.totalBaySize / 2) + this.postInfo.width / 2;\n let idx = 0;\n\n this.addPost(offsetX, { isMultiSpan: false, left: true });\n this.addUpstandBraketExt({ isMultiSpan: false, left: true });\n\n this.addPost(offsetX, { isMultiSpan: true, left: true });\n this.addUpstandBraketExt({ isMultiSpan: true, left: true });\n\n this.addCenterSuperiorBeam();\n\n this.addHorSuperiorBeam(offsetX, {\n front: true,\n first: true,\n last: false,\n });\n this.addCenterPost(offsetX, { center: true, first: true, last: false });\n\n this.addRafterSuperiorBeam(offsetX - this.beamInfo.width / 2, {\n front: true,\n first: true,\n last: false,\n });\n this.addRafterSuperiorBeam(offsetX - this.beamInfo.width / 2, {\n back: true,\n first: true,\n last: false,\n });\n\n this.APP.dialogEditBay.listBay.map((m) => {\n offsetX += m.value;\n this.addHorSuperiorBeam(\n offsetX -\n (idx === this.APP.dialogEditBay.listBay.length - 1\n ? this.geoBeam.width\n : this.geoBeam.width / 2),\n {\n front: true,\n first: false,\n last: idx === this.APP.dialogEditBay.listBay.length - 1,\n }\n );\n\n this.addCenterPost(offsetX, {\n center: true,\n first: false,\n last: idx === this.APP.dialogEditBay.listBay.length - 1,\n });\n\n this.addRafterSuperiorBeam(\n offsetX -\n (idx === this.APP.dialogEditBay.listBay.length - 1\n ? this.beamInfo.width * 1.5\n : this.beamInfo.width),\n {\n front: true,\n first: false,\n last: idx === this.APP.dialogEditBay.listBay.length - 1,\n }\n );\n this.addRafterSuperiorBeam(\n offsetX -\n (idx === this.APP.dialogEditBay.listBay.length - 1\n ? this.beamInfo.width * 1.5\n : this.beamInfo.width),\n {\n back: true,\n first: false,\n last: idx === this.APP.dialogEditBay.listBay.length - 1,\n }\n );\n\n if (idx === this.APP.dialogEditBay.listBay.length - 1) {\n offsetX -= this.postInfo.width;\n this.addPost(offsetX, { isMultiSpan: false, right: true });\n this.addPost(offsetX, { isMultiSpan: true, right: true });\n } else {\n this.addPost(offsetX - this.postInfo.width / 2, {\n isMultiSpan: false,\n });\n this.addPost(offsetX - this.postInfo.width / 2, {\n isMultiSpan: true,\n });\n }\n idx++;\n });\n\n this.addUpstandBraketExt({ isMultiSpan: false, right: true });\n this.addUpstandBraketExt({ isMultiSpan: true, right: true });\n\n this.addDownPipe();\n\n this.addUpstandBeam();\n\n this.addUpstandBraket();\n this.addUpstandBraketCutOut();\n this.showBeamOutline();\n this.updateUI();\n resolve();\n });\n }\n public showBeamOutline() {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.BEAM_OUTLINE\n )\n );\n\n if (!UI.beamLayoutShow) return;\n\n const objs = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n const meshes = [];\n objs.forEach((el) => {\n if (el.type == \"Group\") {\n meshes.push(\n ...el.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n }\n });\n\n for (let o of meshes) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n o as Mesh,\n 10\n );\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n\n var line = new LineSegments(\n outlineGeo,\n MaterialManager.Instance().BEAM_OUTLINE\n );\n line.userData = { type: GEOMETRY_TYPE.BEAM_OUTLINE };\n this.APP.scene.add(line);\n }\n }\n public addUpstandBeam() {\n if (UI.upstandBraketType == 0 || UI.listBay.length == 0) {\n return;\n }\n let height = +UI.upstandBraketType + this.beamInfo.height;\n let pos = new Vector3(\n -UI.totalBayLength / 2 - UI.overhangLeft,\n UI.existingWallHeight + height,\n UI.eaveWidth +\n this.geoBraket_2.height / 4 +\n this.geoBraket_1.width / 2 -\n UI.existingWidth1 / 2\n );\n let totalLength = UI.totalBayLength + UI.overhangLeft + UI.overhangRight;\n if (!HomeComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n if (\n UI.existingType == BUILDING_SIDE.LEFT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n totalLength -= UI.existingLength2;\n pos.setX(pos.x + UI.existingLength2);\n }\n if (\n UI.existingType == BUILDING_SIDE.RIGHT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n totalLength -= UI.existingLength2;\n }\n }\n let views: Print2DView[] = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n this.cutStandardBeamToEqualLengthBeam(\n this.beamInfo,\n this.geo_beamEndCap,\n totalLength,\n pos,\n new Vector3(),\n views,\n 1,\n { back: true },\n 0,\n \"x\",\n \"EB\",\n this.geoBeamJoint\n );\n // Beam cutout\n if (!HomeComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n let offsetHeightCutout = +UI.upstandBraketType + this.beamInfo.height;\n if (UI.isUpFasciaUpstandardBracket) {\n offsetHeightCutout +=\n (UI.existingWidth1 + this.geoBraket_2.height / 4) *\n this.utils.tan(UI.patiosPitch);\n } else {\n offsetHeightCutout -=\n (UI.existingWidth1 + this.geoBraket_2.height / 4) *\n this.utils.tan(UI.patiosPitch);\n }\n\n if (offsetHeightCutout < 0) {\n return;\n }\n if (UI.existingType == 1 || UI.existingType == 3) {\n this.cutStandardBeamToEqualLengthBeam(\n this.beamInfo,\n this.geo_beamEndCap,\n UI.existingLength2,\n new Vector3(\n -UI.totalBayLength / 2 - UI.overhangLeft,\n UI.existingWallHeight + offsetHeightCutout,\n UI.eaveWidth +\n this.geoBraket_2.height / 4 +\n this.geoBraket_1.width / 2 +\n UI.existingWidth1 / 2\n ),\n new Vector3(),\n views,\n 1,\n { back: true },\n 0,\n \"x\",\n \"EB\",\n this.geoBeamJoint\n );\n }\n if (UI.existingType == 2 || UI.existingType == 3) {\n this.cutStandardBeamToEqualLengthBeam(\n this.beamInfo,\n this.geo_beamEndCap,\n UI.existingLength2,\n new Vector3(\n UI.totalBayLength / 2 - UI.existingLength2 + UI.overhangRight,\n UI.existingWallHeight + offsetHeightCutout,\n UI.eaveWidth +\n this.geoBraket_2.height / 4 +\n this.geoBraket_1.width / 2 +\n UI.existingWidth1 / 2\n ),\n new Vector3(),\n views,\n 1,\n { back: true },\n 0,\n \"x\",\n \"EB\",\n this.geoBeamJoint\n );\n }\n }\n }\n public addUpstandBraket(numOfBraket = 2) {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.UPSTAND_BRAKET\n )\n );\n if (UI.upstandBraketType == 0 || UI.listBay.length == 0) {\n return;\n }\n let height = +UI.upstandBraketType;\n\n const _bracketOffsetXExt = this.geoBraket_2.height / 5;\n let distance = 1000;\n let offsetX = -UI.existingLength1 / 2;\n let bayMainLength = UI.totalBayLength;\n\n if (!HomeComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n if (UI.existingType == 1 || UI.existingType == 2) {\n bayMainLength -= UI.existingLength2;\n }\n if (UI.existingType == 3) {\n bayMainLength -= 2 * UI.existingLength2;\n }\n }\n\n if (UI.existingType == 0) {\n let startX =\n -bayMainLength / 2 > -UI.existingLength1 / 2\n ? -bayMainLength / 2\n : -UI.existingLength1 / 2;\n let endX =\n bayMainLength / 2 < UI.existingLength1 / 2\n ? bayMainLength / 2\n : UI.existingLength1 / 2;\n distance = (endX - startX) / (numOfBraket - 1);\n offsetX = startX;\n } else if (UI.existingType == 1) {\n distance = (bayMainLength - _bracketOffsetXExt) / (numOfBraket - 1);\n offsetX = -bayMainLength / 2 + _bracketOffsetXExt;\n if (bayMainLength > UI.existingLength1 - UI.eaveWidth) {\n distance =\n (UI.existingLength1 - UI.eaveWidth - _bracketOffsetXExt) /\n (numOfBraket - 1);\n }\n if (!HomeComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n offsetX =\n -bayMainLength / 2 + UI.existingLength2 / 2 + _bracketOffsetXExt;\n }\n } else if (UI.existingType == 2) {\n offsetX = -bayMainLength / 2;\n distance = (bayMainLength - _bracketOffsetXExt) / (numOfBraket - 1);\n\n if (bayMainLength > UI.existingLength1 - UI.eaveWidth) {\n offsetX =\n -bayMainLength / 2 +\n (bayMainLength - UI.existingLength1 + UI.eaveWidth);\n distance =\n (UI.existingLength1 - _bracketOffsetXExt - UI.eaveWidth) /\n (numOfBraket - 1);\n }\n\n if (!HomeComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n offsetX -= UI.existingLength2 / 2;\n }\n } else if (UI.existingType == 3) {\n distance = (bayMainLength - _bracketOffsetXExt * 2) / (numOfBraket - 1);\n offsetX = -bayMainLength / 2 + _bracketOffsetXExt;\n }\n\n let optionBrakets: UpstandBraketOptions = {\n container: this.scene,\n position: new Vector3(),\n geoBraket_1: this.geoBraket_1,\n geoBraket_2: this.geoBraket_2,\n height: height,\n material: MaterialManager.Instance().FASCIA_BRACKET.clone(),\n };\n let views: Print2DView[] = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n let userData = {\n type: GEOMETRY_TYPE.UPSTAND_BRAKET,\n views: views,\n };\n for (let i = 0; i < numOfBraket; i++) {\n let posX = offsetX;\n if (i == 0) {\n posX = posX + this.geoBraket_1.width / 2;\n } else if (i == numOfBraket - 1) {\n posX = posX - this.geoBraket_1.width / 2;\n }\n new UpstandBraket({\n ...optionBrakets,\n position: new Vector3(\n posX,\n UI.existingWallHeight,\n UI.eaveWidth - UI.existingWidth1 / 2\n ),\n userData: userData,\n });\n offsetX += distance;\n }\n }\n\n public addUpstandBraketCutOut(numOfBraket = 2) {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.UPSTAND_BRAKET_CUTOUT\n )\n );\n if (HomeComponent.ins.sltCutOut._isDisable || UI.cutOutType == 0) {\n return;\n }\n if (UI.upstandBraketType == 0 || UI.listBay.length == 0) {\n return;\n }\n let height = +UI.upstandBraketType;\n // if (UI.isUpFasciaUpstandardBracket) {\n // height += (UI.existingWidth1 + this.geoBraket_2.height / 4) * this.utils.tan(UI.patiosPitch);\n // } else {\n // height -= (UI.existingWidth1 + this.geoBraket_2.height / 4) * this.utils.tan(UI.patiosPitch);\n // }\n\n if (height < 0) {\n return;\n }\n const _bracketOffsetXExt = this.geoBraket_2.height / 5;\n if (UI.existingType == 1 || UI.existingType == 3) {\n let _offsetZ = UI.existingWidth2 > 0 ? UI.overhangLeft : 0;\n let distance =\n (UI.existingLength2 - UI.eaveWidth - UI.overhangLeft + _offsetZ) /\n (numOfBraket - 1);\n let offsetZ = -UI.totalBayLength / 2 - _offsetZ + _bracketOffsetXExt;\n\n let optionBrakets: UpstandBraketOptions = {\n container: this.scene,\n position: new Vector3(),\n geoBraket_1: this.geoBraket_1,\n geoBraket_2: this.geoBraket_2,\n height: height,\n material: MaterialManager.Instance().FASCIA_BRACKET.clone(),\n };\n let views: Print2DView[] = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n let userData = {\n type: GEOMETRY_TYPE.UPSTAND_BRAKET_CUTOUT,\n views: views,\n };\n for (let i = 0; i < numOfBraket; i++) {\n let posX = offsetZ;\n if (i == 0) {\n posX = posX + this.geoBraket_1.width / 2;\n } else if (i == numOfBraket - 1) {\n posX = posX - this.geoBraket_1.width / 2;\n }\n new UpstandBraket({\n ...optionBrakets,\n position: new Vector3(\n posX,\n UI.existingWallHeight,\n UI.eaveWidth + UI.existingWidth1 / 2\n ),\n userData: userData,\n });\n offsetZ += distance;\n }\n }\n if (UI.existingType == 2 || UI.existingType == 3) {\n let _offsetZ = UI.existingWidth2 > 0 ? UI.overhangRight : 0;\n let distance =\n (UI.existingLength2 - (UI.overhangRight + UI.eaveWidth) + _offsetZ) /\n (numOfBraket - 1);\n let offsetZ =\n UI.totalBayLength / 2 -\n UI.existingLength2 +\n UI.eaveWidth +\n UI.overhangRight -\n _bracketOffsetXExt;\n let optionBrakets: UpstandBraketOptions = {\n container: this.scene,\n position: new Vector3(),\n geoBraket_1: this.geoBraket_1,\n geoBraket_2: this.geoBraket_2,\n height: height,\n material: MaterialManager.Instance().FASCIA_BRACKET.clone(),\n };\n let views: Print2DView[] = [\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n let userData = {\n type: GEOMETRY_TYPE.UPSTAND_BRAKET_CUTOUT,\n views: views,\n };\n for (let i = 0; i < numOfBraket; i++) {\n let posX = offsetZ;\n if (i == 0) {\n posX = posX + this.geoBraket_1.width / 2;\n } else if (i == numOfBraket - 1) {\n posX = posX - this.geoBraket_1.width / 2;\n }\n new UpstandBraket({\n ...optionBrakets,\n position: new Vector3(\n posX,\n UI.existingWallHeight,\n UI.eaveWidth + UI.existingWidth1 / 2\n ),\n userData: userData,\n });\n offsetZ += distance;\n }\n }\n }\n private addDownPipe() {\n let offsetZ =\n UI.span +\n UI.multiSpan +\n UI.eaveWidth +\n 100 -\n UI.existingWidth1 / 2 +\n this.geoBraket_2.height / 4;\n let offsetX = -this.totalBaySize / 2 + 50;\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n offsetX = this.totalBaySize / 2 - 50;\n }\n\n this.downpipeGroup.position.set(offsetX, 0, offsetZ);\n\n let offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight + +UI.upstandBraketType + this.geoBeam.height,\n UI.overhangFront,\n this.APP.sltRoofPitch.currentValue,\n -1\n ) + 10;\n\n this.downpipeGroup = this.utils.createDownpipeGroup(\n this.APP,\n this.downpipeGroup,\n this.geo_downPipe,\n this.geo_downPipeL,\n offsetX,\n 0,\n offsetZ,\n offsetZ,\n 0,\n this.APP.sldFrontOverhang.currentValue,\n offsetY,\n true\n );\n }\n private addGround() {\n let offsetX = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n let offsetZ =\n -this.APP.sldExistingWidth1.currentValue / 2 - UI.overhangBack;\n let width =\n this.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n let length =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldBackOverhang.currentValue +\n this.APP.sldEaveWidth.currentValue +\n this.geoBraket_2.height / 4;\n\n let base = new Mesh(\n this.geo_groundBase.geometry,\n MaterialManager.Instance().BASE\n );\n base.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GROUND_BASE,\n };\n base.position.set(offsetX, 0, offsetZ);\n base.scale.set(\n width / this.geo_groundBase.width,\n 1,\n length / this.geo_groundBase.length\n );\n\n this.scene.add(base);\n }\n private getRoofHeight() {\n const _height = this.utils.getHeightByAngle(\n this.APP.sldExistingWallHeight.currentValue,\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue,\n this.APP.sltRoofPitch.currentValue,\n -1\n );\n return this.APP.sldExistingWallHeight.currentValue - _height;\n }\n private updateUI() {\n this.APP.roofHeight = this.getRoofHeight();\n this.APP.sldMinHeight.setValue(_.round(this.frontPostHeight, 0));\n }\n public getSection(): Printing2DGeometry {\n let objs = this.scene.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_POST ||\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_CENTER_POST\n );\n\n objs = [...objs];\n\n let lsGeometries: Printing2DLine[] = [];\n\n for (let o of objs) {\n let box = new BoxHelper(o);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: outlineGeo.vertices,\n views: o.userData.views,\n });\n }\n let beamGroups = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n for (let g of beamGroups) {\n for (let c of g.children) {\n c.updateMatrix();\n\n let objCloned = c.clone();\n objCloned.applyMatrix4(new Matrix4().getInverse(c.matrix));\n\n let box = new BoxHelper(objCloned);\n\n c.updateWorldMatrix(true, true);\n\n box.geometry.applyMatrix4(c.matrixWorld);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n const planView = _.find(\n g.userData.views,\n (el) => el.viewType == ViewType.PLAN\n );\n const anotherViews = _.filter(\n g.userData.views,\n (el) => el.viewType != ViewType.PLAN\n );\n if (anotherViews.length > 0) {\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo.vertices,\n views: anotherViews,\n });\n }\n if (planView) {\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo.vertices\n .slice(0, 8)\n .filter((el, index) => [0, 1, 4, 5].includes(index)),\n views: [planView],\n });\n }\n }\n }\n\n let braketGroup = this.scene.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.UPSTAND_BRAKET ||\n o.userData.type == GEOMETRY_TYPE.UPSTAND_BRAKET_CUTOUT\n );\n\n for (let g of braketGroup) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n g.children[1] as Mesh,\n 60\n );\n g.children[1].updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(g.children[1].matrixWorld);\n outlineGeo.translate(0, 5000, 0);\n\n let simplifiedGeo = this.simplifyGeo(outlineGeo);\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: simplifiedGeo.vertices,\n views: g.userData.views,\n });\n\n g.children[0].updateMatrix();\n let objCloned = g.children[0].clone();\n objCloned.applyMatrix4(new Matrix4().getInverse(g.children[0].matrix));\n\n let box = new BoxHelper(objCloned);\n\n g.children[0].updateWorldMatrix(true, true);\n\n box.geometry.applyMatrix4(g.children[0].matrixWorld);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n //this.APP.scene.add(box);\n\n let outlineGeo1 = this.simplifyGeo(box.geometry as BufferGeometry);\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo1.vertices,\n views: g.userData.views,\n });\n }\n\n let rafterBeamGroups = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n );\n for (let o of rafterBeamGroups) {\n o.children.forEach((el) => {\n this.utils.getOutlineRafterBeam(el as Mesh, lsGeometries);\n });\n }\n\n return { lines: lsGeometries, texts: [] };\n }\n public simplifyGeo(geo: BufferGeometry): Geometry {\n let vertices = geo.getAttribute(\"position\").array;\n let lineGeo = new Geometry();\n for (let i = 0; i < vertices.length; i += 3) {\n lineGeo.vertices.push(\n new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2])\n );\n }\n\n //2-3\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n //3-7\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n //7-6\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n //6-2\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n\n //1-4\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n //4-8\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n //8-5\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n //5-1\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n\n return lineGeo;\n }\n private addCenterPost(offsetX, userDataPos) {\n let meshPost = new Mesh(\n this.geo_centerSuperiorPost.geometry,\n MaterialManager.Instance().BEAM\n );\n meshPost.userData = {\n ...userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_CENTER_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let scalePostY = 1;\n\n let views: Print2DView[];\n\n let postOffsetZ =\n (UI.span + UI.multiSpan) / 2 -\n this.geo_centerSuperiorPost.width / 2 -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4;\n\n this.frontPostHeight =\n UI.existingWallHeight + +UI.upstandBraketType + this.geoBeam.height;\n\n scalePostY =\n (((UI.span + UI.multiSpan) / 2 - this.geoBeam.width / 2) *\n this.utils.tan(UI.patiosPitch) -\n this.geoBeam.height) /\n this.geo_centerSuperiorPost.height;\n views = [\n // { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n let postOffsetX = offsetX - this.geo_centerSuperiorPost.width;\n\n if (userDataPos.first) {\n postOffsetX += this.geo_centerSuperiorPost.width / 2;\n } else if (userDataPos.last) {\n postOffsetX -= this.geo_centerSuperiorPost.width / 2;\n } else {\n }\n\n // if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT){\n // let offsetX = this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n // postOffsetX -= offsetX\n // }\n // if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT){\n // let offsetX = this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n // postOffsetX += offsetX\n // }\n\n meshPost.userData.views = views;\n meshPost.position.set(\n postOffsetX,\n UI.existingWallHeight + +UI.upstandBraketType + this.geoBeam.height,\n postOffsetZ\n );\n meshPost.scale.setY(scalePostY);\n\n this.scene.add(meshPost);\n }\n public addPost(offsetX: number, userDataPos: any) {\n if (userDataPos.isMultiSpan && this.APP.sldMultiSpan.currentValue === 0) {\n return;\n }\n // // let _flag = false;\n // if (userDataPos.left && this.APP.sldLeftOverhang.currentValue > 0 && this.APP.sltExistingType.currentValue == 1) {\n // // _flag = true;\n // return;\n // } else if (userDataPos.right && this.APP.sldRightOverhang.currentValue > 0 && this.APP.sltExistingType.currentValue == 2) {\n // // _flag = true;\n // return;\n // }\n const condition =\n this.APP.sldSpan.currentValue + this.APP.sldEaveWidth.currentValue;\n if (!userDataPos.isMultiSpan) {\n if (\n (this.existingType === 1 || this.existingType === 3) &&\n userDataPos.left &&\n (UI.existingWidth1 >= condition ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition &&\n UI.cutOutType == 1))\n ) {\n return;\n }\n if (\n (this.existingType === 2 || this.existingType === 3) &&\n userDataPos.right &&\n (UI.existingWidth1 >= condition ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition &&\n UI.cutOutType == 1))\n ) {\n return;\n }\n } else {\n if (\n (this.existingType === 1 || this.existingType === 3) &&\n userDataPos.left &&\n (UI.existingWidth1 >= condition + UI.multiSpan ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition + UI.multiSpan &&\n UI.cutOutType == 1))\n ) {\n return;\n }\n if (\n (this.existingType === 2 || this.existingType === 3) &&\n userDataPos.right &&\n (UI.existingWidth1 >= condition + UI.multiSpan ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition + UI.multiSpan &&\n UI.cutOutType == 1))\n ) {\n return;\n }\n }\n let views: Print2DView[] = [];\n if (userDataPos.isMultiSpan) {\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else {\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n const mesh = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n let offsetZ =\n -this.APP.sldExistingWidth1.currentValue / 2 +\n this.APP.sldEaveWidth.currentValue +\n this.geoBraket_2.height / 4;\n if (userDataPos.isMultiSpan) {\n offsetZ +=\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue -\n this.beamInfo.width / 2;\n } else {\n offsetZ +=\n this.APP.sldSpan.currentValue -\n (this.APP.sldMultiSpan.currentValue > 0 ? 0 : this.beamInfo.width / 2);\n }\n let scaleY = 0;\n let length = 0;\n\n if (userDataPos.isMultiSpan) {\n length = UI.existingWallHeight + +UI.upstandBraketType;\n scaleY = length / this.postInfo.height;\n } else {\n length = UI.existingWallHeight + +UI.upstandBraketType;\n scaleY = length / this.postInfo.height;\n }\n\n //in case of multi span & apply to back post only\n if (\n !userDataPos.isMultiSpan &&\n this.APP.sltCutOut.currentValue == 1 &&\n this.MANAGER.cutoutCondition\n ) {\n if (\n this.APP.sldSpan.currentValue + this.APP.sldEaveWidth.currentValue >\n this.APP.sldExistingWidth1.currentValue &&\n this.APP.sldSpan.currentValue + this.APP.sldEaveWidth.currentValue <\n this.APP.sldExistingWidth1.currentValue +\n this.APP.sldEaveWidth.currentValue\n ) {\n if (this.APP.sltExistingType.currentValue == 1 && userDataPos.left) {\n offsetX += this.APP.sldExistingLength2.currentValue;\n } else if (\n this.APP.sltExistingType.currentValue == 2 &&\n userDataPos.right\n ) {\n offsetX -= this.APP.sldExistingLength2.currentValue;\n } else if (this.APP.sltExistingType.currentValue == 3) {\n if (userDataPos.left) {\n offsetX += this.APP.sldExistingLength2.currentValue;\n }\n if (userDataPos.right) {\n offsetX -= this.APP.sldExistingLength2.currentValue;\n }\n }\n }\n }\n\n let exceedMoveBackLimit = false;\n\n mesh.position.set(offsetX, 0, offsetZ);\n mesh.scale.setY(scaleY);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n this.scene.add(mesh);\n }\n\n private addUpstandBraketExt(userDataPos: any) {\n if (\n UI.upstandBraketType == 0 ||\n UI.listBay.length == 0 ||\n UI.existingType == 0 ||\n (userDataPos.isMultiSpan && UI.multiSpan == 0)\n ) {\n return;\n }\n if (\n (this.existingType == 1 && userDataPos.right) ||\n (this.existingType == 2 && userDataPos.left)\n ) {\n return;\n }\n let _flag = false;\n\n const condition =\n this.APP.sldSpan.currentValue + this.APP.sldEaveWidth.currentValue;\n if (!userDataPos.isMultiSpan && !_flag) {\n if (\n (this.existingType === 1 || this.existingType === 3) &&\n userDataPos.left &&\n (UI.existingWidth1 >= condition ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition &&\n UI.cutOutType == 1))\n ) {\n _flag = true;\n // return;\n }\n if (\n (this.existingType === 2 || this.existingType === 3) &&\n userDataPos.right &&\n (UI.existingWidth1 >= condition ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition &&\n UI.cutOutType == 1))\n ) {\n _flag = true;\n // return;\n }\n } else if (!_flag) {\n if (\n (this.existingType === 1 || this.existingType === 3) &&\n userDataPos.left &&\n (UI.existingWidth1 >= condition + UI.multiSpan ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition + UI.multiSpan &&\n UI.cutOutType == 1))\n ) {\n _flag = true;\n // return;\n }\n if (\n (this.existingType === 2 || this.existingType === 3) &&\n userDataPos.right &&\n (UI.existingWidth1 >= condition + UI.multiSpan ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition + UI.multiSpan &&\n UI.cutOutType == 1))\n ) {\n _flag = true;\n // return;\n }\n }\n if (!_flag) {\n return;\n }\n // if (userDataPos.left && UI.overhangLeft > 0 || userDataPos.right && UI.overhangRight > 0)\n // return;\n\n const _bracketOffsetXExt = this.geoBraket_2.height / 5; // + this.geoBraket_1.width / 4;\n let height = 0;\n let offsetX = -UI.existingLength1 / 2;\n let bayMainLength = UI.totalBayLength;\n if (!AppComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n if (UI.existingType == 1 || UI.existingType == 2) {\n bayMainLength -= UI.existingLength2;\n }\n if (UI.existingType == 3) {\n bayMainLength -= 2 * UI.existingLength2;\n }\n }\n const _cond1 =\n UI.existingWidth1 < condition &&\n UI.existingWidth1 + UI.existingWidth2 > condition;\n const _cond2 =\n userDataPos.isMultiSpan &&\n UI.existingWidth1 < condition + UI.multiSpan &&\n UI.existingWidth1 + UI.existingWidth2 > condition + UI.multiSpan;\n\n if (UI.existingType == 1) {\n offsetX = -bayMainLength / 2;\n if (!AppComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n offsetX = -bayMainLength / 2 + UI.existingLength2 / 2;\n }\n if (\n UI.existingWidth1 < condition ||\n (userDataPos.isMultiSpan &&\n UI.existingWidth1 + UI.existingWidth2 >= condition + UI.multiSpan)\n ) {\n offsetX -= UI.existingLength2;\n }\n offsetX += _bracketOffsetXExt;\n } else if (UI.existingType == 2) {\n offsetX = bayMainLength / 2 - this.geoBraket_1.width;\n if (!AppComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n offsetX -= UI.existingLength2 / 2;\n }\n if (\n UI.existingWidth1 < condition ||\n (userDataPos.isMultiSpan &&\n UI.existingWidth1 + UI.existingWidth2 >= condition + UI.multiSpan)\n ) {\n offsetX += UI.existingLength2;\n }\n offsetX -= _bracketOffsetXExt;\n } else if (UI.existingType == 3) {\n offsetX =\n (-bayMainLength / 2) * (userDataPos.left ? 1 : -1) -\n (userDataPos.right ? this.geoBraket_1.width : 0);\n if ((!userDataPos.isMultiSpan && _cond1) || _cond2) {\n offsetX -=\n UI.existingLength2 * (userDataPos.left ? 1 : -1) +\n (userDataPos.right ? this.geoBraket_1.width : 0);\n }\n offsetX += _bracketOffsetXExt * (userDataPos.left ? 1 : -1);\n }\n let offsetZ =\n -this.APP.sldExistingWidth1.currentValue / 2 +\n this.APP.sldEaveWidth.currentValue -\n this.geoBraket_1.width / 2;\n if (userDataPos.isMultiSpan) {\n offsetZ += UI.span + UI.multiSpan - this.beamInfo.width / 2;\n } else {\n offsetZ += UI.span - (UI.multiSpan > 0 ? 0 : this.beamInfo.width / 2);\n }\n if (userDataPos.isMultiSpan) {\n height = +UI.upstandBraketType;\n } else {\n height = +UI.upstandBraketType;\n }\n let optionBrakets: UpstandBraketOptions = {\n container: this.scene,\n position: new Vector3(),\n geoBraket_1: this.geoBraket_1,\n geoBraket_2:\n UI.existingType == 2 ? this.geoBraketExtR_2 : this.geoBraketExtL_2,\n height: height,\n material: MaterialManager.Instance().FASCIA_BRACKET.clone(),\n };\n if (UI.existingType == 1) {\n optionBrakets = { ...optionBrakets, geoBraket_2: this.geoBraketExtL_2 };\n } else if (UI.existingType == 2) {\n optionBrakets = { ...optionBrakets, geoBraket_2: this.geoBraketExtR_2 };\n } else {\n optionBrakets = {\n ...optionBrakets,\n geoBraket_2: userDataPos.right\n ? this.geoBraketExtR_2\n : this.geoBraketExtL_2,\n };\n }\n new UpstandBraket({\n ...optionBrakets,\n position: new Vector3(offsetX, UI.existingWallHeight, offsetZ),\n userData: { type: GEOMETRY_TYPE.UPSTAND_BRAKET_EXT },\n });\n }\n\n public addBeam(userDataPos: any) {\n if (userDataPos.isMultiSpan && this.APP.sldMultiSpan.currentValue === 0) {\n return;\n }\n\n let offsetY = 0;\n let offsetZ =\n -UI.existingWidth1 / 2 + UI.eaveWidth + this.geoBraket_2.height / 4;\n let offsetXL = -(this.totalBaySize / 2 + UI.overhangLeft);\n let offsetXR = this.totalBaySize / 2;\n\n let beamLength = this.roofWidth + UI.overhangLeft + UI.overhangRight;\n\n const condition = UI.span + UI.eaveWidth;\n let _flag = false;\n if (\n (userDataPos.isMultiSpan &&\n this.APP.sldExistingWidth1.currentValue >=\n condition + this.APP.sldMultiSpan.currentValue) ||\n (!userDataPos.isMultiSpan &&\n this.APP.sldExistingWidth1.currentValue >= condition)\n ) {\n _flag = true;\n }\n if (userDataPos.isMultiSpan) {\n offsetY =\n UI.existingWallHeight + +UI.upstandBraketType + this.geoBeam.height;\n offsetZ +=\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue -\n this.beamInfo.width / 2;\n } else {\n offsetY =\n UI.existingWallHeight + +UI.upstandBraketType + this.geoBeam.height;\n offsetZ +=\n this.APP.sldSpan.currentValue -\n (this.APP.sldMultiSpan.currentValue > 0 ? 0 : this.beamInfo.width / 2);\n }\n\n let views: Print2DView[] = [];\n if (userDataPos.isMultiSpan) {\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else {\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n //Cutout\n if (\n !userDataPos.isMultiSpan &&\n this.APP.sltCutOut.currentValue == 1 &&\n this.MANAGER.cutoutCondition\n ) {\n if (\n this.APP.sldSpan.currentValue + this.APP.sldEaveWidth.currentValue <=\n this.APP.sldExistingWidth1.currentValue\n ) {\n if (this.APP.sltExistingType.currentValue == 1) {\n offsetXL += this.APP.sldExistingLength2.currentValue;\n beamLength =\n this.roofWidth - this.APP.sldExistingLength2.currentValue; // + this.APP.sldEaveWidth.currentValue;\n } else if (this.APP.sltExistingType.currentValue == 2) {\n offsetXR -= this.APP.sldExistingLength2.currentValue;\n beamLength =\n this.roofWidth - this.APP.sldExistingLength2.currentValue; // + this.APP.sldEaveWidth.currentValue;\n } else if (this.APP.sltExistingType.currentValue == 3) {\n offsetXL += this.APP.sldExistingLength2.currentValue;\n offsetXR -= this.APP.sldExistingLength2.currentValue;\n beamLength =\n this.roofWidth - this.APP.sldExistingLength2.currentValue * 2; // + this.APP.sldEaveWidth.currentValue;\n }\n } else if (\n this.APP.sldSpan.currentValue + this.APP.sldEaveWidth.currentValue >\n this.APP.sldExistingWidth1.currentValue &&\n this.APP.sldSpan.currentValue + this.APP.sldEaveWidth.currentValue <\n this.APP.sldExistingWidth1.currentValue +\n this.APP.sldEaveWidth.currentValue\n ) {\n if (this.APP.sltExistingType.currentValue == 1) {\n offsetXL += this.APP.sldExistingLength2.currentValue;\n beamLength =\n this.roofWidth - this.APP.sldExistingLength2.currentValue;\n } else if (this.APP.sltExistingType.currentValue == 2) {\n offsetXR -= this.APP.sldExistingLength2.currentValue;\n beamLength =\n this.roofWidth - this.APP.sldExistingLength2.currentValue;\n } else if (this.APP.sltExistingType.currentValue == 3) {\n offsetXL += this.APP.sldExistingLength2.currentValue;\n offsetXR -= this.APP.sldExistingLength2.currentValue;\n beamLength =\n this.roofWidth - this.APP.sldExistingLength2.currentValue * 2;\n }\n }\n }\n\n this.cutStandardBeamByCutBeamWithinBayControl(\n this.beamInfo,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetXL, offsetY, offsetZ),\n new Vector3(),\n views,\n 1,\n userDataPos,\n 0,\n \"x\",\n \"EB\",\n this.geoBeamJoint\n );\n }\n private cutStandardBeamToEqualLengthBeam(\n beamGeo: GeometryInfo,\n beamCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n userDataPos: any,\n beamGeoTranslationZ: number,\n beamDirection: string,\n beamName = \"\",\n jointGeo: GeometryInfo\n ) {\n const beamStartX = pos.x;\n const beamEndX = pos.x + length;\n\n const numOfBeam = Math.ceil(\n length / EXISTING_BUILDING_CONFIG.MAXIMUM_LENGTH_PER_BEAM\n );\n const lengthPerBeam = Math.abs(beamEndX - beamStartX) / numOfBeam;\n for (let i = 0; i < numOfBeam; i++) {\n let beamGroup = this.utils.createBeamGroup2(\n beamGeo,\n beamCapGeo,\n lengthPerBeam,\n new Vector3(beamStartX + lengthPerBeam * i, pos.y, pos.z),\n rot,\n views,\n directionOffset,\n userDataPos,\n beamGeoTranslationZ,\n beamDirection,\n UI.beamLayoutShow,\n {\n hasStartCap: UI.beamType == 0 && i == 0,\n hasEndCap:\n UI.beamType == 0 &&\n (i == numOfBeam - 1 || (i == 0 && numOfBeam == 1)),\n hasStartJoint: i !== 0,\n hasEndJoint: false,\n jointGeo: jointGeo,\n }\n );\n beamGroup.userData = {\n ...beamGroup.userData,\n name: beamName,\n };\n this.scene.add(beamGroup);\n }\n }\n private cutStandardBeamByCutBeamWithinBayControl(\n beamGeo: GeometryInfo,\n beamCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n userDataPos: any,\n beamGeoTranslationZ: number,\n beamDirection: string,\n beamName = \"\",\n jointGeo: GeometryInfo\n ) {\n // Map list cut beam here\n const beamStartX = pos.x;\n const beamEndX = pos.x + length;\n\n let endOfBayX = -UI.totalBayLength / 2;\n let startCutBeamX = beamStartX;\n let endCutBeamX = beamStartX;\n\n const beams = this.utils.getListSeperateBeamsByBays(\n endOfBayX,\n beamStartX,\n beamEndX,\n endCutBeamX,\n startCutBeamX\n );\n\n for (let i = 0; i < beams.length; i++) {\n endCutBeamX = beams[i][1];\n startCutBeamX = beams[i][0];\n let beamGroup = this.utils.createBeamGroup2(\n beamGeo,\n beamCapGeo,\n endCutBeamX - startCutBeamX,\n new Vector3(startCutBeamX, pos.y, pos.z),\n rot,\n views,\n directionOffset,\n userDataPos,\n beamGeoTranslationZ,\n beamDirection,\n UI.beamLayoutShow,\n {\n hasStartCap: UI.beamType == 0 && i == 0,\n hasEndCap:\n UI.beamType == 0 &&\n (i == beams.length - 1 || (i == 0 && beams.length == 1)),\n hasStartJoint: i !== 0,\n hasEndJoint: false,\n jointGeo: jointGeo,\n }\n );\n beamGroup.userData = {\n ...beamGroup.userData,\n name: beamName,\n };\n this.scene.add(beamGroup);\n }\n }\n public addHorSuperiorBeam(offsetX, userDataPos: any) {\n let mesh = new Mesh(this.geoBeam.geometry, MaterialManager.Instance().BEAM);\n\n let offsetXL = 0;\n let offsetXR = UI.span + UI.multiSpan - this.geoBeam.width * 2;\n let offsetZ = 0;\n let offsetY = 0;\n\n let scaleX =\n (UI.span + UI.multiSpan - this.geoBeam.width * 2) / this.geoBeam.length;\n\n let views: Print2DView[];\n\n if (userDataPos.front) {\n offsetY = UI.existingWallHeight + +UI.upstandBraketType;\n offsetZ =\n UI.span +\n UI.multiSpan -\n this.geoBeam.width -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4;\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n position: userDataPos,\n views: views,\n };\n mesh.position.set(offsetXL, 0, 0);\n mesh.scale.setX(scaleX);\n\n let capL = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capL.position.set(\n offsetXL +\n this.geo_beamEndCap.length / 2 -\n 2 -\n (scaleX * this.geoBeam.length) / 2,\n this.geo_beamEndCap.height,\n 0\n );\n capL.rotateY(Math.PI / 2);\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n let capR = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capR.position.set(\n offsetXR -\n this.geo_beamEndCap.length / 2 +\n 2 -\n (scaleX * this.geoBeam.length) / 2,\n this.geo_beamEndCap.height,\n 0\n );\n capR.rotateY(-Math.PI / 2);\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let beamOffsetX = offsetX;\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n position: userDataPos,\n views: views,\n name: \"GB\",\n };\n beamGroup.position.set(\n beamOffsetX,\n offsetY,\n offsetZ - (scaleX * this.geoBeam.length) / 2\n );\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n\n beamGroup.rotateY(Math.PI / 2);\n\n this.scene.add(beamGroup);\n }\n public addRafterSuperiorBeam(offsetX, userDataPos: any) {\n if (\n this.APP.sltWindClass.currentValue == 0 ||\n this.APP.sltWindClass.currentValue == 1\n ) {\n if (this.totalBaySize <= 6000 && this.APP.sldSpan.currentValue <= 7000) {\n return;\n }\n }\n if (\n this.APP.sltWindClass.currentValue == 3 ||\n this.APP.sltWindClass.currentValue == 4 ||\n this.APP.sltWindClass.currentValue == 5\n ) {\n return;\n }\n let mesh;\n\n let offsetXL = 0;\n let offsetXR =\n ((UI.span + UI.multiSpan) / 2 - this.beamInfo.width / 2) /\n this.utils.cos(UI.patiosPitch);\n let offsetZ = 0;\n let offsetY = 0;\n\n let scaleX =\n ((UI.span + UI.multiSpan) / 2 - this.beamInfo.width / 2) /\n this.utils.cos(UI.patiosPitch) /\n this.geo_RafterBeam.length;\n\n let views: Print2DView[];\n\n if (userDataPos.front) {\n let material = MaterialManager.Instance().BEAM.clone();\n\n let nBottom = new Vector3(0, 1, 0).normalize();\n let pBottom = new Vector3(\n 0,\n UI.existingWallHeight + +UI.upstandBraketType + this.beamInfo.height,\n 0\n );\n let planeBottom = new Plane().setFromNormalAndCoplanarPoint(\n nBottom,\n pBottom\n );\n\n let nVer = new Vector3(0, 0, 1).normalize();\n let pVer = new Vector3(\n 0,\n 0,\n (UI.span + UI.multiSpan) / 2 +\n this.beamInfo.width / 2 -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4\n );\n let planeVer = new Plane().setFromNormalAndCoplanarPoint(nVer, pVer);\n\n material.clippingPlanes = [planeBottom, planeVer];\n\n mesh = new Mesh(this.geo_RafterBeam.geometry, material);\n\n offsetY =\n UI.existingWallHeight + +UI.upstandBraketType + this.beamInfo.height;\n offsetZ =\n UI.span +\n UI.multiSpan -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4;\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.back) {\n let material = MaterialManager.Instance().BEAM.clone();\n\n let nBottom = new Vector3(0, 1, 0).normalize();\n let pBottom = new Vector3(\n 0,\n UI.existingWallHeight + +UI.upstandBraketType + this.beamInfo.height,\n 0\n );\n let planeBottom = new Plane().setFromNormalAndCoplanarPoint(\n nBottom,\n pBottom\n );\n\n let nVer = new Vector3(0, 0, -1).normalize();\n let pVer = new Vector3(\n 0,\n 0,\n (UI.span + UI.multiSpan) / 2 -\n this.beamInfo.width / 2 -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4\n );\n let planeVer = new Plane().setFromNormalAndCoplanarPoint(nVer, pVer);\n\n material.clippingPlanes = [planeBottom, planeVer];\n\n mesh = new Mesh(this.geo_RafterBeam.geometry, material);\n\n offsetY =\n UI.existingWallHeight +\n +UI.upstandBraketType +\n this.beamInfo.height +\n ((UI.span + UI.multiSpan) / 2 - this.beamInfo.width / 2) *\n this.utils.tan(UI.patiosPitch);\n offsetZ =\n (UI.span + UI.multiSpan) / 2 -\n this.beamInfo.width / 2 -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4;\n\n views = [\n // { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM,\n position: userDataPos,\n views: views,\n };\n mesh.position.set(offsetXL, 0, 0);\n mesh.scale.setX(scaleX);\n\n let checkExec = /\\w{1}\\d{1,3}x(\\d{1,3})/.exec(this.geo_RafterBeam.name);\n let beamSize = checkExec && checkExec.length == 2 ? checkExec[1] : \"\";\n let lowerBraketName = getRafterBeamEndCapCode(\n EXISTING_BUILDING_CONFIG.RAFTER_BEAM_SIZE,\n false\n );\n let higherBraketName = getRafterBeamEndCapCode(\n EXISTING_BUILDING_CONFIG.RAFTER_BEAM_SIZE,\n true\n );\n\n let capL;\n let capR;\n if (userDataPos.front) {\n let matEndCap = MaterialManager.Instance().BEAM.clone();\n\n let heightReal =\n UI.existingWallHeight +\n +UI.upstandBraketType +\n this.beamInfo.height +\n (this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan)) / 2;\n let heightPlane = heightReal * this.utils.cos(UI.patiosPitch);\n let translateZ = this.utils.sin(UI.patiosPitch) * heightPlane;\n\n let planeTop = new Plane(new Vector3(0, -1, 0));\n let matrixTranslateTop = new Matrix4().makeTranslation(\n 0,\n heightPlane,\n translateZ / 2\n );\n let matrixRotateTop = new Matrix4().makeRotationX(\n this.utils.degreesToRadians(UI.patiosPitch)\n ); //tao voi z pitch do\n let matrixTotalTop = matrixTranslateTop.multiply(matrixRotateTop);\n planeTop.applyMatrix4(matrixTotalTop);\n\n let heightRealBottom =\n UI.existingWallHeight +\n +UI.upstandBraketType +\n this.beamInfo.height -\n this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n (this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan)) / 2;\n let heightPlaneBottom = heightRealBottom * this.utils.cos(UI.patiosPitch);\n let translateZBottom = this.utils.sin(UI.patiosPitch) * heightPlaneBottom;\n\n let planeBottom = new Plane(new Vector3(0, 1, 0));\n let matrixTranslateBottom = new Matrix4().makeTranslation(\n 0,\n heightPlaneBottom,\n translateZBottom / 2\n );\n let matrixRotateBottom = new Matrix4().makeRotationX(\n this.utils.degreesToRadians(UI.patiosPitch)\n ); //tao voi z pitch do\n let matrixTotalBottom =\n matrixTranslateBottom.multiply(matrixRotateBottom);\n planeBottom.applyMatrix4(matrixTotalBottom);\n\n planeTop.translate(\n new Vector3(\n 0,\n 0,\n (UI.span + UI.multiSpan) / 2 -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4 +\n this.scene.position.z\n )\n );\n planeBottom.translate(\n new Vector3(\n 0,\n 0,\n (UI.span + UI.multiSpan) / 2 -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4 +\n this.scene.position.z\n )\n );\n\n matEndCap.clippingPlanes = [planeTop, planeBottom];\n\n capL = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capL.position.set(offsetXL - 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capL.scale.setY(\n (this.geo_RafterBeam.height / this.utils.sin(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length / this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capL.rotateY(Math.PI / 2);\n capL.rotateX(-Math.PI / 2 + this.utils.degreesToRadians(UI.patiosPitch));\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: lowerBraketName,\n };\n\n capR = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capR.position.set(offsetXR + 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capR.scale.setY(\n (this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length * this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capR.rotateY(-Math.PI / 2);\n capR.rotateX(-this.utils.degreesToRadians(UI.patiosPitch));\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: higherBraketName,\n };\n } else {\n let matEndCap = MaterialManager.Instance().BEAM.clone();\n\n let heightReal =\n UI.existingWallHeight +\n +UI.upstandBraketType +\n this.beamInfo.height +\n (this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan)) / 2;\n let heightPlane = heightReal * this.utils.cos(UI.patiosPitch);\n let translateZ = this.utils.sin(UI.patiosPitch) * heightPlane;\n\n let planeTop = new Plane(new Vector3(0, -1, 0));\n let matrixTranslateTop = new Matrix4().makeTranslation(\n 0,\n heightPlane,\n -translateZ / 2\n );\n let matrixRotateTop = new Matrix4().makeRotationX(\n -this.utils.degreesToRadians(UI.patiosPitch)\n ); //tao voi z pitch do\n let matrixTotalTop = matrixTranslateTop.multiply(matrixRotateTop);\n planeTop.applyMatrix4(matrixTotalTop);\n\n let heightRealBottom =\n UI.existingWallHeight +\n +UI.upstandBraketType +\n this.beamInfo.height -\n this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n (this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan)) / 2;\n let heightPlaneBottom = heightRealBottom * this.utils.cos(UI.patiosPitch);\n let translateZBottom = this.utils.sin(UI.patiosPitch) * heightPlaneBottom;\n\n let planeBottom = new Plane(new Vector3(0, 1, 0));\n let matrixTranslateBottom = new Matrix4().makeTranslation(\n 0,\n heightPlaneBottom,\n -translateZBottom / 2\n );\n let matrixRotateBottom = new Matrix4().makeRotationX(\n -this.utils.degreesToRadians(UI.patiosPitch)\n ); //tao voi z pitch do\n let matrixTotalBottom =\n matrixTranslateBottom.multiply(matrixRotateBottom);\n planeBottom.applyMatrix4(matrixTotalBottom);\n\n planeTop.translate(\n new Vector3(\n 0,\n 0,\n (UI.span + UI.multiSpan) / 2 -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4 +\n this.scene.position.z\n )\n );\n planeBottom.translate(\n new Vector3(\n 0,\n 0,\n (UI.span + UI.multiSpan) / 2 -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4 +\n this.scene.position.z\n )\n );\n\n matEndCap.clippingPlanes = [planeTop, planeBottom];\n\n capL = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capL.position.set(offsetXL - 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capL.scale.setY(\n (this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length * this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capL.rotateY(Math.PI / 2);\n capL.rotateX(-this.utils.degreesToRadians(UI.patiosPitch));\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: higherBraketName,\n };\n\n capR = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capR.position.set(offsetXR + 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capR.scale.setY(\n (this.geo_RafterBeam.height / this.utils.sin(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length / this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capR.rotateY(-Math.PI / 2);\n capR.rotateX(-Math.PI / 2 + this.utils.degreesToRadians(UI.patiosPitch));\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: lowerBraketName,\n };\n }\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM,\n position: userDataPos,\n views: views,\n };\n beamGroup.position.set(offsetX, offsetY, offsetZ);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n\n beamGroup.rotateY(Math.PI / 2);\n\n if (userDataPos.front) {\n beamGroup.rotateZ(this.utils.degreesToRadians(UI.patiosPitch));\n } else if (userDataPos.back) {\n beamGroup.rotateZ(-this.utils.degreesToRadians(UI.patiosPitch));\n }\n\n this.scene.add(beamGroup);\n }\n public addCenterSuperiorBeam() {\n let offsetXL = -(this.totalBaySize / 2 + UI.overhangLeft);\n let offsetZ = 0;\n let offsetY = 0;\n\n let beamLength = this.totalBaySize + UI.overhangLeft + UI.overhangRight;\n\n let views: Print2DView[];\n\n offsetY =\n UI.existingWallHeight +\n +UI.upstandBraketType +\n this.beamInfo.height +\n ((UI.span + UI.multiSpan) / 2 - this.geoBeam.width / 2) *\n this.utils.tan(UI.patiosPitch);\n offsetZ =\n (UI.span + UI.multiSpan) / 2 -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n this.cutStandardBeamByCutBeamWithinBayControl(\n this.beamInfo,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetXL, offsetY, offsetZ),\n new Vector3(),\n views,\n 1,\n { center: true },\n 0,\n \"x\",\n \"RB\",\n this.geoBeamJoint\n );\n }\n private getHeightByRoofPitch(isSpan: boolean): number {\n if (isSpan) {\n if (UI.isUpFasciaUpstandardBracket) {\n return (\n -this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n this.APP.sldSpan.currentValue\n );\n } else {\n return (\n this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n this.APP.sldSpan.currentValue\n );\n }\n } else {\n if (UI.isUpFasciaUpstandardBracket) {\n return (\n -this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue)\n );\n } else {\n return (\n this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue)\n );\n }\n }\n }\n}\n","import { BoxBufferGeometry, BufferGeometry, Color, Geometry, Group, LineSegments, Material, Matrix4, Mesh, MeshLambertMaterial, Object3D, Plane, Vector3 } from 'three';\nimport { GEOMETRY_CATEGORY, GEOMETRY_TYPE } from 'src/app/app.config';\nimport { BUILDING_SIDE, CUTOUT_ENABLE, EXISTING_BUILDING_CONFIG as CONST, PANEL_DIRECTION, RAKECUT_TYPE, RIBSPAN_BARGE_FIT, RIBSPAN_PANEL_WIDTH } from 'src/app/app.constants';\nimport { Util } from '../utils';\nimport { CSG } from 'three-csg-ts';\nimport { GableLRFasciaManager } from '.';\nimport { HomeComponent as AppComponent } from '../../containers/home/home.component';\nimport { GeometryManager } from '../geometry.manager';\nimport { MaterialManager } from '../material.manager';\nimport { GeometryInfo, LineType, Print2DView, Printing2DGeometry, Printing2DLine, ViewType } from 'src/app/core/models';\nimport { UI } from '../ui';\n\nexport class RoofManager {\n private scene: Group;\n private APP: AppComponent;\n private MANAGER: GableLRFasciaManager;\n private material: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private roofInfo: GeometryInfo;\n private bargeLeftInfo: GeometryInfo;\n private bargeRightInfo: GeometryInfo;\n private bargeFrontInfo: GeometryInfo;\n private bargeBackInfo: GeometryInfo;\n private geo_bargeCutoutLeftHor: GeometryInfo;\n private geo_bargeCutoutRightHor: GeometryInfo;\n private geo_bargeRakecutLeft: GeometryInfo;\n private geo_bargeRakecutRight: GeometryInfo;\n private receiverCutoutLeftHor: GeometryInfo;\n private receiverCutoutLeftVer: GeometryInfo;\n private receiverCutoutRightHor: GeometryInfo;\n private receiverCutoutRightVer: GeometryInfo;\n private gutterInfo: GeometryInfo;\n private gutterRakecutLeftInfo: GeometryInfo;\n private gutterRakecutRightInfo: GeometryInfo;\n public ridgeGeo: GeometryInfo;\n //private flashingInfo: GeometryInfo;\n private geo_receiverChanel: GeometryInfo;\n private geo_gutterCap: GeometryInfo;\n public geoBraket_1: GeometryInfo;\n public geoBraket_2: GeometryInfo;\n private geoBeam: GeometryInfo;\n private geoBeamEndCap: GeometryInfo;\n private eventHandleId: any;\n // Var\n private roofLength: number;\n private roofLengthPlus: number;\n private roofWidth: number;\n //private existingTypeLeftX: number;\n //private existingTypeRightX: number;\n private existingType: number;\n private totalBaySize: number;\n private objectSizeChangedHandle: any;\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n\n private mesh_CutoutLeft: Mesh;\n private csg_cutoutLeft: CSG;\n private mesh_CutoutRight: Mesh;\n private csg_cutoutRight: CSG;\n private geo_cutoutLeft: BoxBufferGeometry;\n private geo_cutoutRight: BoxBufferGeometry;\n\n private geo_rakecutLeft: BoxBufferGeometry;\n private geo_rakecutRight: BoxBufferGeometry;\n private mesh_rakecutLeft: Mesh;\n private mesh_rakecutRight: Mesh;\n private csg_rakecutLeft: CSG;\n private csg_rakecutRight: CSG;\n\n private geoCutGutter: BoxBufferGeometry;\n private meshCutGutterLeft1: Mesh;\n private csgCutGutterLeft1: CSG;\n private meshCutGutterLeft2: Mesh;\n private csgCutGutterLeft2: CSG;\n\n private meshCutGutterRight1: Mesh;\n private csgCutGutterRight1: CSG;\n private meshCutGutterRight2: Mesh;\n private csgCutGutterRight2: CSG;\n\n private roofGroupFront: Group;\n private roofGroupBack: Group;\n private cutoutExistingBothLength: number;\n\n constructor(app: AppComponent, fasciaManager: GableLRFasciaManager) {\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.APP = app;\n this.MANAGER = fasciaManager;\n this.scene = new Group();\n fasciaManager.patiosGroup.add(this.scene);\n this.material = MaterialManager.Instance().ROOF;\n this.registerEvent();\n }\n public destroy(): void {\n this.unregisterEvent();\n }\n public uiChanged(preVal: number, curVal: number): void {\n this.load();\n }\n private objectSizeChanged(preVal: number, curVal: number) {\n this.optimize().then(() => { this.load() });\n }\n public onColorChanged() {\n if(this.utils && this.roofInfo.geometry){\n this.utils.changeGeoColor(this.roofInfo.geometry, new Vector3(0, 1, 0), UI.roofColor.toString());\n }\n}\n private registerEvent(): void {\n this.eventHandleId = this.onColorChanged.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sltColourRoof\n ];\n this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n this.controlsToRegisterEvent2 = [\n this.APP.sltRoofSheetingType,\n this.APP.sltRoofThickness,\n this.APP.sltBargeType,\n this.APP.sltDripBarge,\n this.APP.sltGutterType,\n this.APP.sltRoofPitch\n ];\n this.controlsToRegisterEvent2.forEach(c => c.addAction(this.objectSizeChangedHandle));\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach(c => c.removeAction(this.objectSizeChangedHandle));\n this.controlsToRegisterEvent2 = undefined;\n }\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n this.roofInfo = this.geometryManager.getRoofRibspanPanel();\n this.roofInfo.geometry\n .translate(-this.roofInfo.width / 2, this.roofInfo.height / 2, -this.roofInfo.length / 2);\n this.roofInfo.geometry.rotateY(Math.PI)\n this.utils.changeGeoColor(this.roofInfo.geometry, new Vector3(0, 1, 0), UI.roofColor.toString());\n\n // Barge capping\n this.bargeLeftInfo = this.geometryManager.getRibspanBarge();\n this.bargeLeftInfo.geometry\n .rotateY(Math.PI)\n .translate(this.bargeLeftInfo.width / 2 - 3, this.bargeLeftInfo.height / 2 - RIBSPAN_BARGE_FIT, this.bargeLeftInfo.length / 2);\n\n this.bargeRightInfo = this.geometryManager.getRibspanBarge();\n this.bargeRightInfo.geometry\n .translate(-this.bargeRightInfo.width / 2 + 3, this.bargeRightInfo.height / 2 - RIBSPAN_BARGE_FIT, this.bargeRightInfo.length / 2);\n\n //Barge cutout left\n this.receiverCutoutLeftHor = this.geometryManager.getReceiverChannel();\n this.receiverCutoutLeftHor.geometry\n .rotateY(Math.PI / 2)\n .translate(-this.receiverCutoutLeftHor.length / 2, this.receiverCutoutLeftHor.height / 2, this.receiverCutoutLeftHor.width / 2);\n\n //Barge cutout right\n this.receiverCutoutRightHor = this.geometryManager.getReceiverChannel();\n this.receiverCutoutRightHor.geometry\n .rotateY(Math.PI / 2)\n .translate(this.receiverCutoutLeftHor.length / 2, this.receiverCutoutLeftHor.height / 2, this.receiverCutoutLeftHor.width / 2);\n\n //Vertical Barge cutout left\n this.receiverCutoutLeftVer = this.geometryManager.getReceiverChannel();\n this.receiverCutoutLeftVer.geometry\n .rotateY(Math.PI)\n .translate(this.receiverCutoutLeftVer.width / 2, this.receiverCutoutLeftVer.height / 2, this.receiverCutoutLeftVer.length / 2);\n\n //Vertical cutout right\n this.receiverCutoutRightVer = this.geometryManager.getReceiverChannel();\n this.receiverCutoutRightVer.geometry\n .translate(-this.receiverCutoutRightVer.width / 2, this.receiverCutoutRightVer.height / 2, this.receiverCutoutRightVer.length / 2);\n\n //Receiver chanel - barge caping back\n this.geo_receiverChanel = this.geometryManager.getReceiverChannel();\n this.geo_receiverChanel.geometry\n .rotateY(Math.PI / 2)\n .translate(this.geo_receiverChanel.length / 2, this.geo_receiverChanel.height / 2 + 2, this.geo_receiverChanel.width / 2);\n\n // Gutter\n this.gutterInfo = this.geometryManager.getGutter();\n this.gutterInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.gutterInfo.length / 2, -20, this.gutterInfo.width / 2);\n\n this.gutterRakecutLeftInfo = this.geometryManager.getGutter();\n this.gutterRakecutLeftInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.gutterRakecutLeftInfo.length / 2, -20, this.gutterRakecutLeftInfo.width / 2);\n\n this.gutterRakecutRightInfo = this.geometryManager.getGutter();\n this.gutterRakecutRightInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(-this.gutterRakecutRightInfo.length / 2, -20, this.gutterRakecutRightInfo.width / 2);\n\n //Gutter cap\n this.geo_gutterCap = this.geometryManager.getGuterEndCap();\n this.geo_gutterCap.geometry\n .rotateY(-Math.PI / 2)\n .translate(0, -20, this.geo_gutterCap.length / 2);\n\n\n this.geo_cutoutLeft = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_cutoutLeft.translate(-500, 0, -500);\n\n this.geo_cutoutRight = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_cutoutRight.translate(500, 0, -500);\n\n this.geo_rakecutLeft = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_rakecutLeft.translate(-500, 500, 500);\n this.geo_rakecutRight = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_rakecutRight.translate(500, 500, 500);\n\n this.geoCutGutter = new BoxBufferGeometry(800, 10000, 500);\n this.geoCutGutter.translate(0, 0, -250);\n\n this.geoBraket_1 = this.geometryManager.getUpstandBraket(1);\n this.geoBraket_1.geometry.rotateX(Math.PI / 2);\n this.geoBraket_1.geometry.translate(0, this.geoBraket_1.length / 2, 0);\n\n this.geoBraket_2 = this.geometryManager.getUpstandBraket(2);\n this.geoBraket_2.geometry.rotateY(Math.PI);\n this.geoBraket_2.geometry.rotateX(Math.PI / 2);\n this.geoBraket_2.geometry.translate(0, this.geoBraket_2.length / 2, - this.geoBraket_2.height / 4);\n\n this.geoBeam = this.geometryManager.getBeam();\n this.geoBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(0, this.geoBeam.height / 2, 0);\n\n this.geoBeamEndCap = this.geometryManager.getBeamEndCap();\n this.geoBeamEndCap.geometry\n .translate(0, this.geoBeamEndCap.height / 2, this.geoBeamEndCap.length / 2)\n .rotateY(Math.PI / 2);\n\n this.bargeFrontInfo = this.geometryManager.getRibspanBarge();\n this.bargeFrontInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.bargeFrontInfo.length / 2, this.bargeFrontInfo.height / 2 - RIBSPAN_BARGE_FIT, -this.bargeFrontInfo.width / 2);\n\n this.bargeBackInfo = this.geometryManager.getRibspanBarge();\n this.bargeBackInfo.geometry\n .rotateY(Math.PI / 2)\n .translate(this.bargeBackInfo.length / 2, this.bargeBackInfo.height / 2 - RIBSPAN_BARGE_FIT, this.bargeBackInfo.width / 2 - 3);\n\n this.geo_bargeRakecutLeft = this.geometryManager.getRibspanBarge();\n this.geo_bargeRakecutLeft.geometry\n .rotateY(Math.PI)\n .translate(this.geo_bargeRakecutLeft.width / 2, this.geo_bargeRakecutLeft.height / 2 - RIBSPAN_BARGE_FIT, -this.geo_bargeRakecutLeft.length / 2);\n\n this.geo_bargeRakecutRight = this.geometryManager.getRibspanBarge();\n this.geo_bargeRakecutRight.geometry\n .translate(-this.geo_bargeRakecutRight.width / 2, this.geo_bargeRakecutRight.height / 2 - RIBSPAN_BARGE_FIT, -this.geo_bargeRakecutRight.length / 2);\n\n this.geo_bargeRakecutLeft = this.geometryManager.getRibspanBarge();\n this.geo_bargeRakecutLeft.geometry\n .rotateY(Math.PI)\n .translate(this.geo_bargeRakecutLeft.width / 2, this.geo_bargeRakecutLeft.height / 2 - RIBSPAN_BARGE_FIT, -this.geo_bargeRakecutLeft.length / 2);\n\n this.geo_bargeRakecutRight = this.geometryManager.getRibspanBarge();\n this.geo_bargeRakecutRight.geometry\n .translate(-this.geo_bargeRakecutRight.width / 2, this.geo_bargeRakecutRight.height / 2 - RIBSPAN_BARGE_FIT, -this.geo_bargeRakecutRight.length / 2);\n\n //Barge cutout left\n this.geo_bargeCutoutLeftHor = this.geometryManager.getRibspanBarge();\n this.geo_bargeCutoutLeftHor.geometry\n .rotateY(Math.PI / 2)\n .translate(-this.geo_bargeCutoutLeftHor.length / 2, this.geo_bargeCutoutLeftHor.height / 2 - RIBSPAN_BARGE_FIT, this.geo_bargeCutoutLeftHor.width / 2);\n\n //Barge cutout right\n this.geo_bargeCutoutRightHor = this.geometryManager.getRibspanBarge();\n this.geo_bargeCutoutRightHor.geometry\n .rotateY(Math.PI / 2)\n .translate(this.geo_bargeCutoutRightHor.length / 2, this.geo_bargeCutoutRightHor.height / 2 - RIBSPAN_BARGE_FIT, this.geo_bargeCutoutRightHor.width / 2);\n\n this.ridgeGeo = this.geometryManager.getRibspanRidgeCapping();\n this.ridgeGeo.geometry.translate(- this.ridgeGeo.width / 2 + 1, - this.ridgeGeo.height / 2, 0);\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(...this.scene.children.filter(x => x.userData.type === GEOMETRY_TYPE.ROOF_PANEL));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type === GEOMETRY_TYPE.ROOF_PANEL_BASE));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type === GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type === GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type === GEOMETRY_TYPE.GUTTER_PATIOS));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PATIOS));\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.SHEET_OUTLINE));\n //test\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == 'RAKECUT'));\n\n this.totalBaySize = this.APP.dialogEditBay.listBay.reduce((total, val) => total + val.value, 0);\n this.roofLength = (UI.span + UI.multiSpan) / 2 + UI.overhangFront;\n this.roofLengthPlus = this.roofLength / this.utils.cos(UI.patiosPitch);\n this.roofWidth = this.totalBaySize + this.APP.sldLeftOverhang.currentValue + this.APP.sldRightOverhang.currentValue;\n this.cutoutExistingBothLength = (this.totalBaySize - (this.APP.sldExistingLength.currentValue + this.APP.existingWallManager.geo_existingWallW1.width * 2)) / 2;\n\n this.addRoofGroupFront();\n this.addRoofGroupBack();\n this.addCutout();\n\n this.existingType = +this.APP.sltExistingType.currentValue;\n\n\n let offsetXR = this.totalBaySize / 2 + this.MANAGER.patiosGroup.position.x + this.APP.sldRightOverhang.currentValue;\n\n let offsetLeft = this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue - this.MANAGER.patiosGroup.position.x;\n let clipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n const clipingPlane = new Plane(new Vector3(-1, 0, 0), offsetXR); // (this.APP.sldBaySize.currentValue / 2) + this.APP.sldRightOverhang.currentValue );\n this.material.clippingPlanes = [clipingPlaneLeft, clipingPlane];\n MaterialManager.Instance().ROOF_BASE.clippingPlanes = [clipingPlaneLeft, clipingPlane];\n const roofPanelCount = Math.ceil(this.roofWidth / RIBSPAN_PANEL_WIDTH);\n let offsetXL = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n\n //panel direction\n let panelDirectionOfset = 1;\n if (this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT) {\n offsetXL = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue - RIBSPAN_PANEL_WIDTH;\n panelDirectionOfset = -1;\n }\n else if (this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.LEFT_TO_RIGHT) {\n offsetXL = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n }\n\n\n if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT && this.MANAGER.cutoutCondition) {\n let totalPanelLength = 0;\n let cuted = true;\n\n for (let index = 0; index < roofPanelCount; index++) {\n totalPanelLength += RIBSPAN_PANEL_WIDTH;\n let isOver = totalPanelLength < this.APP.sldExistingLength2.currentValue;\n\n this.addRoofFront(offsetXL, [this.csg_cutoutLeft]);\n\n this.addRoofBack(offsetXL, [this.csg_cutoutLeft]);\n cuted = isOver;\n\n offsetXL += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n }\n else if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT && this.MANAGER.cutoutCondition) {\n let totalPanelLength = 0;\n let cuted = false;\n for (let index = 0; index < roofPanelCount; index++) {\n totalPanelLength += RIBSPAN_PANEL_WIDTH;\n let isOver = totalPanelLength >= this.roofWidth - this.APP.sldExistingLength2.currentValue + RIBSPAN_PANEL_WIDTH;\n cuted = totalPanelLength >= this.roofWidth - this.APP.sldExistingLength2.currentValue && !isOver;\n\n this.addRoofFront(offsetXL, [this.csg_cutoutRight]);\n\n this.addRoofBack(offsetXL, [this.csg_cutoutRight]);\n offsetXL += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n }\n else if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH && this.MANAGER.cutoutCondition) {\n let totalPanelLength = 0;\n let cuted = false;\n let cuted2 = false;\n for (let index = 0; index < roofPanelCount; index++) {\n totalPanelLength += RIBSPAN_PANEL_WIDTH;\n let isOver = totalPanelLength < this.APP.sldExistingLength2.currentValue;\n let isOver2 = totalPanelLength >= this.roofWidth - this.APP.sldExistingLength2.currentValue + RIBSPAN_PANEL_WIDTH;\n let flag = totalPanelLength >= this.roofWidth - this.APP.sldExistingLength2.currentValue;\n\n this.addRoofFront(offsetXL, [this.csg_cutoutLeft, this.csg_cutoutRight]);\n\n this.addRoofBack(offsetXL, [this.csg_cutoutLeft, this.csg_cutoutRight]);\n\n offsetXL += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n }\n else {\n for (let index = 0; index < roofPanelCount; index++) {\n this.addRoofFront(offsetXL, []);\n\n this.addRoofBack(offsetXL, []);\n offsetXL += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n }\n\n this.addBargeFront();\n this.addBargeBack();\n\n this.addGutterFront();\n this.addGutterBack();\n\n this.addRidgeCapping();\n\n this.showPanelOutline();\n\n this.scene.visible = UI.showRoof\n\n resolve();\n });\n }\n\n public addRidgeCapping(){\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.RIDGE_CAPPING));\n\n let ridgeFront = this.createRidgeCapping();\n ridgeFront.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.RIDGE_CAPPING};\n const height = this.getRoofOffsetY() + \n this.roofInfo.height / this.utils.cos(this.APP.sltRoofPitch.currentValue);\n \n let offsetX = (UI.overhangRight - UI.overhangLeft) / 2\n \n const ridgeLength = this.totalBaySize + this.APP.sldLeftOverhang.currentValue + this.APP.sldRightOverhang.currentValue;\n ridgeFront.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.RIDGE_CAPPING, length: ridgeLength, views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }]};\n ridgeFront.scale.setZ(ridgeLength / this.ridgeGeo.length);\n ridgeFront.rotation.set(0, Math.PI / 2, 0)\n ridgeFront.position.set( offsetX, height, ( UI.span + UI.multiSpan ) / 2 - UI.existingWidth1 / 2 + UI.eaveWidth + this.geoBraket_2.height / 4);\n this.scene.add(ridgeFront)\n }\n\n public createRidgeCapping(){\n let leftCap = new Mesh(this.ridgeGeo.geometry, MaterialManager.Instance().RIDGE_CAPPING);\n let rightCap = new Mesh(this.ridgeGeo.geometry, MaterialManager.Instance().RIDGE_CAPPING);\n\n rightCap.rotateY(Math.PI)\n\n leftCap.rotateZ(this.utils.degreesToRadians(UI.patiosPitch))\n rightCap.rotateZ(this.utils.degreesToRadians(UI.patiosPitch))\n\n leftCap.userData = {views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }]}\n rightCap.userData = {views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }]}\n\n return new Group().add(leftCap, rightCap)\n }\n\n private addCutout() {\n if (this.APP.sltCutOut.currentValue == 1) {\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == 'CUTOUT'));\n\n let offsetX = this.APP.sldExistingLength.currentValue / 2 - this.APP.sldEaveWidth.currentValue;\n let offsetY = 0;\n const eaveThickness = 50;\n let offsetZ = this.APP.sldExistingWidth1.currentValue / 2 + UI.eaveWidth + eaveThickness - UI.overhangBack;\n\n //extra length to prevent lack when cut\n let extra = 5000;\n\n let scaleX = (this.APP.sldExistingLength2.currentValue + extra) / 1000;\n if (scaleX == 0) scaleX = 1;\n let scaleY = (this.APP.sldExistingWallHeight.currentValue + extra) / 1000;\n let scaleZ = (this.APP.sldExistingWidth1.currentValue + UI.overhangBack + extra) / 1000;\n if (scaleZ == 0) scaleZ = 1;\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT || this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n this.mesh_CutoutLeft = new Mesh(this.geo_cutoutLeft, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.mesh_CutoutLeft.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: 'CUTOUT' };\n\n this.mesh_CutoutLeft.position.set(-offsetX - this.APP.sldLeftOverhang.currentValue, offsetY, offsetZ);\n this.mesh_CutoutLeft.scale.set(scaleX, scaleY, scaleZ);\n\n //this.APP.scene.add(this.mesh_CutoutLeft);\n\n this.mesh_CutoutLeft.updateMatrix();\n this.csg_cutoutLeft = CSG.fromMesh(this.mesh_CutoutLeft);\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT || this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n this.mesh_CutoutRight = new Mesh(this.geo_cutoutRight, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.mesh_CutoutRight.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: 'CUTOUT' };\n\n this.mesh_CutoutRight.position.set(offsetX + this.APP.sldRightOverhang.currentValue, offsetY, offsetZ);\n this.mesh_CutoutRight.scale.set(scaleX, scaleY, scaleZ);\n\n //this.APP.scene.add(this.mesh_CutoutRight);\n\n this.mesh_CutoutRight.updateMatrix();\n this.csg_cutoutRight = CSG.fromMesh(this.mesh_CutoutRight);\n }\n }\n }\n\n public addRoofGroupFront() {\n this.roofGroupFront = null;\n this.roofGroupFront = new Group();\n this.roofGroupFront.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PATIOS };\n\n let offsetX = 0;\n let offsetY = this.getRoofOffsetY();\n\n let offsetZ = (UI.span + UI.multiSpan) / 2 - UI.existingWidth1 / 2 + UI.eaveWidth + this.geoBraket_2.height / 4;\n this.roofGroupFront.position.set(offsetX, offsetY, offsetZ);\n \n this.roofGroupFront.rotation.set(this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue), 0, 0);\n\n this.scene.add(this.roofGroupFront);\n }\n public addRoofGroupBack() {\n this.roofGroupBack = null;\n this.roofGroupBack = new Group();\n this.roofGroupBack.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PATIOS };\n\n let offsetX = 0;\n let offsetY = this.getRoofOffsetY();\n\n let offsetZ = (UI.span + UI.multiSpan) / 2 - UI.existingWidth1 / 2 + UI.eaveWidth + this.geoBraket_2.height / 4;\n this.roofGroupBack.position.set(offsetX, offsetY, offsetZ);\n \n this.roofGroupBack.rotation.set(-this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue), 0, 0);\n\n this.scene.add(this.roofGroupBack);\n }\n public getOutLines(): Printing2DGeometry {\n\n let objs = this.roofGroupFront.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL\n || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ).concat(\n ...this.roofGroupBack.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n )\n );\n\n let gutterGroupObjs = this.roofGroupFront.children.filter(o => o.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS).concat(\n ...this.roofGroupBack.children.filter(o => o.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS)\n );\n let gutterObjs: Object3D[] = [];\n for (let group of gutterGroupObjs) {\n gutterObjs.push(...group.children);\n }\n\n objs = [...objs, ...gutterObjs];\n\n\n let lsGeometries: Printing2DLine[] = [];\n\n let offsetLeft = this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue - this.MANAGER.patiosGroup.position.x;\n let offsetRight = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue + this.MANAGER.patiosGroup.position.x;\n let roofClipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let roofClipingPlane = new Plane(new Vector3(-1, 0, 0), offsetRight);\n\n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale((o as Mesh), 60);\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n outlineGeo.translate(0, 5000, 0);\n\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL) {\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlane);\n }\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE) {\n outlineGeo = this.utils.clipOutlineBasePanel(outlineGeo, roofClipingPlaneLeft);\n outlineGeo = this.utils.clipOutlineBasePanel(outlineGeo, roofClipingPlane);\n }\n\n\n // var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"ROOF_OUTLINE\"};\n // this.APP.scene.add( line );\n\n let simplifiedGeo = this.simplifyGeo(outlineGeo);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: simplifiedGeo.vertices,\n views: o.userData.views\n });\n\n let ridgeCapping = this.scene.children.find(el => el.userData.type === GEOMETRY_TYPE.RIDGE_CAPPING)\n if(ridgeCapping){\n ridgeCapping.children.forEach(el => {\n this.utils.createOutline(el as Mesh, lsGeometries);\n })\n }\n }\n\n lsGeometries.push({\n objectType: GEOMETRY_TYPE.ROOF_COVER,\n vertices: this.makeRoofPolygon(),\n color: this.utils.convertHexColorToRgb(`#${new Color(UI.panelColor).getHexString()}`),\n views: [\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ]\n });\n\n return { lines: lsGeometries, texts: [] };\n }\n makeRoofPolygon() {\n const polygon = this.utils.getRoofCoverPolygonForLRRoof()\n this.MANAGER.patiosGroup.updateWorldMatrix(true, true)\n return polygon.map(el => (el as Vector3).applyMatrix4(this.MANAGER.patiosGroup.matrixWorld).add(new Vector3(0, 0, - UI.existingWidth1 / 2 - UI.overhangBack + UI.eaveWidth + this.geoBraket_2.height / 4)))\n }\n public showPanelOutline() {\n if (this.APP.sltPanelDirectionShow.currentValue == false)\n return;\n\n let objs = this.roofGroupFront.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ).concat(\n ...this.roofGroupBack.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n )\n );\n\n let offsetLeft = this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue - this.MANAGER.patiosGroup.position.x;\n let offsetRight = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue + this.MANAGER.patiosGroup.position.x;\n let roofClipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let roofClipingPlaneRight = new Plane(new Vector3(-1, 0, 0), offsetRight);\n\n\n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale((o as Mesh), 60);\n\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n //outlineGeo.translate(0, 5000, 0);\n\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE) {\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneRight);\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n }\n\n var line = new LineSegments(outlineGeo, MaterialManager.Instance().MESH_OUTLINE);\n line.userData = { type: GEOMETRY_TYPE.SHEET_OUTLINE };\n this.APP.scene.add(line);\n }\n }\n public simplifyGeo(geo: BufferGeometry): Geometry {\n let simplifiedGeo = new Geometry();\n let vertices = geo.getAttribute('position').array;\n for (let i = 0; i < vertices.length; i += 3) {\n simplifiedGeo.vertices.push(new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2]));\n }\n return simplifiedGeo;\n }\n public addRoofFront(offsetX: number, csgObjs: CSG[]) {\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n const mesh: Mesh = new Mesh(this.roofInfo.geometry, MaterialManager.Instance().ROOF);\n\n //if ((this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3) && this.APP.sldExistingWidth1.currentValue > this.APP.sldEaveWidth.currentValue) {\n // offsetX += this.APP.sldEaveWidth.currentValue;\n //}\n\n let scaleZ = this.roofLengthPlus / this.roofInfo.length;\n const offsetY = 0;\n let offsetZ = 0;\n\n // if (this.APP.sltCutOut.currentValue == 1 && this.APP.sltExistingType.currentValue != 0 && over && this.APP.sldExistingLength2.currentValue > 0) {\n // scaleZ = (this.roofLengthPlus - this.APP.sldExistingWidth1.currentValue) / this.roofInfo.length;\n // offsetZ += this.APP.sldExistingWidth1.currentValue;\n // }\n\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setZ(scaleZ);\n mesh.userData = { \n category: GEOMETRY_CATEGORY.PATIOS, \n type: GEOMETRY_TYPE.ROOF_PANEL, \n views: views, \n length: scaleZ,\n dir: UI.panelDirection === PANEL_DIRECTION.LEFT_TO_RIGHT ? \"L-R\" : \"R-L\"\n };\n\n let cutoutCondition = this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue != BUILDING_SIDE.NONE && this.APP.sldExistingLength2.currentValue > 0;\n let rakeCutCondition = this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE || this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE;\n\n if (cutoutCondition || rakeCutCondition) {\n\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n //cho no cung he toa do\n mesh.position.set(offsetX + this.MANAGER.patiosGroup.position.x, offsetY, offsetZ + this.roofGroupFront.position.z);\n mesh.updateMatrix();\n\n // let meshResult = new Mesh();\n // let meshTemp = mesh;\n\n // for (let csgObj of csgObjs) {\n // meshResult = CSG.toMesh(CSG.fromMesh(meshTemp).subtract(csgObj), mesh.matrix);\n // meshTemp = meshResult;\n // }\n\n let meshResult = mesh.clone();\n\n if (cutoutCondition) {\n //meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n }\n }\n if (rakeCutCondition) {\n if (this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(this.csg_rakecutLeft), mesh.matrix);\n }\n if (this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(this.csg_rakecutRight), mesh.matrix);\n }\n }\n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix)); //=> tra ve goc toa do\n meshResult.applyMatrix4(matrixBefore);\n this.roofGroupFront.add(meshResult);\n }\n else {\n this.roofGroupFront.add(mesh);\n }\n }\n public addRoofBack(offsetX: number, csgObjs: CSG[]) {\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n const mesh: Mesh = new Mesh(this.roofInfo.geometry, MaterialManager.Instance().ROOF);\n\n let offsetSheet = 0;\n if (this.APP.sltRoofSheetingType.currentValue == 0 || this.APP.sltRoofSheetingType.currentValue == 1) {\n offsetSheet = 13;\n }\n else {\n offsetSheet = 5;\n }\n\n let scaleZ = (((UI.span + UI.multiSpan) / 2 + UI.overhangBack) / this.utils.cos(UI.patiosPitch)) / this.roofInfo.length;\n const offsetY = 0;\n let offsetZ = 0;\n\n mesh.position.set(offsetX, offsetY, offsetZ - scaleZ * this.roofInfo.length);\n mesh.scale.setZ(scaleZ);\n mesh.userData = { \n category: GEOMETRY_CATEGORY.PATIOS, \n type: GEOMETRY_TYPE.ROOF_PANEL, \n views: views, \n length: scaleZ,\n dir: UI.panelDirection === PANEL_DIRECTION.RIGHT_TO_LEFT ? \"L-R\" : \"R-L\"\n };\n\n let cutoutCondition = this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue != BUILDING_SIDE.NONE && this.APP.sldExistingLength2.currentValue > 0;\n let rakeCutCondition = this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE || this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE;\n\n if (cutoutCondition || rakeCutCondition) {\n\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n //cho no cung he toa do\n mesh.position.set(offsetX + this.MANAGER.patiosGroup.position.x, offsetY, offsetZ + this.roofGroupBack.position.z);\n mesh.updateMatrix();\n\n let meshResult = mesh.clone();\n\n if (cutoutCondition) {\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n }\n }\n if (rakeCutCondition) {\n if (this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(this.csg_rakecutLeft), mesh.matrix);\n }\n if (this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(this.csg_rakecutRight), mesh.matrix);\n }\n }\n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix)); //=> tra ve goc toa do\n meshResult.applyMatrix4(matrixBefore);\n this.roofGroupBack.add(meshResult);\n }\n else {\n this.roofGroupBack.add(mesh);\n }\n }\n private addBargeFront() {\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n let mesh: Mesh;\n let offsetXL2 = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n\n let offsetXR2 = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n\n let offsetZL = 0;\n let offsetZR = 0;\n\n const offsetY = 0;\n\n let scaleZLeft = this.roofLengthPlus / this.bargeLeftInfo.length;\n let bargeLeftLength = this.roofLengthPlus;\n let scaleZRight = this.roofLengthPlus / this.bargeRightInfo.length;\n let bargeRightLength = this.roofLengthPlus;\n\n scaleZLeft = bargeLeftLength / this.bargeLeftInfo.length;\n scaleZRight = bargeRightLength / this.bargeRightInfo.length;\n\n let fitScale = this.bargeLeftInfo.height * this.utils.tan(UI.patiosPitch) / this.bargeLeftInfo.length;\n\n // left\n mesh = new Mesh(this.bargeLeftInfo.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXL2, offsetY, offsetZL - fitScale * this.bargeLeftInfo.length);\n mesh.scale.setZ(scaleZLeft + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupFront.add(mesh);\n\n // right\n mesh = new Mesh(this.bargeRightInfo.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXR2, offsetY, offsetZR - fitScale * this.bargeLeftInfo.length);\n mesh.scale.setZ(scaleZRight + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupFront.add(mesh);\n }\n private addBargeBack() {\n let views: Print2DView[] = [\n // { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n let mesh: Mesh;\n let offsetXL2 = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n\n let offsetXR2 = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n\n let offsetZL = 0;\n let offsetZR = 0;\n\n const offsetY = 0;\n\n let bargeLeftLength = ((UI.span + UI.multiSpan) / 2 + UI.overhangBack) / this.utils.cos(UI.patiosPitch);\n let bargeRightLength = ((UI.span + UI.multiSpan) / 2 + UI.overhangBack) / this.utils.cos(UI.patiosPitch);\n\n const scaleZLeft = bargeLeftLength / this.bargeLeftInfo.length;\n const scaleZRight = bargeRightLength / this.bargeRightInfo.length;\n\n let fitScale = this.bargeLeftInfo.height * this.utils.tan(UI.patiosPitch) / this.bargeLeftInfo.length;\n\n // left\n mesh = new Mesh(this.bargeLeftInfo.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXL2, offsetY, offsetZL - scaleZLeft * this.bargeLeftInfo.length);\n mesh.scale.setZ(scaleZLeft + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupBack.add(mesh);\n\n // right\n mesh = new Mesh(this.bargeRightInfo.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXR2, offsetY, offsetZR - scaleZRight * this.bargeLeftInfo.length);\n mesh.scale.setZ(scaleZRight + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupBack.add(mesh);\n }\n public addGutterFront() {\n let offsetXL = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n const offsetZ = ((UI.span + UI.multiSpan) / 2 + UI.overhangFront - CONST.GUTTER_ROOF_OFFSET_Z) / this.utils.cos(UI.patiosPitch);\n const offsetY = 0;\n\n let gutterLength = this.roofWidth;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n let gutterGroup = this.utils.createGutterGroup(this.gutterInfo, this.geo_gutterCap,\n gutterLength, new Vector3(offsetXL, offsetY, offsetZ), new Vector3(-this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue), 0, 0),\n views, 1, true, true);\n this.roofGroupFront.add(gutterGroup);\n }\n public addGutterBack() {\n let offsetX = UI.totalBayLength / 2 + UI.overhangRight;\n let offsetZ = -((UI.span + UI.multiSpan) / 2 + UI.overhangBack - CONST.GUTTER_ROOF_OFFSET_Z) / this.utils.cos(UI.patiosPitch);\n let offsetY = 0;\n let gutterLength = UI.totalBayLength + UI.overhangLeft + UI.overhangRight;\n //cutout\n if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.MANAGER.cutoutCondition) {\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n gutterLength = UI.totalBayLength + UI.overhangLeft + UI.overhangRight - UI.existingLength2;\n }\n else if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n gutterLength = UI.totalBayLength + UI.overhangLeft + UI.overhangRight - UI.existingLength2;\n offsetX = UI.totalBayLength / 2 + UI.overhangRight - UI.existingLength2;\n }\n else if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n offsetX = UI.existingLength1 / 2 - UI.eaveWidth;\n gutterLength = UI.existingLength1 - 2 * UI.eaveWidth;\n }\n }\n\n let views: Print2DView[] = [\n // { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n //Add gutter back\n let gutterGroup = this.utils.createGutterGroup(this.gutterInfo, this.geo_gutterCap, gutterLength,\n new Vector3(offsetX, offsetY, offsetZ), new Vector3(this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue), Math.PI, 0), views, 1, true, true);\n this.roofGroupBack.add(gutterGroup);\n this.addDownPipe(gutterGroup, gutterLength);\n }\n private addDownPipe(gutterGroup: Group, gutterLength: number) {\n let meshPipe = new Mesh(this.MANAGER.postAndBeamManager.geo_downPipe.geometry, MaterialManager.Instance().DOWNPIPE);\n meshPipe.userData = { type: GEOMETRY_TYPE.DOWNPIPE_NOZZLE };\n meshPipe.scale.setY(100 / this.MANAGER.postAndBeamManager.geo_downPipe.height);\n meshPipe.position.set(gutterLength - 100, -190, this.MANAGER.postAndBeamManager.geo_downPipe.width / 2 + 20);\n\n gutterGroup.add(meshPipe);\n }\n public getRoofOffsetY() {\n return UI.existingWallHeight\n + +UI.upstandBraketType\n + this.geometryManager.getBeam().height\n + this.utils.tan(UI.patiosPitch) * ((UI.span + UI.multiSpan) / 2);\n }\n}\n\n","import {\n HomeComponent as AppComponent,\n HomeComponent,\n} from \"../../containers/home/home.component\";\nimport {\n Material,\n Mesh,\n BufferGeometry,\n Box3,\n Group,\n Plane,\n Vector3,\n Geometry,\n BoxHelper,\n BoxBufferGeometry,\n Matrix4,\n LineSegments,\n} from \"three\";\nimport { Util, getBeamEndCapCode, getRafterBeamEndCapCode } from \"../utils\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport {\n CONFIG as env,\n GEOMETRY_TYPE,\n GEOMETRY_CATEGORY,\n INIT,\n} from \"src/app/app.config\";\nimport {\n GeometryInfo,\n Printing2DLine,\n ViewType,\n LineType,\n Print2DView,\n Printing2DGeometry,\n} from \"src/app/core/models\";\nimport { PatiosGableLRFlyOverManager } from \".\";\nimport {\n EXISTING_BUILDING_CONFIG as CONST,\n BUILDING_SIDE,\n CUTOUT_ENABLE,\n FIT_FLYOVER_BRAKET_ON_ROOF,\n EXISTING_BUILDING_CONFIG,\n} from \"src/app/app.constants\";\nimport { UI } from \"../ui\";\nimport _ from \"lodash\";\n\nexport class ColumnAndBeamManager {\n private scene: Group;\n private APP: AppComponent;\n private MANAGER: PatiosGableLRFlyOverManager;\n private material: Material;\n //private beamMaterial: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private geo_RafterBeam: GeometryInfo;\n private geo_rafterBeamEndCap: GeometryInfo;\n\n private geo_superiorPost: GeometryInfo;\n private geo_centerSuperiorPost: GeometryInfo;\n public geo_superiorBeam: GeometryInfo;\n private geo_beamRakecutLeft: GeometryInfo;\n private geo_beamRakecutRight: GeometryInfo;\n private geo_beamStepRakecutLeft: GeometryInfo;\n private geo_beamStepRakecutRight: GeometryInfo;\n private geo_beamEndCap: GeometryInfo;\n public geo_bracket: GeometryInfo;\n private geo_groundBase: GeometryInfo;\n private geo_downPipe: GeometryInfo;\n private geo_downPipeL: GeometryInfo;\n private downpipeGroup: Group;\n private downpipeStepRakeCutGroupLeft: Group;\n private downpipeStepRakeCutGroupRight: Group;\n private eventHandleId: any;\n private objectSizeChangedHandle: any;\n private totalBaySize: number;\n private extraOffsetZ: number;\n\n private geoBeamJoint: GeometryInfo;\n\n private frontPostHeight: number;\n //private extraBracketHeight = 250;\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n\n private deferHandle;\n private deferTimeout = CONST.CUTOUT_DEFFER_TIME_OUT;\n\n public numberOfBracketsBack = INIT.DEFAULT_BRACKET_NUMBER;\n public numberOfBracketCutout = INIT.DEFAULT_BRACKET_CUTOUT_NUMBER;\n private cutoutExistingBothLength: number;\n private beamLeftCutSizeInfo: any;\n private beamRightCutSizeInfo: any;\n\n constructor(app: AppComponent, flyOverManager: PatiosGableLRFlyOverManager) {\n this.APP = app;\n this.MANAGER = flyOverManager;\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n\n this.scene = flyOverManager.patiosGroup;\n this.material = MaterialManager.Instance().DEFAULT.clone();\n //this.beamMaterial = MaterialManager.Instance().DEFAULT.clone();\n\n this.registerEvent();\n }\n\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n let bracketHeight =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height / 2;\n let bracketWidth = this.geometryManager.FLY_OVER_BRACKET.S65x3.width;\n\n this.geo_bracket = new GeometryInfo();\n this.geo_bracket.geometry =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.geometry\n .clone()\n .rotateX(Math.PI / 2)\n .translate(bracketWidth / 2, bracketHeight, bracketWidth / 2);\n this.geo_bracket.width =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.width;\n this.geo_bracket.length =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.length;\n this.geo_bracket.height =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n this.geo_superiorBeam = this.geometryManager.getBeam();\n this.geo_superiorBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_superiorBeam.length / 2,\n this.geo_superiorBeam.height / 2,\n this.geo_superiorBeam.width / 2\n );\n\n this.geoBeamJoint = this.geometryManager.getBeamJoint();\n\n this.geo_beamRakecutLeft = this.geometryManager.getBeam();\n this.geo_beamRakecutLeft.geometry.translate(\n this.geo_beamRakecutLeft.width / 2,\n this.geo_beamRakecutLeft.height / 2,\n -this.geo_beamRakecutLeft.length / 2\n );\n\n this.geo_beamRakecutRight = this.geometryManager.getBeam();\n this.geo_beamRakecutRight.geometry.translate(\n -this.geo_beamRakecutRight.width / 2,\n this.geo_beamRakecutRight.height / 2,\n -this.geo_beamRakecutRight.length / 2\n );\n\n this.geo_beamStepRakecutLeft = this.geometryManager.getBeam();\n this.geo_beamStepRakecutLeft.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_beamStepRakecutLeft.length / 2,\n this.geo_beamStepRakecutLeft.height / 2,\n -this.geo_beamStepRakecutLeft.width / 2\n );\n\n this.geo_beamStepRakecutRight = this.geometryManager.getBeam();\n this.geo_beamStepRakecutRight.geometry\n .rotateY(Math.PI / 2)\n .translate(\n -this.geo_beamStepRakecutRight.length / 2,\n this.geo_beamStepRakecutRight.height / 2,\n -this.geo_beamStepRakecutRight.width / 2\n );\n\n this.geo_beamEndCap = this.geometryManager.getBeamEndCap();\n this.geo_beamEndCap.geometry.translate(\n 0,\n this.geo_beamEndCap.height / 2,\n 0\n );\n\n this.geo_superiorPost = this.geometryManager.getPost();\n this.geo_superiorPost.geometry\n .rotateX(Math.PI / 2)\n .translate(\n this.geo_superiorPost.width / 2,\n this.geo_superiorPost.height / 2,\n this.geo_superiorPost.width / 2\n );\n\n this.geo_centerSuperiorPost = this.geometryManager.getCenterPost();\n this.geo_centerSuperiorPost.geometry\n .rotateX(Math.PI / 2)\n .translate(\n this.geo_centerSuperiorPost.width / 2,\n this.geo_centerSuperiorPost.height / 2,\n this.geo_centerSuperiorPost.width / 2\n );\n\n this.geo_RafterBeam = this.geometryManager.getRafterBeam();\n this.geo_RafterBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_RafterBeam.length / 2,\n -this.geo_RafterBeam.height / 2,\n this.geo_RafterBeam.width / 2\n );\n\n this.geo_rafterBeamEndCap = this.geometryManager.getRafterBeamEndCap();\n this.geo_rafterBeamEndCap.geometry.translate(\n 0,\n -this.geo_rafterBeamEndCap.height / 2,\n this.geo_rafterBeamEndCap.length / 2\n );\n\n this.geo_groundBase = new GeometryInfo();\n this.geo_groundBase.width = 1000;\n this.geo_groundBase.height = 1;\n this.geo_groundBase.length = 1000;\n this.geo_groundBase.geometry = new BoxBufferGeometry(\n this.geo_groundBase.width,\n this.geo_groundBase.height,\n this.geo_groundBase.length\n );\n this.geo_groundBase.geometry.translate(\n 0,\n 0,\n this.geo_groundBase.length / 2\n );\n\n this.geo_downPipe = this.geometryManager.getDownPipe();\n this.geo_downPipeL = this.geometryManager.getDownPipeL();\n\n this.scene.remove(\n ...this.scene.children.filter(\n (c) => c.userData.type == GEOMETRY_TYPE.DOWNPIPE\n )\n );\n this.downpipeGroup = new Group();\n this.downpipeGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeGroup);\n this.downpipeStepRakeCutGroupLeft = new Group();\n this.downpipeStepRakeCutGroupLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeStepRakeCutGroupLeft);\n\n this.downpipeStepRakeCutGroupRight = new Group();\n this.downpipeStepRakeCutGroupRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeStepRakeCutGroupRight);\n resolve();\n });\n }\n\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET &&\n !x.userData?.position?.back\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SUPERIOR_CENTER_POST\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.SUPERIOR_POST &&\n !x.userData?.position?.back\n )\n );\n // this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.MESH_OUTLINE));\n this.scene.remove(\n ...this.scene.children.filter((x) => x.userData.type == \"BOXHELPER\")\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.GROUND_BASE\n )\n );\n this.APP.scene.remove(\n ...this.APP.scene.children.filter(\n (o) =>\n o.userData.type == \"OUTLINE\" || o.userData.type == \"COLUMN_OUTLINE\"\n )\n );\n\n this.beamLeftCutSizeInfo = this.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.LEFT\n );\n this.beamRightCutSizeInfo = this.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.RIGHT\n );\n this.downpipeGroup.children = [];\n this.downpipeStepRakeCutGroupLeft.children = [];\n this.downpipeStepRakeCutGroupRight.children = [];\n\n this.extraOffsetZ =\n this.APP.existingWallManager.geo_existingWallL1.width +\n this.APP.eaveManager.backOverhang;\n this.totalBaySize = this.APP.dialogEditBay.totalBaySize;\n this.cutoutExistingBothLength =\n (this.totalBaySize - this.APP.sldExistingLength.currentValue) / 2;\n\n this.addSuperiorBeam({ front: true });\n this.addSuperiorBeam({ back: true });\n\n if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.MANAGER.cutoutCondition\n ) {\n this.addSuperiorBeam({ cutout: true });\n }\n if (this.APP.sldMultiSpan.currentValue > 0) {\n this.addSuperiorBeam({ multiSpan: true });\n }\n\n this.addCenterSuperiorBeam();\n this.addGround();\n\n let offsetX = -this.totalBaySize / 2;\n let first = true;\n let last = false;\n for (let i = 0; i <= this.APP.dialogEditBay.listBay.length; i++) {\n if (i == this.APP.dialogEditBay.listBay.length) {\n last = true;\n }\n\n this.addCenterPost(offsetX, { center: true, first, last });\n\n let fitBeam = 0;\n if (i !== 0) {\n if (i == this.APP.dialogEditBay.listBay.length) {\n fitBeam = this.geo_superiorBeam.width;\n } else {\n fitBeam = this.geo_superiorBeam.width / 2;\n }\n }\n\n this.addHorSuperiorBeam(offsetX - fitBeam, {\n front: true,\n first,\n last,\n });\n this.addRafterSuperiorBeam(offsetX - fitBeam, {\n front: true,\n first,\n last,\n });\n this.addRafterSuperiorBeam(offsetX - fitBeam, {\n back: true,\n first,\n last,\n });\n\n this.addPostOrBracket(offsetX, {\n front: true,\n first,\n last,\n left: first,\n right: last,\n });\n\n if (this.APP.sldMultiSpan.currentValue > 0) {\n this.addPostOrBracket(offsetX, {\n multiSpan: true,\n first,\n last,\n left: first,\n right: last,\n });\n }\n if (i < this.APP.dialogEditBay.listBay.length) {\n let b = this.APP.dialogEditBay.listBay[i];\n offsetX += b.value;\n }\n first = false;\n }\n\n offsetX = -this.totalBaySize / 2;\n first = true;\n last = false;\n\n this.addPostOrBracketBack();\n this.addPostOrBracketBackCutout();\n this.showBeamOutline();\n this.addDownPipe();\n this.updateUI();\n resolve();\n });\n }\n public showBeamOutline() {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.BEAM_OUTLINE\n )\n );\n\n if (!UI.beamLayoutShow) return;\n\n const objs = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n const meshes = [];\n objs.forEach((el) => {\n if (el.type == \"Group\") {\n meshes.push(\n ...el.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n }\n });\n\n for (let o of meshes) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n o as Mesh,\n 10\n );\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n\n var line = new LineSegments(\n outlineGeo,\n MaterialManager.Instance().BEAM_OUTLINE\n );\n line.userData = { type: GEOMETRY_TYPE.BEAM_OUTLINE };\n this.APP.scene.add(line);\n }\n }\n private totalHeightFromEaveHeightToTopOfExistingRoof() {\n const height =\n this.geometryManager.EAVE.EAVE.height +\n UI.fasciaDepth +\n UI.eaveWidth * this.utils.tan(UI.existingRoofPitch) +\n this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.height /\n this.utils.cos(UI.existingRoofPitch);\n\n return height;\n }\n private totalHeightFromEaveHeightToTopOfFlyoverBraket() {\n const height =\n this.totalHeightFromEaveHeightToTopOfExistingRoof() +\n UI.braketHeight -\n FIT_FLYOVER_BRAKET_ON_ROOF;\n\n return height;\n }\n private addDownPipe() {\n let offsetZ =\n this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue - 170;\n let offsetX = -this.totalBaySize / 2 + 50;\n if (this.APP.sltExistingType.currentValue == 1) {\n offsetX = this.totalBaySize / 2 - 50;\n }\n if (this.APP.sltExistingType.currentValue != 0) {\n offsetZ -= this.APP.sldExistingWidth1.currentValue / 2;\n }\n\n let offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.overhangFront,\n UI.patiosPitch,\n -1\n ) +\n this.geo_superiorBeam.height +\n 90;\n\n if (this.APP.sltGutterType.currentValue == 0) {\n offsetY -= 80;\n } else {\n offsetY -= 60;\n }\n\n this.utils.createDownpipeGroup(\n this.APP,\n this.downpipeGroup,\n this.geo_downPipe,\n this.geo_downPipeL,\n offsetX,\n offsetY,\n offsetZ,\n offsetZ +\n this.APP.sldFrontOverhang.currentValue -\n this.APP.sldFrontOverhang.currentValue,\n 0,\n this.APP.sldFrontOverhang.currentValue,\n offsetY,\n true\n );\n }\n private updateUI() {\n this.APP.sldMinHeight.setValue(_.round(this.frontPostHeight, 0));\n }\n public getSection(): Printing2DGeometry {\n let objs = this.scene.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_POST ||\n o.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET ||\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_CENTER_POST\n );\n\n objs = [...objs];\n\n let lsGeometries: Printing2DLine[] = [];\n\n for (let o of objs) {\n let box = new BoxHelper(o);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: outlineGeo.vertices,\n views: o.userData.views,\n });\n }\n let beamGroups = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n for (let g of beamGroups) {\n for (let c of g.children) {\n c.updateMatrix();\n\n let objCloned = c.clone();\n objCloned.applyMatrix4(new Matrix4().getInverse(c.matrix));\n\n let box = new BoxHelper(objCloned);\n\n c.updateWorldMatrix(true, true);\n\n box.geometry.applyMatrix4(c.matrixWorld);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n const planView = _.find(\n g.userData.views,\n (el) => el.viewType == ViewType.PLAN\n );\n const anotherViews = _.filter(\n g.userData.views,\n (el) => el.viewType != ViewType.PLAN\n );\n if (anotherViews.length > 0) {\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo.vertices,\n views: anotherViews,\n });\n }\n if (planView) {\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo.vertices\n .slice(0, 8)\n .filter((el, index) => [0, 1, 4, 5].includes(index)),\n views: [planView],\n });\n }\n }\n }\n\n let rafterBeamGroups = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n );\n for (let o of rafterBeamGroups) {\n o.children.forEach((el) => {\n this.utils.getOutlineRafterBeam(el as Mesh, lsGeometries);\n });\n }\n\n return { lines: lsGeometries, texts: [] };\n }\n public simplifyGeo(geo: BufferGeometry): Geometry {\n //let simplifiedGeo = new Geometry();\n let vertices = geo.getAttribute(\"position\").array;\n let lineGeo = new Geometry();\n for (let i = 0; i < vertices.length; i += 3) {\n //simplifiedGeo.vertices.push();\n\n lineGeo.vertices.push(\n new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2])\n );\n //lineGeo.vertices.push(new Vector3(vertices[i+3], vertices[i+4], vertices[i+5]));\n\n //if(i == 18) break;\n }\n\n //2-3\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n //3-7\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n //7-6\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n //6-2\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n\n //1-4\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n //4-8\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n //8-5\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n //5-1\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n\n //let line = new LineSegments(lineGeo, new LineBasicMaterial({color: new Color('red')}));\n //this.scene.add(line);\n return lineGeo;\n }\n\n private addGround() {\n let offsetZ = -(\n this.APP.sldExistingWidth1.currentValue / 2 +\n this.extraOffsetZ +\n this.APP.sldBackOverhang.currentValue\n );\n let width =\n this.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n let length =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldBackOverhang.currentValue;\n\n let base = new Mesh(\n this.geo_groundBase.geometry,\n MaterialManager.Instance().BASE\n );\n base.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GROUND_BASE,\n };\n base.position.set((UI.overhangRight - UI.overhangLeft) / 2, 0, offsetZ);\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2;\n if (this.APP.sltExistingType.currentValue == 1) {\n base.position.setX(base.position.x + offsetX);\n }\n if (this.APP.sltExistingType.currentValue == 2) {\n base.position.setX(base.position.x - offsetX);\n }\n base.scale.set(\n width / this.geo_groundBase.width,\n 1,\n length / this.geo_groundBase.length\n );\n\n this.scene.add(base);\n }\n private addPostOrBracket(offsetX: number, userDataPos: any): void {\n let meshPost = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n meshPost.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let meshBracket = new Mesh(\n this.geo_bracket.geometry,\n MaterialManager.Instance().BRACKET\n );\n meshBracket.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let offsetY =\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfExistingRoof() -\n FIT_FLYOVER_BRAKET_ON_ROOF;\n let postOffsetZ = 0;\n let bracketOffsetZ = 0;\n let scalePostY = 1;\n let scaleBracketY = 1;\n\n let views: Print2DView[];\n if (userDataPos.front) {\n postOffsetZ =\n this.APP.sldSpan.currentValue -\n this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ;\n bracketOffsetZ =\n this.APP.sldSpan.currentValue -\n this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ;\n scalePostY =\n (this.APP.sldExistingWallHeight.currentValue +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket()) /\n this.geo_superiorPost.height;\n scaleBracketY = UI.braketHeight / this.geo_bracket.height;\n\n if (this.APP.sldMultiSpan.currentValue > 0) {\n postOffsetZ -= this.geo_superiorPost.width / 2;\n bracketOffsetZ -= this.geometryManager.FLY_OVER_BRACKET.S65x3.width / 2;\n } else {\n postOffsetZ -= this.geo_superiorPost.width;\n bracketOffsetZ -= this.geometryManager.FLY_OVER_BRACKET.S65x3.width;\n }\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n if (userDataPos.back) {\n postOffsetZ =\n -this.APP.sldExistingWidth1.currentValue / 2 - this.extraOffsetZ;\n bracketOffsetZ =\n -this.APP.sldExistingWidth1.currentValue / 2 - this.extraOffsetZ;\n scalePostY =\n (this.APP.sldExistingWallHeight.currentValue +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket()) /\n this.geo_superiorPost.height;\n scaleBracketY = UI.braketHeight / this.geo_bracket.height;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n if (userDataPos.multiSpan) {\n postOffsetZ =\n UI.span +\n UI.multiSpan -\n this.APP.sldExistingWidth1.currentValue / 2 -\n this.geo_superiorPost.width -\n this.extraOffsetZ;\n bracketOffsetZ =\n UI.span +\n UI.multiSpan -\n this.APP.sldExistingWidth1.currentValue / 2 -\n this.geometryManager.FLY_OVER_BRACKET.S65x3.width -\n this.extraOffsetZ;\n scalePostY =\n (this.APP.sldExistingWallHeight.currentValue +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket()) /\n this.geo_superiorPost.height;\n scaleBracketY = UI.braketHeight / this.geo_bracket.height;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n meshPost.userData.views = views;\n meshBracket.userData.views = views;\n\n let bracketOffsetX = offsetX;\n let postOffsetX = offsetX;\n if (userDataPos.first) {\n } else if (userDataPos.last) {\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n } else {\n bracketOffsetX -= this.geo_bracket.width / 2;\n postOffsetX -= this.geo_superiorPost.width / 2;\n }\n\n let exceedMoveBackLimit = false;\n\n //post can not go behind existing wall\n if (exceedMoveBackLimit) {\n return;\n }\n\n meshPost.position.set(postOffsetX, 0, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n meshBracket.position.set(bracketOffsetX, offsetY, bracketOffsetZ);\n meshBracket.scale.setY(scaleBracketY);\n let boxPost = new Box3().setFromObject(meshPost);\n // let boxPostHelper = new Box3Helper(boxPost);\n // this.APP.scene.add(boxPostHelper);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n if (isIntersect) {\n if (this.APP.sltExistingType.currentValue != 3) {\n if (meshBracket.userData.position.left) {\n meshBracket.translateX(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n );\n } else if (meshBracket.userData.position.right) {\n meshBracket.translateX(\n -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n )\n );\n }\n }\n this.scene.add(meshBracket);\n } else {\n if (this.APP.sltExistingType.currentValue == 1) {\n meshPost.translateX(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n );\n } else if (this.APP.sltExistingType.currentValue == 2) {\n meshPost.translateX(\n -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n )\n );\n }\n this.scene.add(meshPost);\n }\n }\n public addPostOrBracketBack() {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET &&\n x.userData?.position?.back\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.SUPERIOR_POST &&\n x.userData?.position?.back\n )\n );\n\n let first = true;\n let last = false;\n let offsetX = -this.totalBaySize / 2;\n let userDataPos = { back: true };\n\n let bracketDistance = this.totalBaySize / (this.numberOfBracketsBack - 1);\n let cutoutLengthInExistingBoth =\n (this.totalBaySize - this.APP.sldExistingLength.currentValue) / 2;\n let extraWalWidth =\n this.APP.existingWallManager.geo_existingWallL1.width +\n CONST.EAVE_OFFSET_BACK;\n\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES &&\n this.MANAGER.cutoutCondition\n ) {\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n offsetX += this.APP.sldExistingLength2.currentValue;\n bracketDistance =\n (this.totalBaySize - this.APP.sldExistingLength2.currentValue) /\n (this.numberOfBracketsBack - 1);\n } else {\n offsetX +=\n this.APP.sldExistingLength2.currentValue -\n (this.APP.existingWallManager.geo_existingWallW1.width +\n CONST.EAVE_OFFSET_BACK);\n bracketDistance =\n (this.totalBaySize -\n this.APP.sldExistingLength2.currentValue +\n extraWalWidth) /\n (this.numberOfBracketsBack - 1);\n }\n } else if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n bracketDistance =\n (this.totalBaySize - this.APP.sldExistingLength2.currentValue) /\n (this.numberOfBracketsBack - 1);\n } else {\n bracketDistance =\n (this.totalBaySize -\n this.APP.sldExistingLength2.currentValue +\n extraWalWidth) /\n (this.numberOfBracketsBack - 1);\n }\n } else if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n offsetX += cutoutLengthInExistingBoth - extraWalWidth;\n bracketDistance =\n (this.APP.sldExistingLength.currentValue + extraWalWidth * 2) /\n (this.numberOfBracketsBack - 1);\n }\n }\n\n for (let i = 0; i < this.numberOfBracketsBack; i++) {\n if (i == this.numberOfBracketsBack - 1) {\n last = true;\n }\n let meshPost = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n meshPost.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let meshBracket = new Mesh(\n this.geo_bracket.geometry,\n MaterialManager.Instance().BRACKET\n );\n meshBracket.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let bracketOffsetY =\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfExistingRoof() -\n FIT_FLYOVER_BRAKET_ON_ROOF;\n let postOffsetZ = 0;\n let bracketOffsetZ = 0;\n\n let scalePostY = 1;\n let scaleBracketY = 1;\n\n let views: Print2DView[];\n\n postOffsetZ =\n -this.APP.sldExistingWidth1.currentValue / 2 - this.extraOffsetZ;\n bracketOffsetZ =\n -this.APP.sldExistingWidth1.currentValue / 2 - this.extraOffsetZ;\n scalePostY =\n (this.APP.sldExistingWallHeight.currentValue +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket()) /\n this.geo_superiorPost.height;\n scaleBracketY =\n UI.braketHeight / this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n meshPost.userData.views = views;\n meshBracket.userData.views = views;\n\n let bracketOffsetX = offsetX;\n let postOffsetX = offsetX;\n\n if (first) {\n } else if (last) {\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n } else {\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n }\n\n meshPost.position.set(postOffsetX, 0, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n meshBracket.position.set(bracketOffsetX, bracketOffsetY, bracketOffsetZ);\n meshBracket.scale.setY(scaleBracketY);\n\n //Check intersect eave\n let boxPost = new Box3().setFromObject(meshPost);\n boxPost.translate(this.scene.position);\n\n let isIntersect = false;\n //let isCutoutInterset = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n }\n }\n\n if (isIntersect) {\n if (\n i == 0 &&\n (this.APP.sltExistingType.currentValue == 1 ||\n this.APP.sltExistingType.currentValue == 3)\n ) {\n meshBracket.translateX(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n );\n } else if (\n last &&\n (this.APP.sltExistingType.currentValue == 2 ||\n this.APP.sltExistingType.currentValue == 3)\n ) {\n meshBracket.translateX(\n -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n )\n );\n }\n\n this.scene.add(meshBracket);\n } else {\n this.scene.add(meshPost);\n }\n\n if (i < this.numberOfBracketsBack) {\n offsetX += bracketDistance;\n }\n first = false;\n }\n }\n public addPostOrBracketBackCutout(): void {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET &&\n x.userData?.position?.back &&\n x.userData?.position?.cutout\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.SUPERIOR_POST &&\n x.userData?.position?.back &&\n x.userData?.position?.cutout\n )\n );\n\n if (\n this.APP.sltCutOut.currentValue != CUTOUT_ENABLE.YES ||\n !this.MANAGER.cutoutCondition\n )\n return;\n\n let first = true;\n let last = false;\n let offsetXL = -this.totalBaySize / 2;\n let offsetXR = this.totalBaySize / 2;\n\n let userDataPos = { back: true, cutout: true };\n\n let extraWalWidth =\n this.APP.existingWallManager.geo_existingWallL1.width +\n CONST.EAVE_OFFSET_BACK;\n let bracketDistance =\n (this.APP.sldExistingLength2.currentValue - extraWalWidth) /\n (this.numberOfBracketCutout - 1);\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n bracketDistance =\n this.APP.sldExistingLength2.currentValue /\n (this.numberOfBracketCutout - 1);\n }\n\n if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n for (let i = 0; i < this.numberOfBracketCutout; i++) {\n if (i == this.numberOfBracketCutout - 1) {\n last = true;\n }\n\n let meshPost = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n meshPost.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let meshBracket = new Mesh(\n this.geo_bracket.geometry,\n MaterialManager.Instance().BRACKET\n );\n meshBracket.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n //let offsetX = 0;\n let offsetY = this.APP.sldExistingWallHeight.currentValue;\n\n let postOffsetZ =\n -this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ +\n this.APP.sldExistingWidth1.currentValue;\n let bracketOffsetZ =\n -this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ +\n this.APP.sldExistingWidth1.currentValue;\n\n let views: Print2DView[];\n\n let scalePostY =\n this.utils.getHeightByAngle(\n this.APP.sldExistingWallHeight.currentValue +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.existingWidth1 > (UI.span + UI.multiSpan) / 2\n ? Math.abs(UI.span + UI.multiSpan - UI.existingWidth1)\n : UI.existingWidth1,\n UI.patiosPitch,\n 1\n ) / this.geo_superiorPost.height;\n\n let scaleBracketY =\n this.utils.getHeightByAngle(\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.existingWidth1 > (UI.span + UI.multiSpan) / 2\n ? Math.abs(UI.span + UI.multiSpan - UI.existingWidth1)\n : UI.existingWidth1,\n UI.patiosPitch,\n 1\n ) / this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n meshPost.userData.views = views;\n meshBracket.userData.views = views;\n\n let bracketOffsetX = offsetXL;\n let postOffsetX = offsetXL;\n if (first) {\n } else if (last) {\n } else {\n bracketOffsetX -= this.geo_bracket.width / 2;\n postOffsetX -= this.geo_superiorPost.width / 2;\n }\n\n meshPost.position.set(postOffsetX, 0, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n\n meshBracket.position.set(bracketOffsetX, offsetY, bracketOffsetZ);\n meshBracket.scale.setY(scaleBracketY);\n\n //Check intersect eave\n let boxPost = new Box3().setFromObject(meshPost);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n if (isIntersect) {\n if (this.APP.sltExistingType.currentValue == 1) {\n meshBracket.translateX(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n );\n }\n this.scene.add(meshBracket);\n } else {\n this.scene.add(meshPost);\n }\n\n if (i < this.numberOfBracketCutout) {\n offsetXL += bracketDistance;\n }\n first = false;\n }\n }\n\n if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n first = true;\n\n for (let i = 0; i < this.numberOfBracketCutout; i++) {\n if (i == this.numberOfBracketCutout - 1) {\n last = true;\n }\n\n let meshPost = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n meshPost.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let meshBracket = new Mesh(\n this.geo_bracket.geometry,\n MaterialManager.Instance().BRACKET\n );\n meshBracket.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let offsetY = this.APP.sldExistingWallHeight.currentValue;\n\n let postOffsetZ =\n -this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ +\n this.APP.sldExistingWidth1.currentValue;\n let bracketOffsetZ =\n -this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ +\n this.APP.sldExistingWidth1.currentValue;\n\n let views: Print2DView[];\n\n let scalePostY =\n this.utils.getHeightByAngle(\n this.APP.sldExistingWallHeight.currentValue +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.existingWidth1 > (UI.span + UI.multiSpan) / 2\n ? Math.abs(UI.span + UI.multiSpan - UI.existingWidth1)\n : UI.existingWidth1,\n UI.patiosPitch,\n 1\n ) / this.geo_superiorPost.height;\n\n let scaleBracketY =\n this.utils.getHeightByAngle(\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.existingWidth1 > (UI.span + UI.multiSpan) / 2\n ? Math.abs(UI.span + UI.multiSpan - UI.existingWidth1)\n : UI.existingWidth1,\n UI.patiosPitch,\n 1\n ) / this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n views = [\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n meshPost.userData.views = views;\n meshBracket.userData.views = views;\n\n let bracketOffsetX = offsetXR;\n let postOffsetX = offsetXR;\n if (first) {\n if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n }\n } else if (last) {\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n } else {\n bracketOffsetX -= this.geo_bracket.width / 2;\n postOffsetX -= this.geo_superiorPost.width / 2;\n }\n\n meshPost.position.set(postOffsetX, 0, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n\n meshBracket.position.set(bracketOffsetX, offsetY, bracketOffsetZ);\n meshBracket.scale.setY(scaleBracketY);\n\n //Check intersect eave\n let boxPost = new Box3().setFromObject(meshPost);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n if (isIntersect) {\n if (this.APP.sltExistingType.currentValue == 2) {\n meshBracket.translateX(\n -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n )\n );\n }\n\n this.scene.add(meshBracket);\n } else {\n this.scene.add(meshPost);\n }\n\n if (i < this.numberOfBracketCutout) {\n offsetXR -= bracketDistance;\n }\n first = false;\n }\n }\n }\n\n public addCenterSuperiorBeam() {\n let offsetXL = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n let offsetZ = 0;\n let offsetY = 0;\n\n let beamLength =\n this.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n\n let views: Print2DView[];\n\n offsetY =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n ((UI.span + UI.multiSpan) / 2 - this.geo_superiorBeam.width / 2) *\n this.utils.tan(UI.patiosPitch);\n offsetZ =\n (UI.span + UI.multiSpan) / 2 -\n this.geo_superiorBeam.width / 2 -\n UI.existingWidth1 / 2 -\n this.extraOffsetZ;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n const fitX = this.getContainerOffsetXToFitBraketToExistingWall();\n\n this.cutStandardBeamByCutBeamWithinBayControl(\n this.geo_superiorBeam,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetXL + fitX, offsetY, offsetZ),\n new Vector3(),\n views,\n 1,\n { center: true },\n \"RB\",\n this.geoBeamJoint\n );\n }\n\n private addCenterPost(offsetX, userDataPos) {\n let meshPost = new Mesh(\n this.geo_centerSuperiorPost.geometry,\n MaterialManager.Instance().BEAM\n );\n meshPost.userData = {\n ...userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_CENTER_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let scalePostY = 1;\n\n let views: Print2DView[];\n\n let postOffsetZ =\n (UI.span + UI.multiSpan) / 2 -\n this.geo_centerSuperiorPost.width / 2 -\n UI.existingWidth1 / 2 -\n this.extraOffsetZ;\n\n this.frontPostHeight =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket();\n\n scalePostY =\n (((UI.span + UI.multiSpan) / 2 - this.geo_superiorBeam.width / 2) *\n this.utils.tan(UI.patiosPitch) -\n this.geo_superiorBeam.height) /\n this.geo_centerSuperiorPost.height;\n views = [\n // { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n let postOffsetX = offsetX - this.geo_centerSuperiorPost.width / 2;\n\n if (userDataPos.first) {\n postOffsetX += this.geo_centerSuperiorPost.width / 2;\n } else if (userDataPos.last) {\n postOffsetX -= this.geo_centerSuperiorPost.width / 2;\n } else {\n }\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n postOffsetX -= offsetX;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n postOffsetX += offsetX;\n }\n\n meshPost.userData.views = views;\n meshPost.position.set(\n postOffsetX,\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height,\n postOffsetZ\n );\n meshPost.scale.setY(scalePostY);\n\n this.scene.add(meshPost);\n }\n\n public addHorSuperiorBeam(offsetX, userDataPos: any) {\n let mesh = new Mesh(\n this.geo_superiorBeam.geometry,\n MaterialManager.Instance().BEAM\n );\n\n let offsetXL = 0;\n let offsetXR = UI.span + UI.multiSpan - 2 * this.geo_superiorBeam.width;\n let offsetZ = 0;\n let offsetY = 0;\n\n let scaleX =\n (UI.span + UI.multiSpan - 2 * this.geo_superiorBeam.width) /\n this.geo_superiorBeam.length;\n\n let views: Print2DView[];\n\n if (userDataPos.front) {\n offsetY =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket();\n offsetZ =\n UI.span +\n UI.multiSpan -\n this.geo_superiorBeam.width -\n UI.existingWidth1 / 2 -\n this.extraOffsetZ;\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n position: userDataPos,\n views: views,\n };\n mesh.position.set(offsetXL, 0, 0);\n mesh.scale.setX(scaleX);\n\n let capL = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capL.position.set(\n offsetXL + this.geo_beamEndCap.length / 2 - 2,\n 0,\n this.geo_beamEndCap.width / 2\n );\n capL.rotateY(Math.PI / 2);\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n let capR = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capR.position.set(\n offsetXR - this.geo_beamEndCap.length / 2 + 2,\n 0,\n this.geo_beamEndCap.width / 2\n );\n capR.rotateY(-Math.PI / 2);\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let beamOffsetX = offsetX;\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n beamOffsetX -= offsetX;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n beamOffsetX += offsetX;\n }\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n position: userDataPos,\n views: views,\n name: \"GB\",\n };\n beamGroup.position.set(beamOffsetX, offsetY, offsetZ);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n\n beamGroup.rotateY(Math.PI / 2);\n\n this.scene.add(beamGroup);\n }\n\n public addRafterSuperiorBeam(offsetX, userDataPos: any) {\n if (\n this.APP.sltWindClass.currentValue == 0 ||\n this.APP.sltWindClass.currentValue == 1\n ) {\n if (this.totalBaySize <= 6000 && this.APP.sldSpan.currentValue <= 7000) {\n return;\n }\n }\n if (\n this.APP.sltWindClass.currentValue == 3 ||\n this.APP.sltWindClass.currentValue == 4 ||\n this.APP.sltWindClass.currentValue == 5\n ) {\n return;\n }\n let mesh;\n const beamWidth = this.geo_superiorBeam.width;\n const braketWidth = this.geo_bracket.width;\n let offsetXL = 0;\n let offsetXR =\n ((UI.span + UI.multiSpan) / 2 - beamWidth / 2) /\n this.utils.cos(UI.patiosPitch);\n let offsetZ = 0;\n let offsetY = 0;\n\n let scaleX =\n ((UI.span + UI.multiSpan) / 2 - beamWidth / 2) /\n this.utils.cos(UI.patiosPitch) /\n this.geo_RafterBeam.length;\n\n let views: Print2DView[];\n\n if (userDataPos.front) {\n let material = MaterialManager.Instance().BEAM.clone();\n\n let nBottom = new Vector3(0, 1, 0).normalize();\n let pBottom = new Vector3(\n 0,\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height,\n 0\n );\n let planeBottom = new Plane().setFromNormalAndCoplanarPoint(\n nBottom,\n pBottom\n );\n\n let nVer = new Vector3(0, 0, 1).normalize();\n let pVer = new Vector3(\n 0,\n 0,\n (UI.span + UI.multiSpan) / 2 -\n braketWidth +\n beamWidth / 2 -\n UI.existingWidth1 / 2\n );\n let planeVer = new Plane().setFromNormalAndCoplanarPoint(nVer, pVer);\n\n material.clippingPlanes = [planeBottom, planeVer];\n\n mesh = new Mesh(this.geo_RafterBeam.geometry, material);\n\n offsetY =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height;\n offsetZ =\n UI.span + UI.multiSpan - UI.existingWidth1 / 2 - this.extraOffsetZ;\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.back) {\n let material = MaterialManager.Instance().BEAM.clone();\n\n let nBottom = new Vector3(0, 1, 0).normalize();\n let pBottom = new Vector3(\n 0,\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height,\n 0\n );\n let planeBottom = new Plane().setFromNormalAndCoplanarPoint(\n nBottom,\n pBottom\n );\n\n let nVer = new Vector3(0, 0, -1).normalize();\n let pVer = new Vector3(\n 0,\n 0,\n (UI.span + UI.multiSpan) / 2 -\n braketWidth -\n this.geo_superiorBeam.width * 0.5 -\n UI.existingWidth1 / 2\n );\n let planeVer = new Plane().setFromNormalAndCoplanarPoint(nVer, pVer);\n\n material.clippingPlanes = [planeBottom, planeVer];\n\n mesh = new Mesh(this.geo_RafterBeam.geometry, material);\n\n offsetY =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height +\n ((UI.span + UI.multiSpan) / 2 - this.geo_superiorBeam.width / 2) *\n this.utils.tan(UI.patiosPitch);\n offsetZ =\n (UI.span + UI.multiSpan) / 2 -\n this.geo_superiorBeam.width / 2 -\n UI.existingWidth1 / 2 -\n this.extraOffsetZ;\n\n views = [\n // { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM,\n position: userDataPos,\n views: views,\n };\n mesh.position.set(offsetXL, 0, 0);\n mesh.scale.setX(scaleX);\n\n let checkExec = /\\w{1}\\d{1,3}x(\\d{1,3})/.exec(this.geo_RafterBeam.name);\n let beamSize = checkExec && checkExec.length == 2 ? checkExec[1] : \"\";\n let lowerBraketName = getRafterBeamEndCapCode(\n EXISTING_BUILDING_CONFIG.RAFTER_BEAM_SIZE,\n false\n );\n let higherBraketName = getRafterBeamEndCapCode(\n EXISTING_BUILDING_CONFIG.RAFTER_BEAM_SIZE,\n true\n );\n\n let capL;\n let capR;\n if (userDataPos.front) {\n let matEndCap = MaterialManager.Instance().BEAM.clone();\n\n let heightReal =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height +\n (this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan)) / 2;\n let heightPlane = heightReal * this.utils.cos(UI.patiosPitch);\n let translateZ = this.utils.sin(UI.patiosPitch) * heightPlane;\n\n let planeTop = new Plane(new Vector3(0, -1, 0));\n let matrixTranslateTop = new Matrix4().makeTranslation(\n 0,\n heightPlane,\n translateZ / 2\n );\n let matrixRotateTop = new Matrix4().makeRotationX(\n this.utils.degreesToRadians(UI.patiosPitch)\n ); //tao voi z pitch do\n let matrixTotalTop = matrixTranslateTop.multiply(matrixRotateTop);\n planeTop.applyMatrix4(matrixTotalTop);\n\n let heightRealBottom =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height -\n this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n (this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan)) / 2;\n let heightPlaneBottom = heightRealBottom * this.utils.cos(UI.patiosPitch);\n let translateZBottom = this.utils.sin(UI.patiosPitch) * heightPlaneBottom;\n\n let planeBottom = new Plane(new Vector3(0, 1, 0));\n let matrixTranslateBottom = new Matrix4().makeTranslation(\n 0,\n heightPlaneBottom,\n translateZBottom / 2\n );\n let matrixRotateBottom = new Matrix4().makeRotationX(\n this.utils.degreesToRadians(UI.patiosPitch)\n ); //tao voi z pitch do\n let matrixTotalBottom =\n matrixTranslateBottom.multiply(matrixRotateBottom);\n planeBottom.applyMatrix4(matrixTotalBottom);\n\n planeTop.translate(\n new Vector3(\n 0,\n 0,\n (UI.span + UI.multiSpan) / 2 -\n UI.existingWidth1 / 2 -\n this.extraOffsetZ +\n this.scene.position.z\n )\n );\n planeBottom.translate(\n new Vector3(\n 0,\n 0,\n (UI.span + UI.multiSpan) / 2 -\n UI.existingWidth1 / 2 -\n this.extraOffsetZ +\n this.scene.position.z\n )\n );\n\n matEndCap.clippingPlanes = [planeTop, planeBottom];\n\n capL = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capL.position.set(offsetXL - 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capL.scale.setY(\n (this.geo_RafterBeam.height / this.utils.sin(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length / this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capL.rotateY(Math.PI / 2);\n capL.rotateX(-Math.PI / 2 + this.utils.degreesToRadians(UI.patiosPitch));\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: lowerBraketName,\n };\n\n capR = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capR.position.set(offsetXR + 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capR.scale.setY(\n (this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length * this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capR.rotateY(-Math.PI / 2);\n capR.rotateX(-this.utils.degreesToRadians(UI.patiosPitch));\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: higherBraketName,\n };\n } else {\n let matEndCap = MaterialManager.Instance().BEAM.clone();\n\n let heightReal =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height +\n (this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan)) / 2;\n let heightPlane = heightReal * this.utils.cos(UI.patiosPitch);\n let translateZ = this.utils.sin(UI.patiosPitch) * heightPlane;\n\n let planeTop = new Plane(new Vector3(0, -1, 0));\n let matrixTranslateTop = new Matrix4().makeTranslation(\n 0,\n heightPlane,\n -translateZ / 2\n );\n let matrixRotateTop = new Matrix4().makeRotationX(\n -this.utils.degreesToRadians(UI.patiosPitch)\n ); //tao voi z pitch do\n let matrixTotalTop = matrixTranslateTop.multiply(matrixRotateTop);\n planeTop.applyMatrix4(matrixTotalTop);\n\n let heightRealBottom =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height -\n this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n (this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan)) / 2;\n let heightPlaneBottom = heightRealBottom * this.utils.cos(UI.patiosPitch);\n let translateZBottom = this.utils.sin(UI.patiosPitch) * heightPlaneBottom;\n\n let planeBottom = new Plane(new Vector3(0, 1, 0));\n let matrixTranslateBottom = new Matrix4().makeTranslation(\n 0,\n heightPlaneBottom,\n -translateZBottom / 2\n );\n let matrixRotateBottom = new Matrix4().makeRotationX(\n -this.utils.degreesToRadians(UI.patiosPitch)\n ); //tao voi z pitch do\n let matrixTotalBottom =\n matrixTranslateBottom.multiply(matrixRotateBottom);\n planeBottom.applyMatrix4(matrixTotalBottom);\n\n planeTop.translate(\n new Vector3(\n 0,\n 0,\n (UI.span + UI.multiSpan) / 2 -\n UI.existingWidth1 / 2 -\n this.extraOffsetZ +\n this.scene.position.z\n )\n );\n planeBottom.translate(\n new Vector3(\n 0,\n 0,\n (UI.span + UI.multiSpan) / 2 -\n UI.existingWidth1 / 2 -\n this.extraOffsetZ +\n this.scene.position.z\n )\n );\n\n matEndCap.clippingPlanes = [planeTop, planeBottom];\n\n capL = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capL.position.set(offsetXL - 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capL.scale.setY(\n (this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length * this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capL.rotateY(Math.PI / 2);\n capL.rotateX(-this.utils.degreesToRadians(UI.patiosPitch));\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: higherBraketName,\n };\n\n capR = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capR.position.set(offsetXR + 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capR.scale.setY(\n (this.geo_RafterBeam.height / this.utils.sin(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length / this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capR.rotateY(-Math.PI / 2);\n capR.rotateX(-Math.PI / 2 + this.utils.degreesToRadians(UI.patiosPitch));\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: lowerBraketName,\n };\n }\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetX -= fitZ;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetX += fitZ;\n }\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM,\n position: userDataPos,\n views: views,\n };\n beamGroup.position.set(offsetX, offsetY, offsetZ);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n\n beamGroup.rotateY(Math.PI / 2);\n\n if (userDataPos.front) {\n beamGroup.rotateZ(this.utils.degreesToRadians(UI.patiosPitch));\n } else if (userDataPos.back) {\n beamGroup.rotateZ(-this.utils.degreesToRadians(UI.patiosPitch));\n }\n\n this.scene.add(beamGroup);\n }\n\n public addSuperiorBeam(userDataPos: any) {\n let offsetX =\n -this.totalBaySize / 2 - this.APP.sldLeftOverhang.currentValue;\n let offsetZ = 0;\n let offsetY = 0;\n\n let beamLength =\n this.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n let extraWallWidth =\n this.APP.existingWallManager.geo_existingWallW1.width +\n CONST.EAVE_OFFSET_BACK;\n let views: Print2DView[];\n\n if (userDataPos.front) {\n offsetY =\n this.APP.sldExistingWallHeight.currentValue +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket();\n offsetZ =\n this.APP.sldSpan.currentValue -\n this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ;\n if (this.APP.sldMultiSpan.currentValue > 0) {\n offsetZ -= this.geo_superiorBeam.width / 2;\n } else {\n offsetZ -= this.geo_superiorBeam.width;\n }\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.back) {\n offsetY =\n this.APP.sldExistingWallHeight.currentValue +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket();\n offsetZ = -(\n this.APP.sldExistingWidth1.currentValue / 2 +\n this.extraOffsetZ\n );\n\n if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.MANAGER.cutoutCondition\n ) {\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n offsetX += this.APP.sldExistingLength2.currentValue;\n beamLength =\n this.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue -\n this.APP.sldExistingLength2.currentValue;\n } else {\n offsetX +=\n this.APP.sldExistingLength2.currentValue - extraWallWidth;\n beamLength =\n this.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue -\n this.APP.sldExistingLength2.currentValue +\n extraWallWidth;\n }\n\n offsetX += this.APP.sldLeftOverhang.currentValue;\n beamLength -= this.APP.sldLeftOverhang.currentValue;\n } else if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT\n ) {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n beamLength =\n this.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue -\n this.APP.sldExistingLength2.currentValue;\n } else {\n beamLength =\n this.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue -\n this.APP.sldExistingLength2.currentValue +\n extraWallWidth;\n }\n\n beamLength -= this.APP.sldRightOverhang.currentValue;\n } else if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n offsetX +=\n (this.totalBaySize -\n (this.APP.sldExistingLength.currentValue +\n this.APP.existingWallManager.geo_existingWallW1.width * 2)) /\n 2 -\n CONST.EAVE_OFFSET_BACK;\n beamLength =\n this.APP.sldExistingLength.currentValue +\n this.APP.existingWallManager.geo_existingWallW1.width * 2 +\n CONST.EAVE_OFFSET_BACK * 2;\n }\n }\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.multiSpan) {\n offsetY =\n this.APP.sldExistingWallHeight.currentValue +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket();\n offsetZ =\n UI.span +\n UI.multiSpan -\n this.APP.sldExistingWidth1.currentValue / 2 -\n this.geo_superiorBeam.width -\n this.extraOffsetZ;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.cutout) {\n offsetY =\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.getBracketHeight(\n UI.existingWidth1 > (UI.span + UI.multiSpan) / 2\n ? Math.abs(UI.span + UI.multiSpan - UI.existingWidth1)\n : UI.existingWidth1\n );\n\n offsetZ =\n this.APP.sldExistingWidth1.currentValue -\n this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ;\n beamLength =\n this.APP.sldExistingLength2.currentValue -\n this.APP.existingWallManager.geo_existingWallW1.width;\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n beamLength += extraWallWidth;\n }\n\n beamLength +=\n this.APP.sldLeftOverhang.currentValue +\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n views = [\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n beamLength += extraWallWidth;\n offsetX =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue -\n this.APP.sldExistingLength2.currentValue -\n CONST.EAVE_OFFSET_BACK;\n } else {\n offsetX =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue -\n this.APP.sldExistingLength2.currentValue +\n this.APP.existingWallManager.geo_existingWallW1.width;\n }\n\n offsetX -=\n this.APP.sldRightOverhang.currentValue +\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2;\n beamLength +=\n this.APP.sldRightOverhang.currentValue +\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2;\n } else if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n beamLength =\n (this.totalBaySize - this.APP.sldExistingLength.currentValue) / 2 -\n this.APP.existingWallManager.geo_existingWallW1.width -\n CONST.EAVE_OFFSET_BACK +\n this.geo_bracket.width +\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2;\n }\n }\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetX -= fitZ;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetX += fitZ;\n }\n\n if (userDataPos.front || userDataPos.multiSpan) {\n this.cutStandardBeamByCutBeamWithinBayControl(\n this.geo_superiorBeam,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetX, offsetY, offsetZ),\n new Vector3(),\n views,\n 1,\n userDataPos,\n \"EB\",\n this.geoBeamJoint\n );\n } else {\n this.cutStandardBeamToEqualLengthBeam(\n this.geo_superiorBeam,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetX, offsetY, offsetZ),\n new Vector3(),\n views,\n 1,\n userDataPos,\n \"EB\",\n this.geoBeamJoint\n );\n }\n\n //Add one more beam cutout right\n if (userDataPos.cutout && this.APP.sltExistingType.currentValue == 3) {\n offsetX =\n this.totalBaySize / 2 -\n (this.totalBaySize - this.APP.sldExistingLength.currentValue) / 2 +\n this.APP.existingWallManager.geo_existingWallW1.width +\n CONST.EAVE_OFFSET_BACK -\n this.geo_superiorBeam.width -\n (this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2);\n\n this.cutStandardBeamToEqualLengthBeam(\n this.geo_superiorBeam,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetX, offsetY, offsetZ),\n new Vector3(),\n views,\n 1,\n userDataPos,\n \"EB\",\n this.geoBeamJoint\n );\n }\n }\n private cutStandardBeamToEqualLengthBeam(\n beamGeo: GeometryInfo,\n beamCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n userDataPos: any,\n beamName = \"\",\n jointGeo: GeometryInfo\n ) {\n const beamStartX = pos.x;\n const beamEndX = pos.x + length;\n\n const numOfBeam = Math.ceil(\n length / EXISTING_BUILDING_CONFIG.MAXIMUM_LENGTH_PER_BEAM\n );\n const lengthPerBeam = Math.abs(beamEndX - beamStartX) / numOfBeam;\n for (let i = 0; i < numOfBeam; i++) {\n let beamGroup = this.utils.createBeamGroup(\n beamGeo,\n beamCapGeo,\n lengthPerBeam,\n new Vector3(beamStartX + lengthPerBeam * i, pos.y, pos.z),\n rot,\n views,\n directionOffset,\n userDataPos,\n UI.beamLayoutShow,\n {\n hasStartCap: UI.beamType == 0 && i == 0,\n hasEndCap:\n UI.beamType == 0 &&\n (i == numOfBeam - 1 || (i == 0 && numOfBeam == 1)),\n hasStartJoint: i !== 0,\n hasEndJoint: false,\n jointGeo: jointGeo,\n }\n );\n beamGroup.userData = {\n ...beamGroup.userData,\n name: beamName,\n };\n this.scene.add(beamGroup);\n }\n }\n private cutStandardBeamByCutBeamWithinBayControl(\n beamGeo: GeometryInfo,\n beamCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n userDataPos: any,\n beamName = \"\",\n jointGeo: GeometryInfo\n ) {\n const fitX = this.getContainerOffsetXToFitBraketToExistingWall();\n // Map list cut beam here\n const beamStartX = pos.x;\n const beamEndX = pos.x + length;\n\n let endOfBayX = -UI.totalBayLength / 2 + fitX;\n let startCutBeamX = beamStartX;\n let endCutBeamX = beamStartX;\n\n const beams = this.utils.getListSeperateBeamsByBays(\n endOfBayX,\n beamStartX,\n beamEndX,\n endCutBeamX,\n startCutBeamX\n );\n\n for (let i = 0; i < beams.length; i++) {\n endCutBeamX = beams[i][1];\n startCutBeamX = beams[i][0];\n let beamGroup = this.utils.createBeamGroup(\n beamGeo,\n beamCapGeo,\n endCutBeamX - startCutBeamX,\n new Vector3(startCutBeamX, pos.y, pos.z),\n rot,\n views,\n directionOffset,\n userDataPos,\n UI.beamLayoutShow,\n {\n hasStartCap: UI.beamType == 0 && i == 0,\n hasEndCap:\n UI.beamType == 0 &&\n (i == beams.length - 1 || (i == 0 && beams.length == 1)),\n hasStartJoint: i !== 0,\n hasEndJoint: false,\n jointGeo: jointGeo,\n }\n );\n beamGroup.userData = {\n ...beamGroup.userData,\n name: beamName,\n };\n this.scene.add(beamGroup);\n }\n }\n private getContainerOffsetXToFitBraketToExistingWall() {\n let fitX = 0;\n if (UI.existingType == BUILDING_SIDE.RIGHT) {\n fitX = -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0)\n );\n }\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n fitX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n }\n\n return fitX;\n }\n public getBracketHeight(offset): number {\n let angle = UI.patiosPitch;\n return this.utils.tan(angle) * offset;\n }\n\n public destroy(): void {\n this.unregisterEvent();\n }\n\n private registerEvent(): void {\n this.eventHandleId = this.uiChangedDefer.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldExistingWallHeight,\n this.APP.sldEaveWidth,\n this.APP.sldFasciaDepth,\n\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n\n this.APP.sltExistingType,\n this.APP.dialogEditBay,\n\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldFrontOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldFlyOverBracketHeight,\n\n this.APP.sltColourBeam,\n this.APP.sltColourPost,\n this.APP.sltColourBracket,\n this.APP.sltColourFasciaBracket,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n ];\n //this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n\n this.controlsToRegisterEvent2 = [\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltColumnType,\n ];\n this.controlsToRegisterEvent2.forEach((c) =>\n c.addAction(this.objectSizeChangedHandle)\n );\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach((c) =>\n c.removeAction(this.objectSizeChangedHandle)\n );\n this.controlsToRegisterEvent2 = undefined;\n }\n private objectSizeChanged(pre: number, cur: number) {\n this.optimize().then(() => {\n this.load();\n });\n }\n uiChangedDefer(previousValue: number, currentValue: number) {\n if (this.APP.sltCutOut.currentValue == 1) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => {\n this.load();\n }, this.deferTimeout);\n } else {\n this.load();\n }\n }\n}\n","import { Scene, Mesh, Object3D, Material, Group, FontLoader, TextBufferGeometry, Vector3, Matrix4, Box3, Geometry, BoxBufferGeometry, BufferGeometry, Line, Line3 } from \"three\";\nimport { HomeComponent as AppComponent, HomeComponent } from '../../containers/home/home.component';\nimport { Util } from '../utils';\nimport { MaterialManager } from '../material.manager';\nimport { GeometryInfo, ViewType, LineType, IBay, Printing2DGeometry, Printing2DLine, Print2DText } from 'src/app/core/models';\nimport { GEOMETRY_TYPE, DIMENSION_LOCATION, DIMENSION_LABEL_TYPE } from 'src/app/app.config';\nimport { environment } from 'src/environments/environment';\nimport { PatiosGableLRFlyOverManager } from '.';\nimport { GeometryManager } from '../geometry.manager';\nimport { BUILDING_SIDE, FIT_FLYOVER_BRAKET_ON_ROOF, PANEL_DIRECTION, RAKECUT_TYPE } from 'src/app/app.constants';\nimport Dimension, { AddDimensionOptions } from \"src/app-ribspan/models/Dimension\";\nimport { UI } from \"../ui\";\n\nexport class DimensionManager {\n private scene: Scene;\n private APP: AppComponent;\n private MANAGER: PatiosGableLRFlyOverManager;\n public listText: THREE.Object3D[] = [];\n private utils: Util;\n\n\n private eventHandleId: any;\n\n private material: Material;\n\n private materialManager: MaterialManager;\n\n private dimensionPatiosFrontBottom: Object3D;\n private dimensionPatiosFrontRight: Object3D;\n \n private dimensionPatiosRightBottom: Object3D;\n private dimensionPatiosRightLeft: Object3D;\n private dimensionPatiosRightRight: Object3D;\n\n private dimensionPatiosLeftBottom: Object3D;\n private dimensionPatiosLeftRight: Object3D;\n private dimensionPatiosLeftLeft: Object3D;\n\n private dimensionPatiosPlanRight: Object3D;\n private dimensionPatiosPlanBottom: Object3D;\n private dimensionPatiosPlanLeft: Object3D;\n private dimensionPlanMiddle: Object3D;\n private dimensionPlanMidleLeft: Object3D;\n private dimensionPatiosPlanLeftOverHang: Object3D;\n\n private lineCapGeo: GeometryInfo;\n private lineGeo: GeometryInfo;\n private textGeo: TextBufferGeometry;\n\n private dimensionDistance = 1500;\n private dimensionDistance2 = 500;\n private dimensionDistance3 = 300;\n\n private textDistance = 5000;\n\n private totalBaySize: number;\n private box: Box3;\n\n private font: any\n private textParameter: any;\n private isReady = false;\n\n private controlsToRegisterEvent: Array;\n private geometryManager: GeometryManager;\n\n private options : AddDimensionOptions;\n private startPos: Vector3;\n private startMatrix: Matrix4;\n private startBayLength: number;\n\n constructor(app: AppComponent, flyOverManager: PatiosGableLRFlyOverManager) {\n this.utils = new Util();\n this.materialManager = MaterialManager.Instance();\n this.APP = app;\n this.MANAGER = flyOverManager;\n this.scene = this.APP.scene;\n this.material = MaterialManager.Instance().DIMENSION_TEXT;\n this.geometryManager = GeometryManager.Instance();\n //this.registerEvent();\n }\n\n \n public optimize() : Promise{\n return new Promise((resolve, reject) => {\n this.lineGeo = this.geometryManager.getDimensionLine();\n this.lineCapGeo = this.geometryManager.getDimensionCap();\n\n resolve();\n });\n }\n public load(): Promise { \n return new Promise((resolve, reject) => {\n this.unload();\n \n var loader = new FontLoader();\n \n this.dimensionPatiosFrontBottom = new Group();\n this.dimensionPatiosFrontBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n // this.dimensionPatiosFrontBottom.rotation.set(0,Math.PI,0);\n this.dimensionPatiosFrontBottom.visible = false;\n\n this.dimensionPatiosFrontRight = new Group();\n this.dimensionPatiosFrontRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosFrontRight.rotation.set(0,0,-Math.PI/2);\n this.dimensionPatiosFrontRight.visible = false;\n \n this.dimensionPatiosRightBottom = new Group();\n this.dimensionPatiosRightBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightBottom.rotation.set(0,-Math.PI/2,0);\n this.dimensionPatiosRightBottom.visible = false;\n\n this.dimensionPatiosRightLeft = new Group();\n this.dimensionPatiosRightLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightLeft.rotation.set(0,-Math.PI/2,-Math.PI/2);\n this.dimensionPatiosRightLeft.visible = false;\n\n this.dimensionPatiosRightRight = new Group();\n this.dimensionPatiosRightRight.rotation.set(0,-Math.PI/2,-Math.PI/2);\n this.dimensionPatiosRightRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightRight.visible = false;\n \n\n this.dimensionPatiosLeftBottom = new Group();\n this.dimensionPatiosLeftBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftBottom.rotation.set(0,-Math.PI/2,0);\n this.dimensionPatiosLeftBottom.visible = false;\n\n this.dimensionPatiosLeftRight = new Group();\n this.dimensionPatiosLeftRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftRight.rotation.set(Math.PI/2,-Math.PI/2,0);\n this.dimensionPatiosLeftRight.visible = false;\n\n this.dimensionPatiosLeftLeft = new Group();\n this.dimensionPatiosLeftLeft.rotation.set(0, -Math.PI / 2, Math.PI / 2);\n this.dimensionPatiosLeftLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftLeft.visible = false;\n \n\n\n this.dimensionPatiosPlanRight = new Group();\n this.dimensionPatiosPlanRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosPlanRight.rotation.set(-Math.PI/2, Math.PI, -Math.PI/2);\n\n this.dimensionPatiosPlanBottom = new Group();\n this.dimensionPatiosPlanBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosPlanBottom.rotation.set(-Math.PI / 2, 0, 0);\n\n this.dimensionPatiosPlanLeft = new Group();\n this.dimensionPatiosPlanLeft.userData = { type: GEOMETRY_TYPE.DIMENSION , position: { left: true } };\n this.dimensionPatiosPlanLeft.rotation.set(-Math.PI / 2, 0, -Math.PI / 2);\n\n this.dimensionPlanMiddle = new Group();\n this.dimensionPlanMiddle.userData = { type: GEOMETRY_TYPE.DIMENSION };\n //this.dimensionPlanMiddle.rotation.set(-Math.PI / 2, 0, 0);\n this.dimensionPlanMidleLeft = new Group();\n\n this.dimensionPatiosPlanLeftOverHang = new Group();\n\n this.scene.add(this.dimensionPatiosPlanRight);\n this.scene.add(this.dimensionPatiosPlanLeft);\n this.scene.add(this.dimensionPatiosFrontRight);\n this.APP.patiosManager.patiosGroup.add(\n this.dimensionPatiosFrontBottom, \n //this.dimensionPatiosFrontRight, \n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom, \n this.dimensionPatiosLeftRight, \n this.dimensionPatiosPlanBottom,\n this.dimensionPlanMiddle,\n this.dimensionPatiosPlanLeftOverHang,\n this.dimensionPatiosLeftLeft,\n this.dimensionPlanMidleLeft\n );\n\n\n\n loader.load( environment.modelBaseUrl + '/assets/fonts/helvetiker_regular.typeface.json', (font) => {\n this.font = font;\n\n this.textParameter = {\n font: this.font,\n size: 200,\n height: 5,\n curveSegments: 10\n };\n this.options = {\n container: HomeComponent.ins.scene,\n start: new Vector3(),\n end: new Vector3(),\n linePos: new Vector3(),\n views: [],\n allowDrag: true,\n textParameter: this.textParameter,\n textPos: new Vector3(),\n labelType: null,\n fitZ: 10,\n hasTextClone: false,\n axis: 'x',\n lineLength: 0,\n subtype: null,\n textUserData: null,\n onDragCallback: this.onDimDrag.bind(this),\n onDragStartCallback: this.onDimDragStart.bind(this),\n }\n\n this.isReady = true;\n this.draw();\n \n resolve();\n })\n });\n }\n\n public unload(){\n this.scene.remove(this.dimensionPatiosPlanRight);\n this.scene.remove(this.dimensionPatiosPlanLeft);\n this.scene.remove(this.dimensionPatiosFrontRight);\n if(this.APP.patiosManager && this.APP.patiosManager.patiosGroup){\n this.APP.patiosManager.patiosGroup.remove(\n this.dimensionPatiosFrontBottom, \n //this.dimensionPatiosFrontRight, \n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom, \n this.dimensionPatiosLeftRight,\n this.dimensionPatiosLeftLeft,\n this.dimensionPatiosPlanBottom,\n this.dimensionPlanMiddle,\n this.dimensionPlanMidleLeft,\n this.dimensionPatiosPlanLeftOverHang\n );\n }\n }\n \n public draw() {\n if (!this.isReady) {\n return;\n }\n // this.dimensionPatiosPlanBottom.children = [];\n // this.dimensionPatiosPlanRight.children = [];\n // this.dimensionPatiosPlanLeft.children = [];\n this.dimensionPatiosPlanBottom.children = this.dimensionPatiosPlanBottom.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.LEFT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.RIGHT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY\n );\n this.dimensionPatiosPlanRight.children = this.dimensionPatiosPlanRight.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.MULTI_SPAN\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.FRONT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.BACK_OVERHANG\n );\n this.dimensionPatiosPlanLeft.children = this.dimensionPatiosPlanLeft.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL \n )\n this.dimensionPatiosFrontBottom.children = [];\n this.dimensionPatiosFrontRight.children = [];\n this.dimensionPatiosLeftBottom.children = [];\n this.dimensionPatiosLeftRight.children = [];\n this.dimensionPatiosRightBottom.children = [];\n this.dimensionPatiosRightLeft.children = [];\n this.dimensionPatiosRightRight.children = [];\n this.dimensionPlanMiddle.children = [];\n this.dimensionPatiosPlanLeftOverHang.children = [];\n this.dimensionPatiosLeftLeft.children = [];\n this.dimensionPlanMidleLeft.children = [];\n\n this.totalBaySize = 0;\n for(let b of this.APP.dialogEditBay.listBay){\n this.totalBaySize += b.value;\n }\n\n this.box = this.utils.getSceneBox();\n\n this.drawDimensionPatiosPlanBottom();\n this.drawDimensionPatiosPlanRight();\n this.drawDimensionPatiosPlanLeft();\n\n this.drawDimensionPatiosFrontBottom();\n this.drawDimensionPatiosFrontRight();\n\n this.drawDimensionPatiosLeftBottom();\n this.drawDimensionPatiosLeftRight();\n this.drawDimensionPatiosLeftLeft();\n\n this.drawDimensionPatiosRightBottom();\n this.drawDimensionPatiosRightLeft();\n this.drawDimensionPatiosRightRight();\n\n this.drawDimensionMidle();\n this.drawDimensionMidleLeft();\n\n this.APP.dimensionManager.draw();\n }\n private totalHeightFromEaveHeightToTopOfExistingRoof(){\n const height = \n this.geometryManager.EAVE.EAVE.height \n + UI.fasciaDepth \n + UI.eaveWidth * this.utils.tan(UI.existingRoofPitch) \n + this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.height / this.utils.cos(UI.existingRoofPitch)\n \n return height\n }\n private totalHeightFromEaveHeightToTopOfFlyoverBraket(){\n const height = this.totalHeightFromEaveHeightToTopOfExistingRoof() + UI.braketHeight - FIT_FLYOVER_BRAKET_ON_ROOF;\n \n return height\n }\n private drawDimensionMidleLeft() {\n let dimLeft = this.utils.createArrowLine([{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }]);\n dimLeft.visible = false;\n dimLeft.position.setX(-300)\n let textLeft = this.utils.createText(\"Panel direction\", [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }], this.textParameter, new Vector3(-500, 0, 650));\n textLeft.visible = false;\n\n let dimRight = dimLeft.clone()\n dimRight.position.setX(300);\n let textRight = textLeft.clone();\n textRight.position.setX(500);\n \n this.dimensionPlanMidleLeft.add(dimLeft);\n this.dimensionPlanMidleLeft.add(textLeft);\n this.dimensionPlanMidleLeft.add(dimRight);\n this.dimensionPlanMidleLeft.add(textRight);\n\n let offsetZ =UI.span / 2 - UI.existingWidth1 / 2 - this.MANAGER.patiosGroup.position.z - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n if (this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT) {\n let offsetX = this.totalBaySize / 2 + UI.overhangRight;\n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT){\n offsetX += -this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width - 100 + ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n }\n \n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT){\n offsetX += this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n }\n\n this.dimensionPlanMidleLeft.position.set(offsetX, 0, offsetZ);\n this.dimensionPlanMidleLeft.rotation.set(0, -Math.PI / 2, 0);\n }\n else {\n let offsetX = - this.totalBaySize / 2 - UI.overhangLeft;\n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT){\n offsetX += -this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width - 100 + ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n }\n \n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT){\n offsetX += this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n }\n \n this.dimensionPlanMidleLeft.rotation.set(0, Math.PI / 2, 0);\n this.dimensionPlanMidleLeft.position.set(offsetX, 0, offsetZ);\n }\n }\n private drawDimensionMidle() {\n let offsetX = 0;\n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT){\n offsetX = -this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width - 100 + ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n }\n\n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT){\n offsetX = this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n }\n\n let dimLeft = this.utils.createArrowLine([{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }]);\n dimLeft.rotation.set(0, -Math.PI / 2, 0);\n dimLeft.visible = false;\n\n let textLeft = this.utils.createText(`${UI.patiosPitch} degree`, [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }], this.textParameter, new Vector3(-500, 0, 200));\n textLeft.userData.rotation = new Vector3(0, Math.PI / 2, 0)\n textLeft.visible = false;\n\n let dimRight = dimLeft.clone()\n dimRight.rotation.set(0, Math.PI / 2, 0);\n\n let textRight = textLeft.clone();\n textRight.position.setX(500);\n \n this.dimensionPlanMiddle.add(dimLeft);\n this.dimensionPlanMiddle.add(textLeft);\n this.dimensionPlanMiddle.add(dimRight);\n this.dimensionPlanMiddle.add(textRight);\n\n let offsetZ = - UI.existingWidth1 / 2 - this.MANAGER.patiosGroup.position.z - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0) + UI.span / 2;\n this.dimensionPlanMiddle.rotation.set(0, Math.PI / 2, 0);\n this.dimensionPlanMiddle.position.set(offsetX, 0, offsetZ);\n }\n private drawDimensionPatiosPlanBottom(){\n let offsetX = -this.totalBaySize / 2;\n //let offsetZ = this.box.max.z + this.dimensionDistance2;\n //let offsetZ = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance3 - this.APP.sldExistingWidth1.currentValue/2;\n //if (this.APP.sldExistingWidth1.currentValue > this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) {\n // offsetZ = this.APP.sldExistingWidth1.currentValue / 2 + this.dimensionDistance2\n // if(this.APP.sldExistingLength2.currentValue > 0){\n // offsetZ += 500;\n // }\n //}\n\n let views = [ { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS } ];\n\n //this.dimensionPatiosPlanBottom.position.setZ(offsetZ);\n this.dimensionPatiosPlanBottom.children = this.dimensionPatiosPlanBottom.children.filter(el => \n el.userData?.groupType != DIMENSION_LABEL_TYPE.BAY\n || (el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY && el.userData?.bayNum < HomeComponent.ins.dialogEditBay.listBay.length)\n );\n \n for(let i = 0; i <= this.APP.dialogEditBay.listBay.length; i++){\n let b: IBay = {index: 0, value: 0, isCut: false};\n if(i < this.APP.dialogEditBay.listBay.length){\n b = this.APP.dialogEditBay.listBay[i];\n }\n\n // let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n // cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n // cap2.position.setX(offsetX);\n // this.dimensionPatiosPlanBottom.add(cap2);\n\n if(i < this.APP.dialogEditBay.listBay.length){\n let textStr = this.utils.getDimensionValue(b.value);\n let options : AddDimensionOptions = {... this.options,\n lineLength: b.value,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(offsetX + b.value / 2, 0, 0),\n textPos: new Vector3(offsetX + b.value / 2, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.BAY,\n bayNum: i,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, position: { bottom: true } }\n }\n let dimBay = this.dimensionPatiosPlanBottom.children.find(el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY \n && el.userData?.bayNum == i\n ) as Dimension;\n if(!dimBay){\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n offsetX += b.value;\n }\n\n //rakecut\n if(this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE){\n let _offsetX = -this.APP.dialogEditBay.totalBaySize/2 + this.APP.sldLeftCutHorizontal.currentValue/2 - this.APP.sldLeftOverhang.currentValue;\n let options : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldLeftCutHorizontal.currentValue,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(_offsetX, 500, 0),\n textPos: new Vector3(_offsetX, 300, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL,\n subtype: GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT\n }\n let dimRake = this.dimensionPatiosPlanBottom.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL) as Dimension;\n if(!dimRake){\n new Dimension(options);\n } else {\n dimRake.update(options);\n }\n } else {\n this.dimensionPatiosPlanBottom.children = this.dimensionPatiosPlanBottom.children.filter(el => el.userData?.groupType != DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL)\n }\n if(this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE){\n let _offsetX = this.APP.dialogEditBay.totalBaySize/2 - this.APP.sldRightCutHorizontal.currentValue/2 + this.APP.sldRightOverhang.currentValue;\n let options : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldRightCutHorizontal.currentValue,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(_offsetX, 500, 0),\n textPos: new Vector3(_offsetX, 500-200, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL,\n subtype: GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT\n }\n let dimRake = this.dimensionPatiosPlanBottom.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL) as Dimension;\n if(!dimRake){\n new Dimension(options);\n } else {\n dimRake.update(options);\n }\n } else {\n this.dimensionPatiosPlanBottom.children = this.dimensionPatiosPlanBottom.children.filter(el => el.userData?.groupType != DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL)\n }\n //Left over hang\n this.addOverhang(this.dimensionPatiosPlanBottom, offsetX, this.APP.sldLeftOverhang.currentValue, views, \"Left\", 0, \"z\", DIMENSION_LABEL_TYPE.LEFT_OVERHANG);\n this.addOverhang(this.dimensionPatiosPlanBottom, offsetX, this.APP.sldRightOverhang.currentValue, views, \"Right\", 0, \"z\", DIMENSION_LABEL_TYPE.RIGHT_OVERHANG);\n this.repositionDimension(this.dimensionPatiosPlanBottom, DIMENSION_LOCATION.PLAN_BOTTOM);\n }\n onDimDrag(event){\n this.utils.handlerDimDragEvent(event, this.startPos, this.startMatrix, this.startBayLength);\n this.startPos = event.object.position.clone();\n }\n onDimDragStart(event){\n this.startPos = event.object.position.clone();\n this.startMatrix = event.object.matrixWorld.clone();\n if(event.object.userData?.dimType === DIMENSION_LABEL_TYPE.BAY){\n let bayNum = event.object.userData.bayNum;\n this.startBayLength = UI.listBay[+bayNum].value;\n }\n }\n private drawDimensionPatiosPlanRight(){\n \n let views = [ { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS } ];\n let offsetDimensionZ = this.APP.sldSpan.currentValue/2 \n - this.APP.sldExistingWidth1.currentValue/2 \n - this.APP.existingWallManager.geo_existingWallL1.width \n - this.APP.eaveManager.backOverhang;\n\n let _dimensionDistane = this.dimensionDistance2;\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n if(this.APP.sldExistingWidth1.currentValue > 0){\n _dimensionDistane = this.dimensionDistance;\n }\n }\n\n let dimLength = this.APP.sldSpan.currentValue;\n\n let textStr = this.utils.getDimensionValue(this.APP.sldSpan.currentValue);\n\n let options : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldSpan.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.SPAN,\n hasTextClone: false,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneRotation: new Vector3(0, Math.PI, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, -Math.PI, 0),\n fitZ: -10\n }\n let dimSpan = this.dimensionPatiosPlanRight.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN) as Dimension;\n if(!dimSpan){\n new Dimension(options);\n } else {\n dimSpan.update(options);\n }\n\n if(this.APP.sldMultiSpan.currentValue > 0){\n // let offsetX = this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue;\n // - this.APP.sldExistingWidth1.currentValue/2 \n // - this.APP.existingWallManager.geo_existingWallL1.width \n // - this.APP.eaveManager.backOverhang;\n dimLength += this.APP.sldMultiSpan.currentValue;\n\n let textStr = this.utils.getDimensionValue(this.APP.sldMultiSpan.currentValue);\n\n let optionsMul : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldMultiSpan.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue / 2, 0, 0),\n textPos: new Vector3(this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue / 2, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.MULTI_SPAN,\n hasTextClone: false,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneRotation: new Vector3(0, Math.PI, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, -Math.PI, 0),\n fitZ: -10\n }\n let dimMul = this.dimensionPatiosPlanRight.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.MULTI_SPAN) as Dimension;\n if(!dimMul){\n new Dimension(optionsMul);\n } else {\n dimMul.update(optionsMul);\n }\n } else {\n this.dimensionPatiosPlanRight.children = this.dimensionPatiosPlanRight.children.filter(el => el.userData?.groupType != DIMENSION_LABEL_TYPE.MULTI_SPAN)\n }\n\n let extraDistance = 0;\n //----Rake cut\n if(this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE){\n extraDistance = 500;\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n \n let offsetZ = dimLength/2 + UI.multiSpan / 2 + this.APP.sldFrontOverhang.currentValue - this.APP.sldRightCutVertical.currentValue/2;\n \n let optionsRake : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldRightCutVertical.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(offsetZ, 500, 0),\n textPos: new Vector3(offsetZ, 300, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL,\n textRotation: new Vector3( 0, Math.PI, 0),\n fitZ: -10,\n subtype: GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT\n }\n let dimRake = this.dimensionPatiosPlanRight.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL) as Dimension;\n if(!dimRake){\n new Dimension(optionsRake);\n } else {\n dimRake.update(optionsRake);\n }\n } else {\n this.dimensionPatiosPlanRight.children = this.dimensionPatiosPlanRight.children.filter(el => el.userData?.groupType != DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL)\n }\n //----End rake cut\n \n let offsetRight = this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue;\n let offsetLeft = this.APP.sldSpan.currentValue / 2;// + this.APP.sldMultiSpan.currentValue;\n\n this.addOverhang(this.dimensionPatiosPlanRight, offsetRight, this.APP.sldFrontOverhang.currentValue, views, \"Right\", Math.PI,\"y\", DIMENSION_LABEL_TYPE.FRONT_OVERHANG);\n this.addOverhang(this.dimensionPatiosPlanRight, offsetLeft, this.APP.sldBackOverhang.currentValue, views, \"Left\", Math.PI, \"y\", DIMENSION_LABEL_TYPE.BACK_OVERHANG);\n\n this.repositionDimension(this.dimensionPatiosPlanRight, DIMENSION_LOCATION.PLAN_RIGHT, extraDistance);\n }\n private drawDimensionPatiosPlanLeft(){\n if(this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.NONE){\n this.dimensionPatiosPlanLeft.children = this.dimensionPatiosPlanLeft.children.filter(el => el.userData?.groupType != DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL)\n return;\n }\n\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n\n let offsetDimensionZ = this.APP.sldSpan.currentValue\n + this.APP.sldMultiSpan.currentValue\n + this.APP.sldFrontOverhang.currentValue\n - this.APP.sldExistingWidth1.currentValue / 2\n - this.APP.existingWallManager.geo_existingWallL1.width\n - this.APP.eaveManager.backOverhang\n - this.APP.sldLeftCutVertical.currentValue/2;\n\n let optionsRake : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldLeftCutVertical.currentValue,\n container: this.dimensionPatiosPlanLeft,\n views: views,\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL,\n }\n let dimRake = this.dimensionPatiosPlanLeft.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL) as Dimension;\n if(!dimRake){\n new Dimension(optionsRake);\n } else {\n dimRake.update(optionsRake);\n }\n\n //let offsetDimensionX = this.MANAGER.boundingBox.min.x - this.dimensionDistance2;\n this.dimensionPatiosPlanLeft.position.set(0, 0, offsetDimensionZ);\n this.repositionDimension(this.dimensionPatiosPlanLeft, DIMENSION_LOCATION.PLAN_LEFT);\n }\n private drawDimensionPatiosFrontBottom(){\n let dimOffsetY = -this.dimensionDistance2;\n this.dimensionPatiosFrontBottom.position.set(0,dimOffsetY,0);\n\n let views = [ { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosPlanBottom.children.forEach( groupDim => {\n groupDim.children.filter(c => c.userData.subtype != GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT).forEach(e => {\n let dim = e.clone();\n dim.userData['views'] = views;\n if(dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n dim.rotation.set(0,Math.PI,0);\n dim.userData['rotation'] = new Vector3(0,0,0);\n dim.userData['position'] = { ...e.userData.position, bottom: true };\n }\n this.dimensionPatiosFrontBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosFrontRight(){\n let views = [ { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS } ];\n\n let _dimensionDistane = this.dimensionDistance2;\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n if(this.APP.sldExistingWidth1.currentValue > 0){\n _dimensionDistane = this.dimensionDistance;\n }\n }\n \n \n let dimOffsetX = this.totalBaySize/2 + this.APP.patiosManager.patiosGroup.position.x + _dimensionDistane;\n let height = UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.MANAGER.columnAndBeamManager.geo_superiorBeam.height + (UI.span + UI.multiSpan) / 2 * this.utils.tan(UI.patiosPitch);\n let dimOffsetY = height/2;\n\n let scaleLength = height/this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-dimOffsetY);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(dimOffsetY);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(height);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0,0,-Math.PI/2) };\n text.position.set(0,200,0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosFrontRight.add(line, cap1, cap2, text, ...this.utils.addArrowForLine(line));\n this.repositionDimension(this.dimensionPatiosFrontRight, DIMENSION_LOCATION.FRONT_RIGHT);\n }\n private drawDimensionPatiosLeftBottom(){\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z - (this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + this.APP.eaveManager.backOverhang - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0));\n \n this.dimensionPatiosLeftBottom.position.set(0,dimOffsetY,dimOffsetZ);\n\n let views = [ \n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n this.dimensionPatiosPlanRight.children.forEach( groupDim => {\n groupDim.children.forEach(e => {\n if(e.userData?.subType == GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT)\n return;\n \n let dim = e.clone();\n dim.userData['views'] = views;\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.rotation.set(0, 0, 0);\n dim.userData['views'] = [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }];\n dim.userData['rotation'] = new Vector3(0, 0, 0);\n dim.userData['position'] = {...e.userData.position, bottom: true}; \n }\n this.dimensionPatiosLeftBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosLeftRight() {\n let dimOffsetY = UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.MANAGER.columnAndBeamManager.geo_superiorBeam.height + (UI.span + UI.multiSpan) / 2 * this.utils.tan(UI.patiosPitch);\n\n let views = [ \n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n let offsetLength = dimOffsetY;\n let scaleLength = offsetLength / this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength/2);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength/2);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }], rotation: new Vector3(-Math.PI / 2, 0, 0) };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosLeftRight.add(line, cap1, cap2, text, ...this.utils.addArrowForLine(line));\n\n this.repositionDimension(this.dimensionPatiosLeftRight, DIMENSION_LOCATION.LEFT_RIGHT);\n }\n private drawDimensionPatiosRightBottom(){\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z - (this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + this.APP.eaveManager.backOverhang - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0));\n \n this.dimensionPatiosRightBottom.position.set(0,dimOffsetY,dimOffsetZ);\n\n let views = [ { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosPlanRight.children.forEach(groupDim => {\n groupDim.children.forEach(e => {\n if(e.userData?.subType == GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT)\n return;\n \n let dim = e.clone();\n dim.userData['views'] = views;\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.userData['rotation'] = new Vector3(0, 0, 0);\n dim.userData['position'] = {...e.userData.position, bottom: true};\n }\n this.dimensionPatiosRightBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosRightLeft(){\n this.dimensionPatiosRightLeft.position.set(0,this.dimensionPatiosLeftRight.position.y,this.dimensionPatiosLeftRight.position.z);\n\n let views = [ { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosLeftRight.children.forEach(e => {\n let dim = e.clone();\n dim.userData['views'] = views;\n if(e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n dim.userData['rotation'] = new Vector3(Math.PI/2,0,0);\n dim.rotation.set(0,Math.PI,0);\n }\n this.dimensionPatiosRightLeft.add(dim);\n });\n\n this.repositionDimension(this.dimensionPatiosRightLeft, DIMENSION_LOCATION.RIGHT_LEFT);\n }\n private drawDimensionPatiosLeftLeft() { \n let dimOffsetY = UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.MANAGER.columnAndBeamManager.geo_superiorBeam.height;\n let dimOffsetZ = this.APP.sldExistingWidth1.currentValue / 2 + 1800;\n\n this.dimensionPatiosLeftLeft.position.set(0, dimOffsetY / 2, -dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n let offsetLength = dimOffsetY;\n let scaleLength = offsetLength / this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength / 2);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength / 2);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }], rotation: new Vector3(Math.PI / 2, 0, 0) };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosLeftLeft.add(line, cap1, cap2, text, ...this.utils.addArrowForLine(line));\n }\n private drawDimensionPatiosRightRight(){\n let dimOffsetY = UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.MANAGER.columnAndBeamManager.geo_superiorBeam.height;\n let dimOffsetZ = this.APP.sldExistingWidth1.currentValue / 2 + 1800;\n \n this.dimensionPatiosRightRight.position.set(0,dimOffsetY/2,-dimOffsetZ);\n\n let views = [ { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosLeftLeft.children.forEach(e => {\n if(e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n let dim = e.clone();\n dim.userData['views'] = views;\n dim.userData['rotation'] = new Vector3(-Math.PI/2,0,0);\n dim.rotation.set(0,Math.PI,0);\n dim.position.set(dim.position.x, -dim.position.y, dim.position.z);\n this.dimensionPatiosRightRight.add(dim);\n }\n });\n }\n\n private addOverhang(groupDim: Object3D, offset: number, overhangValue: number, views: any, side: string, rotateText: number, axis: string, labelType?: string) {\n if (overhangValue == 0){\n let dim = groupDim.children.find(el => el.userData?.groupType == labelType) as Dimension;\n if(dim){\n groupDim.remove(dim)\n }\n return;\n }\n\n let textStr = this.utils.getDimensionValue(overhangValue);\n\n let textRotation = new Vector3();\n let textUserData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, position: { overhang: true }};\n if (axis === \"z\") {\n textRotation.setZ(rotateText);\n textUserData['rotation'] = new Vector3(0, 0, -rotateText / 2);\n textUserData['position']['bottom'] = true;\n }\n else if (axis === \"y\") {\n textRotation.setY(rotateText);\n textUserData['rotation'] = new Vector3(0, -rotateText / 2, 0);\n }\n else if (axis === \"x\") {\n textRotation.setX(rotateText);\n textUserData['rotation'] = new Vector3(-rotateText / 2, 0, 0);\n }\n\n let linePos = new Vector3();\n if (side === \"Left\") {\n linePos.setX(-offset - overhangValue / 2);\n }\n else if (side === \"Right\") {\n linePos.setX(offset + overhangValue / 2);\n }\n let fitZ = 0;\n if(labelType){\n if(axis === 'z'){\n fitZ = 10;\n } else if(axis === 'y'){\n fitZ = -10;\n }\n }\n let options : AddDimensionOptions = {... this.options,\n lineLength: overhangValue,\n container: groupDim,\n views: views,\n linePos: linePos,\n textPos: linePos.clone().setY(linePos.y - 200),\n labelType: labelType ? labelType : null,\n fitZ: fitZ,\n textRotation: textRotation,\n textUserData: textUserData\n }\n let dim = groupDim.children.find(el => el.userData?.groupType == labelType) as Dimension;\n if(!dim){\n new Dimension(options);\n } else {\n dim.update(options)\n }\n }\n private getTextCover(textGeo: TextBufferGeometry, labelType: string, pos: Vector3, fitZ = 0, bayNum?: number){\n let textSize = new Vector3();\n textGeo.boundingBox.getSize(textSize)\n\n let textCover = new Mesh(new BoxBufferGeometry(textSize.x, textSize.y, textSize.z + fitZ))\n textCover.position.set(pos.x , pos.y, pos.z);\n textCover.userData = { type: GEOMETRY_TYPE.TEXT_COVER, labelType };\n if(bayNum !== undefined){\n textCover.userData['bayNum'] = bayNum;\n }\n textCover.material['opacity'] = 0;\n textCover.material['transparent'] = true;\n\n return textCover\n }\n\n public getOutlines(): Printing2DGeometry{\n let lsGeometries: Printing2DLine[] = [];\n let lsText: Print2DText[] = [];\n \n for(let dim of [\n ...this.dimensionPatiosPlanBottom.children,\n ...this.dimensionPatiosPlanRight.children,\n ...this.dimensionPatiosPlanLeft.children,\n ...this.dimensionPatiosFrontBottom.children,\n ...this.dimensionPatiosFrontRight.children,\n ...this.dimensionPatiosLeftBottom.children,\n ...this.dimensionPatiosLeftRight.children,\n ...this.dimensionPatiosRightBottom.children,\n ...this.dimensionPatiosRightLeft.children,\n ...this.dimensionPlanMiddle.children,\n ...this.dimensionPatiosPlanLeftOverHang.children,\n ...this.dimensionPatiosLeftLeft.children,\n ...this.dimensionPatiosRightRight.children,\n ...this.dimensionPlanMidleLeft.children\n\n ]){\n if(!dim.userData.views){\n // console.log(\"TEXT NO VIEW\", dim);\n continue;\n }\n\n if(dim.type == 'Group'){\n dim.children.forEach(el => {\n el.updateMatrix();\n let _clone = el.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(el.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n \n el.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(el.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(el.matrixWorld);\n\n let textRotation = el.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, el, pos, textRotation, points)\n })\n } else{\n dim.updateMatrix();\n let _clone = dim.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(dim.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n \n dim.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(dim.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(dim.matrixWorld);\n\n let textRotation = dim.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, dim, pos, textRotation, points)\n }\n }\n \n return { lines: lsGeometries, texts: lsText };\n }\n private getDimInfo(lsGeometries: Printing2DLine[], lsText: Print2DText[], dim: Object3D, pos: Vector3, textRotation: Vector3, points: Vector3[]){\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && dim.userData.views && dim.userData.value) {\n let box = new Box3().setFromObject(dim.parent);\n let startEnd = this.utils.getStartEndPoint(box);\n let line = new Line3(startEnd[0], startEnd[1]);\n\n let projectPoint = new Vector3();\n line.closestPointToPoint(pos, true, projectPoint);\n let _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(10));\n\n if(dim.userData.position?.bottom){\n if(dim.userData.position?.overhang){\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(180));\n }\n else{\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(120));\n }\n }\n else{\n if(dim.userData.position?.overhang){\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(100));\n }\n }\n\n let p = new Vector3().applyMatrix4(dim.matrixWorld);\n\n lsText.push({\n value: dim.userData.value,\n position: p,\n rotation: textRotation,\n views: dim.userData.views\n });\n\n \n }\n else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_LINE) {\n // this.scene.add(new LineSegments(new Geometry().setFromPoints(points), new LineBasicMaterial({color: new Color('red')})));\n\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_CAP) {\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n else if (dim.userData.type == \"Arrow\") {\n let geo = ((dim as Line).geometry as Geometry).clone();\n geo.applyMatrix4(dim.matrixWorld);\n lsGeometries.push({\n vertices: geo.vertices,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n }\n\n private getGeometryFromBufferGeometry(bufferGeo: BufferGeometry) {\n let points: Vector3[] = [];\n let verties = bufferGeo.getAttribute('position').array;\n for (let i = 0; i < verties.length; i += 3) {\n points.push(new Vector3(verties[i], verties[i + 1], verties[i+2]));\n }\n\n return new Geometry().setFromPoints(points);\n }\n public destroy(): void {\n this.unregisterEvent();\n this.unload();\n }\n\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldFrontOverhang,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sldExistingWallHeight,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sldFlyOverBracketHeight,\n this.APP.sltRoofPitch\n ];\n\n this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n \n //this.APP.sldSpan.addAction(this.eventHandleId);\n //this.APP.sldMultiSpan.addAction(this.eventHandleId);\n //this.APP.sldFrontOverhang.addAction(this.eventHandleId);\n //this.APP.sldExistingWidth1.addAction(this.eventHandleId);\n //this.APP.sldExistingWidth2.addAction(this.eventHandleId);\n //this.APP.sldExistingLength.addAction(this.eventHandleId);\n //this.APP.sldExistingLength2.addAction(this.eventHandleId);\n //this.APP.sltExistingType.addAction(this.eventHandleId);\n //this.APP.sldExistingWallHeight.addAction(this.eventHandleId);\n //this.APP.dialogEditBay.addAction(this.eventHandleId);\n\n //this.APP.sldLeftOverhang.addAction(this.eventHandleId);\n //this.APP.sldRightOverhang.addAction(this.eventHandleId);\n //this.APP.sldBackOverhang.addAction(this.eventHandleId);\n\n //this.APP.sldFlyOverBracketHeight.addAction(this.eventHandleId);\n //this.APP.sltRoofPitch.addAction(this.eventHandleId);\n }\n private unregisterEvent(): void{\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.APP.sldSpan.removeAction(this.eventHandleId);\n //this.APP.sldMultiSpan.removeAction(this.eventHandleId);\n //this.APP.sldFrontOverhang.removeAction(this.eventHandleId);\n //this.APP.sldExistingWidth1.removeAction(this.eventHandleId);\n //this.APP.sldExistingWidth2.removeAction(this.eventHandleId);\n //this.APP.sldExistingLength.removeAction(this.eventHandleId);\n //this.APP.sldExistingLength2.removeAction(this.eventHandleId);\n //this.APP.sltExistingType.removeAction(this.eventHandleId);\n //this.APP.sldExistingWallHeight.removeAction(this.eventHandleId);\n //this.APP.dialogEditBay.removeAction(this.eventHandleId);\n\n //this.APP.sldLeftOverhang.removeAction(this.eventHandleId);\n //this.APP.sldRightOverhang.removeAction(this.eventHandleId);\n //this.APP.sldBackOverhang.removeAction(this.eventHandleId);\n\n //this.APP.sldFlyOverBracketHeight.removeAction(this.eventHandleId);\n //this.APP.sltRoofPitch.removeAction(this.eventHandleId);\n }\n\n\n public uiChanged(preVal: number, curVal: number): void {\n this.draw();\n }\n private calulateBoundingBox(){\n this.APP.scene.remove(...this.APP.scene.children.filter(c => c.userData.type == 'BOX_HELPER_'));\n let patiosBox = this.MANAGER.boundingBox;\n \n let planRightBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosPlanRight);\n planRightBox.min.x = patiosBox.max.x;\n planRightBox.max.x = patiosBox.max.x + 500;\n planRightBox.max.y = 10000;\n \n let planLeftBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosPlanLeft);\n planLeftBox.min.x = patiosBox.min.x - 500;\n planLeftBox.max.x = patiosBox.min.x;\n planLeftBox.max.y = 10000;\n\n let planBottomBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosPlanBottom);\n let planBottomBoxWidth = planBottomBox.max.z - planBottomBox.min.z;\n planBottomBox.min.z = patiosBox.max.z;\n planBottomBox.max.z = patiosBox.max.z + planBottomBoxWidth;\n planBottomBox.max.y = 10000;\n \n let objs = [];\n\n objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && c.userData.position?.width1 || c.userData.position?.width2 || c.userData.position?.length2)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL)\n );\n\n // for(let e of objs){\n // let boxModelHelper = new BoxHelper(e);\n // boxModelHelper.userData = {type: 'BOX_HELPER_'};\n // this.scene.add(boxModelHelper);\n // }\n\n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(planRightBox.intersectsBox(objBox)){\n intersectBox = true;\n planRightBox.translate(new Vector3(100,0,0))\n }\n if(planLeftBox.intersectsBox(objBox)){\n intersectBox = true;\n planLeftBox.translate(new Vector3(-100,0,0))\n }\n if(planBottomBox.intersectsBox(objBox)){\n intersectBox = true;\n planBottomBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(planRightBox);\n // boxHelper.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper);\n\n // let boxHelper2 = new Box3Helper(planLeftBox);\n // boxHelper2.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper2);\n\n // let boxHelper3 = new Box3Helper(planBottomBox);\n // boxHelper3.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper3);\n \n return { left: planLeftBox.min.x, right: planRightBox.max.x, front: planBottomBox.max.z };\n }\n private repositionDimension(dimension, location, extraDistance = 0){\n this.APP.scene.remove(...this.APP.scene.children.filter(c => c.userData.type == location));\n this.APP.scene.remove(...this.APP.scene.children.filter(c => c.userData.type == location));\n\n let patiosBox = this.MANAGER.boundingBox;\n \n if(location == DIMENSION_LOCATION.FRONT_RIGHT){\n let height = UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.MANAGER.columnAndBeamManager.geo_superiorBeam.height + (UI.span + UI.multiSpan) / 2 * this.utils.tan(UI.patiosPitch);\n let dimOffsetY = height/2;\n dimension.position.setY(dimOffsetY);\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.max.x;\n dimBox.max.x = patiosBox.max.x + 500;\n dimBox.max.z = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && !c.userData.position.length1 && !c.userData.position.length2)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && !c.userData.position.length1 && !c.userData.position.length2)\n );\n\n if(this.APP.sldExistingWidth2.currentValue > 0){\n objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && !c.userData.position.length1)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && !c.userData.position.length1)\n );\n }\n \n // for(let e of objs){\n // let boxModelHelper = new BoxHelper(e);\n // boxModelHelper.userData = {type: 'BOX_HELPER_'};\n // this.scene.add(boxModelHelper);\n // }\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(100,0,0))\n }\n }\n \n if(!intersectBox)\n break;\n }\n\n dimension.position.setX(dimBox.max.x + extraDistance);\n }\n else if(location == DIMENSION_LOCATION.PLAN_LEFT){\n // let offsetDimensionZ = this.APP.sldSpan.currentValue\n // + this.APP.sldMultiSpan.currentValue\n // + this.APP.sldFrontOverhang.currentValue\n // - this.APP.sldExistingWidth1.currentValue / 2\n // - this.APP.existingWallManager.geo_existingWallL1.width\n // - this.APP.eaveManager.backOverhang;\n // dimension.position.setZ(offsetDimensionZ);\n\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.min.x - 500;\n dimBox.max.x = patiosBox.min.x;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF || c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(-100,0,0))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setX(dimBox.min.x + extraDistance);\n dimension.translateX(this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + this.APP.eaveManager.backOverhang - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0));\n }\n else if(location == DIMENSION_LOCATION.PLAN_RIGHT){\n let offsetDimensionZ = this.APP.sldSpan.currentValue / 2\n - this.APP.sldExistingWidth1.currentValue / 2\n - this.APP.existingWallManager.geo_existingWallL1.width\n - this.APP.eaveManager.backOverhang;\n dimension.position.setZ(offsetDimensionZ);\n\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.max.x;\n dimBox.max.x = patiosBox.max.x + 500;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL)\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(100,0,0))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setX(dimBox.max.x + extraDistance);\n dimension.translateX(this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + this.APP.eaveManager.backOverhang - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0));\n }\n else if(location == DIMENSION_LOCATION.PLAN_BOTTOM){\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL)\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setZ(dimBox.max.z + extraDistance);\n\n if (this.APP.sltExistingType.currentValue == 1) {\n dimension.position.setX(this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0)/2)\n } else if(this.APP.sltExistingType.currentValue == 2) {\n dimension.position.setX( -(this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0)/2))\n } else {\n dimension.position.setX(0)\n }\n }\n else if(location == DIMENSION_LOCATION.LEFT_RIGHT){\n let dimOffsetY = UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.MANAGER.columnAndBeamManager.geo_superiorBeam.height + (UI.span + UI.multiSpan) / 2 * this.utils.tan(UI.patiosPitch);\n dimension.position.setY(dimOffsetY / 2);\n\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n dimBox.min.x = -10000;\n dimBox.max.x = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && c.userData.position?.left)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && c.userData.position?.left)\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setZ(dimBox.max.z + extraDistance);\n }\n else if(location == DIMENSION_LOCATION.RIGHT_LEFT){\n let dimOffsetY = this.dimensionPatiosLeftRight.position.y;\n dimension.position.setY(dimOffsetY);\n\n let dimBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosLeftRight);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n \n dimBox.min.x = -10000;\n dimBox.max.x = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && c.userData.position?.right)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && c.userData.position?.right)\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setZ(dimBox.max.z + extraDistance);\n }\n }\n}\n","import { HomeComponent as AppComponent } from \"../../containers/home/home.component\";\nimport { ColumnAndBeamManager } from \"./column-and-beam.manager\";\nimport { RoofManager } from \"./roof.manager\";\nimport { Group, Box3, Vector3, Box3Helper } from \"three\";\nimport { GEOMETRY_CATEGORY, CONFIG, GEOMETRY_TYPE } from \"src/app/app.config\";\nimport {\n PatiosManager,\n RafterBeamAndInternalBeamInfo,\n} from \"../patios.manager\";\nimport { Printing2DGeometry } from \"src/app/core/models\";\nimport { DimensionManager } from \"./dimension.manager\";\nimport {\n EXISTING_BUILDING_CONFIG,\n CUTOUT_ENABLE,\n RAKECUT_TYPE,\n BUILDING_SIDE,\n} from \"src/app/app.constants\";\nimport { environment } from \"src/environments/environment\";\n// import { environment } from 'src/environments/environment';\n\nexport class PatiosGableLRFlyOverManager implements PatiosManager {\n public columnAndBeamManager: ColumnAndBeamManager;\n public roofManager: RoofManager;\n private APP: AppComponent;\n public patiosGroup: Group;\n public boundingBox: Box3;\n private updateEventHandle: any;\n public dimensionManager: DimensionManager;\n private controlsToRegisterEvent: Array;\n public ignoreBayEvent: boolean = false;\n private deferHandle;\n private deferTimeout = EXISTING_BUILDING_CONFIG.CUTOUT_DEFFER_TIME_OUT;\n public patiosWidth: number;\n public patiosLength: number;\n public get cutoutCondition(): boolean {\n return (\n [this.APP.sldSpan, this.APP.sldMultiSpan, this.APP.sldFrontOverhang]\n .map((x) => x.currentValue)\n .reduce((a, b) => a + b, 0) -\n this.APP.sldExistingWidth1.currentValue >=\n EXISTING_BUILDING_CONFIG.CUTOUT_ALLOW\n );\n }\n public get rakecutCondition(): boolean {\n this.patiosWidth =\n this.APP.dialogEditBay.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n this.patiosLength =\n this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue;\n\n return false;\n }\n\n public firstLoad = true;\n\n constructor(app: AppComponent) {\n this.APP = app;\n\n this.patiosGroup = new Group();\n this.patiosGroup.userData = {\n isGroup: true,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n app.scene.add(this.patiosGroup);\n\n this.roofManager = new RoofManager(app, this);\n this.columnAndBeamManager = new ColumnAndBeamManager(app, this);\n this.dimensionManager = new DimensionManager(app, this);\n\n this.registerEvents();\n }\n\n load(): Promise {\n return Promise.all([\n this.roofManager.optimize(),\n this.columnAndBeamManager.optimize(),\n this.dimensionManager.optimize(),\n ]).then(() => {\n this.roofManager.load();\n this.columnAndBeamManager.load();\n this.dimensionManager.load();\n });\n }\n loadBracket(bracketQuantity: number): void {\n this.columnAndBeamManager.numberOfBracketsBack = bracketQuantity;\n this.columnAndBeamManager.addPostOrBracketBack();\n }\n loadBracketCutout(bracketQuantity: number): void {\n this.columnAndBeamManager.numberOfBracketCutout = bracketQuantity;\n this.columnAndBeamManager.addPostOrBracketBackCutout();\n }\n loadSideGableBracket(bracketQuantity: number): void {}\n loadRafterBeamAndInternalBeam(info: RafterBeamAndInternalBeamInfo): void {}\n getOutlines(): Printing2DGeometry {\n let dimensionOutline = this.dimensionManager.getOutlines();\n return {\n lines: [\n ...this.columnAndBeamManager.getSection().lines,\n ...this.roofManager.getOutLines().lines,\n ...dimensionOutline.lines,\n ],\n texts: dimensionOutline.texts,\n };\n }\n public destroy(): void {\n this.columnAndBeamManager.destroy();\n this.roofManager.destroy();\n this.dimensionManager.destroy();\n this.unRegisterEvent();\n }\n registerEvents() {\n this.updateEventHandle = this.updateDefer.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sltCutOut,\n this.APP.sldFrontOverhang,\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltColourBarge,\n this.APP.sltColourGutter,\n this.APP.sltColourDownpipe,\n this.APP.sltColourRoof,\n this.APP.sldSpan,\n this.APP.sldExistingWallHeight,\n this.APP.sldEaveWidth,\n this.APP.sldFasciaDepth,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldFlyOverBracketHeight,\n this.APP.sltColourBeam,\n this.APP.sltColourPost,\n this.APP.sltColourBracket,\n this.APP.sltColourFasciaBracket,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n this.APP.sltLeftCutType,\n this.APP.sldLeftCutVertical,\n this.APP.sldLeftCutHorizontal,\n this.APP.sltRightCutType,\n this.APP.sldRightCutVertical,\n this.APP.sldRightCutHorizontal,\n this.APP.sltPanelDirection,\n this.APP.sltPanelDirectionShow,\n this.APP.sltBeamLayoutShow,\n this.APP.sltExistingRoofPitch,\n this.APP.btnTurnOnPanel,\n ];\n this.controlsToRegisterEvent.forEach((c) => {\n c.addAction(this.updateEventHandle);\n });\n }\n unRegisterEvent() {\n this.controlsToRegisterEvent.forEach((c) =>\n c.removeAction(this.updateEventHandle)\n );\n }\n\n updateDefer(previousValue: number, currentValue: number) {\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES ||\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE ||\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE\n ) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => {\n this.update(previousValue, currentValue);\n }, this.deferTimeout);\n } else {\n this.update(previousValue, currentValue);\n }\n }\n\n update(preVal: number, curVal: number) {\n let totalBaySize = this.APP.dialogEditBay.totalBaySize;\n this.patiosWidth =\n totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n this.patiosLength =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue;\n\n let diff = this.APP.sldExistingLength.currentValue - totalBaySize;\n\n let extraWallWidth =\n this.APP.existingWallManager.geo_existingWallW1.width +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n this.patiosGroup.position.setX(\n -diff / 2 -\n this.APP.sldExistingLength2.currentValue -\n extraWallWidth\n );\n } else {\n this.patiosGroup.position.setX(\n -diff / 2 - this.APP.sldExistingLength2.currentValue\n );\n }\n } else {\n this.patiosGroup.position.setX(-diff / 2 - extraWallWidth);\n }\n } else if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n this.patiosGroup.position.setX(\n diff / 2 + this.APP.sldExistingLength2.currentValue + extraWallWidth\n );\n } else {\n this.patiosGroup.position.setX(\n diff / 2 + this.APP.sldExistingLength2.currentValue\n );\n }\n } else {\n this.patiosGroup.position.setX(diff / 2 + extraWallWidth);\n }\n } else {\n this.patiosGroup.position.setX(0);\n }\n\n this.patiosGroup.position.setZ(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n this.APP.eaveManager.backOverhang -\n (this.columnAndBeamManager.geo_bracket?.width || 0)\n );\n\n Promise.all([\n this.roofManager.load(),\n this.columnAndBeamManager.load(),\n ]).then(() => {\n this.boundingBox = this.getPatiosBox();\n this.dimensionManager.draw();\n });\n }\n public getPatiosBox(): Box3 {\n let left =\n -this.APP.dialogEditBay.totalBaySize / 2 -\n this.APP.sldLeftOverhang.currentValue;\n let right =\n this.APP.dialogEditBay.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue;\n let front =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue;\n let back = 0;\n let height = this.APP.sldBuildingHeight.currentValue;\n let extraOffsetZ =\n this.APP.existingWallManager.geo_existingWallL1.width +\n this.APP.eaveManager.backOverhang;\n\n let box = new Box3();\n box = box.expandByPoint(new Vector3(left, 0, front));\n box = box.expandByPoint(new Vector3(right, height, back));\n box.translate(new Vector3(0, 0, -extraOffsetZ));\n\n if (this.APP.sltExistingType.currentValue == 1) {\n let diff =\n (this.APP.sldExistingLength.currentValue -\n this.APP.dialogEditBay.totalBaySize) /\n 2;\n box.translate(new Vector3(-diff, 0, 0));\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n box.translate(new Vector3(this.APP.sldLeftOverhang.currentValue, 0, 0));\n\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n box.translate(\n new Vector3(-this.APP.sldExistingLength2.currentValue, 0, 0)\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 2) {\n let diff =\n (this.APP.sldExistingLength.currentValue -\n this.APP.dialogEditBay.totalBaySize) /\n 2;\n box.translate(new Vector3(diff, 0, 0));\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n box.translate(new Vector3(-this.APP.sldRightOverhang.currentValue, 0, 0));\n\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n box.translate(\n new Vector3(this.APP.sldExistingLength2.currentValue, 0, 0)\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 3) {\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n }\n\n // if (!environment.production) {\n // this.APP.scene.remove(...this.APP.scene.children.filter(o => o.userData.type == 'BOXHELPER'));\n // let boxHelper = new Box3Helper(box);\n // boxHelper.userData = { type: \"BOXHELPER\" };\n // this.APP.scene.add(boxHelper);\n // }\n\n return box;\n }\n}\n","\nimport { Mesh, Vector3, Material, Plane, Group, BufferGeometry, Geometry, BoxBufferGeometry, MeshLambertMaterial, Matrix4, Object3D, LineSegments, Color } from \"three\";\nimport { Util } from \"../utils\";\nimport { GEOMETRY_TYPE, GEOMETRY_CATEGORY } from 'src/app/app.config';\n// import { AppComponent } from \"../../app.component\";\nimport { HomeComponent as AppComponent } from '../../containers/home/home.component';\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport { GeometryInfo, Print2DView, ViewType, LineType, Printing2DLine, Printing2DGeometry } from 'src/app/core/models';\nimport { PatiosGableLRFlyOverManager } from '.';\nimport { CSG } from 'three-csg-ts';\nimport { EXISTING_BUILDING_CONFIG, EXISTING_BUILDING_CONFIG as CONST, BUILDING_SIDE, CUTOUT_ENABLE, PANEL_DIRECTION, RIBSPAN_PANEL_WIDTH, RIBSPAN_BARGE_FIT, FIT_FLYOVER_BRAKET_ON_ROOF } from 'src/app/app.constants';\nimport { UI } from \"../ui\";\n\nexport class RoofManager {\n private scene: Group;\n private APP: AppComponent;\n private MANAGER: PatiosGableLRFlyOverManager;\n private material: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private geo_RoofPanel: GeometryInfo;\n private gutterRakecutLeftInfo: GeometryInfo;\n private gutterRakecutRightInfo: GeometryInfo;\n private geo_roofPanelBargeCappingLeft: GeometryInfo;\n private geo_roofPanelBargeCappingRight: GeometryInfo;\n private geo_roofPanelBargeCappingBack: GeometryInfo;\n private geo_roofPanelBargeCappingFront: GeometryInfo;\n private geo_bargeCutoutLeftHor: GeometryInfo;\n private geo_bargeCutoutRightHor: GeometryInfo;\n private geo_gutterBack: GeometryInfo;\n private geo_gutterCap: GeometryInfo;\n public ridgeGeo: GeometryInfo;\n\n private geo_rakecutLeft: BoxBufferGeometry;\n private geo_rakecutRight: BoxBufferGeometry;\n private mesh_rakecutLeft: Mesh;\n private mesh_rakecutRight: Mesh;\n private csg_rakecutLeft: CSG;\n private csg_rakecutRight: CSG;\n\n private roofGroupFront: Group;\n private roofGroupBack: Group;\n\n private objectSizeChangedHandle: any;\n\n private totalBaySize: number;\n private extraOffsetZ: number;\n \n private eventHandleId: any;\n\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n\n private mesh_CutoutLeft: Mesh;\n private csg_cutoutLeft: CSG;\n private mesh_CutoutRight: Mesh;\n private csg_cutoutRight: CSG;\n private geo_cutoutLeft: BoxBufferGeometry;\n private geo_cutoutRight: BoxBufferGeometry;\n\n private geoCutGutter: BoxBufferGeometry;\n private meshCutGutterLeft1: Mesh;\n private csgCutGutterLeft1: CSG;\n private meshCutGutterLeft2: Mesh;\n private csgCutGutterLeft2: CSG;\n\n private meshCutGutterRight1: Mesh;\n private csgCutGutterRight1: CSG;\n private meshCutGutterRight2: Mesh;\n private csgCutGutterRight2: CSG\n \n private roofWidth: number;\n private roofLength: number;\n\n private deferHandle;\n private deferTimeout = EXISTING_BUILDING_CONFIG.CUTOUT_DEFFER_TIME_OUT;\n\n constructor(app: AppComponent, flyOverManager: PatiosGableLRFlyOverManager) {\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.APP = app;\n this.MANAGER = flyOverManager;\n this.scene = new Group();\n flyOverManager.patiosGroup.add(this.scene);\n this.material = MaterialManager.Instance().ROOF;\n\n this.registerEvent();\n }\n\n\n public optimize(): Promise {\n return new Promise((resolve) => {\n\n this.geo_RoofPanel = this.geometryManager.getRoofRibspanPanel();\n this.geo_RoofPanel.geometry\n .translate(-this.geo_RoofPanel.width / 2, this.geo_RoofPanel.height / 2, -this.geo_RoofPanel.length / 2);\n this.geo_RoofPanel.geometry.rotateY(Math.PI)\n this.utils.changeGeoColor(this.geo_RoofPanel.geometry, new Vector3(0, 1, 0), UI.roofColor.toString());\n\n //Barge capping\n this.geo_roofPanelBargeCappingLeft = this.geometryManager.getRibspanBarge();\n this.geo_roofPanelBargeCappingLeft.geometry\n .rotateY(Math.PI)\n .translate(this.geo_roofPanelBargeCappingLeft.width / 2 - 3, this.geo_roofPanelBargeCappingLeft.height / 2 - RIBSPAN_BARGE_FIT, this.geo_roofPanelBargeCappingLeft.length / 2);\n\n this.geo_roofPanelBargeCappingRight = this.geometryManager.getRibspanBarge();\n this.geo_roofPanelBargeCappingRight.geometry\n .translate(-this.geo_roofPanelBargeCappingRight.width / 2 + 3, this.geo_roofPanelBargeCappingRight.height / 2 - RIBSPAN_BARGE_FIT, this.geo_roofPanelBargeCappingRight.length / 2);\n\n this.geo_roofPanelBargeCappingBack = this.geometryManager.getRibspanBarge();\n this.geo_roofPanelBargeCappingBack.geometry\n .rotateY(Math.PI / 2)\n .translate(this.geo_roofPanelBargeCappingBack.length / 2, this.geo_roofPanelBargeCappingBack.height / 2 - RIBSPAN_BARGE_FIT, this.geo_roofPanelBargeCappingBack.width / 2 - 3);\n\n this.geo_roofPanelBargeCappingFront = this.geometryManager.getRibspanBarge();\n this.geo_roofPanelBargeCappingFront.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.geo_roofPanelBargeCappingFront.length / 2, this.geo_roofPanelBargeCappingFront.height / 2 - RIBSPAN_BARGE_FIT, -this.geo_roofPanelBargeCappingFront.width / 2);\n //Gutter\n this.geo_gutterBack = this.geometryManager.getGutter();\n this.geo_gutterBack.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.geo_gutterBack.length / 2, -20, this.geo_gutterBack.width / 2);\n\n this.gutterRakecutLeftInfo = this.geometryManager.getGutter();\n this.gutterRakecutLeftInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.gutterRakecutLeftInfo.length / 2, -20, this.gutterRakecutLeftInfo.width / 2);\n \n this.gutterRakecutRightInfo = this.geometryManager.getGutter();\n this.gutterRakecutRightInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(-this.gutterRakecutRightInfo.length / 2, -20, this.gutterRakecutRightInfo.width / 2);\n\n //Gutter cap\n this.geo_gutterCap = this.geometryManager.getGuterEndCap();\n this.geo_gutterCap.geometry\n .rotateY(-Math.PI / 2)\n .translate(0, -20, this.geo_gutterCap.length / 2);\n\n this.geo_cutoutLeft = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_cutoutLeft.translate(-500, 500, -500);\n this.geo_cutoutRight = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_cutoutRight.translate(500, 500, -500);\n\n this.geo_rakecutLeft = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_rakecutLeft.translate(-500, 500, 500);\n this.geo_rakecutRight = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_rakecutRight.translate(500, 500, 500);\n\n this.geoCutGutter = new BoxBufferGeometry(500, 10000, 500);\n this.geoCutGutter.translate(0, 0, -250);\n //Barge cutout left\n this.geo_bargeCutoutLeftHor = this.geometryManager.getRibspanBarge();\n this.geo_bargeCutoutLeftHor.geometry\n .rotateY(Math.PI / 2)\n .translate(-this.geo_bargeCutoutLeftHor.length / 2, this.geo_bargeCutoutLeftHor.height / 2 - RIBSPAN_BARGE_FIT, this.geo_bargeCutoutLeftHor.width / 2);\n\n //Barge cutout right\n this.geo_bargeCutoutRightHor = this.geometryManager.getRibspanBarge();\n this.geo_bargeCutoutRightHor.geometry\n .rotateY(Math.PI / 2)\n .translate(this.geo_bargeCutoutRightHor.length / 2, this.geo_bargeCutoutRightHor.height / 2 - RIBSPAN_BARGE_FIT, this.geo_bargeCutoutRightHor.width / 2);\n \n this.ridgeGeo = this.geometryManager.getRibspanRidgeCapping();\n this.ridgeGeo.geometry.translate(- this.ridgeGeo.width / 2 + 1, -this.ridgeGeo.height / 2, 0);\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve) => {\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PATIOS));\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.SHEET_OUTLINE));\n\n //test\n //this.scene.remove(...this.scene.children.filter(x => x.userData.type == 'HELPER'));\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == 'RAKECUT'));\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == 'CUTGUTTER'));\n this.extraOffsetZ = this.APP.existingWallManager.geo_existingWallL1.width + this.APP.eaveManager.backOverhang;\n this.totalBaySize = this.APP.dialogEditBay.totalBaySize;\n\n this.addRoofFront();\n this.addRoofBack();\n this.addCutout();\n\n let offsetLeft = this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue - this.MANAGER.patiosGroup.position.x;\n let offsetRight = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue + this.MANAGER.patiosGroup.position.x;\n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT){\n let offsetX = this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetRight -= offsetX\n offsetLeft += offsetX\n }\n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT){\n let offsetX = this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetLeft += offsetX\n offsetRight += offsetX\n }\n\n let clipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let clipingPlaneRight = new Plane(new Vector3(-1, 0, 0), offsetRight);\n \n\n this.material.clippingPlanes = [clipingPlaneLeft, clipingPlaneRight];\n MaterialManager.Instance().ROOF_BASE.clippingPlanes = [clipingPlaneLeft, clipingPlaneRight];\n let width = this.totalBaySize + this.APP.sldLeftOverhang.currentValue + this.APP.sldRightOverhang.currentValue;\n this.roofWidth = width;\n this.roofLength = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldBackOverhang.currentValue + this.APP.sldFrontOverhang.currentValue;\n let roofSheetingCount = Math.ceil(width / RIBSPAN_PANEL_WIDTH);\n let offsetX = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n\n let panelDirectionOfset = 1;\n if(this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT){\n offsetX = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue - RIBSPAN_PANEL_WIDTH;\n panelDirectionOfset = -1;\n }\n else if(this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.LEFT_TO_RIGHT){\n offsetX = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n }\n\n if (this.APP.sltCutOut.currentValue == 1 && this.APP.sltExistingType.currentValue == 1 && this.MANAGER.cutoutCondition) {\n for (let index = 0; index < roofSheetingCount; index++) {\n let last = index == roofSheetingCount - 1;\n\n this.addRoofSheetingFront(offsetX, []);\n this.addRoofSheetingBack(offsetX, [this.csg_cutoutLeft]);\n\n offsetX += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n }\n else if (this.APP.sltCutOut.currentValue == 1 && this.APP.sltExistingType.currentValue == 2 && this.MANAGER.cutoutCondition) {\n for (let index = 0; index < roofSheetingCount; index++) {\n let last = index == roofSheetingCount - 1;\n\n this.addRoofSheetingFront(offsetX, []);\n this.addRoofSheetingBack(offsetX, [this.csg_cutoutRight]);\n\n offsetX += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n }\n else if (this.APP.sltCutOut.currentValue == 1 && this.APP.sltExistingType.currentValue == 3 && this.MANAGER.cutoutCondition) {\n for (let index = 0; index < roofSheetingCount; index++) {\n let last = index == roofSheetingCount - 1;\n\n this.addRoofSheetingFront(offsetX, []);\n this.addRoofSheetingBack(offsetX, [this.csg_cutoutLeft, this.csg_cutoutRight]);\n\n offsetX += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n }\n else {\n for (let index = 0; index < roofSheetingCount; index++) {\n let last = index == roofSheetingCount - 1;\n\n this.addRoofSheetingFront(offsetX, null);\n this.addRoofSheetingBack(offsetX, null);\n\n offsetX += RIBSPAN_PANEL_WIDTH * panelDirectionOfset;\n }\n }\n\n this.addBargeCappingFront();\n this.addBargeCappingBack();\n\n this.addGutterFront();\n this.addGutterBack();\n\n this.addRidgeCapping();\n\n this.showPanelOutline();\n\n this.scene.visible = UI.showRoof\n\n resolve();\n });\n }\n private totalHeightFromEaveHeightToTopOfExistingRoof(){\n const height = \n this.geometryManager.EAVE.EAVE.height \n + UI.fasciaDepth \n + UI.eaveWidth * this.utils.tan(UI.existingRoofPitch) \n + this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.height / this.utils.cos(UI.existingRoofPitch)\n \n return height\n }\n private totalHeightFromEaveHeightToTopOfFlyoverBraket(){\n const height = this.totalHeightFromEaveHeightToTopOfExistingRoof() + UI.braketHeight - FIT_FLYOVER_BRAKET_ON_ROOF;\n\n return height\n }\n private addCutout() {\n if (this.APP.sltCutOut.currentValue == 1) {\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == 'CUTOUT'));\n\n let offsetX = this.APP.sldExistingLength.currentValue / 2 + this.APP.existingWallManager.geo_existingWallL2.width + 100;\n let offsetY = 0;\n let offsetZ = this.APP.sldExistingWidth1.currentValue / 2 - this.APP.existingWallManager.geo_existingWallL2.width - this.APP.sldBackOverhang.currentValue;\n\n let scaleX = (this.APP.sldExistingLength2.currentValue + 5000) / 1000;\n if (scaleX == 0) scaleX = 1;\n let scaleY = (this.APP.sldExistingWallHeight.currentValue + 5000) / 1000;\n let scaleZ = (this.APP.sldExistingWidth1.currentValue + this.APP.sldBackOverhang.currentValue + 5000) / 1000;\n if (scaleZ == 0) scaleZ = 1;\n\n if (this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3) {\n this.mesh_CutoutLeft = new Mesh(this.geo_cutoutLeft, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.mesh_CutoutLeft.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: 'CUTOUT' };\n\n this.mesh_CutoutLeft.position.set(-offsetX, offsetY, offsetZ);\n this.mesh_CutoutLeft.scale.set(scaleX, scaleY, scaleZ);\n\n // this.APP.scene.add(this.mesh_CutoutLeft);\n\n this.mesh_CutoutLeft.updateMatrix();\n this.csg_cutoutLeft = CSG.fromMesh(this.mesh_CutoutLeft);\n }\n if (this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3) {\n this.mesh_CutoutRight = new Mesh(this.geo_cutoutRight, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.mesh_CutoutRight.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: 'CUTOUT' };\n\n this.mesh_CutoutRight.position.set(offsetX, offsetY, offsetZ);\n this.mesh_CutoutRight.scale.set(scaleX, scaleY, scaleZ);\n\n // this.APP.scene.add(this.mesh_CutoutRight);\n\n this.mesh_CutoutRight.updateMatrix();\n this.csg_cutoutRight = CSG.fromMesh(this.mesh_CutoutRight);\n }\n }\n }\n\n public getOutLines(): Printing2DGeometry {\n\n let objs = this.roofGroupFront.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL\n || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ).concat(\n ...this.roofGroupBack.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n )\n );\n\n let gutterGroupObjs = this.roofGroupFront.children.filter(o => o.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS)\n .concat(...this.roofGroupBack.children.filter(o => o.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS));\n let gutterObjs: Object3D[] = [];\n for(let group of gutterGroupObjs){\n gutterObjs.push(...group.children);\n }\n objs = [...objs, ...gutterObjs];\n\n let lsGeometries: Printing2DLine[] = [];\n\n let offsetLeft = this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue - this.MANAGER.patiosGroup.position.x;\n let offsetRight = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue + this.MANAGER.patiosGroup.position.x;\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetRight -= offsetX;\n offsetLeft += offsetX;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetLeft += offsetX;\n offsetRight += offsetX;\n }\n let roofClipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let roofClipingPlaneRight = new Plane(new Vector3(-1, 0, 0), offsetRight);\n\n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale((o as Mesh), 60);\n\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n outlineGeo.translate(0, 5000, 0);\n\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL) {\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneRight);\n }\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE) {\n outlineGeo = this.utils.clipOutlineBasePanel(outlineGeo, roofClipingPlaneLeft);\n outlineGeo = this.utils.clipOutlineBasePanel(outlineGeo, roofClipingPlaneRight);\n }\n\n let simplifiedGeo = this.simplifyGeo(outlineGeo);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: simplifiedGeo.vertices,\n views: o.userData.views\n });\n }\n\n let ridgeCapping = this.scene.children.find(el => el.userData.type === GEOMETRY_TYPE.RIDGE_CAPPING)\n if(ridgeCapping){\n ridgeCapping.children.forEach(el => {\n this.utils.createOutline(el as Mesh, lsGeometries);\n })\n }\n\n lsGeometries.push({\n objectType: GEOMETRY_TYPE.ROOF_COVER,\n vertices: this.makeRoofPolygon(),\n color: this.utils.convertHexColorToRgb(`#${new Color(UI.panelColor).getHexString()}`),\n views: [\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ]\n });\n\n return { lines: lsGeometries, texts: [] };\n }\n makeRoofPolygon() {\n const polygon = this.utils.getRoofCoverPolygonForLRRoof()\n this.MANAGER.patiosGroup.updateWorldMatrix(true, true)\n return polygon.map(el => (el as Vector3).applyMatrix4(this.MANAGER.patiosGroup.matrixWorld).add(new Vector3(this.roofGroupFront.position.x, 0, - UI.existingWidth1 / 2 - this.extraOffsetZ - UI.overhangBack)))\n }\n public showPanelOutline(){\n if(this.APP.sltPanelDirectionShow.currentValue == false)\n return;\n\n let objs = this.roofGroupFront.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ).concat(\n ...this.roofGroupBack.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n )\n );\n\n let offsetLeft = this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue - this.MANAGER.patiosGroup.position.x;\n let offsetRight = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue + this.MANAGER.patiosGroup.position.x;\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetRight -= offsetX;\n offsetLeft += offsetX;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetLeft += offsetX;\n offsetRight += offsetX;\n }\n let roofClipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let roofClipingPlaneRight = new Plane(new Vector3(-1, 0, 0), offsetRight);\n \n\n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale((o as Mesh), 60);\n\n //let outlineBox = new Box3().setFromBufferAttribute(outlineGeo.getAttribute('position') as Buffer);\n\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n //outlineGeo.translate(0, 1000, 0);\n\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE) {\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneRight);\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n }\n\n var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n line.userData = {type: GEOMETRY_TYPE.SHEET_OUTLINE};\n this.APP.scene.add( line );\n }\n }\n public simplifyGeo(geo: BufferGeometry): Geometry {\n let simplifiedGeo = new Geometry();\n let vertices = geo.getAttribute('position').array;\n for (let i = 0; i < vertices.length; i += 3) {\n simplifiedGeo.vertices.push(new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2]));\n }\n return simplifiedGeo;\n }\n\n public addRoofFront() {\n this.roofGroupFront = null;\n this.roofGroupFront = new Group();\n this.roofGroupFront.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PATIOS };\n\n let offsetY = this.getRoofOffsetY();\n let offsetZ = -(this.APP.sldExistingWidth1.currentValue / 2 + this.extraOffsetZ) + (UI.span + UI.multiSpan) / 2;\n\n this.roofGroupFront.position.setY(offsetY);\n this.roofGroupFront.position.setZ(offsetZ);\n this.roofGroupFront.rotateX(this.utils.degreesToRadians(UI.patiosPitch));\n\n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT){\n let offsetX = this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n this.roofGroupFront.position.setX(- offsetX)\n }\n\n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT){\n let offsetX = this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n this.roofGroupFront.position.setX(offsetX)\n }\n\n this.scene.add(this.roofGroupFront);\n }\n\n public addRoofBack() {\n this.roofGroupBack = null;\n this.roofGroupBack = new Group();\n this.roofGroupBack.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PATIOS };\n\n let offsetY = this.getRoofOffsetY();\n let offsetZ = -(this.APP.sldExistingWidth1.currentValue / 2 + this.extraOffsetZ) + (UI.span + UI.multiSpan) / 2;\n\n this.roofGroupBack.position.setY(offsetY);\n this.roofGroupBack.position.setZ(offsetZ);\n this.roofGroupBack.rotateX(-this.utils.degreesToRadians(UI.patiosPitch));\n\n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT){\n let offsetX = this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n this.roofGroupBack.position.setX(- offsetX)\n }\n\n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT){\n let offsetX = this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n this.roofGroupBack.position.setX(offsetX)\n }\n\n this.scene.add(this.roofGroupBack);\n }\n\n public addRoofSheetingFront(offsetX: number, csgObjs: CSG[]) {\n let mesh = new Mesh(this.geo_RoofPanel.geometry, this.material);\n\n let offsetSheet = 0;\n if (this.APP.sltRoofSheetingType.currentValue == 0 || this.APP.sltRoofSheetingType.currentValue == 1) {\n offsetSheet = 30;\n }\n else {\n offsetSheet = 12;\n }\n\n let scaleZ = ((UI.span + UI.multiSpan) / 2\n + this.APP.sldFrontOverhang.currentValue) / this.utils.cos(this.APP.sltRoofPitch.currentValue) / this.geo_RoofPanel.length;\n\n let offsetY = 0;\n let offsetZ = 0;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setZ(scaleZ);\n mesh.userData = { \n category: GEOMETRY_CATEGORY.PATIOS, \n type: GEOMETRY_TYPE.ROOF_PANEL, \n views: views,\n dir: UI.panelDirection === PANEL_DIRECTION.LEFT_TO_RIGHT ? \"L-R\" : \"R-L\"\n };\n\n let cutoutCondition = this.APP.sltCutOut.currentValue == 1 && this.APP.sltExistingType.currentValue != 0 && this.APP.sldExistingLength2.currentValue > 0;\n if (cutoutCondition) {\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n mesh.position.set(offsetX + this.MANAGER.patiosGroup.position.x, offsetY, offsetZ + this.roofGroupFront.position.z);\n mesh.updateMatrix();\n let meshResult = mesh.clone();\n\n if (cutoutCondition) {\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n }\n }\n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix));\n meshResult.applyMatrix4(matrixBefore);\n\n this.roofGroupFront.add(meshResult);\n }\n else {\n this.roofGroupFront.add(mesh);\n }\n }\n public addRoofSheetingBack(offsetX: number, csgObjs: CSG[]) {\n let mesh = new Mesh(this.geo_RoofPanel.geometry, this.material);\n\n let offsetSheet = 0;\n if (this.APP.sltRoofSheetingType.currentValue == 0 || this.APP.sltRoofSheetingType.currentValue == 1) {\n offsetSheet = 30;\n }\n else {\n offsetSheet = 12;\n }\n\n let scaleZ = ((UI.span + UI.multiSpan) / 2\n + UI.overhangBack) / this.utils.cos(this.APP.sltRoofPitch.currentValue) / this.geo_RoofPanel.length;\n\n let offsetY = 0;\n let offsetZ = - scaleZ * this.geo_RoofPanel.length;;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setZ(scaleZ);\n mesh.userData = { \n category: GEOMETRY_CATEGORY.PATIOS, \n type: GEOMETRY_TYPE.ROOF_PANEL, \n views: views,\n dir: UI.panelDirection === PANEL_DIRECTION.RIGHT_TO_LEFT ? \"L-R\" : \"R-L\"\n };\n\n let cutoutCondition = this.APP.sltCutOut.currentValue == 1 && this.APP.sltExistingType.currentValue != 0 && this.APP.sldExistingLength2.currentValue > 0;\n if (cutoutCondition) {\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n mesh.position.set(offsetX + this.MANAGER.patiosGroup.position.x, offsetY, offsetZ + this.roofGroupBack.position.z);\n mesh.updateMatrix();\n let meshResult = mesh.clone();\n\n if (cutoutCondition) {\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n }\n }\n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix));\n meshResult.applyMatrix4(matrixBefore);\n\n this.roofGroupBack.add(meshResult);\n }\n else {\n this.roofGroupBack.add(mesh);\n }\n }\n\n private addBargeCappingBack() {\n let mesh: Mesh;\n\n let extraWallWidth = this.APP.existingWallManager.geo_existingWallW1.width + EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n let offsetXL1 = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue) + this.APP.sldExistingLength2.currentValue - extraWallWidth;\n let offsetXL2 = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n\n let offsetXR1 = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue - this.APP.sldExistingLength2.currentValue + this.APP.existingWallManager.geo_existingWallW1.width + 100;\n let offsetXR2 = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n\n let offsetZL = 0;\n let offsetZR = 0;\n\n let totalLengthCutOut = UI.existingWidth1 < (UI.span + UI.multiSpan) / 2 ? UI.existingWidth1 : (UI.span + UI.multiSpan) / 2;\n\n let scaleCutoutVer = this.utils.getHypotenuseByCos(totalLengthCutOut + this.geo_roofPanelBargeCappingLeft.width, UI.patiosPitch) / this.geo_roofPanelBargeCappingLeft.length;\n\n let roofBackLength = (UI.span + UI.multiSpan) / 2 + UI.overhangBack;\n let bargeLeftLength = roofBackLength;\n let bargeRightLength = roofBackLength;\n\n let angleLength = roofBackLength / this.utils.cos(UI.patiosPitch);\n\n let offsetY = 0;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n let isShowLeftBarge = true;\n let isShowRightBarge = true;\n\n let scaleXF = roofBackLength / this.geo_roofPanelBargeCappingFront.length;\n let scaleZLeft = this.utils.getHypotenuseByCos(bargeLeftLength, this.APP.sltRoofPitch.currentValue) / this.geo_roofPanelBargeCappingLeft.length;\n let scaleZRight = this.utils.getHypotenuseByCos(bargeRightLength, this.APP.sltRoofPitch.currentValue) / this.geo_roofPanelBargeCappingRight.length;\n\n let fitScale = this.geo_roofPanelBargeCappingLeft.height * this.utils.tan(UI.patiosPitch) / this.geo_roofPanelBargeCappingLeft.length;\n\n //left\n if(isShowLeftBarge){\n mesh = new Mesh(this.geo_roofPanelBargeCappingLeft.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXL2, offsetY, offsetZL - this.geo_roofPanelBargeCappingLeft.length * scaleZLeft);\n mesh.scale.setZ(scaleZLeft + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupBack.add(mesh);\n }\n\n //right\n if(isShowRightBarge){\n mesh = new Mesh(this.geo_roofPanelBargeCappingRight.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXR2, offsetY, offsetZR - this.geo_roofPanelBargeCappingRight.length * scaleZRight);\n mesh.scale.setZ(scaleZRight + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupBack.add(mesh);\n }\n }\n\n private addBargeCappingFront() {\n let mesh: Mesh;\n let extraWallWidth = this.APP.existingWallManager.geo_existingWallW1.width + EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n\n let offsetXL2 = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n let offsetXR2 = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n\n let offsetZL = 0;\n let offsetZR = 0;\n\n let roofFrontLength = (UI.span + UI.multiSpan) / 2 + UI.overhangFront;\n let offsetY = 0;\n let bargeLeftLength = roofFrontLength;\n let bargeRightLength = roofFrontLength;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n let scaleZLeft = this.utils.getHypotenuseByCos(bargeLeftLength, this.APP.sltRoofPitch.currentValue) / this.geo_roofPanelBargeCappingLeft.length;\n let scaleZRight = this.utils.getHypotenuseByCos(bargeRightLength, this.APP.sltRoofPitch.currentValue) / this.geo_roofPanelBargeCappingLeft.length;\n\n\n let fitScale = this.geo_roofPanelBargeCappingLeft.height * this.utils.tan(UI.patiosPitch) / this.geo_roofPanelBargeCappingLeft.length;\n //left\n mesh = new Mesh(this.geo_roofPanelBargeCappingLeft.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXL2, offsetY, offsetZL - this.geo_roofPanelBargeCappingLeft.height * this.utils.tan(UI.patiosPitch));\n mesh.scale.setZ(scaleZLeft + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupFront.add(mesh);\n\n //right\n mesh = new Mesh(this.geo_roofPanelBargeCappingRight.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXR2, offsetY, offsetZR - this.geo_roofPanelBargeCappingLeft.height * this.utils.tan(UI.patiosPitch));\n mesh.scale.setZ(scaleZRight + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupFront.add(mesh);\n\n // //back\n // mesh = new Mesh(this.geo_roofPanelBargeCappingBack.geometry, MaterialManager.Instance().BARGE);\n // mesh.position.setX(offsetXB);\n // mesh.scale.setX(bargeBackLength/this.geo_roofPanelBargeCappingBack.length);\n // mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n // this.roofGroupFront.add(mesh);\n }\n public addGutterFront() {\n\n let offsetXL = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n let offsetY = 0;\n let offsetZ = ((UI.span + UI.multiSpan) / 2 + UI.overhangFront\n - CONST.GUTTER_ROOF_OFFSET_Z) / this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n let gutterLength = this.roofWidth;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n let gutterGroup = this.utils.createGutterGroup(this.geo_gutterBack, this.geo_gutterCap,\n gutterLength, new Vector3(offsetXL, offsetY, offsetZ), new Vector3(-this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue), 0, 0),\n views, 1, true, true);\n this.roofGroupFront.add(gutterGroup); \n }\n\n public addGutterBack() {\n let offsetX = (this.totalBaySize / 2 + UI.overhangRight);\n let offsetY = 0;\n let gutterLength = (this.totalBaySize + this.APP.sldLeftOverhang.currentValue + this.APP.sldRightOverhang.currentValue);\n let extraWallWidth = this.APP.existingWallManager.geo_existingWallW1.width + EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n\n //cutout\n if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.MANAGER.cutoutCondition) {\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n if(this.APP.sldExistingWidth2.currentValue > 0){\n gutterLength -= this.APP.sldExistingLength2.currentValue;\n }\n else{\n gutterLength -= (this.APP.sldExistingLength2.currentValue - extraWallWidth);\n }\n gutterLength -= this.APP.sldLeftOverhang.currentValue;\n }\n else if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n if(this.APP.sldExistingWidth2.currentValue > 0){\n offsetX -= this.APP.sldExistingLength2.currentValue;\n gutterLength -= this.APP.sldExistingLength2.currentValue;\n }\n else{\n offsetX -= (this.APP.sldExistingLength2.currentValue - extraWallWidth);\n gutterLength -= (this.APP.sldExistingLength2.currentValue - extraWallWidth);\n }\n offsetX -= this.APP.sldRightOverhang.currentValue;\n gutterLength -= this.APP.sldRightOverhang.currentValue;\n }\n else if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n offsetX -= ((this.totalBaySize - (this.APP.sldExistingLength.currentValue + this.APP.existingWallManager.geo_existingWallW1.width * 2)) / 2 - EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK);\n gutterLength = this.APP.sldExistingLength.currentValue + extraWallWidth *2;\n }\n }\n\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n let offsetZ = -((UI.span + UI.multiSpan) / 2 + UI.overhangBack\n - CONST.GUTTER_ROOF_OFFSET_Z) / this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n //back\n let gutterGroup = this.utils.createGutterGroup(this.geo_gutterBack, this.geo_gutterCap, gutterLength,\n new Vector3(offsetX, offsetY, offsetZ), new Vector3(this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue), Math.PI, 0), views, 1, true, true);\n\n this.roofGroupBack.add(gutterGroup);\n }\n\n public addRidgeCapping(){\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.RIDGE_CAPPING));\n\n let ridgeFront = this.createRidgeCapping();\n ridgeFront.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.RIDGE_CAPPING};\n const height = this.getRoofOffsetY() + this.geo_RoofPanel.height / this.utils.cos(this.APP.sltRoofPitch.currentValue);\n \n let offsetX = (UI.overhangRight - UI.overhangLeft) / 2\n if(UI.existingType == BUILDING_SIDE.RIGHT){\n offsetX += - this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width - 100 + ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n }\n if(UI.existingType == BUILDING_SIDE.LEFT){\n offsetX += this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n }\n \n const ridgeLength = this.totalBaySize + this.APP.sldLeftOverhang.currentValue + this.APP.sldRightOverhang.currentValue;\n ridgeFront.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.RIDGE_CAPPING, length: ridgeLength, views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }]};\n ridgeFront.scale.setZ(ridgeLength / this.ridgeGeo.length);\n ridgeFront.rotation.set(0, Math.PI / 2, 0)\n ridgeFront.position.set( offsetX, height, ( UI.span + UI.multiSpan ) / 2 - UI.existingWidth1 / 2 - this.extraOffsetZ);\n this.scene.add(ridgeFront)\n }\n public createRidgeCapping(){\n let leftCap = new Mesh(this.ridgeGeo.geometry, MaterialManager.Instance().RIDGE_CAPPING);\n let rightCap = new Mesh(this.ridgeGeo.geometry, MaterialManager.Instance().RIDGE_CAPPING);\n \n rightCap.rotateY(Math.PI)\n \n leftCap.rotateZ(this.utils.degreesToRadians(UI.patiosPitch))\n rightCap.rotateZ(this.utils.degreesToRadians(UI.patiosPitch))\n \n leftCap.userData = {views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }]}\n rightCap.userData = {views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }]}\n \n return new Group().add(leftCap, rightCap)\n }\n\n public getRoofOffsetY() {\n return UI.eaveHeight\n + this.totalHeightFromEaveHeightToTopOfFlyoverBraket()\n + this.geometryManager.getBeam().height\n + this.utils.tan(UI.patiosPitch) * ((UI.span + UI.multiSpan) / 2);\n }\n public destroy(): void {\n this.unregisterEvent();\n }\n public onColorChanged() {\n if(this.utils && this.geo_RoofPanel.geometry){\n this.utils.changeGeoColor(this.geo_RoofPanel.geometry, new Vector3(0, 1, 0), UI.roofColor.toString());\n }\n }\n private registerEvent(): void {\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.eventHandleId = this.onColorChanged.bind(this);\n this.controlsToRegisterEvent = [\n this.APP.sltColourRoof\n ];\n this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n\n this.controlsToRegisterEvent2 = [\n this.APP.sltRoofSheetingType,\n this.APP.sltRoofThickness,\n this.APP.sltBargeType,\n this.APP.sltDripBarge,\n this.APP.sltGutterType,\n this.APP.sltRoofPitch\n ];\n this.controlsToRegisterEvent2.forEach(c => c.addAction(this.objectSizeChangedHandle));\n }\n private unregisterEvent(): void {\n this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach(c => c.removeAction(this.objectSizeChangedHandle));\n this.controlsToRegisterEvent2 = undefined;\n }\n private objectSizeChanged() {\n this.optimize().then(() => { this.load() });\n }\n public uiChanged(): void {\n this.load();\n }\n uiCHangedDefer() {\n if (this.APP.sltCutOut.currentValue == 1) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => { this.load() }, this.deferTimeout);\n }\n else {\n this.load();\n }\n }\n}\n","import {\n BufferGeometry,\n Vector3,\n PlaneBufferGeometry,\n BoxBufferGeometry,\n} from \"three\";\nimport { environment as env } from \"src/environments/environment\";\nimport { STLLoader } from \"three/examples/jsm/loaders/STLLoader\";\nimport { Util } from \"./utils\";\nimport { GeometryInfo } from \"src/app/core/models\";\nimport { HomeComponent } from \"src/app-ribspan/containers/home/home.component\";\nimport { EXISTING_BUILDING_CONFIG } from \"src/app/app.constants\";\nimport { UI } from \"./ui\";\nimport _ from \"lodash\"\n\nexport class GeometryManager {\n APP: HomeComponent;\n private constructor() {\n this.utils = new Util();\n this.loader = new STLLoader();\n }\n public init(app: HomeComponent) {\n this.APP = app;\n }\n private static instance: GeometryManager;\n private loader: STLLoader;\n\n private utils: Util;\n\n public EXISTING_ROOF: {\n EXISTING_ROOF: GeometryInfo;\n } = {\n EXISTING_ROOF: new GeometryInfo(),\n };\n\n public EXISTING_WALL: {\n EXISTING_WALL: GeometryInfo;\n } = {\n EXISTING_WALL: new GeometryInfo(),\n };\n\n public FASCIA: {\n FASCIA: GeometryInfo;\n } = {\n FASCIA: new GeometryInfo(),\n };\n public EAVE: {\n EAVE: GeometryInfo;\n } = {\n EAVE: new GeometryInfo(),\n };\n\n public SUPERIOR_BEAM: {\n S65x110: GeometryInfo;\n S65x110_JOINT: GeometryInfo;\n S65x110_ENDCAP: GeometryInfo;\n S65x160: GeometryInfo;\n S65x160_JOINT: GeometryInfo;\n S65x160_ENDCAP: GeometryInfo;\n S65x210: GeometryInfo;\n S65x210_JOINT: GeometryInfo;\n S65x210_ENDCAP: GeometryInfo;\n S65x260: GeometryInfo;\n S65x260_JOINT: GeometryInfo;\n S65x260_ENDCAP: GeometryInfo;\n } = {\n S65x110: new GeometryInfo(),\n S65x110_JOINT: new GeometryInfo(),\n S65x110_ENDCAP: new GeometryInfo(),\n S65x160: new GeometryInfo(),\n S65x160_JOINT: new GeometryInfo(),\n S65x160_ENDCAP: new GeometryInfo(),\n S65x210: new GeometryInfo(),\n S65x210_JOINT: new GeometryInfo(),\n S65x210_ENDCAP: new GeometryInfo(),\n S65x260: new GeometryInfo(),\n S65x260_JOINT: new GeometryInfo(),\n S65x260_ENDCAP: new GeometryInfo(),\n };\n public TIMBER_BEAM: {\n S140x45: GeometryInfo;\n S190x45: GeometryInfo;\n S150x50: GeometryInfo;\n S200x50: GeometryInfo;\n S150x75: GeometryInfo;\n S200x75: GeometryInfo;\n S250x75: GeometryInfo;\n S150x50_ENDCAP: GeometryInfo;\n } = {\n S140x45: new GeometryInfo(),\n S190x45: new GeometryInfo(),\n S150x50: new GeometryInfo(),\n S200x50: new GeometryInfo(),\n S150x75: new GeometryInfo(),\n S200x75: new GeometryInfo(),\n S250x75: new GeometryInfo(),\n S150x50_ENDCAP: new GeometryInfo(),\n };\n\n public RidgeCapping: {\n // S_Ridge_100: GeometryInfo;\n // S_Ridge_125: GeometryInfo;\n // S_Ridge_150: GeometryInfo;\n // S_Ridge_200: GeometryInfo;\n // S_Ridge_225: GeometryInfo;\n // S_Ridge_250: GeometryInfo;\n S_Ridge_Custom: GeometryInfo;\n } = {\n S_Ridge_Custom: new GeometryInfo()\n };\n\n public SUPERIOR_POST: {\n S65x65: GeometryInfo;\n S90x90: GeometryInfo;\n TIMBER: GeometryInfo; // 150\n CENTER_POST_TIMBER: GeometryInfo;\n } = {\n S65x65: new GeometryInfo(),\n S90x90: new GeometryInfo(),\n TIMBER: new GeometryInfo(),\n CENTER_POST_TIMBER: new GeometryInfo(),\n };\n public FLY_OVER_BRACKET: {\n S65x3: GeometryInfo;\n } = {\n S65x3: new GeometryInfo(),\n };\n public RIBSPAN: {\n RIBSPAN_PANEL: GeometryInfo;\n RIBSPAN_BARGE: GeometryInfo;\n RIBSPAN_RECEIVER_CHANNEL: GeometryInfo;\n RIBSPAN_RIDGE_CAPPING: GeometryInfo;\n } = {\n RIBSPAN_PANEL: new GeometryInfo(),\n RIBSPAN_BARGE: new GeometryInfo(),\n RIBSPAN_RECEIVER_CHANNEL: new GeometryInfo(),\n RIBSPAN_RIDGE_CAPPING: new GeometryInfo()\n };\n public MONO_PANEL: {\n S50MM: GeometryInfo;\n S50MM_BASE: GeometryInfo;\n S75MM: GeometryInfo;\n S75MM_BASE: GeometryInfo;\n S100MM: GeometryInfo;\n S100MM_BASE: GeometryInfo;\n S125MM: GeometryInfo;\n S125MM_BASE: GeometryInfo;\n S150MM: GeometryInfo;\n S150MM_BASE: GeometryInfo;\n } = {\n S50MM: new GeometryInfo(),\n S50MM_BASE: new GeometryInfo(),\n S75MM: new GeometryInfo(),\n S75MM_BASE: new GeometryInfo(),\n S100MM: new GeometryInfo(),\n S100MM_BASE: new GeometryInfo(),\n S125MM: new GeometryInfo(),\n S125MM_BASE: new GeometryInfo(),\n S150MM: new GeometryInfo(),\n S150MM_BASE: new GeometryInfo(),\n };\n\n public CORRO_PANEL: {\n S50MM: GeometryInfo;\n S50MM_BASE: GeometryInfo;\n S75MM: GeometryInfo;\n S75MM_BASE: GeometryInfo;\n S100MM: GeometryInfo;\n S100MM_BASE: GeometryInfo;\n S125MM: GeometryInfo;\n S125MM_BASE: GeometryInfo;\n S150MM: GeometryInfo;\n S150MM_BASE: GeometryInfo;\n } = {\n S50MM: new GeometryInfo(),\n S50MM_BASE: new GeometryInfo(),\n S75MM: new GeometryInfo(),\n S75MM_BASE: new GeometryInfo(),\n S100MM: new GeometryInfo(),\n S100MM_BASE: new GeometryInfo(),\n S125MM: new GeometryInfo(),\n S125MM_BASE: new GeometryInfo(),\n S150MM: new GeometryInfo(),\n S150MM_BASE: new GeometryInfo(),\n };\n\n public UPSTAND_BRAKET = {\n BRAKET_1: new GeometryInfo(),\n BRAKET_2: new GeometryInfo(),\n };\n\n public MONO_PANEL_BARGE_CAPPING: {\n S50MM: GeometryInfo;\n S75MM: GeometryInfo;\n S100MM: GeometryInfo;\n S125MM: GeometryInfo;\n S150MM: GeometryInfo;\n } = {\n S50MM: new GeometryInfo(),\n S75MM: new GeometryInfo(),\n S100MM: new GeometryInfo(),\n S125MM: new GeometryInfo(),\n S150MM: new GeometryInfo(),\n };\n\n public CORRO_PANEL_BARGE_CAPPING: {\n S50MM: GeometryInfo;\n S75MM: GeometryInfo;\n S100MM: GeometryInfo;\n S125MM: GeometryInfo;\n S150MM: GeometryInfo;\n } = {\n S50MM: new GeometryInfo(),\n S75MM: new GeometryInfo(),\n S100MM: new GeometryInfo(),\n S125MM: new GeometryInfo(),\n S150MM: new GeometryInfo(),\n };\n\n public MONO_PANEL_DRIP_BARGE_CAPPING: {\n S50MM: GeometryInfo;\n S75MM: GeometryInfo;\n S100MM: GeometryInfo;\n S125MM: GeometryInfo;\n S150MM: GeometryInfo;\n } = {\n S50MM: new GeometryInfo(),\n S75MM: new GeometryInfo(),\n S100MM: new GeometryInfo(),\n S125MM: new GeometryInfo(),\n S150MM: new GeometryInfo(),\n };\n\n public CORRO_PANEL_DRIP_BARGE_CAPPING: {\n S50MM: GeometryInfo;\n S75MM: GeometryInfo;\n S100MM: GeometryInfo;\n S125MM: GeometryInfo;\n S150MM: GeometryInfo;\n } = {\n S50MM: new GeometryInfo(),\n S75MM: new GeometryInfo(),\n S100MM: new GeometryInfo(),\n S125MM: new GeometryInfo(),\n S150MM: new GeometryInfo(),\n };\n\n public MONO_PANEL_RECIEVER_CHANEL: {\n S50MM: GeometryInfo;\n S75MM: GeometryInfo;\n S100MM: GeometryInfo;\n S125MM: GeometryInfo;\n S150MM: GeometryInfo;\n } = {\n S50MM: new GeometryInfo(),\n S75MM: new GeometryInfo(),\n S100MM: new GeometryInfo(),\n S125MM: new GeometryInfo(),\n S150MM: new GeometryInfo(),\n };\n public CORRO_PANEL_RECIEVER_CHANEL: {\n S50MM: GeometryInfo;\n S75MM: GeometryInfo;\n S100MM: GeometryInfo;\n S125MM: GeometryInfo;\n S150MM: GeometryInfo;\n } = {\n S50MM: new GeometryInfo(),\n S75MM: new GeometryInfo(),\n S100MM: new GeometryInfo(),\n S125MM: new GeometryInfo(),\n S150MM: new GeometryInfo(),\n };\n\n public GUTTER: {\n SQUARE_LINE: GeometryInfo;\n SQUARE_LINE_END_CAP: GeometryInfo;\n QUAD_150: GeometryInfo;\n QUAD_150_END_CAP: GeometryInfo;\n } = {\n SQUARE_LINE: new GeometryInfo(),\n SQUARE_LINE_END_CAP: new GeometryInfo(),\n QUAD_150: new GeometryInfo(),\n QUAD_150_END_CAP: new GeometryInfo(),\n };\n public DOWNPIPE: {\n PIPE_S90MM: GeometryInfo;\n L_S90MM: GeometryInfo;\n } = {\n PIPE_S90MM: undefined,\n L_S90MM: undefined,\n };\n\n public Z_FlASHING: {\n S50: GeometryInfo;\n S75: GeometryInfo;\n S100: GeometryInfo;\n S125: GeometryInfo;\n S150: GeometryInfo;\n } = {\n S50: new GeometryInfo(),\n S75: new GeometryInfo(),\n S100: new GeometryInfo(),\n S125: new GeometryInfo(),\n S150: new GeometryInfo(),\n };\n\n public DIMENSION = {\n LINE: new GeometryInfo(new PlaneBufferGeometry(1000, 15), 15, 1, 1000),\n CAP: new GeometryInfo(new PlaneBufferGeometry(15, 200), 200, 1, 15),\n };\n\n public UI_CONTROL = {\n LINE: new GeometryInfo(new PlaneBufferGeometry(1000, 30), 15, 1, 1000),\n };\n\n static Instance(): GeometryManager {\n if (!GeometryManager.instance) {\n GeometryManager.instance = new GeometryManager();\n }\n return GeometryManager.instance;\n }\n\n public loadAll(): Promise {\n return Promise.all([\n this.loadExistingRoof(),\n this.loadExistingWall(),\n this.loadFascia(),\n this.loadEave(),\n this.loadSuperiorBeam(),\n this.loadBeamJoint(),\n this.loadRidgeCapping(),\n this.loadSuperiorPost(),\n this.loadFlyOverBracket(),\n this.loadMonoPanel(),\n this.loadRibspanPanel(),\n this.loadRibspanBarge(),\n this.loadRibspanRidgeCapping(),\n this.loadRibspanReceiverChannel(),\n this.loadCorroPanel(),\n this.loadMonoPanelBargeCapping(),\n this.loadCorroPanelBargeCapping(),\n this.loadMonoPanelDripBargeCapping(),\n this.loadCorroPanelDripBargeCapping(),\n this.loadGutter(),\n this.loadMonoRecieverChanel(),\n this.loadCorroRecieverChanel(),\n this.loadDownPipe(),\n this.loadZFlashing(),\n this.loadBraket(),\n ]);\n }\n\n private downloadFile(fileName: string): Promise {\n return new Promise((resolve, reject) => {\n this.loader.load(\n env.modelBaseUrl + \"/assets/models/\" + fileName,\n (geometry) => {\n geometry.center();\n resolve(geometry);\n }\n );\n });\n }\n private downloadFileEx(\n fileName: string,\n vWidth: Vector3,\n vHeight: Vector3,\n vLength: Vector3,\n name: string = \"\"\n ): Promise {\n return new Promise((resolve, reject) => {\n this.loader.load(\n env.modelBaseUrl + \"/assets/models/\" + fileName,\n (geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(geometry, vWidth);\n const height = this.utils.getGeometryLength(geometry, vHeight);\n const length = this.utils.getGeometryLength(geometry, vLength);\n let object = new GeometryInfo(geometry, width, height, length, name);\n resolve(object);\n }\n );\n });\n }\n public loadExistingRoof(): Promise {\n // return this.downloadFile('existing_roof_left.stl')\n // .then((geometry) => {\n // geometry.center();\n // let width = this.utils.getGeometryLength(geometry, new Vector3(1,0,0));\n // let height = this.utils.getGeometryLength(geometry, new Vector3(0,1,0));\n // let length = this.utils.getGeometryLength(geometry, new Vector3(0,0,1));\n // this.EXISTING_ROOF.LEFT = new GeometryInfo(geometry, width, height, length);\n // return this.downloadFile('existing_roof_right.stl');\n // })\n // .then((geometry) => {\n // geometry.center();\n // let width = this.utils.getGeometryLength(geometry, new Vector3(0,0,1));\n // let height = this.utils.getGeometryLength(geometry, new Vector3(0,1,0));\n // let length = this.utils.getGeometryLength(geometry, new Vector3(1,0,0));\n // this.EXISTING_ROOF.RIGHT = new GeometryInfo(geometry, width, height, length);\n // })\n\n // return this.downloadFile('existing_roof.stl')\n // .then((geometry) => {\n // geometry.center();\n // let width = this.utils.getGeometryLength(geometry, new Vector3(1,0,0));\n // let height = this.utils.getGeometryLength(geometry, new Vector3(0,1,0));\n // let length = this.utils.getGeometryLength(geometry, new Vector3(0,0,1));\n // this.EXISTING_ROOF.LEFT = new GeometryInfo(geometry, width, height, length);\n // this.EXISTING_ROOF.RIGHT = new GeometryInfo(geometry.clone().rotateY(-Math.PI/2), width, height, length);\n // //return this.downloadFile('existing_roof_right.stl');\n // })\n\n return new Promise((resolve, reject) => {\n const geometry = new BoxBufferGeometry(3000, 20, 1800);\n\n this.EXISTING_ROOF.EXISTING_ROOF = new GeometryInfo(\n geometry,\n 1800,\n 20,\n 3000\n );\n // this.EXISTING_ROOF.RIGHT = new GeometryInfo(geometry, 1800, 20, 3000);\n resolve(geometry);\n });\n }\n public loadExistingWall(): Promise {\n // return this.downloadFile('eave_wall.stl')\n // .then((geometry) => {\n // geometry.center();\n\n // let width = this.utils.getGeometryLength(geometry, new Vector3(1,0,0));\n // let height = this.utils.getGeometryLength(geometry, new Vector3(0,1,0));\n // let length = this.utils.getGeometryLength(geometry, new Vector3(0,0,1));\n // this.EXISTING_WALL.EXISTING_WALL = new GeometryInfo(geometry, width, height, length);\n // })\n return new Promise((resolve, reject) => {\n const geometry = new BoxBufferGeometry(1000, 1000, 190);\n this.EXISTING_WALL.EXISTING_WALL = new GeometryInfo(\n geometry,\n 190,\n 1000,\n 1000\n );\n resolve(geometry);\n });\n }\n public loadEave(): Promise {\n return this.downloadFile(\"fascia_width.stl\").then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.EAVE.EAVE = new GeometryInfo(geometry, width, height, length);\n });\n }\n public loadFascia(): Promise {\n return this.downloadFile(\"fascia_depth.stl\").then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.FASCIA.FASCIA = new GeometryInfo(geometry, width, height, length);\n });\n }\n public loadRidgeCapping(): Promise {\n let vW = new Vector3(1, 0, 0);\n let vH = new Vector3(0, 1, 0);\n let vL = new Vector3(0, 0, 1);\n return Promise.all([\n // this.downloadFileEx(\"Ridge Capping 10 Deg (3D).stl\", vW, vH, vL).then(\n // (g) => {\n // this.RidgeCapping.S_Ridge_100 = g;\n // }\n // ),\n // this.downloadFileEx(\"Ridge Capping 12.5 Deg (3D).stl\", vW, vH, vL).then(\n // (g) => {\n // this.RidgeCapping.S_Ridge_125 = g;\n // }\n // ),\n // this.downloadFileEx(\"Ridge Capping 15 Deg (3D).stl\", vW, vH, vL).then(\n // (g) => {\n // this.RidgeCapping.S_Ridge_150 = g;\n // }\n // ),\n // this.downloadFileEx(\"Ridge Capping 20 Deg (3D).stl\", vW, vH, vL).then(\n // (g) => {\n // this.RidgeCapping.S_Ridge_200 = g;\n // }\n // ),\n // this.downloadFileEx(\"Ridge Capping 22.5 Deg (3D).stl\", vW, vH, vL).then(\n // (g) => {\n // this.RidgeCapping.S_Ridge_225 = g;\n // }\n // ),\n // this.downloadFileEx(\"Ridge Capping 25 Deg (3D).stl\", vW, vH, vL).then(\n // (g) => {\n // this.RidgeCapping.S_Ridge_250 = g;\n // }\n // ),\n this.downloadFileEx(\"Ridge Capping (Customs).stl\", vW, vH, vL).then(\n (g) => {\n this.RidgeCapping.S_Ridge_Custom = g;\n }\n ),\n ]);\n }\n public loadBeamJoint(): Promise {\n let geo = new BoxBufferGeometry(60, 105, 500);\n this.SUPERIOR_BEAM.S65x110_JOINT = new GeometryInfo(geo, 60, 105, 500, \"BSIJ110\");\n let geo1 = new BoxBufferGeometry(60, 155, 500);\n this.SUPERIOR_BEAM.S65x160_JOINT = new GeometryInfo(geo1, 60, 155, 500, \"BSIJ160\");\n let geo2 = new BoxBufferGeometry(60, 205, 500);\n this.SUPERIOR_BEAM.S65x210_JOINT = new GeometryInfo(geo2, 60, 205, 500, \"BSIJ210\");\n let geo3 = new BoxBufferGeometry(60, 255, 500);\n this.SUPERIOR_BEAM.S65x260_JOINT = new GeometryInfo(geo3, 60, 255, 500, \"BSIJ260\");\n\n return Promise.resolve()\n }\n public loadSuperiorBeam(): Promise {\n let geo = new BoxBufferGeometry(45, 140, 1000);\n this.TIMBER_BEAM.S140x45 = new GeometryInfo(geo, 45, 140, 1000, \"S45x140\");\n let geo1 = new BoxBufferGeometry(90, 140, 1000);\n this.TIMBER_BEAM.S190x45 = new GeometryInfo(geo1, 90, 140, 1000, \"S45x190\");\n let geo2 = new BoxBufferGeometry(50, 150, 1000);\n this.TIMBER_BEAM.S150x50 = new GeometryInfo(geo2, 50, 150, 1000, \"S50x150\");\n let geo3 = new BoxBufferGeometry(50, 200, 1000);\n this.TIMBER_BEAM.S200x50 = new GeometryInfo(geo3, 50, 200, 1000, \"S50x200\");\n let geo4 = new BoxBufferGeometry(75, 150, 1000);\n this.TIMBER_BEAM.S150x75 = new GeometryInfo(geo4, 75, 150, 1000, \"S75x150\");\n let geo5 = new BoxBufferGeometry(75, 200, 1000);\n this.TIMBER_BEAM.S200x75 = new GeometryInfo(geo5, 75, 200, 1000, \"S75x200\");\n let geo6 = new BoxBufferGeometry(75, 250, 1000);\n this.TIMBER_BEAM.S250x75 = new GeometryInfo(geo6, 75, 250, 1000, \"S75x250\");\n let geoEndCap = new BoxBufferGeometry(50, 150, 50);\n this.TIMBER_BEAM.S150x50_ENDCAP = new GeometryInfo(geoEndCap, 50, 150, 50, \"S150x50_ENDCAP\");\n\n let vW = new Vector3(1, 0, 0);\n let vH = new Vector3(0, 1, 0);\n let vL = new Vector3(0, 0, 1);\n return Promise.all([\n this.downloadFileEx(\"Superior Beam 65x110 (3D).stl\", vW, vH, vL, \"S65x110\").then(\n (g) => {\n this.SUPERIOR_BEAM.S65x110 = g;\n }\n ),\n this.downloadFileEx(\"Beam End Cap 65x110 (3D).stl\", vW, vH, vL, \"BSEC110\").then(\n (g) => {\n this.SUPERIOR_BEAM.S65x110_ENDCAP = g;\n }\n ),\n this.downloadFileEx(\"Superior Beam 65x160 (3D).stl\", vW, vH, vL, \"S65x160\").then(\n (g) => {\n this.SUPERIOR_BEAM.S65x160 = g;\n }\n ),\n this.downloadFileEx(\"Beam End Cap 65x160 (3D).stl\", vW, vH, vL, \"BSEC160\").then(\n (g) => {\n this.SUPERIOR_BEAM.S65x160_ENDCAP = g;\n }\n ),\n this.downloadFileEx(\"Superior Beam 65x210 (3D).stl\", vW, vH, vL, \"S65x210\").then(\n (g) => {\n this.SUPERIOR_BEAM.S65x210 = g;\n }\n ),\n this.downloadFileEx(\"Beam End Cap 65x210 (3D).stl\", vW, vH, vL, \"BSEC210\").then(\n (g) => {\n this.SUPERIOR_BEAM.S65x210_ENDCAP = g;\n }\n ),\n this.downloadFileEx(\"Superior Beam 65x260 (3D).stl\", vW, vH, vL, \"S65x260\").then(\n (g) => {\n this.SUPERIOR_BEAM.S65x260 = g;\n }\n ),\n this.downloadFileEx(\"Beam End Cap 65x260 (3D).stl\", vW, vH, vL, \"BSEC260\").then(\n (g) => {\n this.SUPERIOR_BEAM.S65x260_ENDCAP = g;\n }\n ),\n ]);\n }\n public loadSuperiorPost(): Promise {\n let geo = new BoxBufferGeometry(100, 100, 1000);\n this.SUPERIOR_POST.TIMBER = new GeometryInfo(geo, 100, 1000, 100);\n let geoTimber = new BoxBufferGeometry(65, 65, 1000);\n this.SUPERIOR_POST.CENTER_POST_TIMBER = new GeometryInfo(geoTimber, 65, 1000, 65);\n\n return this.downloadFile(\"Superior Post 65x65 (3D).stl\")\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n this.SUPERIOR_POST.S65x65 = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"Post SHS 90x3 (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n this.SUPERIOR_POST.S90x90 = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n });\n }\n public loadFlyOverBracket(): Promise {\n return this.downloadFile(\"Fly Over Bracket 65x3 (3D).stl\").then(\n (geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n this.FLY_OVER_BRACKET.S65x3 = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n }\n );\n }\n public loadRibspanPanel(): Promise {\n return this.downloadFile(\"Rib span 310mm (3D).stl\")\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n geometry.translate(0, 2, 0);\n this.RIBSPAN.RIBSPAN_PANEL = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n })\n }\n public loadRibspanRidgeCapping(): Promise {\n return this.downloadFile(\"Rib span Ridge Capping (3D).stl\")\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n geometry.translate(0, 2, 0);\n this.RIBSPAN.RIBSPAN_RIDGE_CAPPING = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n })\n }\n public loadRibspanBarge(): Promise {\n return this.downloadFile(\"Rib span Barge Capping (3D).stl\")\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n geometry.translate(0, 2, 0);\n this.RIBSPAN.RIBSPAN_BARGE = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n })\n }\n public loadRibspanReceiverChannel(): Promise {\n return this.downloadFile(\"Rib span Reciver Channel (3D).stl\")\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n geometry.translate(0, 2, 0);\n this.RIBSPAN.RIBSPAN_RECEIVER_CHANNEL = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n })\n }\n public loadMonoPanel(): Promise {\n return this.downloadFile(\"50mm Monopanel-1 (3D).stl\")\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n geometry.translate(0, 2, 0);\n this.MONO_PANEL.S50MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"75mm Monopanel-1 (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n geometry.translate(0, 2, 0);\n this.MONO_PANEL.S75MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"100mm Monopanel-1 (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n geometry.translate(0, 2, 0);\n this.MONO_PANEL.S100MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"125mm Monopanel-1 (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n geometry.translate(0, 2, 0);\n this.MONO_PANEL.S125MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"150mm Monopanel-1 (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n geometry.translate(0, 2, 0);\n this.MONO_PANEL.S150MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"50mm Monopanel-1 (3D)-base.stl\");\n })\n\n .then((geometry) => {\n geometry.center();\n geometry.translate(\n EXISTING_BUILDING_CONFIG.ROOF_AND_BASE_OFFSET_X,\n 0,\n 0\n );\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.MONO_PANEL.S50MM_BASE = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"75mm Monopanel-1 (3D)-base.stl\");\n })\n\n .then((geometry) => {\n geometry.center();\n geometry.translate(\n EXISTING_BUILDING_CONFIG.ROOF_AND_BASE_OFFSET_X,\n 0,\n 0\n );\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.MONO_PANEL.S75MM_BASE = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"100mm Monopanel-1 (3D)-base.stl\");\n })\n .then((geometry) => {\n geometry.center();\n geometry.translate(\n EXISTING_BUILDING_CONFIG.ROOF_AND_BASE_OFFSET_X,\n 0,\n 0\n );\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.MONO_PANEL.S100MM_BASE = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"125mm Monopanel-1 (3D)-base.stl\");\n })\n .then((geometry) => {\n geometry.center();\n geometry.translate(\n EXISTING_BUILDING_CONFIG.ROOF_AND_BASE_OFFSET_X,\n 0,\n 0\n );\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.MONO_PANEL.S125MM_BASE = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"150mm Monopanel-1 (3D)-base.stl\");\n })\n .then((geometry) => {\n geometry.center();\n geometry.translate(\n EXISTING_BUILDING_CONFIG.ROOF_AND_BASE_OFFSET_X,\n 0,\n 0\n );\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.MONO_PANEL.S150MM_BASE = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n });\n }\n public loadCorroPanel(): Promise {\n return this.downloadFile(\"50mm Coropanel-1 (3D).stl\")\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL.S50MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"75mm Coropanel-1 (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL.S75MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"100mm Coropanel-1 (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL.S100MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"125mm Coropanel-1 (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL.S125MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"150mm Coropanel-1 (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL.S150MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"50mm Coropanel-1 (3D)-base.stl\");\n })\n\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL.S50MM_BASE = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"75mm Coropanel-1 (3D)-base.stl\");\n })\n\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL.S75MM_BASE = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"100mm Coropanel-1 (3D)-base.stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL.S100MM_BASE = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"125mm Coropanel-1 (3D)-base.stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL.S125MM_BASE = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"150mm Coropanel-1 (3D)-base.stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL.S150MM_BASE = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n });\n }\n public loadMonoPanelBargeCapping(): Promise {\n return this.downloadFile(\"50mm Monopanel Barge Capping (3D).stl\")\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.MONO_PANEL_BARGE_CAPPING.S50MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"75mm Monopanel Barge Capping (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.MONO_PANEL_BARGE_CAPPING.S75MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"100mm Monopanel Barge Capping (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.MONO_PANEL_BARGE_CAPPING.S100MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"125mm Monopanel Barge Capping (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.MONO_PANEL_BARGE_CAPPING.S125MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"150mm Monopanel Barge Capping (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.MONO_PANEL_BARGE_CAPPING.S150MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n });\n }\n public loadMonoPanelDripBargeCapping(): Promise {\n return this.downloadFile(\"50MM TRIMSPAN DRIP BARGE.stl\")\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.MONO_PANEL_DRIP_BARGE_CAPPING.S50MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"75MM TRIMSPAN DRIP BARGE.stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.MONO_PANEL_DRIP_BARGE_CAPPING.S75MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"100MM TRIMSPAN DRIP BARGE .stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.MONO_PANEL_DRIP_BARGE_CAPPING.S100MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"125MM TRIMSPAN DRIP BARGE .stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.MONO_PANEL_DRIP_BARGE_CAPPING.S125MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"150MM TRIMSPAN DRIP BARGE.stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.MONO_PANEL_DRIP_BARGE_CAPPING.S150MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n });\n }\n public loadCorroPanelBargeCapping(): Promise {\n return this.downloadFile(\"50mm Coropanel Barge Capping (3D).stl\")\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL_BARGE_CAPPING.S50MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"75mm Coropanel Barge Capping (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL_BARGE_CAPPING.S75MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"100mm Coropanel Barge Capping (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL_BARGE_CAPPING.S100MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"125mm Coropanel Barge Capping (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL_BARGE_CAPPING.S125MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"150mm Coropanel Barge Capping (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL_BARGE_CAPPING.S150MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n });\n }\n public loadCorroPanelDripBargeCapping(): Promise {\n return this.downloadFile(\"50MM CORROPANEL DRIP BARGE .stl\")\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL_DRIP_BARGE_CAPPING.S50MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"75MM CORROPANEL DRIP BARGE.stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL_DRIP_BARGE_CAPPING.S75MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"100MM CORROPANEL DRIP BARGE.stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL_DRIP_BARGE_CAPPING.S100MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"125MM CORROPANEL DRIP BARGE .stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL_DRIP_BARGE_CAPPING.S125MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"150MM CORROPANEL DRIP BARGE .stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL_DRIP_BARGE_CAPPING.S150MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n });\n }\n public loadMonoRecieverChanel(): Promise {\n return this.downloadFile(\"50mm Monopanel Reveiver Channel (3D).stl\")\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.MONO_PANEL_RECIEVER_CHANEL.S50MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"75mm Monopanel Reveiver Channel (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.MONO_PANEL_RECIEVER_CHANEL.S75MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"100mm Monopanel Reveiver Channel (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.MONO_PANEL_RECIEVER_CHANEL.S100MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"125mm Monopanel Reveiver Channel (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.MONO_PANEL_RECIEVER_CHANEL.S125MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"150mm Monopanel Reveiver Channel (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.MONO_PANEL_RECIEVER_CHANEL.S150MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n });\n }\n public loadCorroRecieverChanel(): Promise {\n return this.downloadFile(\"50mm Coropanel Reveiver Channel (3D).stl\")\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n //geometry.rotateY(Math.PI/2)\n this.CORRO_PANEL_RECIEVER_CHANEL.S50MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"75mm Coropanel Reveiver Channel (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL_RECIEVER_CHANEL.S75MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"100mm Coropanel Reveiver Channel (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL_RECIEVER_CHANEL.S100MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"125mm Coropanel Reveiver Channel (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL_RECIEVER_CHANEL.S125MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"150mm Coropanel Reveiver Channel (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL_RECIEVER_CHANEL.S150MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n });\n }\n public loadGutter(): Promise {\n let vW = new Vector3(1, 0, 0);\n let vH = new Vector3(0, 1, 0);\n let vL = new Vector3(0, 0, 1);\n return Promise.all([\n this.downloadFileEx(\"Quad Gutter (3D).stl\", vW, vH, vL).then((g) => {\n this.GUTTER.QUAD_150 = g;\n }),\n this.downloadFileEx(\n \"End Cap Quad Gutter (3D).stl\",\n vW,\n vH,\n new Vector3(1, 0, 0)\n ).then((g) => {\n this.GUTTER.QUAD_150_END_CAP = g;\n }),\n this.downloadFileEx(\"Square Line Gutter (3D).stl\", vW, vH, vL).then(\n (g) => {\n this.GUTTER.SQUARE_LINE = g;\n }\n ),\n this.downloadFileEx(\n \"End Cap Square Line Gutter (3D).stl\",\n vW,\n vH,\n new Vector3(1, 0, 0)\n ).then((g) => {\n this.GUTTER.SQUARE_LINE_END_CAP = g;\n }),\n ]);\n }\n public loadBraket(): Promise {\n let vW = new Vector3(1, 0, 0);\n let vH = new Vector3(0, 1, 0);\n let vL = new Vector3(0, 0, 1);\n return Promise.all([\n this.downloadFileEx(\"FUB Bracket 65x3_1.stl\", vW, vH, vL).then((g) => {\n this.UPSTAND_BRAKET.BRAKET_1 = g;\n }),\n this.downloadFileEx(\"FUB Bracket 65x3_2.stl\", vW, vH, vL).then((g) => {\n this.UPSTAND_BRAKET.BRAKET_2 = g;\n }),\n ]);\n }\n private loadDownPipe(): Promise {\n return this.downloadFile(\"90mm PVC (3D)-pipe.stl\")\n .then((geometry) => {\n geometry.center();\n\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n geometry.translate(0, height / 2, 0);\n this.DOWNPIPE.PIPE_S90MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"90mm PVC (3D)-L.stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n geometry.translate(0, height / 2, 0);\n this.DOWNPIPE.L_S90MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n });\n }\n private loadZFlashing() {\n let vW = new Vector3(1, 0, 0);\n let vH = new Vector3(0, 1, 0);\n let vL = new Vector3(0, 0, 1);\n return Promise.all([\n this.downloadFileEx(\"50mm Z Flashing (3D).stl\", vW, vH, vL).then((g) => {\n g.geometry\n .rotateY(Math.PI / 2)\n .translate(g.length / 2, -g.height / 2 - 2, -80);\n this.Z_FlASHING.S50 = g;\n }),\n this.downloadFileEx(\"75mm Z Flashing (3D).stl\", vW, vH, vL).then((g) => {\n g.geometry\n .rotateY(Math.PI / 2)\n .translate(g.length / 2, -g.height / 2 - 2, -80);\n this.Z_FlASHING.S75 = g;\n }),\n this.downloadFileEx(\"100mm Z Flashing (3D).stl\", vW, vH, vL).then((g) => {\n g.geometry\n .rotateY(Math.PI / 2)\n .translate(g.length / 2, -g.height / 2 - 2, -80);\n this.Z_FlASHING.S100 = g;\n }),\n this.downloadFileEx(\"125mm Z Flashing (3D).stl\", vW, vH, vL).then((g) => {\n g.geometry\n .rotateY(Math.PI / 2)\n .translate(g.length / 2, -g.height / 2 - 2, -80);\n this.Z_FlASHING.S125 = g;\n }),\n this.downloadFileEx(\"150mm Z Flashing (3D).stl\", vW, vH, vL).then((g) => {\n g.geometry\n .rotateY(Math.PI / 2)\n .translate(g.length / 2, -g.height / 2 - 2, -80);\n this.Z_FlASHING.S150 = g;\n }),\n ]);\n }\n public getBeam(): GeometryInfo {\n //_SUPERIOR BEAM\n if (this.APP.sltBeamType.currentValue == 0) {\n if (\n this.APP.sltBeamSize.currentValue == 0 ||\n this.APP.sltBeamSize.currentValue == 1\n ) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x110);\n }\n if (this.APP.sltBeamSize.currentValue == 2) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x160);\n }\n if (this.APP.sltBeamSize.currentValue == 3) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x210);\n }\n if (this.APP.sltBeamSize.currentValue == 4) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x260);\n }\n //FIXME: Bang - 2021.05.20: Xu ly loi khi tu TIMER -> SPC BEAM\n if (this.APP.sltBeamSize.currentValue > 4) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x110);\n }\n }\n //_TIMBER BEAM\n else if (this.APP.sltBeamType.currentValue == 1) {\n if (\n this.APP.sltBeamSize.currentValue == 0 ||\n this.APP.sltBeamSize.currentValue == 1\n ) {\n return this.utils.cloneGeometryInfo(this.TIMBER_BEAM.S140x45);\n }\n if (this.APP.sltBeamSize.currentValue == 2) {\n return this.utils.cloneGeometryInfo(this.TIMBER_BEAM.S190x45);\n }\n if (this.APP.sltBeamSize.currentValue == 3) {\n return this.utils.cloneGeometryInfo(this.TIMBER_BEAM.S150x50);\n }\n if (this.APP.sltBeamSize.currentValue == 4) {\n return this.utils.cloneGeometryInfo(this.TIMBER_BEAM.S200x50);\n }\n if (this.APP.sltBeamSize.currentValue == 5) {\n return this.utils.cloneGeometryInfo(this.TIMBER_BEAM.S150x75);\n }\n if (this.APP.sltBeamSize.currentValue == 6) {\n return this.utils.cloneGeometryInfo(this.TIMBER_BEAM.S200x75);\n }\n if (this.APP.sltBeamSize.currentValue == 7) {\n return this.utils.cloneGeometryInfo(this.TIMBER_BEAM.S250x75);\n }\n }\n }\n\n public getBeamJoint(): GeometryInfo {\n if (UI.beamType == 0) {\n if (\n UI.beamSize == 0 || UI.beamSize == 1\n ) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x110_JOINT);\n } else if (UI.beamSize == 2) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x160_JOINT);\n } else if (UI.beamSize == 3) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x210_JOINT);\n } else if (UI.beamSize == 4) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x260_JOINT);\n } else if (UI.beamSize > 4) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x110_JOINT);\n }\n }\n\n return null\n }\n\n public getHouseBeamJoint(): GeometryInfo {\n if (UI.beamType == 0) {\n if (\n UI.houseBeamSize == 0 ||\n UI.houseBeamSize == 1\n ) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x110_JOINT);\n }\n if (UI.houseBeamSize == 2) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x160_JOINT);\n }\n if (UI.houseBeamSize == 3) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x210_JOINT);\n }\n if (UI.houseBeamSize == 4) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x260_JOINT);\n }\n if (UI.houseBeamSize > 4) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x110_JOINT);\n }\n }\n\n return null\n }\n\n public getHouseBeam(): GeometryInfo {\n //_SUPERIOR BEAM\n if (this.APP.sltBeamType.currentValue == 0) {\n if (\n this.APP.sltHouseBeamSize.currentValue == 0 ||\n this.APP.sltHouseBeamSize.currentValue == 1\n ) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x110);\n }\n if (this.APP.sltHouseBeamSize.currentValue == 2) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x160);\n }\n if (this.APP.sltHouseBeamSize.currentValue == 3) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x210);\n }\n if (this.APP.sltHouseBeamSize.currentValue == 4) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x260);\n }\n //FIXME: Bang - 2021.05.20: Xu ly loi khi tu TIMER -> SPC BEAM\n if (this.APP.sltHouseBeamSize.currentValue > 4) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x110);\n }\n }\n //_TIMBER BEAM\n else if (this.APP.sltBeamType.currentValue == 1) {\n if (\n this.APP.sltHouseBeamSize.currentValue == 0 ||\n this.APP.sltHouseBeamSize.currentValue == 1\n ) {\n return this.utils.cloneGeometryInfo(this.TIMBER_BEAM.S140x45);\n }\n if (this.APP.sltHouseBeamSize.currentValue == 2) {\n return this.utils.cloneGeometryInfo(this.TIMBER_BEAM.S190x45);\n }\n if (this.APP.sltHouseBeamSize.currentValue == 3) {\n return this.utils.cloneGeometryInfo(this.TIMBER_BEAM.S150x50);\n }\n if (this.APP.sltHouseBeamSize.currentValue == 4) {\n return this.utils.cloneGeometryInfo(this.TIMBER_BEAM.S200x50);\n }\n if (this.APP.sltHouseBeamSize.currentValue == 5) {\n return this.utils.cloneGeometryInfo(this.TIMBER_BEAM.S150x75);\n }\n if (this.APP.sltHouseBeamSize.currentValue == 6) {\n return this.utils.cloneGeometryInfo(this.TIMBER_BEAM.S200x75);\n }\n if (this.APP.sltHouseBeamSize.currentValue == 7) {\n return this.utils.cloneGeometryInfo(this.TIMBER_BEAM.S250x75);\n }\n }\n }\n public getRafterBeam(): GeometryInfo {\n //_SUPERIOR BEAM\n if (this.APP.sltBeamType.currentValue == 0) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x160);\n }\n //_TIMBER BEAM\n else if (this.APP.sltBeamType.currentValue == 1) {\n return this.utils.cloneGeometryInfo(this.TIMBER_BEAM.S150x50);\n }\n }\n public getRafterBeamEndCap(): GeometryInfo {\n //_SUPERIOR BEAM\n if (this.APP.sltBeamType.currentValue == 0) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x160_ENDCAP);\n }\n //_TIMBER BEAM\n else if (this.APP.sltBeamType.currentValue == 1) {\n return this.utils.cloneGeometryInfo(this.TIMBER_BEAM.S150x50_ENDCAP);\n }\n }\n public getBeamEndCap(): GeometryInfo {\n //_SUPERIOR BEAM\n if (this.APP.sltBeamType.currentValue == 0) {\n if (\n this.APP.sltBeamSize.currentValue == 0 ||\n this.APP.sltBeamSize.currentValue == 1\n ) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x110_ENDCAP);\n }\n if (this.APP.sltBeamSize.currentValue == 2) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x160_ENDCAP);\n }\n if (this.APP.sltBeamSize.currentValue == 3) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x210_ENDCAP);\n }\n if (this.APP.sltBeamSize.currentValue == 4) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x260_ENDCAP);\n }\n //FIXME: Bang - 2021.05.20: Xu ly loi khi tu TIMER -> SPC BEAM\n if (this.APP.sltBeamSize.currentValue > 4) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x110);\n }\n }\n //_TIMBER BEAM\n else if (this.APP.sltBeamType.currentValue == 1) {\n return this.utils.cloneGeometryInfo(this.TIMBER_BEAM.S150x50_ENDCAP);\n }\n }\n\n public getHouseBeamEndCap(): GeometryInfo {\n //_SUPERIOR BEAM\n if (this.APP.sltBeamType.currentValue == 0) {\n if (\n this.APP.sltHouseBeamSize.currentValue == 0 ||\n this.APP.sltHouseBeamSize.currentValue == 1\n ) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x110_ENDCAP);\n }\n if (this.APP.sltHouseBeamSize.currentValue == 2) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x160_ENDCAP);\n }\n if (this.APP.sltHouseBeamSize.currentValue == 3) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x210_ENDCAP);\n }\n if (this.APP.sltHouseBeamSize.currentValue == 4) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x260_ENDCAP);\n }\n //FIXME: Bang - 2021.05.20: Xu ly loi khi tu TIMER -> SPC BEAM\n if (this.APP.sltHouseBeamSize.currentValue > 4) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x110);\n }\n }\n //_TIMBER BEAM\n else if (this.APP.sltBeamType.currentValue == 1) {\n return this.utils.cloneGeometryInfo(this.TIMBER_BEAM.S150x50_ENDCAP);\n }\n }\n\n public getPost() {\n if (this.APP.sltColumnType.currentValue == 0) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_POST.S65x65);\n } else if (\n this.APP.sltColumnType.currentValue == 1 ||\n this.APP.sltColumnType.currentValue == 2\n ) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_POST.S90x90);\n } else {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_POST.TIMBER);\n }\n }\n public getCenterPost() {\n if(UI.beamType == 1) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_POST.CENTER_POST_TIMBER)\n } else {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_POST.S65x65)\n }\n }\n public getRoofSheetPanel(): GeometryInfo {\n if (\n this.APP.sltRoofSheetingType.currentValue == 0 ||\n this.APP.sltRoofSheetingType.currentValue == 1\n ) {\n if (\n this.APP.sltRoofThickness.currentValue == 0 ||\n this.APP.sltRoofThickness.currentValue == 1\n ) {\n return this.utils.cloneGeometryInfo(this.MONO_PANEL.S50MM);\n }\n if (this.APP.sltRoofThickness.currentValue == 2) {\n return this.utils.cloneGeometryInfo(this.MONO_PANEL.S75MM);\n }\n if (this.APP.sltRoofThickness.currentValue == 3) {\n return this.utils.cloneGeometryInfo(this.MONO_PANEL.S100MM);\n }\n if (this.APP.sltRoofThickness.currentValue == 4) {\n return this.utils.cloneGeometryInfo(this.MONO_PANEL.S125MM);\n }\n if (this.APP.sltRoofThickness.currentValue == 5) {\n return this.utils.cloneGeometryInfo(this.MONO_PANEL.S150MM);\n }\n } else if (this.APP.sltRoofSheetingType.currentValue == 2) {\n if (\n this.APP.sltRoofThickness.currentValue == 0 ||\n this.APP.sltRoofThickness.currentValue == 1\n ) {\n return this.utils.cloneGeometryInfo(this.CORRO_PANEL.S50MM);\n }\n if (this.APP.sltRoofThickness.currentValue == 2) {\n return this.utils.cloneGeometryInfo(this.CORRO_PANEL.S75MM);\n }\n if (this.APP.sltRoofThickness.currentValue == 3) {\n return this.utils.cloneGeometryInfo(this.CORRO_PANEL.S100MM);\n }\n if (this.APP.sltRoofThickness.currentValue == 4) {\n return this.utils.cloneGeometryInfo(this.CORRO_PANEL.S125MM);\n }\n if (this.APP.sltRoofThickness.currentValue == 5) {\n return this.utils.cloneGeometryInfo(this.CORRO_PANEL.S150MM);\n }\n }\n return null;\n }\n public getRoofRibspanPanel(): GeometryInfo {\n return this.utils.cloneGeometryInfo(this.RIBSPAN.RIBSPAN_PANEL);\n }\n public getRoofBaseHeight(): number {\n const roofPanel = this.getRoofRibspanPanel()\n return _.get(roofPanel, ['height'], 0)\n }\n public getRoofBase(): GeometryInfo {\n if (\n this.APP.sltRoofSheetingType.currentValue == 0 ||\n this.APP.sltRoofSheetingType.currentValue == 1\n ) {\n if (\n this.APP.sltRoofThickness.currentValue == 0 ||\n this.APP.sltRoofThickness.currentValue == 1\n ) {\n return this.utils.cloneGeometryInfo(this.MONO_PANEL.S50MM_BASE);\n }\n if (this.APP.sltRoofThickness.currentValue == 2) {\n return this.utils.cloneGeometryInfo(this.MONO_PANEL.S75MM_BASE);\n }\n if (this.APP.sltRoofThickness.currentValue == 3) {\n return this.utils.cloneGeometryInfo(this.MONO_PANEL.S100MM_BASE);\n }\n if (this.APP.sltRoofThickness.currentValue == 4) {\n return this.utils.cloneGeometryInfo(this.MONO_PANEL.S125MM_BASE);\n }\n if (this.APP.sltRoofThickness.currentValue == 5) {\n return this.utils.cloneGeometryInfo(this.MONO_PANEL.S150MM_BASE);\n }\n } else if (this.APP.sltRoofSheetingType.currentValue == 2) {\n if (\n this.APP.sltRoofThickness.currentValue == 0 ||\n this.APP.sltRoofThickness.currentValue == 1\n ) {\n return this.utils.cloneGeometryInfo(this.CORRO_PANEL.S50MM_BASE);\n }\n if (this.APP.sltRoofThickness.currentValue == 2) {\n return this.utils.cloneGeometryInfo(this.CORRO_PANEL.S75MM_BASE);\n }\n if (this.APP.sltRoofThickness.currentValue == 3) {\n return this.utils.cloneGeometryInfo(this.CORRO_PANEL.S100MM_BASE);\n }\n if (this.APP.sltRoofThickness.currentValue == 4) {\n return this.utils.cloneGeometryInfo(this.CORRO_PANEL.S125MM_BASE);\n }\n if (this.APP.sltRoofThickness.currentValue == 5) {\n return this.utils.cloneGeometryInfo(this.CORRO_PANEL.S150MM_BASE);\n }\n }\n return null;\n }\n public getRibspanRidgeCapping(): GeometryInfo {\n return this.utils.cloneGeometryInfo(\n this.RIBSPAN.RIBSPAN_RIDGE_CAPPING\n );\n }\n public getRibspanBarge(): GeometryInfo {\n return this.utils.cloneGeometryInfo(\n this.RIBSPAN.RIBSPAN_BARGE\n );\n }\n public getBarge(): GeometryInfo {\n if (this.APP.sltDripBarge.currentValue) {\n if (\n this.APP.sltBargeType.currentValue == 0 ||\n this.APP.sltBargeType.currentValue == 1\n ) {\n if (\n this.APP.sltRoofThickness.currentValue == 0 ||\n this.APP.sltRoofThickness.currentValue == 1\n ) {\n return this.utils.cloneGeometryInfo(\n this.MONO_PANEL_DRIP_BARGE_CAPPING.S50MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 2) {\n return this.utils.cloneGeometryInfo(\n this.MONO_PANEL_DRIP_BARGE_CAPPING.S75MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 3) {\n return this.utils.cloneGeometryInfo(\n this.MONO_PANEL_DRIP_BARGE_CAPPING.S100MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 4) {\n return this.utils.cloneGeometryInfo(\n this.MONO_PANEL_DRIP_BARGE_CAPPING.S125MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 5) {\n return this.utils.cloneGeometryInfo(\n this.MONO_PANEL_DRIP_BARGE_CAPPING.S150MM\n );\n }\n } else if (this.APP.sltBargeType.currentValue == 2) {\n if (\n this.APP.sltRoofThickness.currentValue == 0 ||\n this.APP.sltRoofThickness.currentValue == 1\n ) {\n return this.utils.cloneGeometryInfo(\n this.CORRO_PANEL_DRIP_BARGE_CAPPING.S50MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 2) {\n return this.utils.cloneGeometryInfo(\n this.CORRO_PANEL_DRIP_BARGE_CAPPING.S75MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 3) {\n return this.utils.cloneGeometryInfo(\n this.CORRO_PANEL_DRIP_BARGE_CAPPING.S100MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 4) {\n return this.utils.cloneGeometryInfo(\n this.CORRO_PANEL_DRIP_BARGE_CAPPING.S125MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 5) {\n return this.utils.cloneGeometryInfo(\n this.CORRO_PANEL_DRIP_BARGE_CAPPING.S150MM\n );\n }\n }\n } else {\n if (\n this.APP.sltBargeType.currentValue == 0 ||\n this.APP.sltBargeType.currentValue == 1\n ) {\n if (\n this.APP.sltRoofThickness.currentValue == 0 ||\n this.APP.sltRoofThickness.currentValue == 1\n ) {\n return this.utils.cloneGeometryInfo(\n this.MONO_PANEL_BARGE_CAPPING.S50MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 2) {\n return this.utils.cloneGeometryInfo(\n this.MONO_PANEL_BARGE_CAPPING.S75MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 3) {\n return this.utils.cloneGeometryInfo(\n this.MONO_PANEL_BARGE_CAPPING.S100MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 4) {\n return this.utils.cloneGeometryInfo(\n this.MONO_PANEL_BARGE_CAPPING.S125MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 5) {\n return this.utils.cloneGeometryInfo(\n this.MONO_PANEL_BARGE_CAPPING.S150MM\n );\n }\n } else if (this.APP.sltBargeType.currentValue == 2) {\n if (\n this.APP.sltRoofThickness.currentValue == 0 ||\n this.APP.sltRoofThickness.currentValue == 1\n ) {\n return this.utils.cloneGeometryInfo(\n this.CORRO_PANEL_BARGE_CAPPING.S50MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 2) {\n return this.utils.cloneGeometryInfo(\n this.CORRO_PANEL_BARGE_CAPPING.S75MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 3) {\n return this.utils.cloneGeometryInfo(\n this.CORRO_PANEL_BARGE_CAPPING.S100MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 4) {\n return this.utils.cloneGeometryInfo(\n this.CORRO_PANEL_BARGE_CAPPING.S125MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 5) {\n return this.utils.cloneGeometryInfo(\n this.CORRO_PANEL_BARGE_CAPPING.S150MM\n );\n }\n }\n }\n\n return null;\n }\n public getRibspanReceiverChannel(): GeometryInfo {\n return this.utils.cloneGeometryInfo(\n this.RIBSPAN.RIBSPAN_RECEIVER_CHANNEL\n );\n }\n public getReceiverChannel(): GeometryInfo {\n if (\n this.APP.sltReceiverType.currentValue == 0 ||\n this.APP.sltReceiverType.currentValue == 1\n ) {\n if (\n this.APP.sltRoofThickness.currentValue == 0 ||\n this.APP.sltRoofThickness.currentValue == 1\n ) {\n return this.utils.cloneGeometryInfo(\n this.MONO_PANEL_RECIEVER_CHANEL.S50MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 2) {\n return this.utils.cloneGeometryInfo(\n this.MONO_PANEL_RECIEVER_CHANEL.S75MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 3) {\n return this.utils.cloneGeometryInfo(\n this.MONO_PANEL_RECIEVER_CHANEL.S100MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 4) {\n return this.utils.cloneGeometryInfo(\n this.MONO_PANEL_RECIEVER_CHANEL.S125MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 5) {\n return this.utils.cloneGeometryInfo(\n this.MONO_PANEL_RECIEVER_CHANEL.S150MM\n );\n }\n } else if (this.APP.sltReceiverType.currentValue == 2) {\n if (\n this.APP.sltRoofThickness.currentValue == 0 ||\n this.APP.sltRoofThickness.currentValue == 1\n ) {\n return this.utils.cloneGeometryInfo(\n this.CORRO_PANEL_RECIEVER_CHANEL.S50MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 2) {\n return this.utils.cloneGeometryInfo(\n this.CORRO_PANEL_RECIEVER_CHANEL.S75MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 3) {\n return this.utils.cloneGeometryInfo(\n this.CORRO_PANEL_RECIEVER_CHANEL.S100MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 4) {\n return this.utils.cloneGeometryInfo(\n this.CORRO_PANEL_RECIEVER_CHANEL.S125MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 5) {\n return this.utils.cloneGeometryInfo(\n this.CORRO_PANEL_RECIEVER_CHANEL.S150MM\n );\n }\n }\n return null;\n }\n public getGutter() {\n if (this.APP.sltGutterType.currentValue == 0) {\n return this.utils.cloneGeometryInfo(this.GUTTER.SQUARE_LINE);\n } else if (\n this.APP.sltGutterType.currentValue == 1 ||\n this.APP.sltGutterType.currentValue == 2\n ) {\n return this.utils.cloneGeometryInfo(this.GUTTER.QUAD_150);\n }\n }\n public getGuterEndCap(): GeometryInfo {\n if (this.APP.sltGutterType.currentValue == 0) {\n return this.utils.cloneGeometryInfo(this.GUTTER.SQUARE_LINE_END_CAP);\n } else if (\n this.APP.sltGutterType.currentValue == 1 ||\n this.APP.sltGutterType.currentValue == 2\n ) {\n return this.utils.cloneGeometryInfo(this.GUTTER.QUAD_150_END_CAP);\n }\n }\n public getRidge(): GeometryInfo {\n return this.utils.cloneGeometryInfo(this.RidgeCapping.S_Ridge_Custom);\n // if (\n // this.APP.sltRoofPitch.currentValue == 2 ||\n // this.APP.sltRoofPitch.currentValue == 3 ||\n // this.APP.sltRoofPitch.currentValue == 5 ||\n // this.APP.sltRoofPitch.currentValue == 7.5 ||\n // this.APP.sltRoofPitch.currentValue == 10\n // ) {\n // return this.utils.cloneGeometryInfo(this.RidgeCapping.S_Ridge_100);\n // } else if (this.APP.sltRoofPitch.currentValue == 12) {\n // return this.utils.cloneGeometryInfo(this.RidgeCapping.S_Ridge_125);\n // } else if (this.APP.sltRoofPitch.currentValue == 15) {\n // return this.utils.cloneGeometryInfo(this.RidgeCapping.S_Ridge_150);\n // } else if (this.APP.sltRoofPitch.currentValue == 20) {\n // return this.utils.cloneGeometryInfo(this.RidgeCapping.S_Ridge_200);\n // } else if (this.APP.sltRoofPitch.currentValue == 22.5) {\n // return this.utils.cloneGeometryInfo(this.RidgeCapping.S_Ridge_225);\n // } else if (this.APP.sltRoofPitch.currentValue == 25) {\n // return this.utils.cloneGeometryInfo(this.RidgeCapping.S_Ridge_250);\n // }\n }\n public getDownPipe(): GeometryInfo {\n if (this.APP.sltDownpipeType.currentValue == 0) {\n return this.DOWNPIPE.PIPE_S90MM;\n }\n return null;\n }\n public getDownPipeL(): GeometryInfo {\n if (this.APP.sltDownpipeType.currentValue == 0) {\n return this.DOWNPIPE.L_S90MM;\n }\n return null;\n }\n public getZFlashing(): GeometryInfo {\n if (\n this.APP.sltRoofThickness.currentValue == 0 ||\n this.APP.sltRoofThickness.currentValue == 1\n ) {\n return this.utils.cloneGeometryInfo(this.Z_FlASHING.S50);\n }\n if (this.APP.sltRoofThickness.currentValue == 2) {\n return this.utils.cloneGeometryInfo(this.Z_FlASHING.S75);\n }\n if (this.APP.sltRoofThickness.currentValue == 3) {\n return this.utils.cloneGeometryInfo(this.Z_FlASHING.S100);\n }\n if (this.APP.sltRoofThickness.currentValue == 4) {\n return this.utils.cloneGeometryInfo(this.Z_FlASHING.S125);\n }\n if (this.APP.sltRoofThickness.currentValue == 5) {\n return this.utils.cloneGeometryInfo(this.Z_FlASHING.S150);\n }\n\n return null;\n }\n public getDimensionLine() {\n return this.utils.cloneGeometryInfo(this.DIMENSION.LINE);\n }\n public getDimensionCap() {\n return this.utils.cloneGeometryInfo(this.DIMENSION.CAP);\n }\n public getUIControlLine() {\n return this.utils.cloneGeometryInfo(this.UI_CONTROL.LINE);\n }\n public getUpstandBraket(part: number) {\n if (part == 1) {\n return this.utils.cloneGeometryInfo(this.UPSTAND_BRAKET.BRAKET_1);\n } else if (part == 2) {\n return this.utils.cloneGeometryInfo(this.UPSTAND_BRAKET.BRAKET_2);\n }\n }\n}\n","import { Scene, Mesh, BufferGeometry, Vector3, Object3D, Color, Material, PlaneBufferGeometry, BoxBufferGeometry, CubeTextureLoader } from \"three\";\nimport { Util } from \"./utils\";\nimport { environment } from 'src/environments/environment';\nimport { CONFIG as env, GEOMETRY_TYPE } from 'src/app/app.config';\nimport { HomeComponent as AppComponent } from 'src/app-ribspan/containers/home/home.component';\nimport { GeometryManager } from \"./geometry.manager\";\nimport { MaterialManager } from \"./material.manager\";\nimport { GeometryInfo } from 'src/app/core/models';\n\nexport class GroundManager {\n private scene: Scene;\n private APP: AppComponent;\n private material: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private geo_ground: BufferGeometry;\n private geo_groundBase: GeometryInfo;\n\n private totalBaySize: number;\n\n private isReady = false;\n\n\n constructor() {\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n }\n\n public init(app: AppComponent): Promise {\n return new Promise((resolve, reject) => {\n this.APP = app;\n this.scene = app.scene;\n this.material = MaterialManager.Instance().GROUND.clone();\n\n this.APP.sldExistingLength.addAction(this.uiChanged.bind(this));\n this.APP.sldExistingLength2.addAction(this.uiChanged.bind(this));\n this.APP.sldExistingWidth1.addAction(this.uiChanged.bind(this));\n this.APP.sldExistingWidth2.addAction(this.uiChanged.bind(this));\n this.APP.sldSpan.addAction(this.uiChanged.bind(this));\n this.APP.sldMultiSpan.addAction(this.uiChanged.bind(this));\n this.APP.dialogEditBay.addAction(this.uiChanged.bind(this));\n\n\n resolve();\n });\n }\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n this.geo_ground = new PlaneBufferGeometry(200000, 200000);\n this.geo_groundBase = new GeometryInfo();\n this.geo_groundBase.width = 1000;\n this.geo_groundBase.height = 1;\n this.geo_groundBase.length = 1000;\n this.geo_groundBase.geometry = new BoxBufferGeometry(this.geo_groundBase.width, this.geo_groundBase.height, this.geo_groundBase.length);\n this.geo_groundBase.geometry.translate(0,0,this.geo_groundBase.length/2);\n\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n //this.scene.remove(...this.scene.children.filter(o => o.userData.type == GEOMETRY_TYPE.GROUND_BASE));\n\n this.totalBaySize = this.APP.dialogEditBay.listBay.reduce((total, val) => total + val.value, 0);\n\n this.isReady = true;\n\n this.addGround();\n this.addBase();\n\n resolve();\n });\n }\n\n public addGround() {\n let mesh = new Mesh(this.geo_ground, this.material);\n mesh.userData = { type: \"GROUND\" };\n mesh.position.y = -100;\n mesh.rotation.x = - Math.PI / 2;\n\n this.scene.add(mesh);\n //Skybox\n const cubeTextureLoader = new CubeTextureLoader();\n cubeTextureLoader.setPath(environment.modelBaseUrl + '/assets/images/skybox/' );\n const cubeTexture = cubeTextureLoader.load( [\n \"cube_f.jpg\", \"cube_b.jpg\",\n \"cube_u.jpg\", \"cube_d.jpg\",\n \"cube_l.jpg\", \"cube_r.jpg\"\n ] );\n this.scene.background = cubeTexture;\n }\n\n private addBase() {\n //return new Promise((resolve, reject) => {\n // if(!this.isReady){\n // resolve();\n // return;\n // }\n\n // this.APP.patiosManager.patiosGroup.remove(...this.APP.patiosManager.patiosGroup.children.filter(o => o.userData.type == GEOMETRY_TYPE.GROUND_BASE));\n // this.totalBaySize = this.APP.dialogEditBay.listBay.reduce((total, val) => total + val.value, 0);\n\n // let base = new Mesh(this.geo_groundBase.geometry, MaterialManager.Instance().BASE);\n // base.userData = { type: GEOMETRY_TYPE.GROUND_BASE };\n\n // let width = this.totalBaySize + this.APP.sldLeftOverhang.currentValue + this.APP.sldRightOverhang.currentValue;\n // let length = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.APP.sldBackOverhang.currentValue;\n\n // let extraWidth = 0;\n\n // let offsetZ = this.APP.sldExistingWidth1.currentValue/2;\n\n // base.position.set(0,0,-offsetZ);\n // base.scale.set((width + extraWidth) / this.geo_groundBase.width, 1, (length + extraWidth) / this.geo_groundBase.length);\n\n // this.APP.patiosManager.patiosGroup.add(base);\n\n\n \n // resolve();\n //});\n }\n\n private uiChanged(pre: number, cur: number) {\n this.addBase();\n }\n}\n","import { MeshLambertMaterial, TextureLoader, MeshBasicMaterial, RepeatWrapping, DoubleSide, MeshPhongMaterial, LineBasicMaterial, Color, Texture, SpriteMaterial, VertexColors, FrontSide } from \"three\";\nimport { environment as env } from 'src/environments/environment';\nimport { HomeComponent } from 'src/app-ribspan/containers/home/home.component';\nimport { UI } from \"./ui\";\n\nexport class MaterialManager {\n private textureLoader: TextureLoader;\n private APP: HomeComponent;\n\n private defaultColor = new Color(0x6D6C6E); //Basalt\n\n public DEFAULT: MeshPhongMaterial;\n public WALL: MeshLambertMaterial;\n public EAVE: MeshPhongMaterial;\n public FASCIA: MeshPhongMaterial;\n public EXISTING_ROOF: MeshPhongMaterial;\n public GROUND: MeshLambertMaterial;\n public BASE: MeshPhongMaterial;\n\n public BEAM: MeshPhongMaterial;\n public BEAM_TRANSPARENT: MeshPhongMaterial;\n public POST: MeshPhongMaterial;\n public GUTTER: MeshPhongMaterial;\n public BARGE: MeshPhongMaterial;\n public RECEIVER_CHANEL: MeshPhongMaterial;\n public DOWNPIPE: MeshPhongMaterial;\n public BRACKET: MeshPhongMaterial;\n public BRACKET_WARNING: MeshPhongMaterial;\n public FASCIA_BRACKET: MeshPhongMaterial;\n public ROOF: MeshPhongMaterial;\n public RIDGE_CAPPING: MeshPhongMaterial;\n public ROOF_BASE: MeshPhongMaterial;\n public ZFLASHING: MeshPhongMaterial;\n\n public EXISTING_WALL_L1_TEXTURE: Texture;\n public EXISTING_WALL_W1_TEXTURE: Texture;\n public EXISTING_WALL_L2_TEXTURE: Texture;\n public EXISTING_WALL_W2_TEXTURE: Texture;\n\n public TEXTURE_UI_CONTROL_CUTBEAM: Texture;\n public TEXTURE_UI_CONTROL_EXIT_CUTBEAM: Texture;\n public UI_CONTROL_CUTBEAM: SpriteMaterial\n public UI_CONTROL_EXIT_CUTBEAM: SpriteMaterial\n\n public EXISTING_ROOF_TEXTURE: {\n L1: Texture,\n L2: Texture,\n W1: Texture,\n W2: Texture\n } = {\n L1: null,\n L2: null,\n W1: null,\n W2: null\n }\n\n public DIMENSION_TEXT: MeshBasicMaterial;\n public HIGHLIGHT_DIMENSION_TEXT: MeshBasicMaterial;\n\n public MESH_OUTLINE: LineBasicMaterial;\n public BEAM_OUTLINE: LineBasicMaterial;\n\n public TEXTURE_UI_CONTROL: Texture;\n public TEXTURE_TIMBER: Texture;\n public UI_CONTROL: SpriteMaterial\n\n public TEXTURE_UI_CONTROL_DELETE: Texture;\n public UI_CONTROL_DELETE: SpriteMaterial\n\n public HIDDEN_UI_CONTROL: MeshBasicMaterial\n\n private static instance: MaterialManager;\n static Instance(): MaterialManager{\n if (!MaterialManager.instance) {\n MaterialManager.instance = new MaterialManager();\n }\n return MaterialManager.instance;\n }\n\n private constructor(){\n this.textureLoader = new TextureLoader();\n\n //default\n this.DEFAULT = new MeshPhongMaterial({\n color: 0x6D6C6E,\n side: DoubleSide\n });\n\n //Eave\n this.EAVE = new MeshPhongMaterial({\n color: new Color('white'),\n side: DoubleSide\n });\n\n //Eave\n this.FASCIA = new MeshPhongMaterial({\n color: new Color('white'),\n side: DoubleSide\n });\n\n //Ground\n var groundTexture = this.textureLoader.load( env.modelBaseUrl + \"/assets/images/textures/grass-dark.jpg\" );\n groundTexture.wrapS = groundTexture.wrapT = RepeatWrapping;\n groundTexture.repeat.set( 25, 25 );\n groundTexture.anisotropy = 16;\n this.GROUND = new MeshLambertMaterial({\n side: DoubleSide, \n map: groundTexture\n });\n\n //Base\n this.BASE = new MeshPhongMaterial({ color: new Color('white') });\n\n //Existing roof\n // var existingRoofTexture = this.textureLoader.load( env.modelBaseUrl + \"/assets/images/textures/131_Concrete roof tile texture-seamless.jpg\" );\n // existingRoofTexture.wrapS = existingRoofTexture.wrapT = RepeatWrapping;\n // existingRoofTexture.repeat.set( 2, 2 );\n // existingRoofTexture.anisotropy = 16;\n this.EXISTING_ROOF = new MeshPhongMaterial({\n side: DoubleSide\n });\n\n //wall texture\n this.EXISTING_WALL_L1_TEXTURE = this.textureLoader.load( env.modelBaseUrl + \"/assets/images/textures/brick4.png\" );\n this.EXISTING_WALL_L1_TEXTURE.wrapS = this.EXISTING_WALL_L1_TEXTURE.wrapT = RepeatWrapping;\n this.EXISTING_WALL_L1_TEXTURE.anisotropy = 1;\n\n this.EXISTING_WALL_L2_TEXTURE = this.textureLoader.load( env.modelBaseUrl + \"/assets/images/textures/brick4.png\" );\n this.EXISTING_WALL_L2_TEXTURE.wrapS = this.EXISTING_WALL_L2_TEXTURE.wrapT = RepeatWrapping;\n this.EXISTING_WALL_L2_TEXTURE.anisotropy = 1;\n\n this.EXISTING_WALL_W1_TEXTURE = this.textureLoader.load( env.modelBaseUrl + \"/assets/images/textures/brick4.png\" );\n this.EXISTING_WALL_W1_TEXTURE.wrapS = this.EXISTING_WALL_W1_TEXTURE.wrapT = RepeatWrapping;\n this.EXISTING_WALL_W1_TEXTURE.anisotropy = 1;\n\n this.EXISTING_WALL_W2_TEXTURE = this.textureLoader.load( env.modelBaseUrl + \"/assets/images/textures/brick4.png\" );\n this.EXISTING_WALL_W2_TEXTURE.wrapS = this.EXISTING_WALL_W2_TEXTURE.wrapT = RepeatWrapping;\n this.EXISTING_WALL_W2_TEXTURE.anisotropy = 1;\n\n \n\n //Existing roof texture\n this.EXISTING_ROOF_TEXTURE.L1 = this.textureLoader.load( env.modelBaseUrl + \"/assets/images/textures/131_Concrete roof tile texture-seamless.jpg\" );\n this.EXISTING_ROOF_TEXTURE.L1.wrapS = this.EXISTING_ROOF_TEXTURE.L1.wrapT = RepeatWrapping;\n this.EXISTING_ROOF_TEXTURE.L1.anisotropy = 1;\n\n this.EXISTING_ROOF_TEXTURE.L2 = this.textureLoader.load( env.modelBaseUrl + \"/assets/images/textures/131_Concrete roof tile texture-seamless.jpg\" );\n this.EXISTING_ROOF_TEXTURE.L2.wrapS = this.EXISTING_ROOF_TEXTURE.L2.wrapT = RepeatWrapping;\n this.EXISTING_ROOF_TEXTURE.L2.anisotropy = 1;\n\n this.EXISTING_ROOF_TEXTURE.W1 = this.textureLoader.load( env.modelBaseUrl + \"/assets/images/textures/131_Concrete roof tile texture-seamless.jpg\" );\n this.EXISTING_ROOF_TEXTURE.W1.wrapS = this.EXISTING_ROOF_TEXTURE.W1.wrapT = RepeatWrapping;\n this.EXISTING_ROOF_TEXTURE.W1.anisotropy = 1;\n\n this.EXISTING_ROOF_TEXTURE.W2 = this.textureLoader.load( env.modelBaseUrl + \"/assets/images/textures/131_Concrete roof tile texture-seamless.jpg\" );\n this.EXISTING_ROOF_TEXTURE.W2.wrapS = this.EXISTING_ROOF_TEXTURE.W2.wrapT = RepeatWrapping;\n this.EXISTING_ROOF_TEXTURE.W2.anisotropy = 1;\n\n //Wall\n this.WALL = new MeshLambertMaterial({\n side: DoubleSide, \n //map: this.BRICK_TEXTURE\n });\n\n //text\n this.DIMENSION_TEXT = new MeshBasicMaterial({ color: 0xffffff, side: DoubleSide });\n this.HIDDEN_UI_CONTROL = new MeshLambertMaterial({\n side: DoubleSide,\n color: 'white',\n transparent: true,\n opacity: 0\n })\n this.HIGHLIGHT_DIMENSION_TEXT = new MeshBasicMaterial({ color: 0xffff00, side: DoubleSide });\n\n this.MESH_OUTLINE = new LineBasicMaterial( { color: 'red' } );\n this.BEAM_OUTLINE = new LineBasicMaterial( { color: 'yellow' } );\n\n this.BARGE = new MeshPhongMaterial({ color: new Color(0xE4E2D5) }); //surfmist\n this.RECEIVER_CHANEL = new MeshPhongMaterial({ color: new Color(0xE4E2D5) }); //surfmist\n this.GUTTER = new MeshPhongMaterial({ color: new Color(0xE4E2D5) }); //basalt\n this.DOWNPIPE = new MeshPhongMaterial({ color: new Color(0xffffff) }); //white\n this.BEAM = new MeshPhongMaterial({ color: new Color(0xE4E2D5) }); //surfmist\n this.BEAM_TRANSPARENT = new MeshPhongMaterial({ color: new Color(0xE4E2D5), side: DoubleSide, transparent: true, opacity: 0.5 }); //surfmist\n this.POST = new MeshPhongMaterial({ color: new Color(0xE4E2D5) }); //surfmist\n this.BRACKET = new MeshPhongMaterial({ color: new Color(0xE4E2D5) }); //surfmist\n this.BRACKET_WARNING = new MeshPhongMaterial({ color: new Color(0xFF0000) }); //red: always red\n this.FASCIA_BRACKET = new MeshPhongMaterial({ color: new Color(0xE4E2D5) }); //surfmist\n this.ROOF = new MeshPhongMaterial({ side: FrontSide, vertexColors: VertexColors }); //surfmist\n this.RIDGE_CAPPING = new MeshPhongMaterial({ color: new Color(0xE4E2D5) });\n this.ROOF_BASE = new MeshPhongMaterial({ color: new Color(0xE4E2D5) }); //surfmist\n this.ZFLASHING = new MeshPhongMaterial({ color: new Color(0xE4E2D5) }); //surfmist\n }\n\n public init(app: HomeComponent){\n this.APP = app;\n this.registerEvent();\n\n return Promise.all([\n this.loadTexture('cut-beam.png').then(texture => {\n this.TEXTURE_UI_CONTROL_CUTBEAM = texture\n this.UI_CONTROL_CUTBEAM = new SpriteMaterial({ map: this.TEXTURE_UI_CONTROL_CUTBEAM, sizeAttenuation: true })\n }),\n this.loadTexture('join-beam.png').then(texture => {\n this.TEXTURE_UI_CONTROL_EXIT_CUTBEAM = texture\n this.UI_CONTROL_EXIT_CUTBEAM = new SpriteMaterial({ map: this.TEXTURE_UI_CONTROL_EXIT_CUTBEAM, sizeAttenuation: true })\n }),\n\n this.loadTexture('resize-icon.png').then(texture => {\n this.TEXTURE_UI_CONTROL = texture\n this.UI_CONTROL = new SpriteMaterial({ map: this.TEXTURE_UI_CONTROL, sizeAttenuation: false })\n }),\n this.loadTexture('delete-icon.png').then(texture => {\n this.TEXTURE_UI_CONTROL_DELETE = texture\n this.UI_CONTROL_DELETE = new SpriteMaterial({ map: this.TEXTURE_UI_CONTROL_DELETE, sizeAttenuation: false })\n }),\n this.loadTexture('timber-texture.jpg').then(texture => {\n this.TEXTURE_TIMBER = texture\n this.TEXTURE_TIMBER.repeat.set(1, 0.3)\n this.TEXTURE_TIMBER.wrapS = RepeatWrapping\n this.TEXTURE_TIMBER.wrapT = RepeatWrapping\n }),\n this.existingRoofTypeChanged(null,null)\n ])\n }\n private loadTexture(name: string) {\n return new Promise((resolve, reject) => {\n this.textureLoader.load(env.modelBaseUrl + \"/assets/images/textures/\" + name, (texture) => {\n resolve(texture)\n },\n () => { },\n (err) => { reject(err) });\n })\n }\n private controlsToRegisterEvent: Array;\n private registerEvent(){\n this.APP.sltColourBeam.addAction(this.beamColorChanged.bind(this), 1);\n this.APP.sltColourPost.addAction(this.postColorChanged.bind(this), 1);\n this.APP.sltColourBarge.addAction(this.bargeColorChanged.bind(this),1);\n this.APP.sltColourGutter.addAction(this.gutterColorChanged.bind(this), 1);\n this.APP.sltColourDownpipe.addAction(this.downpipeColorChanged.bind(this), 1);\n this.APP.sltColourBracket.addAction(this.bracketColorChanged.bind(this), 1);\n this.APP.sltColourFasciaBracket.addAction(this.fasciaBracketColorChanged.bind(this), 1);\n this.APP.sltColourRoof.addAction(this.roofColorChanged.bind(this), 1);\n this.APP.sltFlatBottom.addAction(this.roofBaseColorChanged.bind(this), 1);\n this.APP.sltColourZFlashing.addAction(this.zFlashingColorChanged.bind(this), 1);\n this.APP.sltExistingRoofType.addAction(this.existingRoofTypeChanged.bind(this), 1);\n }\n private postColorChanged(pre: number, cur: string){\n if(UI.postType == 3) {\n this.POST.color = new Color(UI.postColor);\n if(this.TEXTURE_TIMBER) {\n this.POST.color = new Color(0xFFFFFF);\n this.POST.map = this.TEXTURE_TIMBER\n this.POST.map.needsUpdate = true\n this.POST.needsUpdate = true\n }\n } else {\n this.POST.color = new Color(UI.postColor);\n this.POST.map = null\n this.POST.needsUpdate = true\n }\n }\n private bargeColorChanged(pre: number, cur: string){\n this.BARGE.color = new Color(parseInt(cur));\n }\n private gutterColorChanged(pre: number, cur: string){\n this.GUTTER.color = new Color(parseInt(cur));\n }\n private downpipeColorChanged(pre: number, cur: string){\n this.DOWNPIPE.color = new Color(parseInt(cur));\n }\n private beamColorChanged(pre: number, cur: string){\n if(UI.beamType == 1) {\n this.BEAM.color = new Color(UI.beamColor);\n this.BEAM_TRANSPARENT.color = new Color(UI.beamColor);\n if(this.TEXTURE_TIMBER) {\n this.BEAM.color = new Color(0xFFFFFF);\n this.BEAM.map = this.TEXTURE_TIMBER\n this.BEAM.map.needsUpdate = true\n this.BEAM.needsUpdate = true\n\n this.BEAM_TRANSPARENT.color = new Color(0xFFFFFF);\n this.BEAM_TRANSPARENT.map = this.TEXTURE_TIMBER\n this.BEAM_TRANSPARENT.map.needsUpdate = true\n this.BEAM_TRANSPARENT.needsUpdate = true\n }\n } else {\n this.BEAM.color = new Color(UI.beamColor);\n this.BEAM.map = null\n this.BEAM.needsUpdate = true\n\n this.BEAM_TRANSPARENT.color = new Color(UI.beamColor);\n this.BEAM_TRANSPARENT.map = null\n this.BEAM_TRANSPARENT.needsUpdate = true\n }\n }\n private bracketColorChanged(pre: number, cur: string){\n this.BRACKET.color = new Color(parseInt(cur));\n }\n private fasciaBracketColorChanged(pre: number, cur: string){\n this.FASCIA_BRACKET.color = new Color(parseInt(cur));\n }\n private roofColorChanged(pre: number, cur: string){\n // this.ROOF.color = new Color(parseInt(cur));\n this.RIDGE_CAPPING.color = new Color(parseInt(cur));\n }\n private roofBaseColorChanged(pre: number, cur: string){\n this.ROOF_BASE.color = new Color(parseInt(cur));\n this.RECEIVER_CHANEL.color = new Color(parseInt(cur));\n }\n private zFlashingColorChanged(pre: number, cur: string) {\n this.ZFLASHING.color = new Color(parseInt(cur));\n }\n private existingRoofTypeChanged(pre: number, cur: number) {\n if(UI.existingRoofType == 0){\n this.EXISTING_ROOF_TEXTURE.L1 = this.textureLoader.load( env.modelBaseUrl + \"/assets/images/textures/custom_orb_accent_21_windspray.bmp\" );\n this.EXISTING_ROOF_TEXTURE.L1.wrapS = this.EXISTING_ROOF_TEXTURE.L1.wrapT = RepeatWrapping;\n this.EXISTING_ROOF_TEXTURE.L1.anisotropy = 1;\n\n this.EXISTING_ROOF_TEXTURE.L2 = this.textureLoader.load( env.modelBaseUrl + \"/assets/images/textures/custom_orb_accent_21_windspray.bmp\" );\n this.EXISTING_ROOF_TEXTURE.L2.wrapS = this.EXISTING_ROOF_TEXTURE.L2.wrapT = RepeatWrapping;\n this.EXISTING_ROOF_TEXTURE.L2.anisotropy = 1;\n\n this.EXISTING_ROOF_TEXTURE.W1 = this.textureLoader.load( env.modelBaseUrl + \"/assets/images/textures/custom_orb_accent_21_windspray.bmp\" );\n this.EXISTING_ROOF_TEXTURE.W1.wrapS = this.EXISTING_ROOF_TEXTURE.W1.wrapT = RepeatWrapping;\n this.EXISTING_ROOF_TEXTURE.W1.anisotropy = 1;\n\n this.EXISTING_ROOF_TEXTURE.W2 = this.textureLoader.load( env.modelBaseUrl + \"/assets/images/textures/custom_orb_accent_21_windspray.bmp\" );\n this.EXISTING_ROOF_TEXTURE.W2.wrapS = this.EXISTING_ROOF_TEXTURE.W2.wrapT = RepeatWrapping;\n this.EXISTING_ROOF_TEXTURE.W2.anisotropy = 1;\n } else if (UI.existingRoofType == 1){\n this.EXISTING_ROOF_TEXTURE.L1 = this.textureLoader.load( env.modelBaseUrl + \"/assets/images/textures/131_Concrete roof tile texture-seamless.jpg\" );\n this.EXISTING_ROOF_TEXTURE.L1.wrapS = this.EXISTING_ROOF_TEXTURE.L1.wrapT = RepeatWrapping;\n this.EXISTING_ROOF_TEXTURE.L1.anisotropy = 1;\n\n this.EXISTING_ROOF_TEXTURE.L2 = this.textureLoader.load( env.modelBaseUrl + \"/assets/images/textures/131_Concrete roof tile texture-seamless.jpg\" );\n this.EXISTING_ROOF_TEXTURE.L2.wrapS = this.EXISTING_ROOF_TEXTURE.L2.wrapT = RepeatWrapping;\n this.EXISTING_ROOF_TEXTURE.L2.anisotropy = 1;\n\n this.EXISTING_ROOF_TEXTURE.W1 = this.textureLoader.load( env.modelBaseUrl + \"/assets/images/textures/131_Concrete roof tile texture-seamless.jpg\" );\n this.EXISTING_ROOF_TEXTURE.W1.wrapS = this.EXISTING_ROOF_TEXTURE.W1.wrapT = RepeatWrapping;\n this.EXISTING_ROOF_TEXTURE.W1.anisotropy = 1;\n\n this.EXISTING_ROOF_TEXTURE.W2 = this.textureLoader.load( env.modelBaseUrl + \"/assets/images/textures/131_Concrete roof tile texture-seamless.jpg\" );\n this.EXISTING_ROOF_TEXTURE.W2.wrapS = this.EXISTING_ROOF_TEXTURE.W2.wrapT = RepeatWrapping;\n this.EXISTING_ROOF_TEXTURE.W2.anisotropy = 1;\n } \n }\n}\n","// import { DropdownInputItemModel } from \"./models\"\nexport class Objects {\n public baseColourList = [\n { id: 0x6d6c6e, value: \"Basalt\", disabled: false },\n {\n id: 0x969799,\n value: \"Bluegum\",\n disabled: false,\n },\n { id: 0xe9dcb8, value: \"Classic Cream\", disabled: false },\n { id: 0x304c3c, value: \"Cottage Green\", disabled: false },\n // { id: 0xa59f8a, value: \"Cove\", disabled: true },\n { id: 0x364152, value: \"Deep Ocean\", disabled: false },\n {\n id: 0xf9fbf1,\n value: \"Dover White\",\n disabled: false,\n },\n { id: 0xb1ada3, value: \"Dune\", disabled: false },\n { id: 0xc5c2aa, value: \"Evening Haze\", disabled: false },\n { id: 0x857e73, value: \"Gully\", disabled: false },\n { id: 0x3e434c, value: \"Ironstone\", disabled: false },\n { id: 0x6c6153, value: \"Jasper\", disabled: false },\n // { id: 0x737562, value: \"Mangrove\", disabled: true },\n { id: 0x5e1d0e, value: \"Manor Red\", disabled: false },\n { id: 0x323233, value: \"Monument\", disabled: false },\n { id: 0x000000, value: \"Night Sky\", disabled: false },\n { id: 0x7c846a, value: \"Pale Eucalypt\", disabled: false },\n { id: 0xcabfa4, value: \"Paperbark\", disabled: false },\n { id: 0xbdbfba, value: \"Shale Grey\", disabled: false },\n {\n id: 0xd2d1cb,\n value: \"Southerly\",\n disabled: false,\n },\n { id: 0xe4e2d5, value: \"Surfmist\", disabled: false },\n // { id: 0x67432e, value: \"Terrain\", disabled: true },\n { id: 0x7f7c78, value: \"Wallaby\", disabled: false },\n { id: 0xd8e5e6, value: \"White\", disabled: false },\n { id: 0x888b8a, value: \"Windspray\", disabled: false },\n { id: 0x4b4c46, value: \"Woodland Grey\", disabled: false },\n { id: 0xfcffff, value: \"Zinc\", disabled: false },\n ];\n\n public roofColourList = [\n {\n id: 0xe9dcb8,\n value: \"Classic Cream\",\n disabled: false,\n bottomValue: \"Gloss Classic Cream\",\n },\n {\n id: 0x323233,\n value: \"Monument\",\n disabled: false,\n bottomValue: \"Surfmist\",\n },\n {\n id: 0xcabfa4,\n value: \"Paperbark\",\n disabled: false,\n bottomValue: \"Gloss Paperbark\",\n },\n {\n id: 0xe4e2d5,\n value: \"Surfmist\",\n disabled: false,\n bottomValue: \"Surfmist\",\n },\n ];\n public beamColourList = [\n { id: 0x000000, value: \"Black\", beamEndCapColorCode: \"B\" },\n { id: 0xe9dcb8, value: \"Cream\", beamEndCapColorCode: \"C\" },\n { id: 0xe4e2d5, value: \"Surfmist\", beamEndCapColorCode: \"SM\" },\n { id: 0xcabfa4, value: \"Paperbark\", beamEndCapColorCode: \"M\" },\n { id: 0x323233, value: \"Monument\", beamEndCapColorCode: \"MM\" },\n ];\n public postColourList = [\n { id: 0x000000, value: \"Black\" },\n { id: 0xe9dcb8, value: \"Cream\" },\n { id: 0xe4e2d5, value: \"Surfmist\" },\n { id: 0xcabfa4, value: \"Paperbark\" },\n ];\n public rakeCutTypeList = [\n { id: 0, value: \"None\" },\n { id: 1, value: \"Left\" },\n { id: 2, value: \"Right\" },\n { id: 3, value: \"Left & Right\" },\n ];\n public rakeCutType = [\n { id: 0, value: \"None\" },\n { id: 1, value: \"Angle\" },\n { id: 2, value: \"Step\" },\n ];\n public downpipeColourList = [{ id: 0xd8e5e6, value: \"White\" }];\n public flyoverColourList = [\n { id: 0xd8e5e6, value: \"Non Standard Colour\" },\n { id: 0x000000, value: \"Black\" },\n { id: 0xe9dcb8, value: \"Cream\" },\n { id: 0xe4e2d5, value: \"Surfmist\" },\n { id: 0xcabfa4, value: \"Paperbark\" },\n ];\n public fasciaColourList = [\n { id: 0x000000, value: \"Black\" },\n { id: 0xe9dcb8, value: \"Classic Cream\" },\n { id: 0xe4e2d5, value: \"Surfmist\" },\n ];\n public existingRoofPitchList = [\n { id: 10, value: \"10\" },\n { id: 15, value: \"15\" },\n { id: 20, value: \"20\" },\n { id: 22.5, value: \"22.5\" },\n { id: 25, value: \"25\" },\n { id: 30, value: \"30\" },\n ];\n public roofPitchList = [\n { id: 2, value: \"2\" },\n { id: 3, value: \"3\" },\n { id: 5, value: \"5\" },\n { id: 7.5, value: \"7.5\" },\n { id: 10, value: \"10\" },\n ];\n public gableRoofPitchList = [\n { id: 7.5, value: \"7.5\" },\n { id: 10, value: \"10\" },\n { id: 12, value: \"12\" },\n { id: 15, value: \"15\" },\n { id: 20, value: \"20\" },\n { id: 22.5, value: \"22.5\" },\n { id: 25, value: \"25\" },\n ];\n public wallList = [{ id: 0, value: \"Bricks\" }];\n public structureTypeList = [\n { id: 0, value: \"Existing Building\" },\n { id: 1, value: \"Fly Over\" },\n { id: 2, value: \"Back Fly Over\" },\n { id: 3, value: \"To Fascia\" },\n { id: 5, value: \"Fascia Upstand\" },\n { id: 6, value: \"Back Fascia Upstand\" },\n { id: 4, value: \"Free Standing\" },\n ];\n public structureTypeListGableLR = [\n { id: 1, value: \"Fly Over\" },\n { id: 5, value: \"Fascia Upstand\" },\n { id: 4, value: \"Free Standing\" },\n ];\n public structureTypeListGableFB = [\n { id: 0, value: \"Existing Building\" },\n { id: 1, value: \"Fly Over\" },\n { id: 5, value: \"Fascia Upstand\" },\n ];\n public existingTypeList = [\n { id: 0, value: \"None\" },\n { id: 1, value: \"Left\" },\n { id: 2, value: \"Right\" },\n { id: 3, value: \"Both\" },\n ];\n public windClassList = [\n { id: 0, value: \"N2(W33)\" },\n { id: 1, value: \"N3(W41)\" },\n { id: 2, value: \"N4(W50)\" },\n // { id: 3, value: \"C1(W41)\" },\n // { id: 4, value: \"C2(W50)\" },\n // { id: 5, value: \"C3(W60)\" },\n ];\n public windClassListGable = [\n { id: 0, value: \"N2(W33)\" },\n { id: 1, value: \"N3(W41)\" },\n { id: 2, value: \"N4(W50)\" },\n ];\n public roofSheetingTypeList = [\n { id: 0, value: \"Rib Span 310mm Wide 0.48mm BMT\" },\n ];\n public bargeTypeList = [\n { id: 0, value: \"Barge Capping 0.55 for Rib and Smooth Span\" },\n ];\n public receiverTypeList = [\n {\n id: 0,\n value: \"Receiver Channel for Rib and Smooth Span roofing - 1.0mm\",\n },\n ];\n public flatBottomList = [\n { id: 0xe4e2d5, value: \"Surfmist/Off White flat bottom\" },\n { id: 0xe9dcb8, value: \"Classic Cream bottom\" },\n ];\n public downpipeTypeList = [{ id: 0, value: \"90mm PVC\" }];\n public thicknessList = [\n { id: 0, value: \"N/A\" },\n { id: 1, value: \"50mm\" },\n { id: 2, value: \"75mm\" },\n { id: 3, value: \"100mm\" },\n { id: 4, value: \"125mm\" },\n { id: 5, value: \"150mm\" },\n ];\n public gutterTypeList = [\n { id: 0, value: \"Gutter - Fitfast - Square Line with Return\" },\n // { id: 1, value: \"Quad 150 Low Front Gutter Unslotted\" },\n // { id: 2, value: \"Quad 150 Hi Front Gutter Slotted\" },\n ];\n public beamTypeList = [\n { id: 0, value: \"SUPERIOR BEAMS\" },\n // { id: 1, value: \"TIMBER\" },\n ];\n public beamSizeList = [\n { id: 0, value: \"N/A\", beamType: 0 },\n { id: 1, value: \"SB110\", beamType: 0 },\n { id: 2, value: \"SB160\", beamType: 0 },\n { id: 3, value: \"SB210\", beamType: 0 },\n // { id: 4, value: \"SB260\", beamType: 0 },\n { id: 0, value: \"N/A\", beamType: 1 },\n { id: 1, value: \"140x45 F7\", beamType: 1 },\n { id: 2, value: \"190x45 F7\", beamType: 1 },\n { id: 3, value: \"150x50 F14\", beamType: 1 },\n { id: 4, value: \"200x50 F14\", beamType: 1 },\n { id: 5, value: \"150x75 F14\", beamType: 1 },\n { id: 6, value: \"200x75 F14\", beamType: 1 },\n { id: 7, value: \"250x75 F14\", beamType: 1 },\n ];\n public columnTypeList = [\n { id: 0, value: \"Superior Post 65mm x 65mm\" },\n { id: 1, value: \"Superior 90 x 90 Aluminium Post\" },\n { id: 2, value: \"Superior Post RHS 90mm x 90mm x 3.5mm\" },\n // { id: 3, value: \"Timber\" },\n ];\n public columnTypeList2 = [\n {\n id: -1,\n value: \"N/A\",\n columnHeight: -1,\n baseFixingType: \"0, 1\", // 'Dynabolt, Post In Ground',\n idx: -1,\n },\n {\n id: 0,\n value: \"Superior Post 65mm x 65mm\",\n columnHeight: 3000,\n baseFixingType: \"0, 1\", // 'Dynabolt, Post In Ground',\n idx: 0,\n },\n {\n id: 2,\n value: \"Superior Post RHS 90mm x 90mm x 3.5mm\",\n columnHeight: 3600,\n baseFixingType: \"1\", // 'Post In Ground',\n idx: 2,\n },\n {\n id: 1,\n value: \"Superior 90 x 90 Aluminium Post\",\n columnHeight: 4000,\n baseFixingType: \"0, 1\", // 'Dynabolt, Post In Ground',\n idx: 1,\n },\n {\n id: 2,\n value: \"Superior Post RHS 90mm x 90mm x 3.5mm\",\n columnHeight: 4000,\n baseFixingType: \"0\", // 'Dynabolt',\n idx: 3,\n },\n {\n id: 3,\n value: \"Timber\",\n columnHeight: 4000,\n baseFixingType: \"0, 1\", // 'Dynabolt, Post In Ground',\n idx: 4,\n },\n ];\n public baseFixingTypeList = [\n { id: 0, value: \"Dynabolt\" },\n { id: 1, value: \"Post In Ground\" },\n ];\n public roles = {\n user: \"User\",\n customer: \"Customer\",\n admin: \"Admin\",\n };\n public cutOutList = [\n { id: 0, value: \"No\" },\n { id: 1, value: \"Yes\" },\n ];\n public roofTypeList = [\n { id: 0, value: \"Steel Roof\" },\n { id: 1, value: \"Tiled Roof\" },\n ];\n public fasciaBracketList = [\n { id: 0, value: \"None\" },\n { id: 150, value: \"150\" },\n { id: 300, value: \"300\" },\n { id: 450, value: \"450\" },\n { id: 600, value: \"600\" },\n ];\n}\n","import { Vector3 } from \"three\";\n\ntype Edge = [Vector3, Vector3]\ntype Polygon = Array;\n\nexport const PolygonUtils = {\n getVectorLength(vector): number {\n return Math.sqrt(vector.x * vector.x + vector.y * vector.y + vector.z * vector.z);\n },\n dotProduct(v0, v1): number {\n return v0.x * v1.x + v0.y * v1.y + v0.z * v1.z;\n },\n \n /**\n * Get projected point P' of P on a segment\n * @return projected point p.\n */\n getProjectedPointOnSegment(segment: Edge, point: any): any {\n // get dot product of e1, e2\n const e1 = this.toVector(...segment);\n const e2 = this.toVector(segment[0], point);\n const valDp = this.dotProduct(e1, e2);\n // get length of vectors\n const lenLineE1 = this.getVectorLength(e1);\n const lenLineE2 = this.getVectorLength(e2);\n const cos = valDp / (lenLineE1 * lenLineE2);\n // length of v1P'\n const projLenOfLine = cos * lenLineE2;\n return new Vector3(segment[0].x + (projLenOfLine * e1.x) / lenLineE1, segment[0].y + (projLenOfLine * e1.y) / lenLineE1, segment[0].z + (projLenOfLine * e1.z) / lenLineE1)\n },\n isProjectionOnSegment(point, segment: Edge): boolean {\n const e1 = this.toVector(...segment);\n const dp = this.dotProduct(this.toVector(point, segment[1]), e1);\n const max = e1.x * e1.x + e1.y * e1.y + e1.z * e1.z;\n return dp >= 0 && dp <= max;\n },\n \n /**\n * Convert a polygon a list of edges\n * Except last point to start point\n * @param polygon\n */\n toEdgeList(polygon: Polygon): Array {\n const result: Array = [];\n for (let i = 0; i < polygon.length - 1; i++) {\n const pointA = polygon[i];\n const pointB = polygon[i === polygon.length - 1 ? 0 : i + 1];\n result.push([pointA, pointB]);\n }\n return result;\n },\n toVector(A: Vector3, B: Vector3): Vector3 {\n return new Vector3( B.x - A.x, B.y - A.y, B.z - A.z)\n },\n \n /**\n * Return the cumulated rotation around a point of another point\n * which is translating on a polygon edge.\n * The returned value is floored to deal with javscript float number imprecision.\n * So if the absolute value winding number is lower than 1, it\n * means that the rotation is null.\n * @param polygon\n * @param point\n */\n getWindingNumber(polygon: Polygon, point: any): number {\n const angles = [];\n let result: number = 0;\n for (let index = 0; index < polygon.length; index++) {\n const vertex = polygon[index];\n const nextVertex =\n index === polygon.length - 1 ? polygon[0] : polygon[index + 1];\n // Get the angle between the previous vertex, the point and the current vertex\n const angle = this.getAngle(vertex, point, nextVertex);\n angles.push(angle);\n result += angle;\n }\n return Math.floor(result);\n },\n \n /**\n * Calculates the signed (counter/clockwize) angle ABC (in radian).\n * @param A\n * @param B\n * @param C\n */\n getAngle(A: any, B: any, C: any): number {\n const v0 = { x: A.x - B.x, y: A.y - B.y, z: A.z - B.z };\n const v1 = { x: C.x - B.x, y: C.y - B.y, z: C.z - B.z };\n const angle = new Vector3(v0.x, v0.y, v0.z).angleTo(new Vector3(v1.x, v1.y, v1.z));\n // Special case, the angle cross over the complete circle\n return this.round(\n Math.abs(angle) > Math.PI\n ? angle < 0\n ? angle + 2 * Math.PI\n : angle - 2 * Math.PI\n : angle\n );\n },\n \n /**\n * Return true if a point lies on a segment\n * @param segment\n * @param point\n */\n isPointOnSegment(segment: Edge, point: any): boolean {\n const distAP = segment[0].distanceTo(point);\n const distBP = segment[1].distanceTo(point);\n const distAB = segment[1].distanceTo(segment[0]);\n return distAB.toFixed(5) === (distAP + distBP).toFixed(5);\n },\n getDistance(A: any, B: any): number {\n return Math.sqrt((A.x - B.x) * (A.x - B.x) + (A.y - B.y) * (A.y - B.y));\n },\n \n /**\n * Workaround javascript imprecision\n */\n round(number: number) {\n return Math.round((number + Number.EPSILON) * 100) / 100;\n },\n\n getClosestPointInsidePolygon(poly: Polygon, pos: any): any {\n // Except case: Inside the polygon. Never happen.\n // // Case I\n // const wn = this.getWindingNumber(poly, pos);\n // if (Math.abs(wn) > 1) {\n // return pos;\n // }\n\n // Case II\n if (this.toEdgeList(poly).some(edge => this.isPointOnSegment(edge, pos))) {\n return pos;\n }\n\n // Case III - A\n // Get edges which faces the points.\n \n const closestPointOnEdge = this.toEdgeList(poly)\n .filter(edge => this.isProjectionOnSegment(pos, edge))\n .reduce(\n ([_pp, minDistance], edge) => {\n // Get the projected point on this edge\n const pp = this.getProjectedPointOnSegment(edge, pos);\n // Get the distance from the edge\n const distance = this.getDistance(pos, pp);\n // Return this projection if the distance is smaller\n return distance < minDistance ? [pp, distance] : [_pp, minDistance];\n },\n [undefined, Infinity] as [any | undefined, number]\n )[0];\n \n // Case III - B\n const closestVertex = poly.reduce(\n ([closestVertex, minDistance], vertex) => {\n // Get distance from vertex to target\n const distance = this.getDistance(vertex, pos);\n // Return this vertex if the distance is smaller\n return distance < minDistance\n ? [vertex, distance]\n : [closestVertex, minDistance];\n },\n [undefined, Infinity] as [any | undefined, number]\n )[0];\n if (!closestPointOnEdge) {\n return closestVertex;\n }\n // At this point we can get both an edge and a vertex.\n // Get the closest between the edge and the vertex\n return this.getDistance(pos, closestPointOnEdge) < this.getDistance(pos, closestVertex)\n ? closestPointOnEdge\n : closestVertex;\n }\n}","import { Util } from \"./utils\";\n// import { AppComponent } from '../app.component';\nimport { HomeComponent as AppComponent } from \"src/app-ribspan/containers/home/home.component\";\nimport { Scene } from \"three\";\nimport { Printing2DLine, Printing2DData } from \"src/app/core/models\";\n\nexport class Printing2DManager {\n private scene: Scene;\n private APP: AppComponent;\n private utils: Util;\n\n public constructor(app: AppComponent) {\n this.utils = new Util();\n this.APP = app;\n this.scene = this.APP.scene;\n }\n\n public print(jobInfo: any): void {\n let dimemsionGeo = this.APP.dimensionManager.getOutlines();\n let patiosOutlines = this.APP.patiosManager.getOutlines();\n let lines: Printing2DLine[] = [\n ...patiosOutlines.lines,\n ...this.APP.existingRoofManager.getOutLines().lines,\n ...this.APP.existingWallManager.getOutLines().lines,\n ...this.APP.fasciaManager.getOutLines().lines,\n ...this.APP.eaveManager.getOutLines().lines,\n ...dimemsionGeo.lines,\n ];\n\n let texts = [...dimemsionGeo.texts, ...patiosOutlines.texts];\n\n let model: Printing2DData = {\n lines: lines,\n texts: texts,\n sceenshoot: this.APP.canvas.toDataURL(),\n meshes: null,\n info: jobInfo,\n };\n\n this.APP.printService.printPDF(model).subscribe(\n (rs) => {\n const updateInfo = {\n id: jobInfo.id,\n files: {\n engineeringFile: rs.engineeringFile,\n quotationFile: rs.quotationFile,\n thumbnailFile: rs.thumbnailFile,\n },\n };\n this.APP.onUpdateJobFiles(updateInfo);\n },\n (error) => {\n this.APP.message.error(\"PDF file upload failed\");\n this.APP.isUploading = false;\n this.APP.currentStep = 0;\n }\n );\n }\n\n public printTest() {\n let dimemsionGeo = this.APP.dimensionManager.getOutlines();\n let patiosOutlines = this.APP.patiosManager.getOutlines();\n let lines: Printing2DLine[] = [\n ...patiosOutlines.lines,\n ...this.APP.existingRoofManager.getOutLines().lines,\n ...this.APP.existingWallManager.getOutLines().lines,\n ...this.APP.fasciaManager.getOutLines().lines,\n ...this.APP.eaveManager.getOutLines().lines,\n ...dimemsionGeo.lines,\n ];\n\n let texts = [...dimemsionGeo.texts, ...patiosOutlines.texts];\n\n // let meshes = this.getAllMesh(this.scene);\n // console.log('MESHES NE', meshes);\n\n let model: Printing2DData = {\n lines: lines,\n texts: texts,\n sceenshoot: this.APP.canvas.toDataURL(),\n meshes: null,\n info: {\n userId: \"5e437a5b400f7958b4cfdbf7\",\n id: \"6466fd04426553c1543c10d8\",\n uploadFolder: \"superiorsoftware_api/upload/dataFiles\",\n pathLogo: \"superiorsoftware_api/media/\",\n pathPDF: \"\",\n quoteNo: \"ABCDE20251\",\n quoteBy: \"User SPC\",\n windClass: \"N2(W33)\",\n clientName: \"TEST\",\n siteAddress: \"\",\n date: \"2023-05-19T04:36:41.152Z\",\n builder: \"SPC Dev\",\n caseType: \"A\",\n structureType: \"To Existing Building\",\n roofPitch: 2,\n roofSheetingType: \"Coolaspan Trimspan\",\n roofOverallLength: 3810,\n roofOverallWidth: 4200,\n maxSpan: 5100,\n span: 4000,\n multiSpan: 0,\n beamType: \"Superior Beam 110mm x 65mm (Surfmist)\",\n columnType: \"Superior Post 65mm x 65mm\",\n largestBay: 3810,\n maxUpliftOfBeam: 4.55,\n upliftLoadOnBeam: 1.28,\n maxPostUplift: 1.91,\n postUplift: 2.437,\n baseFixingType: \"Dynabolt\",\n footingSize: \"Min 100mm slab\",\n maxFootingHoldDown: \"16\",\n thickness: \"50mm\",\n ABNNo: \"\",\n licenseNumber: \"\",\n company: \"SPC Dev\",\n userAddress: \"43 Commerce Circuit\",\n userEmail: \"tester@gmail.com\",\n userPhone: \"0738073955\",\n bankName: \"\",\n accountNumber: \"\",\n BSBNumber: \"\",\n suburb: \"\",\n postcode: \"\",\n state: \"\",\n phone: \"\",\n email: \"\",\n baySize: 3810,\n noOfBay: 1,\n buildingHeight: 2200,\n frontOverhang: 200,\n backOverhang: 0,\n leftOverhang: 0,\n rightOverhang: 0,\n flatBottom: \"Surfmist/Off White flat bottom\",\n bargeType: \"Coolaspan Trimspan\",\n gutterType: \"Gutter Square Line\",\n zFlashingType: \"Coolaspan Trimspan\",\n downpipeType: \"90mm PVC\",\n beamSize: \"SB110\",\n colourRoof: \"Surfmist\",\n colourBarge: \"Surfmist\",\n colourGutter: \"Surfmist\",\n colourZFlashing: \"Surfmist\",\n colourPost: \"Surfmist\",\n colourBeam: \"Surfmist\",\n colourDownpipe: \"White\",\n note: \"\\n\",\n supplyType: \"Supply and Install\",\n totalPrice: 2417.88,\n deposit: 0,\n stage1: 0,\n stage2: 0,\n finalPayment: 2417.88,\n fullAddress: \"\",\n depositText: \"Deposit\",\n stage1Text: \"Stage 1\",\n stage2Text: \"Stage 2\",\n listBay: [\n {\n index: 1,\n value: 3810,\n isCut: false,\n },\n ],\n },\n };\n\n // console.log('2D PRINTING DATA', model);\n\n //return;\n\n this.APP.printService.printPDF(model).subscribe(\n (rs) => {\n // let a = document.createElement(\"a\");\n // a.href = rs.file_url;\n // a.target = '_blank';\n // document.body.appendChild(a);\n // a.click();\n // a.remove();\n },\n (error) => {\n // this.message.error(error);\n this.APP.message.error(\"PDF file upload failed\");\n this.APP.isUploading = false;\n this.APP.currentStep = 0;\n }\n );\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { Object3D, Raycaster, Vector2 } from \"three\";\nimport { DragControls } from \"src/app/libs/DragControls\";\nimport { HomeComponent } from \"src/app-ribspan/containers/home/home.component\";\nimport { MOUSE_EVENT, OBJECT_TYPE } from \"src/app/app.constants\";\nimport { TransformControls } from \"three/examples/jsm/controls/TransformControls\";\nimport { DIMENSION_LABEL_TYPE, GEOMETRY_TYPE } from \"src/app/app.config\";\nimport { UI } from \"./ui\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport default class SelectionManager {\n static ins: SelectionManager\n\n mouse: Vector2;\n\n onMouseClickPtr = this.onMouseClick.bind(this)\n onMouseDownPtr = this.onMouseDown.bind(this)\n onMouseMovePtr = this.onMouseMove.bind(this)\n onMouseUpPtr = this.onMouseUp.bind(this)\n\n onDragStartPtr = this.onDragStart.bind(this)\n onDragEndPtr = this.onDragEnd.bind(this)\n onDragPtr = this.onDrag.bind(this)\n\n private raycaster: Raycaster;\n selectEnabled = true;\n debounceMouseMoveHld = undefined;\n\n dragControl: DragControls\n transformControl: TransformControls\n\n dragObjects: Object3D[] = []\n\n clickEventHandlers = []\n mouseHoverEventHandlers = []\n mouseMoveEventHandlers = []\n mouseDownEventHandlers = []\n mouseUpEventHandlers = []\n\n dragStartEventHandlers = []\n dragEndEventHandlers = []\n dragEventHandlers = []\n\n init() {\n SelectionManager.ins = this\n return new Promise(resolve => {\n this.dragControl = new DragControls(this.dragObjects, HomeComponent.ins.camera, HomeComponent.ins.renderer.domElement);\n this.transformControl = new TransformControls(HomeComponent.ins.camera, HomeComponent.ins.renderer.domElement);\n this.transformControl.addEventListener('change', () => { HomeComponent.ins.renderStatic() });\n this.transformControl.addEventListener('dragging-changed', function (event) {\n HomeComponent.ins.control.enabled = !event.value;\n });\n HomeComponent.ins.scene.add(this.transformControl)\n this.raycaster = this.dragControl.raycaster\n this.dragControl.addEventListener('dragstart', (event) => {\n HomeComponent.ins.control.enabled = false;\n this.onDragStart(event)\n });\n this.dragControl.addEventListener('drag', (event) => {\n this.onDrag(event)\n })\n this.dragControl.addEventListener('dragend', (event) => {\n HomeComponent.ins.control.enabled = true;\n this.onDragEnd(event)\n });\n console.log('drag control', this.dragControl.raycaster)\n resolve()\n })\n }\n\n enable() {\n this.mouse = new Vector2(0, 0);\n //this.raycaster = new Raycaster();\n\n HomeComponent.ins.canvas.addEventListener(MOUSE_EVENT.DOWN, this.onMouseDownPtr, false);\n HomeComponent.ins.canvas.addEventListener(MOUSE_EVENT.MOVE, this.onMouseMovePtr, false);\n HomeComponent.ins.canvas.addEventListener(MOUSE_EVENT.UP, this.onMouseUpPtr, false);\n HomeComponent.ins.canvas.addEventListener(MOUSE_EVENT.CLICK, this.onMouseClickPtr, false);\n\n\n }\n disable() {\n this.dragControl.deactivate()\n HomeComponent.ins.canvas.removeEventListener(MOUSE_EVENT.DOWN, this.onMouseDownPtr, false);\n HomeComponent.ins.canvas.removeEventListener(MOUSE_EVENT.MOVE, this.onMouseMovePtr, false);\n HomeComponent.ins.canvas.removeEventListener(MOUSE_EVENT.UP, this.onMouseUpPtr, false);\n HomeComponent.ins.canvas.removeEventListener(MOUSE_EVENT.CLICK, this.onMouseClickPtr, false);\n }\n enableTransformObject(intersects) {\n const obj = intersects.reduce((prev, cur) => {\n if (cur.distance < prev.distance\n && cur.object.name !== 'ground'\n && (!cur.object.userData || cur.object.userData.type !== 'PANEL_BACK')\n && (!cur.object.userData || cur.object.userData.type !== 'PANEL_FRONT')\n && (!cur.object.userData.wallPlane)\n ) {\n prev = cur\n }\n return prev\n }, { distance: 999999, object: null })\n\n if (!obj.object) {\n return;\n }\n\n this.transformControl.attach(obj.object)\n }\n executeRayCast() {\n this.raycaster.setFromCamera(this.mouse, HomeComponent.ins.camera);\n const objects = []\n HomeComponent.ins.scene.traverse((o) => {\n if(o.userData?.type === OBJECT_TYPE.HIGHLIGHT_BOX \n || o.userData?.type === GEOMETRY_TYPE.TEXT_COVER\n || o.userData?.type === OBJECT_TYPE.UI_CONTROL_EDIT_WALL_LENGTH2\n || o.userData?.type === OBJECT_TYPE.UI_CONTROL_EDIT_WALL_WIDTH1\n || o.userData?.type === OBJECT_TYPE.UI_CONTROL_EDIT_WALL_WIDTH2\n || o.userData?.type === OBJECT_TYPE.CLICK_CONTROL_CUTOUT\n || o.userData?.type === OBJECT_TYPE.CUT_BEAM\n ){\n //if(o.type === 'Mesh'){\n objects.push(o)\n }\n })\n return this.raycaster.intersectObjects(objects, true);\n }\n executeRayCastScene(){\n this.raycaster.setFromCamera(this.mouse, HomeComponent.ins.camera);\n return this.raycaster.intersectObjects(HomeComponent.ins.scene.children, true);\n }\n onMouseDown(event) {\n //this.mouseDownEventHandlers.forEach(a => { a(event) })\n }\n onMouseMove(event) {\n event.preventDefault();\n const offsetX = HomeComponent.ins.isVisibleProperty ? 400 : 0;\n this.mouse.x =\n ((event.clientX - offsetX) / HomeComponent.ins.canvas.width) * 2 - 1;\n this.mouse.y =\n -((event.clientY - 90) / HomeComponent.ins.canvas.height) * 2 + 1;\n\n // if(this.debounceMouseMoveHld){\n // clearTimeout(this.debounceMouseMoveHld)\n // }\n\n const intersects = this.executeRayCast()\n // if(intersects.length > 0){\n // this.mouseHoverEventHandlers.forEach(a => { a(intersects) })\n // }\n\n this.mouseHoverEventHandlers.forEach(a => { a(intersects) })\n\n // //temporary treat drag = ctrl + move\n // //if(event.ctrlKey){\n // this.mouseMoveEventHandlers.forEach(a => { a(event) })\n // //}\n }\n onMouseUp(event) {\n //this.mouseUpEventHandlers.forEach(a => { a(event) })\n }\n onMouseClick(event) {\n const intersects = this.executeRayCast()\n\n if (intersects.length === 0) {\n return;\n }\n // intersects.forEach(el => console.log(el.object.userData))\n\n this.selectObject(intersects, event)\n // this.enableTransformObject(intersects)\n\n this.clickEventHandlers.forEach(a => { a(intersects) })\n }\n selectObject(intersects, event){\n if (!this.selectEnabled) {\n return\n }\n const obj = intersects.reduce((prev, cur) => {\n if (cur.distance < prev.distance\n && cur.object.type != 'TransformControlsPlane'\n && cur.object.type != 'HIGHLIGHT_BOX'\n ) {\n prev = cur\n }\n return prev\n }, { distance: 999999, object: null })\n\n if (!obj.object) {\n return;\n }\n if(!UI.enableControl) {\n return\n }\n if(obj.object.userData.type && obj.object.userData.type === GEOMETRY_TYPE.TEXT_COVER){\n const labelType = obj.object.userData.labelType\n if(!labelType){\n return\n }\n\n switch(labelType){\n case DIMENSION_LABEL_TYPE.LENGTH_1:\n case DIMENSION_LABEL_TYPE.LENGTH_2:\n case DIMENSION_LABEL_TYPE.WIDTH_1:\n case DIMENSION_LABEL_TYPE.WIDTH_2:\n case DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL:\n case DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL:\n case DIMENSION_LABEL_TYPE.FRONT_OVERHANG:\n case DIMENSION_LABEL_TYPE.BACK_OVERHANG:\n case DIMENSION_LABEL_TYPE.LEFT_OVERHANG:\n case DIMENSION_LABEL_TYPE.RIGHT_OVERHANG:\n case DIMENSION_LABEL_TYPE.SPAN:\n case DIMENSION_LABEL_TYPE.MULTI_SPAN:\n case DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL:\n case DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL:\n HomeComponent.ins.dialogDimension.show(true, labelType)\n break\n case DIMENSION_LABEL_TYPE.BAY:\n HomeComponent.ins.dialogDimension.show(true, labelType, { bayIndex: obj.object.userData.bayNum })\n break\n }\n }\n if(obj.object?.userData?.type === OBJECT_TYPE.UI_CONTROL_EDIT_WALL_WIDTH1){\n if(obj.object?.userData?.left){\n if(UI.existingType == 3){\n HomeComponent.ins.sltExistingType.setSelected(2)\n } else {\n HomeComponent.ins.sltExistingType.setSelected(0)\n }\n } else if (obj.object?.userData?.right){\n if(UI.existingType == 3){\n HomeComponent.ins.sltExistingType.setSelected(1)\n } else {\n HomeComponent.ins.sltExistingType.setSelected(0)\n }\n }\n } else if(obj.object?.userData?.type === OBJECT_TYPE.UI_CONTROL_EDIT_WALL_LENGTH2){\n HomeComponent.ins.sldExistingLength2.setValue(0);\n } else if(obj.object?.userData?.type === OBJECT_TYPE.UI_CONTROL_EDIT_WALL_WIDTH2){\n HomeComponent.ins.sldExistingWidth2.setValue(0);\n }\n if(obj.object?.userData?.type === OBJECT_TYPE.CLICK_CONTROL_CUTOUT){\n HomeComponent.ins.sltCutOut.setSelected(1);\n } else if(obj.object?.userData?.type === OBJECT_TYPE.CUT_BEAM){\n const bayIndex = obj.object?.userData.bayIndex\n UI.listBay[bayIndex].isCut = !!!UI.listBay[bayIndex].isCut\n HomeComponent.ins.dialogEditBay.onOK()\n }\n }\n onDragStart(event) {\n this.dragStartEventHandlers.forEach(a => { a(event) })\n }\n onDragEnd(event) {\n this.dragEndEventHandlers.forEach(a => { a(event) })\n }\n onDrag(event) {\n this.dragEventHandlers.forEach(a => { a(event) })\n }\n\n\n addEventListener(event, handler, dragObject?) {\n if (event === MOUSE_EVENT.CLICK) {\n if(this.clickEventHandlers.indexOf(handler) < 0){\n this.clickEventHandlers.push(handler)\n }\n }\n if (event === MOUSE_EVENT.HOVER) {\n if(this.mouseHoverEventHandlers.indexOf(handler) < 0){\n this.mouseHoverEventHandlers.push(handler)\n }\n }\n if (event === MOUSE_EVENT.DOWN) {\n if(this.mouseDownEventHandlers.indexOf(handler) < 0){\n this.mouseDownEventHandlers.push(handler)\n }\n }\n if (event === MOUSE_EVENT.MOVE) {\n if(this.mouseMoveEventHandlers.indexOf(handler) < 0){\n this.mouseMoveEventHandlers.push(handler)\n }\n }\n if (event === MOUSE_EVENT.UP) {\n if(this.mouseUpEventHandlers.indexOf(handler) < 0){\n this.mouseUpEventHandlers.push(handler)\n }\n }\n if (event == MOUSE_EVENT.DRAG_START) {\n if(this.dragStartEventHandlers.indexOf(handler) < 0){\n this.dragStartEventHandlers.push(handler)\n }\n }\n if (event == MOUSE_EVENT.DRAG_END) {\n if(this.dragEndEventHandlers.indexOf(handler) < 0){\n this.dragEndEventHandlers.push(handler)\n }\n }\n if (event == MOUSE_EVENT.DRAG) {\n if(this.dragEventHandlers.indexOf(handler) < 0){\n this.dragEventHandlers.push(handler)\n }\n \n this.dragObjects.push(dragObject)\n }\n }\n removeEventListener(event, handler) {\n if (event === MOUSE_EVENT.CLICK) {\n const idx = this.clickEventHandlers.indexOf(handler)\n if (idx > -1) {\n this.clickEventHandlers.splice(idx, 1)\n }\n\n }\n if (event === MOUSE_EVENT.HOVER) {\n const idx = this.mouseHoverEventHandlers.indexOf(handler)\n if (idx > -1) {\n this.mouseHoverEventHandlers.splice(idx, 1)\n }\n }\n if (event === MOUSE_EVENT.DOWN) {\n const idx = this.mouseDownEventHandlers.indexOf(handler)\n if (idx > -1) {\n this.mouseDownEventHandlers.splice(idx, 1)\n }\n }\n if (event === MOUSE_EVENT.MOVE) {\n const idx = this.mouseMoveEventHandlers.indexOf(handler)\n if (idx > -1) {\n this.mouseMoveEventHandlers.splice(idx, 1)\n }\n }\n if (event === MOUSE_EVENT.UP) {\n const idx = this.mouseUpEventHandlers.indexOf(handler)\n if (idx > -1) {\n this.mouseUpEventHandlers.splice(idx, 1)\n }\n }\n }\n}","import {\n CONFIG,\n OFFSET_GUTTER_TO_WALL,\n PATIOS_ROOF_TYPE,\n} from \"src/app/app.config\";\nimport { environment } from \"src/environments/environment\";\nimport { Scene } from \"three\";\nimport { GEOMETRY_CATEGORY, GEOMETRY_TYPE, INIT } from \"src/app/app.config\";\nimport {\n BUILDING_SIDE,\n CONNECTION_TYPE,\n CUTOUT_ENABLE,\n EXISTING_BUILDING_CONFIG,\n FASCIA_BRACKET_FIT,\n RAKECUT_TYPE,\n} from \"src/app/app.constants\";\nimport { HomeComponent } from \"src/app-ribspan/containers/home\";\nimport { PatiosBackFlyOverManager } from \"./back_flyover\";\nimport { ExistingBuildingManager } from \"./existing_building\";\nimport { FasciaManager } from \"./fascia/index\";\nimport { PatiosFlyOverManager } from \"./flyover\";\nimport { PatiosFreeStandingManager } from \"./free_standing\";\nimport { PatiosGableFreeStandingManager } from \"./gable_free_standing\";\nimport { PatiosGableLRFlyOverManager } from \"./gable_lr_flyover\";\nimport { GeometryManager } from \"./geometry.manager\";\nimport { UI } from \"./ui\";\nimport { GableFBExistingBuildingManager } from \"./gable_fb_existing_building\";\nimport { PatiosGableFBFlyOverManager } from \"./gable_fb_flyover\";\nimport { GableLRFasciaManager } from \"./gable_lr_fascia\";\nimport { GableFBFasciaManager } from \"./gable_fb_fascia\";\nimport _ from \"lodash\";\nimport { Util } from \"./utils\";\n\ndeclare var $;\n\nexport class UIManager {\n private scene: Scene;\n private APP: HomeComponent;\n private debouncingHandle;\n private debouncingRibspanInfoHandle;\n private debouncingOverallRoofLengthHandle;\n private debouncingTimeout = 500; //ms\n private ignoreEnableCutoutEvent = false;\n private utils: Util;\n public previousShouldSnapFasciaRoofToWall: Boolean = false;\n public shouldSnapFasciaRoofToWall: Boolean = false;\n\n // private totalBaySize: number;\n constructor(app: HomeComponent) {\n this.APP = app;\n this.scene = app.scene;\n this.utils = new Util();\n\n // Should register this event before handle any action\n this.APP.sldBackOverhang.addAction(this.onBackOverhangChanged.bind(this));\n\n this.APP.sltFasciaUpstandBrackets.addAction(\n this.onFasciaUpstandBracketChanged.bind(this)\n );\n this.APP.sldSpan.addAction(this.updateOverallValue.bind(this));\n this.APP.sldMultiSpan.addAction(this.updateOverallValue.bind(this));\n this.APP.sldLeftOverhang.addAction(this.updateOverallValue.bind(this));\n this.APP.sldRightOverhang.addAction(this.updateOverallValue.bind(this));\n this.APP.sldBackOverhang.addAction(this.updateOverallValue.bind(this));\n this.APP.sldFrontOverhang.addAction(this.updateOverallValue.bind(this));\n this.APP.dialogEditBay.addAction(this.updateOverallValue.bind(this));\n this.APP.dialogEditBay.addAction(this.onDialogEditBayChanged.bind(this));\n this.APP.sldSpan.addAction(this.onSpanChanged.bind(this));\n this.APP.sldBaySize.addAction(this.onBaySizeChanged.bind(this));\n\n this.APP.sltStructureType.addAction(this.onStructureTypeChanged.bind(this));\n this.APP.sldExistingLength2.addAction(this.onLength2Changed.bind(this));\n this.APP.sldExistingWidth1.addAction(this.onWidth1Changed.bind(this));\n this.APP.sldExistingWidth2.addAction(this.onWidth2Changed.bind(this));\n this.APP.sldBuildingHeight.addAction(\n this.onBuildingHeightChanged.bind(this)\n );\n this.APP.sldExistingWallHeight.addAction(\n this.onExistingWallHeightChanged.bind(this),\n 1\n );\n\n this.APP.sltBeamType.addAction(this.onBeamTypeChanged.bind(this));\n this.APP.sltColumnType.addAction(this.onColumnTypeChanged.bind(this));\n this.APP.sltBaseFixingType.addAction(\n this.onBaseFixingTypeChanged.bind(this)\n );\n\n this.APP.sltCutOut.addAction(this.onCutoutChanged.bind(this));\n this.APP.sltLeftCutType.addAction(this.onRakeCutLeftChanged.bind(this));\n this.APP.sltRightCutType.addAction(this.onRakeCutRightChanged.bind(this));\n [\n this.APP.sldEaveWidth,\n this.APP.sldExistingWallHeight,\n this.APP.sldFasciaDepth,\n this.APP.sldBaySize,\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.sltExistingType,\n this.APP.sltStructureType,\n this.APP.sltWindClass,\n this.APP.sltWallType,\n this.APP.sltExistingRoofType,\n this.APP.sldMultiSpan,\n this.APP.sldBuildingHeight,\n this.APP.sldFrontOverhang,\n this.APP.sldBackOverhang,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldFlyOverBracketHeight,\n this.APP.sldNoOfBay,\n this.APP.dialogEditBay,\n this.APP.sltExistingRoofPitch,\n this.APP.sldRoofOverallLength,\n this.APP.sldRoofOverallWidth,\n this.APP.sldMinHeight,\n this.APP.sltLeftCutType,\n this.APP.sltRightCutType,\n this.APP.sldLeftCutVertical,\n this.APP.sldLeftCutHorizontal,\n this.APP.sldRightCutVertical,\n this.APP.sldRightCutHorizontal,\n this.APP.sltFlatBottom,\n this.APP.sltZFlashingType,\n // -----------------------\n this.APP.sltRoofSheetingType,\n this.APP.sltBaseFixingType,\n this.APP.sltRoofThickness,\n this.APP.sltBargeType,\n this.APP.sltDripBarge,\n this.APP.sltDownpipeType,\n this.APP.sltGutterType,\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltHouseBeamSize,\n this.APP.sltReceiverType,\n this.APP.sltColumnType,\n this.APP.sltColourRoof,\n this.APP.sltColourBarge,\n this.APP.sltColourGutter,\n this.APP.sltColourZFlashing,\n this.APP.sltColourPost,\n this.APP.sltColourBeam,\n this.APP.sltColourBracket,\n this.APP.sltColourFasciaBracket,\n this.APP.sltColourDownpipe,\n this.APP.sltFasciaUpstandBrackets,\n this.APP.sltUpFasciaUpstandBracket,\n this.APP.chkRapidSetCement,\n this.APP.chkHasHouseBeam,\n ].forEach((c) => c.addAction(this.onUIChanged.bind(this), 4));\n\n [\n this.APP.dialogEditBay,\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sltWindClass,\n this.APP.sldRoofOverallLength,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldFrontOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltBeamSize,\n ].forEach((c) => c.addAction(this.onCalcRibspanInfo.bind(this), 4));\n\n this.APP.dialogEditBay.addAction(this.setBeamSize.bind(this));\n this.APP.sldBaySize.addAction(this.setBeamSize.bind(this));\n this.APP.sldSpan.addAction(this.setBeamSize.bind(this));\n this.APP.sltWindClass.addAction(this.setBeamSize.bind(this));\n this.APP.sltBeamType.addAction(this.setBeamSize.bind(this));\n\n this.APP.sldRoofOverallLength.addAction(\n this.onRoofOverallLengthChanged.bind(this)\n );\n\n this.APP.sltWindClass.addAction(this.setMaxSpan.bind(this));\n\n [\n this.APP.sltCutOut,\n this.APP.sltStructureType,\n this.APP.sldExistingWallHeight,\n this.APP.sldExistingWidth1,\n this.APP.sldEaveWidth,\n this.APP.sltRoofPitch,\n this.APP.sltExistingType,\n this.APP.sltRoofSheetingType,\n this.APP.sltRoofThickness,\n ].forEach((c) =>\n c.addAction(this.handleSnapRoofToExistingWhenCutOut.bind(this), 5)\n );\n }\n\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.updateOverallValue(null, null);\n this.APP.sltStructureType.setSelected(INIT.CONNECTION_TYPE); // <= setSelected doesn't work in case value = 0, need to call onStructureTypeChanged instead\n this.onStructureTypeChanged(null, INIT.CONNECTION_TYPE);\n this.validateCutout();\n\n //this.setDefaultValueForTest();\n resolve();\n });\n }\n\n setDefaultValueForTest() {\n if (environment.production) {\n return;\n }\n\n // this.APP.sltExistingType.setSelected(1);\n // this.APP.sldExistingWidth1.setValue(2000);\n // this.APP.sldExistingLength2.setValue(3000);\n // this.APP.sldExistingWidth2.setValue(2800);\n\n setTimeout(() => {\n //this.APP.sltCutOut.setSelected(1);\n this.APP.sltStructureType.setSelected(CONNECTION_TYPE.FASCIA);\n this.APP.sltColourRoof.setSelected(0x304c3c);\n }, 1000);\n }\n\n onUIChanged(previousValue: number, currentValue: number) {\n this.validateCutout();\n this.validateRakeCut();\n this.APP.onSetMaxValue();\n if (this.debouncingHandle) {\n clearTimeout(this.debouncingHandle);\n }\n this.debouncingHandle = setTimeout(() => {\n this.onUIChangedDefer(previousValue, currentValue);\n }, this.debouncingTimeout);\n\n this.APP.renderStatic();\n }\n onCalcRibspanInfo(previousValue: number, currentValue: number) {\n if (this.debouncingRibspanInfoHandle) {\n clearTimeout(this.debouncingRibspanInfoHandle);\n }\n this.debouncingRibspanInfoHandle = setTimeout(() => {\n HomeComponent.ins.calcRibSpanInfo();\n }, this.debouncingTimeout);\n }\n onUIChangedDefer(previousValue: number, currentValue: number) {\n this.APP.onCalcPrice();\n this.APP.renderStatic();\n }\n onStructureTypeChanged(previousValue: number, currentValue: number) {\n this.scene.remove(\n ...this.scene.children.filter(\n (o) => o.userData.category === GEOMETRY_CATEGORY.PATIOS\n )\n );\n // this.APP.dimensionManager.unload();\n\n if (this.APP.patiosManager) {\n this.APP.patiosManager.destroy();\n this.APP.patiosManager = null;\n }\n\n this.APP.sldBackOverhang.isDisabled = false;\n this.APP.sldBuildingHeight.isDisabled = true;\n let _flag = false;\n const _curVal = +currentValue;\n if (_curVal === CONNECTION_TYPE.FREE_STANDING) {\n this.APP.baseFixingTypeList = this.APP.objects.baseFixingTypeList.filter(\n (f) => f.id === 1\n );\n this.APP.sltBaseFixingType.setSelected(1);\n } else {\n this.APP.baseFixingTypeList = [...this.APP.objects.baseFixingTypeList];\n }\n switch (_curVal) {\n case CONNECTION_TYPE.EXISTING:\n if (\n this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF &&\n this.APP.isFBRoof\n ) {\n this.APP.patiosManager = new GableFBExistingBuildingManager(this.APP);\n } else {\n this.APP.patiosManager = new ExistingBuildingManager(this.APP);\n }\n break;\n case CONNECTION_TYPE.FLY_OVER:\n if (\n this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF &&\n !this.APP.isFBRoof\n ) {\n this.APP.patiosManager = new PatiosGableLRFlyOverManager(this.APP);\n } else if (\n this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF &&\n this.APP.isFBRoof\n ) {\n this.APP.patiosManager = new PatiosGableFBFlyOverManager(this.APP);\n } else {\n this.APP.patiosManager = new PatiosFlyOverManager(this.APP);\n }\n break;\n case CONNECTION_TYPE.BLACK_FLY_OVER:\n this.APP.patiosManager = new PatiosBackFlyOverManager(this.APP);\n break;\n case CONNECTION_TYPE.FASCIA:\n case CONNECTION_TYPE.BACK_FASCIA_UPSTAND:\n case CONNECTION_TYPE.FASCIA_UPSTAND:\n if (\n this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF &&\n !this.APP.isFBRoof\n ) {\n this.APP.patiosManager = new GableLRFasciaManager(this.APP);\n } else if (\n this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF &&\n this.APP.isFBRoof\n ) {\n this.APP.patiosManager = new GableFBFasciaManager(this.APP);\n } else {\n this.APP.patiosManager = new FasciaManager(this.APP);\n }\n break;\n case CONNECTION_TYPE.FREE_STANDING:\n if (this.APP.patiosRoofType === PATIOS_ROOF_TYPE.FLAT_ROOF) {\n this.APP.patiosManager = new PatiosFreeStandingManager(this.APP);\n break;\n } else {\n this.APP.patiosManager = new PatiosGableFreeStandingManager(this.APP);\n break;\n }\n }\n\n UI.oldBackOverhang = this.APP.sldBackOverhang.currentValue;\n\n this.APP.patiosManager\n .load()\n .then(() => {\n this.APP.dimensionManager.load();\n // this.APP.patiosManager.loadBracket(this.APP.flyoverBracketNumber); // số lượng bracket mặc định load lần đầu\n return this.APP.groundManager.load();\n })\n .then(() => {\n this.APP.sltFasciaUpstandBrackets.setDisable(true);\n\n if (this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF) {\n if (!this.APP.isFBRoof) {\n this.APP.sldBackOverhang.setValue(200);\n this.APP.sldBackOverhang.setMin(200);\n this.APP.sldFrontOverhang.setValue(200);\n this.APP.sldFrontOverhang.setMin(200);\n this.APP.sldBackOverhang.setDisable(false);\n this.APP.sldBackOverhang.setDisable(false);\n\n this.APP.sldLeftOverhang.setMin(0);\n this.APP.sldRightOverhang.setMin(0);\n } else {\n this.APP.sldLeftOverhang.setValue(200);\n this.APP.sldLeftOverhang.setMin(200);\n this.APP.sldRightOverhang.setValue(200);\n this.APP.sldRightOverhang.setMin(200);\n\n this.APP.sldBackOverhang.setMin(0);\n this.APP.sldFrontOverhang.setMin(0);\n }\n\n this.APP.sltLeftCutType.setSelected(0);\n this.APP.sltRightCutType.setSelected(0);\n this.APP.sltLeftCutType.setDisable(true);\n this.APP.sltRightCutType.setDisable(true);\n\n this.APP.sldMultiSpan.setValue(0);\n this.APP.sldMultiSpan.setDisable(true);\n } else {\n this.APP.sldBackOverhang.setMin(0);\n this.APP.sldFrontOverhang.setMin(0);\n\n this.APP.sltLeftCutType.setDisable(false);\n this.APP.sltRightCutType.setDisable(false);\n\n this.APP.sldMultiSpan.setDisable(false);\n }\n\n switch (_curVal) {\n case CONNECTION_TYPE.EXISTING:\n this.APP.sldBackOverhang.setValue(0);\n this.APP.sldBuildingHeight.isDisabled = false;\n this.APP.sldBackOverhang.isDisabled = true;\n this.APP.sldExistingWallHeight.isDisabled = false;\n if (this.APP.sltExistingType.currentValue == 3) {\n _flag = true;\n }\n break;\n case CONNECTION_TYPE.FLY_OVER:\n this.APP.sldExistingWallHeight.isDisabled = false;\n if (this.APP.sldBackOverhang.currentValue == 0) {\n this.APP.sldBackOverhang.setValue(UI.oldBackOverhang);\n }\n break;\n case CONNECTION_TYPE.BLACK_FLY_OVER:\n if (this.APP.sldBackOverhang.currentValue == 0) {\n this.APP.sldBackOverhang.setValue(UI.oldBackOverhang);\n }\n this.APP.sldExistingWallHeight.isDisabled = false;\n break;\n case CONNECTION_TYPE.FASCIA:\n case CONNECTION_TYPE.BACK_FASCIA_UPSTAND:\n case CONNECTION_TYPE.FASCIA_UPSTAND:\n this.APP.sltFasciaUpstandBrackets.setSelected(\n _curVal == CONNECTION_TYPE.FASCIA_UPSTAND ||\n _curVal == CONNECTION_TYPE.BACK_FASCIA_UPSTAND\n ? CONFIG.fasciaUpstandBrackets.max\n : 0\n );\n this.APP.sltUpFasciaUpstandBracket.setValue(\n _curVal == CONNECTION_TYPE.BACK_FASCIA_UPSTAND\n );\n this.APP.sldBackOverhang.setValue(0);\n this.APP.sldBackOverhang.isDisabled = true;\n //Bang - 2022.03.22\n if (this.APP.sltFasciaUpstandBrackets.currentValue > 0) {\n this.APP.sldBackOverhang.setValue(UI.oldBackOverhang);\n this.APP.sldBackOverhang.isDisabled = false;\n } else {\n this.APP.sldBackOverhang.setValue(0);\n this.APP.sldBackOverhang.isDisabled = true;\n }\n this.APP.sldBuildingHeight.setValue(\n this.APP.sldExistingWallHeight.currentValue\n );\n this.APP.sldExistingWallHeight.isDisabled = false;\n if (\n UI.structureType == CONNECTION_TYPE.FASCIA &&\n UI.existingRoofType == BUILDING_SIDE.BOTH &&\n UI.patiosRoofType == PATIOS_ROOF_TYPE.FLAT_ROOF\n ) {\n if (!this.calcShouldSnapRoofToExistingWhenCutout()) {\n this.APP.sldExistingLength.setValue(\n UI.totalBayLength + UI.eaveWidth * 2\n );\n }\n _flag = true;\n }\n this.APP.sltFasciaUpstandBrackets.setDisable(\n _curVal == CONNECTION_TYPE.FASCIA_UPSTAND ? false : true\n );\n\n if (_curVal === CONNECTION_TYPE.FASCIA) {\n this.APP.sltUpFasciaUpstandBracket.setValue(false);\n }\n break;\n case CONNECTION_TYPE.FREE_STANDING:\n if (this.APP.sldBackOverhang.currentValue == 0) {\n this.APP.sldBackOverhang.setValue(UI.oldBackOverhang);\n }\n this.APP.sldBuildingHeight.isDisabled = false;\n this.APP.sldExistingWallHeight.isDisabled = true;\n // this.sldExistingWidth1.setValue(0);\n break;\n }\n if (this.APP.sltExistingType.currentValue == 3) {\n this.onExistingTypeChanged(null, 3);\n }\n this.APP.sldLeftOverhang.isDisabled = _flag;\n this.APP.sldRightOverhang.isDisabled = _flag;\n this.APP.patiosManager.update(null, null);\n this.setColumnType(\"\", _curVal, -1);\n this.onExistingWallHeightChanged(\n 0,\n this.APP.sldExistingWallHeight.currentValue\n );\n this.APP.renderStatic();\n });\n }\n\n updateOverallValue(pre: number, cur: number) {\n let totalBaySize = this.APP.dialogEditBay.totalBaySize;\n let _roofOverallWidth =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldBackOverhang.currentValue;\n if (\n HomeComponent.ins.patiosRoofType == PATIOS_ROOF_TYPE.GABLE_ROOF &&\n HomeComponent.ins.isFBRoof\n ) {\n _roofOverallWidth =\n UI.span + UI.multiSpan + UI.overhangLeft + UI.overhangRight;\n }\n\n this.APP.sldRoofOverallWidth.setValue(_roofOverallWidth);\n\n let minOverallLength = UI.overhangLeft + UI.overhangRight + 1000;\n let _roofOverallLength =\n UI.totalBayLength + UI.overhangLeft + UI.overhangRight;\n if (\n HomeComponent.ins.patiosRoofType == PATIOS_ROOF_TYPE.GABLE_ROOF &&\n HomeComponent.ins.isFBRoof\n ) {\n minOverallLength = UI.overhangFront + UI.overhangBack + 1000;\n _roofOverallLength =\n UI.totalBayLength + UI.overhangFront + UI.overhangBack;\n }\n // Update min of sldRoodOverallLength\n HomeComponent.ins.sldRoofOverallLength.setValue(_roofOverallLength);\n HomeComponent.ins.sldRoofOverallLength.setMin(minOverallLength);\n //this.onDialogEditBayChanged();\n //this.APP.renderStatic();\n }\n public onRoofOverallLengthChanged(previousValue, currentValue) {\n HomeComponent.ins.getRoofPercent(UI.roofOverallLength);\n console.log(\n \"👉 ~ file: ui.manager.ts:521 ~ UIManager ~ onRoofOverallLengthChanged ~ UI.roofOverallLength:\",\n UI.roofOverallLength\n );\n if (previousValue == currentValue) {\n return;\n }\n\n if (this.debouncingOverallRoofLengthHandle) {\n clearTimeout(this.debouncingOverallRoofLengthHandle);\n }\n this.debouncingOverallRoofLengthHandle = setTimeout(() => {\n HomeComponent.ins.calcPostSpacingInfoWhenOverallRoofLengthChanged();\n }, this.debouncingTimeout);\n }\n public setMaxSpan() {\n if (this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF) {\n if (UI.windClass == 0 || UI.windClass == 1) {\n this.APP.maxSpan = 8500;\n this.APP.maxSpanText = \"8500\";\n } else {\n this.APP.maxSpan = 7000;\n this.APP.maxSpanText = \"7000\";\n }\n }\n }\n\n public setBeamSize() {\n if (this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF) {\n let minBeam = 1;\n let maxBeam = 4;\n\n let width = UI.span;\n let length = this.APP.dialogEditBay.totalBaySize;\n\n if (UI.windClass == 0 || UI.windClass == 1) {\n if (width <= 4000 || length <= 4000) {\n minBeam = 1;\n } else if (width <= 7000 || length <= 6000) {\n minBeam = 2;\n } else if (width <= 8500 || length <= 8000) {\n minBeam = 3;\n } else {\n minBeam = 3;\n }\n } else {\n if (width <= 4000 || length <= 4000) {\n minBeam = 2;\n } else if (width <= 7000 || length <= 6000) {\n minBeam = 3;\n } else {\n minBeam = 3;\n }\n }\n\n this.APP.beamSizeList = this.APP.objects.beamSizeList.filter(\n (el) =>\n el.beamType == this.APP.sltBeamType.currentValue &&\n el.id >= minBeam &&\n el.id <= maxBeam\n );\n this.APP.sltBeamSize.setSelectedAndHandleEvent(minBeam);\n }\n }\n\n public onFasciaUpstandBracketChanged(prevVal: number, curVal: number): void {\n // Bang - 2022.03.22\n if (\n UI.upstandBraketType > 0 &&\n !HomeComponent.ins.sltFasciaUpstandBrackets.isDisabled\n ) {\n this.APP.sldBackOverhang.isDisabled = false;\n this.APP.sldBackOverhang.setValue(UI.oldBackOverhang);\n } else {\n this.APP.sldBackOverhang.setValue(0);\n this.APP.sldBackOverhang.isDisabled = true;\n }\n }\n\n public onWidth1Changed(prevVal: number, curVal: number): void {\n if (curVal < 620) {\n this.APP.sldExistingLength2.setValue(0);\n this.APP.sldExistingLength2Visible = false;\n } else {\n this.APP.sldExistingLength2Visible = true;\n }\n\n //change baysize when can cutout and can not cutout\n if (this.APP.sltCutOut.currentValue == 1) {\n //let cutoutCondition = this.APP.patiosManager.cutoutCondition.map(x => x.currentValue).reduce((a,b) => a + b, 0) - this.APP.sldExistingWidth1.currentValue >= EXISTING_BUILDING_CONFIG.CUTOUT_ALLOW;\n if (this.APP.patiosManager.cutoutCondition && !window[\"cutout\"]) {\n this.setEnableCutout(true);\n window[\"cutout\"] = true;\n } else if (!this.APP.patiosManager.cutoutCondition) {\n this.setEnableCutout(false);\n window[\"cutout\"] = false;\n }\n }\n //this.validateCutout();\n }\n public onWidth2Changed(prevVal: number, curVal: number): void {\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES &&\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n if (curVal == 0) {\n this.APP.patiosManager.ignoreBayEvent = true;\n setTimeout(() => {\n this.APP.patiosManager.ignoreBayEvent = false;\n }, 2000);\n\n this.APP.setPatiosWidth(\n this.APP.dialogEditBay.totalBaySize -\n (this.APP.existingWallManager.geo_existingWallW2.width +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK) *\n 2\n );\n } else {\n let totalExistingWidth =\n this.APP.sldExistingLength.currentValue +\n this.APP.sldExistingLength2.currentValue * 2 +\n (this.APP.existingWallManager.geo_existingWallW2.width +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK) *\n 2;\n if (\n this.APP.sltStructureType.currentValue == 1 ||\n this.APP.sltStructureType.currentValue == 2\n ) {\n totalExistingWidth =\n this.APP.sldExistingLength.currentValue +\n this.APP.sldExistingLength2.currentValue * 2 +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK * 2;\n }\n if (this.APP.dialogEditBay.totalBaySize < totalExistingWidth) {\n this.APP.patiosManager.ignoreBayEvent = true;\n setTimeout(() => {\n this.APP.patiosManager.ignoreBayEvent = false;\n }, 2000);\n\n this.APP.setPatiosWidth(totalExistingWidth);\n }\n }\n }\n }\n public onLength2Changed(prevVal: number, curVal: number): void {\n if (curVal < 1200) {\n this.APP.sldExistingWidth2.setValue(0);\n this.APP.sldExistingWidth2Visible = false;\n } else {\n this.APP.sldExistingWidth2Visible = true;\n }\n\n if (!prevVal) prevVal = curVal;\n let diff = curVal - prevVal;\n\n this.onAdjustListBayWhenCutOut(diff);\n }\n public onAdjustListBayWhenCutOut(diff) {\n if (UI.cutOutType == CUTOUT_ENABLE.YES) {\n if (\n UI.existingType == BUILDING_SIDE.LEFT ||\n UI.existingType == BUILDING_SIDE.RIGHT\n ) {\n let baySize = UI.baySize + diff / UI.noOfBay;\n if (baySize > CONFIG.baySize.max) {\n let noOfBay = UI.noOfBay + 1;\n this.ignoreEnableCutoutEvent = true;\n this.APP.sldNoOfBay.setValue(noOfBay);\n baySize = UI.totalBayLength / noOfBay;\n }\n this.ignoreEnableCutoutEvent = true;\n this.APP.sldBaySize.setValue(Math.ceil(baySize));\n } else {\n let baySize =\n UI.baySize + (diff * 2) / this.APP.sldNoOfBay.currentValue;\n if (baySize > CONFIG.baySize.max) {\n let noOfBay = this.APP.sldNoOfBay.currentValue + 1;\n this.ignoreEnableCutoutEvent = true;\n this.APP.sldNoOfBay.setValue(noOfBay);\n baySize = UI.totalBayLength / noOfBay;\n }\n this.ignoreEnableCutoutEvent = true;\n this.APP.sldBaySize.setValue(Math.ceil(baySize));\n }\n }\n }\n public onCutoutChanged(prevVal: number, curVal: number) {\n //this.APP.patiosManager.enableCutout(curVal == 1 && this.APP.patiosManager.cutoutCondition);\n //window['baySize'] = this.APP.sldBaySize.currentValue;\n this.setEnableCutout(curVal == 1 && this.APP.patiosManager.cutoutCondition);\n }\n public onRakeCutLeftChanged(pre: number, cur: number) {\n //If left cut is ON disable left over hang\n this.APP.sldLeftOverhang.setDisable(false);\n if (cur != RAKECUT_TYPE.NONE) {\n this.APP.sldLeftOverhang.setValue(0);\n this.APP.sldLeftOverhang.setDisable(true);\n }\n\n if (cur == RAKECUT_TYPE.NONE) {\n this.APP.sldLeftCutHorizontal.setValue(0);\n }\n }\n public onRakeCutRightChanged(pre: number, cur: number) {\n //If right cut is ON disable right over hang\n this.APP.sldRightOverhang.setDisable(false);\n if (cur != RAKECUT_TYPE.NONE) {\n this.APP.sldRightOverhang.setValue(0);\n this.APP.sldRightOverhang.setDisable(true);\n }\n\n if (cur == RAKECUT_TYPE.NONE) {\n this.APP.sldRightCutHorizontal.setValue(0);\n }\n }\n\n // this is hight priority (1), must be called first to setup BUILDING HEIGHT for patios manager to use\n private onExistingWallHeightChanged(prevVal: number, curVal: number): void {\n const currentBeam = GeometryManager.Instance().getBeam();\n const _typeVal = +this.APP.sltStructureType.currentValue;\n let _buildingHeightMax = 0;\n if (_typeVal === 0) {\n // Existing Building\n _buildingHeightMax =\n curVal - EXISTING_BUILDING_CONFIG.BUILDING_HEIGHT_OFFSET;\n this.APP.sldBuildingHeight.setMax(_buildingHeightMax);\n if (\n curVal - this.APP.sldBuildingHeight.currentValue <=\n EXISTING_BUILDING_CONFIG.BUILDING_HEIGHT_OFFSET\n ) {\n this.APP.sldBuildingHeight.setValue(_buildingHeightMax);\n }\n } else if (_typeVal === 3 || _typeVal === 5) {\n // Fascia\n _buildingHeightMax = CONFIG.eaveHeight.max;\n this.APP.sldBuildingHeight.setMax(_buildingHeightMax);\n this.APP.sldBuildingHeight.setValue(curVal);\n } else if (_typeVal === 4) {\n _buildingHeightMax = CONFIG.height.free_standing_max;\n this.APP.sldBuildingHeight.setMax(_buildingHeightMax);\n this.APP.sldBuildingHeight.setValue(curVal);\n } else {\n // _buildingHeightMax= CONFIG.height.max;\n _buildingHeightMax = CONFIG.eaveHeight.max;\n this.APP.sldBuildingHeight.setMax(_buildingHeightMax);\n this.APP.sldBuildingHeight.setValue(\n curVal +\n this.APP.sldFlyOverBracketHeight.currentValue +\n currentBeam.height\n );\n }\n\n this.setColumnType(\"\", _typeVal, -1);\n this.APP.renderStatic();\n }\n\n public onExistingWallHeightChanged2(prevVal: number, curVal: number): void {}\n\n private changeToExistingTypeBoth() {\n this.setEnableCutout(\n this.APP.sltCutOut.currentValue == 1 &&\n this.APP.patiosManager.cutoutCondition\n );\n }\n private setEnableCutout(enable: boolean) {\n if (\n this.APP.sltStructureType.currentValue == CONNECTION_TYPE.FLY_OVER ||\n this.APP.sltStructureType.currentValue == CONNECTION_TYPE.BLACK_FLY_OVER\n ) {\n //Change patios width o day thi khong cho length1 chay theo patios width\n //set bien nay true thi length1 khong chay theo patios width\n this.APP.patiosManager.ignoreBayEvent = true;\n setTimeout(() => {\n this.APP.patiosManager.ignoreBayEvent = false;\n }, 3000);\n\n if (enable) {\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.NONE) {\n this.APP.setPatiosWidth(this.APP.sldExistingLength.currentValue);\n } else if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT\n ) {\n this.APP.setPatiosWidth(\n CONFIG.baySize.min + this.APP.sldExistingLength2.currentValue\n );\n } else {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n this.APP.setPatiosWidth(\n this.APP.sldExistingLength.currentValue +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK * 2 +\n this.APP.sldExistingLength2.currentValue * 2\n );\n } else {\n this.APP.setPatiosWidth(\n this.APP.sldExistingLength.currentValue +\n this.APP.sldExistingLength2.currentValue * 2\n );\n }\n }\n } else {\n this.APP.setPatiosWidth(\n this.APP.sldExistingLength.currentValue +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK * 2\n );\n this.APP.sltCutOut.setSelected(\"0\");\n }\n } else if (\n this.APP.sltStructureType.currentValue == CONNECTION_TYPE.FASCIA ||\n this.APP.sltStructureType.currentValue ==\n CONNECTION_TYPE.BACK_FASCIA_UPSTAND ||\n this.APP.sltStructureType.currentValue == CONNECTION_TYPE.FASCIA_UPSTAND\n ) {\n this.APP.patiosManager.ignoreBayEvent = true;\n setTimeout(() => {\n this.APP.patiosManager.ignoreBayEvent = false;\n }, 1000);\n\n if (enable) {\n if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT\n ) {\n this.APP.setPatiosWidth(\n CONFIG.baySize.min + this.APP.sldExistingLength2.currentValue\n );\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n if (\n UI.structureType == CONNECTION_TYPE.FASCIA &&\n this.calcShouldSnapRoofToExistingWhenCutout()\n ) {\n this.APP.setPatiosWidth(\n UI.existingLength1 + UI.existingLength2 * 2\n );\n } else {\n this.APP.setPatiosWidth(\n UI.existingLength1 + UI.existingLength2 * 2 - UI.eaveWidth * 2\n );\n }\n }\n } else {\n this.APP.setPatiosWidth(\n this.APP.sldExistingLength.currentValue -\n this.APP.sldEaveWidth.currentValue * 2\n );\n this.APP.sltCutOut.setSelected(\"0\");\n }\n } else if (\n this.APP.sltStructureType.currentValue == CONNECTION_TYPE.EXISTING\n ) {\n //Change patios width o day thi khong cho length1 chay theo patios width\n //set bien nay true thi length1 khong chay theo patios width\n this.APP.patiosManager.ignoreBayEvent = true;\n setTimeout(() => {\n this.APP.patiosManager.ignoreBayEvent = false;\n }, 3000);\n\n if (enable) {\n if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT\n ) {\n this.APP.setPatiosWidth(\n CONFIG.baySize.min + this.APP.sldExistingLength2.currentValue\n );\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n this.APP.setPatiosWidth(\n this.APP.sldExistingLength.currentValue +\n this.APP.sldExistingLength2.currentValue * 2\n );\n }\n } else {\n this.APP.setPatiosWidth(this.APP.sldExistingLength.currentValue);\n this.APP.sltCutOut.setSelected(\"0\");\n }\n }\n }\n\n // When the highest point of cutout roof (To fascia) is lower eave height, we should snap this roof to wall, like existing roof\n public handleSnapRoofToExistingWhenCutOut(): void {\n this.previousShouldSnapFasciaRoofToWall = this.shouldSnapFasciaRoofToWall;\n this.shouldSnapFasciaRoofToWall =\n this.calcShouldSnapRoofToExistingWhenCutout();\n\n if (\n UI.structureType == CONNECTION_TYPE.FASCIA &&\n UI.existingType != BUILDING_SIDE.NONE &&\n UI.cutOutType == CUTOUT_ENABLE.YES\n ) {\n this.setEnableCutout(\n UI.cutOutType == CUTOUT_ENABLE.YES &&\n HomeComponent.ins.patiosManager.cutoutCondition\n );\n }\n }\n public calcShouldSnapRoofToExistingWhenCutout(): boolean {\n const roofBaseHeight =\n HomeComponent.ins.geometryManager.getRoofBaseHeight();\n\n if (\n UI.structureType == CONNECTION_TYPE.FASCIA &&\n UI.existingType != BUILDING_SIDE.NONE &&\n UI.cutOutType == CUTOUT_ENABLE.YES &&\n HomeComponent.ins.patiosRoofType == PATIOS_ROOF_TYPE.FLAT_ROOF\n ) {\n const cutOutRoofHeightIfSnapToExisting =\n UI.eaveHeight -\n (UI.existingWidth1 - UI.eaveWidth) * this.utils.tan(UI.patiosPitch) +\n roofBaseHeight / this.utils.cos(UI.patiosPitch);\n if (cutOutRoofHeightIfSnapToExisting < UI.eaveHeight) {\n return true;\n }\n }\n\n return false;\n }\n\n public onBackOverhangChanged() {\n UI.oldBackOverhang = UI.overhangBack;\n }\n\n public onExistingTypeChanged(prevVal: number, val: number) {\n this.APP.sldLeftOverhang.setDisable(false);\n this.APP.sldRightOverhang.setDisable(false);\n\n //this.validateCutout();\n\n if (val == 0) {\n this.alignWallToPatios(false);\n this.APP.sldExistingWidth1.setValue(0);\n this.APP.sldExistingWidth2.setValue(0);\n this.APP.sldExistingLength2.setValue(0);\n }\n if (val == 1 || val == 2) {\n this.alignWallToPatios(true);\n this.setEnableCutout(\n this.APP.sltCutOut.currentValue == 1 &&\n this.APP.patiosManager.cutoutCondition\n );\n }\n if (val == 3) {\n this.alignWallToPatios(true);\n\n this.APP.sldLeftOverhang.setValue(0);\n this.APP.sldLeftOverhang.setDisable(true);\n this.APP.sldRightOverhang.setValue(0);\n this.APP.sldRightOverhang.setDisable(true);\n\n if (\n this.APP.isFBRoof &&\n UI.structureType == CONNECTION_TYPE.EXISTING &&\n UI.existingType == BUILDING_SIDE.BOTH &&\n this.APP.patiosRoofType == PATIOS_ROOF_TYPE.GABLE_ROOF\n ) {\n this.APP.sldLeftOverhang.setValue(200);\n this.APP.sldRightOverhang.setValue(200);\n }\n this.changeToExistingTypeBoth();\n }\n\n const _structureType = +this.APP.sltStructureType.currentValue;\n if (_structureType === 0) {\n this.APP.sldBackOverhang.isDisabled = true;\n } else if (_structureType === 3 || _structureType === 5) {\n this.APP.sldBackOverhang.isDisabled = true;\n // Bang - 2022.03.22\n if (this.APP.sltFasciaUpstandBrackets.currentValue > 0) {\n this.APP.sldBackOverhang.isDisabled = false;\n this.APP.sldBackOverhang.setValue(UI.oldBackOverhang);\n } else {\n this.APP.sldBackOverhang.isDisabled = true;\n }\n } else {\n this.APP.sldBackOverhang.isDisabled = false;\n }\n // Disable Length1\n this.APP.sldExistingLength.isDisabled = val === 3;\n\n //Change panel direction\n // if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT){\n // this.APP.sltPanelDirection.setValue(PANEL_DIRECTION.RIGHT_TO_LEFT);\n // }\n // else{\n // this.APP.sltPanelDirection.setValue(PANEL_DIRECTION.LEFT_TO_RIGHT);\n // }\n }\n\n public onSpanChanged() {\n if (\n this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF &&\n this.APP.isFBRoof\n ) {\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n if (!this.APP.patiosManager.ignoreBayEvent) {\n if (\n this.APP.sltStructureType.currentValue ==\n CONNECTION_TYPE.FASCIA_UPSTAND\n ) {\n this.APP.sldExistingLength.setValue(\n Math.ceil(\n UI.span +\n this.APP.sldEaveWidth.currentValue * 2 +\n 2 * FASCIA_BRACKET_FIT\n )\n );\n } else if (\n this.APP.sltStructureType.currentValue == CONNECTION_TYPE.FLY_OVER\n ) {\n this.APP.sldExistingLength.setValue(\n UI.span - EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK * 2\n );\n } else {\n this.APP.sldExistingLength.setValue(\n UI.span +\n UI.overhangLeft +\n UI.overhangRight +\n OFFSET_GUTTER_TO_WALL * 2\n );\n }\n }\n }\n }\n }\n\n public onDialogEditBayChanged() {\n // this.APP.patiosManager.loadBracket(5);\n if (\n this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF &&\n this.APP.isFBRoof\n ) {\n return;\n }\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n let totalBaySize = this.APP.dialogEditBay.totalBaySize;\n\n if (!this.APP.patiosManager.ignoreBayEvent) {\n if (\n UI.structureType == CONNECTION_TYPE.FASCIA ||\n UI.structureType == CONNECTION_TYPE.BACK_FASCIA_UPSTAND ||\n UI.structureType == CONNECTION_TYPE.FASCIA_UPSTAND\n ) {\n //Facia\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES &&\n this.APP.patiosManager.cutoutCondition\n ) {\n if (this.calcShouldSnapRoofToExistingWhenCutout()) {\n this.APP.sldExistingLength.setValue(\n totalBaySize - UI.existingLength2 * 2\n );\n } else {\n this.APP.sldExistingLength.setValue(\n totalBaySize - UI.existingLength2 * 2 + UI.eaveWidth * 2\n );\n }\n } else {\n this.APP.sldExistingLength.setValue(\n totalBaySize + this.APP.sldEaveWidth.currentValue * 2\n );\n }\n } else if (\n this.APP.sltStructureType.currentValue == CONNECTION_TYPE.FLY_OVER ||\n this.APP.sltStructureType.currentValue ==\n CONNECTION_TYPE.BLACK_FLY_OVER\n ) {\n if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES) {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n this.APP.sldExistingLength.setValue(\n totalBaySize -\n this.APP.sldExistingLength2.currentValue * 2 -\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK * 2\n );\n } else {\n this.APP.sldExistingLength.setValue(\n totalBaySize - this.APP.sldExistingLength2.currentValue * 2\n );\n }\n } else {\n this.APP.sldExistingLength.setValue(\n totalBaySize - EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK * 2\n );\n }\n } else {\n if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES) {\n this.APP.sldExistingLength.setValue(\n totalBaySize - this.APP.sldExistingLength2.currentValue * 2\n );\n } else {\n this.APP.sldExistingLength.setValue(totalBaySize);\n }\n }\n }\n }\n\n if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES) {\n //this.APP.setNoOfBayFromBaySize(this.APP.dialogEditBay.totalBaySize , this.APP.sldBaySize.currentValue);\n if (\n this.APP.dialogEditBay.totalBaySize <\n this.APP.sldExistingLength2.currentValue + CONFIG.baySize.min &&\n !this.ignoreEnableCutoutEvent\n ) {\n this.setEnableCutout(false);\n }\n }\n //validate rake cut\n this.onBaySizeChanged(null, null);\n\n let roofOverallLength =\n UI.totalBayLength + UI.overhangLeft + UI.overhangRight;\n if (\n HomeComponent.ins.patiosRoofType == PATIOS_ROOF_TYPE.GABLE_ROOF &&\n HomeComponent.ins.isFBRoof\n ) {\n roofOverallLength =\n UI.totalBayLength + UI.overhangFront + UI.overhangBack;\n }\n\n // Check beam length > 9m, 2 bay, and not cut, auto cut this\n if (\n roofOverallLength > EXISTING_BUILDING_CONFIG.MAXIMUM_LENGTH_PER_BEAM &&\n UI.listBay.length == 2\n ) {\n if (!UI.listBay[0].isCut) {\n UI.listBay[0].isCut = true;\n HomeComponent.ins.dialogEditBay.onOK();\n }\n }\n }\n public onBaySizeChanged(preVal: number, curVal: number) {\n // this.APP.patiosManager.loadBracket(this.APP.flyoverBracketNumber); // khi thay đổi UI truyền lại số lượng bracket\n //Reduce cut horizotal if totalcut larger than baymax\n let bayMax =\n this.APP.dialogEditBay.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n let totalCut =\n this.APP.sldLeftCutHorizontal.currentValue +\n this.APP.sldRightCutHorizontal.currentValue;\n\n //if(this.app)\n\n if (totalCut >= bayMax) {\n this.APP.sldLeftCutHorizontal.setValue(\n this.APP.sldLeftCutHorizontal.maxValue\n );\n this.APP.sldRightCutHorizontal.setValue(\n this.APP.sldRightCutHorizontal.maxValue\n );\n }\n }\n onBeamTypeChanged(pre, cur: number) {\n this.APP.beamSizeList = this.APP.objects.beamSizeList.filter(\n (f) => f.beamType == cur\n );\n\n this.APP.houseBeamSizeList = this.APP.objects.beamSizeList.filter(\n (f) => f.beamType == cur\n );\n if (cur === 1) {\n this.APP.sltColourBeam.setSelected(0xcabfa4);\n } else {\n this.APP.sltColourBeam.setSelected(0xe4e2d5);\n }\n }\n\n onColumnTypeChanged(pre, cur: number) {\n if (cur === 3) {\n this.APP.sltColourPost.setSelected(0xcabfa4);\n } else {\n this.APP.sltColourPost.setSelected(0xe4e2d5);\n }\n }\n onBaseFixingTypeChanged(pre, cur: number) {\n this.setColumnType(cur.toString(), -1, -1);\n if (cur === 0) {\n this.APP.chkRapidSetCement.setValue(false);\n }\n }\n onBuildingHeightChanged(pre, cur: number) {\n this.setColumnType(\"\", -1, cur);\n }\n setColumnType(\n baseFixingType: string,\n structureType: number,\n buildingHeight: number\n ) {\n // get column type list\n const _columnType = +this.APP.sltColumnType.currentValue;\n if (baseFixingType === \"\") {\n baseFixingType = this.APP.sltBaseFixingType.currentValue.toString();\n }\n if (structureType === -1) {\n structureType = this.APP.sltStructureType.currentValue;\n }\n if (buildingHeight === -1) {\n buildingHeight = this.APP.sldBuildingHeight.currentValue;\n }\n if (buildingHeight) {\n if (structureType == 4) {\n this.APP.columnTypeList = this.APP.objects.columnTypeList2.filter(\n (f) =>\n f.baseFixingType.includes(baseFixingType) &&\n f.columnHeight >= buildingHeight &&\n f.idx >= 2\n );\n } else {\n this.APP.columnTypeList = this.APP.objects.columnTypeList2.filter(\n (f) =>\n f.baseFixingType.includes(baseFixingType) &&\n f.columnHeight >= buildingHeight\n );\n }\n if (this.APP.columnTypeList.length === 0) {\n this.APP.columnTypeList = this.APP.objects.columnTypeList2.filter(\n (f) => f.id === -1\n );\n this.APP.sltColumnType.setSelected(-1);\n } else {\n if (\n this.APP.columnTypeList.findIndex(\n (value, index) => value.id === _columnType\n ) >= 0\n ) {\n this.APP.sltColumnType.setSelected(_columnType);\n } else {\n this.APP.sltColumnType.setSelected(this.APP.columnTypeList[0].id);\n }\n }\n }\n //\n }\n loadFromObject(obj) {\n var promise = new Promise((resolve, rejects) => {\n this.APP.patiosManager.ignoreBayEvent = true;\n setTimeout(() => {\n this.APP.patiosManager.ignoreBayEvent = false;\n resolve();\n }, 3000);\n const _rightToLeft = obj.rightToLeft || false;\n this.APP.sltPanelDirection.setValue(_rightToLeft);\n let _structureType = obj.structureType.value.toString();\n const _fasciaBracketHeight = obj.fasciaBracketHeight || 0;\n if (_structureType == 3 && _fasciaBracketHeight > 0) {\n _structureType = \"5\";\n }\n const _hasHouseBeam = obj.hasHouseBeam || false;\n this.APP.chkHasHouseBeam.setValue(_hasHouseBeam);\n this.APP.sltStructureType.setSelected(_structureType);\n this.APP.sltExistingType.setSelected(obj.existingType.value.toString());\n this.APP.sldExistingLength.setValue(obj.existingLength);\n this.APP.sldExistingLength2.setValue(obj.existingLength2);\n this.APP.sldExistingWidth1.setValue(obj.existingWidth1);\n this.APP.sldExistingWidth2.setValue(obj.existingWidth2);\n this.APP.sldFasciaDepth.setValue(obj.fasciaDepth);\n this.APP.sldExistingWallHeight.setValue(obj.eaveHeight);\n this.APP.sldBuildingHeight.setValue(obj.buildingHeight);\n this.APP.sldEaveWidth.setValue(obj.eaveWidth);\n this.APP.sldFlyOverBracketHeight.setValue(obj.flyoverBracketHeight);\n this.APP.sldSpan.setValue(obj.span);\n this.APP.sldMultiSpan.setValue(obj.multiSpan);\n this.APP.sldBaySize.setValue(obj.baySize);\n this.APP.sldRoofOverallLength.setValue(obj.roofOverallLength);\n this.APP.sldRoofOverallWidth.setValue(obj.roofOverallWidth);\n this.APP.sldMinHeight.setValue(Math.round(obj.minHeight));\n //HACK: Xử lý lỗi cho các job cũ\n const _cutOut = obj.cutOut ? obj.cutOut.value : 0;\n this.APP.sltFasciaUpstandBrackets.setSelected(_fasciaBracketHeight);\n const _backFascia = obj.backFascia || false;\n this.APP.sltUpFasciaUpstandBracket.setValue(_backFascia);\n\n this.APP.sltWindClass.setSelected(obj.windClass.value);\n this.APP.sltBaseFixingType.setSelected(obj.baseFixingType.value);\n this.APP.sltBeamType.setSelected(obj.beamType.value);\n this.APP.sltCutOut.setSelected(_cutOut);\n\n this.APP.sltGutterType.setSelected(obj.gutterType.value);\n this.APP.sltDownpipeType.setSelected(obj.downpipeType.value);\n this.APP.sltZFlashingType.setSelected(obj.zFlashingType.value);\n this.APP.sltReceiverType.setSelected(obj.receiverType.value);\n this.APP.sltBargeType.setSelected(obj.bargeType.value);\n this.APP.sltFlatBottom.setSelected(obj.flatBottom.value);\n this.APP.sltRoofThickness.setSelected(obj.thickness.value);\n\n this.APP.sltRoofSheetingType.setSelected(obj.roofSheetingType.value);\n this.APP.sltWallType.setSelected(obj.wallType.value);\n const _existingRoofType = obj.existingRoofType\n ? obj.existingRoofType.value\n : 0;\n this.APP.sltExistingRoofType.setSelected(_existingRoofType);\n\n this.APP.sltExistingRoofPitch.setSelected(obj.existingRoofPitch);\n this.APP.sltRoofPitch.setSelected(obj.roofPitch);\n this.APP.sltColumnType.setSelected(obj.columnType.value);\n this.APP.sltBeamSize.setSelected(obj.beamSize.value);\n const _houseBeamSize = obj.hasHouseBeam\n ? obj.houseBeamSize.value\n : obj.beamSize.value;\n this.APP.sltHouseBeamSize.setSelected(_houseBeamSize);\n const _isRapidSetCement = obj.isRapidSetCement || false;\n this.APP.chkRapidSetCement.setValue(_isRapidSetCement);\n const _isDripBarge = obj.isDripBarge || false;\n this.APP.sltDripBarge.setValue(_isDripBarge);\n\n this.APP.sltColourDownpipe.setSelected(obj.colourDownpipe.value);\n this.APP.sltColourBracket.setSelected(obj.colourBracket.value);\n const _colourFasciaBracket = obj.colourFasciaBracket\n ? obj.colourFasciaBracket.value\n : 0xe4e2d50;\n this.APP.sltColourFasciaBracket.setSelected(_colourFasciaBracket);\n this.APP.sltColourZFlashing.setSelected(obj.colourZFlashing.value);\n this.APP.sltColourGutter.setSelected(obj.colourGutter.value);\n this.APP.sltColourBarge.setSelected(obj.colourBarge.value);\n this.APP.sltColourRoof.setSelected(obj.colourRoof.value);\n\n this.APP.isFBRoof = obj.isFBRoof;\n this.APP.patiosRoofType =\n obj.patiosRoofType || PATIOS_ROOF_TYPE.FLAT_ROOF;\n\n setTimeout(() => {\n this.APP.sldNoOfBay.setValue(obj.noOfBay);\n //----RakeCut\n const _leftCutType = obj.leftCutType ? obj.leftCutType.value : 0;\n const _rightCutType = obj.rightCutType ? obj.rightCutType.value : 0;\n const _leftCutVertical = obj.leftCutVertical || 0;\n const _rightCutVertical = obj.rightCutVertical || 0;\n const _leftCutHorizontal = obj.leftCutHorizontal || 0;\n const _rightCutHorizontal = obj.rightCutHorizontal || 0;\n\n this.APP.sltLeftCutType.setSelected(_leftCutType);\n this.APP.sltRightCutType.setSelected(_rightCutType);\n this.APP.sldLeftCutVertical.setValue(_leftCutVertical);\n this.APP.sldLeftCutHorizontal.setValue(_leftCutHorizontal);\n this.APP.sldRightCutVertical.setValue(_rightCutVertical);\n this.APP.sldRightCutHorizontal.setValue(_rightCutHorizontal);\n //Bang - 2021.04.06 -> Tranh loi khi default lại mau khi xay ra su kien onColumnTypeChanged()\n this.APP.sltColourPost.setSelected(obj.colourPost.value);\n this.APP.sltColourBeam.setSelected(obj.colourBeam.value);\n this.APP.sldBackOverhang.setValue(obj.backOverhang);\n this.APP.sldFrontOverhang.setValue(obj.frontOverhang);\n // this.APP.dialogEditBay.setValue(obj.listBay);\n setTimeout(() => {\n // Bang - 2022.08.15 -> Lỗi khi open lại thì Bay load về default 4400\n this.APP.dialogEditBay.setValue(obj.listBay);\n this.APP.sldRightOverhang.setValue(obj.rightOverhang);\n this.APP.sldLeftOverhang.setValue(obj.leftOverhang);\n this.APP.sldBuildingHeight.setValueAndHandleEvent(\n obj.buildingHeight,\n true\n );\n\n if (this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF) {\n this.APP.sldSpan.setValue(obj.span);\n }\n }, 300);\n //----\n }, 500);\n });\n return promise;\n }\n alignWallToPatios(enable) {\n let patiosLength =\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue +\n this.APP.sldBackOverhang.currentValue +\n this.APP.sldFrontOverhang.currentValue;\n if (enable && this.APP.sldExistingWidth1.currentValue < 1000) {\n this.APP.sldExistingWidth1.setValue(patiosLength);\n this.APP.sldExistingWidth1.setMin(1000);\n } else if (!enable) {\n this.APP.sldExistingWidth1.setMin(0);\n }\n }\n validateCutout() {\n let cutoutCondition =\n this.APP.sltExistingType.currentValue != 0 &&\n this.APP.patiosManager.cutoutCondition &&\n this.APP.sldExistingWidth1.currentValue > 0 &&\n this.APP.sldExistingLength2.currentValue > 0;\n\n if (\n cutoutCondition &&\n this.APP.patiosRoofType === PATIOS_ROOF_TYPE.FLAT_ROOF\n ) {\n this.APP.sltCutOut.setDisable(false);\n } else {\n this.APP.sltCutOut.setSelected(\"0\");\n this.APP.sltCutOut.setDisable(true);\n }\n }\n validateRakeCut() {\n let maxSpanLeft =\n this.APP.sldSpan.currentValue + this.APP.sldFrontOverhang.currentValue;\n let maxSpanRight =\n this.APP.sldSpan.currentValue + this.APP.sldFrontOverhang.currentValue;\n\n //\n if (\n this.APP.sldMultiSpan.currentValue > 0 &&\n this.APP.sldSpan.currentValue\n ) {\n maxSpanLeft =\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue;\n maxSpanRight =\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue;\n }\n\n if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES) {\n let cond =\n this.APP.sldMultiSpan.currentValue == 0 ||\n (this.APP.sldMultiSpan.currentValue > 0 &&\n this.APP.sldSpan.currentValue <\n this.APP.sldExistingWidth1.currentValue);\n if (\n cond &&\n (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH)\n ) {\n maxSpanLeft =\n this.APP.patiosManager.patiosLength -\n this.APP.sldExistingWidth1.currentValue;\n }\n if (\n cond &&\n (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH)\n ) {\n maxSpanRight =\n this.APP.patiosManager.patiosLength -\n this.APP.sldExistingWidth1.currentValue;\n }\n }\n //In case of step cut the remaining space at least 500\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n maxSpanLeft -= 500;\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n maxSpanRight -= 500;\n }\n\n let sizeLeft = this.APP.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.LEFT\n );\n let sizeRight = this.APP.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.RIGHT\n );\n\n //Ensure left cut and right cut do not overlap each other\n //And can not be over first bay\n let bayMax =\n this.APP.dialogEditBay.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n let postInfo = null;\n if (this.APP.geometryManager.SUPERIOR_POST.S65x65) {\n postInfo = this.APP.geometryManager.getPost();\n }\n if (this.APP.sldNoOfBay.currentValue == 1) {\n let maxLeft1 = bayMax - sizeRight.l;\n let maxLeft2 =\n (maxLeft1 * this.APP.sldLeftCutVertical.currentValue) / sizeLeft.j;\n\n let maxRight1 = bayMax - sizeLeft.l;\n let maxRight2 =\n (maxRight1 * this.APP.sldRightCutVertical.currentValue) / sizeRight.j;\n\n let FO = this.APP.sldFrontOverhang.currentValue;\n let CHL = this.APP.sldLeftCutHorizontal.currentValue;\n let CVL = this.APP.sldLeftCutVertical.currentValue;\n let dMaxleft =\n (FO * Math.sqrt(Math.pow(CHL, 2) + Math.pow(CVL, 2))) / CVL -\n (FO * CHL) / CVL;\n\n maxLeft2 =\n this.APP.dialogEditBay.listBay[0].value +\n this.APP.sldLeftOverhang.currentValue -\n dMaxleft -\n (postInfo?.width || 0);\n\n let CHR = this.APP.sldRightCutHorizontal.currentValue;\n let CVR = this.APP.sldRightCutVertical.currentValue;\n let dMaxRight =\n (FO * Math.sqrt(Math.pow(CHR, 2) + Math.pow(CVR, 2))) / CVR -\n (FO * CHR) / CVR;\n\n maxRight2 =\n this.APP.dialogEditBay.listBay[0].value +\n this.APP.sldRightOverhang.currentValue -\n dMaxRight -\n (postInfo?.width || 0);\n\n this.APP.sldRightCutHorizontal.setMax(Math.round(maxRight2));\n this.APP.sldLeftCutHorizontal.setMax(Math.round(maxLeft2));\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n if (\n bayMax -\n this.APP.sldLeftCutHorizontal.currentValue -\n dMaxRight -\n (postInfo?.width || 0) >\n 0\n ) {\n this.APP.sldRightCutHorizontal.setMax(\n Math.round(\n bayMax -\n this.APP.sldLeftCutHorizontal.currentValue -\n dMaxRight -\n (postInfo?.width || 0)\n )\n );\n } else {\n this.APP.sldRightCutHorizontal.setMax(\n this.APP.sldRightCutHorizontal.minValue\n );\n this.APP.sltRightCutType.setSelected(\"0\");\n }\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n if (\n bayMax -\n this.APP.sldRightCutHorizontal.currentValue -\n dMaxleft -\n (postInfo?.width || 0) >\n 0\n ) {\n this.APP.sldLeftCutHorizontal.setMax(\n Math.round(\n bayMax -\n this.APP.sldRightCutHorizontal.currentValue -\n dMaxleft -\n (postInfo?.width || 0)\n )\n );\n } else {\n this.APP.sldLeftCutHorizontal.setMax(\n this.APP.sldRightCutHorizontal.minValue\n );\n this.APP.sltLeftCutType.setSelected(\"0\");\n }\n }\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n this.APP.sldLeftCutHorizontal.setMax(\n Math.round(bayMax - this.APP.sldRightCutHorizontal.currentValue - 762)\n );\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n this.APP.sldRightCutHorizontal.setMax(\n Math.round(bayMax - this.APP.sldLeftCutHorizontal.currentValue - 762)\n );\n }\n } else {\n let maxBayLeft =\n this.APP.dialogEditBay.listBay[0].value +\n this.APP.sldLeftOverhang.currentValue;\n let maxBayRight =\n this.APP.dialogEditBay.listBay[this.APP.dialogEditBay.noOfBay - 1]\n .value + this.APP.sldRightOverhang.currentValue;\n let FO = this.APP.sldFrontOverhang.currentValue;\n let CHL = this.APP.sldLeftCutHorizontal.currentValue;\n let CVL = this.APP.sldLeftCutVertical.currentValue;\n let dMaxleft =\n (FO * Math.sqrt(Math.pow(CHL, 2) + Math.pow(CVL, 2))) / CVL -\n (FO * CHL) / CVL;\n\n maxBayLeft =\n this.APP.dialogEditBay.listBay[0].value +\n this.APP.sldLeftOverhang.currentValue -\n dMaxleft -\n (postInfo?.width || 0);\n\n let CHR = this.APP.sldRightCutHorizontal.currentValue;\n let CVR = this.APP.sldRightCutVertical.currentValue;\n let dMaxRight =\n (FO * Math.sqrt(Math.pow(CHR, 2) + Math.pow(CVR, 2))) / CVR -\n (FO * CHR) / CVR;\n\n maxBayRight =\n this.APP.dialogEditBay.listBay[this.APP.dialogEditBay.noOfBay - 1]\n .value +\n this.APP.sldRightOverhang.currentValue -\n dMaxRight -\n (postInfo?.width || 0);\n\n this.APP.sldLeftCutHorizontal.setMax(Math.round(maxBayLeft));\n this.APP.sldRightCutHorizontal.setMax(Math.round(maxBayRight));\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n this.APP.sldLeftCutHorizontal.setMax(\n Math.round(bayMax - this.APP.sldRightCutHorizontal.currentValue - 762)\n );\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n this.APP.sldRightCutHorizontal.setMax(\n Math.round(bayMax - this.APP.sldLeftCutHorizontal.currentValue - 762)\n );\n }\n }\n\n //Vertical cut can not be over first span\n this.APP.sldLeftCutVertical.setMax(maxSpanLeft);\n this.APP.sldRightCutVertical.setMax(maxSpanRight);\n\n //If vertical cut is over span size reduce vertical cut\n if (this.APP.sldLeftCutVertical.currentValue > maxSpanLeft) {\n this.APP.sldLeftCutVertical.setValue(maxSpanLeft);\n }\n if (this.APP.sldRightCutVertical.currentValue > maxSpanRight) {\n this.APP.sldRightCutVertical.setValue(maxSpanRight);\n }\n //Only allow rakecut if have post\n if (this.APP.patiosManager) {\n // this.f();\n this.APP.patiosManager.firstLoad = false;\n }\n }\n\n f() {\n let postLeft = this.APP.patiosManager?.patiosGroup?.children.find(\n (c) =>\n c.userData.type == GEOMETRY_TYPE.SUPERIOR_POST &&\n c.userData.position?.left\n );\n if (!postLeft) {\n this.APP.sltLeftCutType.setSelected(\"0\");\n this.APP.sltLeftCutType.setDisable(true);\n } else {\n this.APP.sltLeftCutType.setDisable(false);\n }\n\n let postRight = this.APP.patiosManager?.patiosGroup?.children.find(\n (c) =>\n c.userData.type == GEOMETRY_TYPE.SUPERIOR_POST &&\n c.userData.position?.right\n );\n if (!postRight) {\n this.APP.sltRightCutType.setSelected(\"0\");\n this.APP.sltRightCutType.setDisable(true);\n } else {\n this.APP.sltRightCutType.setDisable(false);\n }\n }\n}\nexport function registerEvents(controls, action) {\n controls.forEach((control) => {\n if (HomeComponent.ins[control]) {\n HomeComponent.ins[control].addAction(action);\n }\n });\n}\nexport function unRegisterEvents(controls, action) {\n controls.forEach((control) => {\n if (HomeComponent.ins[control]) {\n HomeComponent.ins[control].removeAction(action);\n }\n });\n}\n","import { HomeComponent } from \"src/app-ribspan/containers/home\";\nimport { utils } from \"./utils\";\nexport class UI {\n public static readonly Controls = {\n SPAN: \"sldSpan\",\n MULTI_SPAN: \"sldMultiSpan\",\n OVERHANG_FRONT: \"sldFrontOverhang\",\n OVERHANG_LEFT: \"sldLeftOverhang\",\n OVERHANG_RIGHT: \"sldRightOverhang\",\n OVERHANG_BACK: \"sldBackOverhang\",\n BAYSZIE: \"sldBaySize\",\n RAKECUT_LEFT_TYPE: \"sltLeftCutType\",\n LENGTH1: \"sldExistingLength\",\n LENGTH2: \"sldExistingLength2\",\n WIDTH1: \"sldExistingWidth1\",\n WIDTH2: \"sldExistingWidth2\",\n EXISTING_TYPE: \"sltExistingType\",\n BAYS: \"dialogEditBay\",\n EAVE_WIDTH: \"sldEaveWidth\",\n STRUCTURE_TYPE: \"sltStructureType\",\n CUTOUT: \"sltCutOut\",\n PATIOS_ROOF_PITCH: \"sltRoofPitch\",\n FASCIA_DEPTH: \"sldFasciaDepth\",\n EXISTING_ROOF_PITCH: \"existingRoofPitch\",\n FLYOVER_BRAKET_HEIGHT: \"sldFlyOverBracketHeight\",\n FASCIA_UPSTAND_BRAKET: \"sltFasciaUpstandBrackets\",\n EXISTING_WALL_HEIGHT: \"sldExistingWallHeight\",\n ROOF_SHEETING_TYPE: \"sltRoofSheetingType\",\n ROOF_THICKNESS: \"sltRoofThickness\",\n };\n static getHeightByRoofPitch(isSpan): number {\n if (isSpan) {\n return (\n utils.tan(HomeComponent.ins.sltRoofPitch.currentValue) *\n HomeComponent.ins.sldSpan.currentValue\n );\n } else {\n return (\n utils.tan(HomeComponent.ins.sltRoofPitch.currentValue) *\n (HomeComponent.ins.sldSpan.currentValue +\n HomeComponent.ins.sldMultiSpan.currentValue)\n );\n }\n }\n static get noOfBays() {\n return HomeComponent.ins.sldNoOfBay.currentValue;\n }\n static get baySize() {\n return HomeComponent.ins.sldBaySize.currentValue;\n }\n static get roofColor() {\n return HomeComponent.ins.sltColourRoof.currentValue;\n }\n static get windClass() {\n return HomeComponent.ins.sltWindClass.currentValue;\n }\n\n static get rakeCutLeftType() {\n return HomeComponent.ins.sltLeftCutType.currentValue;\n }\n static get rakeCutRightType() {\n return HomeComponent.ins.sltRightCutType.currentValue;\n }\n static get eaveHeight() {\n return HomeComponent.ins.sldExistingWallHeight.currentValue;\n }\n static get existingLength1() {\n return HomeComponent.ins.sldExistingLength.currentValue;\n }\n static get existingLength2() {\n return HomeComponent.ins.sldExistingLength2.currentValue;\n }\n static get existingWidth1() {\n return HomeComponent.ins.sldExistingWidth1.currentValue;\n }\n static get existingWidth2() {\n return HomeComponent.ins.sldExistingWidth2.currentValue;\n }\n static get existingType() {\n return HomeComponent.ins.sltExistingType.currentValue;\n }\n static get height() {\n return HomeComponent.ins.sldBuildingHeight.currentValue;\n }\n static get frontHeight() {\n return (\n utils.tan(HomeComponent.ins.sltRoofPitch.currentValue) *\n (HomeComponent.ins.sldSpan.currentValue +\n HomeComponent.ins.sldMultiSpan.currentValue)\n );\n }\n static get totalBayLength() {\n return HomeComponent.ins.dialogEditBay.totalBaySize;\n }\n static get overhangLeft() {\n return HomeComponent.ins.sldLeftOverhang.currentValue;\n }\n static get overhangRight() {\n return HomeComponent.ins.sldRightOverhang.currentValue;\n }\n static get overhangFront() {\n return HomeComponent.ins.sldFrontOverhang.currentValue;\n }\n static get overhangBack() {\n return HomeComponent.ins.sldBackOverhang.currentValue;\n }\n static get span() {\n return HomeComponent.ins.sldSpan.currentValue;\n }\n static get multiSpan() {\n return +HomeComponent.ins.sldMultiSpan.currentValue;\n }\n static get rakeCutLeftHor() {\n return HomeComponent.ins.sldLeftCutHorizontal.currentValue;\n }\n static get rakeCutLeftVer() {\n return HomeComponent.ins.sldLeftCutVertical.currentValue;\n }\n static get rakeCutRightHor() {\n return HomeComponent.ins.sldRightCutHorizontal.currentValue;\n }\n static get rakeCutRightVer() {\n return HomeComponent.ins.sldRightCutVertical.currentValue;\n }\n static get structureType() {\n return +HomeComponent.ins.sltStructureType.currentValue;\n }\n static get patiosRoofType() {\n return HomeComponent.ins.patiosRoofType;\n }\n static get listBay() {\n return HomeComponent.ins.dialogEditBay.listBay;\n }\n static get cutOutType() {\n return HomeComponent.ins.sltCutOut.currentValue;\n }\n static get upstandBraketType() {\n return +HomeComponent.ins.sltFasciaUpstandBrackets.currentValue;\n }\n static get existingWallHeight() {\n return HomeComponent.ins.sldExistingWallHeight.currentValue;\n }\n static get eaveWidth() {\n return HomeComponent.ins.sldEaveWidth.currentValue;\n }\n static get patiosPitch() {\n return HomeComponent.ins.sltRoofPitch.currentValue;\n }\n static get existingRoofPitch() {\n return HomeComponent.ins.sltExistingRoofPitch.currentValue;\n }\n static get isUpFasciaUpstandardBracket() {\n return HomeComponent.ins.sltUpFasciaUpstandBracket.currentValue;\n }\n static get existingRoofType() {\n return HomeComponent.ins.sltExistingRoofType.currentValue;\n }\n static get braketHeight() {\n return HomeComponent.ins.sldFlyOverBracketHeight.currentValue;\n }\n static get existingWallLength1() {\n return HomeComponent.ins.existingWallManager.geo_existingWallL1.width;\n }\n static get existingWallW1() {\n return HomeComponent.ins.existingWallManager.geo_existingWallW1;\n }\n static get existingWallL2() {\n return HomeComponent.ins.existingWallManager.geo_existingWallL2;\n }\n static get panelDirection() {\n return HomeComponent.ins.sltPanelDirection.currentValue;\n }\n static get panelDirectionShow() {\n return HomeComponent.ins.sltPanelDirectionShow.currentValue;\n }\n static get beamLayoutShow() {\n return HomeComponent.ins.sltBeamLayoutShow.currentValue;\n }\n static get showRoof() {\n return HomeComponent.ins.btnTurnOnPanel.currentValue;\n }\n static set oldBackOverhang(value: number) {\n HomeComponent.ins.oldOverhangBack = value;\n }\n static get oldBackOverhang() {\n return HomeComponent.ins.oldOverhangBack;\n }\n static get fasciaDepth() {\n return HomeComponent.ins.sldFasciaDepth.currentValue;\n }\n\n static get beamColor() {\n return HomeComponent.ins.sltColourBeam.currentValue;\n }\n\n static get beamType() {\n return +HomeComponent.ins.sltBeamType.currentValue;\n }\n static get beamSize() {\n return +HomeComponent.ins.sltBeamSize.currentValue;\n }\n static get houseBeamSize() {\n return +HomeComponent.ins.sltHouseBeamSize.currentValue;\n }\n static get postType() {\n return +HomeComponent.ins.sltColumnType.currentValue;\n }\n static get postColor() {\n return HomeComponent.ins.sltColourPost.currentValue;\n }\n static get roofOverallLength() {\n return HomeComponent.ins.sldRoofOverallLength.currentValue;\n }\n static get panelColor() {\n return HomeComponent.ins.sltColourRoof.currentValue;\n }\n static get noOfBay() {\n return HomeComponent.ins.sldNoOfBay.currentValue;\n }\n\n static get roofSheetingType() {\n return HomeComponent.ins.sltRoofSheetingType.currentValue;\n }\n\n static get enableControl() {\n return HomeComponent.ins.btnEnableControl.currentValue;\n }\n}\n","import _ from \"lodash\";\nimport * as THREE from \"three\";\nimport {\n Box3,\n BoxBufferGeometry,\n BoxHelper,\n BufferGeometry,\n Color,\n EdgesGeometry,\n Float32BufferAttribute,\n Geometry,\n Group,\n Line3,\n LineBasicMaterial,\n LineSegments,\n Material,\n Matrix4,\n Mesh,\n Object3D,\n Plane,\n PlaneBufferGeometry,\n Shape,\n ShapeBufferGeometry,\n TextBufferGeometry,\n Vector2,\n Vector3,\n} from \"three\";\nimport { CSG } from \"three-csg-ts\";\nimport {\n DIMENSION_LABEL_TYPE,\n GEOMETRY_CATEGORY,\n GEOMETRY_TYPE,\n PATIOS_ROOF_TYPE,\n} from \"src/app/app.config\";\nimport {\n BUILDING_SIDE,\n CONNECTION_TYPE,\n CUTOUT_ENABLE,\n EXISTING_BUILDING_CONFIG,\n RAKECUT_TYPE,\n} from \"src/app/app.constants\";\nimport { HomeComponent } from \"../containers/home\";\nimport { GeometryManager } from \"./geometry.manager\";\nimport { MaterialManager } from \"./material.manager\";\nimport {\n ColorShape,\n GeometryInfo,\n Printing2DLine,\n Printing3DGeometry,\n ViewType,\n} from \"src/app/core/models\";\nimport SelectionManager from \"./selection.manager\";\nimport { UI } from \"./ui\";\nimport { Print2DView } from \"src/app/core/models\";\nimport { PolygonUtils } from \"./polygonUtils\";\nimport * as mathjs from \"mathjs\";\nimport { BeamCapAndJointInfo } from \"./patios.manager\";\nexport class Util {\n private lineArrowGeo: GeometryInfo;\n private geo_gutterBack: GeometryInfo;\n constructor() {\n this.lineArrowGeo = new GeometryInfo();\n this.geo_gutterBack = new GeometryInfo();\n this.lineArrowGeo.geometry = new PlaneBufferGeometry(100, 30);\n this.lineArrowGeo.geometry.translate(50, 0, 0);\n this.lineArrowGeo.width = 30;\n this.lineArrowGeo.length = 100;\n }\n public reSeperateRafterPosition(\n listRafterPos,\n endMainLeftX,\n endMainRightX,\n endCutoutLeft,\n endCutoutRight\n ) {\n const mainRafter = listRafterPos.filter((el) => el.isMainRoof);\n const cutoutLeftRafter = listRafterPos.filter(\n (el) => !el.isMainRoof && el.offsetX < endMainLeftX\n );\n const cutoutRightRafter = listRafterPos.filter(\n (el) => !el.isMainRoof && el.offsetX > endMainRightX\n );\n\n const reSeperateList = [];\n if (\n UI.cutOutType == CUTOUT_ENABLE.YES &&\n HomeComponent.ins.patiosManager.cutoutCondition\n ) {\n if (\n UI.existingType == BUILDING_SIDE.LEFT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n if (cutoutLeftRafter.length > 0) {\n for (let i = 0; i < cutoutLeftRafter.length; i++) {\n reSeperateList.push({\n offsetX:\n endCutoutLeft +\n (i + 1) *\n ((endMainLeftX - endCutoutLeft) /\n (cutoutLeftRafter.length + 1)),\n isMainRoof: false,\n });\n }\n }\n }\n }\n\n for (let i = 0; i < mainRafter.length; i++) {\n reSeperateList.push({\n offsetX:\n endMainLeftX +\n (i + 1) * ((endMainRightX - endMainLeftX) / (mainRafter.length + 1)),\n isMainRoof: true,\n });\n }\n\n if (\n UI.cutOutType == CUTOUT_ENABLE.YES &&\n HomeComponent.ins.patiosManager.cutoutCondition\n ) {\n if (\n UI.existingType == BUILDING_SIDE.RIGHT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n if (cutoutRightRafter.length > 0) {\n for (let i = 0; i < cutoutRightRafter.length; i++) {\n reSeperateList.push({\n offsetX:\n endMainRightX +\n (i + 1) *\n ((endCutoutRight - endMainRightX) /\n (cutoutRightRafter.length + 1)),\n isMainRoof: false,\n });\n }\n }\n }\n }\n\n return reSeperateList;\n }\n public getMaximumBeamOverhang(): number {\n if (UI.beamType == 0) {\n // 210\n if (UI.beamSize >= 3) {\n return 1500;\n } else if (UI.baySize >= 2) {\n return 1200;\n } else {\n return 900;\n }\n }\n\n return 900;\n }\n public getGeometryLength(\n geometry: THREE.BufferGeometry,\n axis: THREE.Vector3\n ): number {\n geometry.computeBoundingBox();\n let box = geometry.boundingBox;\n if (axis.x > 0) {\n return box.max.x - box.min.x;\n } else if (axis.y > 0) {\n return box.max.y - box.min.y;\n } else {\n return box.max.z - box.min.z;\n }\n }\n public getMeshLength(mesh: THREE.Mesh, axis: THREE.Vector3): number {\n let box = new Box3().setFromObject(mesh);\n if (axis.x > 0) {\n return box.max.x - box.min.x;\n } else if (axis.y > 0) {\n return box.max.y - box.min.y;\n } else {\n return box.max.z - box.min.z;\n }\n }\n public convertHexColorToRgb(hex): ColorShape {\n const color: ColorShape = {\n r: 0,\n g: 0,\n b: 0,\n };\n\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n if (result) {\n color.r = parseInt(result[1], 16) / 255;\n color.g = parseInt(result[2], 16) / 255;\n color.b = parseInt(result[3], 16) / 255;\n }\n\n return color;\n }\n public getRoofCoverPolygonForFBRoof() {\n const totalRoofLength =\n UI.span + UI.multiSpan + UI.overhangLeft + UI.overhangRight;\n const totalRoofWidth =\n UI.totalBayLength + UI.overhangFront + UI.overhangBack;\n\n const minX = -(UI.span + UI.multiSpan) / 2 - UI.overhangLeft;\n const minZ = 0;\n\n const frontLeft = new Vector3(minX, 0, minZ + totalRoofWidth);\n const frontRight = new Vector3(\n minX + totalRoofLength,\n 0,\n minZ + totalRoofWidth\n );\n const backLeft = new Vector3(minX, 0, minZ);\n const backRight = new Vector3(minX + totalRoofLength, 0, minZ);\n\n let lineFrontLeft = [frontLeft];\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n lineFrontLeft = [\n new Vector3(minX, 0, minZ + totalRoofWidth - UI.rakeCutLeftVer),\n new Vector3(minX + UI.rakeCutLeftHor, 0, minZ + totalRoofWidth),\n ];\n } else if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n lineFrontLeft = [\n new Vector3(minX, 0, minZ + totalRoofWidth - UI.rakeCutLeftVer),\n new Vector3(\n minX + UI.rakeCutLeftHor,\n 0,\n minZ + totalRoofWidth - UI.rakeCutLeftVer\n ),\n new Vector3(minX + UI.rakeCutLeftHor, 0, minZ + totalRoofWidth),\n ];\n }\n\n let lineFrontRight = [frontRight];\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n lineFrontRight = [\n new Vector3(\n minX + totalRoofLength - UI.rakeCutRightHor,\n 0,\n minZ + totalRoofWidth\n ),\n new Vector3(\n minX + totalRoofLength,\n 0,\n minZ + totalRoofWidth - UI.rakeCutRightVer\n ),\n ];\n } else if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n lineFrontRight = [\n new Vector3(\n minX + totalRoofLength - UI.rakeCutRightHor,\n 0,\n minZ + totalRoofWidth\n ),\n new Vector3(\n minX + totalRoofLength - UI.rakeCutRightHor,\n 0,\n minZ + totalRoofWidth - UI.rakeCutRightVer\n ),\n new Vector3(\n minX + totalRoofLength,\n 0,\n minZ + totalRoofWidth - UI.rakeCutRightVer\n ),\n ];\n }\n let lineFront = [...lineFrontLeft, ...lineFrontRight];\n\n let lineBackLeft = [backLeft];\n let lineBackRight = [backRight];\n let cutoutLength = UI.existingLength2;\n if (\n UI.structureType == CONNECTION_TYPE.FLY_OVER ||\n UI.structureType == CONNECTION_TYPE.BLACK_FLY_OVER\n ) {\n if (UI.existingType == BUILDING_SIDE.BOTH) {\n if (UI.existingWidth2 > 0) {\n cutoutLength =\n UI.existingLength2 -\n HomeComponent.ins.existingWallManager.geo_existingWallL2.width;\n } else {\n cutoutLength =\n UI.existingLength2 -\n HomeComponent.ins.existingWallManager.geo_existingWallL2.width * 2 -\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n }\n }\n }\n if (UI.cutOutType == CUTOUT_ENABLE.YES) {\n if (\n UI.existingType == BUILDING_SIDE.LEFT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n lineBackLeft = [\n new Vector3(minX + cutoutLength, 0, minZ),\n new Vector3(minX + cutoutLength, 0, minZ + UI.existingWidth1),\n new Vector3(minX, 0, minZ + UI.existingWidth1),\n ];\n }\n if (\n UI.existingType == BUILDING_SIDE.RIGHT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n lineBackRight = [\n new Vector3(minX + totalRoofWidth, 0, minZ + UI.existingWidth1),\n new Vector3(\n minX + totalRoofWidth - cutoutLength,\n 0,\n minZ + UI.existingWidth1\n ),\n new Vector3(minX + totalRoofWidth - cutoutLength, 0, minZ),\n ];\n }\n }\n\n let lineBack = [...lineBackRight, ...lineBackLeft];\n\n return [...lineFront, ...lineBack];\n }\n public getRoofCoverPolygonForLRRoof() {\n const totalRoofLength =\n UI.span + UI.multiSpan + UI.overhangFront + UI.overhangBack;\n const totalRoofWidth =\n UI.totalBayLength + UI.overhangLeft + UI.overhangRight;\n\n const minX = -UI.totalBayLength / 2 - UI.overhangLeft;\n const minZ = 0;\n\n const frontLeft = new Vector3(minX, 0, minZ + totalRoofLength);\n const frontRight = new Vector3(\n minX + totalRoofWidth,\n 0,\n minZ + totalRoofLength\n );\n const backLeft = new Vector3(minX, 0, minZ);\n const backRight = new Vector3(minX + totalRoofWidth, 0, minZ);\n\n let lineFrontLeft = [frontLeft];\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n lineFrontLeft = [\n new Vector3(minX, 0, minZ + totalRoofLength - UI.rakeCutLeftVer),\n new Vector3(minX + UI.rakeCutLeftHor, 0, minZ + totalRoofLength),\n ];\n } else if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n lineFrontLeft = [\n new Vector3(minX, 0, minZ + totalRoofLength - UI.rakeCutLeftVer),\n new Vector3(\n minX + UI.rakeCutLeftHor,\n 0,\n minZ + totalRoofLength - UI.rakeCutLeftVer\n ),\n new Vector3(minX + UI.rakeCutLeftHor, 0, minZ + totalRoofLength),\n ];\n }\n\n let lineFrontRight = [frontRight];\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n lineFrontRight = [\n new Vector3(\n minX + totalRoofWidth - UI.rakeCutRightHor,\n 0,\n minZ + totalRoofLength\n ),\n new Vector3(\n minX + totalRoofWidth,\n 0,\n minZ + totalRoofLength - UI.rakeCutRightVer\n ),\n ];\n } else if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n lineFrontRight = [\n new Vector3(\n minX + totalRoofWidth - UI.rakeCutRightHor,\n 0,\n minZ + totalRoofLength\n ),\n new Vector3(\n minX + totalRoofWidth - UI.rakeCutRightHor,\n 0,\n minZ + totalRoofLength - UI.rakeCutRightVer\n ),\n new Vector3(\n minX + totalRoofWidth,\n 0,\n minZ + totalRoofLength - UI.rakeCutRightVer\n ),\n ];\n }\n let lineFront = [...lineFrontLeft, ...lineFrontRight];\n\n let lineBackLeft = [backLeft];\n let lineBackRight = [backRight];\n let cutoutLength = UI.existingLength2;\n let cutOutWidth = UI.existingWidth1;\n if (\n UI.structureType == CONNECTION_TYPE.FLY_OVER ||\n UI.structureType == CONNECTION_TYPE.BLACK_FLY_OVER\n ) {\n if (UI.existingType == BUILDING_SIDE.BOTH) {\n if (UI.existingWidth2 > 0) {\n cutoutLength =\n UI.existingLength2 -\n HomeComponent.ins.existingWallManager.geo_existingWallL2.width;\n } else {\n cutoutLength =\n UI.existingLength2 -\n HomeComponent.ins.existingWallManager.geo_existingWallL2.width * 2 -\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n }\n }\n } else if (UI.structureType == CONNECTION_TYPE.FASCIA) {\n const shouldSnap =\n HomeComponent.ins.uiManager.calcShouldSnapRoofToExistingWhenCutout();\n if (shouldSnap) {\n cutoutLength = UI.existingLength2 + UI.eaveWidth;\n cutOutWidth = UI.existingWidth1 - UI.eaveWidth;\n }\n }\n if (UI.cutOutType == CUTOUT_ENABLE.YES) {\n if (\n UI.existingType == BUILDING_SIDE.LEFT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n lineBackLeft = [\n new Vector3(minX + cutoutLength, 0, minZ),\n new Vector3(minX + cutoutLength, 0, minZ + cutOutWidth),\n new Vector3(minX, 0, minZ + cutOutWidth),\n ];\n }\n if (\n UI.existingType == BUILDING_SIDE.RIGHT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n lineBackRight = [\n new Vector3(minX + totalRoofWidth, 0, minZ + cutOutWidth),\n new Vector3(\n minX + totalRoofWidth - cutoutLength,\n 0,\n minZ + cutOutWidth\n ),\n new Vector3(minX + totalRoofWidth - cutoutLength, 0, minZ),\n ];\n }\n }\n\n let lineBack = [...lineBackRight, ...lineBackLeft];\n\n return [...lineFront, ...lineBack];\n }\n\n private drawBoundingBox(object: THREE.Object3D): void {\n // geometry.computeBoundingBox();\n // var box = geometry.boundingBox;\n // let cubeGeo = new THREE.BoxGeometry(10, 10, 10);\n // let cube = new THREE.Mesh(cubeGeo, new THREE.MeshBasicMaterial({ color: 0x74d00b }));\n // cube.position.set(box.min.x, box.min.y, box.min.z);\n // this.scene.add(cube);\n // cube = new THREE.Mesh(cubeGeo, new THREE.MeshBasicMaterial({ color: 0x74d00b }));\n // cube.position.set(box.max.x, box.max.y, box.max.z);\n // this.scene.add(cube);\n }\n public changeGeoColor(geo: BufferGeometry, dir: Vector3, inputColor: string) {\n geo.computeVertexNormals();\n\n let color = new Color();\n let colors = [];\n for (let i = 0; i < geo.attributes.position.count; i++) {\n let normal = geo.getAttribute(\"normal\");\n const vNormal = new Vector3(\n normal.getX(i),\n normal.getY(i),\n normal.getZ(i)\n );\n\n if (vNormal.angleTo(dir) <= Math.PI / 2) {\n color = new Color(parseInt(inputColor));\n } else {\n color = new Color(\"#BDBFBA\");\n }\n\n colors.push(color.r, color.g, color.b);\n }\n\n geo.setAttribute(\"color\", new Float32BufferAttribute(colors, 3));\n }\n private fitCameraToSelection(camera, controls, selection, fitOffset = 1.2) {\n const box = new Box3();\n\n for (const object of selection) box.expandByObject(object);\n\n const size = box.getSize(new Vector3());\n const center = box.getCenter(new Vector3());\n\n const maxSize = Math.max(size.x, size.y, size.z);\n const fitHeightDistance =\n maxSize / (2 * Math.atan((Math.PI * camera.fov) / 360));\n const fitWidthDistance = fitHeightDistance / camera.aspect;\n const distance = fitOffset * Math.max(fitHeightDistance, fitWidthDistance);\n\n const direction = controls.target\n .clone()\n .sub(camera.position)\n .normalize()\n .multiplyScalar(distance);\n\n controls.maxDistance = distance * 10;\n controls.target.copy(center);\n\n camera.near = distance / 100;\n camera.far = distance * 100;\n camera.updateProjectionMatrix();\n\n camera.position.copy(controls.target).sub(direction);\n\n controls.update();\n }\n fitCameraToObject(camera, object, offset, controls) {\n offset = offset || 1.25;\n\n const boundingBox = new THREE.Box3();\n\n // get bounding box of object - this will be used to setup controls and camera\n boundingBox.setFromObject(object);\n\n let center: THREE.Vector3;\n boundingBox.getCenter(center);\n let size: THREE.Vector3;\n boundingBox.getSize(size);\n\n // get the max side of the bounding box (fits to width OR height as needed )\n const maxDim = Math.max(size.x, size.y, size.z);\n const fov = camera.fov * (Math.PI / 180);\n let cameraZ = Math.abs((maxDim / 4) * Math.tan(fov * 2));\n\n cameraZ *= offset; // zoom out a little so that objects don't fill the screen\n\n camera.position.z = cameraZ;\n\n const minZ = boundingBox.min.z;\n const cameraToFarEdge = minZ < 0 ? -minZ + cameraZ : cameraZ - minZ;\n\n camera.far = cameraToFarEdge * 3;\n camera.updateProjectionMatrix();\n\n if (controls) {\n // set camera to rotate around center of loaded object\n controls.target = center;\n\n // prevent camera from zooming out far enough to create far plane cutoff\n controls.maxDistance = cameraToFarEdge * 2;\n\n controls.saveState();\n } else {\n camera.lookAt(center);\n }\n }\n degreesToRadians(degrees: number) {\n var pi = Math.PI;\n return this.round(degrees * (pi / 180));\n }\n round(num: number): number {\n return parseFloat(num.toFixed(3));\n }\n sin(degrees: number): number {\n return this.round(Math.sin(this.degreesToRadians(degrees)));\n }\n cos(degrees: number): number {\n return this.round(Math.cos(this.degreesToRadians(degrees)));\n }\n tan(degrees: number): number {\n return this.round(Math.tan(this.degreesToRadians(degrees)));\n }\n public createArrowLine(views: Print2DView[]): THREE.Line {\n let origin = new Vector3(0, 0, 0);\n let head = new Vector3(0, 0, 1000);\n let hand1 = new Vector3(-50, 0, 950);\n let hand2 = new Vector3(50, 0, 950);\n\n let geoLine = new Geometry();\n geoLine.vertices.push(origin);\n geoLine.vertices.push(head);\n\n geoLine.vertices.push(head);\n geoLine.vertices.push(hand1);\n\n geoLine.vertices.push(hand1);\n geoLine.vertices.push(hand2);\n\n geoLine.vertices.push(hand2);\n geoLine.vertices.push(head);\n\n let dim = new THREE.Line(geoLine);\n dim.userData = { type: \"Arrow\", views: views };\n\n return dim;\n }\n public createText(\n textStr: string,\n views: Print2DView[],\n textParameter,\n position: Vector3\n ): Mesh {\n let textGeo = new TextBufferGeometry(textStr, textParameter);\n textGeo.center();\n\n let text = new Mesh(textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, 0, 0),\n };\n text.position.setZ(position.z);\n text.position.setX(position.x);\n\n return text;\n }\n getOutlineGeometry(\n geo: Geometry | BufferGeometry,\n threshold: number\n ): EdgesGeometry {\n return new EdgesGeometry(geo, threshold);\n }\n getOutlineGeometryFromMesh(mesh: Mesh, threshold: number) {\n let geo = mesh.geometry.clone();\n geo.scale(mesh.scale.x, mesh.scale.y, mesh.scale.z);\n return new EdgesGeometry(geo, threshold);\n }\n getOutlineGeometryFromMeshNoScale(mesh: Mesh, threshold: number) {\n let geo = mesh.geometry.clone();\n //geo.scale(mesh.scale.x, mesh.scale.y, mesh.scale.z);\n return new EdgesGeometry(geo, threshold);\n }\n clipOutline(geo: EdgesGeometry, plane: Plane): BufferGeometry {\n let vertices = geo.getAttribute(\"position\").array;\n let newVertices = [];\n\n let intersectPoints: Vector3[] = [];\n\n for (let i = 0; i < vertices.length; i += 6) {\n let v1 = new Vector3(vertices[i], vertices[i + 1], vertices[i + 2]);\n let v2 = new Vector3(vertices[i + 3], vertices[i + 4], vertices[i + 5]);\n\n let line = new Line3(v1, v2);\n let intersectPoint = new Vector3();\n let rs = plane.intersectLine(line, intersectPoint);\n\n let dis1 = plane.distanceToPoint(v1);\n let dis2 = plane.distanceToPoint(v2);\n\n if (dis1 < 0 && dis2 < 0) continue;\n\n if (rs) {\n if (dis1 > 0) {\n newVertices.push(v1);\n } else {\n newVertices.push(v2);\n }\n\n newVertices.push(intersectPoint);\n intersectPoints.push(intersectPoint);\n } else {\n newVertices.push(v1, v2);\n }\n }\n\n for (let i = 0; i < intersectPoints.length - 1; i++) {\n newVertices.push(intersectPoints[i]);\n newVertices.push(intersectPoints[i + 1]);\n }\n\n return new BufferGeometry().setFromPoints(newVertices);\n }\n clipOutlineBasePanel(geo: EdgesGeometry, plane: Plane): BufferGeometry {\n let vertices = geo.getAttribute(\"position\").array;\n let newVertices = [];\n\n let intersectPoints: Vector3[] = [];\n\n for (let i = 0; i < vertices.length; i += 6) {\n let v1 = new Vector3(vertices[i], vertices[i + 1], vertices[i + 2]);\n let v2 = new Vector3(vertices[i + 3], vertices[i + 4], vertices[i + 5]);\n\n let line = new Line3(v1, v2);\n let intersectPoint = new Vector3();\n let rs = plane.intersectLine(line, intersectPoint);\n\n let dis1 = plane.distanceToPoint(v1);\n let dis2 = plane.distanceToPoint(v2);\n\n if (dis1 < 0 && dis2 < 0) continue;\n\n if (rs) {\n if (dis1 > 0) {\n newVertices.push(v1);\n } else {\n newVertices.push(v2);\n }\n\n newVertices.push(intersectPoint);\n intersectPoints.push(intersectPoint);\n } else {\n newVertices.push(v1, v2);\n }\n }\n\n if (HomeComponent.ins.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF) {\n if (intersectPoints.length === 4) {\n intersectPoints = this.createPolygon(intersectPoints);\n }\n }\n for (let i = 0; i < intersectPoints.length - 1; i++) {\n newVertices.push(intersectPoints[i]);\n newVertices.push(intersectPoints[i + 1]);\n }\n\n return new BufferGeometry().setFromPoints(newVertices);\n }\n public createPolygon(initPoints) {\n if (initPoints.length > 3) {\n let points = this.sortPoints(\n initPoints,\n initPoints[0].x !== initPoints[1].x ? \"x\" : \"z\"\n );\n\n let polygon = [...points.slice(0, 3)];\n points.splice(0, 3);\n this.findNextPoinst(polygon, points, 2);\n return polygon;\n } else {\n return initPoints;\n }\n }\n public findNextPoinst(polygon, restOfPoints, indexOfMaxPoint) {\n if (restOfPoints.length === 0) {\n return;\n }\n let r1 = [\n polygon[indexOfMaxPoint],\n polygon[indexOfMaxPoint === polygon.length - 1 ? 0 : indexOfMaxPoint + 1],\n ];\n let r2 = [polygon[indexOfMaxPoint - 1], polygon[indexOfMaxPoint]];\n\n let simpleMaxPolygon = [\n polygon[indexOfMaxPoint - 1],\n polygon[indexOfMaxPoint],\n polygon[indexOfMaxPoint === polygon.length - 1 ? 0 : indexOfMaxPoint + 1],\n ];\n\n let nextPoint = restOfPoints.splice(0, 1)[0];\n let closestPoint = PolygonUtils.getClosestPointInsidePolygon(\n simpleMaxPolygon,\n nextPoint\n );\n\n let isPointOnSegmentR1 = PolygonUtils.isPointOnSegment(\n r1 as [Vector3, Vector3],\n closestPoint\n );\n let isPointOnSegmentR2 = PolygonUtils.isPointOnSegment(\n r2 as [Vector3, Vector3],\n closestPoint\n );\n\n if (!(isPointOnSegmentR1 && isPointOnSegmentR2)) {\n if (isPointOnSegmentR1) {\n polygon.splice(indexOfMaxPoint + 1, 0, nextPoint);\n this.findNextPoinst(polygon, restOfPoints, indexOfMaxPoint + 1);\n }\n if (isPointOnSegmentR2) {\n polygon.splice(indexOfMaxPoint, 0, nextPoint);\n this.findNextPoinst(polygon, restOfPoints, indexOfMaxPoint);\n }\n } else {\n let r1_1 = [r1[0], nextPoint];\n let r1_2 = [r1[1], nextPoint];\n\n let inter1 = mathjs.intersect(\n this.vector3ToArray(r1_1[0]),\n this.vector3ToArray(r1_1[1]),\n this.vector3ToArray(r2[0]),\n this.vector3ToArray(r2[1])\n );\n let inter2 = mathjs.intersect(\n this.vector3ToArray(r1_2[0]),\n this.vector3ToArray(r1_2[1]),\n this.vector3ToArray(r2[0]),\n this.vector3ToArray(r2[1])\n );\n\n if (\n inter1 &&\n inter2 &&\n PolygonUtils.isPointOnSegment(\n r2 as [Vector3, Vector3],\n this.arrayToVector3(inter1)\n ) &&\n PolygonUtils.isPointOnSegment(\n r2 as [Vector3, Vector3],\n this.arrayToVector3(inter2)\n )\n ) {\n // Add point in r2\n polygon.splice(indexOfMaxPoint, 0, nextPoint);\n this.findNextPoinst(polygon, restOfPoints, indexOfMaxPoint);\n } else {\n // Add point in r1\n polygon.splice(indexOfMaxPoint + 1, 0, nextPoint);\n this.findNextPoinst(polygon, restOfPoints, indexOfMaxPoint + 1);\n }\n }\n }\n public vector3ToArray(vector) {\n return [vector.x, vector.y, vector.z];\n }\n public arrayToVector3(array) {\n return new Vector3(array[0], array[1], array[2]);\n }\n public sortPoints(points, direction) {\n let clonePoints = [...points];\n clonePoints.sort((a, b) => {\n if (a[direction] !== b[direction]) {\n return a[direction] - b[direction];\n } else {\n return a.y - b.y;\n }\n });\n\n return clonePoints;\n }\n public getOutlineRafterBeam(mesh: Mesh, lines: Printing2DLine[]) {\n let views = mesh.userData.views;\n\n mesh.updateWorldMatrix(true, true);\n let meshClone = new Mesh((mesh as Mesh).geometry);\n\n let box = new BoxHelper(meshClone);\n box.applyMatrix4(mesh.matrixWorld);\n\n box.updateWorldMatrix(true, true);\n let _geo = box[\"geometry\"].clone() as BufferGeometry;\n _geo.applyMatrix4(box.matrixWorld);\n\n let positions: any = _geo.attributes[\"position\"].array;\n let boxGeo = new BufferGeometry().setAttribute(\n \"position\",\n new Float32BufferAttribute(positions, 3)\n );\n\n this.getOutlineByViews(mesh, boxGeo, lines, views);\n }\n public getPlanVerticesOfBeam(\n mesh: Mesh,\n lines: Printing2DLine[],\n views: Print2DView[]\n ) {\n mesh.updateWorldMatrix(true, true);\n let meshClone = new Mesh((mesh as Mesh).geometry);\n\n let box = new BoxHelper(meshClone);\n box.applyMatrix4(mesh.matrixWorld);\n\n box.updateWorldMatrix(true, true);\n let _geo = box[\"geometry\"].clone() as BufferGeometry;\n _geo.applyMatrix4(box.matrixWorld);\n\n let positions: any = _geo.attributes[\"position\"].array;\n\n let boxGeo = new BufferGeometry().setAttribute(\n \"position\",\n new Float32BufferAttribute(positions, 3)\n );\n\n const vertices = this.getVerticeFromBufferGeo(boxGeo);\n\n const verticesToPrintPlanView = [];\n if (vertices.length >= 8) {\n verticesToPrintPlanView.push(vertices[0], vertices[1]);\n verticesToPrintPlanView.push(vertices[1], vertices[5]);\n verticesToPrintPlanView.push(vertices[5], vertices[4]);\n verticesToPrintPlanView.push(vertices[4], vertices[0]);\n }\n\n if (verticesToPrintPlanView.length > 0) {\n lines.push({\n vertices: verticesToPrintPlanView,\n views: views,\n objectType: mesh.userData?.type,\n });\n }\n }\n public getOutlineByViews(\n group: THREE.Object3D,\n boxGeo: BufferGeometry,\n lines: Printing2DLine[],\n views\n ) {\n let mat = (group as Mesh).material as Material;\n let outLineClip = boxGeo;\n if (mat.clippingPlanes && mat.clippingPlanes.length > 0) {\n for (let i = 0; i < mat.clippingPlanes.length; i++) {\n let clipPlane = mat.clippingPlanes[i].clone() as Plane;\n\n outLineClip = this.clipOutline(outLineClip, clipPlane);\n }\n }\n\n lines.push({\n vertices: this.getVerticeFromBufferGeo(outLineClip),\n views: views,\n objectType: group.userData?.type,\n });\n }\n public createOutline(\n mesh: Mesh,\n lines: Printing2DLine[],\n viewMesh?: Print2DView[]\n ) {\n mesh.updateWorldMatrix(true, true);\n let views = mesh.userData.views;\n if (viewMesh) {\n views = viewMesh;\n }\n //Side view\n let data = this.getEngineeringObjetOutline(mesh, views);\n\n lines.push(data.line as Printing2DLine);\n }\n public getEngineeringObjetOutline(\n obj: Object3D,\n views: Print2DView[],\n isLineSegment?: boolean\n ) {\n obj.updateWorldMatrix(true, true);\n\n let _geo = obj[\"geometry\"].clone() as BufferGeometry;\n _geo.applyMatrix4(obj.matrixWorld);\n\n let outline = this.createOutLineGeo(_geo, null, null);\n\n let objectType = \"\";\n if (obj.userData && obj.userData.type) {\n objectType = obj.userData.type;\n }\n\n let mat = new LineBasicMaterial({ color: 0x000000 });\n let outLineMesh = new LineSegments(outline, mat);\n outLineMesh.userData = { type: objectType };\n\n return {\n line: {\n vertices: this.getVerticeFromBufferGeo(outline),\n views,\n objectType: obj.userData?.type,\n },\n mesh: outLineMesh,\n };\n }\n public createOutLineGeo(geo, plane, thresholdAngle?: number) {\n let outLine: EdgesGeometry = new EdgesGeometry(geo);\n\n if (thresholdAngle) {\n outLine = new EdgesGeometry(geo, thresholdAngle);\n }\n return outLine;\n }\n public getVerticeFromBufferGeo(geo: BufferGeometry) {\n let positions = geo.attributes[\"position\"].array;\n let vertices: Vector3[] = [];\n for (let i = 0; i < positions.length; i += 3) {\n const vertex = new Vector3(\n positions[i],\n positions[i + 1],\n positions[i + 2]\n );\n vertices.push(vertex);\n }\n\n return vertices;\n }\n public getStartEndPoint(box: Box3): Vector3[] {\n let maxHeight = 0;\n let p1: Vector3;\n let p2: Vector3;\n\n if (box.max.x - box.min.x > maxHeight) {\n maxHeight = box.max.x - box.min.x;\n\n p1 = new Vector3(\n box.min.x,\n (box.max.y + box.min.y) / 2,\n (box.max.z + box.min.z) / 2\n );\n p2 = new Vector3(\n box.max.x,\n (box.max.y + box.min.y) / 2,\n (box.max.z + box.min.z) / 2\n );\n }\n if (box.max.y - box.min.y > maxHeight) {\n maxHeight = box.max.y - box.min.y;\n\n p1 = new Vector3(\n (box.max.x + box.min.x) / 2,\n box.min.y,\n (box.max.z + box.min.z) / 2\n );\n p2 = new Vector3(\n (box.max.x + box.min.x) / 2,\n box.max.y,\n (box.max.z + box.min.z) / 2\n );\n }\n if (box.max.z - box.min.z > maxHeight) {\n p1 = new Vector3(\n (box.max.x + box.min.x) / 2,\n (box.max.y + box.min.y) / 2,\n box.min.z\n );\n p2 = new Vector3(\n (box.max.x + box.min.x) / 2,\n (box.max.y + box.min.y) / 2,\n box.max.z\n );\n }\n\n return [p1, p2];\n }\n public getDimensionValue(value: number) {\n //return parseFloat(`${value/1000}`).toFixed(2) + 'm';\n return Math.round(value).toString(); //parseFloat(`${value/1000}`).toFixed(3);\n }\n\n private getAllMesh(parent: Object3D): Printing3DGeometry[] {\n let lsMesh: Printing3DGeometry[] = [];\n for (let _mesh of parent.children) {\n if (_mesh.type !== \"Mesh\" && _mesh.type !== \"Group\") {\n continue;\n }\n\n if (_mesh.type === \"Mesh\") {\n let mesh = _mesh as Mesh;\n mesh.updateWorldMatrix(true, true);\n\n if (mesh.geometry.type === \"BufferGeometry\") {\n let geo = new Geometry().fromBufferGeometry(\n mesh.geometry as BufferGeometry\n );\n geo.applyMatrix4(mesh.matrixWorld);\n lsMesh.push({\n vertices: geo.vertices,\n faces: geo.faces.map((f) => ({ a: f.a, b: f.b, c: f.c })),\n });\n } else if (mesh.geometry.type === \"Geometry\") {\n let geo = mesh.geometry as Geometry;\n geo.applyMatrix4(mesh.matrixWorld);\n lsMesh.push({\n vertices: geo.vertices,\n faces: geo.faces.map((f) => ({ a: f.a, b: f.b, c: f.c })),\n });\n }\n }\n\n if (_mesh.children && _mesh.children.length > 0) {\n lsMesh.push(...this.getAllMesh(_mesh));\n }\n }\n\n return lsMesh;\n }\n public cloneGeometryInfo(original): GeometryInfo {\n let newGeoInfo = new GeometryInfo();\n newGeoInfo.geometry = original.geometry.clone();\n newGeoInfo.width = original.width;\n newGeoInfo.length = original.length;\n newGeoInfo.height = original.height;\n newGeoInfo.name = original.name;\n return newGeoInfo;\n }\n public getHeightByAngle(\n height: number,\n length: number,\n angle: number,\n cons: number\n ) {\n let allow = cons;\n if (UI.structureType == 5 && UI.isUpFasciaUpstandardBracket) {\n allow = -cons;\n }\n return height + this.tan(angle) * length * allow;\n }\n public getHeightByAngle2(\n height: number,\n length: number,\n angle: number,\n cons: number\n ) {\n return height + (length / this.tan(angle)) * cons;\n }\n public getHypotenuseByCos(length, angle) {\n return length / this.cos(angle);\n }\n public getSceneBox() {\n let left1 = UI.existingLength1 / 2;\n let right1 = UI.existingLength1 / 2;\n let back1 = UI.existingWidth1 / 2 + 1000;\n let front1 = UI.existingWidth1 / 2;\n\n let leftCondition =\n UI.existingType == BUILDING_SIDE.LEFT ||\n UI.existingType == BUILDING_SIDE.BOTH;\n let rightCondition =\n UI.existingType == BUILDING_SIDE.RIGHT ||\n UI.existingType == BUILDING_SIDE.BOTH;\n let eave = 1500 - UI.eaveWidth;\n\n if (UI.existingWidth1 > 0) {\n if (leftCondition) {\n left1 += eave;\n }\n if (rightCondition) {\n right1 += eave;\n }\n }\n if (UI.existingLength2 > eave) {\n if (leftCondition) {\n left1 += UI.existingLength2 - eave;\n }\n if (rightCondition) {\n right1 += UI.existingLength2 - eave;\n }\n }\n if (UI.existingWidth2 > 0) {\n if (leftCondition) {\n left1 += eave;\n }\n if (rightCondition) {\n right1 += eave;\n }\n }\n\n //Front\n if (front1 < UI.eaveWidth) {\n front1 = UI.eaveWidth - UI.existingWidth1;\n }\n if (UI.existingType != 0) {\n if (UI.existingLength2 > 0) {\n front1 += UI.eaveWidth;\n }\n if (UI.existingWidth2 > 0) {\n front1 += UI.existingWidth2;\n front1 -= UI.eaveWidth;\n }\n }\n\n let point1 = new Vector3(-left1, 0, front1);\n let point2 = new Vector3(right1, 5000, -back1);\n\n let box1 = new Box3().setFromPoints([point1, point2]);\n\n let existingHousetLeft = UI.totalBayLength / 2 + UI.overhangLeft;\n let existingHouseRight = UI.totalBayLength / 2 + UI.overhangRight;\n let existingHouseBack = UI.existingWidth1 / 2 + 1000;\n let existingHouseFront =\n UI.span + UI.multiSpan + UI.overhangFront - UI.existingWidth1 / 2;\n\n let diff = UI.existingLength1 - UI.totalBayLength;\n let translate = 0;\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n translate = -diff / 2 + UI.overhangLeft;\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n translate = diff / 2 - UI.overhangRight;\n } else {\n translate = 0;\n }\n\n let point3 = new Vector3(-existingHousetLeft, 0, existingHouseFront);\n let point4 = new Vector3(existingHouseRight, 5000, -existingHouseBack);\n\n let box2 = new Box3().setFromPoints([point3, point4]);\n box2.translate(new Vector3(translate, 0, 0));\n\n return box1.union(box2);\n }\n public getAllMeshDescendant(parent: Object3D): Object3D[] {\n let meshes: Object3D[] = [];\n if (!parent.children) return [];\n\n for (let child of parent.children) {\n if (child.children) {\n meshes = meshes.concat(this.getAllMeshDescendant(child));\n } else {\n meshes.push(child);\n }\n }\n\n return meshes;\n }\n public getObjectsBoundingBox(objects: Object3D[]) {\n //this function has problem that is, updateMatrixWorld() has some delay\n\n let objectCloned: Object3D[] = [];\n let box = new Box3();\n\n for (let obj of objects) {\n if (obj.children.length > 0) {\n // var objChildren = this.getChildDescendent(obj);\n objectCloned.push(...obj.children);\n } else {\n objectCloned.push(obj);\n }\n }\n\n for (let obj of objectCloned) {\n if (obj[\"geometry\"]) {\n var geo = (obj as Mesh).geometry;\n geo.computeBoundingBox();\n // var min = geo.boundingBox.min;\n // var max = geo.boundingBox.max;\n\n var objBox = geo.boundingBox.clone();\n\n obj.updateMatrixWorld();\n objBox.applyMatrix4(obj.matrixWorld);\n\n // min.x += obj.position.x;\n // min.y += obj.position.y;\n // min.z += obj.position.z;\n\n // max.x += obj.position.x;\n // max.y += obj.position.y;\n // max.z += obj.position.z;\n\n box = box.expandByPoint(objBox.min);\n box = box.expandByPoint(objBox.max);\n }\n }\n\n //objectCloned = objectCloned.filter(o => o.constructor.name == 'Mesh');\n\n // for(let obj of objectCloned){\n // //if(obj.constructor.name != 'Mesh') continue;\n // box = box.expandByObject(obj);\n // }\n\n return box;\n }\n public getObjectBoundingBox(obj: Object3D): Box3 {\n let box = new Box3();\n return box.expandByObject(obj);\n }\n public getChildDescendent(group: Object3D): Object3D[] {\n if (!group.children || group.children.length == 0) return [];\n\n let children: Object3D[] = [];\n\n for (let child of group.children) {\n children.push(child);\n if (child.children && child.children.length > 0) {\n children.push(...this.getChildDescendent(child));\n }\n }\n\n return children;\n }\n public addArrowForLine(\n line: Mesh,\n userData: any = null,\n onDragCallback = null\n ): Object3D[] {\n let box = new Box3().setFromObject(line);\n let lineLength = box.max.x - box.min.x;\n let arrowLength = 150;\n let angle = 15;\n\n if (lineLength < 300) {\n return [];\n }\n\n let y = this.tan(angle) * arrowLength;\n let shape1 = new Shape();\n shape1.moveTo(0, 0);\n shape1.lineTo(arrowLength, y);\n shape1.lineTo(arrowLength, -y);\n shape1.closePath();\n const mat = MaterialManager.Instance().DIMENSION_TEXT.clone();\n let arrow1 = new Mesh(new ShapeBufferGeometry(shape1), mat);\n arrow1.userData = {\n type: GEOMETRY_TYPE.DIMENSION_CAP,\n views: line.userData.views,\n ...userData,\n };\n arrow1.position.set(\n line.position.x - lineLength / 2,\n line.position.y,\n line.position.z\n );\n let arrow2 = arrow1.clone();\n arrow2.rotateZ(Math.PI);\n arrow2.userData = {\n type: GEOMETRY_TYPE.DIMENSION_CAP,\n views: line.userData.views,\n ...userData,\n };\n arrow2.position.set(\n line.position.x + lineLength / 2,\n line.position.y,\n line.position.z\n );\n\n if (userData?.arrowColor) {\n mat.color = new Color(userData.arrowColor);\n }\n\n if (onDragCallback) {\n SelectionManager.ins.addEventListener(\"drag\", onDragCallback, arrow1);\n SelectionManager.ins.addEventListener(\"drag\", onDragCallback, arrow2);\n }\n\n return [arrow1, arrow2];\n }\n\n public createBeamGroup(\n beamGeo: GeometryInfo,\n beamCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n userDataPos: any,\n isHighLightBeam = false,\n beamEndCapAndJointInfo: BeamCapAndJointInfo = {\n hasStartCap: false,\n hasEndCap: false,\n hasStartJoint: false,\n hasEndJoint: false,\n jointGeo: null,\n }\n ) {\n let scale = length / beamGeo.length;\n\n let mesh = new Mesh(\n beamGeo.geometry,\n isHighLightBeam\n ? MaterialManager.Instance().BEAM_TRANSPARENT\n : MaterialManager.Instance().BEAM\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n position: userDataPos,\n views: views,\n };\n mesh.scale.setX(scale);\n\n let startCap = new Mesh(\n beamCapGeo.geometry,\n isHighLightBeam\n ? MaterialManager.Instance().BRACKET_WARNING\n : MaterialManager.Instance().BEAM\n );\n startCap.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n beamCapGeo.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n let endCap = new Mesh(\n beamCapGeo.geometry,\n isHighLightBeam\n ? MaterialManager.Instance().BRACKET_WARNING\n : MaterialManager.Instance().BEAM\n );\n endCap.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n beamCapGeo.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n if (directionOffset < 0) {\n startCap.position.set(\n -length + beamCapGeo.length / 2 - 2,\n 0,\n beamCapGeo.width / 2\n );\n endCap.position.set(-beamCapGeo.length / 2 + 2, 0, beamCapGeo.width / 2);\n } else if (directionOffset > 0) {\n startCap.position.set(\n 0 + beamCapGeo.length / 2 - 2,\n 0,\n beamCapGeo.width / 2\n );\n endCap.position.set(\n length - beamCapGeo.length / 2 + 2,\n 0,\n beamCapGeo.width / 2\n );\n } else {\n startCap.position.set(\n -length / 2 + beamCapGeo.length / 2 - 2,\n 0,\n beamCapGeo.width / 2\n );\n endCap.position.set(\n length / 2 - beamCapGeo.length / 2 + 2,\n 0,\n beamCapGeo.width / 2\n );\n }\n\n startCap.rotateY(Math.PI / 2);\n endCap.rotateY(-Math.PI / 2);\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n position: userDataPos,\n views: views,\n };\n beamGroup.position.set(pos.x, pos.y, pos.z);\n if (rot) {\n beamGroup.rotation.set(rot.x, rot.y, rot.z);\n }\n\n beamGroup.add(mesh);\n\n if (beamEndCapAndJointInfo.hasStartCap) {\n beamGroup.add(startCap);\n }\n if (beamEndCapAndJointInfo.hasEndCap) {\n beamGroup.add(endCap);\n }\n\n if (beamEndCapAndJointInfo.jointGeo) {\n const startJoint = new Mesh(\n beamEndCapAndJointInfo.jointGeo.geometry,\n isHighLightBeam\n ? MaterialManager.Instance().BRACKET_WARNING\n : MaterialManager.Instance().BEAM\n );\n startJoint.userData = {\n type: GEOMETRY_TYPE.INTERNAL_JOINT,\n name: beamEndCapAndJointInfo.jointGeo.name,\n };\n const endJoint = new Mesh(\n beamEndCapAndJointInfo.jointGeo.geometry,\n isHighLightBeam\n ? MaterialManager.Instance().BRACKET_WARNING\n : MaterialManager.Instance().BEAM\n );\n endJoint.userData = {\n type: GEOMETRY_TYPE.INTERNAL_JOINT,\n name: beamEndCapAndJointInfo.jointGeo.name,\n };\n if (directionOffset < 0) {\n startJoint.position.set(\n -length + beamCapGeo.length / 2 - 2,\n beamEndCapAndJointInfo.jointGeo.height / 2 +\n EXISTING_BUILDING_CONFIG.FIT_JOINT,\n beamCapGeo.width / 2\n );\n endJoint.position.set(\n -beamCapGeo.length / 2 + 2,\n 0,\n beamCapGeo.width / 2\n );\n } else if (directionOffset > 0) {\n startJoint.position.set(\n 0 + beamCapGeo.length / 2 - 2,\n beamEndCapAndJointInfo.jointGeo.height / 2 +\n EXISTING_BUILDING_CONFIG.FIT_JOINT,\n beamCapGeo.width / 2\n );\n endJoint.position.set(\n length - beamCapGeo.length / 2 + 2,\n beamEndCapAndJointInfo.jointGeo.height / 2 +\n EXISTING_BUILDING_CONFIG.FIT_JOINT,\n beamCapGeo.width / 2\n );\n } else {\n startJoint.position.set(\n -length / 2 + beamCapGeo.length / 2 - 2,\n beamEndCapAndJointInfo.jointGeo.height / 2 +\n EXISTING_BUILDING_CONFIG.FIT_JOINT,\n beamCapGeo.width / 2\n );\n endJoint.position.set(\n length / 2 - beamCapGeo.length / 2 + 2,\n beamEndCapAndJointInfo.jointGeo.height / 2 +\n EXISTING_BUILDING_CONFIG.FIT_JOINT,\n beamCapGeo.width / 2\n );\n }\n\n startJoint.rotateY(Math.PI / 2);\n endJoint.rotateY(-Math.PI / 2);\n\n if (beamEndCapAndJointInfo.hasStartJoint) {\n beamGroup.add(startJoint);\n }\n if (beamEndCapAndJointInfo.hasEndJoint) {\n beamGroup.add(endJoint);\n }\n }\n\n return beamGroup;\n }\n public getListSeperateBeamsByBaysForFbGable(\n startEndOfBayZ,\n startBeamStartZ,\n startBeamEndZ,\n startEndCutBeamZ,\n startStartCutBeamZ\n ) {\n let endOfBayZ = startEndOfBayZ;\n let beamStartZ = startBeamStartZ;\n let endCutBeamZ = startEndCutBeamZ;\n let beamEndZ = startBeamEndZ;\n let startCutBeamZ = startStartCutBeamZ;\n\n const beams = [];\n for (let i = 0; i < UI.listBay.length; i++) {\n endOfBayZ += UI.listBay[i].value;\n if (beamStartZ > endOfBayZ) {\n continue;\n }\n\n let shouldAddBeam = false;\n if (UI.listBay[i].isCut) {\n endCutBeamZ = endOfBayZ;\n shouldAddBeam = true;\n }\n if (i == UI.listBay.length - 1 || beamEndZ < endOfBayZ) {\n endCutBeamZ = beamEndZ;\n shouldAddBeam = true;\n }\n\n if (shouldAddBeam) {\n beams.push([startCutBeamZ, endCutBeamZ]);\n startCutBeamZ = endCutBeamZ;\n }\n\n if (beamEndZ < endOfBayZ) {\n break;\n }\n }\n\n return beams;\n }\n public getListSeperateBeamsByBays(\n startEndOfBayX,\n startBeamStartX,\n startBeamEndX,\n startEndCutBeamX,\n startStartCutBeamX\n ) {\n const beams = [];\n let endOfBayX = startEndOfBayX;\n let beamStartX = startBeamStartX;\n let endCutBeamX = startEndCutBeamX;\n let beamEndX = startBeamEndX;\n let startCutBeamX = startStartCutBeamX;\n\n for (let i = 0; i < UI.listBay.length; i++) {\n endOfBayX += UI.listBay[i].value;\n if (beamStartX > endOfBayX) {\n continue;\n }\n\n let shouldAddBeam = false;\n if (UI.listBay[i].isCut) {\n endCutBeamX = endOfBayX;\n shouldAddBeam = true;\n }\n if (i == UI.listBay.length - 1 || beamEndX < endOfBayX) {\n endCutBeamX = beamEndX;\n shouldAddBeam = true;\n }\n\n if (shouldAddBeam) {\n beams.push([startCutBeamX, endCutBeamX]);\n startCutBeamX = endCutBeamX;\n }\n\n if (beamEndX < endOfBayX) {\n break;\n }\n }\n\n return beams;\n }\n public createBeamGroup2(\n beamGeo: GeometryInfo,\n beamCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n userDataPos: any,\n beamGeoTranslationZ: number,\n beamDirection: string,\n isHighLightBeam = false,\n beamEndCapAndJointInfo: BeamCapAndJointInfo = {\n hasStartCap: false,\n hasEndCap: false,\n hasStartJoint: false,\n hasEndJoint: false,\n jointGeo: null,\n }\n ) {\n let scale = length / beamGeo.length;\n\n let mesh = new Mesh(\n beamGeo.geometry,\n isHighLightBeam\n ? MaterialManager.Instance().BEAM_TRANSPARENT\n : MaterialManager.Instance().BEAM\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n position: userDataPos,\n views: views,\n };\n mesh.scale.setX(scale);\n\n let startCap = new Mesh(\n beamCapGeo.geometry,\n isHighLightBeam\n ? MaterialManager.Instance().BRACKET_WARNING\n : MaterialManager.Instance().BEAM\n );\n startCap.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n beamCapGeo.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n let endCap = new Mesh(\n beamCapGeo.geometry,\n isHighLightBeam\n ? MaterialManager.Instance().BRACKET_WARNING\n : MaterialManager.Instance().BEAM\n );\n endCap.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n beamCapGeo.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n if (beamDirection == \"x\") {\n if (directionOffset < 0) {\n startCap.position.set(\n -length + beamCapGeo.length / 2 - 2,\n 0,\n beamGeoTranslationZ\n );\n endCap.position.set(-beamCapGeo.length / 2 + 2, 0, beamGeoTranslationZ);\n } else if (directionOffset > 0) {\n startCap.position.set(\n 0 + beamCapGeo.length / 2 - 2,\n 0,\n beamGeoTranslationZ\n );\n endCap.position.set(\n length - beamCapGeo.length / 2 + 2,\n 0,\n beamGeoTranslationZ\n );\n } else {\n startCap.position.set(\n -length / 2 + beamCapGeo.length / 2 - 2,\n 0,\n beamGeoTranslationZ\n );\n endCap.position.set(\n length / 2 - beamCapGeo.length / 2 + 2,\n 0,\n beamGeoTranslationZ\n );\n }\n\n startCap.rotateY(Math.PI / 2);\n endCap.rotateY(-Math.PI / 2);\n } else if (beamDirection == \"z\") {\n if (directionOffset < 0) {\n startCap.position.set(\n beamGeoTranslationZ,\n 0,\n -length + beamCapGeo.length / 2 - 2\n );\n endCap.position.set(beamGeoTranslationZ, 0, -beamCapGeo.length / 2 + 2);\n } else if (directionOffset > 0) {\n startCap.position.set(\n beamGeoTranslationZ,\n 0,\n beamCapGeo.length / 2 - 2\n );\n endCap.position.set(\n beamGeoTranslationZ,\n 0,\n length - beamCapGeo.length / 2 + 2\n );\n } else {\n startCap.position.set(\n beamGeoTranslationZ,\n 0,\n -length / 2 + beamCapGeo.length / 2 - 2\n );\n endCap.position.set(\n beamGeoTranslationZ,\n 0,\n length / 2 - beamCapGeo.length / 2 + 2\n );\n }\n\n // startCap.rotateY(Math.PI / 2);\n // endCap.rotateY(-Math.PI / 2);\n }\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n position: userDataPos,\n views: views,\n };\n beamGroup.position.set(pos.x, pos.y, pos.z);\n if (rot) {\n beamGroup.rotation.set(rot.x, rot.y, rot.z);\n }\n\n beamGroup.add(mesh);\n\n if (beamEndCapAndJointInfo.hasStartCap) {\n beamGroup.add(startCap);\n }\n if (beamEndCapAndJointInfo.hasEndCap) {\n beamGroup.add(endCap);\n }\n\n if (beamEndCapAndJointInfo.jointGeo) {\n const startJoint = new Mesh(\n beamEndCapAndJointInfo.jointGeo.geometry,\n isHighLightBeam\n ? MaterialManager.Instance().BRACKET_WARNING\n : MaterialManager.Instance().BEAM\n );\n startJoint.userData = {\n type: GEOMETRY_TYPE.INTERNAL_JOINT,\n name: beamEndCapAndJointInfo.jointGeo.name,\n };\n const endJoint = new Mesh(\n beamEndCapAndJointInfo.jointGeo.geometry,\n isHighLightBeam\n ? MaterialManager.Instance().BRACKET_WARNING\n : MaterialManager.Instance().BEAM\n );\n endJoint.userData = {\n type: GEOMETRY_TYPE.INTERNAL_JOINT,\n name: beamEndCapAndJointInfo.jointGeo.name,\n };\n if (beamDirection == \"x\") {\n if (directionOffset < 0) {\n startJoint.position.set(\n -length,\n -beamEndCapAndJointInfo.jointGeo.height / 2 -\n EXISTING_BUILDING_CONFIG.FIT_JOINT,\n beamGeoTranslationZ\n );\n endJoint.position.set(\n -beamCapGeo.length / 2 + 2,\n 0,\n beamGeoTranslationZ\n );\n } else if (directionOffset > 0) {\n startJoint.position.set(\n 0,\n -beamEndCapAndJointInfo.jointGeo.height / 2 -\n EXISTING_BUILDING_CONFIG.FIT_JOINT,\n beamGeoTranslationZ\n );\n endJoint.position.set(\n length,\n -beamEndCapAndJointInfo.jointGeo.height / 2 -\n EXISTING_BUILDING_CONFIG.FIT_JOINT,\n beamGeoTranslationZ\n );\n } else {\n startJoint.position.set(\n -length / 2,\n -beamEndCapAndJointInfo.jointGeo.height / 2 -\n EXISTING_BUILDING_CONFIG.FIT_JOINT,\n beamGeoTranslationZ\n );\n endJoint.position.set(\n length / 2,\n -beamEndCapAndJointInfo.jointGeo.height / 2 -\n EXISTING_BUILDING_CONFIG.FIT_JOINT,\n beamGeoTranslationZ\n );\n }\n\n startJoint.rotateY(Math.PI / 2);\n endJoint.rotateY(-Math.PI / 2);\n } else if (beamDirection == \"z\") {\n if (directionOffset < 0) {\n startJoint.position.set(\n beamGeoTranslationZ,\n -beamEndCapAndJointInfo.jointGeo.height / 2 -\n EXISTING_BUILDING_CONFIG.FIT_JOINT,\n -length\n );\n endJoint.position.set(\n beamGeoTranslationZ,\n 0,\n -beamCapGeo.length / 2 + 2\n );\n } else if (directionOffset > 0) {\n startJoint.position.set(\n beamGeoTranslationZ,\n -beamEndCapAndJointInfo.jointGeo.height / 2 -\n EXISTING_BUILDING_CONFIG.FIT_JOINT,\n 0\n );\n endJoint.position.set(\n beamGeoTranslationZ,\n -beamEndCapAndJointInfo.jointGeo.height / 2 -\n EXISTING_BUILDING_CONFIG.FIT_JOINT,\n length\n );\n } else {\n startJoint.position.set(\n beamGeoTranslationZ,\n -beamEndCapAndJointInfo.jointGeo.height / 2 -\n EXISTING_BUILDING_CONFIG.FIT_JOINT,\n -length / 2\n );\n endJoint.position.set(\n beamGeoTranslationZ,\n -beamEndCapAndJointInfo.jointGeo.height / 2 -\n EXISTING_BUILDING_CONFIG.FIT_JOINT,\n length / 2\n );\n }\n }\n if (beamEndCapAndJointInfo.hasStartJoint) {\n beamGroup.add(startJoint);\n }\n if (beamEndCapAndJointInfo.hasEndJoint) {\n beamGroup.add(endJoint);\n }\n }\n\n return beamGroup;\n }\n public createGutterGroup(\n gutterGeo: GeometryInfo,\n gutterCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n hasStartCap?: boolean,\n hasEndCap?: boolean,\n clippingCsg?: CSG,\n parent?: Object3D\n ) {\n let scale = length / gutterGeo.length;\n\n let mesh = new Mesh(gutterGeo.geometry, MaterialManager.Instance().GUTTER);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GUTTER_PATIOS,\n views: views,\n };\n mesh.scale.setX(scale);\n\n let startCap = new Mesh(\n gutterCapGeo.geometry,\n MaterialManager.Instance().GUTTER\n );\n let endCap = new Mesh(\n gutterCapGeo.geometry,\n MaterialManager.Instance().GUTTER\n );\n\n if (directionOffset < 0) {\n startCap.position.set(-length, 0, 0);\n endCap.position.set(0, 0, 0);\n } else if (directionOffset > 0) {\n startCap.position.set(0, 0, 0);\n endCap.position.set(length, 0, 0);\n } else {\n startCap.position.set(-length / 2, 0, 0);\n endCap.position.set(length / 2, 0, 0);\n }\n\n let gutterGroup = new Group();\n gutterGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GUTTER_PATIOS,\n views: views,\n };\n gutterGroup.position.set(pos.x, pos.y, pos.z);\n if (rot) {\n gutterGroup.rotation.set(rot.x, rot.y, rot.z);\n }\n\n if (clippingCsg) {\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n mesh.position.set(pos.x, pos.y, pos.z);\n if (rot) {\n mesh.rotation.set(rot.x, rot.y, rot.z);\n }\n\n mesh.updateMatrix();\n\n const meshCliped = CSG.toMesh(\n CSG.fromMesh(mesh).subtract(clippingCsg),\n mesh.matrix\n );\n meshCliped.userData = mesh.userData;\n meshCliped.material = mesh.material;\n meshCliped.applyMatrix4(new Matrix4().getInverse(mesh.matrix)); //back to origin\n meshCliped.applyMatrix4(matrixBefore);\n gutterGroup.add(meshCliped);\n } else {\n gutterGroup.add(mesh);\n }\n\n if (hasStartCap) {\n gutterGroup.add(startCap);\n }\n if (hasEndCap) {\n gutterGroup.add(endCap);\n }\n\n return gutterGroup;\n }\n public createGutterGroupWithMesh(\n gutterMesh: Mesh,\n gutterCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n hasStartCap?: boolean,\n hasEndCap?: boolean\n ) {\n let startCap = new Mesh(\n gutterCapGeo.geometry,\n MaterialManager.Instance().GUTTER\n );\n let endCap = new Mesh(\n gutterCapGeo.geometry,\n MaterialManager.Instance().GUTTER\n );\n\n if (directionOffset < 0) {\n startCap.position.set(-length, 0, 0);\n endCap.position.set(0, 0, 0);\n } else if (directionOffset > 0) {\n startCap.position.set(0, 0, 0);\n endCap.position.set(length, 0, 0);\n } else {\n startCap.position.set(-length / 2, 0, 0);\n endCap.position.set(length / 2, 0, 0);\n }\n\n let gutterGroup = new Group();\n gutterGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GUTTER_PATIOS,\n views: views,\n };\n gutterGroup.position.set(pos.x, pos.y, pos.z);\n if (rot) {\n gutterGroup.rotation.set(rot.x, rot.y, rot.z);\n }\n\n gutterGroup.add(gutterMesh);\n\n if (hasStartCap) {\n gutterGroup.add(startCap);\n }\n if (hasEndCap) {\n gutterGroup.add(endCap);\n }\n\n return gutterGroup;\n }\n public createPositionHelper(point: Vector3, size: number) {\n let geo = new BufferGeometry();\n geo.setFromPoints([\n new Vector3(point.x - size, point.y, point.z),\n new Vector3(point.x + size, point.y, point.z),\n new Vector3(point.x, point.y - size, point.z),\n new Vector3(point.x, point.y + size, point.z),\n ]);\n return new LineSegments(geo, new LineBasicMaterial({ color: \"red\" }));\n }\n\n public getIntersection(line1: Line3, line2: Line3): Vector2 {\n let line1StartX = line1.start.x;\n let line1StartY = line1.start.y;\n let line1EndX = line1.end.x;\n let line1EndY = line1.end.y;\n let line2StartX = line2.start.x;\n let line2StartY = line2.start.y;\n let line2EndX = line2.end.x;\n let line2EndY = line2.end.y;\n\n // if the lines intersect, the result contains the x and y of the intersection (treating the lines as infinite) and booleans for whether line segment 1 or line segment 2 contain the point\n var denominator,\n a,\n b,\n numerator1,\n numerator2,\n result = {\n x: null,\n y: null,\n };\n denominator =\n (line2EndY - line2StartY) * (line1EndX - line1StartX) -\n (line2EndX - line2StartX) * (line1EndY - line1StartY);\n if (denominator == 0) {\n return undefined;\n }\n a = line1StartY - line2StartY;\n b = line1StartX - line2StartX;\n numerator1 = (line2EndX - line2StartX) * a - (line2EndY - line2StartY) * b;\n numerator2 = (line1EndX - line1StartX) * a - (line1EndY - line1StartY) * b;\n a = numerator1 / denominator;\n b = numerator2 / denominator;\n\n // if we cast these lines infinitely in both directions, they intersect here:\n result.x = line1StartX + a * (line1EndX - line1StartX);\n result.y = line1StartY + a * (line1EndY - line1StartY);\n /*\n // it is worth noting that this should be the same as:\n x = line2StartX + (b * (line2EndX - line2StartX));\n y = line2StartX + (b * (line2EndY - line2StartY));\n */\n // if line1 is a segment and line2 is infinite, they intersect if:\n // if (a > 0 && a < 1) {\n // result.onLine1 = true;\n // }\n // // if line2 is a segment and line1 is infinite, they intersect if:\n // if (b > 0 && b < 1) {\n // result.onLine2 = true;\n // }\n // if line1 and line2 are segments, they intersect if both of the above are true\n return new Vector2(result.x, result.y);\n }\n public createMesh(\n geo: BufferGeometry | Geometry,\n material: Material,\n userData: any,\n posX: number,\n posY: number,\n posZ: number,\n rotX: number,\n rotY: number,\n rotZ: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number\n ): Mesh {\n let mesh = new Mesh(geo, material);\n mesh.userData = userData;\n mesh.position.set(posX, posY, posZ);\n mesh.rotation.set(rotX, rotY, rotZ);\n mesh.scale.set(scaleX, scaleY, scaleZ);\n\n return mesh;\n }\n //NOTE: for bindBuildingInfo() function\n public getInfoFromGeometry(\n app: HomeComponent,\n children: Object3D[],\n geoManager: GeometryManager,\n isCutOut: boolean,\n isRakeCut: boolean\n ): any {\n this.geo_gutterBack = geoManager.getGutter();\n\n const _roofPatios = [];\n children.map((group) => {\n _roofPatios.push(\n ...group.children.filter(\n (f) => f.userData.type === GEOMETRY_TYPE.ROOF_PATIOS\n )\n );\n });\n if (_roofPatios.length === 0) {\n children.map((group) => {\n if (group.userData.type === GEOMETRY_TYPE.ROOF_PATIOS) {\n _roofPatios.push(group);\n }\n if (group.type == \"Group\") {\n group.traverse((object) => {\n if (object.userData.type === GEOMETRY_TYPE.ROOF_PATIOS) {\n _roofPatios.push(object);\n }\n });\n }\n return group;\n });\n }\n const elementArray = [];\n children.map((group) => {\n if (\n group.userData.type === GEOMETRY_TYPE.DOWNPIPE ||\n group.userData.type === GEOMETRY_TYPE.SUPERIOR_BEAM ||\n group.userData.type === GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM ||\n group.userData.type === GEOMETRY_TYPE.SUPERIOR_INTERNAL_BEAM\n ) {\n elementArray.push(group);\n }\n });\n children.map((group) => {\n elementArray.push(\n ...group.children.filter(\n (f) =>\n f.userData.type === GEOMETRY_TYPE.FLY_OVER_BRACKET ||\n (f.userData.type === GEOMETRY_TYPE.DOWNPIPE &&\n f.children.length > 0) ||\n (f.userData.type === GEOMETRY_TYPE.SUPERIOR_BEAM &&\n f.children.length > 0) ||\n f.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET ||\n f.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET_CUTOUT ||\n f.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET_EXT ||\n f.userData.type === GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM ||\n f.userData.type === GEOMETRY_TYPE.SUPERIOR_INTERNAL_BEAM\n )\n );\n // return group;\n });\n _roofPatios.map((group) => {\n elementArray.push(\n ...group.children.filter(\n (f) =>\n f.userData.type === GEOMETRY_TYPE.GUTTER_PATIOS ||\n f.userData.type === GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING ||\n f.userData.type === GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING ||\n f.userData.type === GEOMETRY_TYPE.RECEIVER_CHANEL ||\n f.userData.type === GEOMETRY_TYPE.ROOF_PANEL ||\n f.userData.type === GEOMETRY_TYPE.ZFLASHING\n )\n );\n return group;\n });\n let _beams = [];\n let _angleBrackets = 0;\n elementArray\n .filter((f) => f.userData.type === GEOMETRY_TYPE.SUPERIOR_BEAM)\n .map((beam) => {\n if (beam.userData.angle) {\n _angleBrackets += 2;\n }\n let _length = 0;\n let _position = null;\n if (beam.userData.category) {\n _length =\n beam.children.length > 0\n ? beam.children[0].scale.z !== 1\n ? beam.children[0].scale.z\n : beam.children[0].scale.x\n : beam.scale.x;\n _position =\n beam.children.length > 0\n ? beam.children[0].userData.position\n : beam.userData.position;\n } else {\n beam.children\n .filter((f) => f.userData.type == GEOMETRY_TYPE.UPSTAND_BRAKET_BEAM)\n .map((m) => {\n _length = m.scale.x;\n _position = { back: true };\n });\n }\n _beams.push({\n length: _length,\n position: _position,\n });\n //\n _beams = _beams.map((m) => {\n return {\n ...m,\n isHouseBeam: !app.chkHasHouseBeam.currentValue\n ? false\n : m.position?.back || m.position?.cutout\n ? true\n : false,\n };\n });\n });\n\n let _internalJoints = [];\n let _normalBeamEndCaps = [];\n elementArray\n .filter(\n (f) =>\n f.userData.type === GEOMETRY_TYPE.SUPERIOR_BEAM ||\n f.userData.type === GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM ||\n f.userData.type === GEOMETRY_TYPE.SUPERIOR_INTERNAL_BEAM\n )\n .map((beam) => {\n console.log(\"👉 ~ file: utils.ts:2219 ~ Util ~ .map ~ beam:\", beam);\n if (_.has(beam, [\"children\"])) {\n beam.children\n .filter((el) => el.userData.type == GEOMETRY_TYPE.INTERNAL_JOINT)\n .forEach((el) => {\n _internalJoints.push({\n code: el.userData.name,\n });\n });\n beam.children\n .filter(\n (el) => el.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP\n )\n .forEach((el) => {\n _normalBeamEndCaps.push({\n code: el.userData.code,\n });\n });\n }\n });\n const _jointGroupJoints = _.groupBy(_internalJoints, (el) => el.code);\n _internalJoints = [];\n Object.entries(_jointGroupJoints).forEach(([key, value]) => {\n _internalJoints.push({\n code: key,\n qty: _.get(value, [\"length\"], 0),\n });\n });\n const _jointGroupEndCaps = _.groupBy(_normalBeamEndCaps, (el) => el.code);\n _normalBeamEndCaps = [];\n Object.entries(_jointGroupEndCaps).forEach(([key, value]) => {\n _normalBeamEndCaps.push({\n code: key,\n qty: _.get(value, [\"length\"], 0),\n });\n });\n const _panels = [];\n elementArray\n .filter((f) => f.userData.type === GEOMETRY_TYPE.ROOF_PANEL)\n .map((panel) => {\n let _length = 0;\n if (isRakeCut || isCutOut) {\n let _boxPanel = new Box3().setFromObject(panel);\n let direction = \"z\";\n if (\n HomeComponent.ins.isFBRoof &&\n HomeComponent.ins.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF\n ) {\n direction = \"x\";\n }\n _length = _.round(\n Math.ceil(_boxPanel.max[direction] - _boxPanel.min[direction]) /\n 1000,\n 2\n );\n _length = _.min([_.round(panel.scale.z, 2), _length]);\n } else {\n _length = _.round(panel.scale.z, 2);\n }\n _panels.push({\n length: _length / this.cos(UI.patiosPitch),\n //HACK: Check\n // length: _.round(Math.ceil(_boxPanel.min.distanceTo(_boxPanel.max)) / 1000, 2)\n });\n });\n let _downpipes = 0;\n let _nozzles = 0;\n elementArray\n .filter((f) => f.userData.type === GEOMETRY_TYPE.DOWNPIPE)\n .map((downpipe) => {\n const _countDownpipe = downpipe.children.filter(\n (f) => f.userData.type === GEOMETRY_TYPE.DOWNPIPE_NOZZLE\n );\n if (_countDownpipe.length === 0) {\n _downpipes++;\n } else {\n _nozzles++;\n }\n });\n\n const _gutters = [];\n elementArray\n .filter((f) => f.userData.type === GEOMETRY_TYPE.GUTTER_PATIOS)\n .map((gutter) => {\n _gutters.push({\n length:\n (gutter.children[0].scale.x * this.geo_gutterBack.length) / 1000,\n });\n });\n const _barges = [];\n elementArray\n .filter((f) => f.userData.type === GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING)\n .map((barge) => {\n _barges.push({\n length:\n barge.scale.x != barge.scale.z && barge.scale.x != 1\n ? this.round(barge.scale.x)\n : this.round(barge.scale.z),\n });\n });\n //Drip Barge\n elementArray\n .filter(\n (f) => f.userData.type === GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n )\n .map((drip) => {\n _barges.push({\n length:\n drip.scale.x != drip.scale.z && drip.scale.x != 1\n ? this.round(drip.scale.x)\n : this.round(drip.scale.z),\n });\n });\n\n const _zflashings = [];\n elementArray\n .filter((f) => f.userData.type === GEOMETRY_TYPE.ZFLASHING)\n .map((zflashing) => {\n _zflashings.push({\n length:\n zflashing.scale.x != zflashing.scale.z && zflashing.scale.x != 1\n ? this.round(zflashing.scale.x)\n : this.round(zflashing.scale.z),\n });\n });\n\n let _recChanels = [];\n elementArray\n .filter((f) => f.userData.type === GEOMETRY_TYPE.RECEIVER_CHANEL)\n .map((receiver_chanel) => {\n _recChanels.push({\n length:\n receiver_chanel.scale.x != receiver_chanel.scale.z &&\n receiver_chanel.scale.x != 1\n ? this.round(receiver_chanel.scale.x)\n : this.round(receiver_chanel.scale.z),\n });\n });\n let listRecChanels = _.groupBy(_recChanels, (item) => item.length);\n _recChanels = [];\n let _keys = Object.keys(listRecChanels);\n _keys.forEach((el) => {\n _recChanels.push({\n length: +el,\n qty: listRecChanels[el].length,\n });\n });\n //HACK: conflict\n const flyOverBrackets = elementArray.filter(\n (f) =>\n f.userData.type === GEOMETRY_TYPE.FLY_OVER_BRACKET &&\n f.userData.position.back &&\n !f.userData.position.cutout\n ).length;\n\n const flyOverBracketCutOuts = elementArray.filter(\n (f) =>\n f.userData.type === GEOMETRY_TYPE.FLY_OVER_BRACKET &&\n f.userData.position.back &&\n f.userData.position.cutout\n ).length;\n\n const extFlyOverBracket =\n elementArray.filter(\n (f) => f.userData.type === GEOMETRY_TYPE.FLY_OVER_BRACKET\n ).length -\n flyOverBracketCutOuts -\n flyOverBrackets;\n\n return {\n downpipes: _downpipes,\n angleBrackets: _angleBrackets,\n bottomAngleBrackets: 0,\n nozzles: _nozzles,\n extFlyoverBrackets: extFlyOverBracket,\n flyoverBrackets: flyOverBrackets,\n flyoverBracketCutOuts: flyOverBracketCutOuts,\n internalJoints: _internalJoints,\n normalBeamEndCaps: _normalBeamEndCaps,\n gutters: _gutters,\n beams: _beams,\n barges: _barges,\n zflashings: _zflashings,\n receiver_chanels: _recChanels,\n panels: _panels,\n fasciaBrackets: elementArray.filter(\n (f) => f.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET\n ).length,\n fasciaBracketCutouts: elementArray.filter(\n (f) => f.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET_CUTOUT\n ).length,\n fasciaBracketExts: elementArray.filter(\n (f) => f.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET_EXT\n ).length,\n };\n }\n public getInfoFromGeometryGableRoof(\n app: HomeComponent,\n children: Object3D[],\n geoManager: GeometryManager,\n isCutOut: boolean,\n isRakeCut: boolean\n ): any {\n this.geo_gutterBack = geoManager.getGutter();\n\n let _centerPosts = [];\n _centerPosts = children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.SUPERIOR_CENTER_POST\n );\n const _patios = children.filter(\n (x) => x.userData.category === GEOMETRY_CATEGORY.PATIOS\n );\n _patios.map((value) => {\n _centerPosts.push(\n ...value.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.SUPERIOR_CENTER_POST\n )\n );\n return value;\n });\n\n let listCenterPost = _.groupBy(_centerPosts, (item) => item.scale.y);\n\n _centerPosts = [];\n let _keys = Object.keys(listCenterPost);\n _keys.forEach((el) => {\n _centerPosts.push({\n length: _.round(+el, 2),\n qty: listCenterPost[el].length,\n });\n });\n\n const _roofPatios = [];\n children.map((group) => {\n _roofPatios.push(\n ...group.children.filter(\n (f) => f.userData.type === GEOMETRY_TYPE.ROOF_PATIOS\n )\n );\n });\n if (_roofPatios.length === 0) {\n children.map((group) => {\n if (group.userData.type === GEOMETRY_TYPE.ROOF_PATIOS) {\n _roofPatios.push(group);\n }\n if (group.type == \"Group\") {\n group.traverse((object) => {\n if (object.userData.type === GEOMETRY_TYPE.ROOF_PATIOS) {\n _roofPatios.push(object);\n }\n });\n }\n return group;\n });\n }\n const elementArray = [];\n children.map((group) => {\n if (\n group.userData.type === GEOMETRY_TYPE.DOWNPIPE ||\n group.userData.type === GEOMETRY_TYPE.SUPERIOR_BEAM ||\n group.userData.type === GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n ) {\n elementArray.push(group);\n }\n });\n children.map((group) => {\n elementArray.push(\n ...group.children.filter(\n (f) =>\n f.userData.type === GEOMETRY_TYPE.FLY_OVER_BRACKET ||\n (f.userData.type === GEOMETRY_TYPE.DOWNPIPE &&\n f.children.length > 0) ||\n (f.userData.type === GEOMETRY_TYPE.SUPERIOR_BEAM &&\n f.children.length > 0) ||\n f.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET ||\n f.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET_CUTOUT ||\n f.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET_EXT ||\n f.userData.type === GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n )\n );\n // return group;\n });\n _roofPatios.map((group) => {\n elementArray.push(\n ...group.children.filter(\n (f) =>\n f.userData.type === GEOMETRY_TYPE.GUTTER_PATIOS ||\n f.userData.type === GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING ||\n f.userData.type === GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING ||\n f.userData.type === GEOMETRY_TYPE.RECEIVER_CHANEL ||\n f.userData.type === GEOMETRY_TYPE.ROOF_PANEL ||\n f.userData.type === GEOMETRY_TYPE.ZFLASHING\n )\n );\n return group;\n });\n\n let _ridgeCapping = [];\n children.map((group) => {\n _ridgeCapping.push(\n ...group.children.filter(\n (f) => f.userData.type === GEOMETRY_TYPE.RIDGE_CAPPING\n )\n );\n });\n\n _ridgeCapping = _ridgeCapping.map((el) => {\n return {\n length: el.userData.length / 1000,\n qty: 1,\n };\n });\n\n let _beams = [];\n let _internalJoints = [];\n let _normalBeamEndCaps = [];\n let angleBrackets = 0; //Default\n let bottomAngleBrackets = 0; //Default\n elementArray\n .filter(\n (f) =>\n f.userData.type === GEOMETRY_TYPE.SUPERIOR_BEAM ||\n f.userData.type === GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n )\n .map((beam) => {\n // if (beam.userData.angle) {\n // _angleBrackets += 2;\n // }\n let _length = 0;\n let _name = null;\n if (beam.userData.category) {\n _length =\n beam.children.length > 0\n ? beam.children[0].scale.z !== 1\n ? beam.children[0].scale.z\n : beam.children[0].scale.x\n : beam.scale.x;\n _name = beam.userData.name || beam.children[0].userData.name;\n } else {\n beam.children\n .filter((f) => f.userData.type == GEOMETRY_TYPE.UPSTAND_BRAKET_BEAM)\n .map((m) => {\n _length = m.scale.x;\n _name = beam.userData.name;\n });\n }\n _beams.push({\n length: _.round(_length, 2),\n name:\n beam.userData.type === GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n ? \"RF\"\n : _name,\n });\n if (_.has(beam, [\"children\"])) {\n beam.children\n .filter((el) => el.userData.type == GEOMETRY_TYPE.INTERNAL_JOINT)\n .forEach((el) => {\n _internalJoints.push({\n code: el.userData.name,\n });\n });\n beam.children\n .filter(\n (el) => el.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP\n )\n .forEach((el) => {\n _normalBeamEndCaps.push({\n code: el.userData.code,\n });\n });\n }\n if (beam.userData.type === GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM) {\n angleBrackets += 1;\n bottomAngleBrackets += 1;\n }\n });\n const _jointGroup = _.groupBy(_internalJoints, (el) => el.code);\n _internalJoints = [];\n Object.entries(_jointGroup).forEach(([key, value]) => {\n _internalJoints.push({\n code: key,\n qty: _.get(value, [\"length\"], 0),\n });\n });\n const _jointGroupEndCaps = _.groupBy(_normalBeamEndCaps, (el) => el.code);\n _normalBeamEndCaps = [];\n Object.entries(_jointGroupEndCaps).forEach(([key, value]) => {\n _normalBeamEndCaps.push({\n code: key,\n qty: _.get(value, [\"length\"], 0),\n });\n });\n let listBeam = _.groupBy(_beams, (item) => `\"${item.length}+${item.name}\"`);\n\n _beams = [];\n _keys = Object.keys(listBeam);\n _keys.forEach((el) => {\n _beams.push({\n ...listBeam[el][0],\n qty: listBeam[el].length,\n });\n });\n\n let _panels = [];\n elementArray\n .filter((f) => f.userData.type === GEOMETRY_TYPE.ROOF_PANEL)\n .map((panel) => {\n let _length = 0;\n\n let direction = \"z\";\n if (\n HomeComponent.ins.isFBRoof &&\n HomeComponent.ins.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF\n ) {\n direction = \"x\";\n }\n let _boxPanel = new Box3().setFromObject(panel);\n _length = _.round(\n Math.ceil(_boxPanel.max[direction] - _boxPanel.min[direction]) / 1000,\n 2\n );\n\n _panels.push({\n length: _length / this.cos(UI.patiosPitch),\n dir: panel.userData.dir,\n });\n });\n\n let listPanels = _.groupBy(_panels, (item) => `${item.length}-${item.dir}`);\n _panels = [];\n _keys = Object.keys(listPanels);\n _keys.forEach((el) => {\n _panels.push({\n length: +listPanels[el][0].length,\n dir: listPanels[el][0].dir,\n qty: listPanels[el].length,\n });\n });\n\n let _downpipes = 0;\n let _nozzles = 0;\n elementArray\n .filter((f) => f.userData.type === GEOMETRY_TYPE.DOWNPIPE)\n .map((downpipe) => {\n const _countDownpipe = downpipe.children.filter(\n (f) => f.userData.type === GEOMETRY_TYPE.DOWNPIPE_NOZZLE\n );\n if (_countDownpipe.length === 0) {\n _downpipes++;\n } else {\n _nozzles++;\n }\n });\n\n let _gutters = [];\n elementArray\n .filter((f) => f.userData.type === GEOMETRY_TYPE.GUTTER_PATIOS)\n .map((gutter) => {\n _gutters.push({\n length:\n (gutter.children[0].scale.x * this.geo_gutterBack.length) / 1000,\n });\n });\n\n let listGutters = _.groupBy(_gutters, (item) => item.length);\n _gutters = [];\n _keys = Object.keys(listGutters);\n _keys.forEach((el) => {\n _gutters.push({\n length: +el,\n qty: listGutters[el].length,\n });\n });\n\n let _barges = [];\n elementArray\n .filter((f) => f.userData.type === GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING)\n .map((barge) => {\n _barges.push({\n length:\n barge.scale.x != barge.scale.z && barge.scale.x != 1\n ? this.round(barge.scale.x)\n : this.round(barge.scale.z),\n });\n });\n\n //Drip Barge\n elementArray\n .filter(\n (f) => f.userData.type === GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n )\n .map((drip) => {\n _barges.push({\n length:\n drip.scale.x != drip.scale.z && drip.scale.x != 1\n ? this.round(drip.scale.x)\n : this.round(drip.scale.z),\n });\n });\n\n let listBarges = _.groupBy(_barges, (item) => item.length);\n _barges = [];\n _keys = Object.keys(listBarges);\n _keys.forEach((el) => {\n _barges.push({\n length: +el,\n qty: listBarges[el].length,\n });\n });\n\n let _zflashings = [];\n elementArray\n .filter((f) => f.userData.type === GEOMETRY_TYPE.ZFLASHING)\n .map((zflashing) => {\n _zflashings.push({\n length:\n zflashing.scale.x != zflashing.scale.z && zflashing.scale.x != 1\n ? this.round(zflashing.scale.x)\n : this.round(zflashing.scale.z),\n });\n });\n\n let listZflashings = _.groupBy(_zflashings, (item) => item.length);\n _zflashings = [];\n _keys = Object.keys(listZflashings);\n _keys.forEach((el) => {\n _zflashings.push({\n length: +el,\n qty: listZflashings[el].length,\n });\n });\n\n let _recChanels = [];\n elementArray\n .filter((f) => f.userData.type === GEOMETRY_TYPE.RECEIVER_CHANEL)\n .map((receiver_chanel) => {\n _recChanels.push({\n length:\n receiver_chanel.scale.x != receiver_chanel.scale.z &&\n receiver_chanel.scale.x != 1\n ? this.round(receiver_chanel.scale.x)\n : this.round(receiver_chanel.scale.z),\n });\n });\n\n let listRecChanels = _.groupBy(_recChanels, (item) => item.length);\n _recChanels = [];\n _keys = Object.keys(listRecChanels);\n _keys.forEach((el) => {\n _recChanels.push({\n length: +el,\n qty: listRecChanels[el].length,\n });\n });\n\n let _rafterEndCap = [];\n elementArray\n .filter((f) => f.userData.type === GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM)\n .map((beam) => {\n beam.children.forEach((el) => {\n if (el.userData.type === GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP) {\n _rafterEndCap.push({\n name: el.userData.name,\n });\n }\n });\n });\n\n let listRafterEndCap = _.groupBy(_rafterEndCap, (item) => item.name);\n\n _rafterEndCap = [];\n _keys = Object.keys(listRafterEndCap);\n _keys.forEach((el) => {\n _rafterEndCap.push({\n code: el,\n qty: listRafterEndCap[el].length,\n });\n });\n\n const flyOverBrackets = elementArray.filter(\n (f) =>\n f.userData.type === GEOMETRY_TYPE.FLY_OVER_BRACKET &&\n f.userData.position.back &&\n !f.userData.position.cutout\n ).length;\n const flyOverBracketCutOuts = elementArray.filter(\n (f) =>\n f.userData.type === GEOMETRY_TYPE.FLY_OVER_BRACKET &&\n f.userData.position.back &&\n f.userData.position.cutout\n ).length;\n const extFlyOverBracket =\n elementArray.filter(\n (f) => f.userData.type === GEOMETRY_TYPE.FLY_OVER_BRACKET\n ).length -\n flyOverBracketCutOuts -\n flyOverBrackets;\n\n return {\n centerPost: _centerPosts,\n downpipes: _downpipes,\n angleBrackets: angleBrackets,\n bottomAngleBrackets: bottomAngleBrackets,\n nozzles: _nozzles,\n internalJoints: _internalJoints,\n normalBeamEndCaps: _normalBeamEndCaps,\n extFlyoverBrackets: extFlyOverBracket,\n flyoverBrackets: flyOverBrackets,\n flyoverBracketCutOuts: flyOverBracketCutOuts,\n gutters: _gutters,\n beams: _beams,\n barges: _barges,\n zflashings: _zflashings,\n receiver_chanels: _recChanels,\n panels: _panels,\n ridgeCapping: _ridgeCapping,\n rafterEndCap: _rafterEndCap,\n fasciaBrackets: elementArray.filter(\n (f) => f.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET\n ).length,\n fasciaBracketCutouts: elementArray.filter(\n (f) => f.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET_CUTOUT\n ).length,\n fasciaBracketExts: elementArray.filter(\n (f) => f.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET_EXT\n ).length,\n };\n }\n public getBeamRakeCutInfo(APP: HomeComponent, cutSide: BUILDING_SIDE) {\n let k, k_, j, l, m, v, a, b;\n if (cutSide == BUILDING_SIDE.LEFT) {\n k = Math.sqrt(\n Math.pow(APP.sldLeftCutHorizontal.currentValue, 2) +\n Math.pow(APP.sldLeftCutVertical.currentValue, 2)\n );\n k_ =\n (k * APP.sldFrontOverhang.currentValue) /\n APP.sldLeftCutHorizontal.currentValue;\n j =\n APP.sldLeftCutVertical.currentValue +\n k_ -\n APP.sldFrontOverhang.currentValue;\n l =\n (j * APP.sldLeftCutHorizontal.currentValue) /\n APP.sldLeftCutVertical.currentValue;\n m = Math.sqrt(Math.pow(j, 2) + Math.pow(l, 2));\n v =\n APP.sldLeftCutVertical.currentValue - APP.sldFrontOverhang.currentValue;\n\n a = j - (APP.sldSpan.currentValue + APP.sldMultiSpan.currentValue);\n b = a / this.cos(APP.sltRoofPitch.currentValue);\n } else if (cutSide == BUILDING_SIDE.RIGHT) {\n k = Math.sqrt(\n Math.pow(APP.sldRightCutHorizontal.currentValue, 2) +\n Math.pow(APP.sldRightCutVertical.currentValue, 2)\n );\n k_ =\n (k * APP.sldFrontOverhang.currentValue) /\n APP.sldRightCutHorizontal.currentValue;\n j =\n APP.sldRightCutVertical.currentValue +\n k_ -\n APP.sldFrontOverhang.currentValue;\n l =\n (j * APP.sldRightCutHorizontal.currentValue) /\n APP.sldRightCutVertical.currentValue;\n m = Math.sqrt(Math.pow(j, 2) + Math.pow(l, 2));\n v =\n APP.sldRightCutVertical.currentValue -\n APP.sldFrontOverhang.currentValue;\n\n a = j - (APP.sldSpan.currentValue + APP.sldMultiSpan.currentValue);\n b = a / this.cos(APP.sltRoofPitch.currentValue);\n }\n\n return {\n k: k == Infinity || isNaN(k) ? 0 : k,\n j: j == Infinity || isNaN(j) ? 0 : j,\n m: m == Infinity || isNaN(m) ? 0 : m,\n v: v == Infinity || isNaN(v) ? 0 : v,\n a: a == Infinity || isNaN(a) ? 0 : a,\n b: b == Infinity || isNaN(b) ? 0 : b,\n l: l == Infinity || isNaN(l) ? 0 : l,\n k_: k_ == Infinity || isNaN(k_) ? 0 : k_,\n };\n }\n public isPositive(start, end, intersection) {\n // all parameters are THREE.Vector3()\n let v1 = new THREE.Vector3().copy(end).sub(start);\n let v2 = new THREE.Vector3().copy(intersection).sub(start);\n return v1.dot(v2) >= 0;\n }\n // checks if two line segments will intersect on a point\n // when traveling in one specific direction from start to end\n // but not in the direction from end to start\n // params (THREE.Line3, THREE.Line3)\n public getIntersectionOnAPoint(\n line1,\n line2,\n isCheckIntersectIsPositiveLine = false\n ) {\n var intersection = null;\n var A = line1.start;\n var B = line1.end;\n var C = line2.start;\n var D = line2.end;\n\n // Line AB represented as a1x + b1y = c1\n var a1 = B.z - A.z;\n var b1 = A.x - B.x;\n var c1 = a1 * A.x + b1 * A.z;\n\n // Line CD represented as a2x + b2y = c2\n var a2 = D.z - C.z;\n var b2 = C.x - D.x;\n var c2 = a2 * C.x + b2 * C.z;\n\n var determinant = a1 * b2 - a2 * b1;\n\n if (determinant == 0) {\n // The lines are parallel.\n } else {\n var x = (b2 * c1 - b1 * c2) / determinant;\n var z = (a1 * c2 - a2 * c1) / determinant;\n intersection = new THREE.Vector3(x, 0, z);\n }\n\n // if there is an intersection. verify intersection occurs on the two line segments\n // when calculating from start to end\n if (intersection && isCheckIntersectIsPositiveLine) {\n var line1result = this.isPositive(line1.start, line1.end, intersection);\n var line2result = this.isPositive(line2.start, line2.end, intersection);\n if (line1result && line2result) {\n // do nothing when the intersection is not \"false\" as both results are \"true\"\n } else {\n //\n // set intersection to null when the intersection is \"false\" as one of results is \"false\"\n intersection = null;\n }\n }\n return intersection;\n }\n\n public createDownpipeGroup(\n APP: HomeComponent,\n downpipeGroup: Group,\n geoPipe: GeometryInfo,\n geoL: GeometryInfo,\n offsetX: number,\n offsetY: number,\n offsetZ: number,\n offsetZNozzle: number,\n rotationY: number,\n connectLength: number,\n pipeLength: number,\n haveNozzle: boolean\n ) {\n let userData = { type: GEOMETRY_TYPE.DOWNPIPE };\n downpipeGroup.position.set(offsetX, 0, offsetZ);\n\n if (APP.sltGutterType.currentValue == 0) {\n pipeLength -= 80;\n } else {\n pipeLength -= 60;\n }\n\n if (connectLength > 100) {\n if (haveNozzle) {\n pipeLength -= 250;\n\n let meshLBottom = new Mesh(\n geoL.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshLBottom.userData = userData;\n meshLBottom.position.set(0, pipeLength, 20);\n meshLBottom.rotateY(Math.PI / 2);\n\n let meshLTop = new Mesh(\n geoL.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshLTop.userData = userData;\n meshLTop.rotation.set(Math.PI, Math.PI / 2, 0);\n meshLTop.position.set(0, pipeLength + 230, connectLength - 100);\n\n let meshPipeConnect = new Mesh(\n geoPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipeConnect.userData = userData;\n meshPipeConnect.rotation.set(Math.PI / 2, 0, 0);\n meshPipeConnect.position.set(0, pipeLength + 115, 50);\n meshPipeConnect.scale.set(1, (connectLength - 140) / geoPipe.height, 1);\n\n downpipeGroup.add(meshLBottom, meshLTop, meshPipeConnect);\n } else {\n pipeLength += 100;\n offsetY += 100;\n }\n }\n\n let meshPipe = new Mesh(\n geoPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipe.userData = userData;\n meshPipe.scale.setY(pipeLength / geoPipe.height);\n\n downpipeGroup.add(meshPipe);\n\n //Check intersec eave\n let isIntersect = false;\n let boxDownPipe = new Box3().setFromObject(downpipeGroup);\n\n for (let eave of APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n\n if (boxEave.intersectsBox(boxDownPipe)) {\n isIntersect = true;\n break;\n }\n }\n\n if (isIntersect) {\n downpipeGroup.children = [];\n this.createDownpipeNozzle(\n APP,\n downpipeGroup,\n geoPipe,\n offsetX,\n offsetY,\n offsetZNozzle\n );\n }\n\n return downpipeGroup;\n }\n public createDownpipeNozzle(\n APP: HomeComponent,\n downpipeGroup: Group,\n geoPipe: GeometryInfo,\n posX: number,\n posY: number,\n posZ: number\n ) {\n let meshPipe = new Mesh(\n geoPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipe.userData = { type: GEOMETRY_TYPE.DOWNPIPE_NOZZLE };\n meshPipe.scale.setY(100 / geoPipe.height);\n meshPipe.position.set(0, posY - 100 - 100, 0);\n\n downpipeGroup.add(meshPipe);\n downpipeGroup.position.set(posX, 0, posZ);\n return downpipeGroup;\n }\n public handlerDimDragEvent(\n event,\n startPos,\n startMatrix?: Matrix4,\n startBayLength?: number\n ) {\n if (event.object.userData?.dimType === DIMENSION_LABEL_TYPE.BAY) {\n const obj = event.object as Mesh;\n obj.position.z = 0;\n obj.updateMatrixWorld();\n event.object.position.z = 0;\n event.object.position.y = 0;\n let bayNum = obj.userData.bayNum;\n const pos = obj.position.clone();\n let bayOffset = UI.listBay\n .filter((b) => UI.listBay.findIndex((e) => e == b) < +bayNum)\n .reduce((pre, cur) => {\n return pre + cur.value;\n }, 0);\n let bayStartPos = -UI.totalBayLength / 2 + bayOffset;\n let bayEndPos = bayStartPos + UI.listBay[bayNum].value;\n if (\n UI.existingType == 0 ||\n UI.existingType == 3 ||\n UI.structureType == 4\n ) {\n if (event.object.position.x > bayEndPos) {\n event.object.position.x = bayEndPos;\n }\n if (event.object.position.x < bayStartPos) {\n event.object.position.x = bayStartPos;\n }\n if (event.object.userData?.left) {\n if (event.object.position.x < bayEndPos) {\n event.object.position.x = bayEndPos;\n }\n }\n if (event.object.userData?.right) {\n if (event.object.position.x > bayStartPos) {\n event.object.position.x = bayStartPos;\n }\n }\n } else if (UI.existingType == 1) {\n if (obj.userData.right) {\n if (event.object.position.x < bayStartPos) {\n event.object.position.x = bayStartPos;\n }\n if (event.object.position.x > bayStartPos) {\n event.object.position.x = bayStartPos;\n }\n }\n } else if (UI.existingType == 2) {\n if (obj.userData.left) {\n if (event.object.position.x > bayEndPos) {\n event.object.position.x = bayEndPos;\n }\n if (event.object.position.x < bayEndPos) {\n event.object.position.x = bayEndPos;\n }\n }\n }\n let distance = HomeComponent.ins.dialogEditBay.listBay[bayNum].value;\n if (startPos.x == pos.x) {\n return;\n }\n if (obj.userData.left) {\n if (UI.existingType == 1 && UI.structureType != 4) {\n if (startBayLength) {\n const restStartLength = UI.listBay\n .filter((b) => UI.listBay.findIndex((e) => e == b) != +bayNum)\n .reduce((pre, cur) => {\n return pre + cur.value;\n }, 0);\n const totalBayStartLength = restStartLength + startBayLength;\n const startPointOld = -totalBayStartLength / 2 + bayOffset;\n distance = pos.x - startPointOld;\n\n // const fit = distance / 2 - startBayLength / 2;\n // event.object.position.x = pos.x - fit;\n }\n } else {\n if (startBayLength) {\n const restStartLength = UI.listBay\n .filter((b) => UI.listBay.findIndex((e) => e == b) != +bayNum)\n .reduce((pre, cur) => {\n return pre + cur.value;\n }, 0);\n const totalBayStartLength = restStartLength + startBayLength;\n const startCenter =\n -totalBayStartLength / 2 + bayOffset + startBayLength / 2;\n distance = 2 * (pos.x - startCenter);\n }\n // if(pos.x > startPos.x){\n // distance = distance + (pos.x - startPos.x);\n // } else if (pos.x < startPos.x){\n // distance = distance - (startPos.x - pos.x);\n // }\n }\n } else {\n if (UI.existingType == 2 && UI.structureType != 4) {\n if (startBayLength) {\n const restStartLength = UI.listBay\n .filter((b) => UI.listBay.findIndex((e) => e == b) != +bayNum)\n .reduce((pre, cur) => {\n return pre + cur.value;\n }, 0);\n const totalBayStartLength = restStartLength + startBayLength;\n const endPointOld =\n -totalBayStartLength / 2 + bayOffset + startBayLength;\n distance = endPointOld - pos.x;\n }\n } else {\n if (startBayLength) {\n const restStartLength = UI.listBay\n .filter((b) => UI.listBay.findIndex((e) => e == b) != +bayNum)\n .reduce((pre, cur) => {\n return pre + cur.value;\n }, 0);\n const totalBayStartLength = restStartLength + startBayLength;\n const startCenter =\n -totalBayStartLength / 2 + bayOffset + startBayLength / 2;\n distance = 2 * (startCenter - pos.x);\n }\n // if (pos.x > startPos.x) {\n // distance = distance - (pos.x - startPos.x);\n // } else if (pos.x < startPos.x) {\n // distance = distance + (startPos.x - pos.x);\n // }\n }\n }\n distance = Math.round(distance / 10) * 10;\n if (distance < 1000) {\n distance = 1000;\n }\n if (distance > 8000) {\n distance = 8000;\n }\n HomeComponent.ins.dialogEditBay.listBay[bayNum].value = distance;\n HomeComponent.ins.dialogEditBay.onOK();\n // if(obj.userData.left){\n // if (UI.existingType == 1 && UI.structureType != 4){\n // event.object.position.x = UI.totalBayLength + bayOffset + distance;\n // }\n // }\n } else if (\n event.object.userData?.dimType ===\n DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL\n ) {\n const obj = event.object as Mesh;\n obj.position.z = 0;\n obj.updateMatrixWorld();\n const pos = obj.position.clone();\n event.object.position.z = 0;\n event.object.position.y = 500;\n if (\n event.object.position.x >\n -UI.totalBayLength / 2 + HomeComponent.ins.sldLeftCutHorizontal.maxValue\n ) {\n event.object.position.x =\n -UI.totalBayLength / 2 +\n HomeComponent.ins.sldLeftCutHorizontal.maxValue;\n }\n if (event.object.position.x < -UI.totalBayLength / 2) {\n event.object.position.x = -UI.totalBayLength / 2;\n }\n if (event.object.userData?.left) {\n if (\n event.object.position.x <\n -UI.totalBayLength / 2 +\n HomeComponent.ins.sldLeftCutHorizontal.minValue\n ) {\n event.object.position.x =\n -UI.totalBayLength / 2 +\n HomeComponent.ins.sldLeftCutHorizontal.minValue;\n }\n }\n if (event.object.userData?.right) {\n if (event.object.position.x > -UI.totalBayLength / 2) {\n event.object.position.x = -UI.totalBayLength / 2;\n }\n }\n let distance = HomeComponent.ins.sldLeftCutHorizontal.currentValue;\n if (obj.userData.left) {\n if (pos.x > startPos.x) {\n distance = distance + (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance - (startPos.x - pos.x);\n }\n } else {\n if (pos.x > startPos.x) {\n distance = distance - (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance + (startPos.x - pos.x);\n }\n }\n distance = Math.round(distance);\n\n if (distance < HomeComponent.ins.sldLeftCutHorizontal.minValue) {\n distance = HomeComponent.ins.sldLeftCutHorizontal.minValue;\n }\n if (distance > HomeComponent.ins.sldLeftCutHorizontal.maxValue) {\n distance = HomeComponent.ins.sldLeftCutHorizontal.maxValue;\n }\n HomeComponent.ins.sldLeftCutHorizontal.setValue(distance);\n } else if (\n event.object.userData?.dimType ===\n DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL\n ) {\n const obj = event.object as Mesh;\n obj.position.z = 0;\n obj.updateMatrixWorld();\n const pos = obj.position.clone();\n event.object.position.z = 0;\n event.object.position.y = 500;\n if (event.object.position.x > UI.totalBayLength / 2) {\n event.object.position.x = UI.totalBayLength / 2;\n }\n if (\n event.object.position.x <\n UI.totalBayLength / 2 - HomeComponent.ins.sldRightCutHorizontal.maxValue\n ) {\n event.object.position.x =\n UI.totalBayLength / 2 -\n HomeComponent.ins.sldRightCutHorizontal.maxValue;\n }\n if (event.object.userData?.left) {\n if (event.object.position.x < UI.totalBayLength / 2) {\n event.object.position.x = UI.totalBayLength / 2;\n }\n }\n if (event.object.userData?.right) {\n if (\n event.object.position.x >\n UI.totalBayLength / 2 -\n HomeComponent.ins.sldRightCutHorizontal.minValue\n ) {\n event.object.position.x =\n UI.totalBayLength / 2 -\n HomeComponent.ins.sldRightCutHorizontal.minValue;\n }\n }\n let distance = HomeComponent.ins.sldRightCutHorizontal.currentValue;\n if (obj.userData.left) {\n if (pos.x > startPos.x) {\n distance = distance + (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance - (startPos.x - pos.x);\n }\n } else {\n if (pos.x > startPos.x) {\n distance = distance - (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance + (startPos.x - pos.x);\n }\n }\n distance = Math.round(distance);\n\n if (distance < HomeComponent.ins.sldRightCutHorizontal.minValue) {\n distance = HomeComponent.ins.sldRightCutHorizontal.minValue;\n }\n if (distance > HomeComponent.ins.sldRightCutHorizontal.maxValue) {\n distance = HomeComponent.ins.sldRightCutHorizontal.maxValue;\n }\n HomeComponent.ins.sldRightCutHorizontal.setValue(distance);\n } else if (\n event.object.userData?.dimType === DIMENSION_LABEL_TYPE.LEFT_OVERHANG\n ) {\n const obj = event.object as Mesh;\n obj.position.z = 0;\n obj.updateMatrixWorld();\n event.object.position.z = 0;\n event.object.position.y = 0;\n const pos = obj.position.clone();\n if (\n event.object.position.x <\n -UI.totalBayLength / 2 - HomeComponent.ins.sldLeftOverhang.maxValue\n ) {\n event.object.position.x =\n -UI.totalBayLength / 2 - HomeComponent.ins.sldLeftOverhang.maxValue;\n }\n if (event.object.position.x > -UI.totalBayLength / 2) {\n event.object.position.x = -UI.totalBayLength / 2;\n }\n if (event.object.userData?.left) {\n if (event.object.position.x < -UI.totalBayLength / 2) {\n event.object.position.x = -UI.totalBayLength / 2;\n }\n }\n if (event.object.userData?.right) {\n if (\n event.object.position.x >\n -UI.totalBayLength / 2 - HomeComponent.ins.sldLeftOverhang.minValue\n ) {\n event.object.position.x =\n -UI.totalBayLength / 2 - HomeComponent.ins.sldLeftOverhang.minValue;\n }\n }\n let distance = HomeComponent.ins.sldLeftOverhang.currentValue;\n if (obj.userData.left) {\n if (pos.x > startPos.x) {\n distance = distance + (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance - (startPos.x - pos.x);\n }\n } else {\n if (pos.x > startPos.x) {\n distance = distance - (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance + (startPos.x - pos.x);\n }\n }\n distance = Math.round(distance);\n\n if (distance < HomeComponent.ins.sldLeftOverhang.minValue) {\n distance = HomeComponent.ins.sldLeftOverhang.minValue;\n }\n if (distance > HomeComponent.ins.sldLeftOverhang.maxValue) {\n distance = HomeComponent.ins.sldLeftOverhang.maxValue;\n }\n HomeComponent.ins.sldLeftOverhang.setValue(distance);\n } else if (\n event.object.userData?.dimType === DIMENSION_LABEL_TYPE.RIGHT_OVERHANG\n ) {\n const obj = event.object as Mesh;\n obj.position.z = 0;\n obj.updateMatrixWorld();\n const pos = obj.position.clone();\n event.object.position.z = 0;\n event.object.position.y = 0;\n if (event.object.position.x < UI.totalBayLength / 2) {\n event.object.position.x = UI.totalBayLength / 2;\n }\n if (\n event.object.position.x >\n UI.totalBayLength / 2 + HomeComponent.ins.sldLeftOverhang.maxValue\n ) {\n event.object.position.x =\n UI.totalBayLength / 2 + HomeComponent.ins.sldLeftOverhang.maxValue;\n }\n if (event.object.userData?.left) {\n if (\n event.object.position.x <\n UI.totalBayLength / 2 + HomeComponent.ins.sldLeftOverhang.minValue\n ) {\n event.object.position.x =\n UI.totalBayLength / 2 + HomeComponent.ins.sldLeftOverhang.minValue;\n }\n }\n if (event.object.userData?.right) {\n if (event.object.position.x > UI.totalBayLength / 2) {\n event.object.position.x = UI.totalBayLength / 2;\n }\n }\n let distance = HomeComponent.ins.sldRightOverhang.currentValue;\n if (obj.userData.left) {\n if (pos.x > startPos.x) {\n distance = distance + (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance - (startPos.x - pos.x);\n }\n } else {\n if (pos.x > startPos.x) {\n distance = distance - (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance + (startPos.x - pos.x);\n }\n }\n distance = Math.round(distance);\n\n if (distance < HomeComponent.ins.sldRightOverhang.minValue) {\n distance = HomeComponent.ins.sldRightOverhang.minValue;\n }\n if (distance > HomeComponent.ins.sldRightOverhang.maxValue) {\n distance = HomeComponent.ins.sldRightOverhang.maxValue;\n }\n HomeComponent.ins.sldRightOverhang.setValue(distance);\n } else if (event.object.userData?.dimType === DIMENSION_LABEL_TYPE.SPAN) {\n const obj = event.object as Mesh;\n obj.position.z = 0;\n obj.updateMatrixWorld();\n const pos = obj.position.clone();\n event.object.position.z = 0;\n event.object.position.y = 0;\n if (event.object.position.x < -UI.span / 2) {\n event.object.position.x = -UI.span / 2;\n }\n if (event.object.position.x > HomeComponent.ins.sldSpan.maxValue / 2) {\n event.object.position.x = HomeComponent.ins.sldSpan.maxValue / 2;\n }\n if (event.object.userData?.left) {\n if (event.object.position.x < HomeComponent.ins.sldSpan.minValue / 2) {\n event.object.position.x = HomeComponent.ins.sldSpan.minValue / 2;\n }\n }\n if (event.object.userData?.right) {\n if (event.object.position.x > -UI.span / 2) {\n event.object.position.x = -UI.span / 2;\n }\n }\n let distance = HomeComponent.ins.sldSpan.currentValue;\n let fit = 0;\n if (obj.userData.left) {\n if (pos.x == UI.span / 2) {\n return;\n }\n // Existing building\n if (UI.structureType == 0) {\n distance = pos.x * 2;\n if (startMatrix) {\n fit =\n distance / 2 -\n (startMatrix.elements[14] + UI.existingWidth1 / 2) / 2;\n distance = distance - fit;\n }\n }\n // Fly over, Back fly over\n else if (UI.structureType == 1 || UI.structureType == 2) {\n distance = pos.x * 2;\n if (startMatrix) {\n fit =\n distance / 2 -\n (startMatrix.elements[14] +\n UI.existingWidth1 / 2 +\n HomeComponent.ins.existingWallManager.geo_existingWallL1.width +\n UI.overhangBack) /\n 2;\n distance = distance - fit;\n }\n }\n //Fascia\n else if (\n UI.structureType == 3 ||\n UI.structureType == 5 ||\n UI.structureType == CONNECTION_TYPE.BACK_FASCIA_UPSTAND\n ) {\n distance = pos.x * 2;\n if (startMatrix) {\n fit =\n distance / 2 -\n (startMatrix.elements[14] +\n UI.existingWidth1 / 2 -\n UI.eaveWidth) /\n 2;\n distance = distance - fit;\n }\n }\n //Free standing\n else if (UI.structureType == 4) {\n distance = pos.x * 2;\n if (startMatrix) {\n fit = distance / 2 - startMatrix.elements[14] / 2;\n distance = distance - fit;\n }\n }\n } else {\n if (\n UI.structureType == 4 &&\n UI.patiosRoofType == PATIOS_ROOF_TYPE.GABLE_ROOF\n ) {\n distance = -pos.x * 2;\n } else {\n if (pos.x > startPos.x) {\n distance = distance - (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance + (startPos.x - pos.x);\n }\n }\n }\n distance = Math.round(distance / 100) * 100;\n\n if (distance < HomeComponent.ins.sldSpan.minValue) {\n distance = HomeComponent.ins.sldSpan.minValue;\n }\n if (distance > HomeComponent.ins.sldSpan.maxValue) {\n distance = HomeComponent.ins.sldSpan.maxValue;\n }\n if (obj.userData.left) {\n event.object.position.x = distance / 2;\n }\n HomeComponent.ins.sldSpan.setValue(distance);\n } else if (\n event.object.userData?.dimType === DIMENSION_LABEL_TYPE.MULTI_SPAN\n ) {\n const obj = event.object as Mesh;\n obj.position.z = 0;\n obj.updateMatrixWorld();\n const pos = obj.position.clone();\n event.object.position.z = 0;\n event.object.position.y = 0;\n if (event.object.position.x < UI.span / 2) {\n event.object.position.x = UI.span / 2;\n }\n if (\n event.object.position.x >\n UI.span / 2 + HomeComponent.ins.sldMultiSpan.maxValue\n ) {\n event.object.position.x =\n UI.span / 2 + HomeComponent.ins.sldMultiSpan.maxValue;\n }\n if (event.object.userData?.left) {\n if (\n event.object.position.x <\n UI.span / 2 + HomeComponent.ins.sldMultiSpan.minValue\n ) {\n event.object.position.x =\n UI.span / 2 + HomeComponent.ins.sldMultiSpan.minValue;\n }\n }\n if (event.object.userData?.right) {\n if (event.object.position.x > UI.span / 2) {\n event.object.position.x = UI.span / 2;\n }\n }\n let distance = HomeComponent.ins.sldMultiSpan.currentValue;\n if (obj.userData.left) {\n if (pos.x > startPos.x) {\n distance = distance + (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance - (startPos.x - pos.x);\n }\n } else {\n if (pos.x > startPos.x) {\n distance = distance - (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance + (startPos.x - pos.x);\n }\n }\n distance = Math.round(distance / 100) * 100;\n\n if (distance < HomeComponent.ins.sldMultiSpan.minValue) {\n distance = HomeComponent.ins.sldMultiSpan.minValue;\n }\n if (distance > HomeComponent.ins.sldMultiSpan.maxValue) {\n distance = HomeComponent.ins.sldMultiSpan.maxValue;\n }\n HomeComponent.ins.sldMultiSpan.setValue(distance);\n } else if (\n event.object.userData?.dimType ===\n DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL\n ) {\n const obj = event.object as Mesh;\n obj.position.z = 0;\n obj.updateMatrixWorld();\n const pos = obj.position.clone();\n event.object.position.z = 0;\n event.object.position.y = 500;\n if (\n event.object.position.x <\n UI.span / 2 +\n UI.overhangFront +\n UI.multiSpan -\n HomeComponent.ins.sldRightCutVertical.maxValue\n ) {\n event.object.position.x =\n UI.span / 2 +\n UI.overhangFront +\n UI.multiSpan -\n HomeComponent.ins.sldRightCutVertical.maxValue;\n }\n if (\n event.object.position.x >\n UI.span / 2 + UI.overhangFront + UI.multiSpan\n ) {\n event.object.position.x = UI.span / 2 + UI.overhangFront + UI.multiSpan;\n }\n if (event.object.userData?.left) {\n if (\n event.object.position.x <\n UI.span / 2 + UI.overhangFront + UI.multiSpan\n ) {\n event.object.position.x =\n UI.span / 2 + UI.overhangFront + UI.multiSpan;\n }\n }\n if (event.object.userData?.right) {\n if (\n event.object.position.x >\n UI.span / 2 +\n UI.overhangFront +\n UI.multiSpan -\n HomeComponent.ins.sldRightCutVertical.minValue\n ) {\n event.object.position.x =\n UI.span / 2 +\n UI.overhangFront +\n UI.multiSpan -\n HomeComponent.ins.sldRightCutVertical.minValue;\n }\n }\n let distance = HomeComponent.ins.sldRightCutVertical.currentValue;\n if (obj.userData.left) {\n if (pos.x > startPos.x) {\n distance = distance + (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance - (startPos.x - pos.x);\n }\n } else {\n if (pos.x > startPos.x) {\n distance = distance - (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance + (startPos.x - pos.x);\n }\n }\n distance = Math.round(distance);\n\n if (distance < HomeComponent.ins.sldRightCutVertical.minValue) {\n distance = HomeComponent.ins.sldRightCutVertical.minValue;\n }\n if (distance > HomeComponent.ins.sldRightCutVertical.maxValue) {\n distance = HomeComponent.ins.sldRightCutVertical.maxValue;\n }\n HomeComponent.ins.sldRightCutVertical.setValue(distance);\n } else if (\n event.object.userData?.dimType === DIMENSION_LABEL_TYPE.FRONT_OVERHANG\n ) {\n const obj = event.object as Mesh;\n obj.position.z = 0;\n obj.updateMatrixWorld();\n event.object.position.z = 0;\n event.object.position.y = 0;\n const pos = obj.position.clone();\n if (event.object.position.x < UI.span / 2 + UI.multiSpan) {\n event.object.position.x = UI.span / 2 + UI.multiSpan;\n }\n if (\n event.object.position.x >\n UI.span / 2 + UI.multiSpan + HomeComponent.ins.sldFrontOverhang.maxValue\n ) {\n event.object.position.x =\n UI.span / 2 +\n UI.multiSpan +\n HomeComponent.ins.sldFrontOverhang.maxValue;\n }\n if (event.object.userData?.left) {\n if (\n event.object.position.x <\n UI.span / 2 +\n UI.multiSpan +\n HomeComponent.ins.sldFrontOverhang.minValue\n ) {\n event.object.position.x =\n UI.span / 2 +\n UI.multiSpan +\n HomeComponent.ins.sldFrontOverhang.minValue;\n }\n }\n if (event.object.userData?.right) {\n if (event.object.position.x > UI.span / 2 + UI.multiSpan) {\n event.object.position.x = UI.span / 2 + UI.multiSpan;\n }\n }\n let distance = HomeComponent.ins.sldFrontOverhang.currentValue;\n if (obj.userData.left) {\n if (pos.x > startPos.x) {\n distance = distance + (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance - (startPos.x - pos.x);\n }\n } else {\n if (pos.x > startPos.x) {\n distance = distance - (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance + (startPos.x - pos.x);\n }\n }\n distance = Math.round(distance);\n\n if (distance < HomeComponent.ins.sldFrontOverhang.minValue) {\n distance = HomeComponent.ins.sldFrontOverhang.minValue;\n }\n if (distance > HomeComponent.ins.sldFrontOverhang.maxValue) {\n distance = HomeComponent.ins.sldFrontOverhang.maxValue;\n }\n HomeComponent.ins.sldFrontOverhang.setValue(distance);\n } else if (\n event.object.userData?.dimType === DIMENSION_LABEL_TYPE.BACK_OVERHANG\n ) {\n const obj = event.object as Mesh;\n obj.position.z = 0;\n obj.updateMatrixWorld();\n const pos = obj.position.clone();\n event.object.position.z = 0;\n event.object.position.y = 0;\n if (\n event.object.position.x <\n -UI.span / 2 - HomeComponent.ins.sldBackOverhang.maxValue\n ) {\n event.object.position.x =\n -UI.span / 2 - HomeComponent.ins.sldBackOverhang.maxValue;\n }\n if (event.object.position.x > -UI.span / 2) {\n event.object.position.x = -UI.span / 2;\n }\n if (event.object.userData?.left) {\n if (event.object.position.x < -UI.span / 2) {\n event.object.position.x = -UI.span / 2;\n }\n }\n if (event.object.userData?.right) {\n if (\n event.object.position.x >\n -UI.span / 2 - HomeComponent.ins.sldBackOverhang.minValue\n ) {\n event.object.position.x =\n -UI.span / 2 - HomeComponent.ins.sldBackOverhang.minValue;\n }\n }\n let distance = HomeComponent.ins.sldBackOverhang.currentValue;\n if (obj.userData.left) {\n if (pos.x > startPos.x) {\n distance = distance + (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance - (startPos.x - pos.x);\n }\n } else {\n if (pos.x > startPos.x) {\n distance = distance - (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance + (startPos.x - pos.x);\n }\n }\n distance = Math.round(distance);\n\n if (distance < HomeComponent.ins.sldBackOverhang.minValue) {\n distance = HomeComponent.ins.sldBackOverhang.minValue;\n }\n if (distance > HomeComponent.ins.sldBackOverhang.maxValue) {\n distance = HomeComponent.ins.sldBackOverhang.maxValue;\n }\n HomeComponent.ins.sldBackOverhang.setValue(distance);\n } else if (\n event.object.userData?.dimType ===\n DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL\n ) {\n const obj = event.object as Mesh;\n obj.position.z = 0;\n obj.updateMatrixWorld();\n const pos = obj.position.clone();\n event.object.position.z = 0;\n event.object.position.y = 0;\n if (\n event.object.position.x <\n -HomeComponent.ins.sldLeftCutVertical.maxValue / 2\n ) {\n event.object.position.x =\n -HomeComponent.ins.sldLeftCutVertical.maxValue / 2;\n }\n if (event.object.position.x > UI.rakeCutLeftVer / 2) {\n event.object.position.x = UI.rakeCutLeftVer / 2;\n }\n if (event.object.userData?.left) {\n if (event.object.position.x < UI.rakeCutLeftVer / 2) {\n event.object.position.x = UI.rakeCutLeftVer / 2;\n }\n }\n if (event.object.userData?.right) {\n if (\n event.object.position.x >\n -HomeComponent.ins.sldLeftCutVertical.minValue / 2\n ) {\n event.object.position.x =\n -HomeComponent.ins.sldLeftCutVertical.minValue / 2;\n }\n }\n let distance = HomeComponent.ins.sldLeftCutVertical.currentValue;\n if (obj.userData.left) {\n if (pos.x > startPos.x) {\n distance = distance + (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance - (startPos.x - pos.x);\n }\n } else {\n if (pos.x > startPos.x) {\n distance = distance - (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance + (startPos.x - pos.x);\n }\n }\n distance = Math.round(distance);\n\n if (distance < HomeComponent.ins.sldLeftCutVertical.minValue) {\n distance = HomeComponent.ins.sldLeftCutVertical.minValue;\n }\n if (distance > HomeComponent.ins.sldLeftCutVertical.maxValue) {\n distance = HomeComponent.ins.sldLeftCutVertical.maxValue;\n }\n HomeComponent.ins.sldLeftCutVertical.setValue(distance);\n }\n }\n}\nexport function getBeamEndCapCode(endCapPreCode, endCapColorCode) {\n const availableCodes = [\n \"BSEC110B\",\n \"BSEC110C\",\n \"BSEC110MM\",\n \"BSEC110M\",\n \"BSEC110SM\",\n \"BSEC110W\",\n \"BSCE150B\",\n \"BSCE150C\",\n \"BSCE150P\",\n \"BSCE150W\",\n \"BSEC160B\",\n \"BSEC160C\",\n \"BSEC160MM\",\n \"BSEC160M\",\n \"BSEC160SM\",\n \"BSEC160W\",\n \"BSCE200B\",\n \"BSCE200C\",\n \"BSCE200W\",\n \"BSEC210B\",\n \"BSEC210C\",\n \"BSEC210MM\",\n \"BSEC210M\",\n \"BSEC210SM\",\n \"BSEC210W\",\n \"BSEC260B\",\n \"BSEC260C\",\n \"BSEC260MM\",\n \"BSEC260M\",\n \"BSEC260SM\",\n \"BSEC260W\",\n ];\n let code = `${endCapPreCode}${endCapColorCode}`;\n\n // Paperbark some time = P and sometime = M\n if (!availableCodes.find((el) => el == code)) {\n code = `${endCapPreCode}P`;\n }\n if (!availableCodes.find((el) => el == code)) {\n code = `${endCapPreCode}SM`;\n }\n\n return code;\n}\n// Rafter always 160\nexport function getRafterBeamEndCapCode(beamSize = 160, isTop = false) {\n if (isTop) {\n let colorCode = HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode;\n if (colorCode == \"M\" && beamSize == 160) {\n colorCode = \"P\";\n }\n\n return `BSA${beamSize}15${colorCode}`;\n } else {\n let colorCode = HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode;\n if (colorCode == \"M\" && beamSize == 160) {\n colorCode = \"P\";\n }\n\n return `BSAGB${beamSize}${colorCode}`;\n }\n}\nexport const utils = {\n tan(degrees: number): number {\n return this.round(Math.tan(this.degreesToRadians(degrees)));\n },\n degreesToRadians(degrees: number) {\n var pi = Math.PI;\n return this.round(degrees * (pi / 180));\n },\n round(num: number): number {\n return parseFloat(num.toFixed(3));\n },\n getDimensionValue(value: number) {\n //return parseFloat(`${value/1000}`).toFixed(2) + 'm';\n return Math.round(value).toString(); //parseFloat(`${value/1000}`).toFixed(3);\n },\n getTextCover(\n textGeo: TextBufferGeometry,\n labelType: string,\n pos: Vector3,\n fitZ = 0,\n bayNum?: number\n ) {\n let textSize = new Vector3();\n textGeo.boundingBox.getSize(textSize);\n\n let textCover = new Mesh(\n new BoxBufferGeometry(textSize.x, textSize.y, textSize.z)\n );\n textCover.position.set(pos.x, pos.y, pos.z + fitZ);\n textCover.userData = { type: GEOMETRY_TYPE.TEXT_COVER, labelType };\n if (bayNum !== undefined) {\n textCover.userData[\"bayNum\"] = bayNum;\n }\n textCover.material[\"opacity\"] = 0;\n textCover.material[\"transparent\"] = true;\n\n return textCover;\n },\n};\n","import { Mesh, MeshBasicMaterial, Object3D, DoubleSide, Vector3, Shape, ShapeBufferGeometry } from \"three\";\nimport { utils } from \"../core/utils\";\n\nexport default class ArrowControl extends Mesh {\n container: Object3D\n options: any\n mat: MeshBasicMaterial\n\n constructor(container, options: {\n pos: Vector3,\n userData: any,\n rotation?: Vector3\n }){\n let arrowLength = 500;\n let angle = 20;\n let y = utils.tan(angle) * arrowLength;\n let shape1 = new Shape();\n shape1.moveTo(0, 0,);\n shape1.lineTo(arrowLength, y);\n shape1.lineTo(arrowLength, -y);\n shape1.closePath();\n const geo = new ShapeBufferGeometry(shape1);\n geo.translate( - arrowLength, 0, 0)\n const mat = new MeshBasicMaterial({ color: 0xffff00, side: DoubleSide });\n super(geo, mat)\n\n this.position.set(options.pos.x, options.pos.y, options.pos.z)\n if(options.rotation){\n this.rotateX(options.rotation.x)\n this.rotateY(options.rotation.y)\n this.rotateZ(options.rotation.z)\n }\n\n this.userData = options.userData;\n container.add(this)\n\n this.mat = mat;\n this.container = container\n this.options = options\n }\n}","import { Mesh, MeshBasicMaterial, Object3D, DoubleSide, Vector3, Shape, ShapeBufferGeometry } from \"three\";\nimport { utils } from \"../core/utils\";\n\nexport default class ClickControl extends Mesh {\n container: Object3D\n options: any\n mat: MeshBasicMaterial\n\n constructor(container, options: {\n pos: Vector3,\n userData: any,\n rotation?: Vector3\n }){\n let arrowLength = 500;\n let angle = 30;\n let y = utils.tan(angle) * arrowLength;\n let shape1 = new Shape();\n shape1.moveTo(0,0);\n shape1.lineTo(0 , y / 2);\n shape1.lineTo(arrowLength / 2 , y / 2);\n shape1.lineTo(arrowLength / 2 , y);\n shape1.lineTo(3 / 2 * arrowLength , 0);\n shape1.lineTo(arrowLength / 2 , - y);\n shape1.lineTo(arrowLength / 2 , - y / 2);\n shape1.lineTo(0 , - y / 2);\n shape1.closePath();\n const geo = new ShapeBufferGeometry(shape1);\n const mat = new MeshBasicMaterial({ color: 0xffff00, side: DoubleSide });\n super(geo, mat)\n\n this.position.set(options.pos.x, options.pos.y, options.pos.z)\n if(options.rotation){\n this.rotateX(options.rotation.x)\n this.rotateY(options.rotation.y)\n this.rotateZ(options.rotation.z)\n }\n\n this.userData = options.userData;\n container.add(this)\n\n this.mat = mat;\n this.container = container\n this.options = options\n }\n}","import { BoxBufferGeometry, Mesh } from \"three\"\nimport { GeometryManager } from \"../core/geometry.manager\";\nimport { MaterialManager } from \"../core/material.manager\";\nimport { GeometryInfo } from \"src/app/core/models\";\nimport BaseUIControlEntity from \"./base.model\"\n\nexport class DeleteControl extends BaseUIControlEntity {\n geo: BoxBufferGeometry\n lineGeometry: GeometryInfo\n\n draw(){\n const size = 200;\n this.lineGeometry = GeometryManager.Instance().getUIControlLine();\n const deleteMaterial = MaterialManager.Instance().HIDDEN_UI_CONTROL;\n const lineMaterial = MaterialManager.Instance().HIGHLIGHT_DIMENSION_TEXT;\n this.geo = new BoxBufferGeometry(size, 10, size)\n this.mesh = new Mesh(this.geo, deleteMaterial)\n this.mesh.userData = this.options.userData\n this.mesh.position.set(this.position[0], this.position[1], this.position[2])\n if(this.rotation){\n this.mesh.rotateY(this.rotation.x);\n this.mesh.rotateY(this.rotation.y);\n this.mesh.rotateZ(this.rotation.z);\n }\n this.mesh.renderOrder = 0\n this.mesh.visible = this.visible\n\n let line1 = new Mesh(this.lineGeometry.geometry, lineMaterial);\n line1.scale.setX(size * Math.sqrt(2) / this.lineGeometry.length);\n line1.position.set(this.position[0], this.position[1], this.position[2]);\n line1.rotateX(Math.PI / 2);\n line1.rotateZ(Math.PI / 4);\n\n let line2 = line1.clone();\n line2.rotateZ(Math.PI / 2);\n\n this.container.add(this.mesh, line1, line2)\n }\n}","import { Color, Vector3, Group, Mesh, MeshBasicMaterial, Object3D, Shape, ShapeBufferGeometry, TextBufferGeometry } from \"three\";\nimport { DIMENSION_LABEL_TYPE, GEOMETRY_TYPE } from \"src/app/app.config\";\nimport { MaterialManager } from \"../core/material.manager\";\nimport { GeometryInfo } from \"src/app/core/models\";\nimport SelectionManager from \"../core/selection.manager\";\nimport { utils } from \"../core/utils\";\nimport { GeometryManager } from \"../core/geometry.manager\";\n\nexport interface AddDimensionOptions {\n container: Object3D,\n start: {x: number, y: number, z: number},\n end: {x: number, y: number, z: number},\n textPos: {x: number, y: number, z: number},\n linePos: {x: number, y: number, z: number},\n lineLength: number;\n views: any,\n allowDrag: boolean,\n textParameter: any,\n labelType: string,\n fitZ: number,\n hasTextClone:boolean,\n axis: string,\n onDragCallback: (obj: Mesh) => void,\n onDragStartCallback: (obj: Mesh) => void,\n subtype?: string,\n textCloneUserData?: {},\n textCloneRotation?: Vector3,\n textCloneVisible?: boolean,\n bayNum?: number,\n textUserData?: {},\n textRotation?: {x: number, y: number, z: number},\n side?: number,\n visible?: boolean\n}\n\nexport default class Dimension extends Group {\n options: AddDimensionOptions\n mat: MeshBasicMaterial\n lineGeometry: GeometryInfo\n lineCapGeo: GeometryInfo\n meshText: Mesh\n meshBayNo: Mesh\n meshLine: Mesh\n meshCap1: Mesh\n meshCap2: Mesh\n meshTextCover: Mesh\n meshTextClone: Mesh\n meshArrow1: Mesh\n meshArrow2: Mesh\n\n static create(options: AddDimensionOptions){\n return new Dimension(options)\n }\n\n constructor(options: AddDimensionOptions){\n super()\n if(!options){\n return this;\n }\n\n this.lineGeometry = GeometryManager.Instance().getDimensionLine();\n this.lineCapGeo = GeometryManager.Instance().getDimensionCap();\n this.options = options\n\n this.mat = MaterialManager.Instance().DIMENSION_TEXT.clone();\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.mat);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: this.options.views };\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.mat);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: this.options.views };\n\n if(this.options.axis === 'x'){\n cap1.position.setX( this.options.linePos.x - this.options.lineLength/2 );\n cap2.position.setX( this.options.linePos.x + this.options.lineLength/2 );\n cap1.position.setY(this.options.linePos.y);\n cap2.position.setY(this.options.linePos.y);\n }\n \n let line = new Mesh(this.lineGeometry.geometry, this.mat);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: this.options.views };\n line.scale.setX( this.options.lineLength / this.lineGeometry.length);\n line.position.set( this.options.linePos.x, this.options.linePos.y, this.options.linePos.z)\n\n let textStr = utils.getDimensionValue(this.options.lineLength);\n const textGeo = new TextBufferGeometry(textStr, this.options.textParameter);\n textGeo.center();\n\n let text = new Mesh(textGeo, this.options.allowDrag ? MaterialManager.Instance().HIGHLIGHT_DIMENSION_TEXT : this.mat);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: this.options.views };\n if(this.options.textUserData){\n text.userData = this.options.textUserData;\n }\n if(this.options.textRotation){\n text.rotateX(this.options.textRotation.x)\n text.rotateY(this.options.textRotation.y)\n text.rotateZ(this.options.textRotation.z)\n }\n if(this.options.textCloneUserData && this.options.textCloneUserData['rotation']){\n text.userData.rotation = this.options.textCloneUserData['rotation']\n }\n text.position.set( this.options.textPos.x, this.options.textPos.y, this.options.textPos.z);\n \n if(this.options.labelType === DIMENSION_LABEL_TYPE.BAY && this.options.bayNum !== undefined){\n let textCover = utils.getTextCover(textGeo, this.options.labelType, new Vector3(this.options.textPos.x, this.options.textPos.y, this.options.textPos.z), this.options.fitZ, this.options.bayNum);\n this.add(textCover);\n this.meshTextCover = textCover;\n } else {\n let textCover = utils.getTextCover(textGeo, this.options.labelType, new Vector3(this.options.textPos.x, this.options.textPos.y, this.options.textPos.z), this.options.fitZ);\n this.add(textCover);\n this.meshTextCover = textCover;\n }\n\n if(this.options.labelType === DIMENSION_LABEL_TYPE.BAY && this.options.bayNum !== undefined){\n const textGeoBayNo = new TextBufferGeometry(`#${this.options.bayNum + 1}`, this.options.textParameter);\n textGeoBayNo.center();\n\n let text = new Mesh(textGeoBayNo, this.mat);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: `#${this.options.bayNum + 1}`, views: [] };\n\n if(this.options.textRotation){\n text.rotateX(this.options.textRotation.x)\n text.rotateY(this.options.textRotation.y)\n text.rotateZ(this.options.textRotation.z)\n }\n if(this.options.textCloneUserData && this.options.textCloneUserData['rotation']){\n text.userData.rotation = this.options.textCloneUserData['rotation']\n }\n text.position.set( this.options.textPos.x, - this.options.textPos.y, this.options.textPos.z);\n\n this.meshBayNo = text\n this.add(this.meshBayNo);\n }\n if(this.options.subtype){\n cap1.userData['subtype'] = this.options.subtype;\n cap2.userData['subtype'] = this.options.subtype;\n line.userData['subtype'] = this.options.subtype;\n text.userData['subtype'] = this.options.subtype;\n }\n if(this.options.hasTextClone){\n let textClone = text.clone();\n textClone.userData = {...this.options.textCloneUserData, isTextClone: true};\n textClone.rotation.set( this.options.textCloneRotation.x, this.options.textCloneRotation.y, this.options.textCloneRotation.z);\n textClone.visible = this.options.textCloneVisible;\n this.meshTextClone = textClone;\n this.add(this.meshTextClone);\n }\n this.meshText = text;\n this.meshLine = line;\n this.meshCap1 = cap1;\n this.meshCap2 = cap2;\n\n this.add(this.meshText, this.meshLine, this.meshCap1, this.meshCap2);\n // this.add(text, line, cap1, cap2);\n this.addArrow();\n this.userData.groupType = this.options.labelType\n if(options.side != null && options.side != undefined){\n this.userData.side = options.side\n }\n if(options.bayNum !== undefined){\n this.userData.bayNum = options.bayNum\n }\n this.userData.views = this.options.views || []\n if(!this.options.visible){\n this.visible = this.options.visible\n }\n this.options.container.add(this);\n }\n \n update(options: AddDimensionOptions){\n this.options = options;\n if(this.options.axis === 'x'){\n this.meshCap1.position.setX( this.options.linePos.x - this.options.lineLength/2 );\n this.meshCap2.position.setX( this.options.linePos.x + this.options.lineLength/2 );\n this.meshCap1.position.setY(this.options.linePos.y);\n this.meshCap2.position.setY(this.options.linePos.y);\n }\n\n this.meshLine.scale.setX( this.options.lineLength / this.lineGeometry.length);\n this.meshLine.position.set( this.options.linePos.x, this.options.linePos.y, this.options.linePos.z)\n\n let textStr = utils.getDimensionValue(this.options.lineLength);\n const textGeo = new TextBufferGeometry(textStr, this.options.textParameter);\n textGeo.center();\n\n let text = new Mesh(textGeo, this.options.allowDrag ? MaterialManager.Instance().HIGHLIGHT_DIMENSION_TEXT : this.mat);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: this.options.views };\n if(this.options.textUserData){\n text.userData = this.options.textUserData;\n }\n if(this.options.textRotation){\n text.rotateX(this.options.textRotation.x)\n text.rotateY(this.options.textRotation.y)\n text.rotateZ(this.options.textRotation.z)\n }\n text.position.set( this.options.textPos.x, this.options.textPos.y, this.options.textPos.z);\n \n if(this.options.labelType === DIMENSION_LABEL_TYPE.BAY && this.options.bayNum !== undefined){\n let textCover = utils.getTextCover(textGeo, this.options.labelType, new Vector3(this.options.textPos.x, this.options.textPos.y, this.options.textPos.z), this.options.fitZ, this.options.bayNum);\n this.meshTextCover = textCover;\n } else {\n let textCover = utils.getTextCover(textGeo, this.options.labelType, new Vector3(this.options.textPos.x, this.options.textPos.y, this.options.textPos.z), this.options.fitZ);\n this.meshTextCover = textCover;\n }\n\n this.meshText = text;\n this.children = this.children.filter(el => el.userData.type != GEOMETRY_TYPE.DIMENSION_TEXT && el.userData.type != GEOMETRY_TYPE.TEXT_COVER);\n this.add(this.meshText, this.meshTextCover)\n\n if(this.options.labelType === DIMENSION_LABEL_TYPE.BAY && this.options.bayNum !== undefined){\n const textGeoBayNo = new TextBufferGeometry(`#${this.options.bayNum + 1}`, this.options.textParameter);\n textGeoBayNo.center();\n\n let text = new Mesh(textGeoBayNo, this.mat);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: `#${this.options.bayNum + 1}`, views: [] };\n\n if(this.options.textRotation){\n text.rotateX(this.options.textRotation.x)\n text.rotateY(this.options.textRotation.y)\n text.rotateZ(this.options.textRotation.z)\n }\n if(this.options.textCloneUserData && this.options.textCloneUserData['rotation']){\n text.userData.rotation = this.options.textCloneUserData['rotation']\n }\n text.position.set( this.options.textPos.x, - this.options.textPos.y, this.options.textPos.z);\n\n this.meshBayNo = text\n this.add(this.meshBayNo);\n }\n\n if(this.options.hasTextClone){\n let textClone = text.clone();\n textClone.userData = {...this.options.textCloneUserData, isTextClone: true};\n textClone.rotation.set( this.options.textCloneRotation.x, this.options.textCloneRotation.y, this.options.textCloneRotation.z);\n textClone.visible = this.options.textCloneVisible;\n this.meshTextClone = textClone;\n this.children = this.children.filter(el => !el.userData.isTextClone);\n this.add(this.meshTextClone)\n }\n\n if(this.options.lineLength >= 300){\n this.meshArrow1.visible = true;\n this.meshArrow2.visible = true;\n } else {\n this.meshArrow1.visible = false;\n this.meshArrow2.visible = false;\n }\n\n if(this.options.axis === 'x'){\n this.meshArrow1.position.set( this.options.linePos.x - this.options.lineLength / 2, 0, 0);\n this.meshArrow2.position.set( this.options.linePos.x + this.options.lineLength / 2, 0, 0);\n this.meshArrow1.position.setY(this.options.linePos.y);\n this.meshArrow2.position.setY(this.options.linePos.y);\n }\n }\n\n onHover(intersects){\n // if(intersects.find(o => o.object.uuid === this.uuid)){\n // (this.material as MeshLambertMaterial).opacity = 1\n // HomeComponent.ins.renderStatic()\n // }\n // else{\n // // (this.material as MeshLambertMaterial).color = new Color('green')\n // //this.visible = false\n \n // (this.material as MeshLambertMaterial).opacity = 0\n // HomeComponent.ins.renderStatic()\n // }\n }\n onClick(intersects){\n // const obj = intersects.find(o => o.object.uuid === this.uuid)\n // if(obj){\n // HomeComponent.ins.dialogRakeCut.show(true, obj.object?.userData?.side)\n // }\n }\n\n addArrow(){\n let arrowLength = 150;\n let angle = 15;\n\n // if(this.options.lineLength < 300){\n // return ;\n // }\n \n let y = utils.tan(angle) * arrowLength;\n let shape1 = new Shape();\n shape1.moveTo(0, 0,);\n shape1.lineTo(arrowLength, y);\n shape1.lineTo(arrowLength, -y);\n shape1.closePath();\n const mat = MaterialManager.Instance().DIMENSION_TEXT.clone();\n \n let arrow1 = new Mesh(new ShapeBufferGeometry(shape1), mat);\n arrow1.userData = { views: this.options.views, type: GEOMETRY_TYPE.DIMENSION_CAP, dimType: this.options.labelType, right: true };\n let arrow2 = arrow1.clone();\n arrow2.rotateZ(Math.PI);\n arrow2.userData = { views: this.options.views, type: GEOMETRY_TYPE.DIMENSION_CAP, dimType: this.options.labelType, left: true};\n\n if( this.options.labelType === DIMENSION_LABEL_TYPE.BAY){\n arrow1.userData['bayNum'] = this.options.bayNum;\n arrow2.userData['bayNum'] = this.options.bayNum;\n }\n if(this.options.axis === 'x'){\n arrow1.position.set( this.options.linePos.x - this.options.lineLength / 2, 0, 0);\n arrow2.position.set( this.options.linePos.x + this.options.lineLength / 2, 0, 0);\n arrow1.position.setY(this.options.linePos.y);\n arrow2.position.setY(this.options.linePos.y);\n }\n\n if(this.options.allowDrag){\n mat.color = new Color('yellow');\n }\n if(this.options.subtype){\n arrow1.userData['subtype'] = this.options.subtype;\n arrow2.userData['subtype'] = this.options.subtype;\n }\n\n if(this.options.lineLength < 300){\n arrow1.visible = false;\n arrow2.visible = false;\n }\n\n this.meshArrow1 = arrow1;\n this.meshArrow2 = arrow2;\n\n this.add(this.meshArrow1, this.meshArrow2)\n // this.add(arrow1, arrow2)\n\n if(this.options.allowDrag){\n SelectionManager.ins.addEventListener('dragstart', this.options.onDragStartCallback, this.meshArrow1)\n SelectionManager.ins.addEventListener('dragstart', this.options.onDragStartCallback, this.meshArrow2)\n\n SelectionManager.ins.addEventListener('drag', this.options.onDragCallback, this.meshArrow1)\n SelectionManager.ins.addEventListener('drag', this.options.onDragCallback, this.meshArrow2)\n }\n }\n}","import { BoxBufferGeometry, Color, Mesh, MeshLambertMaterial, Object3D } from \"three\";\nimport { HIGHLIGHT_BOX_COLOR } from \"src/app/app.config\";\nimport { MOUSE_EVENT } from \"src/app/app.constants\";\nimport { HomeComponent } from \"../containers/home\";\nimport SelectionManager from \"../core/selection.manager\";\nimport { UI } from \"../core/ui\";\n\nexport default class HighLightBox extends Mesh {\n container: Object3D\n options: any\n mat: MeshLambertMaterial\n\n constructor(container, options: {\n min: {x: number, y: number, z: number},\n max: {x: number, y: number, z: number},\n userData: any\n }){\n const geo = new BoxBufferGeometry(100, 120, 100)\n geo.translate(0,50,0)\n const mat = new MeshLambertMaterial({ color: HIGHLIGHT_BOX_COLOR.GREEN, transparent: true, opacity: 0 })\n super(geo, mat)\n\n const width = options.max.x - options.min.x\n const _length = options.max.z - options.min.z\n const height = Math.abs(options.max.y - options.min.y)\n\n this.position.set(options.min.x + width/2, options.min.y, options.min.z + _length/2)\n this.scale.set(width/100, height / 120 > 0 ? height / 120 : 1, _length/100)\n \n\n this.userData = { ...options.userData, type: 'HIGHLIGHT_BOX' }\n container.add(this)\n\n SelectionManager.ins.addEventListener(MOUSE_EVENT.HOVER, (intersects) => {\n this.onHover(intersects)\n })\n SelectionManager.ins.addEventListener(MOUSE_EVENT.CLICK, (intersects) => {\n this.onClick(intersects)\n })\n\n this.mat = mat;\n this.container = container\n this.options = options\n }\n \n update(){\n this.position.set(this.options.x, this.options.y, this.options.z)\n }\n\n onHover(intersects){\n if(intersects.length == 0){\n if(!this.material || (this.material as MeshLambertMaterial).opacity == 0){\n return\n }\n }\n if(intersects.find(o => o.object.uuid === this.uuid)){\n if((this.material as MeshLambertMaterial).opacity == 1){\n return\n }\n (this.material as MeshLambertMaterial).opacity = 1\n HomeComponent.ins.renderStatic()\n }\n else{\n // (this.material as MeshLambertMaterial).color = new Color('green')\n //this.visible = false\n if((this.material as MeshLambertMaterial).opacity == 0){\n return\n }\n \n (this.material as MeshLambertMaterial).opacity = 0\n HomeComponent.ins.renderStatic()\n }\n }\n onClick(intersects){\n if(!UI.enableControl) {\n return\n }\n const obj = intersects.find(o => o.object.uuid === this.uuid)\n if(obj){\n if(obj.object?.userData?.side){\n HomeComponent.ins.dialogRakeCut.show(true, obj.object?.userData?.side)\n } else if (obj.object?.userData?.wallSide){\n HomeComponent.ins.dialogComfirm.show(true, obj.object?.userData?.wallSide)\n }\n }\n }\n}","import { Group, Mesh, MeshPhongMaterial, Vector3} from \"three\";\nimport { GEOMETRY_TYPE } from \"src/app/app.config\";\nimport { GeometryInfo } from \"src/app/core/models\";\n\nexport interface UpstandBraketOptions {\n container: Group, \n geoBraket_1: GeometryInfo, \n geoBraket_2: GeometryInfo, \n material: MeshPhongMaterial,\n height: number,\n position: Vector3,\n rotation?: Vector3,\n userData?: {}\n}\n\n\nexport default class UpstandBraket extends Group{\n options: UpstandBraketOptions\n\n static create(options: UpstandBraketOptions){\n return new UpstandBraket(options)\n }\n\n constructor(options: UpstandBraketOptions){\n super()\n this.options = options;\n let braket1 = new Mesh(this.options.geoBraket_1.geometry, this.options.material);\n braket1.translateZ(this.options.geoBraket_2.height / 4 + this.options.geoBraket_1.width / 2);\n braket1.scale.setY(this.options.height / this.options.geoBraket_1.length);\n this.add(braket1)\n\n let braket2 = new Mesh(this.options.geoBraket_2.geometry, this.options.material);\n this.add(braket2)\n\n this.position.set( this.options.position.x, this.options.position.y, this.options.position.z);\n if(this.options.userData){\n this.userData = this.options.userData;\n } else {\n this.userData = { type: GEOMETRY_TYPE.UPSTAND_BRAKET};\n }\n\n this.options.container.add(this);\n }\n}","import { Vector3, Object3D, SpriteMaterial } from \"three\"\nimport { MaterialManager } from \"../core/material.manager\"\n\nexport default class BaseUIControlEntity{\n public size: Array\n public position: Array\n public container: Object3D\n public material: SpriteMaterial\n public rotation: Vector3\n public options\n public mesh: Object3D\n public visible = true;\n\n constructor(size: Array, position: Array, options, visible = true){\n this.size = size\n this.position = position\n this.container = options.container\n this.material = options.material ? options.material : MaterialManager.Instance().UI_CONTROL;\n this.rotation = options.rotation ? options.rotation : new Vector3;\n this.options = options\n this.visible = visible\n this.draw()\n }\n\n draw(){}\n}","import { Sprite } from \"three\"\nimport BaseUIControlEntity from \"./base.model\"\n\nexport class UIControl extends BaseUIControlEntity {\n draw(){\n this.mesh = new Sprite(this.material)\n this.mesh.userData = this.options.userData\n let scaleUniform = 1\n if(this.material.sizeAttenuation) {\n scaleUniform = 5000\n }\n\n this.mesh.scale.set(this.size[0] * scaleUniform, this.size[1] * scaleUniform, this.size[2] * scaleUniform)\n this.mesh.position.set(this.position[0], this.position[1], this.position[2])\n this.mesh.renderOrder = 0\n this.mesh.visible = this.visible\n this.container.add(this.mesh)\n }\n}","import { Component, ViewChild, ElementRef, NgZone } from '@angular/core';\nimport { Util } from './core/utils';\nimport { CONFIG, INIT } from './app.config';\nimport { Router } from '@angular/router';\nimport { AuthenticationService } from './services';\nimport { User } from './models';\n\ndeclare var $: any;\n\n@Component({\n selector: 'app',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss']\n})\nexport class AppComponent {\n public env = CONFIG;\n\n private utils: Util;\n private frameId: number = null;\n public loadCompleted = false;\n currentUser: User;\n public constructor(\n private ngZone: NgZone,\n private router: Router,\n private authenticationService: AuthenticationService\n ) {\n this.utils = new Util();\n this.authenticationService.currentUser.subscribe(\n x => (this.currentUser = x)\n );\n }\n logout() {\n this.authenticationService.logout();\n this.router.navigate(['/login']);\n }\n public ngAfterViewInit(): void {\n\n }\n public ngOnDestroy() {\n\n }\n}\n","
\n \n
\n\n","export const APP_VERSION = \"v2.0.9\";\nexport const RELEASE_DATE = \"2025-02-24\";\nimport { BUILDING_SIDE, CONNECTION_TYPE } from \"./app.constants\";\n\nexport const CONFIG = {\n eaveWidth: {\n min: 50,\n max: 900,\n default: 600,\n },\n eaveHeight: {\n min: 2000,\n max: 6000,\n default: 2400,\n },\n fasciaDepth: {\n min: 150,\n max: 400,\n default: 190,\n },\n baySize: {\n min: 1500,\n max: 8000,\n default: 3810,\n },\n span: {\n min: 1000,\n max: 8000,\n default: 4000,\n },\n multiSpan: {\n min: 0,\n max: 8000,\n default: 0,\n },\n height: {\n min: 1000,\n max: 5000,\n free_standing_max: 4000,\n default: 2500,\n },\n frontOverhang: {\n min: 100,\n max: 2000,\n default: 200,\n },\n backOverhang: {\n min: 0,\n max: 2000,\n default: 0,\n },\n leftOverhang: {\n min: 0,\n max: 2000,\n default: 0,\n },\n rightOverhang: {\n min: 0,\n max: 2000,\n default: 0,\n },\n flyOverBracketHeight: {\n min: 300,\n max: 700,\n default: 500,\n },\n fasciaUpstandBrackets: {\n min: 150,\n max: 600,\n default: 0,\n },\n noOfBay: {\n min: 1,\n max: 30,\n default: 1,\n },\n patiosPitch: {\n default: 2,\n },\n existingRoofPitch: {\n default: 22.5,\n },\n rakeCutVertical: {\n min: 500,\n max: 8000,\n default: 500,\n },\n rakeCutHorizontal: {\n min: 500,\n max: 8000,\n default: 500,\n },\n roofOverallLength: {\n min: 1000,\n max: 80000,\n default: 0,\n },\n roofOverallWidth: {\n min: 0,\n max: 20000,\n default: 0,\n },\n minHeight: {\n min: 0,\n max: 5000,\n default: 0,\n },\n existingLength: {\n min: 1500,\n max: 80000,\n default: 10000,\n },\n existingLength2: {\n min: 0,\n max: 20000,\n default: 0,\n },\n existingWidth: {\n min: 0,\n max: 20000,\n default: 0,\n },\n existingWidth2: {\n min: 0,\n max: 20000,\n default: 0,\n },\n columnType: {\n default: 0,\n },\n};\n\nexport const GEOMETRY_CATEGORY = {\n PATIOS: \"PATOIS\",\n};\nexport const GEOMETRY_TYPE = {\n ROOF_COVER: \"ROOF_COVER\",\n EXISTING_WALL: \"EXISTING_WALL\",\n EAVE: \"EAVE\",\n FASCIA: \"FASCIA\",\n EXISTING_ROOF: \"EXISTING_ROOF1\",\n FLY_OVER_BRACKET: \"FLY_OVER_BRACKET\",\n SUPERIOR_BEAM: \"SUPERIOR_BEAM\",\n SUPERIOR_INTERNAL_BEAM: \"SUPERIOR_INTERNAL_BEAM\",\n SUPERIOR_RAFTER_BEAM: \"SUPERIOR_RAFTER_BEAM\",\n SUPERIOR_BEAM_END_CAP: \"SUPERIOR_BEAM_END_CAP\",\n SUPERIOR_RAFTER_BEAM_END_CAP: \"SUPERIOR_RAFTER_BEAM_END_CAP\",\n SUPERIOR_POST: \"SUPERIOR_POST\",\n SUPERIOR_CENTER_POST: \"SUPERIOR_CENTER_POST\",\n ROOF_PANEL: \"ROOF_PANEL\",\n ROOF_PANEL_BASE: \"ROOF_PANEL_BASE\",\n ROOF_PANEL_BARGE_CAPPING: \"ROOF_PANEL_BARGE_CAPPING\",\n ROOF_PANEL_DRIP_BARGE_CAPPING: \"ROOF_PANEL_DRIP_BARGE_CAPPING\",\n ZFLASHING: \"ZFLASHING\",\n RECEIVER_CHANEL: \"RECEIVER_CHANEL\",\n GUTTER: \"GUTTER\",\n GUTTER_PATIOS: \"GUTTER_PATIOS\",\n ROOF_PATIOS: \"ROOF_PATIOS\",\n RIDGE_CAPPING: \"RIDGE_CAPPING\",\n DIMENSION: \"DIMENSION\",\n DIMENSION_CAP: \"DIMENSION_CAP\",\n DIMENSION_LINE: \"DIMENSION_LINE\",\n DIMENSION_LINE_RAKECUT: \"DIMENSION_LINE_RAKECUT\",\n DIRECTION_TEXT: \"DIRECTION_TEXT\",\n DIMENSION_TEXT: \"DIMENSION_TEXT\",\n MESH_OUTLINE: \"MESH_OUTLINE\",\n GROUND_BASE: \"GROUND_BASE\",\n DOWNPIPE: \"DOWNPIPE\",\n DOWNPIPE_NOZZLE: \"DOWNPIPE_NOZZLE\",\n SHEET_OUTLINE: \"SHEET_OUTLINE\",\n HIGHLIGHT_BOX: \"HIGHLIGHT_BOX\",\n TEXT_COVER: \"TEXT_COVER\",\n UPSTAND_BRAKET: \"UPSTAND_BRAKET\",\n UPSTAND_BRAKET_EXT: \"UPSTAND_BRAKET_EXT\",\n UPSTAND_BRAKET_CUTOUT: \"UPSTAND_BRAKET_CUTOUT\",\n UPSTAND_BRAKET_BEAM: \"UPSTAND_BRAKET_BEAM\",\n BEAM_OUTLINE: \"BEAM_OUTLINE\",\n INTERNAL_JOINT: \"INTERNAL_JOINT\",\n};\nexport const DIMENSION_LABEL_TYPE = {\n LENGTH_1: \"LENGTH_1\",\n LENGTH_2: \"LENGTH_2\",\n WIDTH_1: \"WIDTH_1\",\n WIDTH_2: \"WIDTH_2\",\n BAY: \"BAY\",\n RAKE_CUT_LEFT_HORIZONTAL: \"RAKE_CUT_LEFT_HORIZONTAL\",\n RAKE_CUT_LEFT_VERTICAL: \"RAKE_CUT_LEFT_VERTICAL\",\n RAKE_CUT_RIGHT_HORIZONTAL: \"RAKE_CUT_RIGHT_HORIZONTAL\",\n RAKE_CUT_RIGHT_VERTICAL: \"RAKE_CUT_RIGHT_VERTICAL\",\n FRONT_OVERHANG: \"FRONT_OVERHANG\",\n BACK_OVERHANG: \"BACK_OVERHANG\",\n LEFT_OVERHANG: \"LEFT_OVERHANG\",\n RIGHT_OVERHANG: \"RIGHT_OVERHANG\",\n SPAN: \"SPAN\",\n MULTI_SPAN: \"MULTI_SPAN\",\n EAVE_WIDTH: \"EAVE_WIDTH\",\n\n // FlyOver: Dim from ground to bottom of beam front.\n LOWER_HEIGHT_DIM: \"LOWER_HEIGHT_DIM\",\n // Braket height dim\n BRAKET_HEIGHT_DIM: \"BRAKET_HEIGHT_DIM\",\n // Dimension of existing wall height\n EAVE_HEIGHT_DIM: \"EAVE_HEIGHT_DIM\",\n // Free standing dim back.\n HIGHER_HEIGHT_DIM: \"HIGHER_HEIGHT_DIM\",\n};\nexport const HIGHLIGHT_BOX_COLOR = {\n GREEN: \"green\",\n};\nexport const DIMENSION_LOCATION = {\n FRONT_RIGHT: 1,\n PLAN_LEFT: 2,\n PLAN_RIGHT: 3,\n PLAN_BOTTOM: 4,\n LEFT_RIGHT: 5,\n RIGHT_LEFT: 6,\n};\nexport const INIT = {\n CONNECTION_TYPE: CONNECTION_TYPE.EXISTING,\n EXISTING_TYPE: BUILDING_SIDE.NONE,\n DEFAULT_BRACKET_NUMBER: 2,\n DEFAULT_BRACKET_CUTOUT_NUMBER: 2,\n};\nexport const ACTIVE_LEFT_MENU = {\n existingHouse: false,\n patiosInformation: true,\n};\nexport const PATIOS_ROOF_TYPE = {\n FLAT_ROOF: \"flat\",\n GABLE_ROOF: \"gable\",\n};\nexport const OFFSET_GUTTER_TO_WALL = 200;\nexport const STATUS_USER = [\n {\n key: \"ACTIVE\",\n text: \"Active\",\n },\n {\n key: \"DISABLE\",\n text: \"Disable\",\n },\n {\n key: \"SOFTWARE_ONLY\",\n text: \"Software Only\",\n },\n {\n key: \"ORDER_ONLY\",\n text: \"Online Ordering Only\",\n },\n];\n\nexport const PANEL_TYPE = {\n INSULATED: \"Insulated\",\n RIBSPAN: \"RibSpan\",\n};\n\nexport const STATUS_TEXT = {\n SAVE: \"Saved\",\n NEW: \"New\",\n OPEN: \"Opening\",\n COPY: \"Copying\",\n REVISE: \"Revising\",\n};\nexport const TEMPLATE = [\n {\n type: 0, // standard\n existingLength: 10000,\n existingLength2: 0,\n existingWidth1: 0,\n existingWidth2: 0,\n existingType: {\n value: 0,\n },\n baySize: 4572,\n noOfBay: 1,\n span: 2100,\n listBay: [{ index: 1, value: 4572, isCut: false }],\n cutOut: {\n value: 0,\n },\n },\n {\n type: 1, // L-shape Left\n existingLength: 10000,\n existingLength2: 0,\n existingWidth1: 3000,\n existingWidth2: 0,\n existingType: {\n value: 1,\n },\n baySize: 4572,\n noOfBay: 1,\n span: 2100,\n listBay: [{ index: 1, value: 4572, isCut: false }],\n cutOut: {\n value: 0,\n },\n },\n {\n type: 2, // L-shape Right\n existingLength: 10000,\n existingLength2: 0,\n existingWidth1: 3000,\n existingWidth2: 0,\n existingType: {\n value: 2,\n },\n baySize: 4572,\n noOfBay: 1,\n span: 2100,\n listBay: [{ index: 1, value: 4572, isCut: false }],\n cutOut: {\n value: 0,\n },\n },\n {\n type: 3, // U-shape\n existingLength: 10000,\n existingLength2: 0,\n existingWidth1: 3000,\n existingWidth2: 0,\n existingType: {\n value: 3,\n },\n baySize: 5700,\n noOfBay: 1,\n span: 2100,\n listBay: [{ index: 1, value: 6000, isCut: false }],\n cutOut: {\n value: 0,\n },\n },\n {\n type: 5, //CutOut left\n existingLength: 10000,\n existingLength2: 3000,\n existingWidth1: 3000,\n existingWidth2: 0,\n existingType: {\n value: 1,\n },\n baySize: 4500,\n span: 6000,\n noOfBay: 2,\n listBay: [\n { index: 1, value: 4500, isCut: false },\n { index: 2, value: 4500, isCut: false },\n ],\n cutOut: {\n value: 1,\n },\n },\n {\n type: 6, // Cutout Right\n existingLength: 10000,\n existingLength2: 3000,\n existingWidth1: 3000,\n existingWidth2: 0,\n existingType: {\n value: 2,\n },\n baySize: 4500,\n span: 6000,\n noOfBay: 2,\n listBay: [\n { index: 1, value: 4500, isCut: false },\n { index: 2, value: 4500, isCut: false },\n ],\n cutOut: {\n value: 1,\n },\n },\n {\n type: 7, //Cutout Left 2\n existingLength: 10000,\n existingLength2: 3000,\n existingWidth1: 3000,\n existingWidth2: 3500,\n existingType: {\n value: 1,\n },\n baySize: 4500,\n span: 6000,\n noOfBay: 2,\n listBay: [\n { index: 1, value: 4500, isCut: false },\n { index: 2, value: 4500, isCut: false },\n ],\n cutOut: {\n value: 1,\n },\n },\n {\n type: 8, //Cutout Right 2\n existingLength: 10000,\n existingLength2: 3000,\n existingWidth1: 3000,\n existingWidth2: 3500,\n existingType: {\n value: 2,\n },\n baySize: 4500,\n span: 6000,\n noOfBay: 2,\n listBay: [\n { index: 1, value: 4500, isCut: false },\n { index: 2, value: 4500, isCut: false },\n ],\n cutOut: {\n value: 1,\n },\n },\n];\n","export const EXISTING_BUILDING_CONFIG = {\n CUTOUT_ALLOW: 1500,\n CUTOUT_DEFFER_TIME_OUT: 50,\n // Offset min from top of existing height to top of patios roof\n BUILDING_HEIGHT_OFFSET: 200,\n ROOF_AND_BASE_OFFSET_X: 10, // Roof và base bị lệch\n ROOF_BASE_SUBTRACT: 60,\n BARGE_ROOF_OFFSET_Y: 20, // Khoảng cách từ roof lên barge\n BARGE_ROOF_OFFSET_X: 5, // Khoảng cách từ roof lên barge\n GUTTER_ROOF_OFFSET_Y: 15, // Khoảng cách từ roof lên barge\n GUTTER_ROOF_OFFSET_Z: 40, // Khoảng cách từ roof lên barge\n EXTRA_BRACKET_HEIGHT: 250,\n EAVE_OFFSET_BACK: 100,\n FIT_FROM_CORNER_TO_CENTER_GUTTER: 100,\n MAXIMUM_LENGTH_PER_BEAM: 9000,\n FIT_FROM_TOP_TO_CUTBEAM: 500,\n FIT_JOINT: 2.5,\n RAFTER_BEAM_SIZE: 160\n};\n\nexport const MIN_INTERNAL_BEAM_LENGTH = 200\n\nexport const RIBSPAN_PANEL_WIDTH = 310.5;\n\nexport const RIBSPAN_RECEIVER_CHANNEL_FIT = 5;\n\nexport const RIBSPAN_BARGE_FIT = 3;\n\nexport const FASCIA_BRACKET_FIT = 185.1875;\n\nexport enum RAKECUT_TYPE {\n NONE,\n ANGLE,\n STEP,\n}\n\nexport enum BUILDING_SIDE {\n NONE,\n LEFT,\n RIGHT,\n BOTH,\n}\nexport enum CUTOUT_ENABLE {\n NO,\n YES,\n}\nexport enum CONNECTION_TYPE {\n EXISTING,\n FLY_OVER,\n BLACK_FLY_OVER,\n FASCIA,\n FREE_STANDING,\n FASCIA_UPSTAND,\n BACK_FASCIA_UPSTAND,\n}\n\nexport const PANEL_DIRECTION = {\n LEFT_TO_RIGHT: false,\n RIGHT_TO_LEFT: true,\n};\nexport const MOUSE_EVENT = {\n DOWN: \"mousedown\",\n MOVE: \"mousemove\",\n UP: \"mouseup\",\n HOVER: \"hover\",\n CLICK: \"click\",\n DRAG_START: \"dragstart\",\n DRAG_END: \"dragend\",\n DRAG: \"drag\",\n};\n\nexport const OBJECT_TYPE = {\n UI_CONTROL_LEFT_RAKECUT_HORIZONTAL: \"UI_CONTROL_LEFT_RAKECUT_HORIZONTAL\",\n UI_CONTROL_LEFT_RAKECUT_VERTICAL: \"UI_CONTROL_LEFT_RAKECUT_VERTICAL\",\n UI_CONTROL_RIGHT_RAKECUT_HORIZONTAL: \"UI_CONTROL_RIGHT_RAKECUT_HORIZONTAL\",\n UI_CONTROL_RIGHT_RAKECUT_VERTICAL: \"UI_CONTROL_RIGHT_RAKECUT_VERTICAL\",\n UI_CONTROL_EDIT_WALL_LENGTH1: \"UI_CONTROL_EDIT_WALL_LENGTH1\",\n UI_CONTROL_EDIT_WALL_LENGTH2: \"UI_CONTROL_EDIT_WALL_LENGTH2\",\n UI_CONTROL_EDIT_WALL_WIDTH1: \"UI_CONTROL_EDIT_WALL_WIDTH1\",\n UI_CONTROL_EDIT_WALL_WIDTH2: \"UI_CONTROL_EDIT_WALL_WIDTH2\",\n UI_CONTROL_WIDTH1: \"UI_CONTROL_WIDTH1\",\n UI_CONTROL_WIDTH2: \"UI_CONTROL_WIDTH2\",\n UI_CONTROL_LENGTH2: \"UI_CONTROL_LENGTH2\",\n HIGHLIGHT_BOX: \"HIGHLIGHT_BOX\",\n CLICK_CONTROL_CUTOUT: \"CLICK_CONTROL_CUTOUT\",\n CUT_BEAM: \"CUT_BEAM\",\n UI_CONTROL_CUTBEAM_CONTAINER: \"UI_CONTROL_CUTBEAM_CONTAINER\"\n};\n\nexport const FIT_DIMENSION = 20\nexport const FIT_DIMENSION_FAR = 1000\nexport const FIT_DIMENSION_MEDIUM = 500\n\nexport const FIT_FLYOVER_BRAKET_ON_ROOF = 200","import { DialogAddBOMComponent } from \"./component/dialog-add-bom/dialog-add-bom.component\";\nimport { PanelBOMComponent } from \"./component/panel-bom/panel-bom.component\";\nimport { DialogBOMComponent } from \"./component/dialog-bom/dialog-bom.component\";\nimport { DialogAddCostComponent } from \"./component/dialog-add-cost/dialog-add-cost.component\";\nimport { SliderInputComponent } from \"./component/slider-input/slider-input.component\";\nimport { DropDownInputComponent } from \"./component/dropdown-input/dropdown-input.component\";\nimport { DropDownInputCustomComponent } from \"./component/dropdown-input-custom/dropdown-input-custom.component\";\nimport { SelectInputComponent } from \"./component/select-input/select-input.component\";\nimport { DialogEditBayComponent } from \"./component/dialog-edit-bay/dialog-edit-bay.component\";\nimport { DropDownColorInputComponent } from \"./component/dropdown-color-input/dropdown-color-input.component\";\nimport { SwitchInputComponent } from \"./component/switch-input/switch-input.component\";\nimport { CheckboxInputComponent } from \"./component/checkbox-input/checkbox-input.component\";\nimport { DialogRakeCutComponent } from \"./component/dialog-rakecut/dialog-rakecut.component\";\nimport { DialogDimensionComponent } from \"./component/dialog-dimension/dialog-dimension.component\";\nimport { DialogConfirmComponent } from \"./component/dialog-confirm/dialog-confirm.component\";\nimport { ToggleButtonComponent } from \"./component/toggle-button/toggle-button.component\";\n\nimport { BrowserModule } from \"@angular/platform-browser\";\nimport { BrowserAnimationsModule } from \"@angular/platform-browser/animations\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { HttpClientModule, HTTP_INTERCEPTORS } from \"@angular/common/http\";\nimport { AppComponent } from \"./app.component\";\nimport { APP_BASE_HREF } from \"@angular/common\";\nimport { appRoutingModule } from \"./app.routing\";\nimport { JwtInterceptor, ErrorInterceptor } from \"./helpers\";\nimport { HomeComponent } from \"./containers/home\";\nimport { HomeComponent as HomeRibspanComponent } from \"src/app-ribspan/containers/home\";\nimport { LoginComponent } from \"./containers/login\";\nimport { NgZorroAntdModule, NZ_ICONS } from \"ng-zorro-antd\";\nimport { IconDefinition } from \"@ant-design/icons-angular\";\nimport * as AllIcons from \"@ant-design/icons-angular/icons\";\nimport { NZ_I18N, en_US } from \"ng-zorro-antd\";\nimport { registerLocaleData } from \"@angular/common\";\nimport { CurrencyMaskInputMode, NgxCurrencyModule } from \"ngx-currency\";\nimport en from \"@angular/common/locales/en\";\nimport { LightboxModule } from \"ngx-lightbox\";\n\nregisterLocaleData(en);\nconst antDesignIcons = AllIcons as {\n [key: string]: IconDefinition;\n};\n\nconst icons: IconDefinition[] = Object.keys(antDesignIcons).map(\n (key) => antDesignIcons[key]\n);\nexport const customCurrencyMaskConfig = {\n align: \"right\",\n allowNegative: true,\n allowZero: true,\n decimal: \".\",\n precision: 2,\n prefix: \"\",\n suffix: \"\",\n thousands: \",\",\n nullable: false,\n inputMode: CurrencyMaskInputMode.NATURAL,\n};\n@NgModule({\n declarations: [\n AppComponent,\n HomeComponent,\n HomeRibspanComponent,\n LoginComponent,\n\n DropDownInputComponent,\n ToggleButtonComponent,\n DialogConfirmComponent,\n DialogDimensionComponent,\n DialogRakeCutComponent,\n CheckboxInputComponent,\n SwitchInputComponent,\n DropDownColorInputComponent,\n DialogEditBayComponent,\n SelectInputComponent,\n DropDownInputCustomComponent,\n SliderInputComponent,\n DialogAddCostComponent,\n DialogBOMComponent,\n PanelBOMComponent,\n DialogAddBOMComponent,\n ],\n imports: [\n BrowserModule.withServerTransition({ appId: \"ng-cli-universal\" }),\n NgZorroAntdModule,\n HttpClientModule,\n ReactiveFormsModule,\n FormsModule,\n appRoutingModule,\n BrowserAnimationsModule,\n NgxCurrencyModule.forRoot(customCurrencyMaskConfig),\n LightboxModule,\n ],\n providers: [\n { provide: APP_BASE_HREF, useValue: \"/\" },\n { provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true },\n { provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true },\n { provide: NZ_I18N, useValue: en_US },\n { provide: NZ_ICONS, useValue: icons },\n ],\n bootstrap: [AppComponent],\n})\nexport class AppModule {}\n","import { Routes, RouterModule } from '@angular/router';\n\nimport { HomeComponent } from './containers/home';\nimport { LoginComponent } from './containers/login';\nimport { HomeComponent as HomeRibspanComponent} from 'src/app-ribspan/containers/home';\n// import { AppComponent } from './app.component';\nimport { AuthGuard } from './helpers';\n\nconst routes: Routes = [\n //{ path: '', component: HomeComponent, canActivate: [AuthGuard] },\n { path: '', component: HomeComponent},\n { path: 'ribspan', component: HomeRibspanComponent},\n { path: 'login', component: LoginComponent },\n\n // otherwise redirect to home\n { path: '**', redirectTo: '' }\n];\n\nexport const appRoutingModule = RouterModule.forRoot(routes);","import { Component, Input, Output, EventEmitter } from \"@angular/core\";\n\n@Component({\n selector: \"checkbox-input\",\n template: ''\n})\nexport class CheckboxInputComponent {\n currentValue = false;\n private previousValue: boolean;\n _isDisable: boolean;\n @Input(\"disabled\") public set isDisabled(val: boolean) {\n this._isDisable = val;\n }\n @Output('onChange') onClick = new EventEmitter();\n\n private actions: Array<{\n priority: number;\n actions: Array<(previousValue: boolean, currentValue: boolean) => void>;\n }> = [];\n\n ngOnInit(): void {\n\n }\n\n public onStateChanged() {\n for (let item of this.actions) {\n item.actions.forEach(action => {\n action(this.previousValue, this.currentValue);\n });\n }\n this.onClick.emit(this);\n this.previousValue = this.currentValue;\n }\n\n public addAction(\n action: (previousValue: boolean, currentValue: boolean) => void,\n priority?: number\n ) {\n priority = priority || 3;\n let actionsByPriority = this.actions.find(a => a.priority === priority);\n if (actionsByPriority) {\n actionsByPriority.actions.push(action);\n } else {\n this.actions.push({ priority: priority, actions: [action] });\n }\n\n this.actions.sort((a, b) => a.priority - b.priority);\n }\n public removeAction(action: any): void {\n for (let item of this.actions) {\n const idx = item.actions.indexOf(action);\n\n if (idx !== -1) {\n item.actions.splice(idx, 1);\n }\n }\n }\n public setValue(value: boolean){\n this.currentValue = value;\n this.onStateChanged();\n }\n public setDisable(value: boolean) {\n if (value) {\n this._isDisable = true;\n }\n else {\n this.isDisabled = false;\n }\n }\n}","import { Component, EventEmitter, OnInit, Output } from \"@angular/core\";\nimport { FormBuilder, FormGroup, Validators } from \"@angular/forms\";\nimport { NzMessageService } from 'ng-zorro-antd/message';\nimport { BehaviorSubject } from \"rxjs\";\nimport { debounceTime } from 'rxjs/operators';\nimport { MaterialService } from './../../services/material.service';\nimport { PriceService } from './../../services/price.service';\n\n@Component({\n selector: \"dialog-add-bom\",\n templateUrl: \"./dialog-add-bom.component.html\",\n styleUrls: [\"./dialog-add-bom.component.scss\"],\n providers: [],\n})\nexport class DialogAddBOMComponent implements OnInit {\n @Output(\"submit\")\n _submit: EventEmitter = new EventEmitter();\n public visible = false;\n public title: string = \"Additional BOM\";\n groups = []\n inputForm: FormGroup;\n group: string = ''\n unit: string = ''\n itemNo: string = ''\n description: string = ''\n optionLists: any[] = [];\n currentOption: any = null\n searchChange$ = new BehaviorSubject('');\n get f() {\n return this.inputForm.controls;\n }\n\n constructor(\n private formBuilder: FormBuilder,\n private materialService: MaterialService,\n private priceService: PriceService,\n private message: NzMessageService,\n ) { }\n\n ngOnInit() {\n this.inputForm = this.formBuilder.group({\n itemNo: [\"\", Validators.required],\n group: '',\n dri: '',\n cutBk: '',\n description: '',\n qty: 1,\n length: 1,\n });\n this.searchChange$\n .asObservable()\n .pipe(debounceTime(500))\n .subscribe(this.getOptionList.bind(this))\n }\n\n ngAfterViewInit() {\n this.materialService.getAll().subscribe(rs => {\n if (rs.statusCode === 200) {\n this.groups = rs.data\n }\n })\n }\n\n private getOptionList(value: string) {\n if (value.length < 3) {\n this.optionLists = []\n return\n }\n const _value = value.toLowerCase()\n this.priceService.searchByQuery(this.group, _value).subscribe((rs) => {\n if (rs.statusCode === 200) {\n this.optionLists = rs.data;\n }\n })\n }\n\n fieldSelected(event: any, option: any) {\n if (event.isUserInput && option) {\n this.currentOption = { ...option, description: option.itemDescription };\n this.itemNo = option.itemNo;\n this.unit = option.uom;\n }\n }\n\n onSearch(e: Event): void {\n const value = (e.target as HTMLInputElement).value;\n this.searchChange$.next(value);\n }\n onGroupChange(value) {\n this.description = null\n this.searchChange$.next('');\n }\n\n onShow(visible: boolean, data?: any) {\n if (visible) {\n if (!data) {\n this.inputForm.setValue({\n itemNo: '',\n dri: '',\n cutBk: '',\n group: '',\n description: '',\n qty: 1,\n length: 1,\n })\n } else {\n this.inputForm.setValue({\n itemNo: data.itemNo,\n dri: data.dri,\n cutBk: data.cutBk,\n group: '',\n description: data.description,\n qty: 1,\n length: 1,\n })\n this.currentOption = data\n this.searchChange$.next(data.description);\n }\n }\n this.visible = visible;\n }\n\n onCancel() {\n this.visible = false;\n }\n onSubmit() {\n if (this.inputForm.invalid) {\n this.message.error(\"Item No. is required\");\n return;\n }\n\n const values = this.inputForm.value\n const _length = values.length;\n if (!_length || _length == 0) {\n this.message.error(\"Length > 0\");\n return;\n }\n const _qty = values.qty;\n if (!_qty || _qty == 0) {\n this.message.error(\"Qty > 0\");\n return;\n }\n const _price = {\n cutBk: values.cutBk,\n description: this.currentOption.description,\n dri: values.dri,\n idx: 0,\n itemNo: this.currentOption.itemNo,\n length: _length || 1,\n length2: _length * 1000,\n price: 0,\n qty: _qty,\n totalUom: 0,\n unitPrice: 0,\n uom: this.currentOption.uom,\n }\n this._submit.emit(_price);\n this.visible = false\n }\n}\n","\n
\n \n \n Group\n \n \n \n \n \n \n \n \n Item Description\n \n \n \n {{ option.itemDescription }} - ({{\n option.itemNo\n }})\n \n \n \n \n \n Item No.\n \n \n \n \n \n Direction\n \n \n \n \n \n \n \n \n \n Cut BK\n \n \n \n \n \n Length\n \n \n \n \n \n \n \n Qty\n \n \n \n \n \n \n\n
\n \n \n
\n
\n\n","import { Component, OnInit } from \"@angular/core\";\nimport _ from \"lodash\";\nimport { NzMessageService } from \"ng-zorro-antd/message\";\nimport { HomeComponent } from \"src/app/containers/home\";\nimport { HomeComponent as HomeComponentRibSpan } from \"src/app-ribspan/containers/home\";\nimport { ICost } from \"src/app/core/models\";\nimport { Router } from \"@angular/router\";\n\n@Component({\n selector: \"dialog-add-cost\",\n templateUrl: \"./dialog-add-cost.component.html\",\n styleUrls: [\"./dialog-add-cost.component.scss\"],\n})\nexport class DialogAddCostComponent implements OnInit {\n private homeComponent: any;\n constructor(public message: NzMessageService, private router: Router) {\n if (this.router.url == \"/ribspan\") {\n this.homeComponent = HomeComponentRibSpan.ins;\n } else {\n this.homeComponent = HomeComponent.ins;\n }\n }\n isVisible: boolean = false;\n costList: ICost[] = [];\n\n ngOnInit(): void {}\n\n public show(_visible: boolean, list: ICost[]) {\n this.isVisible = _visible;\n\n if (!this.isVisible) {\n return;\n }\n this.costList = [...list];\n }\n\n onCancel(): void {\n this.isVisible = false;\n }\n\n onDelete(index): void {\n const _temp = this.costList.filter((f) => f.index !== index);\n this.costList = _temp.map((value, index) => {\n return {\n index: index + 1,\n description: value.description,\n value: value.value,\n };\n });\n }\n onNew(): void {\n const _temp = this.costList.map((value, index) => {\n return {\n index: index + 1,\n description: value.description,\n value: value.value,\n };\n });\n _temp.push({ index: _temp.length + 1, description: \"\", value: 0 });\n this.costList = [..._temp];\n }\n onSave(): void {\n const totalCost = this.costList.reduce(\n (total, val) => total + val.value,\n 0\n );\n this.homeComponent.currentQuoteInfo.quoteInfo.costList = [...this.costList];\n this.homeComponent.currentQuoteInfo.quoteInfo.addCostInstall = _.round(\n totalCost,\n 2\n );\n if (this.costList.length > 0) {\n this.homeComponent.addCostInstallDes = this.costList[0].description;\n } else {\n this.homeComponent.addCostInstallDes = \"\";\n }\n this.homeComponent.calcQuoteInfo();\n this.isVisible = false;\n }\n}\n","\n\n
\n
\n \n
\n
\n \n \n
\n
No.
\n
Description
\n
Value Ex GST
\n
\n
\n
\n
\n #{{cost.index}}\n
\n
\n \n
\n
\n \n \n \n \n
\n
\n \n
\n
\n
\n \n
\n
\n \n \n
\n
\n
","import { first } from \"rxjs/operators\";\nimport { JobService } from \"./../../services/job.service\";\nimport { Component, OnInit } from \"@angular/core\";\nimport _ from \"lodash\";\nimport { NzMessageService } from \"ng-zorro-antd/message\";\nimport { ExcelService } from \"src/app/services\";\nimport { Objects } from \"src/app/core/objects\";\nimport { User } from \"src/app/models\";\n\n@Component({\n selector: \"dialog-bom\",\n templateUrl: \"./dialog-bom.component.html\",\n styleUrls: [\"./dialog-bom.component.scss\"],\n})\nexport class DialogBOMComponent implements OnInit {\n constructor(\n public message: NzMessageService,\n private jobService: JobService,\n private excelService: ExcelService\n ) {\n this.objects = new Objects();\n }\n isVisibleMoreInfo: boolean = false;\n isVisible: boolean = false;\n dataBOM: any;\n jobNo: string = \"\";\n objects: Objects;\n isAdmin: boolean = false;\n currentUser: User;\n\n ngOnInit(): void {}\n\n public showTest(_visible: boolean, user: User, lstBOM, lstAddBOM, quoteInfo) {\n this.isVisible = _visible;\n this.jobNo = \"Test\";\n this.isAdmin = false;\n this.currentUser = user;\n\n if (!this.isVisible) {\n return;\n }\n this.dataBOM = {\n BOMInfo: [...lstBOM],\n quoteInfo: { ...quoteInfo },\n };\n if (lstAddBOM) {\n const _listAddBOM = lstAddBOM.map((m) => ({\n ...m,\n isAdd: true,\n }));\n this.dataBOM.BOMInfo.push(..._listAddBOM);\n }\n this.isVisibleMoreInfo = false;\n this.isVisible = true;\n }\n\n public show(\n _visible: boolean,\n id: string,\n jobNo: string,\n isAdmin: boolean,\n user: User\n ) {\n this.isVisible = _visible;\n this.jobNo = jobNo;\n this.isAdmin = isAdmin;\n this.currentUser = user;\n\n if (!this.isVisible) {\n return;\n }\n\n // Check changed before\n this.jobService\n .getBOMById(id)\n .pipe(first())\n .subscribe(\n (data) => {\n this.dataBOM = {\n BOMInfo: [...data.data.list],\n quoteInfo: { ...data.data.quoteInfo },\n };\n if (data.data.listAddBOM) {\n const _listAddBOM = data.data.listAddBOM.map((m) => ({\n ...m,\n isAdd: true,\n }));\n this.dataBOM.BOMInfo.push(..._listAddBOM);\n }\n this.isVisibleMoreInfo = false;\n this.isVisible = true;\n },\n (error) => {\n console.log(\"error :\", error);\n }\n );\n }\n\n onCancel(): void {\n this.isVisible = false;\n }\n\n onExportExcelClick(): void {\n if (!(this.isAdmin || this.currentUser.user.isExportExcel)) {\n return;\n }\n const list = [\n {\n idx: 0,\n description: \"Nett\",\n price: this.dataBOM.quoteInfo.nett || 0,\n },\n {\n idx: 1,\n description: \"Off Fascia Install\",\n price: this.dataBOM.quoteInfo.fasciaInstall || 0,\n },\n {\n idx: 2,\n description: \"Fly Over Install\",\n price: this.dataBOM.quoteInfo.flyOverInstall || 0,\n },\n {\n idx: 3,\n description: \"Install Mark up on material\",\n price: this.dataBOM.quoteInfo.installMaterial || 0,\n },\n {\n idx: 4,\n description: \"Per post install\",\n price: this.dataBOM.quoteInfo.perPostInstall || 0,\n },\n {\n idx: 5,\n description: \"Std Additional Costs\",\n price: this.dataBOM.quoteInfo.addCost || 0,\n },\n {\n idx: 6,\n description: \"Mark up on Supply Kits\",\n price: this.dataBOM.quoteInfo.supplyOnlyKits || 0,\n },\n {\n idx: 7,\n description: \"Additional Cost Install\",\n price: this.dataBOM.quoteInfo.addCostInstall || 0,\n },\n {\n idx: 8,\n description: \"GST (10.00%)\",\n price: this.dataBOM.quoteInfo.gst || 0,\n },\n {\n idx: 9,\n description: \"Total\",\n price: this.dataBOM.quoteInfo.totalPrice || 0,\n },\n ];\n this.excelService.exportExcel(\n this.dataBOM.BOMInfo,\n list,\n this.jobNo,\n this.isAdmin\n );\n }\n}\n","\n\n \n \n \n \n Idx.\n Item No.\n Qty\n Length\n Cut BK\n Dir\n Description\n UoM\n Total UoM\n Price\n Unit Price\n \n \n \n \n {{ data.idx }}\n {{ data.itemNo }}\n {{ data.qty }}\n {{ data.length }}\n {{ data.cutBk }}\n {{ data.dri }}\n {{ data.description }}\n {{ data.uom }}\n {{ data.totalUom }}\n {{ (isAdmin ? data.price : 0) | currency }}\n {{ (isAdmin ? data.unitPrice : 0) | currency }}\n \n \n \n \n \n \n \n \n \n \n Nett\n \n {{ dataBOM?.quoteInfo.nett || 0 | currency }}\n \n \n \n Off fascia install\n \n {{ dataBOM?.quoteInfo.fasciaInstall || 0 | currency }}\n \n \n \n Fly Over install\n \n {{ dataBOM?.quoteInfo.flyOverInstall || 0 | currency }}\n \n \n \n Install markup of material\n \n {{ dataBOM?.quoteInfo.installMaterial || 0 | currency }}\n \n \n \n Per post install\n \n {{ dataBOM?.quoteInfo.perPostInstall || 0 | currency }}\n \n \n \n Std addtional costs\n \n {{ dataBOM?.quoteInfo.addCost || 0 | currency }}\n \n \n \n Mark up on supply kits\n \n {{ dataBOM?.quoteInfo.supplyOnlyKits || 0 | currency }}\n \n \n \n Addional cost install\n \n {{ dataBOM?.quoteInfo.addCostInstall || 0 | currency }}\n \n \n \n GST 10%\n \n {{ dataBOM?.quoteInfo.gst || 0 | currency }}\n \n \n \n Total\n \n {{ dataBOM?.quoteInfo.totalPrice || 0 | currency }}\n \n \n \n \n
\n
\n More Information\n \n
\n
\n \n \n Export Excel\n \n \n
\n
\n \n
\n \n\n\n","import { Component, OnInit, Output, EventEmitter } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\nimport { BUILDING_SIDE } from \"src/app/app.constants\";\nimport { HomeComponent } from \"src/app/containers/home\";\nimport { HomeComponent as HomeComponentRibSpan } from \"src/app-ribspan/containers/home\";\n\n@Component({\n selector: \"dialog-confirm\",\n templateUrl: \"./dialog-confirm.component.html\",\n styleUrls: [\"./dialog-confirm.component.scss\"],\n})\nexport class DialogConfirmComponent implements OnInit {\n bayIndex: number = 0;\n public dimValue = 12000;\n public baySizeMax: number = 3000;\n @Output(\"onSubmit\") onSubmitEvent = new EventEmitter();\n @Output(\"onCancel\") onCancelEvent = new EventEmitter();\n @Output() clickOutside = new EventEmitter();\n visible: boolean = false;\n labelType: number = 0;\n title: string = \"\";\n valueType: string = \"number\";\n isShowBuilding: boolean = false;\n\n private homeComponent: any;\n\n constructor(private router: Router) {\n if (this.router.url == \"/ribspan\") {\n this.homeComponent = HomeComponentRibSpan.ins;\n } else {\n this.homeComponent = HomeComponent.ins;\n }\n }\n\n ngOnInit(): void {}\n onCancel() {\n this.onCancelEvent.emit();\n this.show(false, null);\n }\n onOK() {\n this.onSubmitEvent.emit();\n if (this.isShowBuilding) {\n if (this.labelType === BUILDING_SIDE.LEFT) {\n if (this.homeComponent.sltExistingType.currentValue == 2) {\n this.homeComponent.sltExistingType.setSelected(3);\n } else {\n this.homeComponent.sltExistingType.setSelected(1);\n }\n } else if (this.labelType === BUILDING_SIDE.RIGHT) {\n if (this.homeComponent.sltExistingType.currentValue == 1) {\n this.homeComponent.sltExistingType.setSelected(3);\n } else {\n this.homeComponent.sltExistingType.setSelected(2);\n }\n }\n } else {\n if (this.labelType === BUILDING_SIDE.LEFT) {\n if (this.homeComponent.sltExistingType.currentValue == 3) {\n this.homeComponent.sltExistingType.setSelected(2);\n } else {\n this.homeComponent.sltExistingType.setSelected(0);\n }\n } else if (this.labelType === BUILDING_SIDE.RIGHT) {\n if (this.homeComponent.sltExistingType.currentValue == 3) {\n this.homeComponent.sltExistingType.setSelected(1);\n } else {\n this.homeComponent.sltExistingType.setSelected(0);\n }\n }\n }\n this.show(false, null);\n }\n public show(_visible: boolean, labelType) {\n this.visible = _visible;\n\n if (!this.visible) {\n return;\n }\n this.labelType = labelType;\n let isShow = true;\n if (labelType === BUILDING_SIDE.LEFT) {\n if (\n this.homeComponent.sltExistingType.currentValue == 1 ||\n this.homeComponent.sltExistingType.currentValue == 3\n ) {\n isShow = false;\n } else {\n isShow = true;\n }\n } else if (labelType === BUILDING_SIDE.RIGHT) {\n if (\n this.homeComponent.sltExistingType.currentValue == 2 ||\n this.homeComponent.sltExistingType.currentValue == 3\n ) {\n isShow = false;\n } else {\n isShow = true;\n }\n }\n\n this.isShowBuilding = isShow;\n if (labelType === BUILDING_SIDE.LEFT) {\n this.title = `Are you sure you want to ${\n isShow ? \"show\" : \"hide\"\n } left wall`;\n } else if (labelType === BUILDING_SIDE.RIGHT) {\n this.title = `Are you sure you want to ${\n isShow ? \"show\" : \"hide\"\n } right wall`;\n }\n }\n}\n","
\n
\n {{ title }}\n
\n
\n \n \n
\n
\n","import {\n Component,\n OnInit,\n Output,\n EventEmitter,\n ViewChild,\n} from \"@angular/core\";\nimport { DIMENSION_LABEL_TYPE } from \"src/app/app.config\";\nimport { HomeComponent } from \"src/app/containers/home\";\nimport { DropDownColorInputComponent } from \"../dropdown-color-input/dropdown-color-input.component\";\nimport { HomeComponent as HomeComponentRibSpan } from \"src/app-ribspan/containers/home\";\nimport { Router } from \"@angular/router\";\n\n@Component({\n selector: \"dialog-dimension\",\n templateUrl: \"./dialog-dimension.component.html\",\n styleUrls: [\"./dialog-dimension.component.scss\"],\n})\nexport class DialogDimensionComponent implements OnInit {\n bayIndex: number = 0;\n public dimValue = 12000;\n public baySizeMax: number = 3000;\n @Output(\"onSubmit\") onSubmitEvent = new EventEmitter();\n @Output(\"onCancel\") onCancelEvent = new EventEmitter();\n @Output() clickOutside = new EventEmitter();\n visible: boolean = false;\n labelType: string = \"\";\n title: string = \"\";\n valueType: string = \"number\";\n minValue = 1;\n maxValue = 999999;\n bayMaxValue = 8000;\n bayMinValue = 1000;\n step = 1;\n\n private homeComponent: any;\n\n constructor(private router: Router) {\n if (this.router.url == \"/ribspan\") {\n this.homeComponent = HomeComponentRibSpan.ins;\n } else {\n this.homeComponent = HomeComponent.ins;\n }\n }\n\n ngOnInit(): void {}\n onCancel() {\n this.onCancelEvent.emit();\n this.show(false, null);\n }\n onOK() {\n this.onSubmitEvent.emit();\n\n const value = this.dimValue;\n if (this.labelType === DIMENSION_LABEL_TYPE.BAY) {\n this.homeComponent.dialogEditBay.listBay[this.bayIndex].value = value;\n this.homeComponent.dialogEditBay.onOK();\n } else if (this.labelType === DIMENSION_LABEL_TYPE.LENGTH_1) {\n this.homeComponent.sldExistingLength.setValue(value);\n } else if (this.labelType === DIMENSION_LABEL_TYPE.LENGTH_2) {\n this.homeComponent.sldExistingLength2.setValue(value);\n } else if (this.labelType === DIMENSION_LABEL_TYPE.WIDTH_1) {\n this.homeComponent.sldExistingWidth1.setValue(value);\n } else if (this.labelType === DIMENSION_LABEL_TYPE.WIDTH_2) {\n this.homeComponent.sldExistingWidth2.setValue(value);\n } else if (\n this.labelType === DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL\n ) {\n this.homeComponent.sldLeftCutHorizontal.setValue(value);\n } else if (\n this.labelType === DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL\n ) {\n this.homeComponent.sldRightCutHorizontal.setValue(value);\n } else if (this.labelType === DIMENSION_LABEL_TYPE.FRONT_OVERHANG) {\n this.homeComponent.sldFrontOverhang.setValue(value);\n } else if (this.labelType === DIMENSION_LABEL_TYPE.BACK_OVERHANG) {\n this.homeComponent.sldBackOverhang.setValue(value);\n } else if (this.labelType === DIMENSION_LABEL_TYPE.LEFT_OVERHANG) {\n this.homeComponent.sldLeftOverhang.setValue(value);\n } else if (this.labelType === DIMENSION_LABEL_TYPE.RIGHT_OVERHANG) {\n this.homeComponent.sldRightOverhang.setValue(value);\n } else if (this.labelType === DIMENSION_LABEL_TYPE.SPAN) {\n this.homeComponent.sldSpan.setValue(value);\n } else if (this.labelType === DIMENSION_LABEL_TYPE.MULTI_SPAN) {\n this.homeComponent.sldMultiSpan.setValue(value);\n } else if (\n this.labelType === DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL\n ) {\n this.homeComponent.sldRightCutVertical.setValue(value);\n } else if (this.labelType === DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL) {\n this.homeComponent.sldLeftCutVertical.setValue(value);\n }\n\n this.show(false, null);\n }\n public show(_visible: boolean, labelType, data?) {\n this.visible = _visible;\n\n if (!this.visible) {\n return;\n }\n this.labelType = labelType;\n this.valueType = \"number\";\n this.maxValue = 999999;\n this.minValue = 1;\n if (labelType === DIMENSION_LABEL_TYPE.BAY) {\n if (data && data.bayIndex != undefined) {\n this.maxValue = this.bayMaxValue;\n this.minValue = this.bayMinValue;\n this.bayIndex = data.bayIndex;\n this.dimValue =\n this.homeComponent.dialogEditBay.listBay[data.bayIndex].value;\n this.title = `Edit bay #${this.bayIndex + 1}`;\n }\n } else if (labelType === DIMENSION_LABEL_TYPE.LENGTH_1) {\n this.title = \"Edit Length (L1)\";\n this.dimValue = this.homeComponent.sldExistingLength.currentValue;\n } else if (labelType === DIMENSION_LABEL_TYPE.LENGTH_2) {\n this.title = \"Edit Length (L2)\";\n this.dimValue = this.homeComponent.sldExistingLength2.currentValue;\n } else if (labelType === DIMENSION_LABEL_TYPE.WIDTH_1) {\n this.title = \"Edit Width (W1)\";\n this.dimValue = this.homeComponent.sldExistingWidth1.currentValue;\n } else if (labelType === DIMENSION_LABEL_TYPE.WIDTH_2) {\n this.title = \"Edit Width (W2)\";\n this.dimValue = this.homeComponent.sldExistingWidth2.currentValue;\n } else if (labelType === DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL) {\n this.title = \"Edit Rake Cut Left Horizontal\";\n this.dimValue = this.homeComponent.sldLeftCutHorizontal.currentValue;\n } else if (labelType === DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL) {\n this.title = \"Edit Rake Cut Right Horizontal\";\n this.dimValue = this.homeComponent.sldRightCutHorizontal.currentValue;\n } else if (labelType === DIMENSION_LABEL_TYPE.FRONT_OVERHANG) {\n this.title = \"Edit Front Overhang (O)\";\n this.dimValue = this.homeComponent.sldFrontOverhang.currentValue;\n } else if (labelType === DIMENSION_LABEL_TYPE.BACK_OVERHANG) {\n this.title = \"Edit Back Overhang (O2)\";\n this.dimValue = this.homeComponent.sldBackOverhang.currentValue;\n } else if (labelType === DIMENSION_LABEL_TYPE.LEFT_OVERHANG) {\n this.title = \"Edit Left Overhang\";\n this.dimValue = this.homeComponent.sldLeftOverhang.currentValue;\n } else if (labelType === DIMENSION_LABEL_TYPE.RIGHT_OVERHANG) {\n this.title = \"Edit Right Overhang\";\n this.dimValue = this.homeComponent.sldRightOverhang.currentValue;\n } else if (labelType === DIMENSION_LABEL_TYPE.SPAN) {\n this.title = \"Edit Span (S)\";\n this.dimValue = this.homeComponent.sldSpan.currentValue;\n } else if (labelType === DIMENSION_LABEL_TYPE.MULTI_SPAN) {\n this.title = \"Edit Multi Span (S1)\";\n this.dimValue = this.homeComponent.sldMultiSpan.currentValue;\n } else if (labelType === DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL) {\n this.title = \"Edit Rake Cut Right Vertical\";\n this.dimValue = this.homeComponent.sldRightCutVertical.currentValue;\n } else if (labelType === DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL) {\n this.title = \"Edit Rake Cut Left Vertical\";\n this.dimValue = this.homeComponent.sldLeftCutVertical.currentValue;\n }\n }\n}\n","
\n
{{ title }}
\n
\n \n \n \n
\n
\n
\n \n \n
\n ","import { Component, OnInit, Input, ViewChild, Output, EventEmitter, OnChanges, SimpleChanges } from '@angular/core';\nimport { IBay } from 'src/app/core/models';\nimport { HomeComponent as AppComponent } from '../../containers/home/home.component';\n\ndeclare var $: any;\n\n@Component({\n selector: 'dialog-edit-bay',\n templateUrl: './dialog-edit-bay.component.html',\n styleUrls: ['./dialog-edit-bay.component.scss']\n})\nexport class DialogEditBayComponent implements OnInit {\n private _noOfBay: number;\n private _baySize: number;\n\n public get noOfBay(): number { return this._noOfBay; }\n public get baySize(): number { return this._baySize; }\n\n @Input('noOfBay') public set noOfBay(val: number) { this._noOfBay = val; this.onChange(); }\n @Input('baySize') public set baySize(val: number) { this._baySize = val; this.onChange(); }\n @Output('onSubmit') onSubmitEvent = new EventEmitter();\n @Output('onCancel') onCancelEvent = new EventEmitter();\n\n visible: boolean = false;\n\n public listBay: IBay[] = [];\n public listBayCached: IBay[] = [];\n public bayMaxValue = 8000;\n public bayMinValue = 1000;\n\n public previousTotalBaySize: number = this.bayMinValue;\n public get totalBaySize(): number {\n return this.listBay.reduce((total, val) => total + val.value, 0);\n }\n\n public actions: Array<(listBay: IBay[]) => void> = [];\n\n ngOnInit(): void {\n\n }\n ngAfterContentInit() {\n\n }\n\n onChange() {\n let bays: IBay[] = [];\n this.listBay = [];\n //this.listBayCached = [];\n\n for (let i = 0; i < this.noOfBay; i++) {\n //keep previous isCut value if noOfBay not changed\n let isCut = false;\n if (this.listBayCached.length > 0 && this.noOfBay == this.listBayCached.length) {\n isCut = this.listBayCached[i].isCut;\n }\n\n bays.push({ index: i + 1, value: +this.baySize, isCut });\n //this.listBay.push({ index: i + 1, value: +this.baySize, isCut: false });\n //this.listBayCached.push({ index: i + 1, value: +this.baySize, isCut: false }); \n }\n\n this.listBay = bays;\n this.listBayCached = bays;\n\n this.actions.forEach(action => {\n action(this.listBay);\n });\n\n this.previousTotalBaySize = this.totalBaySize;\n }\n\n public addAction(action: (listBay: IBay[]) => void) {\n this.actions.push(action);\n }\n public removeAction(action: any): void {\n let idx = this.actions.indexOf(action);\n if (idx !== -1) {\n this.actions.splice(idx, 1);\n }\n }\n\n onCancel() {\n this.listBay = this.listBayCached.map(b => ({ index: b.index, value: b.value, isCut: b.isCut }));\n\n this.onCancelEvent.emit();\n this.show(false);\n }\n onOK() {\n this.listBayCached = this.listBay.map(b => ({ index: b.index, value: b.value, isCut: b.isCut }));\n this.onSubmitEvent.emit();\n this.actions.forEach(action => {\n action(this.listBay);\n });\n this.show(false);\n }\n public show(_visible: boolean) {\n this.visible = _visible;\n }\n public setValue(value) {\n if (!value || !value.length || value.length == 0)\n return;\n\n this.noOfBay = value.length;\n this.listBay = value;\n this.onOK();\n }\n}\n","\n \n
\n
\n Bay #{{ bay.index }}\n
\n
\n \n \n
\n
\n Cut Beam\n
\n
\n
\n\n","import { Component, OnInit, Input, ViewChild, Output, EventEmitter, OnChanges, SimpleChanges } from '@angular/core';\nimport { BUILDING_SIDE } from 'src/app/app.constants';\nimport { HomeComponent } from 'src/app/containers/home';\nimport { HomeComponent as HomeComponentRibSpan } from 'src/app-ribspan/containers/home';\nimport { UI } from 'src/app/core/ui';\nimport { UI as UIRibSpan } from 'src/app-ribspan/core/ui';\nimport { DropDownInputComponent } from '../dropdown-input/dropdown-input.component';\nimport { Router } from '@angular/router';\n\n\n\n@Component({\n selector: 'dialog-rakecut',\n templateUrl: './dialog-rakecut.component.html',\n styleUrls: ['./dialog-rakecut.component.scss']\n})\nexport class DialogRakeCutComponent implements OnInit {\n @Output('onSubmit') onSubmitEvent = new EventEmitter();\n @Output('onCancel') onCancelEvent = new EventEmitter();\n @ViewChild('inputRakecutType') inputRakecutType = new DropDownInputComponent();\n\n selectedValue = 0\n rakecutTypes = null\n visible: boolean = false;\n side: number\n\n constructor(private router: Router){\n if(router.url == '/ribspan'){\n this.rakecutTypes = HomeComponentRibSpan.ins.objects.rakeCutType\n } else {\n this.rakecutTypes = HomeComponent.ins.objects.rakeCutType\n }\n }\n\n ngOnInit(): void {\n \n }\n ngAfterViewInit(){\n this.inputRakecutType.addAction((pre, cur) => {\n this.selectedValue = cur\n })\n }\n onCancel(){\n this.onCancelEvent.emit();\n this.show(false);\n }\n onOK(){\n if(this.router.url == '/ribspan'){\n if(this.side == BUILDING_SIDE.LEFT){\n HomeComponentRibSpan.ins.sltLeftCutType.setSelected(this.selectedValue)\n }\n if(this.side == BUILDING_SIDE.RIGHT){\n HomeComponentRibSpan.ins.sltRightCutType.setSelected(this.selectedValue)\n }\n } else {\n if(this.side == BUILDING_SIDE.LEFT){\n HomeComponent.ins.sltLeftCutType.setSelected(this.selectedValue)\n }\n if(this.side == BUILDING_SIDE.RIGHT){\n HomeComponent.ins.sltRightCutType.setSelected(this.selectedValue)\n }\n }\n\n this.onSubmitEvent.emit();\n this.show(false);\n }\n public show(_visible: boolean, side?: number){\n this.visible = _visible;\n if(this.router.url == '/ribspan'){\n if(side === BUILDING_SIDE.LEFT){\n this.inputRakecutType.setSelected(UIRibSpan.rakeCutLeftType)\n }\n if(side === BUILDING_SIDE.RIGHT){\n this.inputRakecutType.setSelected(UIRibSpan.rakeCutRightType)\n }\n } else {\n if(side === BUILDING_SIDE.LEFT){\n this.inputRakecutType.setSelected(UI.rakeCutLeftType)\n }\n if(side === BUILDING_SIDE.RIGHT){\n this.inputRakecutType.setSelected(UI.rakeCutRightType)\n }\n }\n \n this.side = side\n }\n}\n","
\n
Rake cut
\n
\n \n \n
\n
\n \n \n
\n
","import {\n Component,\n OnInit,\n Input,\n ViewChild,\n Output,\n EventEmitter,\n} from \"@angular/core\";\nimport { DropdownInputItemModel } from \"../../core/models\";\nimport _ from \"lodash\"\n\ndeclare var $: any;\n\n@Component({\n selector: \"dropdown-color-input\",\n templateUrl: \"./dropdown-color-input.component.html\",\n styleUrls: [\"./dropdown-color-input.component.scss\"],\n})\nexport class DropDownColorInputComponent implements OnInit {\n @Input(\"items\") items: Array;\n @Input(\"selected\") public selectedValue: number;\n\n public get currentItem(): DropdownInputItemModel {\n return this.items.find((c) => c.selected);\n }\n public get currentValue(): number {\n let selectedItem = this.items.find((i) => i.selected);\n if (selectedItem) return selectedItem.id;\n\n if (this.items.length > 0) return this.items[0].id;\n\n return null;\n }\n\n public get currentText(): string {\n let selectedItem = this.items.find((i) => i.selected);\n if (selectedItem) return selectedItem.value;\n\n if (this.items.length > 0) return this.items[0].value;\n\n return \"\";\n }\n\n public get currentBeamEndCapColorCode(): string {\n let selectedItem = this.items.find((i) => i.selected);\n if (selectedItem) return _.get(selectedItem, ['beamEndCapColorCode'], '');\n\n if (this.items.length > 0) return _.get(this.items, [0, 'beamEndCapColorCode'], '');\n\n return '';\n }\n\n actions: Array<{\n priority: number;\n actions: Array<(previousValue: number, currentValue: number) => void>;\n }> = [];\n isOpen = false;\n\n ngOnInit(): void {\n this.selectedValue = this.selectedValue || 0;\n this.setSelected(this.selectedValue);\n }\n ngAfterContentInit() {\n document.addEventListener(\"click\", (e) => {\n //console.log('document clicked');\n ////document.getElementsByClassName('ui.fluid.dropdown.selection')\n let container = $(\".ui.fluid.dropdown.selection\");\n //let menu = $('.menu.transition');\n if (!container.is(e.target) && container.has(e.target).length === 0) {\n this.isOpen = false;\n //$('.ui.fluid.dropdown.selection').removeClass('active visible');\n //menu.removeClass('visible');\n //menu.addClass('hidden');\n }\n\n e.stopPropagation();\n });\n }\n public addAction(\n action: (previousValue: number, currentValue: number) => void,\n priority?: number\n ) {\n priority = priority || 3;\n let actionsByPriority = this.actions.find((a) => a.priority === priority);\n if (actionsByPriority) {\n actionsByPriority.actions.push(action);\n } else {\n this.actions.push({ priority: priority, actions: [action] });\n }\n\n this.actions.sort((a, b) => a.priority - b.priority);\n }\n public removeAction(action: any): void {\n for (let item of this.actions) {\n const idx = item.actions.indexOf(action);\n\n if (idx !== -1) {\n item.actions.splice(idx, 1);\n }\n }\n }\n onItemSelected(item: DropdownInputItemModel) {\n this.items = this.items.map((i) => ({ ...i, selected: i.id == item.id }));\n\n for (let item of this.actions) {\n item.actions.forEach((action) => {\n action(null, this.currentValue);\n });\n }\n }\n onClick() {\n let container = $(\".ui.fluid.dropdown.selection\");\n let menu = $(\".menu.transition\");\n container.removeClass(\"active visible\");\n menu.removeClass(\"visible\");\n menu.addClass(\"hidden\");\n\n this.isOpen = !this.isOpen;\n }\n setSelected(id) {\n if (!this.items.find((i) => i.id == id)) {\n return;\n }\n\n this.items = this.items.map((i) => ({ ...i, selected: i.id == id }));\n for (let item of this.actions) {\n item.actions.forEach((action) => {\n action(null, this.currentValue);\n });\n }\n }\n public toHexColor(value: number) {\n return \"#\" + Number(value).toString(16).padStart(6, \"0\");\n }\n}\n","\n \n
\n
\n \n {{ currentText }}\n \n \n \n \n \n {{ item.value }}\n \n \n\n","import { Component, OnInit, Input, ViewChild, Output, EventEmitter } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { HomeComponent } from 'src/app/containers/home';\nimport { HomeComponent as HomeComponentRibSpan } from 'src/app-ribspan/containers/home';\nimport { SelectInputItemModel } from 'src/app/core/models';\n\ndeclare var $: any;\n\n\n@Component({\n selector: \"dropdown-input-custom\",\n templateUrl: \"./dropdown-input-custom.component.html\"\n // styleUrls: ['./dropdown-input.component.css']\n})\nexport class DropDownInputCustomComponent implements OnInit {\n _isDisable: boolean = false;\n @Input(\"disabled\") public set isDisabled(val: boolean) {\n this._isDisable = val;\n }\n @Input(\"items\") items: Array;\n @Input(\"selected\") public selectedValue: number;\n @Input(\"minCustom\") public minCustom: number;\n @Input(\"maxCustom\") public maxCustom: number;\n @Output(\"change\") onChange = new EventEmitter();\n @ViewChild(\"selectInput\", { static: true }) selectElement;\n @Input(\"hasCustom\") public hasCustom: boolean;\n\n public isShowDropDown = false;\n public customValue = 5;\n isVisibleOpenModal: boolean = false;\n previousValue: number;\n currentValue = 10;\n disableList = [];\n //actions: Array<(previousValue: number, currentValue: number) => void> = [];\n actions: Array<{\n priority: number;\n actions: Array<(previousValue: number, currentValue: number) => void>;\n }> = [];\n\n constructor(private route: Router) { }\n\n public get currentText(): string {\n let selectedItem = this.items.find(i => i.id == this.currentValue);\n if (selectedItem)\n return selectedItem.value;\n\n if (this.items.length > 0)\n return this.items[0].value;\n\n }\n public get isDisabled() {\n return this._isDisable\n }\n ngOnInit(): void {\n this.selectedValue = this.selectedValue || 0;\n this.currentValue = this.selectedValue;\n }\n ngAfterContentInit() {\n this.setSelected(this.selectedValue);\n\n document.addEventListener(\"click\", (e) => {\n let container = $(\".ui.fluid.dropdown.selection\");\n if (!container.is(e.target) && container.has(e.target).length === 0) {\n this.isShowDropDown = false;\n }\n e.stopPropagation();\n });\n }\n\n public onToggleDropDown(){\n this.isShowDropDown = !this.isShowDropDown\n }\n public addAction(\n action: (previousValue: number, currentValue: number) => void,\n priority?: number\n ) {\n priority = priority || 3;\n let actionsByPriority = this.actions.find(a => a.priority === priority);\n if (actionsByPriority) {\n actionsByPriority.actions.push(action);\n } else {\n this.actions.push({ priority: priority, actions: [action] });\n }\n\n this.actions.sort((a, b) => a.priority - b.priority);\n }\n public removeAction(action: any): void {\n for (let item of this.actions) {\n const idx = item.actions.indexOf(action);\n\n if (idx !== -1) {\n item.actions.splice(idx, 1);\n }\n }\n }\n\n public onValueChanged(val) {\n if(val == 99999){\n this.onClickCustomValue()\n return\n }\n this.currentValue = val;\n if(this.route.url != '/ribspan' && !HomeComponent.ins.loadCompleted){\n return\n }\n if(this.route.url == '/ribspan' && !HomeComponentRibSpan.ins.loadCompleted){\n return\n }\n for (let item of this.actions) {\n item.actions.forEach(action => {\n action(+this.previousValue, +this.currentValue);\n });\n }\n this.previousValue = val;\n }\n public setSelected(value: any) {\n this.currentValue = value;\n this.selectedValue = value;\n }\n\n public setSelectedAndHandleEvent(value: any) {\n this.currentValue = value;\n this.selectedValue = value;\n\n this.onValueChanged({target: {value: value}})\n }\n\n public setDisable(value: boolean) {\n this.isDisabled = value\n }\n public onClickCustomValue(){\n this.isVisibleOpenModal = true;\n }\n public onModalCustomOk(){\n this.onValueChanged(this.customValue)\n this.isVisibleOpenModal = false;\n }\n public onCancel(){\n this.isVisibleOpenModal = false\n }\n disabledItem(value: any) {\n if (this.disableList.length === 0) {\n return false;\n }\n return this.disableList.indexOf(value) > -1;\n }\n}\n","\n
\n \n
{{currentValue}}
\n
\n
{{i.value}}
\n
Custom value
\n
\n
\n\n\n \n","import { Component, OnInit, Input, ViewChild, Output, EventEmitter } from '@angular/core';\nimport { SelectInputItemModel } from 'src/app/core/models';\nimport _ from \"lodash\";\ndeclare var $: any;\n\n\n@Component({\n selector: \"dropdown-input\",\n templateUrl: \"./dropdown-input.component.html\"\n // styleUrls: ['./dropdown-input.component.css']\n})\nexport class DropDownInputComponent implements OnInit {\n _isDisable: boolean;\n @Input(\"disabled\") public set isDisabled(val: boolean) {\n this._isDisable = val;\n }\n @Input(\"items\") items: Array;\n @Input(\"selected\") public selectedValue: number;\n @Output(\"change\") onChange = new EventEmitter();\n @ViewChild(\"selectInput\", { static: true }) selectElement;\n\n previousValue: number;\n currentValue = 10;\n disableList = [];\n //actions: Array<(previousValue: number, currentValue: number) => void> = [];\n actions: Array<{\n priority: number;\n actions: Array<(previousValue: number, currentValue: number) => void>;\n }> = [];\n public get currentText(): string {\n let selectedItem = this.items.find(i => i.id == this.currentValue);\n if (selectedItem)\n return selectedItem.value;\n\n if (this.items.length > 0)\n return this.items[0].value;\n\n }\n\n public get currentBeamEndCapColorCode(): string {\n let selectedItem = this.items.find((i) => i.id == this.currentValue);\n if (selectedItem) return _.get(selectedItem, ['beamEndCapColorCode'], '');\n\n if (this.items.length > 0) return _.get(this.items, [0, 'beamEndCapColorCode'], '');\n\n return '';\n }\n ngOnInit(): void {\n this.selectedValue = this.selectedValue || 0;\n this.currentValue = this.selectedValue;\n }\n ngAfterContentInit() {\n this.setSelected(this.selectedValue);\n }\n\n public addAction(\n action: (previousValue: number, currentValue: number) => void,\n priority?: number\n ) {\n priority = priority || 3;\n let actionsByPriority = this.actions.find(a => a.priority === priority);\n if (actionsByPriority) {\n actionsByPriority.actions.push(action);\n } else {\n this.actions.push({ priority: priority, actions: [action] });\n }\n\n this.actions.sort((a, b) => a.priority - b.priority);\n }\n public removeAction(action: any): void {\n for (let item of this.actions) {\n const idx = item.actions.indexOf(action);\n\n if (idx !== -1) {\n item.actions.splice(idx, 1);\n }\n }\n }\n\n public onValueChanged(e) {\n const val = e.target.value;\n this.currentValue = val;\n // this.currentText = e.target.options[e.target.options.selectedIndex].text;\n for (let item of this.actions) {\n item.actions.forEach(action => {\n action(+this.previousValue, +this.currentValue);\n });\n }\n // this.onChange.emit();\n this.previousValue = val;\n }\n public setSelected(value: any) {\n this.currentValue = value;\n this.selectedValue = value;\n setTimeout(() => {\n // let selectedItem = this.items.find(i => i.id == value);\n $(this.selectElement.nativeElement).dropdown(\"set selected\", value.toString());\n }, 200);\n }\n\n public setSelectedAndHandleEvent(value: any) {\n setTimeout(() => {\n // let selectedItem = this.items.find(i => i.id == value);\n $(this.selectElement.nativeElement).dropdown(\"set selected\", value.toString());\n }, 200);\n\n this.onValueChanged({target: {value: value}})\n }\n\n public setDisable(value: boolean) {\n if (value) {\n $(this.selectElement.nativeElement).parent().addClass('disabled');\n }\n else {\n $(this.selectElement.nativeElement).parent().removeClass('disabled');\n }\n }\n disabledItem(value: any) {\n if (this.disableList.length === 0) {\n return false;\n }\n return this.disableList.indexOf(value) > -1;\n }\n}\n","\n\n","import { HomeComponent } from \"src/app/containers/home\";\nimport { DialogAddBOMComponent } from \"./../dialog-add-bom/dialog-add-bom.component\";\nimport { Component, Input, OnInit, ViewChild } from \"@angular/core\";\nimport { NzMessageService } from \"ng-zorro-antd/message\";\nimport { HomeComponent as HomeComponentRibSpan } from \"src/app-ribspan/containers/home\";\nimport { Router } from \"@angular/router\";\n\n@Component({\n selector: \"panel-bom\",\n templateUrl: \"./panel-bom.component.html\",\n styleUrls: [\"./panel-bom.component.scss\"],\n})\nexport class PanelBOMComponent implements OnInit {\n private homeComponent: any;\n\n constructor(public message: NzMessageService, private router: Router) {\n if (this.router.url == \"/ribspan\") {\n this.homeComponent = HomeComponentRibSpan.ins;\n } else {\n this.homeComponent = HomeComponent.ins;\n }\n }\n @Input(\"boms\") boms: [];\n @ViewChild(\"dialogAddBOM\", { static: true })\n dialogAddBOM: DialogAddBOMComponent;\n isVisible: boolean = false;\n addBOMs: any[];\n ngOnInit(): void {}\n\n public show(_visible: boolean, id: string) {\n this.isVisible = _visible;\n\n if (!this.isVisible) {\n return;\n }\n }\n public onRefresh() {\n if (this.homeComponent.currentBuildingInfo.additionalBOM) {\n this.addBOMs = [...this.homeComponent.currentBuildingInfo.additionalBOM];\n }\n }\n onNew(): void {\n this.dialogAddBOM.onShow(true);\n }\n\n onCancel(): void {\n this.isVisible = false;\n }\n\n onDeleteBOM(data) {\n if (!this.homeComponent.currentBuildingInfo.isOpen) {\n this.homeComponent.onDeleteBOM(data);\n this.onRefresh();\n }\n }\n onCopyBOM(data) {\n if (!this.homeComponent.currentBuildingInfo.isOpen) {\n this.dialogAddBOM.onShow(true, data);\n }\n }\n\n onAddBOM(price) {\n if (!this.homeComponent.currentBuildingInfo.isOpen) {\n this.homeComponent.onAddBOM(price);\n this.onRefresh();\n }\n }\n}\n","
\n \n \n \n Idx.\n Item No.\n Qty\n Length\n Cut BK\n Dir\n Description\n UoM\n Copy\n \n \n \n \n {{ data.idx }}\n {{ data.itemNo }}\n {{ data.qty }}\n {{ data.length }}\n {{ data.cutBk }}\n {{ data.dri }}\n {{ data.description }}\n {{ data.uom }}\n \n \n \n \n \n \n \n \n \n \n
\n \n
\n \n \n \n Idx.\n Item No.\n Qty\n Length\n Description\n Cut BK\n Dri\n UoM\n Delete\n \n \n \n \n {{ data.idx }}\n {{ data.itemNo }}\n {{ data.qty }}\n {{ data.length }}\n {{ data.description }}\n {{ data.cutBk }}\n {{ data.dri }}\n {{ data.uom }}\n \n \n \n \n \n \n \n \n \n
\n","import { Component, OnInit, Input, ViewChild, Output, EventEmitter } from '@angular/core';\nimport { SelectInputItemModel } from 'src/app/core/models';\n\ndeclare var $: any;\n\n\n@Component({\n selector: \"select-input\",\n templateUrl: \"./select-input.component.html\"\n // styleUrls: ['./dropdown-input.component.css']\n})\nexport class SelectInputComponent implements OnInit {\n _isDisable: boolean;\n @Input(\"disabled\") public set isDisabled(val: boolean) {\n this._isDisable = val;\n }\n @Input(\"items\") items: Array;\n @Input(\"selected\") public selectedValue: number;\n @Output(\"change\") onChange = new EventEmitter();\n @ViewChild(\"selectInput\", { static: true }) selectElement;\n\n previousValue: number;\n currentValue = 10;\n currentText = \"\";\n //actions: Array<(previousValue: number, currentValue: number) => void> = [];\n actions: Array<{\n priority: number;\n actions: Array<(previousValue: number, currentValue: number) => void>;\n }> = [];\n\n ngOnInit(): void {\n this.selectedValue = this.selectedValue || 0;\n this.currentValue = this.selectedValue;\n }\n ngAfterContentInit() {\n this.setSelected(this.selectedValue);\n console.log('items :', this.items);\n const item = this.items.find(f => f.id === this.selectedValue);\n if (item) {\n this.currentText = item.value;\n }\n }\n\n public addAction(\n action: (previousValue: number, currentValue: number) => void,\n priority?: number\n ) {\n priority = priority || 3;\n let actionsByPriority = this.actions.find(a => a.priority === priority);\n if (actionsByPriority) {\n actionsByPriority.actions.push(action);\n } else {\n this.actions.push({ priority: priority, actions: [action] });\n }\n\n this.actions.sort((a, b) => a.priority - b.priority);\n }\n public removeAction(action: any): void {\n for (let item of this.actions) {\n const idx = item.actions.indexOf(action);\n\n if (idx !== -1) {\n item.actions.splice(idx, 1);\n }\n }\n }\n\n public onValueChanged(e) {\n let val = e.target.value;\n this.currentValue = val;\n this.currentText = e.target.options[e.target.options.selectedIndex].text;\n for (let item of this.actions) {\n item.actions.forEach(action => {\n action(this.previousValue, this.currentValue);\n });\n }\n\n // this.onChange.emit();\n this.previousValue = val;\n }\n public setSelected(value: any) {\n this.currentValue = value;\n this.selectedValue = value;\n const item = this.items.find(f => f.id == value);\n if (item) {\n this.currentText = item.value;\n } else {\n this.currentText = '';\n }\n // setTimeout(() => {\n // $(this.selectElement.nativeElement).dropdown(\"set selected\", value);\n // }, 200);\n }\n\n public setDisable(value: boolean) {\n this.isDisabled = value;\n }\n filterItems() {\n return this.items;\n }\n isNotSelected(value: string): boolean {\n return true;\n // return this.listOfSelectedValue.indexOf(value) === -1;\n }\n}\n","\n \n \n\n\n","import { HomeComponent } from 'src/app/containers/home';\nimport { HomeComponent as HomeComponentRibSpan } from 'src/app-ribspan/containers/home';\nimport { Component, OnInit, Input, Output, EventEmitter, AfterViewInit, ViewChild, ElementRef } from '@angular/core';\nimport { fromEvent } from 'rxjs';\nimport { map, filter, debounceTime, distinctUntilChanged } from 'rxjs/operators';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'slider-input',\n templateUrl: './slider-input.component.html',\n styleUrls: ['./slider-input.component.css']\n})\nexport class SliderInputComponent implements OnInit, AfterViewInit {\n _isDisable: boolean;\n @ViewChild('txtInput') txtInput: ElementRef;\n @Input('min') minValue: number;\n @Input('max') maxValue: number;\n @Input('step') step: number;\n @Input('default') public defaultValue: number;\n @Input('extraValue') public extraValue: number;\n @Input('disabled') public set isDisabled(val: boolean) { this._isDisable = val };\n @Output('change') onChange = new EventEmitter();\n\n _currentValue: number;\n _previousValue: number;\n\n public get previousValue(): number {\n if (this.extraValue && this.extraValue > 0) {\n return this._previousValue + this.extraValue;\n }\n else {\n return this._previousValue\n }\n };\n public get currentValue(): number {\n if (this.extraValue && this.extraValue > 0) {\n return this._currentValue + this.extraValue;\n }\n else {\n return this._currentValue\n }\n };\n public set currentValue(val: number){\n if(val >= this.minValue && val <= this.maxValue){\n this._currentValue = val;\n this.onValueChanged(val);\n }\n }\n\n actions: Array<{ priority: number, actions: Array<(previousValue: number, currentValue: number) => void> }> = [];\n\n constructor(private route: Router) { }\n\n ngOnInit() {\n this._currentValue = this.defaultValue;\n }\n ngAfterViewInit(){\n // fromEvent(this.txtInput.nativeElement, 'input').pipe(\n // // get value\n // map((event: any) => {\n // return event.target.value;\n // })\n // // // if character length greater then 2\n // // ,filter(res => res >= this.minValue && res <= this.maxValue)\n // // Time in milliseconds between key events\n // ,debounceTime(1000) \n // // If previous query is diffent from current \n // ,distinctUntilChanged()\n // // subscription for response\n // ).subscribe((_value: string) => {\n // let value = parseInt(_value);\n // if(value < this.minValue){\n // this._currentValue = this.minValue;\n // }\n // else if(value > this.maxValue){\n // this._currentValue = this.maxValue;\n // }\n // else{\n // this._currentValue = value;\n // }\n \n // this.onValueChanged({target: { value: this._currentValue }});\n // });\n }\n\n public addAction(action: (previousValue: number, currentValue: number) => void, priority?: number) {\n priority = priority || 3;\n let actionsByPriority = this.actions.find(a => a.priority === priority);\n if (actionsByPriority) {\n actionsByPriority.actions.push(action);\n }\n else {\n this.actions.push({ priority: priority, actions: [action] });\n }\n\n this.actions.sort((a, b) => a.priority - b.priority);\n }\n public removeAction(action: any): void {\n for (let item of this.actions) {\n const idx = item.actions.indexOf(action);\n\n if (idx !== -1) {\n item.actions.splice(idx, 1);\n }\n }\n }\n\n public onValueChanged(e, shouldEmit = false) {\n const val = e;\n this._currentValue = e;\n \n if ((val < this.minValue || val > this.maxValue) && !shouldEmit) {\n return;\n }\n\n this.onChange.emit(this);\n // for (let item of this.actions) {\n // item.actions.forEach(action => {\n // action(+this.previousValue, +this.currentValue);\n // });\n // }\n Promise.all([\n ...this.actions.map(item => item.actions.map(action => action(this.previousValue, this.currentValue)))\n ]).then(() => {\n if(this.route.url == \"/ribspan\"){\n HomeComponentRibSpan.ins.renderStatic();\n } else {\n HomeComponent.ins.renderStatic();\n }\n })\n this._previousValue = val;\n }\n\n public setValueAndHandleEvent (value: number, shouldEmit = false) {\n this.onValueChanged(value, shouldEmit)\n }\n\n public setValue(value: number) {\n this.currentValue = value;\n }\n public setMin(value: number){\n this.minValue = value;\n if(this.currentValue < this.minValue) {\n this.setValueAndHandleEvent(this.minValue, true)\n }\n }\n public setMax(value: number){\n this.maxValue = value;\n if(this.currentValue && this.currentValue > value){\n this.onValueChanged(value)\n }\n }\n\n public setDisable(value: boolean) {\n this.isDisabled = value;\n }\n\n}\n","
\n \n \n\n \n \n\n \n\n \n
\n","import { Component, OnInit } from \"@angular/core\";\n\n\n@Component({\n selector: 'switch-input',\n template: ' Left\" nzUnCheckedChildren=\"Left -> Right\" nzTooltipTitle=\"Only Admin can make this change\" nz-tooltip (ngModelChange)=\"onStateChanged()\">'\n})\nexport class SwitchInputComponent implements OnInit {\n // set _currentValue(value: boolean) {\n // this.currentValue = value ? 1 : 0;\n // }\n\n // get _currentValue(): boolean {\n // return !(this.currentValue == 0);\n // };\n\n currentValue: boolean = false;\n previousValue: boolean;\n\n actions: Array<{\n priority: number;\n actions: Array<(previousValue: boolean, currentValue: boolean) => void>;\n }> = [];\n\n ngOnInit(): void {\n\n }\n\n onStateChanged() {\n for (let item of this.actions) {\n item.actions.forEach(action => {\n action(this.previousValue, this.currentValue);\n });\n }\n\n this.previousValue = this.currentValue;\n }\n\n public addAction(\n action: (previousValue: boolean, currentValue: boolean) => void,\n priority?: number\n ) {\n priority = priority || 3;\n let actionsByPriority = this.actions.find(a => a.priority === priority);\n if (actionsByPriority) {\n actionsByPriority.actions.push(action);\n } else {\n this.actions.push({ priority: priority, actions: [action] });\n }\n\n this.actions.sort((a, b) => a.priority - b.priority);\n }\n public removeAction(action: any): void {\n for (let item of this.actions) {\n const idx = item.actions.indexOf(action);\n\n if (idx !== -1) {\n item.actions.splice(idx, 1);\n }\n }\n }\n public setValue(value: boolean) {\n this.currentValue = value;\n //this.onStateChanged();\n }\n}","import { Component, OnInit, Input, EventEmitter, Output } from '@angular/core';\nimport { HomeComponent } from 'src/app/containers/home';\nimport { HomeComponent as HomeComponentRibSpan } from 'src/app-ribspan/containers/home';\nimport { Router } from '@angular/router';\n\n@Component({\n selector: 'toggle-button',\n templateUrl: './toggle-button.component.html',\n // styleUrls: ['./toggle-button.component.scss']\n})\nexport class ToggleButtonComponent implements OnInit {\n @Input('default') public defaultValue: boolean;\n @Input('defaultContent') public set _defaultContent(val: string){\n this.defaultContent = val;\n };\n @Input('activeContent') public set _activeContent(val: string){\n this.activeContent = val;\n };\n @Input('inactiveContent') public set _inactiveContent(val: string){\n this.inactiveContent = val;\n };\n @Input('defaultShow') public set _show(val: boolean){\n this.isShow = val;\n };\n @Output('onClick') onClick = new EventEmitter();\n\n currentValue: boolean;\n previousValue: boolean;\n defaultContent: string;\n activeContent: string;\n inactiveContent: string;\n isShow: boolean = true;\n actions: Array<(previousValue: boolean, currentValue: boolean) => void> = [];\n constructor(private router: Router) { }\n\n ngOnInit() {\n this.currentValue = this.defaultValue || false;\n }\n\n public addAction(action: (previousValue: boolean, currentValue: boolean) => void) {\n this.actions.push(action);\n }\n public removeAction(action: any): void {\n let idx = this.actions.indexOf(action);\n if (idx !== -1) {\n this.actions.splice(idx, 1);\n }\n }\n onValueChanged(e){\n this.currentValue = !this.currentValue;\n this.onClick.emit(this);\n Promise.all([\n ...this.actions.map(action => action(this.previousValue, this.currentValue))\n ]).then(()=>{\n if(this.router.url == '/ribspan'){\n HomeComponentRibSpan.ins.renderStatic();\n } else {\n HomeComponent.ins.renderStatic();\n }\n })\n this.previousValue = this.currentValue;\n }\n public setValue(value: boolean) {\n this.currentValue = value;\n this.onClick.emit(this);\n Promise.all([\n ...this.actions.map(action => action(this.previousValue, this.currentValue))\n ]).then(()=>{\n if(this.router.url == '/ribspan'){\n HomeComponentRibSpan.ins.renderStatic();\n } else {\n HomeComponent.ins.renderStatic();\n }\n })\n this.previousValue = this.currentValue;\n }\n public show(value: boolean){\n this.isShow = value;\n }\n\n}\n","\n","import { Component, ElementRef, NgZone, ViewChild } from \"@angular/core\";\nimport { Router } from \"@angular/router\";\nimport _ from \"lodash\";\nimport { NzMessageService } from \"ng-zorro-antd/message\";\nimport { first } from \"rxjs/operators\";\nimport {\n BUILDING_SIDE,\n CONNECTION_TYPE,\n CUTOUT_ENABLE,\n EXISTING_BUILDING_CONFIG,\n FASCIA_BRACKET_FIT,\n RAKECUT_TYPE,\n} from \"src/app/app.constants\";\nimport { CheckboxInputComponent } from \"src/app/component/checkbox-input/checkbox-input.component\";\nimport { DialogConfirmComponent } from \"src/app/component/dialog-confirm/dialog-confirm.component\";\nimport { DialogDimensionComponent } from \"src/app/component/dialog-dimension/dialog-dimension.component\";\nimport { DialogRakeCutComponent } from \"src/app/component/dialog-rakecut/dialog-rakecut.component\";\nimport { DropDownInputCustomComponent } from \"src/app/component/dropdown-input-custom/dropdown-input-custom.component\";\nimport { SwitchInputComponent } from \"src/app/component/switch-input/switch-input.component\";\nimport { ToggleButtonComponent } from \"src/app/component/toggle-button/toggle-button.component\";\nimport { CutOutManager } from \"src/app/core/UI/cutOut.manager\";\nimport { EditLength2Manager } from \"src/app/core/UI/editLength2.manager\";\nimport { EditWallManager } from \"src/app/core/UI/editWall.manager\";\nimport { EditWidth2Manager } from \"src/app/core/UI/editWidth2.manager\";\nimport UIRakecutManager from \"src/app/core/UI/rakecut\";\nimport { ICost } from \"src/app/core/models\";\nimport SelectionManager from \"src/app/core/selection.manager\";\nimport { UI } from \"src/app/core/ui\";\nimport { environment } from \"src/environments/environment\";\nimport {\n Box3,\n BoxHelper,\n Color,\n DirectionalLight,\n PerspectiveCamera,\n Scene,\n WebGLRenderer,\n} from \"three\";\nimport { OrbitControls } from \"three/examples/jsm/controls/OrbitControls\";\nimport {\n ACTIVE_LEFT_MENU,\n APP_VERSION,\n CONFIG,\n GEOMETRY_CATEGORY,\n GEOMETRY_TYPE,\n INIT,\n OFFSET_GUTTER_TO_WALL,\n PANEL_TYPE,\n PATIOS_ROOF_TYPE,\n RELEASE_DATE,\n STATUS_TEXT,\n TEMPLATE,\n} from \"../../app.config\";\nimport { DialogEditBayComponent } from \"../../component/dialog-edit-bay/dialog-edit-bay.component\";\nimport { DropDownInputComponent } from \"../../component/dropdown-input/dropdown-input.component\";\nimport { SliderInputComponent } from \"../../component/slider-input/slider-input.component\";\nimport { DimensionManager } from \"../../core/dimension.manager\";\nimport { EaveManager } from \"../../core/eave.manager\";\nimport { ExistingRoofManager } from \"../../core/existing-roof.manager\";\nimport { ExistingWallManager } from \"../../core/existing-wall.manager\";\nimport { FasciaManager } from \"../../core/fascia.manager\";\nimport { GeometryManager } from \"../../core/geometry.manager\";\nimport { GroundManager } from \"../../core/ground.manager\";\nimport { MaterialManager } from \"../../core/material.manager\";\nimport { Objects } from \"../../core/objects\";\nimport { PatiosManager } from \"../../core/patios.manager\";\nimport { Printing2DManager } from \"../../core/printing2d.manager\";\nimport { UIManager } from \"../../core/ui.manager\";\nimport { Util } from \"../../core/utils\";\nimport { User } from \"../../models\";\nimport {\n AuthenticationService,\n JobService,\n PrintingService,\n} from \"../../services\";\nimport { DialogAddCostComponent } from \"./../../component/dialog-add-cost/dialog-add-cost.component\";\nimport { DialogBOMComponent } from \"./../../component/dialog-bom/dialog-bom.component\";\nimport { PanelBOMComponent } from \"./../../component/panel-bom/panel-bom.component\";\nimport { UserService } from \"./../../services/user.service\";\nimport { Album } from \"src/app/models/Album\";\nimport { Lightbox } from \"ngx-lightbox\";\nimport { CutBeamManager } from \"src/app/core/UI/cutBeam.manager\";\n\ndeclare var $: any;\n\n@Component({\n templateUrl: \"./home.component.html\",\n styleUrls: [\"./home.component.scss\"],\n})\nexport class HomeComponent {\n @ViewChild(\"rendererCanvas\", { static: true })\n public rendererCanvas: ElementRef;\n @ViewChild(\"viewerContainer\", { static: true })\n public viewerContainer: ElementRef;\n @ViewChild(\"sldEaveWidth\", { static: true })\n public sldEaveWidth: SliderInputComponent;\n @ViewChild(\"sldEaveHeight\", { static: true })\n public sldExistingWallHeight: SliderInputComponent;\n @ViewChild(\"sldFasciaDepth\", { static: true })\n public sldFasciaDepth: SliderInputComponent;\n\n @ViewChild(\"sldBaySize\", { static: true })\n public sldBaySize: SliderInputComponent;\n @ViewChild(\"sldSpan\", { static: true }) public sldSpan: SliderInputComponent;\n\n @ViewChild(\"sldExistingLength\", { static: true })\n public sldExistingLength: SliderInputComponent;\n @ViewChild(\"sldExistingLength2\", { static: true })\n public sldExistingLength2: SliderInputComponent;\n\n @ViewChild(\"sldExistingWidth1\", { static: true })\n public sldExistingWidth1: SliderInputComponent;\n @ViewChild(\"sldExistingWidth2\", { static: true })\n public sldExistingWidth2: SliderInputComponent;\n\n @ViewChild(\"sltExistingType\", { static: true })\n public sltExistingType: DropDownInputComponent;\n @ViewChild(\"sltStructureType\", { static: true })\n public sltStructureType: DropDownInputComponent;\n @ViewChild(\"sltWindClass\", { static: true })\n public sltWindClass: DropDownInputComponent;\n @ViewChild(\"sltWallType\", { static: true })\n public sltWallType: DropDownInputComponent;\n @ViewChild(\"sltExistingRoofType\", { static: true })\n public sltExistingRoofType: DropDownInputComponent;\n\n @ViewChild(\"sldMultiSpan\", { static: true })\n public sldMultiSpan: SliderInputComponent;\n @ViewChild(\"sldBuildingHeight\", { static: true })\n public sldBuildingHeight: SliderInputComponent;\n @ViewChild(\"sldFrontOverhang\", { static: true })\n public sldFrontOverhang: SliderInputComponent;\n @ViewChild(\"sldBackOverhang\", { static: true })\n public sldBackOverhang: SliderInputComponent;\n @ViewChild(\"sldLeftOverhang\", { static: true })\n public sldLeftOverhang: SliderInputComponent;\n @ViewChild(\"sldRightOverhang\", { static: true })\n public sldRightOverhang: SliderInputComponent;\n @ViewChild(\"sltRoofPitch\", { static: true })\n public sltRoofPitch: DropDownInputCustomComponent;\n @ViewChild(\"sldFlyOverBracketHeight\", { static: true })\n public sldFlyOverBracketHeight: SliderInputComponent;\n @ViewChild(\"sldNoOfBay\", { static: true })\n public sldNoOfBay: SliderInputComponent;\n @ViewChild(\"dialogEditBay\", { static: true })\n public dialogEditBay: DialogEditBayComponent;\n\n @ViewChild(\"sltPitch\", { static: true })\n public sltExistingRoofPitch: DropDownInputComponent;\n @ViewChild(\"sldRoofOverallLength\", { static: true })\n public sldRoofOverallLength: SliderInputComponent;\n @ViewChild(\"sldRoofOverallWidth\", { static: true })\n public sldRoofOverallWidth: SliderInputComponent;\n @ViewChild(\"sldMinHeight\", { static: true })\n public sldMinHeight: SliderInputComponent;\n @ViewChild(\"sltFlatBottom\", { static: true })\n public sltFlatBottom: DropDownInputComponent;\n @ViewChild(\"sltZFlashingType\", { static: true })\n public sltZFlashingType: DropDownInputComponent;\n // -----------------------\n @ViewChild(\"sltLeftCutType\", { static: true })\n public sltLeftCutType: DropDownInputComponent;\n @ViewChild(\"sltRightCutType\", { static: true })\n public sltRightCutType: DropDownInputComponent;\n @ViewChild(\"sldLeftCutVertical\", { static: true })\n public sldLeftCutVertical: SliderInputComponent;\n @ViewChild(\"sldLeftCutHorizontal\", { static: true })\n public sldLeftCutHorizontal: SliderInputComponent;\n @ViewChild(\"sldRightCutVertical\", { static: true })\n public sldRightCutVertical: SliderInputComponent;\n @ViewChild(\"sldRightCutHorizontal\", { static: true })\n public sldRightCutHorizontal: SliderInputComponent;\n // -----------------------\n @ViewChild(\"sltRoofSheetingType\", { static: true })\n public sltRoofSheetingType: DropDownInputComponent;\n @ViewChild(\"sltBaseFixingType\", { static: true })\n public sltBaseFixingType: DropDownInputComponent;\n @ViewChild(\"sltRoofThickness\", { static: true })\n public sltRoofThickness: DropDownInputComponent;\n @ViewChild(\"sltBargeType\", { static: true })\n public sltBargeType: DropDownInputComponent;\n\n @ViewChild(\"sltDownpipeType\", { static: true })\n public sltDownpipeType: DropDownInputComponent;\n @ViewChild(\"sltGutterType\", { static: true })\n public sltGutterType: DropDownInputComponent;\n @ViewChild(\"sltBeamType\", { static: true })\n public sltBeamType: DropDownInputComponent;\n @ViewChild(\"sltBeamSize\", { static: true })\n public sltBeamSize: DropDownInputComponent;\n @ViewChild(\"sltHouseBeamSize\", { static: true })\n public sltHouseBeamSize: DropDownInputComponent;\n @ViewChild(\"sltReceiverType\", { static: true })\n public sltReceiverType: DropDownInputComponent;\n @ViewChild(\"sltColumnType\", { static: true })\n public sltColumnType: DropDownInputComponent;\n\n @ViewChild(\"sltColourRoof\", { static: true })\n public sltColourRoof: DropDownInputComponent;\n @ViewChild(\"sltColourBarge\", { static: true })\n public sltColourBarge: DropDownInputComponent;\n @ViewChild(\"sltColourGutter\", { static: true })\n public sltColourGutter: DropDownInputComponent;\n @ViewChild(\"sltColourZFlashing\", { static: true })\n public sltColourZFlashing: DropDownInputComponent;\n @ViewChild(\"sltColourPost\", { static: true })\n public sltColourPost: DropDownInputComponent;\n @ViewChild(\"sltColourBeam\", { static: true })\n public sltColourBeam: DropDownInputComponent;\n @ViewChild(\"sltColourBracket\", { static: true })\n public sltColourBracket: DropDownInputComponent;\n @ViewChild(\"sltColourFasciaBracket\", { static: true })\n public sltColourFasciaBracket: DropDownInputComponent;\n @ViewChild(\"sltColourDownpipe\", { static: true })\n public sltColourDownpipe: DropDownInputComponent;\n\n @ViewChild(\"sltCutOut\", { static: true })\n public sltCutOut: DropDownInputComponent;\n @ViewChild(\"sltBeamLayoutShow\", { static: true })\n public sltBeamLayoutShow: CheckboxInputComponent;\n\n @ViewChild(\"sltPanelDirection\", { static: true })\n public sltPanelDirection: SwitchInputComponent;\n @ViewChild(\"sltPanelDirectionShow\", { static: true })\n public sltPanelDirectionShow: CheckboxInputComponent;\n @ViewChild(\"sltDripBarge\", { static: true })\n public sltDripBarge: CheckboxInputComponent;\n @ViewChild(\"sltFasciaUpstandBrackets\", { static: true })\n public sltFasciaUpstandBrackets: DropDownInputComponent;\n @ViewChild(\"sltUpFasciaUpstandBracket\", { static: true })\n public sltUpFasciaUpstandBracket: CheckboxInputComponent;\n @ViewChild(\"chkRapidSetCement\", { static: true })\n public chkRapidSetCement: CheckboxInputComponent;\n @ViewChild(\"chkHasHouseBeam\", { static: true })\n public chkHasHouseBeam: CheckboxInputComponent;\n\n @ViewChild(\"dialogRakeCut\", { static: true })\n dialogRakeCut: DialogRakeCutComponent;\n @ViewChild(\"dialogDimension\", { static: true })\n dialogDimension: DialogDimensionComponent;\n @ViewChild(\"dialogComfirm\", { static: true })\n dialogComfirm: DialogConfirmComponent;\n @ViewChild(\"dialogAddCost\", { static: true })\n dialogAddCost: DialogAddCostComponent;\n @ViewChild(\"dialogBOM\", { static: true }) dialogBOM: DialogBOMComponent;\n @ViewChild(\"panelBOM\", { static: true }) panelBOM: PanelBOMComponent;\n\n @ViewChild(\"btnTurnOffRakeCutLeft\", { static: true })\n btnTurnOffRakeCutLeft: ToggleButtonComponent;\n @ViewChild(\"btnTurnOffRakeCutRight\", { static: true })\n btnTurnOffRakeCutRight: ToggleButtonComponent;\n @ViewChild(\"btnTurnOffCutout\", { static: true })\n btnTurnOffCutout: ToggleButtonComponent;\n @ViewChild(\"btnTurnOnPanel\", { static: true })\n btnTurnOnPanel: ToggleButtonComponent;\n @ViewChild(\"btnEnableControl\", { static: true })\n btnEnableControl: ToggleButtonComponent;\n\n static ins: HomeComponent;\n\n public objects: Objects;\n public env = CONFIG;\n\n public utils: Util;\n\n public scene: THREE.Scene;\n public canvas: HTMLCanvasElement;\n public renderer: THREE.WebGLRenderer;\n public camera: THREE.PerspectiveCamera;\n public control: OrbitControls;\n // private control: TrackballControls;\n\n private frameId: number = null;\n\n public loadCompleted = false;\n\n public geometryManager: GeometryManager;\n private materialManager: MaterialManager;\n public eaveManager: EaveManager;\n public existingWallManager: ExistingWallManager;\n public fasciaManager: FasciaManager;\n public existingRoofManager: ExistingRoofManager;\n public uiManager: UIManager;\n public printingManager: Printing2DManager;\n\n public patiosManager: PatiosManager;\n\n // public flyOverManager: PatiosFlyOverManager;\n // public backFlyOverManager: PatiosBackFlyOverManager;\n // private freeStandingManager: PatiosFreeStandingManager;\n // private existingBuildingManager: ExistingBuildingManager;\n // private toFasciaManager: ToFasciaManager;\n\n // private columnAndPurlinManager: ColumnAndPurlinManager;\n // private roofManager: RoofManager;\n public groundManager: GroundManager;\n public dimensionManager: DimensionManager;\n\n public resizeEventHandle: any;\n\n public oldOverhangBack: number = 0;\n public sldExistingWidth2Visible = true;\n public sldExistingLength2Visible = true;\n currentUser: User;\n public isVisible = false;\n isVisibleMoreInfo: boolean = false;\n isVisibleOpenModal = false;\n isVisibleOpenModalRibspan = false;\n isVisibleProperty = !environment.production;\n isVisibleDiscount = false;\n isSaveAs = 0; // 0: none, 1: Copy, 2: Revised\n public addCostInstallDes = \"\";\n public isUploading = false;\n costList: ICost[] = [];\n dataOPEN: any;\n jobNoSearch = \"\";\n cusNameSearch = \"\";\n isSearching = false;\n isOpening = false;\n isPricing = false;\n isError = false;\n isAdmin = false;\n statusError = \"\";\n public statusText = STATUS_TEXT.NEW;\n maxSpan = 0;\n maxSpanText = \"\";\n public maxThickness = \"\";\n maxBaySizeText = \"\";\n maxBaySize = 0;\n maxBeamSizeText = \"\";\n beamSizeList = [];\n houseBeamSizeList = [];\n thicknessList = [];\n baseFixingTypeList = [];\n columnTypeList = [];\n public oldBuildingInfo = null;\n currentStep = 0;\n currentStepNew = 0;\n newOpenType = 0;\n existingHouseType = -1;\n roofPercent: string = \"\";\n version: string = APP_VERSION;\n releaseDate: string = RELEASE_DATE;\n rightToLeft: boolean = false;\n public flyoverBracketNumber: 3;\n public flyoverBracketNumberCutOut: 3;\n public fasciaBracketNumber: 3;\n public fasciaBracketNumberCutOut: 3;\n public currentBuildingInfo = null;\n public currentQuoteInfo = null;\n public roofHeight: number = 0;\n public upFasciaBracketList = null;\n public _patiosRoofType = PATIOS_ROOF_TYPE.FLAT_ROOF;\n public _isFBRoof: boolean = false;\n private _albums: Array = [];\n public panelType = PANEL_TYPE.INSULATED;\n\n set patiosRoofType(value: string) {\n let oldVal = this._patiosRoofType;\n this._patiosRoofType = value;\n if (oldVal != this._patiosRoofType) {\n this.uiManager.onStructureTypeChanged(\n null,\n this.sltStructureType.currentValue\n );\n this.uiManager.setBeamSize();\n this.uiManager.setMaxSpan();\n this.uiManager.validateCutout();\n }\n }\n get patiosRoofType(): string {\n return this._patiosRoofType;\n }\n\n set isFBRoof(value: boolean) {\n if (value != this._isFBRoof) {\n this._isFBRoof = value;\n this.uiManager.setBeamSize();\n this.uiManager.setMaxSpan();\n\n this.uiManager.onStructureTypeChanged(\n null,\n this.sltStructureType.currentValue\n );\n }\n }\n get isFBRoof(): boolean {\n return this._isFBRoof;\n }\n\n public get patiosBoundingBox(): Box3 {\n let boxHelper = new BoxHelper(this.patiosManager.patiosGroup);\n return boxHelper.geometry.boundingBox;\n }\n\n public APP_CONFIG = {\n activeLeftMenu: ACTIVE_LEFT_MENU,\n };\n\n public constructor(\n private ngZone: NgZone,\n public printService: PrintingService,\n private router: Router,\n private authenticationService: AuthenticationService,\n public message: NzMessageService,\n private jobService: JobService,\n private userService: UserService,\n private uiRakecutMgr: UIRakecutManager,\n public selectionMgr: SelectionManager,\n // public uiRakecutLeft: WidthManager\n public uiEditWall: EditWallManager,\n public uiEditLength2: EditLength2Manager,\n public uiEditWidth2: EditWidth2Manager,\n public uiCutout: CutOutManager,\n public uiCutBeam: CutBeamManager,\n private _lightbox: Lightbox\n ) {\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.geometryManager.init(this);\n this.materialManager = MaterialManager.Instance();\n this.eaveManager = new EaveManager();\n this.existingWallManager = new ExistingWallManager();\n this.fasciaManager = new FasciaManager();\n this.existingRoofManager = new ExistingRoofManager();\n this.objects = new Objects();\n this.groundManager = new GroundManager();\n this.dimensionManager = DimensionManager.Instance();\n this.printingManager = new Printing2DManager(this);\n this.authenticationService.currentUser.subscribe(\n (x) => (this.currentUser = x)\n );\n this.upFasciaBracketList = this.objects.fasciaBracketList.filter(\n (el) => el.id != 0\n );\n\n this.resizeEventHandle = this.resize.bind(this);\n\n window[\"APP\"] = this;\n\n console.log(`App version: ${APP_VERSION}`);\n console.log(`Release date: ${RELEASE_DATE}`);\n\n HomeComponent.ins = this;\n }\n logout() {\n this.authenticationService.logout();\n this.router.navigate([\"/login\"]);\n }\n public ngOnInit(): void {\n if (!this.currentUser || !this.currentUser.user) {\n this.authenticationService.logout();\n this.router.navigate([\"/login\"]);\n return;\n }\n this.initObject();\n }\n public ngAfterViewInit(): void {\n $(\".ui.accordion\").accordion();\n this.init3D().then(() => {\n this.uiManager = new UIManager(this);\n // this.sldBaySize.addAction(this.onBaySizeChanged.bind(this));\n\n this.uiRakecutMgr.init();\n\n this.geometryManager\n .loadAll()\n .then(() => {\n return Promise.all([\n this.eaveManager.init(this),\n this.existingWallManager.init(this),\n this.fasciaManager.init(this),\n this.existingRoofManager.init(this),\n this.groundManager.init(this),\n this.dimensionManager.init(this),\n this.materialManager.init(this),\n this.selectionMgr.init(),\n // this.uiRakecutLeft.init()\n this.uiEditWall.init(),\n this.uiEditLength2.init(),\n this.uiEditWidth2.init(),\n this.uiCutout.init(),\n this.uiCutBeam.init(),\n ]);\n })\n .then(() => {\n return Promise.all([\n this.existingWallManager.optimize(),\n this.eaveManager.optimize(),\n this.fasciaManager.optimize(),\n this.existingRoofManager.optimize(),\n this.groundManager.optimize(),\n this.dimensionManager.optimize(),\n ]);\n })\n .then(() => {\n return Promise.all([\n this.existingWallManager.load(),\n this.eaveManager.load(),\n this.fasciaManager.load(),\n this.existingRoofManager.load(),\n this.selectionMgr.enable(),\n // this.dimensionManager.load(),\n // this.uiRakecutLeft.load()\n this.uiEditWall.load(),\n this.uiEditLength2.load(),\n this.uiEditWidth2.load(),\n this.uiCutout.load(),\n this.uiCutBeam.load(),\n ]);\n })\n .then(() => {\n // Init for Test\n this.sltExistingType.setSelected(INIT.EXISTING_TYPE);\n this.sltRoofPitch.setSelected(CONFIG.patiosPitch.default);\n //this.sltStructureType.setSelected(INIT.CONNECTION_TYPE);\n\n this.uiManager.load();\n this.renderStatic();\n this.newOpenType = 0;\n\n this.loadCompleted = true;\n if (environment.production) {\n // if (this.isAdmin || this.currentUser.user.isTryRibSpanVer) {\n // this.isVisibleOpenModalRibspan = true;\n // } else {\n // this.isVisibleOpenModal = true;\n // }\n this.isVisibleOpenModalRibspan = true;\n }\n });\n // this.test();\n });\n }\n\n public ngOnDestroy() {\n if (this.frameId != null) {\n cancelAnimationFrame(this.frameId);\n }\n }\n\n private init3D(): Promise {\n // The first step is to get the reference of the canvas element from our HTML document\n this.canvas = this.rendererCanvas.nativeElement;\n\n this.canvas.width = this.viewerContainer.nativeElement.clientWidth;\n this.canvas.height = this.viewerContainer.nativeElement.clientHeight;\n\n this.renderer = new WebGLRenderer({\n canvas: this.canvas,\n // alpha: true, // transparent background\n antialias: true, // smooth edges\n preserveDrawingBuffer: true,\n });\n this.renderer.setSize(this.canvas.width, this.canvas.height);\n this.renderer.localClippingEnabled = true;\n // this.renderer.gammaOutput = true;\n // this.renderer.setClearColor( 0x000000 );\n // this.renderer.setPixelRatio( window.devicePixelRatio );\n // this.renderer.shadowMap.enabled = true;\n\n // create the scene\n this.scene = new Scene();\n this.scene.background = new Color(0xcce0ff);\n // this.scene.fog = new THREE.Fog(0xcce0ff, 500, 10000);\n\n // Camera\n this.camera = new PerspectiveCamera(\n 75,\n this.canvas.width / this.canvas.height,\n 100,\n 100000\n );\n this.camera.position.set(0, 1000, 12967);\n // this.camera.position.set(91.02454523941192, 18.45966896006735, 5.692036175338248);\n this.scene.add(this.camera);\n\n this.addShadowedLight(0, 0, 10000, 0xffffff, 0.7);\n this.addShadowedLight(0, 0, -10000, 0xffffff, 0.7);\n this.addShadowedLight(0, 10000, 0, 0xffffff, 0.7);\n this.addShadowedLight(0, -10000, 0, 0xffffff, 0.7);\n this.addShadowedLight(10000, 0, 0, 0xffffff, 0.7);\n this.addShadowedLight(-10000, 0, 0, 0xffffff, 0.7);\n\n // control\n // this.control = new TrackballControls(this.camera, this.renderer.domElement);\n this.control = new OrbitControls(this.camera, this.renderer.domElement);\n // this.control.enableDamping = true; // an animation loop is required when either damping or auto-rotation are enabled\n // this.control.dampingFactor = 0.05;\n // this.control.screenSpacePanning = false;\n //this.control.minDistance = 100;\n this.control.maxDistance = 50000; // max zoom\n this.control.maxPolarAngle = this.utils.degreesToRadians(90);\n\n window[\"scene\"] = this.scene;\n window[\"camera\"] = this.camera;\n\n this.animate();\n return Promise.resolve();\n }\n\n public showEditBay() {\n this.dialogEditBay.show(true);\n }\n\n private addShadowedLight(x, y, z, color, intensity): void {\n const directionalLight = new DirectionalLight(color, intensity);\n directionalLight.position.set(x, y, z);\n this.scene.add(directionalLight);\n }\n private animate(): void {\n // We have to run this outside angular zones,\n // because it could trigger heavy changeDetection cycles.\n this.ngZone.runOutsideAngular(() => {\n if (document.readyState !== \"loading\") {\n this.render();\n } else {\n window.addEventListener(\"DOMContentLoaded\", () => {\n this.render();\n });\n }\n\n window.addEventListener(\"resize\", this.resizeEventHandle);\n\n this.control.addEventListener(\"change\", this.renderStatic.bind(this));\n });\n }\n private render(): void {\n // this.frameId = requestAnimationFrame(() => {\n // this.render();\n // });\n // //this.control.update();\n // this.renderer.render(this.scene, this.camera);\n }\n public renderStatic() {\n this.renderer.render(this.scene, this.camera);\n }\n private resize(): void {\n const width = this.viewerContainer.nativeElement.clientWidth;\n const height = this.viewerContainer.nativeElement.clientHeight;\n\n this.canvas.width = width;\n this.canvas.height = height;\n\n this.camera.aspect = width / height;\n this.camera.updateProjectionMatrix();\n\n this.renderer.setSize(width, height);\n\n this.renderStatic();\n }\n round(number, precision = 0) {\n return _.round(number, precision);\n }\n public calcQuoteInfo(): Promise {\n return Promise.resolve().then(() => {\n const _quoteInfo = { ...this.currentQuoteInfo.quoteInfo };\n let _gst = 0;\n let _totalPrice = 0;\n if (this.currentQuoteInfo.clientInfo.supplyType === \"supply_only\") {\n _gst = this.round(\n ((_quoteInfo.nett +\n _quoteInfo.addCostInstall +\n _quoteInfo.supplyOnlyKits) *\n 10) /\n 100,\n 2\n );\n _totalPrice = this.round(\n _quoteInfo.nett +\n _quoteInfo.addCostInstall +\n _quoteInfo.supplyOnlyKits +\n _gst,\n 100\n );\n } else {\n _gst = this.round(\n ((_quoteInfo.nett +\n _quoteInfo.addCostInstall +\n _quoteInfo.fasciaInstall +\n _quoteInfo.flyOverInstall +\n _quoteInfo.installMaterial +\n _quoteInfo.perPostInstall +\n _quoteInfo.addCost) *\n 10) /\n 100,\n 2\n );\n _totalPrice = this.round(\n _quoteInfo.nett +\n _quoteInfo.addCostInstall +\n _quoteInfo.fasciaInstall +\n _quoteInfo.flyOverInstall +\n _quoteInfo.installMaterial +\n _quoteInfo.perPostInstall +\n _quoteInfo.addCost +\n _gst,\n 2\n );\n }\n const _info = {\n ...this.currentQuoteInfo.quoteInfo,\n gst: _gst,\n totalPrice: _totalPrice,\n total0: _totalPrice,\n };\n this.jobService\n .calcQuoteInfo(_info)\n .pipe(first())\n .subscribe(\n (data) => {\n if (data.statusCode === 200) {\n this.currentQuoteInfo.quoteInfo = data.data;\n } else {\n this.message.error(data.message);\n }\n },\n (error) => {\n this.message.error(error);\n this.isUploading = false;\n }\n );\n });\n // return Promise.resolve();\n }\n\n calcPayment(): void {\n /** wait for refresh value */\n const _values = { ...this.currentQuoteInfo.quoteInfo };\n let _totalPriceTmp = 0;\n let _discount = _values.discount;\n let _deposit = this.currentQuoteInfo.quoteInfo.deposit;\n let _stage1 = this.currentQuoteInfo.quoteInfo.stage1;\n let _stage2 = this.currentQuoteInfo.quoteInfo.stage2;\n let _finalPayment = 0;\n _totalPriceTmp = this.currentQuoteInfo.quoteInfo.total0;\n\n if (_values.discountPer > 0) {\n _discount = this.round((_totalPriceTmp * _values.discountPer) / 100, 2);\n }\n _totalPriceTmp -= _discount;\n if (_values.depositPer > 0) {\n _deposit = this.round((_totalPriceTmp * _values.depositPer) / 100, 2);\n } else {\n _deposit = 0;\n }\n if (_values.stage1Per > 0) {\n _stage1 = this.round((_totalPriceTmp * _values.stage1Per) / 100, 2);\n } else {\n _stage1 = 0;\n }\n if (_values.stage2Per > 0) {\n _stage2 = this.round((_totalPriceTmp * _values.stage2Per) / 100, 2);\n } else {\n _stage2 = 0;\n }\n _finalPayment = this.round(\n _totalPriceTmp - _deposit - _stage1 - _stage2,\n 2\n );\n if (_finalPayment < 0) {\n _finalPayment = 0;\n }\n // --------------\n if (\n _values.depositPer + _values.stage1Per + _values.stage2Per === 100 &&\n _finalPayment > 0\n ) {\n _stage1 = this.round(_stage1 + _finalPayment, 2);\n _finalPayment = 0;\n }\n // --------------\n if (\n this.round(_deposit + _stage1 + _stage2 + _finalPayment, 2) >\n _totalPriceTmp\n ) {\n _stage1 -=\n this.round(_deposit + _stage1 + _stage2 + _finalPayment, 2) -\n _totalPriceTmp;\n }\n //\n this.currentQuoteInfo.quoteInfo = {\n ...this.currentQuoteInfo.quoteInfo,\n totalPrice: _totalPriceTmp,\n discount: _discount,\n deposit: _deposit,\n stage1: _stage1,\n stage2: _stage2,\n finalPayment: _finalPayment,\n discountPer: _values.discountPer,\n depositPer: _values.depositPer,\n stage1Per: _values.stage1Per,\n stage2Per: _values.stage2Per,\n addCostInstall: _values.addCostInstall,\n };\n }\n getRoofPercent(value) {\n return new Promise((resolve) => {\n const _count = Math.ceil(value / 762);\n const _ret = `${this.round((value * 100) / (_count * 762), 2)}% (${\n _count * 762\n })`;\n resolve(_ret);\n }).then((value) => (this.roofPercent = value));\n }\n public onSetMaxValue(): void {\n let _maxSpan = Math.max(\n this.sldSpan.currentValue,\n this.sldMultiSpan.currentValue\n );\n\n let _maxBay =\n this.dialogEditBay.listBay.length > 0\n ? _.maxBy(this.dialogEditBay.listBay, \"value\").value\n : 0;\n if (this.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF) {\n _maxSpan = this.isFBRoof ? _maxBay : _maxSpan / 2;\n }\n this.sldFrontOverhang.setMax(this.round(_maxSpan / 4));\n this.sldBackOverhang.setMax(this.round(_maxSpan / 4));\n if (this.dialogEditBay.listBay.length > 0) {\n if (this.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF) {\n _maxBay = this.isFBRoof ? this.sldSpan.currentValue / 2 : _maxBay;\n this.sldLeftOverhang.setMax(this.round(_maxBay / 4));\n this.sldRightOverhang.setMax(this.round(_maxBay / 4));\n } else {\n const _fasciaUpstand = this.sltFasciaUpstandBrackets.currentValue;\n if (_fasciaUpstand != 0) {\n const _beamType = this.sltBeamType.currentValue;\n const _beamSize = this.sltBeamSize.currentText;\n const _size =\n _beamType == 1\n ? _beamSize.substring(0, 3)\n : _beamSize.substring(2, 5);\n let _sizeInt = parseInt(_size);\n if (_sizeInt) {\n let _maxValue = 1200;\n if (_sizeInt >= 210) _maxValue = 1500;\n else if (_sizeInt <= 110) _maxValue = 900;\n this.sldLeftOverhang.setMax(_maxValue);\n this.sldRightOverhang.setMax(_maxValue);\n }\n } else {\n this.sldLeftOverhang.setMax(this.round(_maxBay / 4));\n this.sldRightOverhang.setMax(this.round(_maxBay / 4));\n }\n }\n }\n }\n public onCalcPrice(): Promise {\n if (!this.currentBuildingInfo.isOpen) {\n this.isPricing = true;\n this.currentBuildingInfo.quoteInfo.totalPrice = 0;\n }\n\n const _info = {\n ...this.currentBuildingInfo,\n buildingInfo: this.bindBuildingInfo(),\n clientInfo: this.currentQuoteInfo.clientInfo,\n quoteInfo: this.currentQuoteInfo.quoteInfo,\n };\n if (!environment.production) {\n this.patiosManager.loadBracket(2);\n this.patiosManager.loadBracketCutout(2);\n return Promise.resolve();\n }\n if (\n (_info.buildingInfo.listPosts.length === 0 &&\n _info.buildingInfo.existingType.value !== 3) ||\n this.currentBuildingInfo.isOpen\n ) {\n return Promise.resolve();\n }\n const _structureType = _info.buildingInfo.structureType.value;\n if (_structureType === 0 || _structureType === 3) {\n if (\n _info.buildingInfo.existingLength +\n _info.buildingInfo.existingLength2 *\n (_info.buildingInfo.existingType.value === 3 ? 2 : 1) <\n _info.buildingInfo.roofOverallLength\n ) {\n this.isError = true;\n this.statusError =\n \"The Patios length greater than existing building. Please check existing building length.\";\n return Promise.resolve();\n }\n }\n\n if (_info.buildingInfo.minHeight < 1900) {\n this.isError = true;\n this.statusError =\n \"Min. Height Under Beam must be greater than or equal to 1900mm.\";\n return Promise.resolve();\n }\n if (_info.buildingInfo.columnType.value < 0) {\n this.isError = true;\n this.statusError = `Patios Height is over ${\n _info.buildingInfo.structureType.value === 4 ? \"3600mm\" : \"4000mm\"\n }.`;\n return Promise.resolve();\n }\n if (\n _info.buildingInfo.roofSheetingType.value === 2 &&\n _info.buildingInfo.roofPitch < 5\n ) {\n this.isError = true;\n this.statusError = `${_info.buildingInfo.roofSheetingType.text} must be greater than or equal to 5 degrees pitch`;\n return Promise.resolve();\n }\n\n if (\n this.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF &&\n UI.span > this.maxSpan\n ) {\n this.isError = true;\n this.statusError = `Span must be less than max span!`;\n return Promise.resolve();\n }\n\n if (\n this.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF &&\n UI.structureType == CONNECTION_TYPE.EXISTING &&\n UI.height + (UI.span / 2) * this.utils.tan(UI.patiosPitch) >\n UI.existingWallHeight\n ) {\n this.isError = true;\n this.statusError = `Roof top must be lower eave height!`;\n return Promise.resolve();\n }\n\n if (this.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF) {\n const findP2 = _info.buildingInfo.userData.centerPost.filter(\n (f) => f.length < 0.15\n );\n\n if (findP2.length > 0) {\n this.isError = true;\n this.statusError = `Length of P2 is too short, please increase the roof fall`;\n return Promise.resolve();\n }\n }\n\n this.jobService\n .calcBOMByPara(_info)\n .pipe(first())\n .subscribe(\n (data) => {\n const maxInfo = { ...data.data.maxInfo };\n if (data.statusCode === 200) {\n this.currentBuildingInfo.quoteInfo = { ...data.data.quoteInfo };\n this.currentBuildingInfo.BOMInfo = [...data.data.BOMInfo];\n this.currentBuildingInfo.additionalBOM = [\n ...data.data.additionalBOM,\n ];\n this.currentQuoteInfo.quoteInfo = { ...data.data.quoteInfo };\n this.isError = false;\n this.statusError = \"\";\n } else {\n if (data.data.error) {\n this.message.error(data.data.error);\n this.isError = true;\n this.statusError = data.data.error;\n // console.log('onCalcPrice :', data.data.error);\n } else {\n this.message.error(maxInfo.error);\n this.isError = true;\n this.statusError = maxInfo.error;\n // console.log('onCalcPrice :', _maxInfo.error);\n }\n }\n if (this.patiosRoofType === PATIOS_ROOF_TYPE.FLAT_ROOF) {\n let _isChanged = false;\n if (maxInfo.beamSize.value === 0) {\n this.beamSizeList = this.objects.beamSizeList.filter(\n (f) => f.id == 0 && f.beamType == this.sltBeamType.currentValue\n );\n this.sltBeamSize.setSelected(0);\n _isChanged = true;\n } else {\n this.beamSizeList = this.objects.beamSizeList.filter(\n (f) =>\n f.id >= maxInfo.minBeamSize.value &&\n f.beamType == this.sltBeamType.currentValue\n );\n if (this.sltBeamSize.currentValue < maxInfo.beamSize.value) {\n this.sltBeamSize.setSelected(maxInfo.beamSize.value);\n _isChanged = true;\n }\n }\n //House beam\n if (this.chkHasHouseBeam.currentValue) {\n if (maxInfo.houseBeamSize.value === 0) {\n this.houseBeamSizeList = this.objects.beamSizeList.filter(\n (f) =>\n f.id == 0 && f.beamType == this.sltBeamType.currentValue\n );\n this.sltBeamSize.setSelected(0);\n _isChanged = true;\n } else {\n this.houseBeamSizeList = this.objects.beamSizeList.filter(\n (f) =>\n f.id >= maxInfo.minHouseBeamSize.value &&\n f.beamType == this.sltBeamType.currentValue\n );\n if (\n this.sltHouseBeamSize.currentValue <\n maxInfo.houseBeamSize.value\n ) {\n this.sltHouseBeamSize.setSelected(\n maxInfo.houseBeamSize.value\n );\n _isChanged = true;\n }\n }\n } else {\n this.houseBeamSizeList = this.beamSizeList;\n this.sltHouseBeamSize.setSelected(this.sltBeamSize.currentValue);\n }\n\n if (_isChanged) {\n setTimeout(() => {\n this.patiosManager.load();\n }, 700);\n }\n }\n if (maxInfo.thickness.value === 0) {\n this.thicknessList = this.objects.thicknessList.filter(\n (f) => f.id == 0\n );\n this.sltRoofThickness.setSelectedAndHandleEvent(0);\n } else {\n this.thicknessList = this.objects.thicknessList.filter(\n (f) => f.id >= maxInfo.minThickness.value\n );\n if (this.sltRoofThickness.currentValue < maxInfo.thickness.value) {\n this.sltRoofThickness.setSelectedAndHandleEvent(\n maxInfo.thickness.value\n );\n }\n }\n if (this.patiosRoofType === PATIOS_ROOF_TYPE.FLAT_ROOF) {\n this.maxSpan = maxInfo.maxSpan;\n this.maxSpanText = maxInfo.maxSpanText;\n this.maxBaySize = maxInfo.maxBaySize;\n this.maxBaySizeText = maxInfo.maxBaySizeText;\n }\n this.maxThickness = maxInfo.maxThickness;\n this.maxBeamSizeText = maxInfo.maxBeamSizeText;\n this.flyoverBracketNumber = maxInfo.flyoverBracketNumber;\n this.flyoverBracketNumberCutOut = maxInfo.flyoverBracketNumberCutOut;\n this.fasciaBracketNumber = maxInfo.fasciaBracketNumber;\n this.fasciaBracketNumberCutOut = maxInfo.fasciaBracketNumberCutOut;\n\n if ([3, 5, 6].includes(UI.structureType)) {\n if (\n HomeComponent.ins.patiosRoofType ===\n PATIOS_ROOF_TYPE.GABLE_ROOF &&\n HomeComponent.ins.isFBRoof\n ) {\n // Phan nay ve braket cua mai gable phia sau\n // this.patiosManager.loadBracket(this.fasciaBracketNumberCutOut);\n this.patiosManager.loadBracket(UI.span >= 4000 ? 3 : 2);\n\n // Phan nay ve braket cua mai cutout\n this.patiosManager.loadBracketCutout(\n this.fasciaBracketNumberCutOut\n );\n\n // Load braket mai chiu luc\n this.patiosManager.loadSideGableBracket(this.fasciaBracketNumber);\n } else {\n this.patiosManager.loadBracket(this.fasciaBracketNumber);\n this.patiosManager.loadBracketCutout(\n this.fasciaBracketNumberCutOut\n );\n }\n } else {\n if (\n HomeComponent.ins.patiosRoofType ===\n PATIOS_ROOF_TYPE.GABLE_ROOF &&\n HomeComponent.ins.isFBRoof\n ) {\n // Phan nay ve braket cua mai gable phia sau\n // this.patiosManager.loadBracket(this.flyoverBracketNumber);\n this.patiosManager.loadBracket(UI.span >= 4000 ? 3 : 2);\n\n // Phan nay ve braket cua mai cutout\n this.patiosManager.loadBracketCutout(\n this.flyoverBracketNumberCutOut\n );\n\n // Load braket mai chiu luc\n this.patiosManager.loadSideGableBracket(\n this.flyoverBracketNumber\n );\n } else {\n this.patiosManager.loadBracket(this.flyoverBracketNumber);\n this.patiosManager.loadBracketCutout(\n this.flyoverBracketNumberCutOut\n );\n }\n }\n this.isPricing = false;\n },\n (error) => {\n this.message.error(error);\n this.isError = true;\n this.statusError = error;\n this.isUploading = false;\n }\n );\n return Promise.resolve();\n }\n public onSupplyTypeChange(): Promise {\n const _info = {\n ...this.currentBuildingInfo,\n buildingInfo: this.bindBuildingInfo(),\n clientInfo: {\n ...this.currentQuoteInfo.clientInfo,\n },\n quoteInfo: this.currentQuoteInfo.quoteInfo,\n };\n if (_info.buildingInfo.listPosts.length === 0) {\n return;\n }\n this.jobService\n .calcBOMByPara(_info)\n .pipe(first())\n .subscribe(\n (data) => {\n if (data.statusCode === 200) {\n this.currentQuoteInfo.quoteInfo = data.data.quoteInfo;\n } else {\n this.message.error(data.message);\n console.log(\"onSupplyTypeChange :\", data.message);\n }\n },\n (error) => {\n this.message.error(error);\n console.log(\"onSupplyTypeChange :\", error);\n this.isUploading = false;\n }\n );\n return Promise.resolve();\n }\n onNewConnectionType(type: number): void {\n if (type == 4) {\n this.isFBRoof = false;\n }\n if (this.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF) {\n this.sltStructureType.setSelected(type);\n\n this.uiManager.onStructureTypeChanged(null, type);\n }\n // if (type < 5) {\n if (type == 4) {\n this.existingHouseType = 0;\n }\n this.initObject();\n if (type === 5 || type == 6) {\n this.currentBuildingInfo.buildingInfo.backFascia = type === 6;\n this.currentBuildingInfo.buildingInfo.fasciaBracketHeight =\n type === 5 || type === 6\n ? this.env.fasciaUpstandBrackets.max\n : this.env.fasciaUpstandBrackets.default;\n } else if (type === 3) {\n this.currentBuildingInfo.buildingInfo.fasciaBracketHeight = 0;\n }\n this.currentBuildingInfo.buildingInfo.structureType.value = type;\n //HACK: Existing Type: Alway minHeight > 1900mm\n if (type === CONNECTION_TYPE.EXISTING) {\n this.currentBuildingInfo.buildingInfo.eaveHeight =\n this.currentBuildingInfo.buildingInfo.buildingHeight +\n EXISTING_BUILDING_CONFIG.BUILDING_HEIGHT_OFFSET;\n }\n this.uiManager.loadFromObject(this.currentBuildingInfo.buildingInfo);\n if (this.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF) {\n this.sltRoofPitch.setSelected(10);\n\n if (this.isFBRoof && UI.structureType == CONNECTION_TYPE.EXISTING) {\n this.sldExistingWallHeight.setValue(4000);\n }\n } else {\n this.sltRoofPitch.setSelected(2);\n }\n this.isVisibleOpenModal = false;\n this.statusText = STATUS_TEXT.NEW;\n this.isSaveAs = 0;\n }\n onNewExistingHouseType(type: number, FBRoof: boolean = false): void {\n let isReload = false;\n if (\n this.isFBRoof !== FBRoof &&\n (type == this.existingHouseType || this.existingHouseType == -1)\n ) {\n isReload = true;\n }\n this.existingHouseType = type;\n this.currentStepNew = 1;\n this.isFBRoof = FBRoof;\n if (isReload) {\n this.uiManager.onStructureTypeChanged(null, type);\n }\n }\n onShowOpenModal(type: number): void {\n this.newOpenType = type === 0 ? 0 : 1;\n this.existingHouseType = -1;\n this.currentStepNew = 0;\n this.isSearching = false;\n this.isOpening = false;\n this.isVisibleOpenModal = true;\n }\n // Save\n onShowSaveModal(): void {\n this.isVisibleDiscount = false;\n this.isVisibleMoreInfo = false;\n // Validation checks\n this.currentBuildingInfo = {\n ...this.currentBuildingInfo,\n buildingInfo: { ...this.bindBuildingInfo() },\n };\n if (this.currentBuildingInfo.isOpen && this.isSaveAs === 0) {\n this.message.error(\n 'This project could not be saved because it is existed project, please \"Save As\" to edit as new project.'\n );\n }\n if (this.isError) {\n this.message.error(this.statusError);\n return;\n }\n this.panelBOM.onRefresh();\n this.isPricing = true;\n this.jobService\n .checkData(this.currentBuildingInfo)\n .pipe(first())\n .subscribe(\n (cb) => {\n if (cb.statusCode === 200) {\n if (cb.data.status) {\n this.currentQuoteInfo = {\n clientInfo: {\n ...this.currentBuildingInfo.clientInfo,\n date:\n this.isSaveAs > 0\n ? new Date()\n : this.currentBuildingInfo.clientInfo.date,\n },\n quoteInfo: { ...this.currentBuildingInfo.quoteInfo },\n };\n this.addCostInstallDes =\n this.currentQuoteInfo.quoteInfo.costList.length > 0\n ? this.currentQuoteInfo.quoteInfo.costList[0].description\n : \"\";\n this.currentStep = 0;\n this.isUploading = false;\n if (!this.currentQuoteInfo.quoteInfo.customText) {\n this.currentQuoteInfo.quoteInfo.customText = cb.data.customText;\n }\n this.currentBuildingInfo.buildingInfo.flyoverBracketNumber =\n cb.data.maxInfo.flyoverBracketNumber;\n this.currentBuildingInfo.buildingInfo.flyoverBracketNumberCutOut =\n cb.data.maxInfo.flyoverBracketNumberCutOut;\n this.currentBuildingInfo.buildingInfo.fasciaBracketNumber =\n cb.data.maxInfo.fasciaBracketNumber;\n this.currentBuildingInfo.buildingInfo.fasciaBracketNumberCutOut =\n cb.data.maxInfo.fasciaBracketNumberCutOut;\n if (\n this.currentBuildingInfo._id === null &&\n this.isSaveAs === 0\n ) {\n this.jobService\n .genJobNo({ userId: this.currentUser.user._id })\n .pipe(first())\n .subscribe(\n (cbJob) => {\n if (cbJob.statusCode === 200) {\n this.isPricing = false;\n this.currentQuoteInfo.clientInfo.jobNo = cbJob.data;\n this.isVisible = true;\n this.isError = false;\n this.statusError = \"\";\n }\n },\n (error) => {\n this.message.error(error);\n this.isError = true;\n this.statusError = error;\n }\n );\n } else {\n this.isPricing = false;\n this.isVisible = true;\n }\n } else {\n this.message.error(cb.data.error);\n this.isError = true;\n this.statusError = cb.data.error;\n // console.log('onShowSaveModal :', cb.data.error);\n }\n } else {\n this.message.error(cb.message);\n this.isError = true;\n this.statusError = cb.message;\n // console.log('onShowSaveModal :', cb.message);\n }\n },\n (error) => {\n this.message.error(error);\n this.isError = true;\n this.statusError = error;\n }\n );\n // End check\n }\n\n onNext(): void {\n if (this.currentQuoteInfo.clientInfo.jobNo === \"\") {\n this.message.warning(\"Please input your Job No.!\");\n return;\n }\n if (this.currentQuoteInfo.clientInfo.cusName === \"\") {\n this.message.warning(\"Please input your Client Name!\");\n return;\n }\n this.currentStep += 1;\n }\n onPre(): void {\n this.currentStep -= 1;\n }\n onNextNew(): void {\n this.currentStepNew = 1;\n }\n onPreNew(): void {\n this.currentStepNew = 0;\n }\n onCustomTextChange(text, type) {\n let info = null;\n if (type === 0) {\n info = { depositText: text };\n } else if (type === 1) {\n info = { stage1Text: text };\n } else {\n info = { stage2Text: text };\n }\n this.userService\n .updateCustomText(this.currentUser.user._id, info)\n .subscribe((rs) => {});\n }\n onSaveAs(type: number): void {\n if (this.currentBuildingInfo._id === null) {\n this.message.warning(\n `You can't [${\n type === 1 ? \"Copy\" : \"Revised\"\n }] because [Job No.] is empty.`\n );\n return;\n }\n this.onQuickSaveAs(type, this.currentBuildingInfo._id);\n }\n onQuickSaveAs(type: number, id: any): void {\n this.isOpening = true;\n this.jobService\n .copyOrRevisedById(id, type)\n .pipe(first())\n .subscribe(\n (data) => {\n if (data.statusCode === 200) {\n this.currentBuildingInfo = { ...data.data.list, _id: null };\n if (!this.currentBuildingInfo.quoteInfo.costList) {\n this.currentBuildingInfo.quoteInfo.costList = [];\n }\n if (!this.currentBuildingInfo.additionalBOM) {\n this.currentBuildingInfo.additionalBOM = [];\n }\n if (\n this.currentBuildingInfo.quoteInfo.costList.length === 0 &&\n this.currentBuildingInfo.quoteInfo.addCostInstall > 0\n ) {\n this.currentBuildingInfo.quoteInfo.costList.push({\n index: 1,\n description: \"\",\n value: this.currentBuildingInfo.quoteInfo.addCostInstall,\n });\n }\n this.currentQuoteInfo = {\n clientInfo: { ...data.data.list.clientInfo },\n quoteInfo: { ...data.data.list.quoteInfo },\n };\n this.currentQuoteInfo.quoteInfo.costList = [\n ...this.currentBuildingInfo.quoteInfo.costList,\n ];\n const _structureType =\n data.data.list.buildingInfo.structureType.value;\n\n this.uiManager\n .loadFromObject(data.data.list.buildingInfo)\n .then(() => {\n const _maxInfo = { ...data.data.maxInfo };\n if (this.patiosRoofType === PATIOS_ROOF_TYPE.FLAT_ROOF) {\n if (_maxInfo.beamSize.value === 0) {\n this.beamSizeList = this.objects.beamSizeList.filter(\n (f) =>\n f.id == 0 && f.beamType == this.sltBeamType.currentValue\n );\n this.sltBeamSize.setSelected(0);\n } else {\n this.beamSizeList = this.objects.beamSizeList.filter(\n (f) =>\n f.id >= _maxInfo.minBeamSize.value &&\n f.beamType == this.sltBeamType.currentValue\n );\n if (\n this.sltBeamSize.currentValue < _maxInfo.beamSize.value\n ) {\n this.sltBeamSize.setSelected(_maxInfo.beamSize.value);\n }\n }\n //House beam\n if (this.chkHasHouseBeam.currentValue) {\n if (_maxInfo.houseBeamSize.value === 0) {\n this.houseBeamSizeList = this.objects.beamSizeList.filter(\n (f) =>\n f.id == 0 &&\n f.beamType == this.sltBeamType.currentValue\n );\n this.sltHouseBeamSize.setSelected(0);\n } else {\n this.houseBeamSizeList = this.objects.beamSizeList.filter(\n (f) =>\n f.id >= _maxInfo.minHouseBeamSize.value &&\n f.beamType == this.sltBeamType.currentValue\n );\n if (\n this.sltHouseBeamSize.currentValue <\n _maxInfo.houseBeamSize.value\n ) {\n this.sltHouseBeamSize.setSelected(\n _maxInfo.houseBeamSize.value\n );\n }\n }\n } else {\n this.houseBeamSizeList = this.beamSizeList;\n this.sltHouseBeamSize.setSelected(\n this.sltBeamSize.currentValue\n );\n }\n }\n\n if (_maxInfo.thickness.value === 0) {\n this.thicknessList = this.objects.thicknessList.filter(\n (f) => f.id == 0\n );\n this.sltRoofThickness.setSelectedAndHandleEvent(0);\n } else {\n this.thicknessList = this.objects.thicknessList.filter(\n (f) => f.id >= _maxInfo.minThickness.value\n );\n if (\n this.sltRoofThickness.currentValue <\n _maxInfo.thickness.value\n ) {\n this.sltRoofThickness.setSelectedAndHandleEvent(\n _maxInfo.thickness.value\n );\n }\n }\n if (this.patiosRoofType === PATIOS_ROOF_TYPE.FLAT_ROOF) {\n this.maxSpan = _maxInfo.maxSpan;\n this.maxSpanText = _maxInfo.maxSpanText;\n }\n this.maxBaySize = _maxInfo.maxBaySize;\n this.maxBaySizeText = _maxInfo.maxBaySizeText;\n this.maxThickness = _maxInfo.maxThickness;\n this.maxBeamSizeText = _maxInfo.maxBeamSizeText;\n this.flyoverBracketNumber = _maxInfo.flyoverBracketNumber;\n this.flyoverBracketNumberCutOut =\n _maxInfo.flyoverBracketNumberCutOut;\n this.currentBuildingInfo.buildingInfo.flyoverBracketNumber =\n this.flyoverBracketNumber;\n this.currentBuildingInfo.buildingInfo.flyoverBracketNumberCutOut =\n this.flyoverBracketNumberCutOut;\n this.fasciaBracketNumber = _maxInfo.fasciaBracketNumber;\n this.fasciaBracketNumberCutOut =\n _maxInfo.fasciaBracketNumberCutOut;\n this.currentBuildingInfo.buildingInfo.fasciaBracketNumber =\n this.fasciaBracketNumber;\n this.currentBuildingInfo.buildingInfo.fasciaBracketNumberCutOut =\n this.fasciaBracketNumberCutOut;\n if (_structureType == 3) {\n if (\n HomeComponent.ins.patiosRoofType ===\n PATIOS_ROOF_TYPE.GABLE_ROOF &&\n HomeComponent.ins.isFBRoof\n ) {\n // Phan nay ve braket cua mai gable phia sau\n // this.patiosManager.loadBracket(this.fasciaBracketNumberCutOut);\n this.patiosManager.loadBracket(UI.span >= 4000 ? 3 : 2);\n\n // Phan nay ve braket cua mai cutout\n this.patiosManager.loadBracketCutout(\n this.fasciaBracketNumber\n );\n\n // Load braket mai chiu luc\n this.patiosManager.loadSideGableBracket(\n this.fasciaBracketNumber\n );\n } else {\n //Fascia\n this.patiosManager.loadBracket(this.fasciaBracketNumber);\n this.patiosManager.loadBracketCutout(\n this.fasciaBracketNumberCutOut\n );\n }\n }\n if (_structureType == 1 || _structureType == 2) {\n if (\n HomeComponent.ins.patiosRoofType ===\n PATIOS_ROOF_TYPE.GABLE_ROOF &&\n HomeComponent.ins.isFBRoof\n ) {\n // Phan nay ve braket cua mai gable phia sau\n // this.patiosManager.loadBracket(this.flyoverBracketNumberCutOut);\n this.patiosManager.loadBracket(UI.span >= 4000 ? 3 : 2);\n\n // Phan nay ve braket cua mai cutout\n this.patiosManager.loadBracketCutout(\n this.flyoverBracketNumber\n );\n\n // Load braket mai chiu luc\n this.patiosManager.loadSideGableBracket(\n this.flyoverBracketNumber\n );\n } else {\n this.patiosManager.loadBracket(this.flyoverBracketNumber);\n this.patiosManager.loadBracketCutout(\n this.flyoverBracketNumberCutOut\n );\n }\n }\n\n this.isVisibleOpenModal = false;\n this.isSaveAs = type;\n this.statusText =\n type === 1 ? STATUS_TEXT.COPY : STATUS_TEXT.REVISE;\n this.message.info(\"Operation completed successfully!\");\n // set oldValue\n this.oldBuildingInfo = _.clone(\n this.currentBuildingInfo.buildingInfo\n );\n //\n });\n } else {\n this.message.error(data.data.error);\n }\n this.isOpening = false;\n },\n (error) => {\n this.isOpening = false;\n console.log(\"error :\", error);\n }\n );\n }\n onOpenFiles(type: number): void {\n const _diff = this.compareObject();\n if (_.isEmpty(_diff) || this.currentBuildingInfo.isOpen) {\n if (!this.currentBuildingInfo.files) {\n this.message.warning(\"File does not exist.\");\n return;\n }\n let _url = \"\";\n if (type === 1) {\n _url = `${environment.uploadUrl}/${this.currentBuildingInfo.files.engineeringFile}`;\n } else {\n _url = `${environment.uploadUrl}/${this.currentBuildingInfo.files.quotationFile}`;\n }\n const _link = document.createElement(\"a\");\n _link.href = _url;\n _link.target = \"_blank\";\n\n document.body.appendChild(_link);\n _link.click();\n _link.remove();\n } else {\n this.message.warning(\"You have to save before to print\");\n }\n }\n onUpdateJobFiles(info): void {\n this.jobService\n .updateJobFiles(info.id, info)\n .pipe(first())\n .subscribe(\n (data) => {\n if (data.statusCode === 200) {\n this.currentBuildingInfo = {\n ...this.currentBuildingInfo,\n files: info.files,\n };\n this.currentStep = 3;\n this.isVisible = false;\n this.isUploading = false;\n this.message.success(data.message);\n } else {\n this.message.error(data.message);\n }\n },\n (error) => {\n this.message.error(error);\n this.isUploading = false;\n }\n );\n }\n onUpload(): void {\n const _depositPer = this.currentQuoteInfo.quoteInfo.depositPer || 0;\n const _stage1Per = this.currentQuoteInfo.quoteInfo.stage1Per || 0;\n const _stage2Per = this.currentQuoteInfo.quoteInfo.stage2Per || 0;\n if (_depositPer + _stage1Per + _stage2Per > 100) {\n this.message.error(\"% Deposit + % Stage 1 + % Stage 2 > 100%\");\n return;\n }\n this.isUploading = true;\n this.currentQuoteInfo.clientInfo.jobNo =\n this.currentQuoteInfo.clientInfo.jobNo.toUpperCase();\n const info = {\n ...this.currentBuildingInfo,\n isSaveAs: this.isSaveAs,\n clientInfo: {\n ...this.currentQuoteInfo.clientInfo,\n },\n quoteInfo: {\n ...this.currentQuoteInfo.quoteInfo,\n },\n };\n this.currentStep = 3;\n if (this.isSaveAs > 0) {\n this.currentBuildingInfo._id = null;\n }\n if (this.currentBuildingInfo._id === null) {\n // New\n this.jobService\n .createJob(info)\n .pipe(first())\n .subscribe(\n (data) => {\n if (data.statusCode === 200) {\n this.currentBuildingInfo = { ...data.data.item };\n this.currentQuoteInfo = {\n quoteInfo: { ...this.currentBuildingInfo.quoteInfo },\n clientInfo: { ...this.currentBuildingInfo.clientInfo },\n };\n let _maxSpan = _.toNumber(\n this.maxThickness.replace(\"max (capacity)\", \"\")\n );\n if (this.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF) {\n _maxSpan = this.maxSpan;\n }\n const _info = {\n ...data.data.jobInfo,\n maxSpan: _maxSpan,\n listBay: data.data.item.buildingInfo.listBay,\n };\n const _jobInfo = {\n ..._info,\n uploadFolder: environment.uploadFolder,\n pathLogo: `${environment.mediaFolder}/${data.data.jobInfo.pathLogo}`,\n pathPDF:\n data.data.jobInfo.pathPDF !== \"\"\n ? `${environment.mediaFolder}/${data.data.jobInfo.pathPDF}`\n : \"\",\n };\n this.statusText = STATUS_TEXT.SAVE;\n this.isSaveAs = 0;\n //set oldValue\n this.oldBuildingInfo = _.clone(\n this.currentBuildingInfo.buildingInfo\n );\n //\n if (this.sltPanelDirectionShow.currentValue) {\n this.sltPanelDirectionShow.setValue(false);\n setTimeout(() => {\n this.printingManager.print(_jobInfo);\n }, 1000);\n } else {\n this.printingManager.print(_jobInfo);\n }\n } else {\n this.message.error(data.message);\n }\n },\n (error) => {\n this.message.error(error);\n this.isUploading = false;\n }\n );\n } else {\n // Edit\n this.jobService\n .UpdateJob(this.currentBuildingInfo._id, info)\n .pipe(first())\n .subscribe(\n (data) => {\n if (data.statusCode === 200) {\n this.currentBuildingInfo = { ...data.data.item };\n this.currentQuoteInfo = {\n quoteInfo: { ...this.currentBuildingInfo.quoteInfo },\n clientInfo: { ...this.currentBuildingInfo.clientInfo },\n };\n const _maxSpan = _.toNumber(\n this.maxThickness.replace(\"max (capacity)\", \"\")\n );\n const _info = {\n ...data.data.jobInfo,\n maxSpan: _maxSpan,\n listBay: data.data.item.buildingInfo.listBay,\n };\n const _jobInfo = {\n ..._info,\n uploadFolder: environment.uploadFolder,\n pathLogo: `${environment.mediaFolder}/${data.data.jobInfo.pathLogo}`,\n pathPDF:\n data.data.jobInfo.pathPDF !== \"\"\n ? `${environment.mediaFolder}/${data.data.jobInfo.pathPDF}`\n : \"\",\n };\n this.isSaveAs = 0;\n //set oldValue\n this.oldBuildingInfo = _.clone(\n this.currentBuildingInfo.buildingInfo\n );\n //\n if (this.sltPanelDirectionShow.currentValue) {\n this.sltPanelDirectionShow.setValue(false);\n setTimeout(() => {\n this.printingManager.print(_jobInfo);\n }, 1000);\n } else {\n this.printingManager.print(_jobInfo);\n }\n } else {\n this.message.error(data.message);\n }\n },\n (error) => {\n this.message.error(error);\n this.isUploading = false;\n }\n );\n }\n }\n print2D() {\n // this.sldBuildingHeight.setMax(4000);\n this.printingManager.printTest();\n\n // this.sltColumnType.setSelected(\"2\");\n\n //this.sldNoOfBay.setValue(2);\n //console.log(this.dialogEditBay.totalBaySize, this.sldExistingLength.currentValue + this.sldExistingLength2.currentValue *2 + this.existingWallManager.geo_existingWallW1.width*2 + 200);\n }\n getPosts(_groups: any) {\n let _posts = [];\n _posts = _groups.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.SUPERIOR_POST\n );\n const _patios = _groups.filter(\n (x) => x.userData.category === GEOMETRY_CATEGORY.PATIOS\n );\n _patios.map((value) => {\n _posts.push(\n ...value.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.SUPERIOR_POST\n )\n );\n return value;\n });\n const listPosts = [];\n _posts.reduce(function (res, value) {\n if (!res[value.scale.y]) {\n res[value.scale.y] = {\n length: value.scale.y,\n qty: 0,\n };\n listPosts.push(res[value.scale.y]);\n }\n res[value.scale.y].qty += 1;\n return res;\n }, {});\n return listPosts;\n }\n\n public bindBuildingInfo(): any {\n const groups = this.scene.children.filter(\n (x) =>\n (x.userData.category === GEOMETRY_CATEGORY.PATIOS &&\n x.children.length > 0) ||\n x.userData.type === GEOMETRY_TYPE.SUPERIOR_POST ||\n x.userData.type === GEOMETRY_TYPE.FLY_OVER_BRACKET ||\n x.userData.type === GEOMETRY_TYPE.RECEIVER_CHANEL ||\n x.userData.type === GEOMETRY_TYPE.ROOF_PANEL ||\n x.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET ||\n x.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET_EXT ||\n x.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET_CUTOUT ||\n x.userData.type === GEOMETRY_TYPE.RIDGE_CAPPING ||\n x.userData.type === GEOMETRY_TYPE.SUPERIOR_CENTER_POST\n );\n const listPosts = this.getPosts(groups);\n let cutoutCondition =\n this.sltCutOut.currentValue == CUTOUT_ENABLE.YES &&\n this.sltExistingType.currentValue != BUILDING_SIDE.NONE &&\n this.sldExistingLength2.currentValue > 0;\n let rakeCutCondition =\n this.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE ||\n this.sltRightCutType.currentValue != RAKECUT_TYPE.NONE;\n let elementArray = {\n extFlyoverBrackets: [],\n flyoverBrackets: [],\n flyoverBracketCutOuts: [],\n fasciaBrackets: [],\n fasciaBracketCutouts: [],\n };\n if (this.patiosRoofType === PATIOS_ROOF_TYPE.FLAT_ROOF) {\n elementArray = this.utils.getInfoFromGeometry(\n this,\n groups,\n this.geometryManager,\n cutoutCondition,\n rakeCutCondition\n );\n } else {\n elementArray = this.utils.getInfoFromGeometryGableRoof(\n this,\n groups,\n this.geometryManager,\n cutoutCondition,\n rakeCutCondition\n );\n }\n\n const _structureType = _.toNumber(this.sltStructureType.currentValue);\n const _existingType = _.toNumber(this.sltExistingType.currentValue);\n\n const _buildingInfo = {\n patiosRoofType: this.patiosRoofType,\n isFBRoof: this.isFBRoof,\n listPosts,\n existingType: {\n value: _existingType,\n text: this.sltExistingType.currentText,\n },\n existingLength: this.sldExistingLength.currentValue,\n existingLength2: this.sldExistingLength2.currentValue,\n existingWidth1: this.sldExistingWidth1.currentValue,\n existingWidth2: this.sldExistingWidth2.currentValue,\n existingRoofPitch: _.toNumber(this.sltExistingRoofPitch.currentValue),\n fasciaDepth: this.sldFasciaDepth.currentValue,\n eaveHeight: this.sldExistingWallHeight.currentValue,\n eaveWidth: this.sldEaveWidth.currentValue,\n wallType: {\n value: _.toNumber(this.sltWallType.currentValue),\n text: this.sltWallType.currentText,\n },\n existingRoofType: {\n value: _.toNumber(this.sltExistingRoofType.currentValue),\n text: this.sltExistingRoofType.currentText,\n },\n flyoverBracketHeight: this.sldFlyOverBracketHeight.currentValue,\n extFlyoverBracketNumber: elementArray.extFlyoverBrackets, // _extFlyoverBrackets,\n flyoverBracketNumber: elementArray.flyoverBrackets, // _flyoverBrackets,\n flyoverBracketNumberCutOut: elementArray.flyoverBracketCutOuts, // _flyoverBracketsCutOut,\n fasciaBracketHeight: _.toNumber(\n this.sltFasciaUpstandBrackets.currentValue\n ),\n fasciaBracketNumber: elementArray.fasciaBrackets,\n fasciaBracketNumberCutOut: elementArray.fasciaBracketCutouts,\n // -------------\n backFascia: this.sltUpFasciaUpstandBracket.currentValue,\n rightToLeft: this.sltPanelDirection.currentValue,\n structureType: {\n value: _structureType,\n text: this.sltStructureType.currentText,\n },\n windClass: {\n value: _.toNumber(this.sltWindClass.currentValue),\n text: this.sltWindClass.currentText,\n },\n span: this.sldSpan.currentValue,\n multiSpan: this.sldMultiSpan.currentValue,\n buildingHeight: this.sldBuildingHeight.currentValue,\n frontOverhang: this.sldFrontOverhang.currentValue,\n backOverhang: this.sldBackOverhang.currentValue,\n baySize: this.sldBaySize.currentValue,\n noOfBay: this.sldNoOfBay.currentValue,\n roofPitch: _.toNumber(this.sltRoofPitch.currentValue),\n leftOverhang: this.sldLeftOverhang.currentValue,\n rightOverhang: this.sldRightOverhang.currentValue,\n roofOverallLength: this.sldRoofOverallLength.currentValue,\n roofOverallWidth: this.sldRoofOverallWidth.currentValue,\n minHeight: this.sldMinHeight.currentValue,\n isRapidSetCement: this.chkRapidSetCement.currentValue,\n hasHouseBeam: this.chkHasHouseBeam.currentValue,\n isDripBarge: this.sltDripBarge.currentValue,\n cutOut: {\n value: _.toNumber(this.sltCutOut.currentValue),\n text: this.sltCutOut.currentText,\n },\n //--------RakeCut\n leftCutType: {\n value: _.toNumber(this.sltLeftCutType.currentValue),\n text: this.sltLeftCutType.currentText,\n },\n rightCutType: {\n value: _.toNumber(this.sltRightCutType.currentValue),\n text: this.sltRightCutType.currentText,\n },\n leftCutVertical: this.sldLeftCutVertical.currentValue,\n leftCutHorizontal: this.sldLeftCutHorizontal.currentValue,\n rightCutVertical: this.sldRightCutVertical.currentValue,\n rightCutHorizontal: this.sldRightCutHorizontal.currentValue,\n //--------\n listBay: this.dialogEditBay.listBay,\n // -----------------------------\n roofSheetingType: {\n value: _.toNumber(this.sltRoofSheetingType.currentValue),\n text: this.sltRoofSheetingType.currentText,\n },\n thickness: {\n value: _.toNumber(this.sltRoofThickness.currentValue),\n text: this.sltRoofThickness.currentText,\n },\n flatBottom: {\n value: _.toNumber(this.sltFlatBottom.currentValue),\n text: this.sltFlatBottom.currentText,\n },\n bargeType: {\n value: _.toNumber(this.sltBargeType.currentValue),\n text: this.sltBargeType.currentText,\n },\n receiverType: {\n value: _.toNumber(this.sltReceiverType.currentValue),\n text: this.sltReceiverType.currentText,\n },\n zFlashingType: {\n value: _.toNumber(this.sltZFlashingType.currentValue),\n text: this.sltZFlashingType.currentText,\n },\n downpipeType: {\n value: _.toNumber(this.sltDownpipeType.currentValue),\n text: this.sltDownpipeType.currentText,\n },\n gutterType: {\n value: _.toNumber(this.sltGutterType.currentValue),\n text: this.sltGutterType.currentText,\n },\n beamType: {\n value: _.toNumber(this.sltBeamType.currentValue),\n text: this.sltBeamType.currentText,\n },\n columnType: {\n value: _.toNumber(this.sltColumnType.currentValue),\n text: this.sltColumnType.currentText,\n },\n baseFixingType: {\n value: _.toNumber(this.sltBaseFixingType.currentValue),\n text: this.sltBaseFixingType.currentText,\n },\n beamSize: {\n value: _.toNumber(this.sltBeamSize.currentValue),\n text: this.sltBeamSize.currentText,\n },\n houseBeamSize: {\n value: _.toNumber(this.sltHouseBeamSize.currentValue),\n text: this.sltHouseBeamSize.currentText,\n },\n // ------------------------\n colourRoof: {\n value: _.toNumber(this.sltColourRoof.currentValue),\n text: this.sltColourRoof.currentText,\n },\n colourBarge: {\n value: _.toNumber(this.sltColourBarge.currentValue),\n text: this.sltColourBarge.currentText,\n },\n colourGutter: {\n value: _.toNumber(this.sltColourGutter.currentValue),\n text: this.sltColourGutter.currentText,\n },\n colourZFlashing: {\n value: _.toNumber(this.sltColourZFlashing.currentValue),\n text: this.sltColourZFlashing.currentText,\n },\n colourPost: {\n value: _.toNumber(this.sltColourPost.currentValue),\n text: this.sltColourPost.currentText,\n },\n colourBeam: {\n value: _.toNumber(this.sltColourBeam.currentValue),\n text: this.sltColourBeam.currentText,\n },\n colourBracket: {\n value: _.toNumber(this.sltColourBracket.currentValue),\n text: this.sltColourBracket.currentText,\n },\n colourFasciaBracket: {\n value: _.toNumber(this.sltColourFasciaBracket.currentValue),\n text: this.sltColourFasciaBracket.currentText,\n },\n colourDownpipe: {\n value: _.toNumber(this.sltColourDownpipe.currentValue),\n text: this.sltColourDownpipe.currentText,\n },\n userData: elementArray,\n roofHeight: this.roofHeight,\n panelType: this.panelType,\n };\n return _buildingInfo;\n }\n onOkRibspan(): void {\n this.isVisibleOpenModalRibspan = false;\n this.router.navigateByUrl(\"/ribspan\");\n }\n onCancel(): void {\n this.isVisible = false;\n this.isVisibleOpenModal = false;\n this.isSaveAs = 0;\n }\n onCancelRibspan(): void {\n this.isVisibleOpenModalRibspan = false;\n this.isVisibleOpenModal = true;\n }\n public onShowAddCostClick(): void {\n if (!this.currentBuildingInfo.isOpen) {\n const _costList = this.currentQuoteInfo.quoteInfo.costList\n ? [...this.currentQuoteInfo.quoteInfo.costList]\n : [];\n if (_costList.length === 0) {\n _costList.push({ index: 1, description: \"\", value: 0 });\n }\n this.dialogAddCost.show(true, _costList);\n }\n }\n\n compareObject(): any {\n const _temp = this.bindBuildingInfo();\n delete _temp.userData;\n delete _temp.roofHeight;\n const _old = _.clone(this.oldBuildingInfo);\n const diff = _.omitBy(_temp, function (v, k) {\n const _value = _.get(_old, k);\n const _equal = _.isEqual(v, _value);\n return _equal;\n });\n return diff;\n }\n onViewBOM(): void {\n const _diff = this.compareObject();\n if (\n (this.currentBuildingInfo._id !== null && _.isEmpty(_diff)) ||\n this.currentBuildingInfo.isOpen\n ) {\n this.dialogBOM.show(\n true,\n this.currentBuildingInfo._id,\n this.currentBuildingInfo.clientInfo.jobNo,\n this.isAdmin,\n this.currentUser\n );\n } else {\n this.message.warning(\"You have to save before to print BOM\");\n }\n }\n\n onViewBOMTest(): void {\n this.dialogBOM.showTest(\n true,\n this.currentUser,\n this.currentBuildingInfo.BOMInfo,\n this.currentBuildingInfo.additionalBOM,\n this.currentBuildingInfo.quoteInfo\n );\n }\n\n public onAddBOM(price) {\n this.currentBuildingInfo.additionalBOM.push(price);\n this.onResetIdx();\n this.onCalcPrice();\n }\n public onDeleteBOM(data) {\n this.currentBuildingInfo.additionalBOM =\n this.currentBuildingInfo.additionalBOM.filter((f) => f.idx !== data.idx);\n this.onResetIdx();\n this.onCalcPrice();\n }\n\n onResetIdx() {\n const maxIdx = _.maxBy(this.currentBuildingInfo.BOMInfo, \"idx\");\n const _maxIdx = maxIdx.idx + 1;\n this.currentBuildingInfo.additionalBOM =\n this.currentBuildingInfo.additionalBOM.map((m, index) => {\n return { ...m, idx: _maxIdx + index };\n });\n }\n\n onSearch(): void {\n this.isSearching = true;\n const info = {\n userId: this.currentUser.user._id,\n jobNo: this.jobNoSearch.toUpperCase(),\n cusName: this.cusNameSearch,\n };\n this.jobService\n .getJobByUserId(info)\n .pipe(first())\n .subscribe(\n (data) => {\n this.dataOPEN = data.data.list;\n this.isSearching = false;\n },\n (error) => {\n console.log(\"error :\", error);\n this.isSearching = false;\n }\n );\n }\n onOpenById(id: any): void {\n this.isSearching = true;\n this.jobService\n .getById(id)\n .pipe(first())\n .subscribe(\n (data) => {\n this.currentBuildingInfo = { ...data.data.list, isOpen: true };\n if (!this.currentBuildingInfo.quoteInfo.costList) {\n this.currentBuildingInfo.quoteInfo.costList = [];\n }\n if (!this.currentBuildingInfo.additionalBOM) {\n this.currentBuildingInfo.additionalBOM = [];\n }\n if (\n this.currentBuildingInfo.quoteInfo.costList.length === 0 &&\n this.currentBuildingInfo.quoteInfo.addCostInstall > 0\n ) {\n this.currentBuildingInfo.quoteInfo.costList.push({\n index: 1,\n description: \"\",\n value: this.currentBuildingInfo.quoteInfo.addCostInstall,\n });\n }\n this.currentQuoteInfo = {\n clientInfo: { ...data.data.list.clientInfo },\n quoteInfo: { ...data.data.list.quoteInfo },\n };\n this.currentQuoteInfo.quoteInfo.costList = [\n ...this.currentBuildingInfo.quoteInfo.costList,\n ];\n const _structureType =\n data.data.list.buildingInfo.structureType.value;\n this.flyoverBracketNumber =\n data.data.list.buildingInfo.flyoverBracketNumber;\n this.flyoverBracketNumberCutOut =\n data.data.list.buildingInfo.flyoverBracketNumberCutOut;\n this.fasciaBracketNumber =\n data.data.list.buildingInfo.fasciaBracketNumber || 0;\n this.fasciaBracketNumberCutOut =\n data.data.list.buildingInfo.fasciaBracketNumberCutOut || 0;\n this.uiManager\n .loadFromObject(data.data.list.buildingInfo)\n .then(() => {\n if (_structureType === 1 || _structureType === 2) {\n if (\n HomeComponent.ins.patiosRoofType ===\n PATIOS_ROOF_TYPE.GABLE_ROOF &&\n HomeComponent.ins.isFBRoof\n ) {\n // Phan nay ve braket cua mai gable phia sau\n // this.patiosManager.loadBracket(this.flyoverBracketNumberCutOut);\n this.patiosManager.loadBracket(UI.span >= 4000 ? 3 : 2);\n\n // Phan nay ve braket cua mai cutout\n this.patiosManager.loadBracketCutout(\n this.flyoverBracketNumber\n );\n\n // Load braket mai chiu luc\n this.patiosManager.loadSideGableBracket(\n this.flyoverBracketNumber\n );\n } else {\n this.patiosManager.loadBracket(this.flyoverBracketNumber);\n this.patiosManager.loadBracketCutout(\n this.flyoverBracketNumberCutOut\n );\n }\n }\n if (_structureType == 3) {\n if (\n HomeComponent.ins.patiosRoofType ===\n PATIOS_ROOF_TYPE.GABLE_ROOF &&\n HomeComponent.ins.isFBRoof\n ) {\n // Phan nay ve braket cua mai gable phia sau\n // this.patiosManager.loadBracket(this.fasciaBracketNumberCutOut);\n this.patiosManager.loadBracket(UI.span >= 4000 ? 3 : 2);\n\n // Phan nay ve braket cua mai cutout\n this.patiosManager.loadBracketCutout(\n this.fasciaBracketNumber\n );\n\n // Load braket mai chiu luc\n this.patiosManager.loadSideGableBracket(\n this.fasciaBracketNumber\n );\n } else {\n this.patiosManager.loadBracket(this.fasciaBracketNumber);\n this.patiosManager.loadBracketCutout(\n this.fasciaBracketNumberCutOut\n );\n }\n }\n this.isVisibleOpenModal = false;\n this.statusText = STATUS_TEXT.COPY;\n this.isSearching = false;\n // set oldValue\n this.oldBuildingInfo = _.clone(\n this.currentBuildingInfo.buildingInfo\n );\n //\n });\n },\n (error) => {\n console.log(\"error :\", error);\n this.isSearching = false;\n }\n );\n }\n\n onOpenPropertyClick(): void {\n this.isVisibleProperty = !this.isVisibleProperty;\n setTimeout(() => {\n this.resizeEventHandle();\n }, 300);\n }\n onRoofSheetingTypeChanged(): void {\n this.sltBargeType.setSelected(this.sltRoofSheetingType.currentValue);\n this.sltReceiverType.setSelected(this.sltRoofSheetingType.currentValue);\n this.sltZFlashingType.setSelected(this.sltRoofSheetingType.currentValue);\n }\n\n private initObject() {\n this.isAdmin =\n this.currentUser.user.roles === this.objects.roles.admin ? true : false;\n if (this.patiosRoofType === PATIOS_ROOF_TYPE.FLAT_ROOF) {\n this.maxSpan = this.env.span.max;\n }\n this.maxBaySize = this.env.baySize.max;\n this.beamSizeList = this.objects.beamSizeList.filter(\n (f) => f.beamType == 0\n );\n this.houseBeamSizeList = this.objects.beamSizeList.filter(\n (f) => f.beamType == 0\n );\n this.thicknessList = [...this.objects.thicknessList];\n this.baseFixingTypeList = [...this.objects.baseFixingTypeList];\n const _template = TEMPLATE.find(\n (f) =>\n f.type === (this.existingHouseType === -1 ? 1 : this.existingHouseType)\n );\n // Old Job\n this.currentBuildingInfo = {\n _id: null,\n userId: this.currentUser.user._id,\n isOpen: false,\n buildingInfo: {\n ..._template,\n patiosRoofType: this.patiosRoofType,\n isFBRoof: this.isFBRoof,\n existingRoofPitch: this.env.existingRoofPitch.default,\n fasciaDepth: this.env.fasciaDepth.default,\n eaveHeight: this.env.eaveHeight.default,\n eaveWidth: this.env.eaveWidth.default,\n flyoverBracketHeight: this.env.flyOverBracketHeight.default,\n fasciaBracketHeight: this.env.fasciaUpstandBrackets.default,\n backFascia: false,\n hasHouseBeam: false,\n multiSpan: this.env.multiSpan.default,\n buildingHeight: this.env.height.default,\n frontOverhang: this.env.frontOverhang.default,\n backOverhang: this.env.backOverhang.default,\n roofOverallLength: this.env.baySize.default,\n roofPitch: 2,\n leftOverhang: this.env.leftOverhang.default,\n rightOverhang: this.env.rightOverhang.default,\n //RakeCut\n leftCutType: {\n value: 0,\n },\n rightCutType: {\n value: 0,\n },\n leftCutVertical: this.env.rakeCutVertical.default,\n leftCutHorizontal: this.env.rakeCutHorizontal.default,\n rightCutVertical: this.env.rakeCutVertical.default,\n rightCutHorizontal: this.env.rakeCutHorizontal.default,\n //\n rightToLeft: false,\n roofOverallWidth:\n this.env.span.default +\n this.env.frontOverhang.default +\n this.env.backOverhang.default,\n minHeight: 0,\n colourDownpipe: {\n value: 14214630,\n },\n colourBracket: {\n value: 15000277,\n },\n colourFasciaBracket: {\n value: 15000277,\n },\n colourBeam: {\n value: 15000277,\n },\n colourPost: {\n value: 15000277,\n },\n colourZFlashing: {\n value: 15000277,\n },\n colourGutter: {\n value: 15000277,\n },\n colourBarge: {\n value: 15000277,\n },\n colourRoof: {\n value: 15000277,\n },\n beamSize: {\n value: 1,\n },\n houseBeamSize: {\n value: 1,\n },\n baseFixingType: {\n value: 0,\n },\n columnType: {\n value: 0,\n },\n beamType: {\n value: 0,\n },\n gutterType: {\n value: 0,\n },\n downpipeType: {\n value: 0,\n },\n zFlashingType: {\n value: 0,\n },\n receiverType: {\n value: 0,\n },\n bargeType: {\n value: 0,\n },\n flatBottom: {\n value: 15000277,\n },\n thickness: {\n value: 1,\n },\n roofSheetingType: {\n value: 0,\n },\n windClass: {\n value: 0,\n },\n structureType: {\n value: 3,\n },\n wallType: {\n value: 0,\n },\n roofType: {\n value: 0,\n },\n panelType: this.panelType,\n },\n clientInfo: {\n jobNo: \"\",\n cusName: \"\",\n address: \"\",\n suburb: \"\",\n state: \"\",\n postcode: \"\",\n email: \"\",\n phone: \"\",\n supplyType: \"supply_install\",\n date: new Date(),\n },\n quoteInfo: {\n nett: 0,\n total0: 0,\n totalPrice: 0,\n discountPer: 0,\n discount: 0,\n depositPer: 0,\n stage1Per: 0,\n stage2Per: 0,\n deposit: 0,\n stage1: 0,\n stage2: 0,\n finalPayment: 0,\n addCostInstall: 0,\n userNote: \"\",\n note: \"\",\n gst: 0,\n fasciaInstall: 0,\n flyOverInstall: 0,\n installMaterial: 0,\n supplyOnlyKits: 0,\n perPostInstall: 0,\n addCost: 0,\n costList: [],\n customText: null,\n },\n additionalBOM: [],\n };\n // Current Job\n this.currentQuoteInfo = { ...this.currentBuildingInfo };\n // this.dataBOM = { quoteInfo: { ...this.currentBuildingInfo.quoteInfo } };\n }\n onApplyToAll(): void {\n this.sltColourBarge.setSelected(this.sltColourRoof.currentValue);\n this.sltColourZFlashing.setSelected(this.sltColourRoof.currentValue);\n this.sltColourGutter.setSelected(this.sltColourRoof.currentValue);\n }\n\n public setPatiosWidth(totalWidth: number) {\n let realWidth = totalWidth;\n if (\n UI.structureType == CONNECTION_TYPE.EXISTING &&\n UI.existingType == BUILDING_SIDE.BOTH &&\n this.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF &&\n this.isFBRoof\n ) {\n realWidth =\n totalWidth -\n UI.overhangLeft -\n UI.overhangRight -\n OFFSET_GUTTER_TO_WALL * 2;\n }\n if (\n UI.structureType == CONNECTION_TYPE.FASCIA_UPSTAND &&\n UI.existingType == BUILDING_SIDE.BOTH &&\n this.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF &&\n this.isFBRoof\n ) {\n realWidth = Math.ceil(totalWidth - 2 * FASCIA_BRACKET_FIT);\n }\n let baySize = realWidth;\n let noOfBay = 1;\n if (realWidth > CONFIG.baySize.max) {\n noOfBay = Math.ceil(realWidth / CONFIG.baySize.max);\n baySize = Math.ceil(realWidth / noOfBay);\n }\n if (\n this.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF &&\n this.isFBRoof &&\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n this.sldSpan.setValueAndHandleEvent(realWidth, true);\n }\n if (\n this.patiosRoofType === PATIOS_ROOF_TYPE.FLAT_ROOF ||\n (this.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF && !this.isFBRoof)\n ) {\n this.sldBaySize.setValue(baySize);\n this.sldNoOfBay.setValue(noOfBay);\n }\n }\n public onBtnRakeCutLeftClick(e) {\n HomeComponent.ins.sltLeftCutType.setSelected(0);\n }\n public onBtnRakeCutRightClick(e) {\n HomeComponent.ins.sltRightCutType.setSelected(0);\n }\n public onBtnCutoutClick(e) {\n HomeComponent.ins.sltCutOut.setSelected(0);\n }\n public onsltUpFasciaUpstandBracketChange(e) {\n if (UI.upstandBraketType == 0 && UI.isUpFasciaUpstandardBracket) {\n HomeComponent.ins.sltFasciaUpstandBrackets.setSelected(150);\n HomeComponent.ins.patiosManager.load();\n }\n }\n\n onShowThumbnailClick(data): void {\n this._albums.length = 0;\n var _url = `${environment.uploadUrl}/${data.files.thumbnailFile}`;\n const album: Album = {\n src: _url,\n caption: `${data?.clientInfo?.cusName} [#${data?.clientInfo?.jobNo}]`,\n thumb: _url,\n };\n\n this._albums.push(album);\n this._lightbox.open(this._albums, 0);\n }\n}\n","
\n
\n \n
\n \n \n
\n \n
\n
\n \n
\n {{\n currentBuildingInfo ? currentBuildingInfo.clientInfo.jobNo : \"Empty\"\n }}\n
\n
\n
\n \n Status: {{ isPricing ? \"Pricing\" : statusText }}...\n \n (Error: {{ statusError }})\n \n \n
\n
\n \n
\n \n
\n
\n
\n\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n BETA\n
\n
\n
\n
\n
\n
\n
\n \n\n\n\n \n \n \n New\n \n \n \n \n \n \n\n \n \n \n \n
\n \n
\n

Patios Roof Type:

\n
\n
\n \n \n \n \n \n \n
\n
\n
\n\n \n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n \n
\n
\n
\n \n \n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n \n
\n
\n
\n \n \n \n
\n \n
\n
\n
\n \n
\n
\n
\n \n
\n \n
\n
\n
\n \n
\n
\n
\n \n
\n \n
\n
\n
\n \n
\n
\n
\n \n \n\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n
\n \n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n \n \n \n
\n \n
\n
\n
\n
\n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n \n \n \n
\n \n
\n
\n
\n
\n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n \n \n
\n \n \n
\n \n
\n
\n
\n
\n
\n

EXISTING BUILDING

\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

FLY OVER

\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n

BACK FLY OVER

\n
\n
\n
\n
\n \n \n
\n \n
\n
\n
\n
\n
\n

TO FASCIA

\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

FASCIA UPSTAND BRACKET

\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n

BACK FASCIA

\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n 0\"\n >\n \n Back\n \n \n
\n
\n \n \n Open\n \n
\n
\n

Job No.:

\n
\n
\n \n
\n
\n
\n

Client Name:

\n
\n
\n \n
\n
\n
\n \n \n Search\n \n \n
\n
\n \n \n \n \n Quote No.\n Quote Date\n Client Name\n User Name\n Prod.\n Total Price\n Action\n \n \n \n \n {{ data.clientInfo.jobNo }}\n {{ data.clientInfo.date | date : \"dd/MM/yyyy\" }}\n {{ data.clientInfo.cusName }}\n {{ data.userId.fullName }}\n \n {{\n data?.buildingInfo?.panelType\n }}\n \n \n {{\n data?.buildingInfo?.panelType\n }}\n \n \n {{ data.quoteInfo.totalPrice | currency }}\n \n \n \n
\n Switch to RibSpan\n
\n \n \n
\n \n \n
\n \n \n
\n \n
\n \n \n
\n \n
\n \n \n \n \n \n
\n \n
\n\n\n\n \n \n \n \n \n \n \n \n \n \n \n
\n
\n

Job No.

\n
\n
\n \n
\n
\n
\n

Date

\n
\n
\n \n \n
\n
\n \n
\n
\n

Client Name

\n
\n
\n \n
\n
\n
\n

Site Address

\n
\n
\n \n
\n
\n \n
\n
\n

Suburb

\n
\n
\n \n
\n
\n
\n

State

\n
\n
\n \n
\n
\n \n
\n
\n

Postcode

\n
\n
\n \n
\n
\n
\n

Email Address

\n
\n
\n \n
\n
\n \n
\n
\n

Phone

\n
\n
\n \n
\n
\n
\n

Supply Type

\n
\n
\n \n \n \n \n
\n
\n
\n \n \n \n \n \n \n
\n Quote Includes\n

{{ currentQuoteInfo.quoteInfo.note }}

\n
\n \n \n
\n Note\n \n
\n
\n Price\n \n \n
\n Nett\n
\n
\n {{ currentQuoteInfo.quoteInfo.nett | currency }}\n
\n
\n \n \n
\n Off Fascia Install\n
\n
\n {{\n currentQuoteInfo.quoteInfo.fasciaInstall | currency\n }}\n
\n \n \n \n
\n Fly Over Install\n
\n
\n {{\n currentQuoteInfo.quoteInfo.flyOverInstall | currency\n }}\n
\n \n \n \n
\n Install Mark up on material\n
\n
\n {{\n currentQuoteInfo.quoteInfo.installMaterial | currency\n }}\n
\n \n \n \n
\n Per post install\n
\n
\n {{\n currentQuoteInfo.quoteInfo.perPostInstall | currency\n }}\n
\n \n \n \n
\n Std Additional Costs\n
\n
\n {{ currentQuoteInfo.quoteInfo.addCost | currency }}\n
\n \n \n \n
\n Mark up on Supply Kits\n
\n
\n {{\n currentQuoteInfo.quoteInfo.supplyOnlyKits | currency\n }}\n
\n \n \n
\n
\n Additional Cost Install\n
\n
\n \n \n \n Add More\n \n \n {{ addCostInstallDes }}\n
\n
\n {{\n currentQuoteInfo.quoteInfo.addCostInstall | currency\n }}\n
\n
\n \n
\n
\n GST\n
\n
\n {{ currentQuoteInfo.quoteInfo.gst | currency }}\n
\n
\n \n
\n
\n Total Price\n
\n \n
\n {{ currentQuoteInfo.quoteInfo.totalPrice | currency }}\n
\n
\n \n
\n
\n

\n \n
\n
\n \n \n \n
\n
\n \n
\n
\n {{ currentQuoteInfo.quoteInfo.deposit | currency }}\n
\n
\n \n
\n
\n

\n \n
\n
\n \n \n \n
\n
\n \n
\n
\n {{ currentQuoteInfo.quoteInfo.stage1 | currency }}\n
\n
\n \n
\n
\n

\n \n
\n
\n \n \n \n
\n
\n \n
\n
\n {{ currentQuoteInfo.quoteInfo.stage2 | currency }}\n
\n
\n \n
\n
\n Final Payment\n
\n
\n \n
\n
\n {{\n currentQuoteInfo.quoteInfo.finalPayment | currency\n }}\n
\n
\n \n \n
\n Discount\n
\n
\n \n \n \n
\n
\n \n
\n
\n \n \n \n 0\"\n >{{ currentQuoteInfo.quoteInfo.discount | currency }}\n
\n \n \n \n\n \n
\n \n
\n
\n

Uploading, Please wait...

\n
\n
\n
\n
\n
\n 0 && currentStep < 3\"\n >\n \n Previous\n \n \n Next Step\n \n \n 0)\n \"\n >\n \n {{ isUploading ? \"Uploading...\" : \"Save & Upload\" }}\n \n
\n
\n 0)\n \"\n >More Information\n 0)\n \"\n nzCheckedChildren=\"Show\"\n nzUnCheckedChildren=\"Hide\"\n class=\"margin-right-5\"\n >\n
\n
\n\n\n\n
\n
\n
\n \n Existing House Detail\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 0 &&\n sldExistingLength2Visible\n ? ''\n : 'none'\n \"\n >\n \n \n \n 0 &&\n sldExistingWidth2Visible\n ? ''\n : 'none'\n \"\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Existing House
- Roof Type:\n \n
- Type:\n \n
- Length (L1):\n \n
- Width (W1):\n \n
- Length (L2):\n \n
- Width (W2):\n \n
Pitch:\n \n
Fascia depth:\n \n
Eave Height:\n \n \n
Eave Width:\n \n
Wall Type:\n \n
Cutout:\n \n
\n
\n
\n \n Patios Information\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Connection Type:\n \n
Superior Flyover Bracket:\n \n \n \n
Fascia Upstand Brackets:\n \n \n
Up Fascia Upstandard Bracket:\n \n \n \n
Wind Class:\n \n
Span (S):\n \n \n
\n {{ maxSpanText }}\n
\n
Multi Span (S2):\n \n
Patios Height (H):\n \n
Front Overhang (O):\n \n
Back Overhang (O2):\n \n
Bay Size - Nominal (B):\n \n
\n {{ maxBaySizeText }}\n
\n
No Of Bay:\n \n
Roof Pitch:\n \n
\n {{\n patiosRoofType === \"flat\"\n ? \"Beam Left Overhang:\"\n : \"Left Overhang:\"\n }}\n \n \n
\n {{\n patiosRoofType === \"flat\"\n ? \"Beam Right Overhang:\"\n : \"Right Overhang:\"\n }}\n \n \n
Roof Overall Length:\n \n \n \n {{ sldRoofOverallLength.currentValue }}
\n
\n {{ roofPercent }}\n
\n \n
Roof Overall Width:\n \n {{\n sldRoofOverallWidth.currentValue\n }}\n
Min. Height Under Beam:\n \n {{ sldMinHeight.currentValue }}\n
Rake Cut
- Left Cut\n \n \n
+ Vertical\n \n
+ Horizontal\n \n
- Right Cut\n \n \n
+ Vertical\n \n
+ Horizontal\n \n
\n
\n
\n \n Material Detail\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Roof Sheeting Type:\n \n \n
Thickness:\n \n \n
\n {{ maxThickness }}\n
\n
Flat Bottom Colour:\n \n \n
Barge Type:\n \n \n
Drip Barge:\n \n
Receiver Type:\n \n \n
Z Flashing Type:\n \n \n
Downpipe Type:\n \n \n
Gutter Type:\n \n \n
Beam Type:\n \n \n
Beam Size:\n \n \n
\n {{ maxBeamSizeText }}\n
\n
\n House Beam Size:\n \n \n
Column Type:\n \n \n
Base Fixing Type:\n \n \n
\n Rapid Set Cement:\n (5 bags per post)\n \n \n \n
\n \n
\n \n Color Selections\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Roof:\n \n \n \n
Barge:\n \n \n
Gutter:\n \n \n
Z Flashing:\n \n \n
Post:\n \n \n
Beam:\n \n \n
Flyover Bracket:\n \n \n
Fascia Upstand Bracket:\n \n \n
Downpipe:\n \n \n
\n \n Apply To All\n \n
\n \n \n \n\n\n \n\n\n
\n
\n
\n
\n \n
Options
\n \n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
- Panel Direction
- Panel Layout\n \n
- Beam Layout\n \n
- Edit Bay\n \n
\n
\n
\n
\n
\n
\n

\n Total Price:\n {{\n currentBuildingInfo.quoteInfo.totalPrice | currency\n }}\n

\n
\n
\n \n \n \n \n \n
\n \n
\n
\n SPC Software:\n {{ version }}\n
\n
\n\n\n\n\n\n\n\n\n\n\n
\n \n
\n","export * from './home.component';","export * from './login.component';","import { Component, OnInit } from '@angular/core';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { FormBuilder, FormGroup, Validators } from '@angular/forms';\nimport { first } from 'rxjs/operators';\nimport { AuthenticationService } from '../../services';\nimport { NzMessageService } from 'ng-zorro-antd/message';\nimport { STATUS_USER } from '../../app.config';\nimport { environment } from 'src/environments/environment';\nimport * as CryptoJS from 'crypto-js';\n\n@Component({\n templateUrl: 'login.component.html',\n styleUrls: ['login.component.scss']\n})\nexport class LoginComponent implements OnInit {\n loginForm: FormGroup;\n loading = false;\n submitted = false;\n returnUrl: string;\n error = '';\n loginType = 'SOFTWARE';\n signUpUrl: string;\n backendUrl: string;\n\n constructor(\n private formBuilder: FormBuilder,\n private route: ActivatedRoute,\n private router: Router,\n private message: NzMessageService,\n private authenticationService: AuthenticationService\n ) {\n // redirect to home if already logged in\n if (this.authenticationService.currentUserValue) {\n this.router.navigate(['/']);\n window.location.replace('/');\n }\n }\n\n ngOnInit() {\n this.loginForm = this.formBuilder.group({\n userName: ['', Validators.required],\n password: ['', Validators.required],\n loginType: [this.loginType, Validators.required],\n });\n\n // get return url from route parameters or default to '/'\n this.returnUrl = this.route.snapshot.queryParams['returnUrl'] || '/';\n this.signUpUrl = environment.backendUrl + 'login?ref=SIGN_UP';\n }\n\n // convenience getter for easy access to form fields\n get f() { return this.loginForm.controls; }\n\n onEncrypt = (plainText: string): string => {\n const b64 = CryptoJS.AES.encrypt(plainText, 'spc@2020').toString();\n const e64 = CryptoJS.enc.Base64.parse(b64);\n return e64.toString(CryptoJS.enc.Hex);\n }\n\n onSubmit() {\n this.submitted = true;\n\n // stop here if form is invalid\n if (this.loginForm.invalid) {\n\n if (this.loginForm.value.userName === '') {\n this.message.error('Username is required')\n return;\n }\n if (this.loginForm.value.password === '') {\n this.message.error('Password is required')\n return;\n }\n }\n this.loading = true;\n if (this.loginForm.value.loginType === 'BACKEND') {\n const _userName = this.onEncrypt(this.loginForm.value.userName);\n const _password = this.onEncrypt(this.loginForm.value.password);\n window.location.href = environment.backendUrl + `login?e=${_userName}&p=${_password}`;\n } else {\n this.authenticationService.login(this.f.userName.value, this.f.password.value)\n .pipe(first())\n .subscribe(\n data => {\n const _status = data.data.user.status;\n if ([STATUS_USER[0].key, STATUS_USER[2].key].includes(_status)) {\n window.location.replace(this.returnUrl);\n } else {\n this.loading = false;\n this.error = 'Unauthorized';\n }\n },\n error => {\n this.error = error;\n this.loading = false;\n });\n }\n }\n}\n","
\n
\n
\n
THE FUTURE IN INSULATED ROOFING AND PANELS
\n \n
\n\n
\n
\n
\n \n
\n
\n

\n \n
\n LOG-IN TO YOUR ACCOUNT\n
\n

\n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n
\n
\n
\n \n \n
\n
\n
\n \n
\n
\n \n \n \n \n
\n
\n \n
{{error}}
\n
\n
\n
\n New to us? Sign Up\n
\n
\n\n
\n
\n
\n
\n Superior Panel Construction is one of Australia’s leading suppliers
of high quality insulated roofing and\n wall cladding panels.\n
\n
\n
\n
\n\n
\n\n
\n
\n \n
\n
\n \n Copyright @ 2020 - SUPERIOR PANEL CONSTRUCTION. All Rights Reserved.\n
\n
\n \n
\n","import { Injectable } from \"@angular/core\";\nimport { BUILDING_SIDE, CONNECTION_TYPE, CUTOUT_ENABLE, EXISTING_BUILDING_CONFIG, FASCIA_BRACKET_FIT, FIT_FLYOVER_BRAKET_ON_ROOF, OBJECT_TYPE } from \"src/app/app.constants\";\nimport { Vector3 } from \"three\";\nimport SelectionManager from \"../selection.manager\";\nimport { UI } from \"src/app/core/ui\";\nimport { HomeComponent } from \"src/app/containers/home\";\nimport ArrowControl from \"src/app/models/ArrowControl.model\";\nimport { MaterialManager } from \"../material.manager\";\nimport { PATIOS_ROOF_TYPE } from \"src/app/app.config\";\nimport _ from \"lodash\"\nimport { Util } from \"../utils\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport { BaseManager } from \"src/app/core/base.manager\";\nimport { UIControl } from \"src/app/models/uicontrol.model\";\n\n@Injectable({ providedIn: 'root' })\nexport class CutBeamManager extends BaseManager {\n controls = [\n UI.Controls.LENGTH1,\n UI.Controls.LENGTH2,\n UI.Controls.WIDTH1,\n UI.Controls.WIDTH2,\n UI.Controls.EXISTING_TYPE,\n UI.Controls.SPAN,\n UI.Controls.MULTI_SPAN,\n UI.Controls.OVERHANG_FRONT,\n UI.Controls.BAYS,\n UI.Controls.OVERHANG_RIGHT,\n UI.Controls.EAVE_WIDTH,\n UI.Controls.STRUCTURE_TYPE,\n UI.Controls.CUTOUT,\n UI.Controls.PATIOS_ROOF_PITCH,\n UI.Controls.FASCIA_DEPTH,\n UI.Controls.EXISTING_ROOF_PITCH,\n UI.Controls.FLYOVER_BRAKET_HEIGHT,\n UI.Controls.FASCIA_UPSTAND_BRAKET,\n UI.Controls.EXISTING_WALL_HEIGHT,\n UI.Controls.ROOF_SHEETING_TYPE,\n UI.Controls.ROOF_THICKNESS\n ]\n \n userData = undefined;\n offset = 200;\n addControlOptions = undefined;\n private utils: Util;\n\n constructor(private selMgr: SelectionManager){\n super()\n this.utils = new Util();\n }\n\n init(): Promise {\n return super.init().then(() => {\n this.userData = { type: OBJECT_TYPE.CUT_BEAM }\n this.addControlOptions = {\n container: this.container,\n userData: { type: OBJECT_TYPE.CUT_BEAM }\n }\n })\n }\n \n load(): Promise{\n return new Promise(resolve => {\n this.container.children = [];\n this.addControl();\n HomeComponent.ins.renderStatic();\n\n resolve()\n })\n }\n \n addControl(){\n this.container.children = [];\n let offsetZ = UI.span + UI.multiSpan - UI.existingWidth1 / 2;\n let offsetX = - UI.totalBayLength / 2;\n\n if (UI.patiosRoofType == PATIOS_ROOF_TYPE.GABLE_ROOF && HomeComponent.ins.isFBRoof) {\n offsetX = UI.span / 2;\n if(\n UI.structureType == CONNECTION_TYPE.FASCIA\n ) {\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n offsetX += UI.eaveWidth\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n offsetX -= UI.eaveWidth\n }\n } else if(\n UI.structureType == CONNECTION_TYPE.FASCIA_UPSTAND\n || UI.structureType == CONNECTION_TYPE.BACK_FASCIA_UPSTAND\n ) {\n if(UI.existingType == BUILDING_SIDE.LEFT) {\n offsetX += UI.eaveWidth + FASCIA_BRACKET_FIT\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n offsetX -= UI.eaveWidth + FASCIA_BRACKET_FIT\n }\n }\n let diff = UI.existingLength1 - UI.span;\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n if(UI.cutOutType == CUTOUT_ENABLE.YES) {\n offsetX -= (diff / 2 + UI.existingLength2)\n } else {\n offsetX -= (diff / 2)\n }\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n if(UI.cutOutType == CUTOUT_ENABLE.YES) {\n offsetX -= (- diff / 2 - UI.existingLength2)\n } else {\n offsetX -= (- diff / 2)\n }\n }\n\n offsetZ = - UI.existingWidth1 / 2;\n if(\n UI.structureType == CONNECTION_TYPE.FASCIA\n ) {\n offsetZ += UI.eaveWidth\n } else if(\n UI.structureType == CONNECTION_TYPE.FASCIA_UPSTAND\n || UI.structureType == CONNECTION_TYPE.BACK_FASCIA_UPSTAND\n ) {\n offsetZ += UI.eaveWidth + FASCIA_BRACKET_FIT\n } else if(\n UI.structureType == CONNECTION_TYPE.FLY_OVER\n || UI.structureType == CONNECTION_TYPE.BLACK_FLY_OVER\n ) {\n offsetZ -= 65\n }\n\n let offsetY = EXISTING_BUILDING_CONFIG.FIT_FROM_TOP_TO_CUTBEAM;\n if(UI.structureType == CONNECTION_TYPE.FLY_OVER) {\n offsetY += UI.eaveHeight + 150 + this.totalHeightFromEaveHeightToTopOfFlyoverBraket()\n } else if(UI.structureType == CONNECTION_TYPE.EXISTING) {\n offsetY += UI.height\n } else if(UI.structureType == CONNECTION_TYPE.FASCIA_UPSTAND) {\n offsetY += UI.eaveHeight + +UI.upstandBraketType + 150\n }\n\n for (let i = 0; i < UI.listBay.length; i++) {\n offsetZ += UI.listBay[i].value\n if (i == UI.listBay.length - 1) {\n return\n }\n\n if (UI.listBay[i].isCut) {\n this.addControlOptions.material = MaterialManager.Instance().UI_CONTROL_EXIT_CUTBEAM;\n } else {\n this.addControlOptions.material = MaterialManager.Instance().UI_CONTROL_CUTBEAM;\n }\n\n new UIControl(\n [0.08,0.08,0.08], \n [offsetX + this.offset, offsetY, offsetZ], \n {\n ...this.addControlOptions,\n userData: {\n type: OBJECT_TYPE.CUT_BEAM,\n bayIndex: i\n }\n }\n );\n }\n } else {\n if(\n UI.structureType == CONNECTION_TYPE.FASCIA\n ) {\n offsetZ += UI.eaveWidth\n } else if(\n UI.structureType == CONNECTION_TYPE.FASCIA_UPSTAND\n || UI.structureType == CONNECTION_TYPE.BACK_FASCIA_UPSTAND\n ) {\n offsetZ += UI.eaveWidth + FASCIA_BRACKET_FIT\n }\n\n if(\n UI.structureType == CONNECTION_TYPE.FASCIA\n ) {\n if (UI.existingType == BUILDING_SIDE.LEFT && !HomeComponent.ins.uiManager.calcShouldSnapRoofToExistingWhenCutout()) {\n offsetX += UI.eaveWidth\n } else if (UI.existingType == BUILDING_SIDE.RIGHT && !HomeComponent.ins.uiManager.calcShouldSnapRoofToExistingWhenCutout()) {\n offsetX -= UI.eaveWidth\n }\n } else if(\n UI.structureType == CONNECTION_TYPE.FASCIA_UPSTAND\n || UI.structureType == CONNECTION_TYPE.BACK_FASCIA_UPSTAND\n ) {\n if(UI.existingType == BUILDING_SIDE.LEFT) {\n offsetX += UI.eaveWidth + FASCIA_BRACKET_FIT\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n offsetX -= UI.eaveWidth + FASCIA_BRACKET_FIT\n }\n }\n let diff = UI.existingLength1 - UI.totalBayLength;\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n if(UI.cutOutType == CUTOUT_ENABLE.YES) {\n offsetX -= (diff / 2 + UI.existingLength2)\n } else {\n offsetX -= (diff / 2)\n }\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n if(UI.cutOutType == CUTOUT_ENABLE.YES) {\n offsetX -= (- diff / 2 - UI.existingLength2)\n } else {\n offsetX -= (- diff / 2)\n }\n }\n\n if(UI.structureType == CONNECTION_TYPE.FREE_STANDING && UI.patiosRoofType == PATIOS_ROOF_TYPE.GABLE_ROOF) {\n offsetZ = (UI.span + UI.multiSpan) / 2\n }\n\n let offsetY = EXISTING_BUILDING_CONFIG.FIT_FROM_TOP_TO_CUTBEAM;\n if(UI.patiosRoofType == PATIOS_ROOF_TYPE.FLAT_ROOF) {\n if(UI.structureType == CONNECTION_TYPE.EXISTING) {\n offsetY += UI.height - this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan)\n } else if(UI.structureType == CONNECTION_TYPE.FLY_OVER) {\n offsetY += UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() - this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan)\n } else if(UI.structureType == CONNECTION_TYPE.BLACK_FLY_OVER) {\n offsetY += UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan)\n } else if(UI.structureType == CONNECTION_TYPE.FASCIA) {\n offsetY += UI.eaveHeight - this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan)\n } else if(UI.structureType == CONNECTION_TYPE.FASCIA_UPSTAND) {\n offsetY += UI.eaveHeight + +UI.upstandBraketType - this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan)\n } else if(UI.structureType == CONNECTION_TYPE.BACK_FASCIA_UPSTAND) {\n offsetY += UI.eaveHeight + +UI.upstandBraketType + 100 - this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan)\n } else if(UI.structureType == CONNECTION_TYPE.FREE_STANDING) {\n offsetY += UI.height - 100 - this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan)\n }\n } else {\n if(UI.structureType == CONNECTION_TYPE.FLY_OVER) {\n offsetY += UI.eaveHeight + 150 + this.totalHeightFromEaveHeightToTopOfFlyoverBraket()\n } else if(UI.structureType == CONNECTION_TYPE.FASCIA_UPSTAND) {\n offsetY += UI.eaveHeight + +UI.upstandBraketType + 150\n } else if(UI.structureType == CONNECTION_TYPE.FREE_STANDING) {\n offsetY += UI.eaveHeight\n }\n }\n\n\n for (let i = 0; i < UI.listBay.length; i++) {\n offsetX += UI.listBay[i].value\n if (i == UI.listBay.length - 1) {\n return\n }\n \n if (UI.listBay[i].isCut) {\n this.addControlOptions.material = MaterialManager.Instance().UI_CONTROL_EXIT_CUTBEAM;\n } else {\n this.addControlOptions.material = MaterialManager.Instance().UI_CONTROL_CUTBEAM;\n }\n \n new UIControl(\n [0.08,0.08,0.08], \n [offsetX, offsetY, offsetZ + this.offset], \n {\n ...this.addControlOptions,\n userData: {\n type: OBJECT_TYPE.CUT_BEAM,\n bayIndex: i\n }\n }\n );\n }\n }\n }\n\n private totalHeightFromEaveHeightToTopOfExistingRoof() {\n const height =\n this.geometryManager.EAVE.EAVE.height +\n UI.fasciaDepth +\n UI.eaveWidth * this.utils.tan(UI.existingRoofPitch) +\n this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.height /\n this.utils.cos(UI.existingRoofPitch);\n \n return height;\n }\n private totalHeightFromEaveHeightToTopOfFlyoverBraket() {\n const height =\n this.totalHeightFromEaveHeightToTopOfExistingRoof() +\n UI.braketHeight -\n FIT_FLYOVER_BRAKET_ON_ROOF;\n \n return height;\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { OBJECT_TYPE } from \"src/app/app.constants\";\nimport { Vector3 } from \"three\";\nimport { BaseManager } from \"src/app/core/base.manager\";\nimport SelectionManager from \"../selection.manager\";\nimport { UI } from \"src/app/core/ui\";\nimport { HomeComponent } from \"src/app/containers/home\";\nimport ClickControl from \"src/app/models/ClickControl.model\";\nimport { PATIOS_ROOF_TYPE } from \"src/app/app.config\";\n\n@Injectable({ providedIn: 'root' })\nexport class CutOutManager extends BaseManager {\n controls = [\n 'sldEaveWidth',\n 'sldExistingWallHeight',\n 'sldFasciaDepth',\n 'sldBaySize',\n 'sldExistingLength',\n 'sldExistingLength2',\n 'sldExistingWidth1',\n 'sldExistingWidth2',\n 'sltExistingType',\n 'sltStructureType',\n 'sltWindClass',\n 'sltWallType',\n 'sltExistingRoofType',\n 'sldMultiSpan',\n 'sldBuildingHeight',\n 'sldFrontOverhang',\n 'sldBackOverhang',\n 'sldLeftOverhang',\n 'sldRightOverhang',\n 'sltRoofPitch',\n 'sldFlyOverBracketHeight',\n 'sldNoOfBay',\n 'dialogEditBay',\n 'sltExistingRoofPitch',\n 'sldRoofOverallLength',\n 'sldRoofOverallWidth',\n 'sldMinHeight',\n 'sltLeftCutType',\n 'sltRightCutType',\n 'sldLeftCutVertical',\n 'sldLeftCutHorizontal',\n 'sldRightCutVertical',\n 'sldRightCutHorizontal',\n 'sltFlatBottom',\n 'sltZFlashingType',\n 'sltRoofSheetingType',\n 'sltBaseFixingType',\n 'sltRoofThickness',\n 'sltBargeType',\n 'sltDownpipeType',\n 'sltGutterType',\n 'sltBeamType',\n 'sltBeamSize',\n 'sltReceiverType',\n 'sltColumnType',\n 'sltColourRoof',\n 'sltColourBarge',\n 'sltColourGutter',\n 'sltColourZFlashing',\n 'sltColourPost',\n 'sltColourBeam',\n 'sltColourBracket',\n 'sltColourFasciaBracket',\n 'sltColourDownpipe',\n 'sltFasciaUpstandBrackets',\n ]\n \n userData = undefined;\n offset = 200;\n startX = 0;\n\n constructor(private selMgr: SelectionManager){\n super()\n }\n\n init(): Promise {\n return super.init().then(() => {\n this.userData = { type: OBJECT_TYPE.CLICK_CONTROL_CUTOUT }\n })\n }\n\n \n\n load(): Promise{\n return new Promise(resolve => {\n this.addControl();\n HomeComponent.ins.renderStatic();\n\n resolve()\n })\n }\n \n addControl(){\n this.container.children = [];\n\n if(this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF){\n return\n }\n\n let cutoutCondition =\n HomeComponent.ins.sltExistingType.currentValue != 0 &&\n HomeComponent.ins.patiosManager.cutoutCondition &&\n HomeComponent.ins.sldExistingWidth1.currentValue > 0 &&\n HomeComponent.ins.sldExistingLength2.currentValue > 0;\n\n if (cutoutCondition) {\n let offsetZ = UI.span + UI.multiSpan + UI.overhangFront - UI.existingWidth1 / 2 - (UI.span + UI.multiSpan + UI.overhangFront - UI.existingWidth1) / 2 ;\n if(UI.cutOutType == 0){\n if(UI.existingType == 1 || UI.existingType == 3){\n new ClickControl(\n this.container, \n { \n pos: new Vector3(- UI.existingLength1 / 2 - this.offset, 0, offsetZ),\n userData: {...this.userData, left: true},\n rotation: new Vector3(Math.PI / 2, 0, Math.PI)\n }\n );\n }\n if(UI.existingType == 2 || UI.existingType == 3){\n new ClickControl(\n this.container, \n { \n pos: new Vector3( UI.existingLength1 / 2 + this.offset, 0, offsetZ),\n userData: {...this.userData, right: true},\n rotation: new Vector3(Math.PI / 2, 0, 0)\n }\n );\n }\n }\n }\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { MOUSE_EVENT, OBJECT_TYPE } from \"src/app/app.constants\";\nimport { UIControl } from \"src/app/models/uicontrol.model\";\nimport { Object3D, Sprite, Vector2, Vector3 } from \"three\";\nimport { BaseManager } from \"src/app/core/base.manager\";\nimport SelectionManager from \"../selection.manager\";\nimport { UI } from \"src/app/core/ui\";\nimport {DragControls} from 'three/examples/jsm/controls/DragControls'\nimport { HomeComponent } from \"src/app/containers/home\";\nimport { MaterialManager } from \"../material.manager\";\nimport ArrowControl from \"src/app/models/ArrowControl.model\";\n\n@Injectable({ providedIn: 'root' })\nexport class EditLength2Manager extends BaseManager {\n controls = [\n UI.Controls.LENGTH1,\n UI.Controls.LENGTH2,\n UI.Controls.WIDTH1,\n UI.Controls.WIDTH2,\n UI.Controls.EXISTING_TYPE\n ]\n \n userData = undefined;\n offset = 400;\n startX = 0;\n\n constructor(private selMgr: SelectionManager){\n super()\n }\n\n init(): Promise {\n return super.init().then(() => {\n this.userData = { type: OBJECT_TYPE.UI_CONTROL_LENGTH2 }\n this.selMgr.addEventListener( 'dragstart', ( event ) => {\n this.startX = event.object.position.x;\n });\n this.selMgr.addEventListener ( 'drag', this.onDrag.bind(this), this.container)\n })\n }\n\n \n\n load(): Promise{\n return new Promise(resolve => {\n this.addControl();\n HomeComponent.ins.renderStatic();\n\n resolve()\n })\n }\n \n addControl(){\n this.container.children = [];\n if(UI.existingLength2){\n return\n }\n if( (UI.existingType == 1 || UI.existingType == 3) && UI.existingWidth1 > 620){\n new ArrowControl(\n this.container, \n { \n pos: new Vector3(- UI.existingLength1 / 2 - this.offset, 0, UI.existingWidth1 / 2),\n userData: {...this.userData, left: true},\n rotation: new Vector3(Math.PI / 2, 0, 0)\n }\n );\n }\n if( (UI.existingType == 2 || UI.existingType == 3) && UI.existingWidth1 > 620){\n new ArrowControl(\n this.container, \n { \n pos: new Vector3( UI.existingLength1 / 2 + this.offset, 0, UI.existingWidth1 / 2),\n userData: {...this.userData, right: true},\n rotation: new Vector3(Math.PI / 2, 0, Math.PI)\n }\n );\n }\n }\n\n onDrag(event){\n if(event.object?.userData?.type === OBJECT_TYPE.UI_CONTROL_LENGTH2){\n event.object.position.y = 0;\n if(event.object?.userData?.left){\n event.object.position.z = UI.existingWidth1 / 2;\n if(event.object.position.x > - UI.existingLength1 / 2 - this.offset){\n event.object.position.x = - UI.existingLength1 / 2 - this.offset;\n return\n }\n }\n if(event.object?.userData?.right){\n event.object.position.z = UI.existingWidth1 / 2;\n if(event.object.position.x < UI.existingLength1 / 2 + this.offset){\n event.object.position.x = UI.existingLength1 / 2 + this.offset;\n return\n }\n }\n let distance = Math.floor(event.object.position.x - UI.existingLength1 / 2 - this.offset);\n if(event.object?.userData?.left){\n distance = Math.floor(- UI.existingLength1 / 2 - this.offset - event.object.position.x);\n }\n \n if (distance > HomeComponent.ins.sldExistingLength2.maxValue){\n distance = HomeComponent.ins.sldExistingLength2.maxValue\n } else if (distance < HomeComponent.ins.sldExistingLength2.minValue){\n distance = HomeComponent.ins.sldExistingLength2.minValue\n }\n HomeComponent.ins.sldExistingLength2.setValue(distance);\n }\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { OBJECT_TYPE } from \"src/app/app.constants\";\nimport { BaseManager } from \"src/app/core/base.manager\";\nimport SelectionManager from \"../selection.manager\";\nimport { UI } from \"src/app/core/ui\";\nimport { HomeComponent } from \"src/app/containers/home\";\nimport { MaterialManager } from \"../material.manager\";\nimport { DeleteControl } from \"src/app/models/DeleteControl.model\";\n@Injectable({ providedIn: 'root' })\nexport class EditWallManager extends BaseManager {\n controls = [\n UI.Controls.LENGTH1,\n UI.Controls.LENGTH2,\n UI.Controls.WIDTH1,\n UI.Controls.WIDTH2,\n UI.Controls.EXISTING_TYPE\n ]\n \n addControlOptions = undefined;\n offset = 1000;\n offsetY = 0;\n\n constructor(private selMgr: SelectionManager){\n super()\n }\n\n init(): Promise {\n return super.init().then(() => {\n this.addControlOptions = {\n container: this.container,\n userData: { type: OBJECT_TYPE.UI_CONTROL_EDIT_WALL_LENGTH1 }\n }\n })\n }\n\n \n\n load(): Promise{\n return new Promise(resolve => {\n this.addControl();\n HomeComponent.ins.renderStatic();\n\n resolve()\n })\n }\n \n addControl(){\n this.container.children = [];\n this.addControlOptions.material = MaterialManager.Instance().UI_CONTROL_DELETE;\n if(UI.existingType == 1 || UI.existingType == 3){\n if(UI.existingWidth1){\n let x = - UI.existingLength1 / 2 - this.offset - 200;\n if(UI.existingLength2){\n x = - UI.existingLength1 / 2 - UI.existingLength2 - 200;\n }\n if(UI.existingWidth2 && UI.existingWidth2 >= 600){\n x = - UI.existingLength1 / 2 - UI.existingLength2 - this.offset - 200;\n } else if(UI.existingWidth2 && UI.existingWidth2 < 600){\n x = - UI.existingLength1 / 2 - UI.existingLength2 - this.offset / 2 - 200;\n } \n let z = 0;\n new DeleteControl([0.06,0.06,0.06], [x, this.offsetY, z], {...this.addControlOptions, userData: { type: OBJECT_TYPE.UI_CONTROL_EDIT_WALL_WIDTH1, left: true }});\n }\n if(UI.existingLength2){\n let x = - UI.existingLength1 / 2 - UI.existingLength2 / 2;\n let z = - UI.existingWidth1 / 2 - this.offset;\n new DeleteControl([0.06,0.06,0.06], [ x, this.offsetY, z], {...this.addControlOptions, userData: { type: OBJECT_TYPE.UI_CONTROL_EDIT_WALL_LENGTH2, left: true }});\n }\n if(UI.existingWidth2){\n let x = - UI.existingLength1 / 2 - UI.existingLength2 - this.offset / 2 - 200;\n if(UI.existingWidth2 > 600){\n x = - UI.existingLength1 / 2 - UI.existingLength2 - this.offset - 200;\n }\n let z = UI.existingWidth1 / 2 + UI.existingWidth2 / 2;\n new DeleteControl([0.06,0.06,0.06], [x, this.offsetY, z], {...this.addControlOptions, userData: { type: OBJECT_TYPE.UI_CONTROL_EDIT_WALL_WIDTH2, left: true }});\n }\n }\n if(UI.existingType == 2 || UI.existingType == 3){\n if(UI.existingWidth1){\n let x = UI.existingLength1 / 2 + this.offset + 200;\n if(UI.existingLength2){\n x = UI.existingLength1 / 2 + UI.existingLength2 + 200;\n }\n if(UI.existingWidth2){\n x = UI.existingLength1 / 2 + UI.existingLength2 + this.offset + 200;\n }\n let z = 0;\n new DeleteControl([0.06,0.06,0.06], [x, this.offsetY, z], {...this.addControlOptions, userData: { type: OBJECT_TYPE.UI_CONTROL_EDIT_WALL_WIDTH1, right: true }});\n }\n if(UI.existingLength2){\n let x = UI.existingLength1 / 2 + UI.existingLength2 / 2;\n let z = - UI.existingWidth1 / 2 - this.offset;\n new DeleteControl([0.06,0.06,0.06], [ x, this.offsetY, z], {...this.addControlOptions, userData: { type: OBJECT_TYPE.UI_CONTROL_EDIT_WALL_LENGTH2, right: true }});\n }\n if(UI.existingWidth2){\n let x = UI.existingLength1 / 2 + UI.existingLength2 + this.offset + 200;\n let z = UI.existingWidth1 / 2 + UI.existingWidth2 / 2;\n new DeleteControl([0.06,0.06,0.06], [x, this.offsetY, z], {...this.addControlOptions, userData: { type: OBJECT_TYPE.UI_CONTROL_EDIT_WALL_WIDTH2, right: true }});\n }\n }\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { MOUSE_EVENT, OBJECT_TYPE } from \"src/app/app.constants\";\nimport { UIControl } from \"src/app/models/uicontrol.model\";\nimport { Object3D, Sprite, Vector2, Vector3 } from \"three\";\nimport { BaseManager } from \"src/app/core/base.manager\";\nimport SelectionManager from \"../selection.manager\";\nimport { UI } from \"src/app/core/ui\";\nimport {DragControls} from 'three/examples/jsm/controls/DragControls'\nimport { HomeComponent } from \"src/app/containers/home\";\nimport { MaterialManager } from \"../material.manager\";\nimport ArrowControl from \"src/app/models/ArrowControl.model\";\n\n@Injectable({ providedIn: 'root' })\nexport class EditWidth2Manager extends BaseManager {\n controls = [\n UI.Controls.LENGTH1,\n UI.Controls.LENGTH2,\n UI.Controls.WIDTH1,\n UI.Controls.WIDTH2,\n UI.Controls.EXISTING_TYPE\n ]\n \n userData = undefined;\n offset = 400;\n startX = 0;\n\n constructor(private selMgr: SelectionManager){\n super()\n }\n\n init(): Promise {\n return super.init().then(() => {\n this.userData = { type: OBJECT_TYPE.UI_CONTROL_WIDTH2 }\n this.selMgr.addEventListener( 'dragstart', ( event ) => {\n this.startX = event.object.position.x;\n });\n this.selMgr.addEventListener ( 'drag', this.onDrag.bind(this), this.container)\n })\n }\n\n \n\n load(): Promise{\n return new Promise(resolve => {\n this.addControl();\n HomeComponent.ins.renderStatic();\n\n resolve()\n })\n }\n \n addControl(){\n this.container.children = [];\n if(UI.existingWidth2){\n return\n }\n if( (UI.existingType == 1 || UI.existingType == 3) && UI.existingLength2 >= 1200){\n new ArrowControl(\n this.container, \n { \n pos: new Vector3(- UI.existingLength1 / 2 - UI.existingLength2, 0, UI.existingWidth1 / 2 + this.offset),\n userData: {...this.userData, left: true},\n rotation: new Vector3(Math.PI / 2, 0, - Math.PI / 2)\n }\n );\n }\n if( (UI.existingType == 2 || UI.existingType == 3) && UI.existingLength2 >= 1200){\n new ArrowControl(\n this.container, \n { \n pos: new Vector3( UI.existingLength1 / 2 + UI.existingLength2, 0, UI.existingWidth1 / 2 + this.offset),\n userData: {...this.userData, right: true},\n rotation: new Vector3(Math.PI / 2, 0, - Math.PI / 2)\n }\n );\n }\n }\n\n onDrag(event){\n if(event.object?.userData?.type === OBJECT_TYPE.UI_CONTROL_WIDTH2){\n event.object.position.y = 0;\n if(event.object?.userData?.left){\n event.object.position.x = - UI.existingLength1 / 2 - UI.existingLength2;\n if(event.object.position.z < UI.existingWidth1 / 2 + this.offset){\n event.object.position.z = UI.existingWidth1 / 2 + this.offset;\n return\n }\n }\n if(event.object?.userData?.right){\n event.object.position.x = UI.existingLength1 / 2 + UI.existingLength2;\n if(event.object.position.z < UI.existingWidth1 / 2 + this.offset){\n event.object.position.z = UI.existingWidth1 / 2 + this.offset;\n return\n }\n }\n let distance = Math.floor(event.object.position.z - UI.existingWidth1 / 2 - this.offset);\n \n if (distance > HomeComponent.ins.sldExistingWidth2.maxValue){\n distance = HomeComponent.ins.sldExistingWidth2.maxValue\n } else if (distance < HomeComponent.ins.sldExistingWidth2.minValue){\n distance = HomeComponent.ins.sldExistingWidth2.minValue\n }\n HomeComponent.ins.sldExistingWidth2.setValue(distance);\n }\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { HomeComponent } from \"src/app/containers/home\";\nimport HighLightBox from \"src/app/models/HighlightBox\";\nimport SelectionManager from \"../selection.manager\";\nimport { UI } from \"../ui\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport default class UIRakecutManager {\n box1: HighLightBox\n updateFnc = this.update.bind(this)\n constructor(private selMgr: SelectionManager){\n\n }\n public init(){\n // HomeComponent.ins.sldBuildingHeight.addAction(this.updateFnc)\n // HomeComponent.ins.sltRoofPitch.addAction(this.updateFnc)\n \n // this.box1 = new HighLightBox(HomeComponent.ins.scene, {\n // x: -(UI.totalBayLength / 2 + UI.overhangLeft), \n // y: UI.height - UI.frontHeight, \n // z: UI.span + UI.multiSpan, \n // selectionManager: this.selMgr\n // })\n }\n\n update(){\n this.box1.position.set(-(UI.totalBayLength / 2 + UI.overhangLeft), UI.height, UI.span + UI.multiSpan)\n }\n}","// import { AppComponent } from \"src/app/app.component\";\nimport {\n BUILDING_SIDE,\n CUTOUT_ENABLE,\n EXISTING_BUILDING_CONFIG,\n FIT_FLYOVER_BRAKET_ON_ROOF,\n RAKECUT_TYPE,\n} from \"src/app/app.constants\";\nimport {\n Box3,\n BoxBufferGeometry,\n BoxHelper,\n BufferGeometry,\n Geometry,\n Group,\n LineSegments,\n Matrix4,\n Mesh,\n Vector3,\n} from \"three\";\nimport { PatiosBackFlyOverManager } from \".\";\nimport { GEOMETRY_CATEGORY, GEOMETRY_TYPE, INIT } from \"../../app.config\";\nimport {\n HomeComponent as AppComponent,\n HomeComponent,\n} from \"../../containers/home/home.component\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport {\n GeometryInfo,\n LineType,\n Print2DView,\n Printing2DGeometry,\n Printing2DLine,\n ViewType,\n} from \"../models\";\nimport { Util, getBeamEndCapCode } from \"../utils\";\nimport { UI } from \"../ui\";\nimport _ from \"lodash\";\n\nexport class ColumnAndPurlinManager {\n private scene: Group;\n private APP: AppComponent;\n private MANAGER: PatiosBackFlyOverManager;\n private downpipeGroup: Group;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private geo_superiorPost: GeometryInfo;\n public geo_superiorBeam: GeometryInfo;\n public geo_superiorHouseBeam: GeometryInfo;\n private geo_beamRakecutLeft: GeometryInfo;\n private geo_beamRakecutRight: GeometryInfo;\n private geo_beamStepRakecutLeft: GeometryInfo;\n private geo_beamStepRakecutRight: GeometryInfo;\n private geo_beamEndCap: GeometryInfo;\n private geo_houseBeamEndCap: GeometryInfo;\n public geo_bracket: GeometryInfo;\n private geo_groundBase: GeometryInfo;\n private geo_downPipe: GeometryInfo;\n private geo_downPipeL: GeometryInfo;\n\n private geoBeamJoint: GeometryInfo;\n private geoHouseBeamJoint: GeometryInfo;\n\n private eventHandleId: any;\n private objectSizeChangedHandle: any;\n\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n\n private totalBaySize: number;\n public extraOffsetZ: number;\n\n private frontPostHeight: number;\n\n private deferHandle;\n private deferTimeout = EXISTING_BUILDING_CONFIG.CUTOUT_DEFFER_TIME_OUT;\n\n public numberOfBracketBack = INIT.DEFAULT_BRACKET_NUMBER;\n public numberOfBracketCutout = INIT.DEFAULT_BRACKET_CUTOUT_NUMBER;\n\n private cutoutExistingBothLength: number;\n private beamLeftCutSizeInfo: any;\n private beamRightCutSizeInfo: any;\n\n constructor(app: AppComponent, backFlyOverManager: PatiosBackFlyOverManager) {\n this.APP = app;\n this.MANAGER = backFlyOverManager;\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n\n this.scene = backFlyOverManager.patiosGroup;\n\n this.registerEvent();\n }\n\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n let bracketHeight = this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n let bracketWidth = this.geometryManager.FLY_OVER_BRACKET.S65x3.width;\n\n this.geo_bracket = new GeometryInfo();\n this.geo_bracket.geometry =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.geometry\n .clone()\n .rotateX(Math.PI / 2)\n .translate(bracketWidth / 2, bracketHeight / 2, bracketWidth / 2);\n this.geo_bracket.width =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.width;\n this.geo_bracket.length =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.length;\n this.geo_bracket.height =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n this.geo_superiorBeam = this.geometryManager.getBeam();\n this.geo_superiorBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_superiorBeam.length / 2,\n this.geo_superiorBeam.height / 2,\n this.geo_superiorBeam.width / 2\n );\n\n this.geoBeamJoint = this.geometryManager.getBeamJoint();\n this.geoHouseBeamJoint = this.geometryManager.getHouseBeamJoint();\n\n this.geo_superiorHouseBeam = this.geometryManager.getHouseBeam();\n this.geo_superiorHouseBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_superiorHouseBeam.length / 2,\n this.geo_superiorHouseBeam.height / 2,\n this.geo_superiorHouseBeam.width / 2\n );\n\n this.geo_beamRakecutLeft = this.geometryManager.getBeam();\n this.geo_beamRakecutLeft.geometry.translate(\n this.geo_beamRakecutLeft.width / 2,\n this.geo_beamRakecutLeft.height / 2,\n -this.geo_beamRakecutLeft.length / 2\n );\n\n this.geo_beamRakecutRight = this.geometryManager.getBeam();\n this.geo_beamRakecutRight.geometry.translate(\n -this.geo_beamRakecutRight.width / 2,\n this.geo_beamRakecutRight.height / 2,\n -this.geo_beamRakecutRight.length / 2\n );\n\n this.geo_beamStepRakecutLeft = this.geometryManager.getBeam();\n this.geo_beamStepRakecutLeft.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_beamStepRakecutLeft.length / 2,\n this.geo_beamStepRakecutLeft.height / 2,\n -this.geo_beamStepRakecutLeft.width / 2\n );\n\n this.geo_beamStepRakecutRight = this.geometryManager.getBeam();\n this.geo_beamStepRakecutRight.geometry\n .rotateY(Math.PI / 2)\n .translate(\n -this.geo_beamStepRakecutRight.length / 2,\n this.geo_beamStepRakecutRight.height / 2,\n -this.geo_beamStepRakecutRight.width / 2\n );\n\n this.geo_beamEndCap = this.geometryManager.getBeamEndCap();\n this.geo_beamEndCap.geometry.translate(\n 0,\n this.geo_beamEndCap.height / 2,\n 0\n );\n\n this.geo_houseBeamEndCap = this.geometryManager.getHouseBeamEndCap();\n this.geo_houseBeamEndCap.geometry.translate(\n 0,\n this.geo_houseBeamEndCap.height / 2,\n 0\n );\n\n this.geo_superiorPost = this.geometryManager.getPost();\n this.geo_superiorPost.geometry\n .rotateX(Math.PI / 2)\n .translate(\n this.geo_superiorPost.width / 2,\n this.geo_superiorPost.height / 2,\n this.geo_superiorPost.width / 2\n );\n\n this.geo_groundBase = new GeometryInfo();\n this.geo_groundBase.width = 1000;\n this.geo_groundBase.height = 1;\n this.geo_groundBase.length = 1000;\n this.geo_groundBase.geometry = new BoxBufferGeometry(\n this.geo_groundBase.width,\n this.geo_groundBase.height,\n this.geo_groundBase.length\n );\n this.geo_groundBase.geometry.translate(\n 0,\n 0,\n this.geo_groundBase.length / 2\n );\n\n this.geo_downPipe = this.geometryManager.getDownPipe();\n this.geo_downPipeL = this.geometryManager.getDownPipeL();\n\n this.scene.remove(\n ...this.scene.children.filter(\n (c) => c.userData.type == GEOMETRY_TYPE.DOWNPIPE\n )\n );\n this.downpipeGroup = new Group();\n this.downpipeGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeGroup);\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET &&\n !x.userData.position.back\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.SUPERIOR_POST &&\n !x.userData.position.back\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.GROUND_BASE\n )\n );\n\n //test\n this.APP.scene.remove(\n ...this.APP.scene.children.filter(\n (o) =>\n o.userData.type == \"OUTLINE\" || o.userData.type == \"COLUMN_OUTLINE\"\n )\n );\n\n this.beamLeftCutSizeInfo = this.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.LEFT\n );\n this.beamRightCutSizeInfo = this.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.RIGHT\n );\n\n this.downpipeGroup.children = [];\n\n this.extraOffsetZ =\n this.APP.existingWallManager.geo_existingWallL1.width +\n this.APP.eaveManager.backOverhang;\n\n this.totalBaySize = UI.totalBayLength;\n this.cutoutExistingBothLength =\n (this.totalBaySize - this.APP.sldExistingLength.currentValue) / 2;\n\n this.addSuperiorBeam({ front: true });\n this.addSuperiorBeam({ back: true });\n this.addBeamAngelRakecut();\n this.addBeamStepRakecut();\n if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.MANAGER.cutoutCondition\n ) {\n this.addSuperiorBeam({ cutout: true });\n }\n if (UI.multiSpan > 0) {\n this.addSuperiorBeam({ multiSpan: true });\n }\n this.addGround();\n\n let offsetX = -this.totalBaySize / 2;\n let first = true;\n let last = false;\n for (let i = 0; i <= this.APP.dialogEditBay.listBay.length; i++) {\n if (i == this.APP.dialogEditBay.listBay.length) {\n last = true;\n }\n this.addPostOrBracket(offsetX, {\n front: true,\n first,\n last,\n left: first,\n right: last,\n });\n\n if (UI.multiSpan > 0) {\n this.addPostOrBracket(offsetX, {\n multiSpan: true,\n first,\n last,\n left: first,\n right: last,\n });\n }\n if (i < this.APP.dialogEditBay.listBay.length) {\n let b = this.APP.dialogEditBay.listBay[i];\n offsetX += b.value;\n }\n first = false;\n }\n offsetX = -this.totalBaySize / 2;\n first = true;\n last = false;\n for (let i = 0; i <= this.APP.dialogEditBay.listBay.length; i++) {\n if (i == this.APP.dialogEditBay.listBay.length) {\n last = true;\n }\n this.addPostAngleRakecut(offsetX, {\n first,\n last,\n left: first,\n right: last,\n });\n\n if (i < this.APP.dialogEditBay.listBay.length) {\n let b = this.APP.dialogEditBay.listBay[i];\n offsetX += b.value;\n }\n first = false;\n }\n //this.getSection();\n this.addPostOrBracketBack();\n this.addPostOrBracketBackCutout();\n this.addPostStepRakecut();\n //this.addDownPipe();\n this.showBeamOutline();\n this.updateUI();\n resolve();\n });\n }\n public showBeamOutline() {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.BEAM_OUTLINE\n )\n );\n\n if (!UI.beamLayoutShow) return;\n\n const objs = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n const meshes = [];\n objs.forEach((el) => {\n if (el.type == \"Group\") {\n meshes.push(\n ...el.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n }\n });\n\n for (let o of meshes) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n o as Mesh,\n 10\n );\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n\n var line = new LineSegments(\n outlineGeo,\n MaterialManager.Instance().BEAM_OUTLINE\n );\n line.userData = { type: GEOMETRY_TYPE.BEAM_OUTLINE };\n this.APP.scene.add(line);\n }\n }\n private getContainerOffsetXToFitBraketToExistingWall() {\n let fitX = 0;\n if (UI.existingType == BUILDING_SIDE.RIGHT) {\n fitX = -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n this.geo_bracket.width\n );\n }\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n fitX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n this.geo_bracket.width;\n }\n\n return fitX;\n }\n private getBraketMaterial(height: number) {\n if (height > HomeComponent.ins.sldFlyOverBracketHeight.maxValue) {\n return MaterialManager.Instance().BRACKET_WARNING;\n } else {\n return MaterialManager.Instance().BRACKET;\n }\n }\n private totalHeightFromEaveHeightToTopOfExistingRoof() {\n const height =\n this.geometryManager.EAVE.EAVE.height +\n UI.fasciaDepth +\n UI.eaveWidth * this.utils.tan(UI.existingRoofPitch) +\n this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.height /\n this.utils.cos(UI.existingRoofPitch);\n\n return height;\n }\n private totalHeightFromEaveHeightToTopOfFlyoverBraket() {\n const height =\n this.totalHeightFromEaveHeightToTopOfExistingRoof() +\n UI.braketHeight -\n FIT_FLYOVER_BRAKET_ON_ROOF;\n\n return height;\n }\n\n public houseBeamHeight() {\n return this.geo_superiorBeam.height - this.geo_superiorHouseBeam.height;\n }\n private updateUI() {\n this.APP.sldMinHeight.setValue(_.round(this.frontPostHeight, 0));\n }\n public getSection(): Printing2DGeometry {\n let objs = this.scene.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_POST ||\n o.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET\n );\n\n //objs = [...objs];\n\n let lsGeometries: Printing2DLine[] = [];\n\n for (let o of objs) {\n let box = new BoxHelper(o);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n //this.scene.add(box);\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: outlineGeo.vertices,\n views: o.userData.views,\n });\n\n // var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"OUTLINE\"};\n // //line.position.set(o.position.x - 5000, o.position.y, o.position.z);\n // this.scene.add( line );\n }\n\n let beamGroups = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n for (let g of beamGroups) {\n for (let c of g.children) {\n c.updateMatrix();\n\n let objCloned = c.clone();\n objCloned.applyMatrix4(new Matrix4().getInverse(c.matrix));\n\n let box = new BoxHelper(objCloned);\n\n c.updateWorldMatrix(true, true);\n\n box.geometry.applyMatrix4(c.matrixWorld);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n //this.APP.scene.add(box);\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n const planView = _.find(\n g.userData.views,\n (el) => el.viewType == ViewType.PLAN\n );\n const anotherViews = _.filter(\n g.userData.views,\n (el) => el.viewType != ViewType.PLAN\n );\n if (anotherViews.length > 0) {\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo.vertices,\n views: anotherViews,\n });\n }\n if (planView) {\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo.vertices\n .slice(0, 8)\n .filter((el, index) => [0, 1, 4, 5].includes(index)),\n views: [planView],\n });\n }\n }\n }\n\n return { lines: lsGeometries, texts: [] };\n }\n public simplifyGeo(geo: BufferGeometry): Geometry {\n let vertices = geo.getAttribute(\"position\").array;\n let lineGeo = new Geometry();\n for (let i = 0; i < vertices.length; i += 3) {\n lineGeo.vertices.push(\n new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2])\n );\n }\n\n //2-3\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n //3-7\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n //7-6\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n //6-2\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n\n //1-4\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n //4-8\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n //8-5\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n //5-1\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n\n //let line = new LineSegments(lineGeo, new LineBasicMaterial({color: new Color('red')}));\n //this.scene.add(line);\n return lineGeo;\n }\n private addGround() {\n this.totalBaySize = this.APP.dialogEditBay.listBay.reduce(\n (total, val) => total + val.value,\n 0\n );\n let offsetZ =\n UI.existingWidth1 / 2 +\n this.extraOffsetZ +\n this.APP.sldBackOverhang.currentValue;\n let width = this.totalBaySize + UI.overhangLeft + UI.overhangRight;\n let length =\n UI.span +\n UI.multiSpan +\n UI.overhangFront +\n this.APP.sldBackOverhang.currentValue;\n\n let base = new Mesh(\n this.geo_groundBase.geometry,\n MaterialManager.Instance().BASE\n );\n base.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GROUND_BASE,\n };\n base.position.set(0, 0, -offsetZ);\n base.scale.set(\n width / this.geo_groundBase.width,\n 1,\n length / this.geo_groundBase.length\n );\n\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2;\n if (UI.existingType == 1) {\n base.position.setX(offsetX);\n }\n if (UI.existingType == 2) {\n base.position.setX(-offsetX);\n }\n\n this.scene.add(base);\n }\n private addPostOrBracket(offsetX: number, userDataPos: any): void {\n let meshPost = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n meshPost.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let offsetY =\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfExistingRoof() -\n FIT_FLYOVER_BRAKET_ON_ROOF;\n\n let postOffsetZ = 0;\n let bracketOffsetZ = 0;\n\n let scalePostY = 1;\n let scaleBracketY = 1;\n\n let views: Print2DView[];\n\n if (userDataPos.front) {\n postOffsetZ = UI.span - UI.existingWidth1 / 2 - this.extraOffsetZ;\n bracketOffsetZ = UI.span - UI.existingWidth1 / 2 - this.extraOffsetZ;\n if (UI.multiSpan > 0) {\n postOffsetZ -= this.geo_superiorPost.width / 2;\n bracketOffsetZ -= this.geometryManager.FLY_OVER_BRACKET.S65x3.width / 2;\n } else {\n postOffsetZ -= this.geo_superiorPost.width;\n bracketOffsetZ -= this.geometryManager.FLY_OVER_BRACKET.S65x3.width;\n }\n\n this.frontPostHeight = UI.eaveHeight + this.getBracketHeight(UI.span);\n scalePostY = this.frontPostHeight / this.geo_superiorPost.height;\n scaleBracketY =\n (this.getBracketHeight(UI.span) -\n this.totalHeightFromEaveHeightToTopOfExistingRoof() +\n FIT_FLYOVER_BRAKET_ON_ROOF) /\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n if (userDataPos.multiSpan) {\n postOffsetZ =\n UI.multiSpan +\n UI.span -\n UI.existingWidth1 / 2 -\n this.geo_superiorPost.width -\n this.extraOffsetZ;\n bracketOffsetZ =\n UI.multiSpan +\n UI.span -\n UI.existingWidth1 / 2 -\n this.geometryManager.FLY_OVER_BRACKET.S65x3.width -\n this.extraOffsetZ;\n scalePostY =\n (UI.eaveHeight + this.getBracketHeight(UI.span + UI.multiSpan)) /\n this.geo_superiorPost.height;\n scaleBracketY =\n (this.getBracketHeight(UI.span + UI.multiSpan) -\n this.totalHeightFromEaveHeightToTopOfExistingRoof() +\n FIT_FLYOVER_BRAKET_ON_ROOF) /\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n meshPost.userData.views = views;\n\n let bracketOffsetX = offsetX;\n let postOffsetX = offsetX;\n if (userDataPos.first) {\n } else if (userDataPos.last) {\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n } else {\n bracketOffsetX -= this.geo_bracket.width / 2;\n postOffsetX -= this.geo_superiorPost.width / 2;\n }\n\n let exceedMoveBackLimit = false;\n //Rakecut\n if (\n UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE ||\n UI.rakeCutLeftType == RAKECUT_TYPE.STEP\n ) {\n let moveToBack = false;\n if (UI.multiSpan > 0) {\n if (userDataPos.multiSpan && userDataPos.first) {\n moveToBack = true;\n }\n } else {\n if (!userDataPos.multiSpan && userDataPos.first) {\n moveToBack = true;\n }\n }\n\n if (moveToBack) {\n if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n let moveBack = UI.rakeCutLeftVer;\n if (moveBack > 0) {\n postOffsetZ -= moveBack;\n bracketOffsetZ -= moveBack;\n let length = UI.span + UI.multiSpan - moveBack;\n scalePostY =\n this.utils.getHeightByAngle(\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n length,\n UI.patiosPitch,\n 1\n ) / this.geo_superiorPost.height;\n scaleBracketY =\n (this.getBracketHeight(\n UI.span + UI.multiSpan - UI.rakeCutLeftVer\n ) -\n this.totalHeightFromEaveHeightToTopOfExistingRoof() +\n FIT_FLYOVER_BRAKET_ON_ROOF) /\n this.geo_bracket.height;\n }\n } else if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n postOffsetX -= UI.overhangLeft;\n bracketOffsetX -= UI.overhangLeft;\n postOffsetZ -=\n this.beamLeftCutSizeInfo.v + this.beamLeftCutSizeInfo.k_;\n bracketOffsetZ -=\n this.beamLeftCutSizeInfo.v + this.beamLeftCutSizeInfo.k_;\n let length =\n UI.span +\n UI.multiSpan -\n (this.beamLeftCutSizeInfo.v + this.beamLeftCutSizeInfo.k_);\n scalePostY =\n this.utils.getHeightByAngle(\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n length,\n UI.patiosPitch,\n 1\n ) / this.geo_superiorPost.height;\n scaleBracketY =\n (this.getBracketHeight(\n UI.span +\n UI.multiSpan -\n (this.beamLeftCutSizeInfo.v + this.beamLeftCutSizeInfo.k_)\n ) -\n this.totalHeightFromEaveHeightToTopOfExistingRoof() +\n FIT_FLYOVER_BRAKET_ON_ROOF) /\n this.geo_bracket.height;\n if (\n UI.rakeCutLeftVer + this.beamLeftCutSizeInfo.k_ >\n this.MANAGER.patiosLength\n ) {\n exceedMoveBackLimit = true;\n }\n }\n\n //if rake cut is on then do not add post left and right\n //left and right post will be added in individual function\n //return;\n }\n }\n if (\n UI.rakeCutRightType == RAKECUT_TYPE.ANGLE ||\n UI.rakeCutRightType == RAKECUT_TYPE.STEP\n ) {\n let moveToBack = false;\n if (UI.multiSpan > 0) {\n if (userDataPos.multiSpan && userDataPos.last) {\n moveToBack = true;\n }\n } else {\n if (!userDataPos.multiSpan && userDataPos.last) {\n moveToBack = true;\n }\n }\n\n if (moveToBack) {\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n postOffsetX += UI.overhangRight;\n bracketOffsetX += UI.overhangRight;\n postOffsetZ -=\n this.beamRightCutSizeInfo.v + this.beamRightCutSizeInfo.k_;\n bracketOffsetZ -=\n this.beamRightCutSizeInfo.v + this.beamRightCutSizeInfo.k_;\n\n let length =\n UI.span +\n UI.multiSpan -\n (this.beamRightCutSizeInfo.v + this.beamRightCutSizeInfo.k_);\n scalePostY =\n this.utils.getHeightByAngle(\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n length,\n UI.patiosPitch,\n 1\n ) / this.geo_superiorPost.height;\n scaleBracketY =\n (this.getBracketHeight(\n UI.span +\n UI.multiSpan -\n (this.beamRightCutSizeInfo.v + this.beamRightCutSizeInfo.k_)\n ) -\n this.totalHeightFromEaveHeightToTopOfExistingRoof() +\n FIT_FLYOVER_BRAKET_ON_ROOF) /\n this.geo_bracket.height;\n if (\n UI.rakeCutRightVer + this.beamRightCutSizeInfo.k_ >\n this.MANAGER.patiosLength\n ) {\n exceedMoveBackLimit = true;\n }\n } else if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n let moveBack = UI.rakeCutRightVer;\n if (moveBack > 0) {\n postOffsetZ -= moveBack;\n bracketOffsetZ -= moveBack;\n let length = UI.span + UI.multiSpan - moveBack;\n scalePostY =\n this.utils.getHeightByAngle(\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n length,\n UI.patiosPitch,\n 1\n ) / this.geo_superiorPost.height;\n scaleBracketY =\n (this.getBracketHeight(\n UI.span + UI.multiSpan - UI.rakeCutRightVer\n ) -\n this.totalHeightFromEaveHeightToTopOfExistingRoof() +\n FIT_FLYOVER_BRAKET_ON_ROOF) /\n this.geo_bracket.height;\n }\n }\n\n //if rake cut is on then do not add post left and right\n //left and right post will be added in individual function\n //return;\n }\n }\n //End rakecut\n\n //post can not go behind existing wall\n if (exceedMoveBackLimit) {\n return;\n }\n\n meshPost.position.set(postOffsetX, 0, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n\n let meshBracket = new Mesh(\n this.geo_bracket.geometry,\n this.getBraketMaterial(\n scaleBracketY * this.geometryManager.FLY_OVER_BRACKET.S65x3.height\n )\n );\n meshBracket.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n meshBracket.userData.views = views;\n meshBracket.position.set(bracketOffsetX, offsetY, bracketOffsetZ);\n meshBracket.scale.setY(scaleBracketY);\n\n let boxPost = new Box3().setFromObject(meshPost);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n if (isIntersect) {\n if (\n meshBracket.userData.position.left &&\n UI.existingType != BUILDING_SIDE.BOTH\n ) {\n meshBracket.translateX(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n );\n } else if (\n meshBracket.userData.position.right &&\n UI.existingType != BUILDING_SIDE.BOTH\n ) {\n meshBracket.translateX(\n -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n )\n );\n }\n this.scene.add(meshBracket);\n } else {\n if (UI.existingType == 1) {\n meshPost.translateX(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n );\n } else if (UI.existingType == 2) {\n meshPost.translateX(\n -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n )\n );\n }\n this.scene.add(meshPost);\n }\n }\n public addPostOrBracketBack(): void {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET &&\n x.userData.position.back\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.SUPERIOR_POST &&\n x.userData.position.back\n )\n );\n\n let first = true;\n let last = false;\n let offsetX = -this.totalBaySize / 2;\n let userDataPos = { back: true };\n\n let bracketDistance = this.totalBaySize / (this.numberOfBracketBack - 1);\n let extraWalWidth =\n this.APP.existingWallManager.geo_existingWallL1.width +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES &&\n this.MANAGER.cutoutCondition\n ) {\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n offsetX += this.APP.sldExistingLength2.currentValue;\n bracketDistance =\n (this.totalBaySize - this.APP.sldExistingLength2.currentValue) /\n (this.numberOfBracketBack - 1);\n } else {\n offsetX += this.APP.sldExistingLength2.currentValue - extraWalWidth;\n bracketDistance =\n (this.totalBaySize -\n this.APP.sldExistingLength2.currentValue +\n extraWalWidth) /\n (this.numberOfBracketBack - 1);\n }\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n bracketDistance =\n (UI.totalBayLength -\n this.APP.sldExistingLength2.currentValue +\n extraWalWidth) /\n (this.numberOfBracketBack - 1);\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n bracketDistance =\n (this.totalBaySize - this.APP.sldExistingLength2.currentValue) /\n (this.numberOfBracketBack - 1);\n }\n } else if (UI.existingType == BUILDING_SIDE.BOTH) {\n offsetX += this.cutoutExistingBothLength - extraWalWidth;\n bracketDistance =\n (this.APP.sldExistingLength.currentValue + extraWalWidth * 2) /\n (this.numberOfBracketBack - 1);\n }\n }\n\n for (let i = 0; i < this.numberOfBracketBack; i++) {\n if (i == this.numberOfBracketBack - 1) {\n last = true;\n }\n\n let meshPost = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n meshPost.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let offsetY =\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfExistingRoof() -\n FIT_FLYOVER_BRAKET_ON_ROOF;\n\n let postOffsetZ = 0;\n let bracketOffsetZ = 0;\n\n let scalePostY = 1;\n let scaleBracketY = 1;\n\n let views: Print2DView[];\n\n postOffsetZ = -UI.existingWidth1 / 2 - this.extraOffsetZ;\n bracketOffsetZ = -UI.existingWidth1 / 2 - this.extraOffsetZ;\n scalePostY =\n (UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket()) /\n this.geo_superiorPost.height;\n scaleBracketY =\n (UI.braketHeight + this.houseBeamHeight()) / this.geo_bracket.height;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n meshPost.userData.views = views;\n\n let bracketOffsetX = offsetX;\n let postOffsetX = offsetX;\n if (first) {\n } else if (last) {\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n } else {\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n }\n\n meshPost.position.set(postOffsetX, 0, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n\n let meshBracket = new Mesh(\n this.geo_bracket.geometry,\n this.getBraketMaterial(scaleBracketY * this.geo_bracket.height)\n );\n meshBracket.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n meshBracket.userData.views = views;\n meshBracket.position.set(bracketOffsetX, offsetY, bracketOffsetZ);\n meshBracket.scale.setY(scaleBracketY);\n\n //Check intersect eave\n let boxPost = new Box3().setFromObject(meshPost);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n if (isIntersect) {\n if (i == 0 && (UI.existingType == 1 || UI.existingType == 3)) {\n meshBracket.translateX(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.MANAGER.columnAndPurlinManager.geo_bracket?.width || 0) / 2\n );\n } else if (last && (UI.existingType == 2 || UI.existingType == 3)) {\n meshBracket.translateX(\n -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.MANAGER.columnAndPurlinManager.geo_bracket?.width || 0) / 2\n )\n );\n }\n this.scene.add(meshBracket);\n } else {\n this.scene.add(meshPost);\n }\n\n if (i < this.numberOfBracketBack) {\n offsetX += bracketDistance;\n }\n first = false;\n }\n }\n public addPostOrBracketBackCutout(): void {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET &&\n x.userData.position.back &&\n x.userData.position.cutout\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.SUPERIOR_POST &&\n x.userData.position.back &&\n x.userData.position.cutout\n )\n );\n\n if (\n this.APP.sltCutOut.currentValue != CUTOUT_ENABLE.YES ||\n !this.MANAGER.cutoutCondition\n )\n return;\n\n let first = true;\n let last = false;\n let offsetXL = -this.totalBaySize / 2;\n let offsetXR = this.totalBaySize / 2;\n let userDataPos = { back: true, cutout: true };\n\n let extraWalWidth =\n this.APP.existingWallManager.geo_existingWallL1.width +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n let bracketDistance =\n (this.APP.sldExistingLength2.currentValue - extraWalWidth) /\n (this.numberOfBracketCutout - 1);\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n bracketDistance =\n this.APP.sldExistingLength2.currentValue /\n (this.numberOfBracketCutout - 1);\n }\n\n if (\n UI.existingType == BUILDING_SIDE.LEFT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n for (let i = 0; i < this.numberOfBracketCutout; i++) {\n if (i == this.numberOfBracketCutout - 1) {\n last = true;\n }\n\n let meshPost = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n meshPost.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let offsetY =\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfExistingRoof() -\n FIT_FLYOVER_BRAKET_ON_ROOF;\n\n let postOffsetZ =\n -UI.existingWidth1 / 2 - this.extraOffsetZ + UI.existingWidth1;\n let bracketOffsetZ =\n -UI.existingWidth1 / 2 - this.extraOffsetZ + UI.existingWidth1;\n\n let views: Print2DView[];\n\n let scalePostY =\n this.utils.getHeightByAngle(\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.existingWidth1,\n UI.patiosPitch,\n 1\n ) / this.geo_superiorPost.height;\n let scaleBracketY =\n (this.utils.getHeightByAngle(\n UI.braketHeight,\n UI.existingWidth1,\n UI.patiosPitch,\n 1\n ) +\n this.houseBeamHeight()) /\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n meshPost.userData.views = views;\n\n let bracketOffsetX = offsetXL;\n let postOffsetX = offsetXL - this.geo_bracket.width;\n\n if (first) {\n } else if (last) {\n } else {\n bracketOffsetX -= this.geo_bracket.width / 2;\n postOffsetX -= this.geo_superiorPost.width / 2;\n }\n\n meshPost.position.set(postOffsetX, 0, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n\n let meshBracket = new Mesh(\n this.geo_bracket.geometry,\n this.getBraketMaterial(\n scaleBracketY * this.geometryManager.FLY_OVER_BRACKET.S65x3.height\n )\n );\n meshBracket.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n meshBracket.userData.views = views;\n meshBracket.position.set(bracketOffsetX, offsetY, bracketOffsetZ);\n meshBracket.scale.setY(scaleBracketY);\n\n //Check intersect eave\n let boxPost = new Box3().setFromObject(meshPost);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n if (isIntersect) {\n if (UI.existingType == 1) {\n meshBracket.translateX(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n );\n }\n this.scene.add(meshBracket);\n } else {\n this.scene.add(meshPost);\n }\n\n if (i < this.numberOfBracketCutout) {\n offsetXL += bracketDistance;\n }\n first = false;\n }\n }\n\n if (\n UI.existingType == BUILDING_SIDE.RIGHT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n first = true;\n for (let i = 0; i < this.numberOfBracketCutout; i++) {\n if (i == this.numberOfBracketCutout - 1) {\n last = true;\n }\n\n let meshPost = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n meshPost.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let offsetY =\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfExistingRoof() -\n FIT_FLYOVER_BRAKET_ON_ROOF;\n\n let postOffsetZ =\n -UI.existingWidth1 / 2 - this.extraOffsetZ + UI.existingWidth1;\n let bracketOffsetZ =\n -UI.existingWidth1 / 2 - this.extraOffsetZ + UI.existingWidth1;\n\n let views: Print2DView[];\n\n let scalePostY =\n this.utils.getHeightByAngle(\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.existingWidth1,\n UI.patiosPitch,\n 1\n ) / this.geo_superiorPost.height;\n let scaleBracketY =\n (this.utils.getHeightByAngle(\n UI.braketHeight,\n UI.existingWidth1,\n UI.patiosPitch,\n 1\n ) +\n this.houseBeamHeight()) /\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n views = [\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n meshPost.userData.views = views;\n\n let bracketOffsetX = offsetXR;\n let postOffsetX = offsetXR;\n if (first) {\n if (\n UI.existingType == BUILDING_SIDE.RIGHT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n }\n } else if (last) {\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n } else {\n bracketOffsetX -= this.geo_bracket.width / 2;\n postOffsetX -= this.geo_superiorPost.width / 2;\n }\n\n meshPost.position.set(postOffsetX, 0, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n\n let meshBracket = new Mesh(\n this.geo_bracket.geometry,\n this.getBraketMaterial(\n scaleBracketY * this.geometryManager.FLY_OVER_BRACKET.S65x3.height\n )\n );\n meshBracket.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n meshBracket.userData.views = views;\n meshBracket.position.set(bracketOffsetX, offsetY, bracketOffsetZ);\n meshBracket.scale.setY(scaleBracketY);\n\n //Check intersect eave\n let boxPost = new Box3().setFromObject(meshPost);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n if (isIntersect) {\n if (UI.existingType == 2) {\n meshBracket.translateX(\n -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n )\n );\n }\n this.scene.add(meshBracket);\n } else {\n this.scene.add(meshPost);\n }\n\n if (i < this.numberOfBracketCutout) {\n offsetXR -= bracketDistance;\n }\n first = false;\n }\n }\n }\n public addPostAngleRakecut(offsetX: number, userDataPos: any) {\n if (\n UI.rakeCutLeftType != RAKECUT_TYPE.ANGLE &&\n UI.rakeCutRightType != RAKECUT_TYPE.ANGLE\n ) {\n return;\n }\n\n //let height = (this.APP.sldBuildingHeight.currentValue - this.getHeightByRoofPitch(true) - (this.beamInfo.height));\n let postOffsetZ =\n UI.multiSpan +\n UI.span -\n UI.existingWidth1 / 2 -\n this.geo_superiorPost.width -\n this.extraOffsetZ;\n let bracketOffsetZ =\n UI.multiSpan +\n UI.span -\n UI.existingWidth1 / 2 -\n this.geometryManager.FLY_OVER_BRACKET.S65x3.width -\n this.extraOffsetZ;\n let scalePostY =\n (UI.eaveHeight + this.getBracketHeight(UI.span + UI.multiSpan)) /\n this.geo_superiorPost.height;\n let scaleBracketY =\n this.getBracketHeight(UI.span + UI.multiSpan) / this.geo_bracket.height;\n let offsetY = UI.eaveHeight;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n if (userDataPos.first) {\n let postLeft = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n postLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n postLeft.position.set(\n offsetX + this.beamLeftCutSizeInfo.l,\n 0,\n postOffsetZ\n );\n postLeft.scale.setY(scalePostY);\n\n let bracketLeft = new Mesh(\n this.geo_bracket.geometry,\n this.getBraketMaterial(scaleBracketY * this.geo_bracket.height)\n );\n bracketLeft.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n views: views,\n };\n bracketLeft.position.set(\n offsetX + this.beamLeftCutSizeInfo.l,\n offsetY,\n bracketOffsetZ\n );\n bracketLeft.scale.setY(scaleBracketY);\n\n let boxPost = new Box3().setFromObject(postLeft);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n let isIntersectPost = false;\n this.scene.children\n .filter((el) => el.userData.type == GEOMETRY_TYPE.SUPERIOR_POST)\n .forEach((el) => {\n el.updateWorldMatrix(true, true);\n let boxEl = new Box3().setFromObject(el);\n if (boxPost.intersectsBox(boxEl)) {\n isIntersectPost = true;\n }\n });\n\n if (isIntersect && !isIntersectPost) {\n this.scene.add(bracketLeft);\n } else if (!isIntersectPost) {\n this.scene.add(postLeft);\n }\n }\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n if (userDataPos.last) {\n let postLeft = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n postLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n postLeft.position.set(\n offsetX - this.beamRightCutSizeInfo.l - this.geo_superiorPost.width,\n 0,\n postOffsetZ\n );\n postLeft.scale.setY(scalePostY);\n\n let bracketLeft = new Mesh(\n this.geo_bracket.geometry,\n this.getBraketMaterial(scaleBracketY * this.geo_bracket.height)\n );\n bracketLeft.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n views: views,\n };\n bracketLeft.position.set(\n offsetX - this.beamRightCutSizeInfo.l - this.geo_superiorBeam.width,\n offsetY,\n bracketOffsetZ\n );\n bracketLeft.scale.setY(scaleBracketY);\n\n let boxPost = new Box3().setFromObject(postLeft);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n let isIntersectPost = false;\n this.scene.children\n .filter((el) => el.userData.type == GEOMETRY_TYPE.SUPERIOR_POST)\n .forEach((el) => {\n el.updateWorldMatrix(true, true);\n let boxEl = new Box3().setFromObject(el);\n if (boxPost.intersectsBox(boxEl)) {\n isIntersectPost = true;\n }\n });\n\n if (isIntersect && !isIntersectPost) {\n this.scene.add(bracketLeft);\n } else if (!isIntersectPost) {\n this.scene.add(postLeft);\n }\n }\n }\n }\n private addPostStepRakecut() {\n if (\n UI.rakeCutLeftType != RAKECUT_TYPE.STEP &&\n UI.rakeCutRightType != RAKECUT_TYPE.STEP\n ) {\n return;\n }\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n let userDataPos = { rakecut: true };\n\n const fitX = this.getContainerOffsetXToFitBraketToExistingWall();\n let offsetXL = -UI.totalBayLength / 2 + fitX;\n let offsetXR = UI.totalBayLength / 2 - this.geo_superiorPost.width + fitX;\n let offsetZF =\n UI.span +\n UI.multiSpan -\n UI.existingWidth1 / 2 -\n this.extraOffsetZ -\n this.geo_superiorPost.width;\n let scaleYF =\n this.utils.getHeightByAngle(\n UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n 1\n ) / this.geo_superiorPost.height;\n\n let moveRight = UI.rakeCutLeftHor - UI.overhangLeft;\n if (moveRight > 0) {\n offsetXL += moveRight;\n }\n\n let moveLeft = UI.rakeCutRightHor - UI.overhangRight;\n if (moveLeft > 0) {\n offsetXR -= moveLeft;\n }\n\n let posts: Array = [];\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n let offsetZB = offsetZF;\n let scaleYB = scaleYF;\n let moveBack = UI.rakeCutLeftVer;\n if (moveBack > 0) {\n offsetZB -= moveBack;\n scaleYB =\n this.utils.getHeightByAngle(\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n 1\n ) / this.geo_superiorPost.height;\n }\n\n let postFront = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n postFront.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: { ...userDataPos, left: true },\n views: views,\n };\n postFront.position.set(offsetXL, 0, offsetZF);\n postFront.scale.setY(scaleYF);\n //this.scene.add(postFront);\n posts.push(postFront);\n\n let postBack = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n postBack.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: { ...userDataPos, left: true },\n views: views,\n };\n postBack.position.set(offsetXL, 0, offsetZB);\n postBack.scale.setY(scaleYB);\n //this.scene.add(postBack);\n posts.push(postBack);\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n let offsetZB = offsetZF;\n let scaleYB = scaleYF;\n let moveBack = UI.rakeCutRightVer;\n if (moveBack > 0) {\n offsetZB -= moveBack;\n scaleYB =\n this.utils.getHeightByAngle(\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n 1\n ) / this.geo_superiorPost.height;\n }\n\n let postFront = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n postFront.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: { ...userDataPos, right: true },\n views: views,\n };\n postFront.position.set(offsetXR, 0, offsetZF);\n postFront.scale.setY(scaleYF);\n //this.scene.add(postFront);\n posts.push(postFront);\n\n let postBack = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n postBack.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: { ...userDataPos, right: true },\n views: views,\n };\n postBack.position.set(offsetXR, 0, offsetZB);\n postBack.scale.setY(scaleYB);\n //this.scene.add(postBack);\n posts.push(postBack);\n }\n\n for (let post of posts) {\n let boxPost = new Box3().setFromObject(post);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n if (isIntersect) {\n let height =\n post.scale.y * this.geo_superiorPost.height - UI.eaveHeight;\n let scaleY = height / this.geo_bracket.height;\n\n let bracket = new Mesh(\n this.geo_bracket.geometry,\n this.getBraketMaterial(height)\n );\n bracket.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n bracket.position.set(post.position.x, UI.eaveHeight, post.position.z);\n bracket.scale.setY(scaleY);\n this.scene.add(bracket);\n } else {\n this.scene.add(post);\n }\n }\n }\n public addSuperiorBeam(userDataPos: any) {\n let offsetZ = 0;\n let offsetY = 0;\n let offsetX = -this.totalBaySize / 2 - UI.overhangLeft;\n\n let beamLength = this.totalBaySize + UI.overhangLeft + UI.overhangRight;\n let extraWallWidth =\n this.APP.existingWallManager.geo_existingWallW1.width +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n let views: Print2DView[];\n\n if (userDataPos.front) {\n offsetY = UI.eaveHeight + this.getBracketHeight(UI.span);\n offsetZ = UI.span - UI.existingWidth1 / 2 - this.extraOffsetZ;\n\n if (UI.multiSpan > 0) {\n offsetZ -= this.geo_superiorBeam.width / 2;\n } else {\n offsetZ -= this.geo_superiorBeam.width;\n }\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.back) {\n offsetY =\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.houseBeamHeight();\n // offsetZ = -(UI.span/2 - this.geometryManager.FLY_OVER_BRACKET.S65x3.width - 200);\n offsetZ = -UI.existingWidth1 / 2 - this.extraOffsetZ;\n\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES &&\n this.MANAGER.cutoutCondition\n ) {\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n offsetX += this.APP.sldExistingLength2.currentValue;\n beamLength =\n this.totalBaySize +\n UI.overhangLeft +\n UI.overhangRight -\n this.APP.sldExistingLength2.currentValue;\n } else {\n offsetX +=\n this.APP.sldExistingLength2.currentValue - extraWallWidth;\n beamLength =\n this.totalBaySize +\n UI.overhangLeft +\n UI.overhangRight -\n this.APP.sldExistingLength2.currentValue +\n extraWallWidth;\n }\n\n offsetX += UI.overhangLeft;\n beamLength -= UI.overhangLeft;\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n beamLength =\n this.totalBaySize +\n UI.overhangLeft +\n UI.overhangRight -\n this.APP.sldExistingLength2.currentValue +\n extraWallWidth;\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n beamLength =\n this.totalBaySize +\n UI.overhangLeft +\n UI.overhangRight -\n this.APP.sldExistingLength2.currentValue;\n }\n\n //offsetX -= UI.overhangRight;\n beamLength -= UI.overhangRight;\n } else if (UI.existingType == BUILDING_SIDE.BOTH) {\n offsetX +=\n (this.totalBaySize -\n (this.APP.sldExistingLength.currentValue +\n this.APP.existingWallManager.geo_existingWallW1.width * 2)) /\n 2 -\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n beamLength =\n this.APP.sldExistingLength.currentValue +\n this.APP.existingWallManager.geo_existingWallW1.width * 2 +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK * 2;\n }\n }\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.multiSpan) {\n offsetY = UI.eaveHeight + this.getBracketHeight(UI.span + UI.multiSpan);\n offsetZ =\n UI.multiSpan +\n UI.span -\n UI.existingWidth1 / 2 -\n this.geo_superiorBeam.width -\n this.extraOffsetZ;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.cutout) {\n offsetY =\n UI.eaveHeight +\n this.getBracketHeight(UI.existingWidth1) +\n this.houseBeamHeight();\n offsetZ = UI.existingWidth1 - UI.existingWidth1 / 2 - this.extraOffsetZ;\n // offsetX += this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + ( this.geo_bracket?.width || 0)/2\n //scaleX = (this.totalBaySize - (this.APP.sldExistingLength.currentValue + this.APP.existingWallManager.geo_existingWallW1.width * 2))/2/this.geo_superiorBeam.length;\n beamLength =\n this.APP.sldExistingLength2.currentValue -\n this.APP.existingWallManager.geo_existingWallW1.width;\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n beamLength += extraWallWidth;\n }\n\n beamLength +=\n UI.overhangLeft +\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2;\n }\n if (UI.existingType == BUILDING_SIDE.RIGHT) {\n views = [\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n offsetX =\n this.totalBaySize / 2 +\n UI.overhangRight -\n this.APP.sldExistingLength2.currentValue +\n this.APP.existingWallManager.geo_existingWallW1.width;\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n beamLength += extraWallWidth;\n offsetX =\n this.totalBaySize / 2 +\n UI.overhangRight -\n this.APP.sldExistingLength2.currentValue -\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n }\n\n offsetX -=\n UI.overhangRight +\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2;\n beamLength +=\n UI.overhangRight +\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2;\n } else if (UI.existingType == BUILDING_SIDE.BOTH) {\n beamLength =\n (this.totalBaySize - this.APP.sldExistingLength.currentValue) / 2 -\n this.APP.existingWallManager.geo_existingWallW1.width -\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK +\n this.geo_bracket.width +\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2;\n }\n }\n\n //rake cut\n if (\n (UI.multiSpan <= 0 && userDataPos.front) ||\n (UI.multiSpan > 0 && userDataPos.multiSpan)\n ) {\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n offsetX += this.beamLeftCutSizeInfo.l;\n beamLength -= this.beamLeftCutSizeInfo.l;\n } else if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n offsetX += UI.rakeCutLeftHor;\n beamLength -= UI.rakeCutLeftHor;\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n beamLength -= this.beamRightCutSizeInfo.l;\n } else if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n beamLength -= UI.rakeCutRightHor;\n }\n }\n\n if (UI.existingType == BUILDING_SIDE.RIGHT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.geo_bracket?.width || 0);\n offsetX -= fitZ;\n }\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.geo_bracket?.width || 0);\n offsetX += fitZ;\n }\n if (userDataPos.front || userDataPos.multiSpan) {\n this.cutStandardBeamByCutBeamWithinBayControl(\n this.geo_superiorBeam,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetX, offsetY, offsetZ),\n new Vector3(),\n views,\n 1,\n userDataPos,\n this.geoHouseBeamJoint\n );\n } else {\n this.cutStandardBeamToEqualLengthBeam(\n userDataPos.back || userDataPos.cutout\n ? this.geo_superiorHouseBeam\n : this.geo_superiorBeam,\n userDataPos.back || userDataPos.cutout\n ? this.geo_houseBeamEndCap\n : this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetX, offsetY, offsetZ),\n new Vector3(),\n views,\n 1,\n userDataPos,\n userDataPos.back || userDataPos.cutout\n ? this.geoHouseBeamJoint\n : this.geoBeamJoint\n );\n }\n\n //Add one more beam cutout right\n if (userDataPos.cutout && UI.existingType == 3) {\n offsetX = UI.totalBayLength / 2 - beamLength;\n\n this.cutStandardBeamToEqualLengthBeam(\n this.geo_superiorHouseBeam,\n this.geo_houseBeamEndCap,\n beamLength,\n new Vector3(offsetX, offsetY, offsetZ),\n new Vector3(),\n views,\n 1,\n userDataPos,\n this.geoHouseBeamJoint\n );\n }\n }\n private cutStandardBeamToEqualLengthBeam(\n beamGeo: GeometryInfo,\n beamCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n userDataPos: any,\n jointGeo: GeometryInfo\n ) {\n const beamStartX = pos.x;\n const beamEndX = pos.x + length;\n\n const numOfBeam = Math.ceil(\n length / EXISTING_BUILDING_CONFIG.MAXIMUM_LENGTH_PER_BEAM\n );\n const lengthPerBeam = Math.abs(beamEndX - beamStartX) / numOfBeam;\n for (let i = 0; i < numOfBeam; i++) {\n let beamGroup = this.utils.createBeamGroup(\n beamGeo,\n beamCapGeo,\n lengthPerBeam,\n new Vector3(beamStartX + lengthPerBeam * i, pos.y, pos.z),\n rot,\n views,\n directionOffset,\n userDataPos,\n UI.beamLayoutShow,\n {\n hasStartCap: UI.beamType == 0 && i == 0,\n hasEndCap:\n UI.beamType == 0 &&\n (i == numOfBeam - 1 || (i == 0 && numOfBeam == 1)),\n hasStartJoint: i !== 0,\n hasEndJoint: false,\n jointGeo: jointGeo,\n }\n );\n this.scene.add(beamGroup);\n }\n }\n private cutStandardBeamByCutBeamWithinBayControl(\n beamGeo: GeometryInfo,\n beamCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n userDataPos: any,\n jointGeo\n ) {\n const fitX = this.getContainerOffsetXToFitBraketToExistingWall();\n // Map list cut beam here\n const beamStartX = pos.x;\n const beamEndX = pos.x + length;\n\n let endOfBayX = -UI.totalBayLength / 2 + fitX;\n let startCutBeamX = beamStartX;\n let endCutBeamX = beamStartX;\n\n const beams = this.utils.getListSeperateBeamsByBays(\n endOfBayX,\n beamStartX,\n beamEndX,\n endCutBeamX,\n startCutBeamX\n );\n\n for (let i = 0; i < beams.length; i++) {\n endCutBeamX = beams[i][1];\n startCutBeamX = beams[i][0];\n let beamGroup = this.utils.createBeamGroup(\n beamGeo,\n beamCapGeo,\n endCutBeamX - startCutBeamX,\n new Vector3(startCutBeamX, pos.y, pos.z),\n rot,\n views,\n directionOffset,\n userDataPos,\n UI.beamLayoutShow,\n {\n hasStartCap: UI.beamType == 0 && i == 0,\n hasEndCap:\n UI.beamType == 0 &&\n (i == beams.length - 1 || (i == 0 && beams.length == 1)),\n hasStartJoint: i !== 0,\n hasEndJoint: false,\n jointGeo: jointGeo,\n }\n );\n this.scene.add(beamGroup);\n }\n }\n private addBeamAngelRakecut() {\n if (\n UI.rakeCutLeftType != RAKECUT_TYPE.ANGLE &&\n UI.rakeCutRightType != RAKECUT_TYPE.ANGLE\n ) {\n return;\n }\n\n let offsetZ =\n UI.multiSpan + UI.span - UI.existingWidth1 / 2 - this.extraOffsetZ;\n let offsetY = this.utils.getHeightByAngle(\n UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n 1\n );\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n let beamLength = this.beamLeftCutSizeInfo.m;\n\n //beam lenght can not go behind existing wall\n if (\n UI.rakeCutLeftVer + this.beamLeftCutSizeInfo.k_ >\n this.MANAGER.patiosLength\n ) {\n beamLength -= this.beamLeftCutSizeInfo.b;\n }\n\n let scaleZ = beamLength / this.geo_beamRakecutLeft.length;\n\n let offsetXStart = 0;\n let offsetXEnd = beamLength;\n let rotY = Math.atan(UI.rakeCutLeftHor / UI.rakeCutLeftVer);\n let rotX = this.utils.degreesToRadians(UI.patiosPitch);\n\n let offsetX =\n -this.totalBaySize / 2 - UI.overhangLeft + this.beamLeftCutSizeInfo.l;\n const mesh = new Mesh(\n this.geo_beamRakecutLeft.geometry,\n MaterialManager.Instance().BEAM\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n };\n mesh.scale.setZ(scaleZ);\n\n let capL = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capL.position.set(\n this.geo_beamEndCap.width / 2,\n 0,\n -(offsetXEnd + this.geo_beamEndCap.length / 2 - 2)\n );\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let capR = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capR.position.set(\n this.geo_beamEndCap.width / 2,\n 0,\n offsetXStart - this.geo_beamEndCap.length / 2 + 2\n );\n capR.rotateY(Math.PI);\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n angle: true,\n };\n if (UI.existingType == BUILDING_SIDE.RIGHT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.geo_bracket?.width || 0);\n offsetX -= fitZ;\n }\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.geo_bracket?.width || 0);\n offsetX += fitZ;\n }\n beamGroup.position.set(offsetX, offsetY, offsetZ);\n beamGroup.rotation.set(-rotX, rotY, 0);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n this.scene.add(beamGroup);\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n let beamLength = this.beamRightCutSizeInfo.m;\n\n //beam lenght can not go behind existing wall\n if (\n UI.rakeCutRightVer + this.beamRightCutSizeInfo.k_ >\n this.MANAGER.patiosLength\n ) {\n beamLength -= this.beamRightCutSizeInfo.b;\n }\n\n let scaleZ = beamLength / this.geo_beamRakecutLeft.length;\n\n let offsetXStart = 0;\n let offsetXEnd = beamLength;\n let rotY = Math.atan(UI.rakeCutRightHor / UI.rakeCutRightVer);\n let rotX = this.utils.degreesToRadians(UI.patiosPitch);\n\n let offsetX =\n this.totalBaySize / 2 + UI.overhangRight - this.beamRightCutSizeInfo.l;\n const mesh = new Mesh(\n this.geo_beamRakecutRight.geometry,\n MaterialManager.Instance().BEAM\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n };\n mesh.scale.setZ(scaleZ);\n\n let capL = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capL.position.set(\n -this.geo_beamEndCap.width / 2,\n 0,\n -(offsetXEnd + this.geo_beamEndCap.length / 2 - 2)\n );\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let capR = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capR.position.set(\n -this.geo_beamEndCap.width / 2,\n 0,\n offsetXStart - this.geo_beamEndCap.length / 2 + 2\n );\n capR.rotateY(Math.PI);\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n angle: true,\n };\n if (UI.existingType == BUILDING_SIDE.RIGHT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.geo_bracket?.width || 0);\n offsetX -= fitZ;\n }\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.geo_bracket?.width || 0);\n offsetX += fitZ;\n }\n beamGroup.position.set(offsetX, offsetY, offsetZ);\n beamGroup.rotation.set(-rotX, -rotY, 0);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n this.scene.add(beamGroup);\n }\n }\n private addBeamStepRakecut() {\n if (\n UI.rakeCutLeftType != RAKECUT_TYPE.STEP &&\n UI.rakeCutRightType != RAKECUT_TYPE.STEP\n ) {\n return;\n }\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n let offsetXL = -UI.totalBayLength / 2 - UI.overhangLeft;\n let offsetXR = UI.totalBayLength / 2 + UI.overhangRight;\n\n let offsetY = this.utils.getHeightByAngle(\n UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n 1\n );\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n let offsetZ =\n UI.span + UI.multiSpan - this.extraOffsetZ - UI.existingWidth1 / 2;\n let moveBack = UI.rakeCutLeftVer;\n if (moveBack > 0) {\n offsetZ -= moveBack;\n offsetY = this.utils.getHeightByAngle(\n UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n 1\n );\n }\n\n let beamLength = UI.rakeCutLeftHor + this.geo_superiorPost.width;\n if (UI.rakeCutLeftHor < UI.overhangLeft) {\n beamLength = UI.overhangLeft + this.geo_superiorPost.width;\n }\n\n let scaleX = beamLength / this.geo_beamStepRakecutLeft.length;\n\n let beam = new Mesh(\n this.geo_beamStepRakecutLeft.geometry,\n MaterialManager.Instance().BEAM\n );\n beam.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n };\n beam.scale.setX(scaleX);\n\n let capL = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capL.position.set(\n this.geo_beamEndCap.length / 2 - 2,\n 0,\n -this.geo_beamEndCap.width / 2\n );\n capL.rotateY(Math.PI / 2);\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let capR = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capR.position.set(\n beamLength + this.geo_beamEndCap.length / 2 - 2,\n 0,\n -this.geo_beamEndCap.width / 2\n );\n capR.rotateY(-Math.PI / 2);\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n };\n const fitX = this.getContainerOffsetXToFitBraketToExistingWall();\n beamGroup.position.set(offsetXL + fitX, offsetY, offsetZ);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(beam, capL, capR);\n } else {\n beamGroup.add(beam);\n }\n this.scene.add(beamGroup);\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n let offsetZ =\n UI.span + UI.multiSpan - this.extraOffsetZ - UI.existingWidth1 / 2;\n let moveBack = UI.rakeCutRightVer;\n if (moveBack > 0) {\n offsetZ -= moveBack;\n offsetY = this.utils.getHeightByAngle(\n UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n 1\n );\n }\n\n let beamLength = UI.rakeCutRightHor + this.geo_superiorPost.width;\n if (UI.rakeCutRightHor < UI.overhangRight) {\n beamLength = UI.overhangRight + this.geo_superiorPost.width;\n }\n\n let scaleX = beamLength / this.geo_beamStepRakecutRight.length;\n\n let beam = new Mesh(\n this.geo_beamStepRakecutRight.geometry,\n MaterialManager.Instance().BEAM\n );\n beam.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n };\n beam.scale.setX(scaleX);\n\n let capL = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capL.position.set(\n -(beamLength + this.geo_beamEndCap.length / 2 - 2),\n 0,\n -this.geo_beamEndCap.width / 2\n );\n capL.rotateY(Math.PI / 2);\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let capR = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capR.position.set(\n -(this.geo_beamEndCap.length / 2 - 2),\n 0,\n -this.geo_beamEndCap.width / 2\n );\n capR.rotateY(-Math.PI / 2);\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n };\n const fitX = this.getContainerOffsetXToFitBraketToExistingWall();\n beamGroup.position.set(offsetXR + fitX, offsetY, offsetZ);\n //beamGroup.rotateY(Math.PI);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(beam, capL, capR);\n } else {\n beamGroup.add(beam);\n }\n\n this.scene.add(beamGroup);\n }\n }\n public getBracketHeight(offset): number {\n return (\n this.utils.tan(UI.patiosPitch) * offset +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket()\n );\n }\n\n public destroy(): void {\n this.unregisterEvent();\n }\n\n private registerEvent(): void {\n this.eventHandleId = this.uiChangedDefer.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldExistingWallHeight,\n this.APP.sldEaveWidth,\n this.APP.sldFasciaDepth,\n\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n\n this.APP.sltExistingType,\n this.APP.dialogEditBay,\n\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldFlyOverBracketHeight,\n\n this.APP.sltColourBeam,\n this.APP.sltColourPost,\n this.APP.sltColourBracket,\n this.APP.sltColourFasciaBracket,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n ];\n //this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n\n this.controlsToRegisterEvent2 = [\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltHouseBeamSize,\n this.APP.sltColumnType,\n ];\n this.controlsToRegisterEvent2.forEach((c) =>\n c.addAction(this.objectSizeChangedHandle)\n );\n }\n private unregisterEvent(): void {\n // this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n // this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach((c) =>\n c.removeAction(this.objectSizeChangedHandle)\n );\n this.controlsToRegisterEvent2 = undefined;\n }\n\n private objectSizeChanged(pre: number, cur: number) {\n this.optimize().then(() => {\n this.load();\n });\n }\n uiChangedDefer(previousValue: number, currentValue: number) {\n if (this.APP.sltCutOut.currentValue == 1) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => {\n this.load();\n }, this.deferTimeout);\n } else {\n this.load();\n }\n }\n}\n","import { Scene, Mesh, Object3D, Material, Group, FontLoader, TextBufferGeometry, PlaneBufferGeometry, Vector3, BoxHelper, Box3Helper, Matrix4, Box3, Geometry, LineSegments, LineBasicMaterial, Color, BoxBufferGeometry, Line, MeshBasicMaterial, Line3, Points, PointsMaterial, BufferGeometry } from \"three\";\nimport { HomeComponent as AppComponent, HomeComponent } from '../../containers/home/home.component';\nimport { Util } from '../utils';\nimport { MaterialManager } from '../material.manager';\nimport { GeometryInfo, ViewType, LineType, IBay, Printing2DGeometry, Printing2DLine, Print2DText, Printing2DGeometryType } from '../models';\nimport { GEOMETRY_TYPE, DIMENSION_LOCATION, DIMENSION_LABEL_TYPE } from 'src/app/app.config';\nimport { environment } from 'src/environments/environment';\nimport { PatiosBackFlyOverManager } from '.';\nimport { GeometryManager } from '../geometry.manager';\nimport { FIT_DIMENSION, FIT_DIMENSION_FAR, BUILDING_SIDE, PANEL_DIRECTION, RAKECUT_TYPE, FIT_FLYOVER_BRAKET_ON_ROOF } from 'src/app/app.constants';\nimport Dimension, { AddDimensionOptions } from \"src/app/models/Dimension\";\nimport {CONFIG as conf} from '../../app.config'\nimport { UI } from \"../ui\";\n\nexport class DimensionManager {\n private scene: Scene;\n private APP: AppComponent;\n private MANAGER: PatiosBackFlyOverManager;\n public listText: THREE.Object3D[] = [];\n private utils: Util;\n\n private eventHandleId: any;\n\n private material: Material;\n\n private materialManager: MaterialManager;\n\n private dimensionPatiosFrontBottom: Object3D;\n private dimensionPatiosFrontRight: Object3D;\n\n private dimensionPatiosRightBottom: Object3D;\n private dimensionPatiosRightLeft: Object3D;\n private dimensionPatiosRightRight: Object3D;\n\n private dimensionPatiosLeftBottom: Object3D;\n private dimensionPatiosLeftRight: Object3D;\n private dimensionPatiosLeftLeft: Object3D;\n\n private dimensionPatiosPlanRight: Object3D;\n private dimensionPatiosPlanBottom: Object3D;\n private dimensionPatiosPlanLeft: Object3D;\n private dimensionPlanMiddle: Object3D;\n private dimensionPlanMidleLeft: Object3D;\n\n private dimensionPatiosLowerHeightDim: Object3D;\n private dimensionPatiosFlyOverBraketHeightDim: Object3D;\n\n private lineCapGeo: GeometryInfo;\n private lineGeo: GeometryInfo;\n private textGeo: TextBufferGeometry;\n\n private dimensionDistance = 1500;\n private dimensionDistance2 = 500;\n private dimensionDistance3 = 300;\n\n private textDistance = 5000;\n\n private totalBaySize: number;\n private box: Box3;\n\n private font: any\n private textParameter: any;\n private isReady = false;\n\n private controlsToRegisterEvent: Array;\n private geometryManager: GeometryManager;\n\n private options : AddDimensionOptions;\n private startPos: Vector3;\n private startMatrix: Matrix4;\n private startBayLength: number;\n\n constructor(app: AppComponent, manager: PatiosBackFlyOverManager) {\n this.utils = new Util();\n this.materialManager = MaterialManager.Instance();\n this.APP = app;\n this.MANAGER = manager;\n this.scene = this.APP.scene;\n this.material = MaterialManager.Instance().DIMENSION_TEXT;\n this.geometryManager = GeometryManager.Instance();\n //this.registerEvent();\n }\n\n\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n this.lineGeo = this.geometryManager.getDimensionLine();\n this.lineCapGeo = this.geometryManager.getDimensionCap();\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.unload();\n \n var loader = new FontLoader();\n\n this.dimensionPatiosFrontBottom = new Group();\n this.dimensionPatiosFrontBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n // this.dimensionPatiosFrontBottom.rotation.set(0, Math.PI, 0);\n this.dimensionPatiosFrontBottom.visible = false;\n\n this.dimensionPatiosFrontRight = new Group();\n this.dimensionPatiosFrontRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosFrontRight.rotation.set(0, 0, -Math.PI / 2);\n this.dimensionPatiosFrontRight.visible = false;\n\n this.dimensionPatiosRightBottom = new Group();\n this.dimensionPatiosRightBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightBottom.rotation.set(0, -Math.PI / 2, 0);\n this.dimensionPatiosRightBottom.visible = false;\n\n this.dimensionPatiosRightLeft = new Group();\n this.dimensionPatiosRightLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightLeft.rotation.set(0, -Math.PI / 2, -Math.PI / 2);\n this.dimensionPatiosRightLeft.visible = false;\n\n this.dimensionPatiosRightRight = new Group();\n this.dimensionPatiosRightRight.rotation.set(0, -Math.PI / 2, -Math.PI / 2);\n this.dimensionPatiosRightRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightRight.visible = false;\n\n this.dimensionPatiosLeftBottom = new Group();\n this.dimensionPatiosLeftBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftBottom.rotation.set(0, -Math.PI / 2, 0);\n this.dimensionPatiosLeftBottom.visible = false;\n\n this.dimensionPatiosLeftRight = new Group();\n this.dimensionPatiosLeftRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftRight.rotation.set(Math.PI / 2, -Math.PI / 2, 0);\n this.dimensionPatiosLeftRight.visible = false;\n\n this.dimensionPatiosLeftLeft = new Group();\n this.dimensionPatiosLeftLeft.rotation.set(0, -Math.PI / 2, Math.PI / 2);\n this.dimensionPatiosLeftLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftLeft.visible = false;\n\n //testing\n // [\n // this.dimensionPatiosFrontBottom,\n // this.dimensionPatiosFrontRight,\n // this.dimensionPatiosRightBottom,\n // this.dimensionPatiosRightLeft,\n // this.dimensionPatiosRightRight,\n // this.dimensionPatiosLeftBottom,\n // this.dimensionPatiosLeftRight,\n // this.dimensionPatiosLeftLeft,\n // ].forEach(g => { g.visible = true });\n\n this.dimensionPatiosPlanRight = new Group();\n this.dimensionPatiosPlanRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosPlanRight.rotation.set(-Math.PI / 2, Math.PI, -Math.PI / 2);\n\n this.dimensionPatiosPlanBottom = new Group();\n this.dimensionPatiosPlanBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosPlanBottom.rotation.set(-Math.PI / 2, 0, 0);\n\n this.dimensionPatiosPlanLeft = new Group();\n this.dimensionPatiosPlanLeft.userData = { type: GEOMETRY_TYPE.DIMENSION , position: { left: true } };\n this.dimensionPatiosPlanLeft.rotation.set(-Math.PI / 2, 0, -Math.PI / 2);\n\n this.dimensionPlanMiddle = new Group();\n this.dimensionPlanMidleLeft = new Group();\n\n this.dimensionPatiosLowerHeightDim = new Group();\n this.dimensionPatiosLowerHeightDim.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLowerHeightDim.rotation.set(0, 0, Math.PI / 2);\n \n this.dimensionPatiosFlyOverBraketHeightDim = new Group();\n this.dimensionPatiosFlyOverBraketHeightDim.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosFlyOverBraketHeightDim.rotation.set(0, 0, Math.PI / 2);\n\n this.scene.add(this.dimensionPatiosPlanRight);\n this.scene.add(this.dimensionPatiosPlanLeft);\n this.scene.add(this.dimensionPatiosFrontRight);\n this.APP.patiosManager.patiosGroup.add(\n this.dimensionPatiosFrontBottom,\n //this.dimensionPatiosFrontRight,\n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom,\n this.dimensionPatiosLeftRight,\n this.dimensionPatiosLeftLeft,\n this.dimensionPatiosPlanBottom,\n this.dimensionPlanMiddle,\n this.dimensionPlanMidleLeft,\n this.dimensionPatiosLowerHeightDim,\n this.dimensionPatiosFlyOverBraketHeightDim,\n );\n\n loader.load(environment.modelBaseUrl + '/assets/fonts/helvetiker_regular.typeface.json', (font) => {\n this.font = font;\n\n this.textParameter = {\n font: this.font,\n size: 200,\n height: 5,\n curveSegments: 10\n };\n this.options = {\n container: HomeComponent.ins.scene,\n start: new Vector3(),\n end: new Vector3(),\n linePos: new Vector3(),\n views: [],\n allowDrag: true,\n textParameter: this.textParameter,\n textPos: new Vector3(),\n labelType: null,\n fitZ: 10,\n hasTextClone: false,\n axis: 'x',\n lineLength: 0,\n subtype: null,\n textUserData: null,\n onDragCallback: this.onDimDrag.bind(this),\n onDragStartCallback: this.onDimDragStart.bind(this),\n }\n\n this.isReady = true;\n this.draw();\n resolve();\n })\n });\n }\n\n public unload() {\n this.scene.remove(this.dimensionPatiosPlanRight);\n this.scene.remove(this.dimensionPatiosPlanLeft);\n this.scene.remove(this.dimensionPatiosFrontRight);\n if (this.APP.patiosManager && this.APP.patiosManager.patiosGroup) {\n this.APP.patiosManager.patiosGroup.remove(\n this.dimensionPatiosFrontBottom,\n //this.dimensionPatiosFrontRight,\n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom,\n this.dimensionPatiosLeftRight,\n this.dimensionPatiosLeftLeft,\n this.dimensionPatiosPlanBottom,\n this.dimensionPlanMiddle,\n this.dimensionPlanMidleLeft,\n this.dimensionPatiosLowerHeightDim,\n this.dimensionPatiosFlyOverBraketHeightDim,\n );\n }\n }\n\n public draw() {\n if (!this.isReady) {\n return;\n }\n this.dimensionPatiosLowerHeightDim.children = this.dimensionPatiosLowerHeightDim.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.LOWER_HEIGHT_DIM\n );\n this.dimensionPatiosFlyOverBraketHeightDim.children = this.dimensionPatiosFlyOverBraketHeightDim.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.BRAKET_HEIGHT_DIM\n );\n // this.dimensionPatiosPlanBottom.remove(...this.dimensionPatiosPlanBottom.children);\n // this.dimensionPatiosPlanRight.remove(...this.dimensionPatiosPlanRight.children);\n // this.dimensionPatiosPlanLeft.remove(...this.dimensionPatiosPlanLeft.children);\n this.dimensionPatiosPlanBottom.children = this.dimensionPatiosPlanBottom.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.LEFT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.RIGHT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY\n );\n this.dimensionPatiosPlanRight.children = this.dimensionPatiosPlanRight.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.MULTI_SPAN\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.FRONT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.BACK_OVERHANG\n );\n this.dimensionPatiosPlanLeft.children = this.dimensionPatiosPlanLeft.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL \n )\n this.dimensionPatiosFrontBottom.remove(...this.dimensionPatiosFrontBottom.children);\n this.dimensionPatiosFrontRight.remove(...this.dimensionPatiosFrontRight.children);\n this.dimensionPatiosLeftBottom.remove(...this.dimensionPatiosLeftBottom.children);\n this.dimensionPatiosLeftRight.remove(...this.dimensionPatiosLeftRight.children);\n this.dimensionPatiosLeftLeft.remove(...this.dimensionPatiosLeftLeft.children);\n this.dimensionPatiosRightBottom.remove(...this.dimensionPatiosRightBottom.children);\n this.dimensionPatiosRightLeft.remove(...this.dimensionPatiosRightLeft.children);\n this.dimensionPatiosRightRight.remove(...this.dimensionPatiosRightRight.children);\n this.dimensionPlanMiddle.remove(...this.dimensionPlanMiddle.children);\n this.dimensionPlanMidleLeft.remove(...this.dimensionPlanMidleLeft.children);\n\n\n this.totalBaySize = 0;\n for (let b of this.APP.dialogEditBay.listBay) {\n this.totalBaySize += b.value;\n }\n\n this.box = this.utils.getSceneBox();\n\n this.drawDimensionLowerHeightDim();\n this.drawDimensionFlyOverBraketHeightDim();\n\n this.drawDimensionPatiosPlanBottom();\n this.drawDimensionPatiosPlanRight();\n this.drawDimensionPatiosPlanLeft();\n\n this.drawDimensionPatiosFrontBottom();\n this.drawDimensionPatiosFrontRight();\n\n this.drawDimensionPatiosLeftBottom();\n this.drawDimensionPatiosLeftRight();\n this.drawDimensionPatiosLeftLeft();\n\n this.drawDimensionPatiosRightBottom();\n this.drawDimensionPatiosRightLeft();\n this.drawDimensionPatiosRightRight();\n\n this.drawDimensionMidle();\n this.drawDimensionMidleLeft();\n\n //Set dimesion of groups base on patios bounding box and existing house bounding boxes\n //to make sure there is no intersection\n //var offset = this.calulateBoundingBox();\n //this.dimensionPatiosPlanRight.position.setX(offset.right);\n //this.dimensionPatiosPlanLeft.position.setX(offset.left);\n //this.dimensionPatiosPlanBottom.position.setZ(offset.front);\n\n // let existingHouseDimLeft = this.APP.scene.children.find(c => c.userData.type == GEOMETRY_TYPE.DIMENSION && c.userData.position?.planLeft);\n // //let existingHouseDimBox = new Box3().setFromObject(existingHouseDimLeft);\n // if(existingHouseDimLeft && existingHouseDimLeft.position.x > offset.left){\n // existingHouseDimLeft.position.setX(offset.left - 500);\n // }\n \n //this.getOutlines();\n\n this.APP.dimensionManager.draw();\n }\n private totalHeightFromEaveHeightToTopOfExistingRoof(){\n const height = \n this.geometryManager.EAVE.EAVE.height \n + UI.fasciaDepth \n + UI.eaveWidth * this.utils.tan(UI.existingRoofPitch) \n + this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.height / this.utils.cos(UI.existingRoofPitch)\n \n return height\n }\n private totalHeightFromEaveHeightToTopOfFlyoverBraket(){\n const height = this.totalHeightFromEaveHeightToTopOfExistingRoof() + UI.braketHeight - FIT_FLYOVER_BRAKET_ON_ROOF;\n \n return height\n }\n private drawDimensionFlyOverBraketHeightDim(){\n const bracketHeight =(UI.braketHeight + this.MANAGER.columnAndPurlinManager.houseBeamHeight())\n const offsetZBackPos = - UI.existingWidth1 / 2 - this.MANAGER.columnAndPurlinManager.extraOffsetZ - FIT_DIMENSION_FAR;\n\n this.dimensionPatiosFlyOverBraketHeightDim.position.set(0, UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfExistingRoof() - FIT_FLYOVER_BRAKET_ON_ROOF + bracketHeight / 2, offsetZBackPos);\n\n let textStr = this.utils.getDimensionValue(bracketHeight);\n let options : AddDimensionOptions = {\n ... this.options,\n lineLength: bracketHeight,\n container: this.dimensionPatiosFlyOverBraketHeightDim,\n views: [],\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, -200, 0),\n textRotation: new Vector3(Math.PI, 0, 0),\n labelType: DIMENSION_LABEL_TYPE.BRAKET_HEIGHT_DIM,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [] },\n allowDrag: false\n }\n let dimBay = this.dimensionPatiosFlyOverBraketHeightDim.children.find(el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.BRAKET_HEIGHT_DIM\n ) as Dimension;\n if(!dimBay){\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n\n private drawDimensionLowerHeightDim(){\n const frontPostHeight = UI.eaveHeight +\n this.MANAGER.columnAndPurlinManager.getBracketHeight(UI.span + UI.multiSpan)\n const offsetZFrontPos = UI.span + UI.multiSpan - UI.existingWidth1 / 2 - this.MANAGER.columnAndPurlinManager.extraOffsetZ + FIT_DIMENSION;\n\n this.dimensionPatiosLowerHeightDim.position.set(0, frontPostHeight / 2, offsetZFrontPos);\n\n let textStr = this.utils.getDimensionValue(frontPostHeight);\n let options : AddDimensionOptions = {\n ... this.options,\n lineLength: frontPostHeight,\n container: this.dimensionPatiosLowerHeightDim,\n views: [],\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, 200, 0),\n labelType: DIMENSION_LABEL_TYPE.LOWER_HEIGHT_DIM,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [] },\n allowDrag: false\n }\n let dimBay = this.dimensionPatiosLowerHeightDim.children.find(el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.LOWER_HEIGHT_DIM\n ) as Dimension;\n if(!dimBay){\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n\n private drawDimensionMidleLeft() {\n let offsetX = 0;\n let offsetZ = -this.APP.sldExistingWidth1.currentValue / 2 + 500;\n let origin = new Vector3(0, 0, 0);\n let head = new Vector3(0, 0, 1000);\n let hand1 = new Vector3(-50, 0, 950);\n let hand2 = new Vector3(50, 0, 950);\n\n //arrow\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n //let material = new LineBasicMaterial({ color: 0x0000ff });\n let geoLine = new Geometry();\n geoLine.vertices.push(origin);\n geoLine.vertices.push(head);\n\n geoLine.vertices.push(head);\n geoLine.vertices.push(hand1);\n\n geoLine.vertices.push(hand1);\n geoLine.vertices.push(hand2);\n\n geoLine.vertices.push(hand2);\n geoLine.vertices.push(head);\n let dim = new Line(geoLine);\n dim.userData = { type: \"Arrow\", views: views };\n\n //text of degree\n let textStr = \"Panel direction\";\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, 0, 0) };\n text.position.setZ(500);\n text.position.setX(200);\n\n dim.visible = false;\n text.visible = false;\n\n this.dimensionPlanMidleLeft.add(dim);\n this.dimensionPlanMidleLeft.add(text);\n\n\n if (this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT) {\n text.position.set(-200, 0, 500);\n this.dimensionPlanMidleLeft.rotation.set(0, -Math.PI / 2, 0);\n this.dimensionPlanMidleLeft.position.set(offsetX + 500, 0, offsetZ);\n }\n else {\n this.dimensionPlanMidleLeft.rotation.set(0, Math.PI / 2, 0);\n this.dimensionPlanMidleLeft.position.set(-offsetX - 500, 0, offsetZ);\n }\n }\n private drawDimensionMidle() {\n let offsetZ = this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue / 2 - this.APP.sldExistingWidth1.currentValue / 2;\n let origin = new Vector3(0, 0, 0);\n let head = new Vector3(0, 0, -1000);\n let hand1 = new Vector3(-50, 0, -950);\n let hand2 = new Vector3(50, 0, -950);\n\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n let material = new LineBasicMaterial({ color: 0x0000ff });\n let geoLine = new Geometry();\n geoLine.vertices.push(origin);\n geoLine.vertices.push(head);\n\n geoLine.vertices.push(head);\n geoLine.vertices.push(hand1);\n\n geoLine.vertices.push(hand1);\n geoLine.vertices.push(hand2);\n\n geoLine.vertices.push(hand2);\n geoLine.vertices.push(head);\n let dim = new Line(geoLine, material);\n dim.userData = { type: \"Arrow\", views: views };\n\n\n //text of degree\n let textStr = this.APP.sltRoofPitch.currentValue + ' degree';\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, Math.PI / 2, 0) };\n text.position.setZ(-500);\n text.position.setX(200);\n\n dim.visible = false;\n text.visible = false;\n\n this.dimensionPlanMiddle.add(dim);\n this.dimensionPlanMiddle.add(text);\n\n this.dimensionPlanMiddle.position.set(0, 0, offsetZ);\n }\n private drawDimensionPatiosPlanBottom() {\n let offsetX = -this.totalBaySize / 2;\n //let offsetZ = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance3 - this.APP.sldExistingWidth1.currentValue/2;\n //if(this.APP.sldExistingWidth1.currentValue > this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue){\n // offsetZ = this.APP.sldExistingWidth1.currentValue/2 + this.dimensionDistance2;\n // if(this.APP.sldExistingLength2.currentValue > 0){\n // offsetZ += 500;\n // }\n //}\n\n //let offsetZ = this.box.max.z + this.dimensionDistance2;\n\n\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n\n //this.dimensionPatiosPlanBottom.position.setZ(offsetZ);\n\n this.dimensionPatiosPlanBottom.children = this.dimensionPatiosPlanBottom.children.filter(el => \n el.userData?.groupType != DIMENSION_LABEL_TYPE.BAY\n || (el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY && el.userData?.bayNum < HomeComponent.ins.dialogEditBay.listBay.length)\n );\n\n for (let i = 0; i <= this.APP.dialogEditBay.listBay.length; i++) {\n let b: IBay = { index: 0, value: 0, isCut: false };\n if (i < this.APP.dialogEditBay.listBay.length) {\n b = this.APP.dialogEditBay.listBay[i];\n }\n\n // let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n // cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n // cap2.position.setX(offsetX);\n // this.dimensionPatiosPlanBottom.add(cap2);\n\n if (i < this.APP.dialogEditBay.listBay.length) {\n let textStr = this.utils.getDimensionValue(b.value);\n let options : AddDimensionOptions = {... this.options,\n lineLength: b.value,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(offsetX + b.value / 2, 0, 0),\n textPos: new Vector3(offsetX + b.value / 2, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.BAY,\n bayNum: i,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, position: { bottom: true } }\n }\n let dimBay = this.dimensionPatiosPlanBottom.children.find(el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY \n && el.userData?.bayNum == i\n ) as Dimension;\n if(!dimBay){\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n offsetX += b.value;\n }\n\n //rakecut\n if(this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE){\n let _offsetX = -this.APP.dialogEditBay.totalBaySize/2 + this.APP.sldLeftCutHorizontal.currentValue/2 - this.APP.sldLeftOverhang.currentValue;\n let options : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldLeftCutHorizontal.currentValue,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(_offsetX, 500, 0),\n textPos: new Vector3(_offsetX, 300, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL,\n subtype: GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT\n }\n let dimRake = this.dimensionPatiosPlanBottom.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL) as Dimension;\n if(!dimRake){\n new Dimension(options);\n } else {\n dimRake.update(options);\n }\n } else {\n this.dimensionPatiosPlanBottom.children = this.dimensionPatiosPlanBottom.children.filter(el => el.userData?.groupType != DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL)\n }\n if(this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE){\n let _offsetX = this.APP.dialogEditBay.totalBaySize/2 - this.APP.sldRightCutHorizontal.currentValue/2 + this.APP.sldRightOverhang.currentValue;\n let options : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldRightCutHorizontal.currentValue,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(_offsetX, 500, 0),\n textPos: new Vector3(_offsetX, 500-200, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL,\n subtype: GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT\n }\n let dimRake = this.dimensionPatiosPlanBottom.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL) as Dimension;\n if(!dimRake){\n new Dimension(options);\n } else {\n dimRake.update(options);\n }\n } else {\n this.dimensionPatiosPlanBottom.children = this.dimensionPatiosPlanBottom.children.filter(el => el.userData?.groupType != DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL)\n }\n \n\n //Left over hang\n this.addOverhang(this.dimensionPatiosPlanBottom, offsetX, this.APP.sldLeftOverhang.currentValue, views, \"Left\", 0, \"z\", DIMENSION_LABEL_TYPE.LEFT_OVERHANG);\n this.addOverhang(this.dimensionPatiosPlanBottom, offsetX, this.APP.sldRightOverhang.currentValue, views, \"Right\", 0, \"z\", DIMENSION_LABEL_TYPE.RIGHT_OVERHANG);\n\n this.repositionDimension(this.dimensionPatiosPlanBottom, DIMENSION_LOCATION.PLAN_BOTTOM);\n }\n onDimDrag(event){\n this.utils.handlerDimDragEvent(event, this.startPos, this.startMatrix, this.startBayLength);\n this.startPos = event.object.position.clone();\n }\n onDimDragStart(event){\n this.startPos = event.object.position.clone();\n this.startMatrix = event.object.matrixWorld.clone();\n if(event.object.userData?.dimType === DIMENSION_LABEL_TYPE.BAY){\n let bayNum = event.object.userData.bayNum;\n this.startBayLength = UI.listBay[+bayNum].value;\n }\n }\n private drawDimensionPatiosPlanRight() {\n\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n let offsetDimensionZ = this.APP.sldSpan.currentValue / 2\n - this.APP.sldExistingWidth1.currentValue / 2\n - this.APP.existingWallManager.geo_existingWallL1.width\n - this.APP.eaveManager.backOverhang;\n\n //let _dimensionDistane = this.dimensionDistance2;\n //if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n // if(this.APP.sldExistingWidth1.currentValue > 0){\n // _dimensionDistane = this.dimensionDistance;\n // }\n //}\n\n //let offsetDimensionX = this.getOffsetLeft(this.dimensionPatiosPlanRight) + this.dimensionDistance2; //this.box.max.x + this.dimensionDistance2;\n //let offsetDimensionX = this.totalBaySize/2 + this.APP.patiosManager.patiosGroup.position.x + _dimensionDistane;\n //if(this.APP.sldExistingLength.currentValue/2 > this.totalBaySize/2){\n // offsetDimensionX = this.APP.sldExistingLength.currentValue/2 + _dimensionDistane;\n //}\n\n //if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n // offsetDimensionX += this.APP.sldExistingLength2.currentValue;\n //}\n\n let dimLength = this.APP.sldSpan.currentValue;\n\n let textStr = this.utils.getDimensionValue(this.APP.sldSpan.currentValue);\n let options : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldSpan.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.SPAN,\n hasTextClone: false,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneRotation: new Vector3(0, Math.PI, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, -Math.PI, 0),\n fitZ: -10\n }\n let dimSpan = this.dimensionPatiosPlanRight.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN) as Dimension;\n if(!dimSpan){\n new Dimension(options);\n } else {\n dimSpan.update(options);\n }\n\n if (this.APP.sldMultiSpan.currentValue > 0) {\n let offsetX = this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue;\n // - this.APP.sldExistingWidth1.currentValue/2 \n // - this.APP.existingWallManager.geo_existingWallL1.width \n // - this.APP.eaveManager.backOverhang;\n dimLength += this.APP.sldMultiSpan.currentValue;\n\n let optionsMul : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldMultiSpan.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue / 2, 0, 0),\n textPos: new Vector3(this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue / 2, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.MULTI_SPAN,\n hasTextClone: false,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneRotation: new Vector3(0, Math.PI, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, -Math.PI, 0),\n fitZ: -10\n }\n let dimMul = this.dimensionPatiosPlanRight.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.MULTI_SPAN) as Dimension;\n if(!dimMul){\n new Dimension(optionsMul);\n } else {\n dimMul.update(optionsMul);\n }\n } else {\n this.dimensionPatiosPlanRight.children = this.dimensionPatiosPlanRight.children.filter(el => el.userData?.groupType != DIMENSION_LABEL_TYPE.MULTI_SPAN)\n }\n\n let extraDistance = 0;\n //----Rake cut\n if(this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE){\n extraDistance = 500;\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n\n let offsetZ = dimLength/2 + UI.multiSpan / 2 + this.APP.sldFrontOverhang.currentValue - this.APP.sldRightCutVertical.currentValue/2;\n\n let optionsRake : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldRightCutVertical.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(offsetZ, 500, 0),\n textPos: new Vector3(offsetZ, 300, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL,\n textRotation: new Vector3( 0, Math.PI, 0),\n fitZ: -10,\n subtype: GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT\n }\n let dimRake = this.dimensionPatiosPlanRight.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL) as Dimension;\n if(!dimRake){\n new Dimension(optionsRake);\n } else {\n dimRake.update(optionsRake);\n }\n } else {\n this.dimensionPatiosPlanRight.children = this.dimensionPatiosPlanRight.children.filter(el => el.userData?.groupType != DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL)\n }\n //----End rake cut\n\n\n let offsetRight = this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue;\n let offsetLeft = this.APP.sldSpan.currentValue / 2;// + this.APP.sldMultiSpan.currentValue;\n\n this.addOverhang(this.dimensionPatiosPlanRight, offsetRight, this.APP.sldFrontOverhang.currentValue, views, \"Right\", Math.PI, \"y\", DIMENSION_LABEL_TYPE.FRONT_OVERHANG);\n this.addOverhang(this.dimensionPatiosPlanRight, offsetLeft, this.APP.sldBackOverhang.currentValue, views, \"Left\", Math.PI, \"y\", DIMENSION_LABEL_TYPE.BACK_OVERHANG);\n\n //this.dimensionPatiosPlanRight.position.set(this.MANAGER.boundingBox.max.x + this.dimensionDistance2, 0, offsetDimensionZ);\n // let offsetDimensionX = this.getOffsetLeft(this.dimensionPatiosPlanRight);\n //this.dimensionPatiosPlanRight.position.set(0, 0, offsetDimensionZ);\n\n this.repositionDimension(this.dimensionPatiosPlanRight, DIMENSION_LOCATION.PLAN_RIGHT, extraDistance);\n }\n private drawDimensionPatiosPlanLeft(){\n if(this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.NONE){\n this.dimensionPatiosPlanLeft.children = this.dimensionPatiosPlanLeft.children.filter(el => el.userData?.groupType != DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL)\n return;\n }\n\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n\n let offsetDimensionZ = this.APP.sldSpan.currentValue\n + this.APP.sldMultiSpan.currentValue\n + this.APP.sldFrontOverhang.currentValue\n - this.APP.sldExistingWidth1.currentValue / 2\n - this.APP.existingWallManager.geo_existingWallL1.width\n - this.APP.eaveManager.backOverhang\n - this.APP.sldLeftCutVertical.currentValue/2;\n \n let optionsRake : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldLeftCutVertical.currentValue,\n container: this.dimensionPatiosPlanLeft,\n views: views,\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL,\n }\n let dimRake = this.dimensionPatiosPlanLeft.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL) as Dimension;\n if(!dimRake){\n new Dimension(optionsRake);\n } else {\n dimRake.update(optionsRake);\n }\n\n //let offsetDimensionX = this.MANAGER.boundingBox.min.x - this.dimensionDistance2;\n this.dimensionPatiosPlanLeft.position.set(0, 0, offsetDimensionZ);\n this.repositionDimension(this.dimensionPatiosPlanLeft, DIMENSION_LOCATION.PLAN_LEFT);\n }\n private drawDimensionPatiosFrontBottom() {\n let dimOffsetY = -this.dimensionDistance2;\n this.dimensionPatiosFrontBottom.position.set(0, dimOffsetY, 0);\n\n let views = [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosPlanBottom.children.forEach( groupDim => {\n groupDim.children.filter(c => c.userData.subtype != GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT).forEach(e => {\n let dim = e.clone();\n dim.userData['views'] = views;\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.rotation.set(0, Math.PI, 0);\n dim.userData['rotation'] = new Vector3(0, 0, 0);\n dim.userData['position'] = {...e.userData.position, bottom: true};\n }\n this.dimensionPatiosFrontBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosFrontRight() {\n let views = [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }];\n\n const dimLength = UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.MANAGER.columnAndPurlinManager.geo_superiorBeam.height + (this.utils.tan(this.APP.sltRoofPitch.currentValue) * (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue))\n\n let offsetLength = dimLength / 2;\n let scaleLength = dimLength / this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(dimLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, 0, -Math.PI / 2) };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosFrontRight.add(line, cap1, cap2, text, ...this.utils.addArrowForLine(line));\n\n //reposition the dimension\n this.repositionDimension(this.dimensionPatiosFrontRight, DIMENSION_LOCATION.FRONT_RIGHT);\n }\n private repositionDimension(dimension, location, extraDistance = 0){\n this.APP.scene.remove(...this.APP.scene.children.filter(c => c.userData.type == location));\n this.APP.scene.remove(...this.APP.scene.children.filter(c => c.userData.type == location));\n\n let patiosBox = this.MANAGER.boundingBox;\n \n if(location == DIMENSION_LOCATION.FRONT_RIGHT){\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.max.x;\n dimBox.max.x = patiosBox.max.x + 500;\n dimBox.max.z = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && !c.userData.position.length1 && !c.userData.position.length2)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && !c.userData.position.length1 && !c.userData.position.length2)\n );\n\n if(this.APP.sldExistingWidth2.currentValue > 0){\n objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && !c.userData.position.length1)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && !c.userData.position.length1)\n );\n }\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(100,0,0))\n }\n }\n \n if(!intersectBox)\n break;\n }\n\n let dimOffsetY = (UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.MANAGER.columnAndPurlinManager.geo_superiorBeam.height + (this.utils.tan(this.APP.sltRoofPitch.currentValue) * (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue))) / 2;\n dimension.position.set(dimBox.max.x + extraDistance, dimOffsetY, 0);\n }\n else if(location == DIMENSION_LOCATION.PLAN_LEFT){\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.min.x - 500;\n dimBox.max.x = patiosBox.min.x;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF || c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(-100,0,0))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setX(dimBox.min.x + extraDistance);\n // dimension.translateX(this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + this.APP.eaveManager.backOverhang - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0));\n }\n else if(location == DIMENSION_LOCATION.PLAN_RIGHT){\n let offsetDimensionZ = this.APP.sldSpan.currentValue / 2\n - this.APP.sldExistingWidth1.currentValue / 2\n - this.APP.existingWallManager.geo_existingWallL1.width\n - this.APP.eaveManager.backOverhang;\n dimension.position.setZ(offsetDimensionZ);\n\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.max.x;\n dimBox.max.x = patiosBox.max.x + 500;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL)\n );\n\n // for(let e of objs){\n // let boxModelHelper = new BoxHelper(e);\n // boxModelHelper.userData = {type: location};\n // this.scene.add(boxModelHelper);\n // }\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(100,0,0))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setX(dimBox.max.x + extraDistance);\n dimension.translateX(this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + this.APP.eaveManager.backOverhang - ( this.MANAGER.columnAndPurlinManager.geo_bracket?.width || 0));\n }\n else if(location == DIMENSION_LOCATION.PLAN_BOTTOM){\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL)\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n if (this.APP.sltExistingType.currentValue == 1) {\n dimension.position.setX(this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + (this.MANAGER.columnAndPurlinManager.geo_bracket?.width || 0)/2)\n } else if(this.APP.sltExistingType.currentValue == 2) {\n dimension.position.setX( -(this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + (this.MANAGER.columnAndPurlinManager.geo_bracket?.width || 0)/2))\n } else {\n dimension.position.setX(0)\n }\n \n dimension.position.setZ(dimBox.max.z + extraDistance);\n }\n else if(location == DIMENSION_LOCATION.LEFT_RIGHT){\n let dimOffsetY = UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.MANAGER.columnAndPurlinManager.geo_superiorBeam.height + (this.utils.tan(this.APP.sltRoofPitch.currentValue) * (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue));\n dimension.position.setY(dimOffsetY / 2);\n\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n dimBox.min.x = -10000;\n dimBox.max.x = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && c.userData.position?.left)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && c.userData.position?.left)\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setZ(dimBox.max.z + extraDistance);\n }\n else if(location == DIMENSION_LOCATION.RIGHT_LEFT){\n let dimOffsetY = this.dimensionPatiosLeftRight.position.y;\n dimension.position.setY(dimOffsetY);\n\n let dimBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosLeftRight);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n \n dimBox.min.x = -10000;\n dimBox.max.x = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && c.userData.position?.right)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && c.userData.position?.right)\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setZ(dimBox.max.z + extraDistance);\n }\n }\n private drawDimensionPatiosLeftBottom() {\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z - (this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + this.APP.eaveManager.backOverhang - ( this.MANAGER.columnAndPurlinManager.geo_bracket?.width || 0));\n\n this.dimensionPatiosLeftBottom.position.set(0, dimOffsetY, dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n this.dimensionPatiosPlanRight.children.forEach( groupDim => {\n groupDim.children.forEach(e => {\n if(e.userData?.subType == GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT)\n return;\n \n let dim = e.clone();\n dim.userData['views'] = views;\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.rotation.set(0, 0, 0);\n dim.userData['views'] = [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }];\n dim.userData['rotation'] = new Vector3(0, 0, 0);\n dim.userData['position'] = {...e.userData.position, bottom: true}; \n }\n this.dimensionPatiosLeftBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosLeftRight() {\n let dimOffsetY = UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.MANAGER.columnAndPurlinManager.geo_superiorBeam.height + (this.utils.tan(this.APP.sltRoofPitch.currentValue) * (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue));\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n let offsetLength = dimOffsetY;\n let scaleLength = offsetLength / this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength / 2);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength / 2);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }], rotation: new Vector3(-Math.PI / 2, 0, 0) };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosLeftRight.add(line, cap1, cap2, text, ...this.utils.addArrowForLine(line));\n\n this.repositionDimension(this.dimensionPatiosLeftRight, DIMENSION_LOCATION.LEFT_RIGHT);\n }\n private drawDimensionPatiosRightBottom() {\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z - (this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + this.APP.eaveManager.backOverhang - ( this.MANAGER.columnAndPurlinManager.geo_bracket?.width || 0));\n\n this.dimensionPatiosRightBottom.position.set(0, dimOffsetY, dimOffsetZ);\n\n let views = [{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosPlanRight.children.forEach(groupDim => {\n groupDim.children.forEach(e => {\n if(e.userData?.subType == GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT)\n return;\n \n let dim = e.clone();\n dim.userData['views'] = views;\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.userData['rotation'] = new Vector3(0, 0, 0);\n dim.userData['position'] = {...e.userData.position, bottom: true};\n }\n this.dimensionPatiosRightBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosRightLeft() {\n let views = [{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosLeftRight.children.forEach(e => {\n let dim = e.clone();\n dim.userData['views'] = views;\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.userData['rotation'] = new Vector3(Math.PI / 2, 0, 0);\n dim.rotation.set(0, Math.PI, 0);\n }\n this.dimensionPatiosRightLeft.add(dim);\n });\n\n this.repositionDimension(this.dimensionPatiosRightLeft, DIMENSION_LOCATION.RIGHT_LEFT);\n }\n private drawDimensionPatiosLeftLeft() {\n let dimOffsetY = UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.MANAGER.columnAndPurlinManager.geo_superiorBeam.height;\n let dimOffsetZ = this.APP.sldExistingWidth1.currentValue / 2 + 1800;\n\n this.dimensionPatiosLeftLeft.position.set(0, dimOffsetY / 2, -dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n let offsetLength = dimOffsetY;\n let scaleLength = offsetLength / this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength / 2);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength / 2);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }], rotation: new Vector3(Math.PI / 2, 0, 0) };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosLeftLeft.add(line, cap1, cap2, text, ...this.utils.addArrowForLine(line));\n }\n private drawDimensionPatiosRightRight() {\n let dimOffsetY = UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.MANAGER.columnAndPurlinManager.geo_superiorBeam.height;\n let dimOffsetZ = this.APP.sldExistingWidth1.currentValue / 2 + 1800;\n\n this.dimensionPatiosRightRight.position.set(0, dimOffsetY / 2, -dimOffsetZ);\n\n let views = [{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosLeftLeft.children.forEach(e => {\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n let dim = e.clone();\n dim.userData['views'] = views;\n dim.userData['rotation'] = new Vector3(-Math.PI / 2, 0, 0);\n dim.rotation.set(0, Math.PI, 0);\n dim.position.set(dim.position.x, -dim.position.y, dim.position.z);\n this.dimensionPatiosRightRight.add(dim);\n }\n });\n }\n private addOverhang(groupDim: Object3D, offset: number, overhangValue: number, views: any, side: string, rotateText: number, axis: string, labelType?: string) {\n if (overhangValue == 0){\n let dim = groupDim.children.find(el => el.userData?.groupType == labelType) as Dimension;\n if(dim){\n groupDim.remove(dim)\n }\n return;\n }\n\n let textStr = this.utils.getDimensionValue(overhangValue);\n\n let textRotation = new Vector3();\n let textUserData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, position: { overhang: true }};\n if (axis === \"z\") {\n textRotation.setZ(rotateText);\n textUserData['rotation'] = new Vector3(0, 0, -rotateText / 2);\n textUserData['position']['bottom'] = true;\n }\n else if (axis === \"y\") {\n textRotation.setY(rotateText);\n textUserData['rotation'] = new Vector3(0, -rotateText / 2, 0);\n }\n else if (axis === \"x\") {\n textRotation.setX(rotateText);\n textUserData['rotation'] = new Vector3(-rotateText / 2, 0, 0);\n }\n\n let linePos = new Vector3();\n if (side === \"Left\") {\n linePos.setX(-offset - overhangValue / 2);\n }\n else if (side === \"Right\") {\n linePos.setX(offset + overhangValue / 2);\n }\n let fitZ = 0;\n if(labelType){\n if(axis === 'z'){\n fitZ = 10;\n } else if(axis === 'y'){\n fitZ = -10;\n }\n }\n let options : AddDimensionOptions = {... this.options,\n lineLength: overhangValue,\n container: groupDim,\n views: views,\n linePos: linePos,\n textPos: linePos.clone().setY(linePos.y - 200),\n labelType: labelType ? labelType : null,\n fitZ: fitZ,\n textRotation: textRotation,\n textUserData: textUserData\n }\n let dim = groupDim.children.find(el => el.userData?.groupType == labelType) as Dimension;\n if(!dim){\n new Dimension(options);\n } else {\n dim.update(options)\n }\n }\n private getTextCover(textGeo: TextBufferGeometry, labelType: string, pos: Vector3, fitZ = 0, bayNum?: number){\n let textSize = new Vector3();\n textGeo.boundingBox.getSize(textSize)\n \n let textCover = new Mesh(new BoxBufferGeometry(textSize.x, textSize.y, textSize.z))\n textCover.position.set(pos.x , pos.y, pos.z + fitZ);\n textCover.userData = { type: GEOMETRY_TYPE.TEXT_COVER, labelType };\n if(bayNum !== undefined){\n textCover.userData['bayNum'] = bayNum;\n }\n textCover.material['opacity'] = 0;\n textCover.material['transparent'] = true;\n \n return textCover\n }\n\n public getOutlines(): Printing2DGeometry {\n let lsGeometries: Printing2DLine[] = [];\n let lsText: Print2DText[] = [];\n\n for (let dim of [\n ...this.dimensionPatiosPlanBottom.children,\n ...this.dimensionPatiosPlanRight.children,\n ...this.dimensionPatiosPlanLeft.children,\n ...this.dimensionPatiosFrontBottom.children,\n ...this.dimensionPatiosFrontRight.children,\n ...this.dimensionPatiosLeftBottom.children,\n ...this.dimensionPatiosLeftRight.children,\n ...this.dimensionPatiosRightBottom.children,\n ...this.dimensionPatiosRightLeft.children,\n ...this.dimensionPlanMiddle.children,\n ...this.dimensionPatiosLeftLeft.children,\n ...this.dimensionPatiosRightRight.children,\n ...this.dimensionPlanMidleLeft.children\n ]) {\n if (!dim.userData.views) {\n console.log(\"TEXT NO VIEW\", dim);\n continue;\n }\n \n if(dim.type == 'Group'){\n dim.children.forEach(el => {\n el.updateMatrix();\n let _clone = el.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(el.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n \n el.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(el.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(el.matrixWorld);\n\n let textRotation = el.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, el, pos, textRotation, points)\n })\n } else{\n dim.updateMatrix();\n let _clone = dim.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(dim.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n \n dim.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(dim.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(dim.matrixWorld);\n\n let textRotation = dim.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, dim, pos, textRotation, points)\n }\n }\n return { lines: lsGeometries, texts: lsText };\n }\n private getDimInfo(lsGeometries: Printing2DLine[], lsText: Print2DText[], dim: Object3D, pos: Vector3, textRotation: Vector3, points: Vector3[]){\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && dim.userData.views && dim.userData.value) {\n let box = new Box3().setFromObject(dim.parent);\n let startEnd = this.utils.getStartEndPoint(box);\n let line = new Line3(startEnd[0], startEnd[1]);\n\n let projectPoint = new Vector3();\n line.closestPointToPoint(pos, true, projectPoint);\n let _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(10));\n\n if(dim.userData.position?.bottom){\n if(dim.userData.position?.overhang){\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(180));\n }\n else{\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(120));\n }\n }\n else{\n if(dim.userData.position?.overhang){\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(100));\n }\n }\n\n let p = new Vector3().applyMatrix4(dim.matrixWorld);\n\n lsText.push({\n value: dim.userData.value,\n position: p,\n rotation: textRotation,\n views: dim.userData.views\n });\n\n \n }\n else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_LINE) {\n // this.scene.add(new LineSegments(new Geometry().setFromPoints(points), new LineBasicMaterial({color: new Color('red')})));\n\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_CAP) {\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n else if (dim.userData.type == \"Arrow\") {\n let geo = ((dim as Line).geometry as Geometry).clone();\n geo.applyMatrix4(dim.matrixWorld);\n lsGeometries.push({\n vertices: geo.vertices,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n }\n public destroy(): void {\n this.unregisterEvent();\n this.unload();\n }\n\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldFrontOverhang,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sldExistingWallHeight,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sldFlyOverBracketHeight,\n this.APP.sltRoofPitch\n ];\n\n this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n }\n\n public uiChanged(preVal: number, curVal: number): void {\n this.draw();\n }\n\n private calulateBoundingBox(){\n //this.APP.scene.remove(...this.APP.scene.children.filter(c => c.userData.type == 'BOX_HELPER_'));\n let patiosBox = this.MANAGER.boundingBox;\n \n // let planRightBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosPlanRight);\n // planRightBox.min.x = patiosBox.max.x;\n // planRightBox.max.x = patiosBox.max.x + 500;\n // planRightBox.max.y = 10000;\n \n let planLeftBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosPlanLeft);\n planLeftBox.min.x = patiosBox.min.x - 500;\n planLeftBox.max.x = patiosBox.min.x;\n planLeftBox.max.y = 10000;\n\n // let planBottomBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosPlanBottom);\n // let planBottomBoxWidth = planBottomBox.max.z - planBottomBox.min.z;\n // planBottomBox.min.z = patiosBox.max.z;\n // planBottomBox.max.z = patiosBox.max.z + planBottomBoxWidth;\n // planBottomBox.max.y = 10000;\n \n let objs = [];\n\n objs = this.APP.scene.children.filter(c =>\n c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF || c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n\n // for(let e of objs){\n // let boxModelHelper = new BoxHelper(e);\n // boxModelHelper.userData = {type: 'BOX_HELPER_'};\n // this.scene.add(boxModelHelper);\n // }\n\n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n // if(planRightBox.intersectsBox(objBox)){\n // intersectBox = true;\n // planRightBox.translate(new Vector3(100,0,0))\n // }\n if(planLeftBox.intersectsBox(objBox)){\n intersectBox = true;\n planLeftBox.translate(new Vector3(-100,0,0))\n }\n // if(planBottomBox.intersectsBox(objBox)){\n // intersectBox = true;\n // planBottomBox.translate(new Vector3(0,0,100))\n // }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(planRightBox);\n // boxHelper.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper);\n\n // let boxHelper2 = new Box3Helper(planLeftBox);\n // boxHelper2.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper2);\n\n // let boxHelper3 = new Box3Helper(planBottomBox);\n // boxHelper3.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper3);\n \n return { left: planLeftBox.min.x };\n }\n}\n","import { GEOMETRY_CATEGORY } from \"src/app/app.config\";\nimport {\n BUILDING_SIDE,\n CUTOUT_ENABLE,\n EXISTING_BUILDING_CONFIG,\n RAKECUT_TYPE,\n} from \"src/app/app.constants\";\nimport { Box3, Group, Vector3 } from \"three\";\nimport { HomeComponent as AppComponent } from \"../../containers/home/home.component\";\nimport { Printing2DGeometry } from \"../models\";\nimport { PatiosManager } from \"../patios.manager\";\nimport { ColumnAndPurlinManager } from \"./column-and-purlin.manager\";\nimport { DimensionManager } from \"./dimension.manager\";\nimport { RoofManager } from \"./roof.manager\";\n\nexport class PatiosBackFlyOverManager implements PatiosManager {\n public columnAndPurlinManager: ColumnAndPurlinManager;\n private roofManager: RoofManager;\n public patiosGroup: Group;\n public boundingBox: Box3;\n private updateEventHandle: any;\n //private existingTypeChangedEventtHandle: any;\n public dimesionManager: DimensionManager;\n private controlsToRegisterEvent: Array;\n public ignoreBayEvent: boolean = false;\n patiosWidth: number;\n patiosLength: number;\n public get cutoutCondition(): boolean {\n return (\n [this.APP.sldSpan, this.APP.sldMultiSpan, this.APP.sldFrontOverhang]\n .map((x) => x.currentValue)\n .reduce((a, b) => a + b, 0) -\n this.APP.sldExistingWidth1.currentValue >=\n EXISTING_BUILDING_CONFIG.CUTOUT_ALLOW\n );\n }\n public get rakecutCondition(): boolean {\n let patiosWidth =\n this.APP.dialogEditBay.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n let patiosLength =\n this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue;\n\n return false;\n }\n private APP: AppComponent;\n private deferHandle;\n private deferTimeout = EXISTING_BUILDING_CONFIG.CUTOUT_DEFFER_TIME_OUT;\n public firstLoad = true;\n\n constructor(app: AppComponent) {\n this.APP = app;\n\n this.patiosGroup = new Group();\n this.patiosGroup.userData = {\n isGroup: true,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n app.scene.add(this.patiosGroup);\n\n this.columnAndPurlinManager = new ColumnAndPurlinManager(app, this);\n this.roofManager = new RoofManager(app, this);\n this.dimesionManager = new DimensionManager(app, this);\n\n this.registerEvents();\n }\n\n load(): Promise {\n return Promise.all([\n this.columnAndPurlinManager.optimize(),\n this.roofManager.optimize(),\n this.dimesionManager.optimize(),\n ]).then(() => {\n this.columnAndPurlinManager.load();\n this.roofManager.load();\n this.dimesionManager.load();\n });\n }\n loadBracket(bracketQuantity: number): void {\n this.columnAndPurlinManager.numberOfBracketBack = bracketQuantity;\n this.columnAndPurlinManager.addPostOrBracketBack();\n }\n loadBracketCutout(bracketQuantity: number): void {\n this.columnAndPurlinManager.numberOfBracketCutout = bracketQuantity;\n this.columnAndPurlinManager.addPostOrBracketBackCutout();\n }\n loadSideGableBracket(bracketQuantity: number): void {}\n getOutlines(): Printing2DGeometry {\n let dimensionOutline = this.dimesionManager.getOutlines();\n return {\n lines: [\n ...this.columnAndPurlinManager.getSection().lines,\n ...this.roofManager.getOutLines().lines,\n ...dimensionOutline.lines,\n ],\n texts: dimensionOutline.texts,\n };\n }\n\n public destroy(): void {\n this.columnAndPurlinManager.destroy();\n this.roofManager.destroy();\n this.dimesionManager.destroy();\n this.unRegisterEvent();\n }\n\n registerEvents() {\n this.updateEventHandle = this.updateDefer.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sltCutOut,\n this.APP.sldFrontOverhang,\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltHouseBeamSize,\n this.APP.sltColourBarge,\n this.APP.sltColourGutter,\n this.APP.sltColourDownpipe,\n this.APP.sltColourRoof,\n this.APP.sldSpan,\n this.APP.sldExistingWallHeight,\n this.APP.sldEaveWidth,\n this.APP.sldFasciaDepth,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldFlyOverBracketHeight,\n this.APP.sltColourBeam,\n this.APP.sltColourPost,\n this.APP.sltColourBracket,\n this.APP.sltColourFasciaBracket,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n this.APP.sltLeftCutType,\n this.APP.sldLeftCutVertical,\n this.APP.sldLeftCutHorizontal,\n this.APP.sltRightCutType,\n this.APP.sldRightCutVertical,\n this.APP.sldRightCutHorizontal,\n this.APP.sltPanelDirection,\n this.APP.sltPanelDirectionShow,\n this.APP.sltBeamLayoutShow,\n this.APP.sltExistingRoofPitch,\n this.APP.btnTurnOnPanel,\n ];\n this.controlsToRegisterEvent.forEach((c) => {\n c.addAction(this.updateEventHandle);\n });\n }\n unRegisterEvent() {\n this.controlsToRegisterEvent.forEach((c) =>\n c.removeAction(this.updateEventHandle)\n );\n }\n\n updateDefer(previousValue: number, currentValue: number) {\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES ||\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE ||\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE\n ) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => {\n this.update(previousValue, currentValue);\n }, this.deferTimeout);\n } else {\n this.update(previousValue, currentValue);\n }\n }\n update(preVal: number, curVal: number) {\n let totalBaySize = this.APP.dialogEditBay.totalBaySize;\n let diff = this.APP.sldExistingLength.currentValue - totalBaySize;\n this.patiosWidth =\n totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n this.patiosLength =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue;\n let extraWallWidth =\n this.APP.existingWallManager.geo_existingWallW1.width +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n this.patiosGroup.position.setX(\n -diff / 2 -\n this.APP.sldExistingLength2.currentValue -\n extraWallWidth\n );\n } else {\n this.patiosGroup.position.setX(\n -diff / 2 - this.APP.sldExistingLength2.currentValue\n );\n }\n } else {\n this.patiosGroup.position.setX(-diff / 2 - extraWallWidth);\n }\n } else if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n this.patiosGroup.position.setX(\n diff / 2 + this.APP.sldExistingLength2.currentValue\n );\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n this.patiosGroup.position.setX(\n diff / 2 + this.APP.sldExistingLength2.currentValue + extraWallWidth\n );\n } else {\n this.patiosGroup.position.setX(\n diff / 2 + this.APP.sldExistingLength2.currentValue\n );\n }\n } else {\n this.patiosGroup.position.setX(diff / 2 + extraWallWidth);\n }\n } else {\n this.patiosGroup.position.setX(0);\n }\n\n this.patiosGroup.position.setZ(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n this.APP.eaveManager.backOverhang -\n (this.columnAndPurlinManager.geo_bracket?.width || 0)\n );\n\n Promise.all([\n this.roofManager.load(),\n this.columnAndPurlinManager.load(),\n ]).then(() => {\n // this.boundingBox = this.APP.utils.getObjectsBoundingBox(\n // this.patiosGroup.children.filter(c => c.userData.type != GEOMETRY_TYPE.DIMENSION && c.userData.type != GEOMETRY_TYPE.ROOF_PATIOS)\n // );\n //test\n // this.APP.scene.remove(...this.APP.scene.children.filter(c => c.userData.type == 'BOX_HELPRE'));\n // let boxHelper = new Box3Helper(this.boundingBox);\n // boxHelper.userData = { type: 'BOX_HELPRE' };\n // this.APP.scene.add(boxHelper);\n\n this.boundingBox = this.getPatiosBox();\n this.dimesionManager.draw();\n });\n }\n public getPatiosBox(): Box3 {\n let left =\n -this.APP.dialogEditBay.totalBaySize / 2 -\n this.APP.sldLeftOverhang.currentValue;\n let right =\n this.APP.dialogEditBay.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue;\n let front =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue;\n let back = 0;\n let height = this.APP.sldBuildingHeight.currentValue;\n let extraOffsetZ =\n this.APP.existingWallManager.geo_existingWallL1.width +\n this.APP.eaveManager.backOverhang;\n\n let box = new Box3();\n box = box.expandByPoint(new Vector3(left, 0, front));\n box = box.expandByPoint(new Vector3(right, height, back));\n box.translate(new Vector3(0, 0, -extraOffsetZ));\n\n if (this.APP.sltExistingType.currentValue == 1) {\n let diff =\n (this.APP.sldExistingLength.currentValue -\n this.APP.dialogEditBay.totalBaySize) /\n 2;\n box.translate(new Vector3(-diff, 0, 0));\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n box.translate(new Vector3(this.APP.sldLeftOverhang.currentValue, 0, 0));\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n box.translate(\n new Vector3(-this.APP.sldExistingLength2.currentValue, 0, 0)\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 2) {\n let diff =\n (this.APP.sldExistingLength.currentValue -\n this.APP.dialogEditBay.totalBaySize) /\n 2;\n box.translate(new Vector3(diff, 0, 0));\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n box.translate(new Vector3(-this.APP.sldRightOverhang.currentValue, 0, 0));\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n box.translate(\n new Vector3(this.APP.sldExistingLength2.currentValue, 0, 0)\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 3) {\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n }\n // if (!environment.production) {\n // this.APP.scene.remove(...this.APP.scene.children.filter(o => o.userData.type == 'BOXHELPER'));\n // let boxHelper = new Box3Helper(box);\n // boxHelper.userData = { type: \"BOXHELPER\" };\n // this.APP.scene.add(boxHelper);\n // }\n\n return box;\n }\n}\n","import {\n BUILDING_SIDE,\n CUTOUT_ENABLE,\n EXISTING_BUILDING_CONFIG,\n FIT_FLYOVER_BRAKET_ON_ROOF,\n PANEL_DIRECTION,\n RAKECUT_TYPE,\n} from \"src/app/app.constants\";\nimport HighLightBox from \"src/app/models/HighlightBox\";\nimport {\n BoxBufferGeometry,\n BufferGeometry,\n Color,\n Geometry,\n Group,\n LineSegments,\n Material,\n Matrix4,\n Mesh,\n MeshLambertMaterial,\n Object3D,\n Plane,\n Vector3,\n} from \"three\";\nimport { CSG } from \"three-csg-ts\";\nimport { PatiosBackFlyOverManager } from \".\";\nimport { GEOMETRY_CATEGORY, GEOMETRY_TYPE } from \"../../app.config\";\nimport { HomeComponent as AppComponent } from \"../../containers/home/home.component\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport {\n GeometryInfo,\n LineType,\n Print2DView,\n Printing2DGeometry,\n Printing2DLine,\n ViewType,\n} from \"../models\";\nimport { UI } from \"../ui\";\nimport { Util } from \"../utils\";\n\nexport class RoofManager {\n private scene: Group;\n private APP: AppComponent;\n private MANAGER: PatiosBackFlyOverManager;\n private material: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private geo_RoofPanel: GeometryInfo;\n private geo_roofPanelBase: GeometryInfo;\n private geo_roofPanelBargeCappingLeft: GeometryInfo;\n private geo_roofPanelBargeCappingRight: GeometryInfo;\n private geo_roofPanelBargeCappingFront: GeometryInfo;\n private geo_bargeCutoutLeftHor: GeometryInfo;\n private geo_bargeCutoutRightHor: GeometryInfo;\n private geo_bargeRakecutLeft: GeometryInfo;\n private geo_bargeRakecutRight: GeometryInfo;\n //private geo_roofPanelBargeCappingBack: BufferGeometry;\n private geo_gutterFront: GeometryInfo;\n private zFlashingGeo: GeometryInfo;\n private geo_gutterCap: GeometryInfo;\n\n private roofGroup: Group;\n\n private eventHandleId: any;\n private objectSizeChangedHandle: any;\n\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n\n private totalBaySize: number;\n private extraOffsetZ: number;\n\n private mesh_CutoutLeft: Mesh;\n private csg_cutoutLeft: CSG;\n private mesh_CutoutRight: Mesh;\n private csg_cutoutRight: CSG;\n private geo_cutoutLeft: BoxBufferGeometry;\n private geo_cutoutRight: BoxBufferGeometry;\n private geo_rakecutLeft: BoxBufferGeometry;\n private geo_rakecutRight: BoxBufferGeometry;\n private mesh_rakecutLeft: Mesh;\n private mesh_rakecutRight: Mesh;\n private csg_rakecutLeft: CSG;\n private csg_rakecutRight: CSG;\n private geo_downPipe: GeometryInfo;\n\n private roofWidth: number;\n private roofLength: number;\n\n private deferHandle;\n private deferTimeout = EXISTING_BUILDING_CONFIG.CUTOUT_DEFFER_TIME_OUT;\n private cutoutExistingBothLength: number;\n\n constructor(app: AppComponent, backFlyOverManager: PatiosBackFlyOverManager) {\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.APP = app;\n this.MANAGER = backFlyOverManager;\n this.scene = new Group();\n backFlyOverManager.patiosGroup.add(this.scene)\n this.material = MaterialManager.Instance().ROOF;\n\n this.registerEvent();\n }\n\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n this.geo_RoofPanel = this.geometryManager.getRoofSheetPanel();\n this.geo_RoofPanel.geometry.translate(\n this.geo_RoofPanel.width / 2 + 2,\n this.geo_RoofPanel.height / 2 - 1,\n this.geo_RoofPanel.length / 2\n );\n\n this.geo_roofPanelBase = this.geometryManager.getRoofBase();\n this.geo_roofPanelBase.geometry.translate(\n this.geo_roofPanelBase.width / 2,\n this.geo_roofPanelBase.height / 2,\n this.geo_roofPanelBase.length / 2\n );\n\n this.zFlashingGeo = this.geometryManager.getZFlashing();\n this.zFlashingGeo.geometry.rotateY(Math.PI);\n this.zFlashingGeo.geometry.translate(this.zFlashingGeo.length, -3, 0);\n\n //Barge capping\n this.geo_roofPanelBargeCappingLeft = this.geometryManager.getBarge();\n this.geo_roofPanelBargeCappingLeft.geometry\n .rotateY(Math.PI)\n .translate(\n this.geo_roofPanelBargeCappingLeft.width / 2 - 3,\n this.geo_roofPanelBargeCappingLeft.height / 2 -\n (this.APP.sltDripBarge.currentValue ? 9 : 1),\n this.geo_roofPanelBargeCappingLeft.length / 2\n );\n\n this.geo_roofPanelBargeCappingRight = this.geometryManager.getBarge();\n this.geo_roofPanelBargeCappingRight.geometry.translate(\n -this.geo_roofPanelBargeCappingLeft.width / 2 + 3,\n this.geo_roofPanelBargeCappingLeft.height / 2 -\n (this.APP.sltDripBarge.currentValue ? 9 : 1),\n this.geo_roofPanelBargeCappingLeft.length / 2\n );\n\n this.geo_roofPanelBargeCappingFront = this.geometryManager.getBarge();\n this.geo_roofPanelBargeCappingFront.geometry\n .rotateY(-Math.PI / 2)\n .translate(\n this.geo_roofPanelBargeCappingLeft.length / 2,\n this.geo_roofPanelBargeCappingLeft.height / 2 -\n (this.APP.sltDripBarge.currentValue ? 9 : 1),\n -this.geo_roofPanelBargeCappingLeft.width / 2\n );\n\n this.geo_bargeRakecutLeft = this.geometryManager.getBarge();\n this.geo_bargeRakecutLeft.geometry\n .rotateY(Math.PI)\n .translate(\n this.geo_bargeRakecutLeft.width / 2,\n this.geo_bargeRakecutLeft.height / 2 -\n (this.APP.sltDripBarge.currentValue ? 9 : 1),\n -this.geo_bargeRakecutLeft.length / 2\n );\n\n this.geo_bargeRakecutRight = this.geometryManager.getBarge();\n this.geo_bargeRakecutRight.geometry.translate(\n -this.geo_bargeRakecutRight.width / 2,\n this.geo_bargeRakecutRight.height / 2 -\n (this.APP.sltDripBarge.currentValue ? 9 : 1),\n -this.geo_bargeRakecutRight.length / 2\n );\n\n //Gutter\n this.geo_gutterFront = this.geometryManager.getGutter();\n this.geo_gutterFront.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_gutterFront.length / 2,\n -20,\n this.geo_gutterFront.width / 2\n );\n\n //Gutter cap\n this.geo_gutterCap = this.geometryManager.getGuterEndCap();\n this.geo_gutterCap.geometry\n .rotateY(Math.PI / 2)\n .translate(0, -20, this.geo_gutterCap.length / 2);\n\n this.geo_cutoutLeft = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_cutoutLeft.translate(-500, 500, -500);\n this.geo_cutoutRight = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_cutoutRight.translate(500, 500, -500);\n\n this.geo_rakecutLeft = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_rakecutLeft.translate(-500, 500, 500);\n this.geo_rakecutRight = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_rakecutRight.translate(500, 500, 500);\n\n //Barge cutout left\n this.geo_bargeCutoutLeftHor = this.geometryManager.getBarge();\n this.geo_bargeCutoutLeftHor.geometry\n .rotateY(Math.PI / 2)\n .translate(\n -this.geo_bargeCutoutLeftHor.length / 2,\n this.geo_bargeCutoutLeftHor.height / 2 -\n (this.APP.sltDripBarge.currentValue ? 9 : 1),\n this.geo_bargeCutoutLeftHor.width / 2\n );\n\n //Barge cutout right\n this.geo_bargeCutoutRightHor = this.geometryManager.getBarge();\n this.geo_bargeCutoutRightHor.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_bargeCutoutRightHor.length / 2,\n this.geo_bargeCutoutRightHor.height / 2 -\n (this.APP.sltDripBarge.currentValue ? 9 : 1),\n this.geo_bargeCutoutRightHor.width / 2\n );\n\n this.geo_downPipe = this.geometryManager.getDownPipe();\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.ROOF_PATIOS\n )\n );\n this.APP.scene.remove(\n ...this.APP.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SHEET_OUTLINE\n )\n );\n\n //test\n this.APP.scene.remove(\n ...this.APP.scene.children.filter((x) => x.userData.type == \"RAKECUT\")\n );\n this.APP.scene.remove(\n ...this.APP.scene.children.filter((x) => x.userData.type == \"HELPER\")\n );\n\n this.extraOffsetZ =\n this.APP.existingWallManager.geo_existingWallL1.width +\n this.APP.eaveManager.backOverhang;\n\n this.totalBaySize = this.APP.dialogEditBay.totalBaySize;\n\n this.roofLength =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue;\n const _roofLength =\n Math.pow(this.roofLength, 2) +\n Math.pow(this.getHeightByRoofPitch({ isMultiSpan: true }), 2);\n this.cutoutExistingBothLength =\n (this.totalBaySize -\n (this.APP.sldExistingLength.currentValue +\n this.APP.existingWallManager.geo_existingWallW1.width * 2)) /\n 2;\n\n this.addRoof();\n this.addCutout();\n this.addAngelRakeCut();\n this.addStepRakecut();\n if (UI.rakeCutLeftType == 0) {\n new HighLightBox(this.roofGroup, {\n min: {\n x: -(UI.totalBayLength / 2 + UI.overhangLeft),\n y: 0,\n z: UI.span + UI.multiSpan + UI.overhangBack + UI.overhangFront,\n },\n max: {\n x: -(UI.totalBayLength / 2 + UI.overhangLeft) + 300,\n y: 0,\n z:\n UI.span + UI.multiSpan + UI.overhangBack + UI.overhangFront - 300,\n },\n userData: { side: BUILDING_SIDE.LEFT },\n });\n }\n if (UI.rakeCutRightType == 0) {\n new HighLightBox(this.roofGroup, {\n min: {\n x: UI.totalBayLength / 2 + UI.overhangRight - 300,\n y: 0,\n z: UI.span + UI.multiSpan + UI.overhangBack + UI.overhangFront,\n },\n max: {\n x: UI.totalBayLength / 2 + UI.overhangRight,\n y: 0,\n z:\n UI.span + UI.multiSpan + UI.overhangBack + UI.overhangFront - 300,\n },\n userData: { side: BUILDING_SIDE.RIGHT },\n });\n }\n\n let offsetLeft =\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue -\n this.MANAGER.patiosGroup.position.x;\n let offsetRight =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue +\n this.MANAGER.patiosGroup.position.x;\n let offsetFront =\n this.APP.sldSpan.currentValue -\n this.APP.sldExistingWidth1.currentValue / 2 +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldMultiSpan.currentValue;\n let offsetBack =\n this.APP.sldExistingWidth1.currentValue / 2 +\n this.APP.sldBackOverhang.currentValue;\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndPurlinManager.geo_bracket?.width || 0);\n offsetRight -= offsetX;\n offsetLeft += offsetX;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndPurlinManager.geo_bracket?.width || 0);\n offsetLeft += offsetX;\n offsetRight += offsetX;\n }\n let clipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let clipingPlaneRight = new Plane(new Vector3(-1, 0, 0), offsetRight);\n let clipingPlaneFront = new Plane(new Vector3(0, 0, -1), offsetFront);\n let clipingPlaneBack = new Plane(new Vector3(0, 0, 1), offsetBack);\n\n // let helper = new PlaneHelper(clipingPlaneLeft, 10000, 0xffff00);\n // helper.name = \"HELPER\";\n // helper.userData = { type: 'HELPER' };\n // this.APP.scene.add(helper);\n\n this.material.clippingPlanes = [clipingPlaneLeft, clipingPlaneRight];\n MaterialManager.Instance().ROOF_BASE.clippingPlanes = [\n clipingPlaneLeft,\n clipingPlaneRight,\n ];\n let width =\n this.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n this.roofWidth = width;\n this.roofLength =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldBackOverhang.currentValue +\n this.APP.sldFrontOverhang.currentValue;\n let roofSheetingCount = Math.ceil(width / this.geo_RoofPanel.width);\n let offsetX = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n\n //panel direction\n let panelDirectionOfset = 1;\n if (\n this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT\n ) {\n offsetX =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue -\n this.geo_RoofPanel.width;\n panelDirectionOfset = -1;\n } else if (\n this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.LEFT_TO_RIGHT\n ) {\n offsetX = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n }\n\n if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT &&\n this.MANAGER.cutoutCondition\n ) {\n let totalPanelLength = 0;\n let cuted = true;\n for (let index = 0; index < roofSheetingCount; index++) {\n let last = index == roofSheetingCount - 1;\n totalPanelLength += this.geo_RoofPanel.width;\n let isOver =\n totalPanelLength <\n this.APP.sldExistingLength2.currentValue -\n this.APP.existingWallManager.geo_existingWallW1.width -\n 100;\n\n this.addRoofSheeting(offsetX, [this.csg_cutoutLeft]);\n this.addRoofSheetingBase(offsetX, last, [this.csg_cutoutLeft]);\n\n offsetX += this.geo_RoofPanel.width * panelDirectionOfset;\n }\n } else if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT &&\n this.MANAGER.cutoutCondition\n ) {\n let totalPanelLength = 0;\n let cuted = false;\n for (let index = 0; index < roofSheetingCount; index++) {\n let last = index == roofSheetingCount - 1;\n totalPanelLength += this.geo_RoofPanel.width;\n let isOver =\n totalPanelLength >=\n this.roofWidth -\n this.APP.sldExistingLength2.currentValue +\n this.geo_RoofPanel.width;\n cuted =\n totalPanelLength >=\n this.roofWidth - this.APP.sldExistingLength2.currentValue &&\n !isOver;\n\n this.addRoofSheeting(offsetX, [this.csg_cutoutRight]);\n this.addRoofSheetingBase(offsetX, last, [this.csg_cutoutRight]);\n\n offsetX += this.geo_RoofPanel.width * panelDirectionOfset;\n }\n } else if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES &&\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH &&\n this.MANAGER.cutoutCondition\n ) {\n let totalPanelLength = 0;\n let cuted = false;\n let cuted2 = false;\n for (let index = 0; index < roofSheetingCount; index++) {\n let last = index == roofSheetingCount - 1;\n totalPanelLength += this.geo_RoofPanel.width;\n let isOver =\n totalPanelLength < this.APP.sldExistingLength2.currentValue;\n let isOver2 =\n totalPanelLength >=\n this.roofWidth -\n this.APP.sldExistingLength2.currentValue +\n this.geo_RoofPanel.width;\n let flag =\n totalPanelLength >=\n this.roofWidth - this.APP.sldExistingLength2.currentValue;\n\n // if (!cuted && !isOver) {\n // this.addRoofSheetingBase(offsetX, last, this.csg_cutoutLeft);\n // this.addRoofSheeting(offsetX, true, this.csg_cutoutLeft);\n // cuted = true;\n // }\n // else if (!cuted2 && flag) {\n // this.addRoofSheetingBase(offsetX, last, this.csg_cutoutRight);\n // this.addRoofSheeting(offsetX, true, this.csg_cutoutRight);\n // cuted2 = true;\n // }\n // else {\n // this.addRoofSheetingBase(offsetX, last, []);\n // this.addRoofSheeting(offsetX, false, []);\n // }\n\n this.addRoofSheeting(offsetX, [\n this.csg_cutoutLeft,\n this.csg_cutoutRight,\n ]);\n this.addRoofSheetingBase(offsetX, last, [\n this.csg_cutoutLeft,\n this.csg_cutoutRight,\n ]);\n\n offsetX += this.geo_RoofPanel.width * panelDirectionOfset;\n }\n } else {\n for (let index = 0; index < roofSheetingCount; index++) {\n let last = index == roofSheetingCount - 1;\n\n this.addRoofSheeting(offsetX, []);\n this.addRoofSheetingBase(offsetX, last, []);\n\n offsetX += this.geo_RoofPanel.width * panelDirectionOfset;\n }\n }\n\n this.addZFlashing();\n this.addBargeCapping();\n this.addBargeAngelRakecut();\n this.addBargeStepRakecut();\n this.addGutter();\n\n //this.getOutLines();\n this.showPanelOutline();\n //this.showPanelOutLineTest();\n\n this.scene.visible = UI.showRoof\n\n resolve();\n });\n }\n private getHeightByRoofPitch(userDataPos: any): number {\n if (userDataPos.isSpan) {\n return (\n this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n this.APP.sldSpan.currentValue\n );\n } else if (userDataPos.isMultiSpan) {\n return (\n this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue)\n );\n } else {\n return (\n this.utils.tan(this.APP.sltRoofPitch.currentValue) * this.roofLength\n );\n }\n }\n public getOutLines(): Printing2DGeometry {\n let objs = this.roofGroup.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n );\n\n let gutterGroupObjs = this.roofGroup.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS\n );\n let gutterObjs: Object3D[] = [];\n for (let group of gutterGroupObjs) {\n gutterObjs.push(...group.children);\n }\n objs = [...objs, ...gutterObjs];\n\n let lsGeometries: Printing2DLine[] = [];\n\n let offsetLeft =\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue -\n this.MANAGER.patiosGroup.position.x;\n let offsetRight =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue +\n this.MANAGER.patiosGroup.position.x;\n let roofClipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let roofClipingPlaneRight = new Plane(new Vector3(-1, 0, 0), offsetRight);\n\n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n o as Mesh,\n 60\n );\n\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n outlineGeo.translate(0, 5000, 0);\n\n if (\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ) {\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneRight);\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n }\n\n // var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"SHEETING_OUTLINE\"};\n // this.APP.scene.add( line );\n\n let simplifiedGeo = this.simplifyGeo(outlineGeo);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: simplifiedGeo.vertices,\n views: o.userData.views,\n });\n }\n\n lsGeometries.push({\n objectType: GEOMETRY_TYPE.ROOF_COVER,\n vertices: this.makeRoofPolygon(),\n color: this.utils.convertHexColorToRgb(`#${new Color(UI.panelColor).getHexString()}`),\n views: [\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ]\n });\n\n return { lines: lsGeometries, texts: [] };\n }\n makeRoofPolygon() {\n const polygon = this.utils.getRoofCoverPolygonForLRRoof()\n this.roofGroup.updateWorldMatrix(true, true)\n return polygon.map(el => (el as Vector3).applyMatrix4(this.roofGroup.matrixWorld))\n }\n public showPanelOutline() {\n if (this.APP.sltPanelDirectionShow.currentValue == false) return;\n\n let objs = this.roofGroup.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n );\n\n let offsetLeft =\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue -\n this.MANAGER.patiosGroup.position.x;\n let offsetRight =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue +\n this.MANAGER.patiosGroup.position.x;\n let roofClipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let roofClipingPlaneRight = new Plane(new Vector3(-1, 0, 0), offsetRight);\n\n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n o as Mesh,\n 60\n );\n\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n //outlineGeo.translate(0, 1000, 0);\n\n if (\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ) {\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneRight);\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n }\n\n var line = new LineSegments(\n outlineGeo,\n MaterialManager.Instance().MESH_OUTLINE\n );\n line.userData = { type: GEOMETRY_TYPE.SHEET_OUTLINE };\n this.APP.scene.add(line);\n }\n }\n public showPanelOutLineTest() {\n // if(this.APP.sltPanelDirectionShow.currentValue == false)\n // return;\n\n //console.log('show layout');\n\n let objs = this.roofGroup.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n );\n\n let offsetLeft =\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue -\n this.MANAGER.patiosGroup.position.x;\n let offsetRight =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue +\n this.MANAGER.patiosGroup.position.x;\n let roofClipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let roofClipingPlaneRight = new Plane(new Vector3(-1, 0, 0), offsetRight);\n\n let flag = false;\n\n //for (let i = 0; i < objs.length-1; i+=2)\n //for(let o of objs)\n {\n // let o1 = objs[i];\n // let o2 = objs[i+1];\n\n // o1.material = objs[i].material.clone();\n // o2.material = objs[i+1].material.clone();\n\n // if(flag){\n // o1.material.color = new Color('gray');\n // o2.material.color = new Color('gray');\n // }\n // else{\n // o1.material.color = new Color('white');\n // o2.material.color = new Color('white');\n // }\n\n // flag = !flag;\n\n let o = objs[7];\n //let newGeo = BufferGeometryUtils.toTrianglesDrawMode(new BufferGeometry().fromGeometry((o as Mesh).geometry), TrianglesDrawMode);\n\n let tmpGeo = (o as Mesh).geometry as Geometry;\n tmpGeo.computeFaceNormals();\n tmpGeo.mergeVertices();\n tmpGeo.computeVertexNormals();\n //let simpifiedGeo = this.modifier.modify(tmpGeo, Math.floor(tmpGeo.vertices.length * 0.9));\n\n // let simplified = o.clone() as Mesh;\n // simplified.material = (simplified.material as MeshPhongMaterial).clone();\n // simplified.material.flatShading = true;\n\n //const count = Math.floor( newGeo.attributes['position'].count * 0.9 ); // number of vertices to remove\n //newGeo = this.modifier.modify( newGeo, count );\n\n // var rs = ((o as Mesh).geometry as Geometry).mergeVertices();\n // console.log('result merge vertice', rs);\n\n //let newMesh = new Mesh(simpifiedGeo);\n\n //let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(newMesh, 90);\n\n //o.updateWorldMatrix(true, true);\n //outlineGeo.applyMatrix4(o.matrixWorld);\n //outlineGeo.translate(0, 1000, 0);\n\n // if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE) {\n // outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneRight);\n // outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n // }\n\n // var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: GEOMETRY_TYPE.SHEET_OUTLINE};\n // this.APP.scene.add( line );\n\n // const wireframe = new WireframeGeometry( simpifiedGeo );\n // let line2 = new LineSegments( wireframe );\n // line2.userData = {type: GEOMETRY_TYPE.SHEET_OUTLINE};\n // line2.material.depthTest = false;\n // line2.material.opacity = 0.25;\n // line2.material.transparent = true;\n\n // o.updateMatrixWorld();\n // line2.applyMatrix4(o.matrixWorld);\n\n // line2.translateY(1000);\n\n // this.APP.scene.add(line2);\n }\n }\n public simplifyGeo(geo: BufferGeometry): Geometry {\n let simplifiedGeo = new Geometry();\n let vertices = geo.getAttribute(\"position\").array;\n for (let i = 0; i < vertices.length; i += 3) {\n simplifiedGeo.vertices.push(\n new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2])\n );\n }\n return simplifiedGeo;\n }\n public addRoof() {\n this.roofGroup = null;\n this.roofGroup = new Group();\n this.roofGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.ROOF_PATIOS,\n };\n\n let offsetY = this.getRoofOffsetY();\n let offsetZ = -(\n this.APP.sldExistingWidth1.currentValue / 2 +\n this.APP.sldBackOverhang.currentValue +\n this.extraOffsetZ\n );\n\n this.roofGroup.position.setY(offsetY);\n this.roofGroup.position.setZ(offsetZ);\n this.roofGroup.rotateX(\n this.utils.degreesToRadians(-this.APP.sltRoofPitch.currentValue)\n );\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndPurlinManager.geo_bracket?.width || 0);\n this.roofGroup.position.setX(-offsetX);\n }\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndPurlinManager.geo_bracket?.width || 0);\n this.roofGroup.position.setX(offsetX);\n }\n\n this.scene.add(this.roofGroup);\n }\n public addRoofSheeting(offsetX: number, csgObjs: CSG[]) {\n let mesh: Mesh = new Mesh(this.geo_RoofPanel.geometry, this.material);\n\n let offsetSheet = 0;\n if (\n this.APP.sltRoofSheetingType.currentValue == 0 ||\n this.APP.sltRoofSheetingType.currentValue == 1\n ) {\n offsetSheet = 30;\n } else {\n offsetSheet = 12;\n }\n\n let scaleZ =\n (this.APP.sldSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldBackOverhang.currentValue +\n this.APP.sldMultiSpan.currentValue) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue) /\n this.geo_RoofPanel.length;\n let offsetY = this.geo_roofPanelBase.height - offsetSheet;\n let offsetZ = 0;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setZ(scaleZ);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.ROOF_PANEL,\n views: views,\n };\n let cutoutCondition =\n this.APP.sltCutOut.currentValue == 1 &&\n this.APP.sltExistingType.currentValue != 0 &&\n this.APP.sldExistingLength2.currentValue > 0;\n let rakeCutCondition =\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE ||\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE;\n\n if (cutoutCondition || rakeCutCondition) {\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n mesh.position.set(\n offsetX + this.MANAGER.patiosGroup.position.x,\n offsetY,\n offsetZ + this.roofGroup.position.z\n );\n mesh.updateMatrix();\n\n let meshResult = mesh.clone();\n\n if (cutoutCondition) {\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(\n CSG.fromMesh(meshResult).subtract(csgObj),\n mesh.matrix\n );\n }\n }\n if (rakeCutCondition) {\n if (this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE) {\n meshResult = CSG.toMesh(\n CSG.fromMesh(meshResult).subtract(this.csg_rakecutLeft),\n mesh.matrix\n );\n }\n if (this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE) {\n meshResult = CSG.toMesh(\n CSG.fromMesh(meshResult).subtract(this.csg_rakecutRight),\n mesh.matrix\n );\n }\n }\n\n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix));\n meshResult.applyMatrix4(matrixBefore);\n\n this.roofGroup.add(meshResult);\n } else {\n this.roofGroup.add(mesh);\n }\n }\n public addRoofSheetingBase(offsetX: number, isLast: boolean, csgObjs: CSG[]) {\n let mesh: Mesh = new Mesh(\n this.geo_roofPanelBase.geometry,\n MaterialManager.Instance().ROOF_BASE\n );\n let offsetZ = UI.isUpFasciaUpstandardBracket ? EXISTING_BUILDING_CONFIG.ROOF_BASE_SUBTRACT : 0;\n let scaleZ =\n (this.APP.sldSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldBackOverhang.currentValue +\n this.APP.sldMultiSpan.currentValue -\n 60) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue) /\n this.geo_roofPanelBase.length;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n mesh.position.set(offsetX, 0, offsetZ);\n mesh.scale.setZ(scaleZ);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.ROOF_PANEL_BASE,\n views: views,\n };\n if (isLast) {\n mesh.userData.last = true;\n }\n\n let cutoutCondition =\n this.APP.sltCutOut.currentValue == 1 &&\n this.APP.sltExistingType.currentValue != 0 &&\n this.APP.sldExistingLength2.currentValue > 0;\n let rakeCutCondition =\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE ||\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE;\n if (cutoutCondition || rakeCutCondition) {\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n mesh.position.set(\n offsetX + this.MANAGER.patiosGroup.position.x,\n 0,\n offsetZ + this.roofGroup.position.z\n );\n mesh.updateMatrix();\n\n let meshResult = mesh.clone();\n\n if (cutoutCondition) {\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(\n CSG.fromMesh(meshResult).subtract(csgObj),\n mesh.matrix\n );\n }\n }\n if (rakeCutCondition) {\n if (this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE) {\n meshResult = CSG.toMesh(\n CSG.fromMesh(meshResult).subtract(this.csg_rakecutLeft),\n mesh.matrix\n );\n }\n if (this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE) {\n meshResult = CSG.toMesh(\n CSG.fromMesh(meshResult).subtract(this.csg_rakecutRight),\n mesh.matrix\n );\n }\n }\n\n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix));\n meshResult.applyMatrix4(matrixBefore);\n\n this.roofGroup.add(meshResult);\n } else {\n this.roofGroup.add(mesh);\n }\n }\n\n addBargeCappingCutRight() {\n //right\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n let offsetRight =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue -\n this.APP.sldExistingLength2.currentValue;\n let scaleZ =\n (this.APP.sldExistingWidth1.currentValue +\n this.APP.existingWallManager.geo_existingWallL2.width +\n 20) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue) /\n this.geo_roofPanelBargeCappingLeft.length;\n let mesh = new Mesh(\n this.geo_roofPanelBargeCappingRight.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.setX(offsetRight);\n mesh.scale.setZ(scaleZ);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n\n //back\n let offsetLeft = offsetRight + this.APP.sldExistingLength2.currentValue;\n let scaleX =\n this.APP.sldExistingLength2.currentValue /\n this.geo_roofPanelBargeCappingFront.length;\n let offsetZ =\n this.APP.sldExistingWidth1.currentValue +\n this.APP.existingWallManager.geo_existingWallL2.width +\n 10;\n mesh = new Mesh(\n this.geo_roofPanelBargeCappingFront.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.setX(offsetLeft);\n mesh.position.setZ(offsetZ);\n mesh.rotateY(Math.PI);\n mesh.scale.setX(scaleX);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n\n this.roofGroup.add(mesh);\n }\n addBargeCappingCutLeft() {\n //left\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n let offsetLeft =\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue -\n this.APP.sldExistingLength2.currentValue;\n let scaleZ =\n (this.APP.sldExistingWidth1.currentValue +\n this.APP.existingWallManager.geo_existingWallL2.width +\n 50) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue) /\n this.geo_roofPanelBargeCappingLeft.length;\n let mesh = new Mesh(\n this.geo_roofPanelBargeCappingLeft.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.setX(-offsetLeft);\n mesh.scale.setZ(scaleZ);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n\n //back\n let scaleX =\n this.APP.sldExistingLength2.currentValue /\n this.geo_roofPanelBargeCappingFront.length;\n let offsetZ =\n this.APP.sldExistingWidth1.currentValue +\n this.APP.existingWallManager.geo_existingWallL2.width +\n 10;\n mesh = new Mesh(\n this.geo_roofPanelBargeCappingFront.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.setX(-offsetLeft);\n mesh.position.setZ(offsetZ);\n mesh.rotateY(Math.PI);\n mesh.scale.setX(scaleX);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n\n this.roofGroup.add(mesh);\n }\n private addBargeCapping() {\n let mesh: Mesh;\n\n let extraWallWidth =\n this.APP.existingWallManager.geo_existingWallW1.width +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n\n let offsetXF = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n let offsetXL1 =\n -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue) +\n this.APP.sldExistingLength2.currentValue -\n extraWallWidth;\n let offsetXL2 = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n\n let offsetXR1 =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue -\n this.APP.sldExistingLength2.currentValue +\n this.APP.existingWallManager.geo_existingWallW1.width +\n 100;\n let offsetXR2 =\n this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n\n let offsetZL = 0;\n let offsetZR = 0;\n let offsetZFront =\n (this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldBackOverhang.currentValue) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n let bargeFrontLength = this.roofWidth;\n\n let scaleCutoutVer =\n this.utils.getHypotenuseByCos(\n this.APP.sldExistingWidth1.currentValue +\n this.geo_roofPanelBargeCappingLeft.width,\n this.APP.sltRoofPitch.currentValue\n ) / this.geo_roofPanelBargeCappingLeft.length;\n //let scaleCutoutHor = (this.APP.sldExistingLength2.currentValue - extraWallWidth) / this.geo_bargeCutoutLeftHor.length;\n\n let bargeLeftLength = this.roofLength;\n let bargeRightLength = this.roofLength;\n\n let offsetY = 0;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n //cutout\n if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.APP.sldExistingLength2.currentValue > 0 &&\n this.MANAGER.cutoutCondition &&\n (this.APP.sltExistingType.currentValue == 1 ||\n this.APP.sltExistingType.currentValue == 3)\n ) {\n bargeLeftLength -= this.APP.sldExistingWidth1.currentValue;\n offsetZL += this.utils.getHypotenuseByCos(\n this.APP.sldExistingWidth1.currentValue,\n this.APP.sltRoofPitch.currentValue\n );\n\n let bargeCutoutHorLength =\n this.APP.sldExistingLength2.currentValue +\n this.APP.sldLeftOverhang.currentValue -\n extraWallWidth;\n\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n offsetXL1 += extraWallWidth;\n //scaleCutoutHor = (this.APP.sldExistingLength2.currentValue ) / this.geo_bargeCutoutLeftHor.length;\n bargeCutoutHorLength += extraWallWidth;\n }\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n offsetXL1 =\n -this.APP.sldExistingLength.currentValue / 2 -\n this.APP.existingWallManager.geo_existingWallW1.width -\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n //scaleCutoutHor = ((this.roofWidth - (this.APP.sldExistingLength.currentValue + this.APP.existingWallManager.geo_existingWallW1.width * 2)) / 2 - EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK) / this.geo_bargeCutoutLeftHor.length;\n bargeCutoutHorLength =\n (this.roofWidth -\n (this.APP.sldExistingLength.currentValue +\n this.APP.existingWallManager.geo_existingWallW1.width * 2)) /\n 2 -\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n }\n\n offsetXL1 +=\n this.APP.sldLeftOverhang.currentValue -\n EXISTING_BUILDING_CONFIG.BARGE_ROOF_OFFSET_X;\n\n //scaleCutoutHor = bargeCutoutHorLength/this.geo_bargeCutoutLeftHor.length;\n\n //cutout Hor\n let offsetZ = this.utils.getHypotenuseByCos(\n this.APP.sldExistingWidth1.currentValue,\n this.APP.sltRoofPitch.currentValue\n );\n mesh = new Mesh(\n this.geo_bargeCutoutLeftHor.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXL1, offsetY, offsetZ);\n mesh.scale.setX(\n bargeCutoutHorLength / this.geo_bargeCutoutLeftHor.length\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n\n //cutout Ver\n mesh = new Mesh(\n this.geo_roofPanelBargeCappingLeft.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXL1, offsetY, 0);\n mesh.scale.setZ(scaleCutoutVer);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n }\n if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.APP.sldExistingLength2.currentValue > 0 &&\n this.MANAGER.cutoutCondition &&\n (this.APP.sltExistingType.currentValue == 2 ||\n this.APP.sltExistingType.currentValue == 3)\n ) {\n bargeRightLength -= this.APP.sldExistingWidth1.currentValue;\n let bargeCutoutHorLength =\n this.APP.sldExistingLength2.currentValue +\n this.APP.sldRightOverhang.currentValue -\n extraWallWidth;\n offsetZR += this.utils.getHypotenuseByCos(\n this.APP.sldExistingWidth1.currentValue,\n this.APP.sltRoofPitch.currentValue\n );\n\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n offsetXR1 -= extraWallWidth;\n //scaleCutoutHor = (this.APP.sldExistingLength2.currentValue ) / this.geo_bargeCutoutLeftHor.length;\n bargeCutoutHorLength += extraWallWidth;\n }\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n offsetXR1 =\n this.APP.sldExistingLength.currentValue / 2 +\n this.APP.existingWallManager.geo_existingWallW1.width +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n //scaleCutoutHor = ((this.roofWidth - (this.APP.sldExistingLength.currentValue + this.APP.existingWallManager.geo_existingWallW1.width * 2)) / 2 - EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK) / this.geo_bargeCutoutLeftHor.length;\n bargeCutoutHorLength =\n (this.roofWidth -\n (this.APP.sldExistingLength.currentValue +\n this.APP.existingWallManager.geo_existingWallW1.width * 2)) /\n 2 -\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n }\n\n offsetXR1 -=\n this.APP.sldRightOverhang.currentValue -\n EXISTING_BUILDING_CONFIG.BARGE_ROOF_OFFSET_X;\n\n //cutout hor\n let offsetZ = this.utils.getHypotenuseByCos(\n this.APP.sldExistingWidth1.currentValue,\n this.APP.sltRoofPitch.currentValue\n );\n mesh = new Mesh(\n this.geo_bargeCutoutRightHor.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXR1, offsetY, offsetZ);\n mesh.scale.setX(\n bargeCutoutHorLength / this.geo_bargeCutoutLeftHor.length\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n\n //cutout ver\n mesh = new Mesh(\n this.geo_roofPanelBargeCappingRight.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXR1, offsetY, 0);\n mesh.scale.setZ(scaleCutoutVer);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n }\n if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.APP.sldExistingLength2.currentValue > 0 &&\n this.MANAGER.cutoutCondition &&\n this.APP.sltExistingType.currentValue == 3\n ) {\n }\n\n //Rakecut\n if (\n this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE ||\n this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP\n ) {\n offsetXF += this.APP.sldLeftCutHorizontal.currentValue;\n bargeLeftLength -= this.APP.sldLeftCutVertical.currentValue;\n bargeFrontLength -= this.APP.sldLeftCutHorizontal.currentValue;\n }\n if (\n this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE ||\n this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP\n ) {\n bargeRightLength -= this.APP.sldRightCutVertical.currentValue;\n bargeFrontLength -= this.APP.sldRightCutHorizontal.currentValue;\n }\n\n let scaleXF = bargeFrontLength / this.geo_roofPanelBargeCappingFront.length;\n let scaleZLeft =\n this.utils.getHypotenuseByCos(\n bargeLeftLength,\n this.APP.sltRoofPitch.currentValue\n ) / this.geo_roofPanelBargeCappingLeft.length;\n let scaleZRight =\n this.utils.getHypotenuseByCos(\n bargeRightLength,\n this.APP.sltRoofPitch.currentValue\n ) / this.geo_roofPanelBargeCappingLeft.length;\n\n //left\n mesh = new Mesh(\n this.geo_roofPanelBargeCappingLeft.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXL2, offsetY, offsetZL);\n mesh.scale.setZ(scaleZLeft);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n\n this.roofGroup.add(mesh);\n\n //right\n mesh = new Mesh(\n this.geo_roofPanelBargeCappingRight.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXR2, offsetY, offsetZR);\n mesh.scale.setZ(scaleZRight);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n\n //front\n mesh = new Mesh(\n this.geo_roofPanelBargeCappingFront.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXF, 0, offsetZFront + 2);\n mesh.scale.setX(scaleXF);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n\n this.roofGroup.add(mesh);\n }\n private addBargeAngelRakecut() {\n if (\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.ANGLE &&\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.ANGLE\n ) {\n return;\n }\n\n let offsetY = 0;\n let offsetZ =\n (this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldBackOverhang.currentValue) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n let length = Math.sqrt(\n Math.pow(this.APP.sldLeftCutVertical.currentValue, 2) +\n Math.pow(this.APP.sldLeftCutHorizontal.currentValue, 2)\n );\n let scaleZ = length / this.geo_bargeRakecutLeft.length;\n\n let rotY = Math.atan(\n this.APP.sldLeftCutHorizontal.currentValue /\n this.APP.sldLeftCutVertical.currentValue\n );\n\n let offsetX =\n -this.totalBaySize / 2 -\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldLeftCutHorizontal.currentValue;\n let mesh = new Mesh(\n this.geo_bargeRakecutLeft.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setZ(scaleZ);\n mesh.rotateY(rotY);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n let length = Math.sqrt(\n Math.pow(this.APP.sldRightCutVertical.currentValue, 2) +\n Math.pow(this.APP.sldRightCutHorizontal.currentValue, 2)\n );\n let scaleZ = length / this.geo_bargeRakecutLeft.length;\n\n let rotY = Math.atan(\n this.APP.sldRightCutHorizontal.currentValue /\n this.APP.sldRightCutVertical.currentValue\n );\n\n let offsetX =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue -\n this.APP.sldRightCutHorizontal.currentValue;\n let mesh = new Mesh(\n this.geo_bargeRakecutRight.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setZ(scaleZ);\n mesh.rotateY(-rotY);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n }\n }\n private addBargeStepRakecut() {\n if (\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.STEP &&\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.STEP\n ) {\n return;\n }\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n let offsetXL =\n this.APP.dialogEditBay.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue;\n let offsetXR =\n this.APP.dialogEditBay.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue;\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n let offsetZ = this.utils.getHypotenuseByCos(\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldBackOverhang.currentValue -\n this.APP.sldLeftCutVertical.currentValue,\n this.APP.sltRoofPitch.currentValue\n );\n let scaleZ =\n (this.APP.sldLeftCutVertical.currentValue +\n this.geo_roofPanelBargeCappingLeft.width) /\n this.geo_roofPanelBargeCappingLeft.length;\n let scaleX =\n this.APP.sldLeftCutHorizontal.currentValue /\n this.geo_roofPanelBargeCappingLeft.length;\n\n let bargeVer = new Mesh(\n this.geo_roofPanelBargeCappingLeft.geometry,\n MaterialManager.Instance().BARGE\n );\n bargeVer.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n bargeVer.position.set(\n -offsetXL + this.APP.sldLeftCutHorizontal.currentValue,\n 0,\n offsetZ - this.geo_roofPanelBargeCappingLeft.width\n );\n bargeVer.scale.set(1, 1, scaleZ);\n\n let bargeHor = new Mesh(\n this.geo_roofPanelBargeCappingLeft.geometry,\n MaterialManager.Instance().BARGE\n );\n bargeHor.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n bargeHor.position.set(-offsetXL, 0, offsetZ);\n bargeHor.scale.set(1, 1, scaleX);\n bargeHor.rotateY(Math.PI / 2);\n\n this.roofGroup.add(bargeVer, bargeHor);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n let offsetZ = this.utils.getHypotenuseByCos(\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldBackOverhang.currentValue -\n this.APP.sldRightCutVertical.currentValue,\n this.APP.sltRoofPitch.currentValue\n );\n let scaleZ =\n (this.APP.sldRightCutVertical.currentValue +\n this.geo_roofPanelBargeCappingLeft.width) /\n this.geo_roofPanelBargeCappingLeft.length;\n let scaleX =\n this.APP.sldRightCutHorizontal.currentValue /\n this.geo_roofPanelBargeCappingLeft.length;\n\n let bargeVer = new Mesh(\n this.geo_roofPanelBargeCappingRight.geometry,\n MaterialManager.Instance().BARGE\n );\n bargeVer.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n bargeVer.position.set(\n offsetXR - this.APP.sldRightCutHorizontal.currentValue,\n 0,\n offsetZ - this.geo_roofPanelBargeCappingLeft.width\n );\n bargeVer.scale.set(1, 1, scaleZ);\n\n let bargeHor = new Mesh(\n this.geo_roofPanelBargeCappingRight.geometry,\n MaterialManager.Instance().BARGE\n );\n bargeHor.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n bargeHor.position.set(offsetXR, 0, offsetZ);\n bargeHor.scale.set(1, 1, scaleX);\n bargeHor.rotateY(-Math.PI / 2);\n\n this.roofGroup.add(bargeVer, bargeHor);\n }\n }\n public addGutter() {\n let offsetX = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n let offsetZ = -100;\n let offsetY = this.geo_roofPanelBase.height - 25;\n let gutterLength =\n this.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n let extraWallWidth =\n this.APP.existingWallManager.geo_existingWallW1.width +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n\n //cutout\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES &&\n this.MANAGER.cutoutCondition\n ) {\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n offsetX += this.APP.sldExistingLength2.currentValue;\n gutterLength -= this.APP.sldExistingLength2.currentValue;\n } else {\n offsetX += this.APP.sldExistingLength2.currentValue - extraWallWidth;\n gutterLength -=\n this.APP.sldExistingLength2.currentValue - extraWallWidth;\n }\n offsetX += this.APP.sldLeftOverhang.currentValue;\n gutterLength -= this.APP.sldLeftOverhang.currentValue;\n } else if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n gutterLength -= this.APP.sldExistingLength2.currentValue;\n } else {\n gutterLength -=\n this.APP.sldExistingLength2.currentValue - extraWallWidth;\n }\n //offsetX -= this.APP.sldRightOverhang.currentValue;\n gutterLength -= this.APP.sldRightOverhang.currentValue;\n } else if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n offsetX +=\n this.cutoutExistingBothLength -\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n gutterLength =\n this.APP.sldExistingLength.currentValue + extraWallWidth * 2;\n }\n }\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n //back\n let gutterGroup = this.utils.createGutterGroup(\n this.geo_gutterFront,\n this.geo_gutterCap,\n gutterLength,\n new Vector3(offsetX, offsetY, offsetZ),\n new Vector3(\n this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue),\n 0,\n 0\n ),\n views,\n 1,\n true,\n true\n );\n\n this.addDownPipe(gutterGroup, gutterLength);\n\n this.roofGroup.add(gutterGroup);\n }\n private addDownPipe(gutterGroup: Group, gutterLength: number) {\n let meshPipe = new Mesh(\n this.geo_downPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipe.userData = { type: GEOMETRY_TYPE.DOWNPIPE_NOZZLE };\n meshPipe.scale.setY(100 / this.geo_downPipe.height);\n meshPipe.position.set(100, -190, this.geo_downPipe.width / 2 + 20);\n\n gutterGroup.add(meshPipe);\n }\n public addZFlashing() {\n let offsetX = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n let offsetY = this.geo_roofPanelBase.height - 25;\n const offsetZ = 0;\n\n let scaleX =\n (this.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue) /\n this.zFlashingGeo.length;\n let flashingLength =\n this.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n let extraWallWidth =\n this.APP.existingWallManager.geo_existingWallW1.width +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n\n //cutout\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES &&\n this.MANAGER.cutoutCondition\n ) {\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n offsetX += this.APP.sldExistingLength2.currentValue;\n flashingLength -= this.APP.sldExistingLength2.currentValue;\n } else {\n offsetX += this.APP.sldExistingLength2.currentValue - extraWallWidth;\n flashingLength -=\n this.APP.sldExistingLength2.currentValue - extraWallWidth;\n }\n\n offsetX += this.APP.sldLeftOverhang.currentValue;\n flashingLength -= this.APP.sldLeftOverhang.currentValue;\n } else if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n flashingLength -= this.APP.sldExistingLength2.currentValue;\n } else {\n flashingLength -=\n this.APP.sldExistingLength2.currentValue - extraWallWidth;\n }\n //offsetX += this.APP.sldRightOverhang.currentValue;\n flashingLength -= this.APP.sldRightOverhang.currentValue;\n } else if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n offsetX +=\n this.cutoutExistingBothLength -\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n flashingLength =\n this.APP.sldExistingLength.currentValue +\n this.APP.existingWallManager.geo_existingWallW1.width * 2 +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK * 2;\n }\n }\n\n // if (this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE) {\n // offsetX += (this.APP.sldLeftCutHorizontal.currentValue);\n // flashingLength -= this.APP.sldLeftCutHorizontal.currentValue;\n // }\n // if(this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE){\n // flashingLength -= this.APP.sldRightCutHorizontal.currentValue;\n // }\n\n scaleX = flashingLength / this.zFlashingGeo.length;\n\n let mesh = new Mesh(\n this.zFlashingGeo.geometry,\n MaterialManager.Instance().ZFLASHING\n );\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.set(scaleX, 1, 1);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.ZFLASHING,\n scale: mesh.scale,\n };\n\n this.roofGroup.add(mesh);\n }\n private totalHeightFromEaveHeightToTopOfExistingRoof(){\n const height = \n this.geometryManager.EAVE.EAVE.height \n + UI.fasciaDepth \n + UI.eaveWidth * this.utils.tan(UI.existingRoofPitch) \n + this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.height / this.utils.cos(UI.existingRoofPitch)\n\n return height\n }\n private totalHeightFromEaveHeightToTopOfFlyoverBraket(){\n const height = this.totalHeightFromEaveHeightToTopOfExistingRoof() + UI.braketHeight - FIT_FLYOVER_BRAKET_ON_ROOF;\n\n return height\n }\n public getRoofOffsetY() {\n return (\n this.APP.sldExistingWallHeight.currentValue +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geometryManager.getBeam().height -\n this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n this.APP.sldBackOverhang.currentValue\n );\n }\n\n public destroy(): void {\n this.unregisterEvent();\n }\n\n private registerEvent(): void {\n this.eventHandleId = this.uiChangedDefer.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldExistingWallHeight,\n this.APP.sldEaveWidth,\n this.APP.sldExistingWidth1,\n\n this.APP.sldFrontOverhang,\n this.APP.sldBackOverhang,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldFlyOverBracketHeight,\n\n this.APP.dialogEditBay,\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n\n this.APP.sltColourBarge,\n this.APP.sltColourGutter,\n this.APP.sltColourDownpipe,\n this.APP.sltColourRoof,\n ];\n //this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n\n this.controlsToRegisterEvent2 = [\n this.APP.sltRoofSheetingType,\n this.APP.sltRoofThickness,\n this.APP.sltBargeType,\n this.APP.sltDripBarge,\n this.APP.sltGutterType,\n ];\n this.controlsToRegisterEvent2.forEach((c) =>\n c.addAction(this.objectSizeChangedHandle)\n );\n }\n private unregisterEvent(): void {\n // this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n // this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach((c) =>\n c.removeAction(this.objectSizeChangedHandle)\n );\n this.controlsToRegisterEvent2 = undefined;\n }\n private objectSizeChanged(preVal: number, curVal: number) {\n this.optimize().then(() => {\n this.load();\n });\n }\n private addCutout() {\n if (this.APP.sltCutOut.currentValue == 1) {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter((x) => x.userData.type == \"CUTOUT\")\n );\n\n let offsetX =\n this.APP.sldExistingLength.currentValue / 2 +\n this.APP.existingWallManager.geo_existingWallL2.width +\n 100;\n let offsetY = 0;\n let offsetZ =\n this.APP.sldExistingWidth1.currentValue / 2 -\n this.APP.existingWallManager.geo_existingWallL2.width -\n this.APP.sldBackOverhang.currentValue;\n\n let scaleX = (this.APP.sldExistingLength2.currentValue + 5000) / 1000;\n if (scaleX == 0) scaleX = 1;\n let scaleY = (this.APP.sldExistingWallHeight.currentValue + 5000) / 1000;\n let scaleZ =\n (this.APP.sldExistingWidth1.currentValue +\n this.APP.sldBackOverhang.currentValue +\n 5000) /\n 1000;\n if (scaleZ == 0) scaleZ = 1;\n\n // if(this.APP.sltExistingType.currentValue == 3){\n // offsetX -= 100;\n // }\n\n if (\n this.APP.sltExistingType.currentValue == 1 ||\n this.APP.sltExistingType.currentValue == 3\n ) {\n this.mesh_CutoutLeft = new Mesh(\n this.geo_cutoutLeft,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.mesh_CutoutLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"CUTOUT\",\n };\n\n this.mesh_CutoutLeft.position.set(-offsetX, offsetY, offsetZ);\n this.mesh_CutoutLeft.scale.set(scaleX, scaleY, scaleZ);\n\n //this.APP.scene.add(this.mesh_CutoutLeft);\n\n this.mesh_CutoutLeft.updateMatrix();\n this.csg_cutoutLeft = CSG.fromMesh(this.mesh_CutoutLeft);\n }\n if (\n this.APP.sltExistingType.currentValue == 2 ||\n this.APP.sltExistingType.currentValue == 3\n ) {\n this.mesh_CutoutRight = new Mesh(\n this.geo_cutoutRight,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.mesh_CutoutRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"CUTOUT\",\n };\n\n this.mesh_CutoutRight.position.set(offsetX, offsetY, offsetZ);\n this.mesh_CutoutRight.scale.set(scaleX, scaleY, scaleZ);\n\n //this.APP.scene.add(this.mesh_CutoutRight);\n\n this.mesh_CutoutRight.updateMatrix();\n this.csg_cutoutRight = CSG.fromMesh(this.mesh_CutoutRight);\n }\n }\n }\n private addAngelRakeCut() {\n let offsetXL =\n -this.totalBaySize / 2 -\n this.APP.sldLeftOverhang.currentValue +\n this.MANAGER.patiosGroup.position.x;\n let offsetXR =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue +\n this.MANAGER.patiosGroup.position.x;\n let offsetY = -100;\n\n let offsetZ =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue -\n this.extraOffsetZ -\n this.APP.sldExistingWidth1.currentValue / 2;\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n let angle = Math.atan(\n this.APP.sldLeftCutHorizontal.currentValue /\n this.APP.sldLeftCutVertical.currentValue\n );\n this.mesh_rakecutLeft = new Mesh(\n this.geo_rakecutLeft,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.mesh_rakecutLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"RAKECUT\",\n };\n\n this.mesh_rakecutLeft.position.set(\n offsetXL,\n offsetY,\n offsetZ - this.APP.sldLeftCutVertical.currentValue\n );\n this.mesh_rakecutLeft.scale.set(5, 5, 5);\n this.mesh_rakecutLeft.rotateY(angle);\n\n //this.APP.scene.add(this.mesh_rakecutLeft);\n\n this.mesh_rakecutLeft.updateMatrix();\n this.csg_rakecutLeft = CSG.fromMesh(this.mesh_rakecutLeft);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n let angle = Math.atan(\n this.APP.sldRightCutHorizontal.currentValue /\n this.APP.sldRightCutVertical.currentValue\n );\n this.mesh_rakecutRight = new Mesh(\n this.geo_rakecutRight,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.mesh_rakecutRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"RAKECUT\",\n };\n\n this.mesh_rakecutRight.position.set(\n offsetXR,\n offsetY,\n offsetZ - this.APP.sldRightCutVertical.currentValue\n );\n this.mesh_rakecutRight.scale.set(5, 5, 5);\n this.mesh_rakecutRight.rotateY(-angle);\n\n //this.APP.scene.add(this.mesh_rakecutRight);\n\n this.mesh_rakecutRight.updateMatrix();\n this.csg_rakecutRight = CSG.fromMesh(this.mesh_rakecutRight);\n }\n }\n private addStepRakecut() {\n let offsetXL =\n -this.totalBaySize / 2 -\n this.APP.sldLeftOverhang.currentValue +\n this.MANAGER.patiosGroup.position.x;\n let offsetXR =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue +\n this.MANAGER.patiosGroup.position.x;\n let offsetY = -100; //this.APP.sldExistingWallHeight.currentValue;\n\n let offsetZ =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue -\n this.extraOffsetZ -\n this.APP.sldExistingWidth1.currentValue / 2;\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n this.mesh_rakecutLeft = new Mesh(\n this.geo_rakecutLeft,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.mesh_rakecutLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"RAKECUT\",\n };\n\n this.mesh_rakecutLeft.position.set(\n offsetXL + this.APP.sldLeftCutHorizontal.currentValue,\n offsetY,\n offsetZ - this.APP.sldLeftCutVertical.currentValue\n );\n this.mesh_rakecutLeft.scale.set(5, 5, 5);\n\n //this.APP.scene.add(this.mesh_rakecutLeft);\n\n this.mesh_rakecutLeft.updateMatrix();\n this.csg_rakecutLeft = CSG.fromMesh(this.mesh_rakecutLeft);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n this.mesh_rakecutRight = new Mesh(\n this.geo_rakecutRight,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.mesh_rakecutRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"RAKECUT\",\n };\n\n this.mesh_rakecutRight.position.set(\n offsetXR - this.APP.sldRightCutHorizontal.currentValue,\n offsetY,\n offsetZ - this.APP.sldRightCutVertical.currentValue\n );\n this.mesh_rakecutRight.scale.set(5, 5, 5);\n\n //this.APP.scene.add(this.mesh_rakecutRight);\n\n this.mesh_rakecutRight.updateMatrix();\n this.csg_rakecutRight = CSG.fromMesh(this.mesh_rakecutRight);\n }\n }\n uiChangedDefer(previousValue: number, currentValue: number) {\n if (this.APP.sltCutOut.currentValue == 1) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => {\n this.load();\n }, this.deferTimeout);\n } else {\n this.load();\n }\n }\n}\n","import { Observable, Subject } from \"rxjs\";\nimport { debounce, debounceTime, map, takeLast } from \"rxjs/operators\";\nimport { Group, Material, Object3D } from \"three\";\nimport { GeometryManager } from \"src/app/core/geometry.manager\";\nimport { MaterialManager } from \"src/app/core/material.manager\";\nimport { HomeComponent } from \"src/app/containers/home\";\nimport { registerEvents } from \"./ui.manager\";\nexport interface IManager {\n init: () => Promise\n optimize: () => Promise\n load: () => Promise\n onUIChange: () => void\n // calculate: () => Promise\n}\nexport class BaseManager implements IManager {\n controls = []\n controlsReload = []\n\n onUIChangePtr = this.onUIChange.bind(this)\n onGeometryChangePtr = this.onGeometryChange.bind(this)\n\n APP: HomeComponent\n geometryManager: GeometryManager;\n materialMgr = MaterialManager.Instance()\n container: Group = undefined\n subject: Subject\n \n constructor() {\n this.geometryManager = GeometryManager.Instance();\n\n this.subject = new Subject()\n this.subject.pipe(debounceTime(500)).subscribe(() => { \n console.log('subject debounce run')\n this.optimize().then(() => {this.load()}).then(()=>{\n HomeComponent.ins.renderStatic();\n })\n })\n }\n\n init(): Promise {\n this.APP = HomeComponent.ins\n\n return new Promise(resolve => {\n this.container = new Group()\n HomeComponent.ins.scene.add(this.container)\n registerEvents(this.controls, this.onUIChangePtr)\n registerEvents(this.controlsReload, this.onGeometryChangePtr)\n resolve()\n })\n }\n\n load(): Promise {\n return new Promise((resolve) => {\n this.container.children = []\n\n resolve()\n })\n }\n optimize(): Promise { return Promise.resolve() }\n // calculate(): Promise{ return Promise.resolve() }\n onUIChange(): void {\n this.load()\n }\n onGeometryChange(): void {\n this.subject.next()\n }\n\n\n registerEvents(controls, handler){\n controls.forEach(ctrl => {\n ctrl.addAction(handler)\n });\n }\n}","import { Box3, BoxBufferGeometry, FontLoader, Geometry, Group, Line, Line3, Material, Matrix4, Mesh, Object3D, Scene, TextBufferGeometry, TextGeometryParameters, Vector3 } from \"three\";\nimport { environment as env } from '../../environments/environment';\nimport { DIMENSION_LABEL_TYPE, GEOMETRY_TYPE, PATIOS_ROOF_TYPE } from '../app.config';\nimport { BUILDING_SIDE, CONNECTION_TYPE, EXISTING_BUILDING_CONFIG } from '../app.constants';\nimport { HomeComponent as AppComponent, HomeComponent } from '../containers/home/home.component';\nimport Dimension, { AddDimensionOptions } from '../models/Dimension';\nimport { GeometryManager } from './geometry.manager';\nimport { MaterialManager } from './material.manager';\nimport { GeometryInfo, LineType, Print2DText, Printing2DGeometry, Printing2DLine, ViewType } from './models';\nimport { UI } from \"./ui\";\nimport { Util } from \"./utils\";\n\n// declare var KIEU_GABLE = {\n// NONE: -1,\n// FRONT: 0,\n// BACK: 1,\n// BOTH: 2\n// }\n\nexport class DimensionManager {\n private scene: Scene;\n private material: Material;\n private APP: AppComponent;\n public listText: THREE.Object3D[] = [];\n private utils: Util;\n\n private materialManager: MaterialManager;\n\n private dimensionPlanLeft: Object3D;\n private dimensionPlanTop: Object3D;\n private dimensionFrontLeft: Object3D;\n private dimensionFrontTop: Object3D;\n private dimensionLeftLeft: Object3D;\n private dimensionLeftTop: Object3D;\n\n private dimensionEaveHeight: Object3D;\n \n private dimensionRightTop: Object3D;\n private dimensionRightRight: Object3D;\n\n private lineCapGeo: GeometryInfo;\n private lineGeo: GeometryInfo;\n private textGeo: TextBufferGeometry;\n\n private dimensionDistance = 1500;\n private dimensionDistance2 = 500;\n\n private textDistance = 5000;\n\n private box: Box3;\n private startPos: Vector3;\n\n private font: any;\n private isReady = false;\n private textParameter: TextGeometryParameters;\n private geometryManager: GeometryManager;\n\n private options : AddDimensionOptions;\n\n private static instance: DimensionManager;\n static Instance(): DimensionManager{\n if (!DimensionManager.instance) {\n DimensionManager.instance = new DimensionManager();\n }\n return DimensionManager.instance;\n }\n\n private constructor() {\n this.utils = new Util();\n this.materialManager = MaterialManager.Instance();\n this.geometryManager = GeometryManager.Instance();\n }\n\n public init(app: AppComponent): Promise{\n this.APP = app;\n this.scene = this.APP.scene;\n this.material = MaterialManager.Instance().DIMENSION_TEXT;\n\n this.dimensionPlanTop = new Group();\n this.dimensionPlanTop.rotation.set(Math.PI/2,Math.PI,0);\n this.dimensionPlanTop.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.scene.add(this.dimensionPlanTop);\n\n this.dimensionPlanLeft = new Group();\n this.dimensionPlanLeft.rotation.set(-Math.PI/2, 0, -Math.PI/2);\n this.dimensionPlanLeft.userData = { type: GEOMETRY_TYPE.DIMENSION, position: { planLeft: true } };\n this.scene.add(this.dimensionPlanLeft);\n\n this.dimensionEaveHeight = new Group();\n this.dimensionEaveHeight.rotation.set(0, -Math.PI/2, Math.PI/2);\n this.dimensionEaveHeight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.scene.add(this.dimensionEaveHeight);\n\n this.dimensionRightTop = new Group(); \n this.dimensionRightTop.rotation.set(0,-Math.PI/2,0);\n this.dimensionRightTop.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionRightTop.visible = false;\n this.scene.add(this.dimensionRightTop);\n\n this.dimensionRightRight = new Group();\n this.dimensionRightRight.rotation.set(0,-Math.PI/2,-Math.PI/2);\n this.dimensionRightRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionRightRight.visible = false;\n this.scene.add(this.dimensionRightRight);\n\n this.dimensionLeftTop = new Group(); \n this.dimensionLeftTop.rotation.set(0,-Math.PI/2,0);\n this.dimensionLeftTop.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionLeftTop.visible = false;\n this.scene.add(this.dimensionLeftTop);\n\n this.dimensionLeftLeft = new Group();\n this.dimensionLeftLeft.rotation.set(0,-Math.PI/2,-Math.PI/2);\n this.dimensionLeftLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionLeftLeft.visible = false;\n this.scene.add(this.dimensionLeftLeft);\n\n this.dimensionFrontTop = new Group();\n this.dimensionFrontTop.rotation.set(0,Math.PI,0);\n this.dimensionFrontTop.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionFrontTop.visible = false;\n this.scene.add(this.dimensionFrontTop);\n\n this.dimensionFrontLeft = new Group();\n this.dimensionFrontLeft.rotation.set(0,0,Math.PI/2);\n this.dimensionFrontLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionFrontLeft.visible = false;\n this.scene.add(this.dimensionFrontLeft);\n\n //test\n // [\n // this.dimensionPlanTop,\n // this.dimensionPlanLeft,\n // this.dimensionRightTop,\n // this.dimensionRightRight,\n // this.dimensionLeftTop,\n // this.dimensionLeftLeft,\n // this.dimensionFrontTop,\n // this.dimensionFrontLeft\n // ].forEach(d => {d.visible = true});\n\n // app.sldSpan.addAction(this.onUIChanged.bind(this));\n // app.sldMultiSpan.addAction(this.onUIChanged.bind(this));\n // app.sldFrontOverhang.addAction(this.onUIChanged.bind(this));\n // app.sldExistingWidth1.addAction(this.onUIChanged.bind(this));\n // app.sldExistingWidth2.addAction(this.onUIChanged.bind(this));\n // app.sldExistingLength.addAction(this.onUIChanged.bind(this));\n // app.sldExistingLength2.addAction(this.onUIChanged.bind(this));\n // app.sltExistingType.addAction(this.onUIChanged.bind(this));\n // app.sldExistingWallHeight.addAction(this.onUIChanged.bind(this));\n // app.dialogEditBay.addAction(this.onUIChanged.bind(this));\n // app.sltStructureType.addAction(this.onUIChanged.bind(this));\n // app.sldLeftOverhang.addAction(this.onUIChanged.bind(this));\n // app.sldRightOverhang.addAction(this.onUIChanged.bind(this));\n\n return new Promise((resolve, reject) => {\n resolve();\n });\n }\n public optimize() : Promise{\n return new Promise((resolve, reject) => {\n this.lineGeo = this.geometryManager.getDimensionLine();\n this.lineCapGeo = this.geometryManager.getDimensionCap();\n\n resolve();\n });\n }\n public load(): Promise { \n return new Promise((resolve, reject) => {\n var loader = new FontLoader();\n loader.load( env.modelBaseUrl + '/assets/fonts/helvetiker_regular.typeface.json', (font) => {\n this.font = font;\n\n this.textParameter = {\n font: this.font,\n size: 200,\n height: 5,\n curveSegments: 10\n };\n this.options = {\n container: HomeComponent.ins.scene,\n start: new Vector3(),\n end: new Vector3(),\n linePos: new Vector3(),\n views: [],\n allowDrag: true,\n textParameter: this.textParameter,\n textPos: new Vector3(),\n labelType: null,\n fitZ: 10,\n hasTextClone: false,\n axis: 'x',\n lineLength: 0,\n onDragCallback: this.onDimDrag.bind(this),\n onDragStartCallback: this.onDimDragStart.bind(this)\n }\n\n this.isReady = true;\n this.draw(); \n\n resolve();\n })\n });\n }\n\n public unload(){\n this.scene.remove(this.dimensionPlanTop);\n this.scene.remove(this.dimensionPlanLeft);\n this.scene.remove(this.dimensionRightTop);\n this.scene.remove(this.dimensionRightRight);\n this.scene.remove(this.dimensionLeftTop);\n this.scene.remove(this.dimensionLeftLeft);\n this.scene.remove(this.dimensionFrontTop);\n this.scene.remove(this.dimensionFrontLeft);\n this.scene.remove(this.dimensionEaveHeight);\n }\n \n public draw(){\n if (!this.isReady) {\n return;\n }\n\n // this.dimensionPlanTop.children = [];\n // this.dimensionPlanLeft.children = [];\n this.dimensionPlanTop.children = this.dimensionPlanTop.children.filter( el =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.LENGTH_1\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.LENGTH_2\n );\n this.dimensionPlanLeft.children = this.dimensionPlanLeft.children.filter( el =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.WIDTH_1\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.WIDTH_2\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.EAVE_WIDTH\n );\n this.dimensionEaveHeight.children = this.dimensionEaveHeight.children.filter( el =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.EAVE_HEIGHT_DIM\n );\n this.dimensionFrontTop.children = [];\n this.dimensionFrontLeft.children = [];\n this.dimensionLeftTop.children = [];\n this.dimensionLeftLeft.children = [];\n this.dimensionRightTop.children = [];\n this.dimensionRightRight.children = [];\n\n this.scene.remove(...this.scene.children.filter(c => c.userData.type == GEOMETRY_TYPE.DIRECTION_TEXT));\n\n this.box = this.utils.getSceneBox();\n \n this.addText(\"LEFT\", {position: {trai: true}});\n this.addText(\"RIGHT\", {position: {phai: true}});\n this.addText(\"FRONT\", {position: {truoc: true}});\n this.addText(\"BACK\", {position: {sau: true}});\n\n if(UI.structureType == CONNECTION_TYPE.FREE_STANDING){\n this.dimensionPlanTop.children = [];\n this.dimensionPlanLeft.children = [];\n this.dimensionEaveHeight.children = [];\n return;\n }\n\n this.drawDimensionPlanTop({length1: true}); \n if(this.APP.sldExistingLength2.currentValue > 0){\n this.drawDimensionPlanTop({length2: true});\n } else {\n this.dimensionPlanTop.children = this.dimensionPlanTop.children.filter(el => el.userData?.groupType !== DIMENSION_LABEL_TYPE.LENGTH_2)\n }\n \n this.drawDimensionPlanLeft({eaveWidth: true});\n //WIDTH 1 AND WIDTH 2 IN LEFT\n if(this.APP.sltExistingType.currentValue != 0 && this.APP.sltExistingType.currentValue != 4){\n if(this.APP.sldExistingWidth1.currentValue > 0){\n this.drawDimensionPlanLeft({width1: true});\n } else {\n this.dimensionPlanLeft.children = this.dimensionPlanLeft.children.filter(el => \n el.userData?.groupType !== DIMENSION_LABEL_TYPE.WIDTH_1\n )\n }\n if(this.APP.sldExistingWidth2.currentValue > 0){\n this.drawDimensionPlanLeft({width2: true});\n } else {\n this.dimensionPlanLeft.children = this.dimensionPlanLeft.children.filter(el => \n el.userData?.groupType !== DIMENSION_LABEL_TYPE.WIDTH_2\n )\n }\n } else {\n this.dimensionPlanLeft.children = this.dimensionPlanLeft.children.filter(el => \n el.userData?.groupType !== DIMENSION_LABEL_TYPE.WIDTH_1\n && el.userData?.groupType !== DIMENSION_LABEL_TYPE.WIDTH_2\n )\n }\n\n this.drawDimensionEaveHeight();\n \n this.drawDimensionFrontTop();\n this.drawDimensionFrontLeft();\n\n this.drawDimensionLeftTop();\n this.drawDimensionLeftLeft();\n \n this.drawDimensionRightTop();\n this.drawDimensionRightRight();\n\n let offset = this.calulateBoundingBox();\n this.dimensionPlanLeft.position.setX(offset.left);\n\n //this.getOutlines();\n }\n\n private drawDimensionPlanTop(userDataPos){\n let offsetZ = this.APP.sldExistingWidth1.currentValue/2 + this.dimensionDistance;\n this.dimensionPlanTop.position.setZ(-offsetZ);\n\n let views = [ { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS } ];\n\n if(userDataPos.length1){\n let offsetX = this.APP.sldExistingLength.currentValue/2;\n let scaleX = this.APP.sldExistingLength.currentValue/this.lineGeo.length;\n\n // NO delete\n //if(this.APP.sltExistingType.currentValue == 1 && this.APP.sldExistingWidth1.currentValue > 0){\n // cap1.position.setX(-offsetX);\n \n // offsetX = this.APP.sldExistingLength.currentValue/2 + this.APP.existingWallManager.geo_existingWallW1.width;\n // cap2.position.setX(offsetX);\n \n // scaleX = (this.APP.sldExistingLength.currentValue + this.APP.existingWallManager.geo_existingWallW1.width)/this.lineGeo.length;\n // line.scale.setX(scaleX);\n // line.position.setX(this.APP.existingWallManager.geo_existingWallW1.width/2);\n //}\n //else if(this.APP.sltExistingType.currentValue == 2 && this.APP.sldExistingWidth1.currentValue > 0){\n // cap1.position.setX(offsetX);\n \n // offsetX = this.APP.sldExistingLength.currentValue/2 + this.APP.existingWallManager.geo_existingWallW1.width;\n // cap2.position.setX(-offsetX);\n \n // scaleX = (this.APP.sldExistingLength.currentValue + this.APP.existingWallManager.geo_existingWallW1.width)/this.lineGeo.length;\n // line.scale.setX(scaleX);\n // line.position.setX(-this.APP.existingWallManager.geo_existingWallW1.width/2);\n //}\n //else if(this.APP.sltExistingType.currentValue == 3 && this.APP.sldExistingWidth1.currentValue > 0){\n // offsetX = this.APP.sldExistingLength.currentValue/2 + this.APP.existingWallManager.geo_existingWallW1.width;\n // cap1.position.setX(offsetX);\n // cap2.position.setX(-offsetX);\n \n // scaleX = (this.APP.sldExistingLength.currentValue + this.APP.existingWallManager.geo_existingWallW1.width*2)/this.lineGeo.length;\n // line.scale.setX(scaleX);\n //}\n \n let textStr = this.utils.getDimensionValue(this.APP.sldExistingLength.currentValue);\n let options : AddDimensionOptions = {... this.options,\n lineLength: this.APP.sldExistingLength.currentValue,\n container: this.dimensionPlanTop,\n views: views,\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.LENGTH_1,\n hasTextClone: true,\n textCloneUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0,0,0) },\n textCloneRotation: new Vector3(Math.PI,Math.PI,0),\n textCloneVisible: false\n }\n let dim = this.dimensionPlanTop.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.LENGTH_1) as Dimension;\n if(!dim){\n new Dimension(options);\n } else {\n dim.update(options);\n }\n }\n else if(userDataPos.length2){\n let offsetX = this.APP.sldExistingLength.currentValue/2 + this.APP.sldExistingLength2.currentValue;\n let textOffsetX = this.APP.sldExistingLength2.currentValue/2 + this.APP.sldExistingLength.currentValue/2;\n let scaleX = this.APP.sldExistingLength2.currentValue/this.lineGeo.length;\n\n let textStr = this.utils.getDimensionValue(this.APP.sldExistingLength2.currentValue);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n if(this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3){\n let options : AddDimensionOptions = {... this.options,\n container: this.dimensionPlanTop,\n views: views,\n textPos: new Vector3( textOffsetX, -200, 0),\n linePos: new Vector3( textOffsetX, 0, 0),\n lineLength: this.APP.sldExistingLength2.currentValue,\n labelType: DIMENSION_LABEL_TYPE.LENGTH_2,\n hasTextClone: true,\n textCloneUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0,0,0) },\n textCloneRotation: new Vector3(Math.PI,Math.PI,0),\n textCloneVisible: false,\n side: BUILDING_SIDE.LEFT\n }\n let dim = this.dimensionPlanTop.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.LENGTH_2 && el.userData?.side == BUILDING_SIDE.LEFT) as Dimension;\n if(!dim){\n new Dimension(options);\n } else {\n dim.update(options);\n }\n } else {\n this.dimensionPlanTop.children = this.dimensionPlanTop.children.filter(el => el.userData?.groupType !== DIMENSION_LABEL_TYPE.LENGTH_2 || (el.userData?.groupType !== DIMENSION_LABEL_TYPE.LENGTH_2 && el.userData?.side !== BUILDING_SIDE.LEFT))\n }\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n let options : AddDimensionOptions = {... this.options,\n container: this.dimensionPlanTop,\n views: views,\n textPos: new Vector3( -textOffsetX, -200, 0),\n linePos: new Vector3( -textOffsetX, 0, 0),\n lineLength: this.APP.sldExistingLength2.currentValue,\n labelType: DIMENSION_LABEL_TYPE.LENGTH_2,\n hasTextClone: true,\n textCloneUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0,0,0) },\n textCloneRotation: new Vector3(Math.PI,Math.PI,0),\n textCloneVisible: false,\n side: BUILDING_SIDE.RIGHT\n }\n let dim = this.dimensionPlanTop.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.LENGTH_2 && el.userData?.side == BUILDING_SIDE.RIGHT) as Dimension;\n if(!dim){\n new Dimension(options);\n } else {\n dim.update(options);\n }\n } else {\n this.dimensionPlanTop.children = this.dimensionPlanTop.children.filter(el => el.userData?.groupType !== DIMENSION_LABEL_TYPE.LENGTH_2 || (el.userData?.groupType == DIMENSION_LABEL_TYPE.LENGTH_2 && el.userData?.side !== BUILDING_SIDE.RIGHT))\n }\n }\n }\n onDimDrag(event){\n if(event.object.userData?.dimType == DIMENSION_LABEL_TYPE.LENGTH_1){\n const obj = event.object as Mesh\n obj.position.z = 0\n obj.updateMatrixWorld()\n const pos = obj.position.clone();\n event.object.position.z = 0;\n event.object.position.y = 0;\n if (event.object.position.x < - HomeComponent.ins.sldExistingLength.maxValue / 2){\n event.object.position.x = - HomeComponent.ins.sldExistingLength.maxValue / 2\n } else if (event.object.position.x > HomeComponent.ins.sldExistingLength.maxValue / 2){\n event.object.position.x = HomeComponent.ins.sldExistingLength.maxValue / 2\n }\n if(event.object.userData?.left){\n if(event.object.position.x < HomeComponent.ins.sldExistingLength.minValue / 2){\n event.object.position.x = HomeComponent.ins.sldExistingLength.minValue / 2\n }\n }\n if(event.object.userData?.right){\n if(event.object.position.x > - HomeComponent.ins.sldExistingLength.minValue / 2){\n event.object.position.x = - HomeComponent.ins.sldExistingLength.minValue / 2\n }\n }\n\n let distance = HomeComponent.ins.sldExistingLength.currentValue;\n if(obj.userData.left){\n if(pos.x > this.startPos.x){\n distance = HomeComponent.ins.sldExistingLength.currentValue + 2 * (pos.x - this.startPos.x);\n } else if (pos.x < this.startPos.x){\n distance = HomeComponent.ins.sldExistingLength.currentValue - 2 * (- pos.x + this.startPos.x);\n }\n } else {\n if(pos.x > this.startPos.x){\n distance = HomeComponent.ins.sldExistingLength.currentValue - 2 * (pos.x - this.startPos.x);\n } else if (pos.x < this.startPos.x){\n distance = HomeComponent.ins.sldExistingLength.currentValue + 2 * (- pos.x + this.startPos.x);\n }\n }\n distance = Math.round(distance / 10) * 10;\n if(distance < HomeComponent.ins.sldExistingLength.minValue){\n distance = HomeComponent.ins.sldExistingLength.minValue;\n }\n if(distance > HomeComponent.ins.sldExistingLength.maxValue){\n distance = HomeComponent.ins.sldExistingLength.maxValue\n }\n if(HomeComponent.ins.sldExistingLength._isDisable){\n HomeComponent.ins.sldExistingLength.setValue(UI.existingLength1);\n } else {\n HomeComponent.ins.sldExistingLength.setValue(distance);\n }\n } else if ( event.object.userData?.dimType == DIMENSION_LABEL_TYPE.LENGTH_2 ){\n const obj = event.object as Mesh\n obj.position.z = 0\n obj.updateMatrixWorld()\n const pos = obj.position.clone();\n event.object.position.z = 0;\n event.object.position.y = 0;\n if(this.startPos.x < 0){\n if (event.object.position.x < - UI.existingLength1 / 2 - HomeComponent.ins.sldExistingLength2.maxValue){\n event.object.position.x = - UI.existingLength1 / 2 - HomeComponent.ins.sldExistingLength2.maxValue\n } \n if (event.object.position.x > - UI.existingLength1 / 2){\n event.object.position.x = - UI.existingLength1 / 2\n }\n if(event.object.userData?.right){\n if(event.object.position.x > - UI.existingLength1 / 2 - HomeComponent.ins.sldExistingLength2.minValue){\n event.object.position.x = - UI.existingLength1 / 2 - HomeComponent.ins.sldExistingLength2.minValue\n }\n }\n if(event.object.userData?.left){\n if(event.object.position.x < - UI.existingLength1 / 2){\n event.object.position.x = - UI.existingLength1 / 2\n }\n }\n }\n if(this.startPos.x > 0){\n if (event.object.position.x > UI.existingLength1 / 2 + HomeComponent.ins.sldExistingLength2.maxValue){\n event.object.position.x = UI.existingLength1 / 2 + HomeComponent.ins.sldExistingLength2.maxValue\n } \n if (event.object.position.x < UI.existingLength1 / 2){\n event.object.position.x = UI.existingLength1 / 2\n }\n if(event.object.userData?.left){\n if(event.object.position.x < UI.existingLength1 / 2 + HomeComponent.ins.sldExistingLength2.minValue){\n event.object.position.x = UI.existingLength1 / 2 + HomeComponent.ins.sldExistingLength2.minValue\n }\n }\n if(event.object.userData?.right){\n if(event.object.position.x > UI.existingLength1 / 2){\n event.object.position.x = UI.existingLength1 / 2\n }\n }\n }\n let distance = HomeComponent.ins.sldExistingLength2.currentValue;\n if(this.startPos.x < 0){\n // RIGHT\n if(obj.userData.left){\n if(pos.x > this.startPos.x){\n distance = HomeComponent.ins.sldExistingLength2.currentValue + (pos.x - this.startPos.x);\n } else if (obj.position.x < this.startPos.x){\n distance = HomeComponent.ins.sldExistingLength2.currentValue - (- pos.x + this.startPos.x);\n }\n } else {\n if(pos.x > this.startPos.x){\n distance = HomeComponent.ins.sldExistingLength2.currentValue - (pos.x - this.startPos.x);\n } else if (pos.x < this.startPos.x){\n distance = HomeComponent.ins.sldExistingLength2.currentValue + (- pos.x + this.startPos.x);\n }\n }\n } else if(this.startPos.x > 0){\n // LEFT\n if(obj.userData.left){\n if(pos.x > this.startPos.x){\n distance = HomeComponent.ins.sldExistingLength2.currentValue + (pos.x - this.startPos.x);\n } else if (pos.x < this.startPos.x){\n distance = HomeComponent.ins.sldExistingLength2.currentValue - (- pos.x + this.startPos.x);\n }\n } else {\n if(pos.x > this.startPos.x){\n distance = HomeComponent.ins.sldExistingLength2.currentValue - (pos.x - this.startPos.x);\n } else if (pos.x < this.startPos.x){\n distance = HomeComponent.ins.sldExistingLength2.currentValue + (- pos.x + this.startPos.x);\n }\n }\n }\n distance = Math.round(distance / 10) * 10;\n if(distance < HomeComponent.ins.sldExistingLength2.minValue){\n distance = HomeComponent.ins.sldExistingLength2.minValue;\n }\n if(distance > HomeComponent.ins.sldExistingLength2.maxValue){\n distance = HomeComponent.ins.sldExistingLength2.maxValue\n }\n HomeComponent.ins.sldExistingLength2.setValue(distance);\n } else if ( event.object.userData?.dimType == DIMENSION_LABEL_TYPE.WIDTH_1 ){\n const obj = event.object as Mesh\n obj.position.z = 0\n obj.updateMatrixWorld()\n const pos = obj.position.clone();\n event.object.position.z = 0;\n event.object.position.y = 0;\n if (event.object.position.x < - HomeComponent.ins.sldExistingWidth1.maxValue / 2){\n event.object.position.x = - HomeComponent.ins.sldExistingWidth1.maxValue / 2\n } else if (event.object.position.x > HomeComponent.ins.sldExistingWidth1.maxValue / 2){\n event.object.position.x = HomeComponent.ins.sldExistingWidth1.maxValue / 2\n }\n if(event.object.userData?.left){\n if(event.object.position.x < HomeComponent.ins.sldExistingWidth1.minValue / 2){\n event.object.position.x = HomeComponent.ins.sldExistingWidth1.minValue / 2\n }\n }\n if(event.object.userData?.right){\n if(event.object.position.x > - HomeComponent.ins.sldExistingWidth1.minValue / 2){\n event.object.position.x = - HomeComponent.ins.sldExistingWidth1.minValue / 2\n }\n }\n let distance = HomeComponent.ins.sldExistingWidth1.currentValue;\n if(obj.userData.left){\n if(pos.x > this.startPos.x){\n distance = HomeComponent.ins.sldExistingWidth1.currentValue + 2 * (pos.x - this.startPos.x);\n } else if (pos.x < this.startPos.x){\n distance = HomeComponent.ins.sldExistingWidth1.currentValue - 2 * (- pos.x + this.startPos.x);\n }\n } else {\n if(pos.x > this.startPos.x){\n distance = HomeComponent.ins.sldExistingWidth1.currentValue - 2 * (pos.x - this.startPos.x);\n } else if (pos.x < this.startPos.x){\n distance = HomeComponent.ins.sldExistingWidth1.currentValue + 2 * (- pos.x + this.startPos.x);\n }\n }\n distance = Math.round(distance / 10) * 10;\n if(distance < HomeComponent.ins.sldExistingWidth1.minValue){\n distance = HomeComponent.ins.sldExistingWidth1.minValue;\n }\n if(distance > HomeComponent.ins.sldExistingWidth1.maxValue){\n distance = HomeComponent.ins.sldExistingWidth1.maxValue\n }\n HomeComponent.ins.sldExistingWidth1.setValue(distance);\n } else if ( event.object.userData?.dimType == DIMENSION_LABEL_TYPE.WIDTH_2 ){\n const obj = event.object as Mesh\n obj.position.z = 0\n obj.updateMatrixWorld()\n const pos = obj.position.clone();\n event.object.position.z = 0;\n event.object.position.y = 0;\n if (event.object.position.x < UI.existingWidth1 / 2){\n event.object.position.x = UI.existingWidth1 / 2\n } else if (event.object.position.x > UI.existingWidth1 / 2 + HomeComponent.ins.sldExistingWidth2.maxValue){\n event.object.position.x = UI.existingWidth1 / 2 + HomeComponent.ins.sldExistingWidth2.maxValue\n }\n if(event.object.userData?.left){\n if(event.object.position.x < UI.existingWidth1 / 2 + HomeComponent.ins.sldExistingWidth2.minValue / 2){\n event.object.position.x = UI.existingWidth1 / 2 + HomeComponent.ins.sldExistingWidth2.minValue / 2\n }\n }\n if(event.object.userData?.right){\n if(event.object.position.x > UI.existingWidth1 / 2){\n event.object.position.x = UI.existingWidth1 / 2\n }\n }\n let distance = HomeComponent.ins.sldExistingWidth2.currentValue;\n if(obj.userData?.left){\n if(pos.x > this.startPos.x){\n distance = HomeComponent.ins.sldExistingWidth2.currentValue + (pos.x - this.startPos.x);\n } else if (obj.position.x < this.startPos.x){\n distance = HomeComponent.ins.sldExistingWidth2.currentValue - (- pos.x + this.startPos.x);\n }\n } else {\n if(pos.x > this.startPos.x){\n distance = HomeComponent.ins.sldExistingWidth2.currentValue - (pos.x - this.startPos.x);\n } else if (pos.x < this.startPos.x){\n distance = HomeComponent.ins.sldExistingWidth2.currentValue + (- pos.x + this.startPos.x);\n }\n }\n distance = Math.round(distance / 10) * 10;\n if(distance < HomeComponent.ins.sldExistingWidth2.minValue){\n distance = HomeComponent.ins.sldExistingWidth2.minValue;\n }\n if(distance > HomeComponent.ins.sldExistingWidth2.maxValue){\n distance = HomeComponent.ins.sldExistingWidth2.maxValue\n }\n HomeComponent.ins.sldExistingWidth2.setValue(distance);\n } else if ( event.object.userData?.dimType == DIMENSION_LABEL_TYPE.EAVE_HEIGHT_DIM ){\n const obj = event.object as Mesh\n obj.position.z = 0\n obj.updateMatrixWorld()\n const pos = obj.position.clone();\n event.object.position.z = 0;\n event.object.position.y = 0;\n if (event.object.position.x < - HomeComponent.ins.sldExistingWallHeight.maxValue / 2){\n event.object.position.x = - HomeComponent.ins.sldExistingWallHeight.maxValue / 2\n } else if (event.object.position.x > HomeComponent.ins.sldExistingWallHeight.maxValue / 2){\n event.object.position.x = HomeComponent.ins.sldExistingWallHeight.maxValue / 2\n }\n if(event.object.userData?.left){\n if(event.object.position.x < HomeComponent.ins.sldExistingWallHeight.minValue / 2){\n event.object.position.x = HomeComponent.ins.sldExistingWallHeight.minValue / 2\n }\n }\n if(event.object.userData?.right){\n if(event.object.position.x > - HomeComponent.ins.sldExistingWallHeight.minValue / 2){\n event.object.position.x = - HomeComponent.ins.sldExistingWallHeight.minValue / 2\n }\n }\n let distance = HomeComponent.ins.sldExistingWallHeight.currentValue;\n if(obj.userData.left){\n if(pos.x > this.startPos.x){\n distance = HomeComponent.ins.sldExistingWallHeight.currentValue + (pos.x - this.startPos.x);\n } else if (pos.x < this.startPos.x){\n distance = HomeComponent.ins.sldExistingWallHeight.currentValue - (- pos.x + this.startPos.x);\n }\n } else {\n if(pos.x > this.startPos.x){\n distance = HomeComponent.ins.sldExistingWallHeight.currentValue - (pos.x - this.startPos.x);\n } else if (pos.x < this.startPos.x){\n distance = HomeComponent.ins.sldExistingWallHeight.currentValue + (- pos.x + this.startPos.x);\n }\n }\n distance = Math.round(distance / 10) * 10;\n if(distance < HomeComponent.ins.sldExistingWallHeight.minValue){\n distance = HomeComponent.ins.sldExistingWallHeight.minValue;\n }\n if(distance > HomeComponent.ins.sldExistingWallHeight.maxValue){\n distance = HomeComponent.ins.sldExistingWallHeight.maxValue\n }\n HomeComponent.ins.sldExistingWallHeight.setValue(distance);\n }\n this.startPos = event.object.position.clone()\n }\n private drawDimensionEaveHeight() {\n let _dimensionDistane = this.dimensionDistance2;\n if(UI.existingType == BUILDING_SIDE.LEFT || UI.existingType == BUILDING_SIDE.RIGHT){\n _dimensionDistane = this.dimensionDistance;\n }\n\n let dimensionOffsetX = this.box.min.x - this.dimensionDistance2;\n if (UI.structureType == CONNECTION_TYPE.FASCIA || UI.structureType == CONNECTION_TYPE.FASCIA_UPSTAND) {\n if (UI.existingType == 2) {\n dimensionOffsetX -= UI.eaveWidth;\n }\n }\n this.dimensionEaveHeight.position.set(dimensionOffsetX, UI.eaveHeight / 2, -UI.existingWidth1 / 2);\n\n let textStr = this.utils.getDimensionValue(UI.eaveHeight);\n let options : AddDimensionOptions = {\n ... this.options,\n lineLength: UI.eaveHeight,\n container: this.dimensionEaveHeight,\n views: [],\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, 200, 0),\n labelType: DIMENSION_LABEL_TYPE.EAVE_HEIGHT_DIM,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [] },\n allowDrag: true\n }\n let dimBay = this.dimensionEaveHeight.children.find(el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.EAVE_HEIGHT_DIM\n ) as Dimension;\n if(!dimBay){\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n onDimDragStart(event){\n this.startPos = event.object.position.clone();\n }\n private drawDimensionPlanLeft(userDataPos){\n let _dimensionDistane = this.dimensionDistance2;\n if(this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3){\n _dimensionDistane = this.dimensionDistance;\n }\n\n //let dimensionOffsetX = this.APP.sldExistingLength.currentValue/2 + this.APP.sldExistingLength2.currentValue + _dimensionDistane;\n let dimensionOffsetX = this.box.min.x - this.dimensionDistance2;\n\n if (this.APP.sltStructureType.currentValue == 3 || this.APP.sltStructureType.currentValue == 5) {\n if (this.APP.sltExistingType.currentValue == 2) {\n dimensionOffsetX -= this.APP.sldEaveWidth.currentValue;\n }\n }\n\n //if(this.APP.sltExistingType.currentValue == 2){\n // dimensionOffsetX -= this.APP.sldExistingLength2.currentValue;\n //}\n\n this.dimensionPlanLeft.position.setX(dimensionOffsetX);\n\n let views = [ { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS } ];\n\n if(userDataPos.eaveWidth){\n\n let textStr = this.utils.getDimensionValue(this.APP.sldEaveWidth.currentValue);\n let options : AddDimensionOptions = {... this.options,\n lineLength: this.APP.sldEaveWidth.currentValue,\n container: this.dimensionPlanLeft,\n views: views,\n textPos: this.APP.sltExistingType.currentValue == 0 ? new Vector3(this.APP.sldEaveWidth.currentValue/2, - 200, 0) : new Vector3( - this.APP.sldExistingWidth1.currentValue/2 + this.APP.sldEaveWidth.currentValue/2, 200, 0),\n linePos: this.APP.sltExistingType.currentValue == 0 ? new Vector3(this.APP.sldEaveWidth.currentValue/2, 0, 0) : new Vector3( - this.APP.sldExistingWidth1.currentValue/2 + this.APP.sldEaveWidth.currentValue/2, 400, 0),\n labelType: DIMENSION_LABEL_TYPE.EAVE_WIDTH,\n hasTextClone: false,\n textCloneUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0,Math.PI/2,0) },\n textCloneRotation: new Vector3(Math.PI,Math.PI,0),\n textCloneVisible: false,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: this.APP.sldEaveWidth.currentValue.toString(), views: views, rotation: new Vector3(0,Math.PI/2,0) },\n allowDrag: false,\n visible: false\n }\n let dim = this.dimensionPlanLeft.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.EAVE_WIDTH) as Dimension;\n if(!dim){\n new Dimension(options);\n } else {\n dim.update(options);\n }\n }\n\n if(userDataPos.width1){\n let offsetZ = this.APP.sldExistingWidth1.currentValue/2;\n let scaleZ = this.APP.sldExistingWidth1.currentValue/this.lineGeo.length;\n\n let textStr = this.utils.getDimensionValue(this.APP.sldExistingWidth1.currentValue);\n let options : AddDimensionOptions = {... this.options,\n lineLength: this.APP.sldExistingWidth1.currentValue,\n container: this.dimensionPlanLeft,\n views: views,\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.WIDTH_1,\n hasTextClone: false,\n textCloneUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0,Math.PI/2,0) },\n textCloneRotation: new Vector3(Math.PI,Math.PI,0),\n textCloneVisible: false,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: this.APP.sldExistingWidth1.currentValue.toString(), views: views, rotation: new Vector3(0,Math.PI/2,0) }\n }\n let dim = this.dimensionPlanLeft.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.WIDTH_1) as Dimension;\n if(!dim){\n new Dimension(options);\n } else {\n dim.update(options);\n }\n }\n if(userDataPos.width2){\n let textStr = this.utils.getDimensionValue(this.APP.sldExistingWidth2.currentValue);\n let options : AddDimensionOptions = {... this.options,\n container: this.dimensionPlanLeft,\n views: views,\n textPos: new Vector3( this.APP.sldExistingWidth1.currentValue/2 + this.APP.sldExistingWidth2.currentValue/2, -200, 0),\n linePos: new Vector3( this.APP.sldExistingWidth1.currentValue/2 + this.APP.sldExistingWidth2.currentValue/2, 0, 0),\n lineLength: this.APP.sldExistingWidth2.currentValue,\n labelType: DIMENSION_LABEL_TYPE.WIDTH_2,\n hasTextClone: false,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0,Math.PI/2,0) },\n textCloneUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0,Math.PI/2,0) },\n textCloneRotation: new Vector3(Math.PI,Math.PI,0),\n textCloneVisible: false\n }\n let dim = this.dimensionPlanLeft.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.WIDTH_2) as Dimension;\n if(!dim){\n new Dimension(options);\n } else {\n dim.update(options);\n }\n }\n }\n private drawDimensionFrontLeft(){\n // if(this.APP.sltExistingType.currentValue == 0){\n // return;\n // }\n\n let dimensionOffsetX = this.APP.sldExistingLength.currentValue/2 + this.APP.sldExistingLength2.currentValue + this.dimensionDistance2;\n\n if(this.APP.sltExistingType.currentValue == 2){\n dimensionOffsetX -= this.APP.sldExistingLength2.currentValue;\n }\n \n this.dimensionFrontLeft.position.set(-dimensionOffsetX,this.APP.sldExistingWallHeight.currentValue/2,0);\n\n let offsetY = this.APP.sldExistingWallHeight.currentValue/2;\n let scaleY = this.APP.sldExistingWallHeight.currentValue/this.lineGeo.length;\n\n let views = [ { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS } ];\n\n if(this.APP.sltExistingType.currentValue == 0)\n views = null;\n \n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetY);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetY);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n line.scale.setX(scaleY);\n\n let textStr = this.utils.getDimensionValue(this.APP.sldExistingWallHeight.currentValue);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, rotation: new Vector3(0,0,Math.PI/2), views: views };\n text.position.setY(200);\n \n this.dimensionFrontLeft.add(line, cap1, cap2, text, ...this.utils.addArrowForLine(line));\n }\n private drawDimensionFrontTop(){ \n if(this.APP.sltExistingType.currentValue == 0){\n return;\n }\n \n let offsetY = this.APP.sldExistingWallHeight.currentValue + this.APP.sldFlyOverBracketHeight.currentValue + EXISTING_BUILDING_CONFIG.EXTRA_BRACKET_HEIGHT + this.dimensionDistance2;\n \n if (this.APP.sltStructureType.currentValue == 0 || this.APP.sltStructureType.currentValue == 3 || this.APP.sltStructureType.currentValue == 5) {\n if (this.APP.sldExistingWidth1.currentValue == 0) {\n offsetY = this.APP.sldBuildingHeight.currentValue + this.dimensionDistance2;\n }\n }\n\n if(this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF && this.APP.isFBRoof){\n if(UI.structureType === CONNECTION_TYPE.FLY_OVER){\n offsetY = UI.eaveHeight\n + UI.braketHeight\n + this.geometryManager.getBeam().height\n + this.utils.tan(UI.patiosPitch) * (UI.span / 2)\n + this.dimensionDistance2\n }\n if(UI.structureType === CONNECTION_TYPE.FASCIA_UPSTAND){\n offsetY = UI.existingWallHeight\n + +UI.upstandBraketType\n + this.geometryManager.getBeam().height\n + this.utils.tan(UI.patiosPitch) * (UI.span / 2)\n + this.dimensionDistance2\n }\n if(UI.structureType === CONNECTION_TYPE.EXISTING){\n offsetY = UI.existingWallHeight + this.dimensionDistance2\n }\n }\n if(this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF && !this.APP.isFBRoof){\n if(UI.structureType === CONNECTION_TYPE.FLY_OVER){\n offsetY = UI.eaveHeight\n + UI.braketHeight\n + this.geometryManager.getBeam().height\n + this.utils.tan(UI.patiosPitch) * ((UI.span + UI.multiSpan) / 2)\n + this.dimensionDistance2\n }\n if(UI.structureType === CONNECTION_TYPE.FASCIA_UPSTAND){\n offsetY = UI.existingWallHeight\n + +UI.upstandBraketType\n + this.geometryManager.getBeam().height\n + this.utils.tan(UI.patiosPitch) * ((UI.span + UI.multiSpan) / 2)\n + this.dimensionDistance2\n }\n if(UI.structureType === CONNECTION_TYPE.FREE_STANDING){\n offsetY = this.APP.sldBuildingHeight.currentValue + this.utils.tan(this.APP.sltRoofPitch.currentValue) * (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2 + this.dimensionDistance2\n }\n }\n\n this.dimensionFrontTop.position.setY(offsetY);\n\n let views = [ { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPlanTop.children.forEach( dimGroup => {\n dimGroup.children.forEach(c => {\n let clone = c.clone();\n clone.visible = false;\n clone.userData['views'] = views;\n \n if(c.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && c.visible){\n clone.position.setY(-c.position.y);\n clone.rotation.set(0, Math.PI, 0);\n } else if(c.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && !c.visible){\n return;\n }\n this.dimensionFrontTop.add(clone);\n })\n })\n }\n private drawDimensionLeftTop() {\n let offsetY = this.APP.sldExistingWallHeight.currentValue + this.APP.sldFlyOverBracketHeight.currentValue + EXISTING_BUILDING_CONFIG.EXTRA_BRACKET_HEIGHT + this.dimensionDistance2\n if(this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF && this.APP.isFBRoof){\n if(UI.structureType === CONNECTION_TYPE.FLY_OVER){\n offsetY = UI.eaveHeight\n + UI.braketHeight\n + this.geometryManager.getBeam().height\n + this.utils.tan(UI.patiosPitch) * (UI.span / 2)\n + this.dimensionDistance2\n }\n if(UI.structureType === CONNECTION_TYPE.FASCIA_UPSTAND){\n offsetY = UI.existingWallHeight\n + +UI.upstandBraketType\n + this.geometryManager.getBeam().height\n + this.utils.tan(UI.patiosPitch) * (UI.span / 2)\n + this.dimensionDistance2\n }\n if(UI.structureType === CONNECTION_TYPE.EXISTING){\n offsetY = UI.existingWallHeight + this.dimensionDistance2\n }\n }\n if(this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF && !this.APP.isFBRoof){\n if(UI.structureType === CONNECTION_TYPE.FLY_OVER){\n offsetY = UI.eaveHeight\n + UI.braketHeight\n + this.geometryManager.getBeam().height\n + this.utils.tan(UI.patiosPitch) * ((UI.span + UI.multiSpan) / 2)\n + this.dimensionDistance2\n }\n if(UI.structureType === CONNECTION_TYPE.FASCIA_UPSTAND){\n offsetY = UI.existingWallHeight\n + +UI.upstandBraketType\n + this.geometryManager.getBeam().height\n + this.utils.tan(UI.patiosPitch) * ((UI.span + UI.multiSpan) / 2)\n + this.dimensionDistance2\n }\n if(UI.structureType === CONNECTION_TYPE.FREE_STANDING){\n offsetY = this.APP.sldBuildingHeight.currentValue + this.utils.tan(this.APP.sltRoofPitch.currentValue) * (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2 + this.dimensionDistance2\n }\n }\n this.dimensionLeftTop.position.setY(offsetY);\n //this.dimensionTopLeft.position.setY(-1000);\n\n let views = [];\n\n \n this.dimensionPlanLeft.children.forEach( dimGroup => {\n if(this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3){\n views = [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }];\n } else if(dimGroup.userData.groupType == DIMENSION_LABEL_TYPE.EAVE_WIDTH){\n views = [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }];\n } else {\n views = [];\n }\n dimGroup.children.forEach(c => {\n let clone = c.clone();\n clone.userData['views'] = views;\n \n if(views.length != 0 && c.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && c.visible && dimGroup.userData.groupType == DIMENSION_LABEL_TYPE.EAVE_WIDTH){\n clone.position.setY(c.position.y + 400);\n } else if(views.length != 0 && c.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && c.visible){\n clone.position.setY(-c.position.y);\n } else if(c.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && !c.visible){\n return;\n }\n this.dimensionLeftTop.add(clone);\n })\n })\n }\n private drawDimensionRightTop(){\n let offsetY = this.APP.sldExistingWallHeight.currentValue + this.APP.sldFlyOverBracketHeight.currentValue + EXISTING_BUILDING_CONFIG.EXTRA_BRACKET_HEIGHT + this.dimensionDistance2\n if(this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF && this.APP.isFBRoof){\n if(UI.structureType === CONNECTION_TYPE.FLY_OVER){\n offsetY = UI.eaveHeight\n + UI.braketHeight\n + this.geometryManager.getBeam().height\n + this.utils.tan(UI.patiosPitch) * (UI.span / 2)\n + this.dimensionDistance2\n }\n if(UI.structureType === CONNECTION_TYPE.FASCIA_UPSTAND){\n offsetY = UI.existingWallHeight\n + +UI.upstandBraketType\n + this.geometryManager.getBeam().height\n + this.utils.tan(UI.patiosPitch) * (UI.span / 2)\n + this.dimensionDistance2\n }\n if(UI.structureType === CONNECTION_TYPE.EXISTING){\n offsetY = UI.existingWallHeight + this.dimensionDistance2\n }\n }\n if(this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF && !this.APP.isFBRoof){\n if(UI.structureType === CONNECTION_TYPE.FLY_OVER){\n offsetY = UI.eaveHeight\n + UI.braketHeight\n + this.geometryManager.getBeam().height\n + this.utils.tan(UI.patiosPitch) * ((UI.span + UI.multiSpan) / 2)\n + this.dimensionDistance2\n }\n if(UI.structureType === CONNECTION_TYPE.FASCIA_UPSTAND){\n offsetY = UI.existingWallHeight\n + +UI.upstandBraketType\n + this.geometryManager.getBeam().height\n + this.utils.tan(UI.patiosPitch) * ((UI.span + UI.multiSpan) / 2)\n + this.dimensionDistance2\n }\n if(UI.structureType === CONNECTION_TYPE.FREE_STANDING){\n offsetY = this.APP.sldBuildingHeight.currentValue + this.utils.tan(this.APP.sltRoofPitch.currentValue) * (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2 + this.dimensionDistance2\n }\n }\n this.dimensionRightTop.position.setY(offsetY);\n //this.dimensionTopRight.position.setY(-1000);\n let views = [];\n\n this.dimensionPlanLeft.children.forEach( dimGroup => {\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n views.push({ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS });\n } else if(dimGroup.userData.groupType == DIMENSION_LABEL_TYPE.EAVE_WIDTH){\n views.push({ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS });\n } else {\n views = [];\n }\n dimGroup.children.forEach(c => {\n let clone = c.clone();\n clone.userData['views'] = views;\n if(views.length != 0 && c.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && c.visible && dimGroup.userData.groupType == DIMENSION_LABEL_TYPE.EAVE_WIDTH){\n clone.position.setY(c.position.y + 400);\n clone.rotation.set(0, Math.PI, 0);\n clone.visible = false;\n } else if(views.length != 0 && c.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && c.visible){\n clone.position.setY(-c.position.y);\n clone.rotation.set(0, Math.PI, 0);\n clone.visible = false;\n } else if(c.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && !c.visible){\n return;\n }\n this.dimensionRightTop.add(clone);\n })\n })\n }\n private drawDimensionLeftLeft(){\n let dimenstionOffsetY = this.APP.sldExistingWallHeight.currentValue/2;\n let dimenstionOffsetZ = this.APP.sldExistingWidth1.currentValue/2 + this.dimensionDistance2 + 500;\n\n this.dimensionLeftLeft.position.set(0,dimenstionOffsetY,-dimenstionOffsetZ);\n\n let views = [ \n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n this.dimensionFrontLeft.children.forEach(c => {\n let clone = c.clone();\n //clone.visible = false;\n clone.userData['views'] = views;\n\n if(c.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && c.visible){\n clone.position.setY(-c.position.y);\n clone.rotation.set(0, 0,-Math.PI);\n clone.userData['views'] = [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }];\n clone.userData['rotation'] = new Vector3(Math.PI/2,0,0)\n } else if(c.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && !c.visible){\n return;\n }\n\n this.dimensionLeftLeft.add(clone);\n })\n }\n private drawDimensionRightRight(){\n let dimenstionOffsetY = this.APP.sldExistingWallHeight.currentValue/2;\n let dimenstionOffsetZ = this.APP.sldExistingWidth1.currentValue/2 + this.dimensionDistance2 + 500;\n\n this.dimensionRightRight.position.set(0,dimenstionOffsetY,-dimenstionOffsetZ);\n\n let views = [ { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionFrontLeft.children.forEach(c => {\n let clone = c.clone();\n clone.userData['views'] = views;\n if(c.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && c.visible){\n \n clone.userData['rotation'] = new Vector3(-Math.PI/2,0,0)\n clone.position.setY(-c.position.y);\n clone.rotation.set(0, Math.PI,-Math.PI);\n //clone.visible = false;\n \n } else if(c.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && !c.visible){\n return;\n }\n this.dimensionRightRight.add(clone);\n })\n }\n\n private calulateBoundingBox(){\n this.APP.scene.remove(...this.APP.scene.children.filter(c => c.userData.type == 'BOX_HELPER__'));\n let existingHouseObjs = this.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && c.userData.position?.width1 || c.userData.position?.width2 || c.userData.position?.length2)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL)\n );\n let existingHouseBox = this.APP.utils.getObjectsBoundingBox(existingHouseObjs);\n \n let planLeftBox = this.APP.utils.getObjectBoundingBox(this.dimensionPlanLeft);\n planLeftBox.min.x = existingHouseBox.min.x - 500;\n planLeftBox.max.x = existingHouseBox.min.x;\n planLeftBox.max.y = 10000;\n\n // let boxHelper = new Box3Helper(planRightBox);\n // boxHelper.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper);\n\n // let boxHelper2 = new Box3Helper(planLeftBox);\n // boxHelper2.userData = {type: 'BOX_HELPER__'};\n // this.scene.add(boxHelper2);\n\n // let boxHelper3 = new Box3Helper(planFrontBox);\n // boxHelper3.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper3);\n\n let patiosBox = this.APP.patiosManager.boundingBox;\n if(patiosBox && planLeftBox.max.x > patiosBox.min.x){\n planLeftBox.translate(new Vector3(patiosBox.min.x - planLeftBox.max.x - 100, 0, 0));\n }\n\n let dimPatiosLeft = this.scene.children.find(c => c.userData.type == GEOMETRY_TYPE.DIMENSION && c.userData.position?.left);\n if(dimPatiosLeft && planLeftBox.max.x > dimPatiosLeft.position.x){\n planLeftBox.translate(new Vector3(dimPatiosLeft.position.x - planLeftBox.max.x, 0, 0));\n }\n \n return { left: planLeftBox.min.x };\n }\n\n private addText(text: string, userData: any){\n let textMesh: Mesh;\n\n let parameter = {\n font: this.font,\n size: 500,\n height: 5,\n curveSegments: 12\n };\n\n if(userData.position.trai){\n var geometry = new TextBufferGeometry( text, parameter).center().rotateY(-Math.PI/2).rotateZ(-Math.PI/2);\n textMesh = new Mesh(geometry, MaterialManager.Instance().DIMENSION_TEXT);\n textMesh.position.setX(this.box.min.x - this.textDistance);\n textMesh.userData = {...userData, type: GEOMETRY_TYPE.DIRECTION_TEXT};\n }\n else if(userData.position.phai){\n var geometry = new TextBufferGeometry( text, parameter).center().rotateY(Math.PI/2).rotateZ(Math.PI/2);\n textMesh = new Mesh(geometry, MaterialManager.Instance().DIMENSION_TEXT);\n textMesh.position.setX(this.box.max.x + this.textDistance);\n textMesh.userData = {...userData, type: GEOMETRY_TYPE.DIRECTION_TEXT};\n }\n else if(userData.position.truoc){\n let offsetZ = this.APP.sldExistingWidth1.currentValue/2 + this.textDistance;\n let totalSpanSize = this.APP.sldSpan.currentValue \n + this.APP.sldMultiSpan.currentValue \n + this.APP.sldBackOverhang.currentValue \n + this.APP.sldFrontOverhang.currentValue\n + this.textDistance;\n\n if(this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF && this.APP.isFBRoof){\n totalSpanSize = UI.totalBayLength + this.textDistance;\n }\n \n if(this.APP.sldExistingWidth1.currentValue/2 < totalSpanSize){\n offsetZ = totalSpanSize;\n }\n\n var geometry = new TextBufferGeometry( text, parameter).center().rotateX(-Math.PI/2);\n textMesh = new Mesh(geometry, MaterialManager.Instance().DIMENSION_TEXT);\n textMesh.position.setZ(offsetZ);\n textMesh.userData = {...userData, type: GEOMETRY_TYPE.DIRECTION_TEXT};\n }\n else if(userData.position.sau){\n let offsetZ = this.APP.sldExistingWidth1.currentValue/2 + this.textDistance;\n\n if(this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF){\n offsetZ = (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue ) / 2 + this.APP.sldFrontOverhang.currentValue + this.textDistance;\n }\n\n var geometry = new TextBufferGeometry( text, parameter).center().rotateY(Math.PI).rotateX(Math.PI/2);\n textMesh = new Mesh(geometry, MaterialManager.Instance().DIMENSION_TEXT);\n textMesh.position.setZ(-offsetZ);\n textMesh.userData = {...userData, type: GEOMETRY_TYPE.DIRECTION_TEXT};\n }\n \n this.listText.push(textMesh);\n this.scene.add(textMesh);\n }\n public getOutlines(): Printing2DGeometry{\n let lsGeometries: Printing2DLine[] = [];\n let lsText: Print2DText[] = [];\n \n for(let dim of [\n ...this.dimensionPlanTop.children, \n ...this.dimensionPlanLeft.children, \n ...this.dimensionFrontTop.children,\n ...this.dimensionFrontLeft.children,\n ...this.dimensionLeftLeft.children,\n ...this.dimensionLeftTop.children,\n ...this.dimensionRightTop.children,\n ...this.dimensionRightRight.children\n ]){\n if(!dim.userData.views){\n console.log(\"TEXT NO VIEW\", dim);\n continue;\n }\n\n if(dim.type == 'Group'){\n dim.children.forEach(el => {\n el.updateMatrix();\n let _clone = el.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(el.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n \n el.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(el.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(el.matrixWorld);\n\n let textRotation = el.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, el, pos, textRotation, points)\n })\n } else{\n dim.updateMatrix();\n let _clone = dim.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(dim.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n \n dim.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(dim.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(dim.matrixWorld);\n\n let textRotation = dim.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, dim, pos, textRotation, points)\n }\n }\n return { lines: lsGeometries, texts: lsText };\n }\n private getDimInfo(lsGeometries: Printing2DLine[], lsText: Print2DText[], dim: Object3D, pos: Vector3, textRotation: Vector3, points: Vector3[]){\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && dim.userData.views && dim.userData.value) {\n let box = new Box3().setFromObject(dim.parent);\n let startEnd = this.utils.getStartEndPoint(box);\n let line = new Line3(startEnd[0], startEnd[1]);\n\n let projectPoint = new Vector3();\n line.closestPointToPoint(pos, true, projectPoint);\n let _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(10));\n\n if(dim.userData.position?.bottom){\n if(dim.userData.position?.overhang){\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(180));\n }\n else{\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(120));\n }\n }\n else{\n if(dim.userData.position?.overhang){\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(100));\n }\n }\n\n let p = new Vector3().applyMatrix4(dim.matrixWorld);\n\n lsText.push({\n value: dim.userData.value,\n position: p,\n rotation: textRotation,\n views: dim.userData.views\n });\n\n \n }\n else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_LINE) {\n // this.scene.add(new LineSegments(new Geometry().setFromPoints(points), new LineBasicMaterial({color: new Color('red')})));\n\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_CAP) {\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n else if (dim.userData.type == \"Arrow\") {\n let geo = ((dim as Line).geometry as Geometry).clone();\n geo.applyMatrix4(dim.matrixWorld);\n lsGeometries.push({\n vertices: geo.vertices,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n }\n private getTextCover(textGeo: TextBufferGeometry, labelType: string, pos: Vector3){\n let textSize = new Vector3();\n textGeo.boundingBox.getSize(textSize)\n\n let textCover = new Mesh(new BoxBufferGeometry(textSize.x, textSize.y, textSize.z))\n textCover.position.set(pos.x , pos.y, pos.z + 10);\n textCover.userData = { type: GEOMETRY_TYPE.TEXT_COVER, labelType };\n textCover.material['opacity'] = 0;\n textCover.material['transparent'] = true;\n\n return textCover\n }\n private onUIChanged(preVal: number, curVal: number): void{\n this.draw();\n }\n}\n","import { Scene, Mesh, BufferGeometry, Vector3, Object3D, Color, Material, MeshPhongMaterial, Plane, Geometry, LineSegments } from \"three\";\nimport { Util } from \"./utils\";\nimport { CONFIG, GEOMETRY_TYPE } from \"src/app/app.config\";\nimport { HomeComponent as AppComponent } from '../containers/home/home.component';\nimport { GeometryManager } from \"./geometry.manager\";\nimport { MaterialManager } from \"./material.manager\";\nimport { GeometryInfo, Printing2DLine, ViewType, LineType, Printing2DGeometry, Printing2DGeometryType } from './models';\n\nexport class EaveManager {\n private scene: Scene;\n private APP: AppComponent;\n private material: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private geo_eaveWidth1: BufferGeometry;\n private geo_eaveWidth2: BufferGeometry;\n private geo_eaveLength1: GeometryInfo;\n\n public backOverhang = 100;\n\n //private matW1: Material;\n //private clippingPlaneW1: Plane;\n\n public listEave: Object3D[];\n\n constructor() {\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.listEave = [];\n }\n\n public init(app: AppComponent): Promise{\n return new Promise((resolve, reject) => {\n this.APP = app;\n this.scene = app.scene;\n this.material = MaterialManager.Instance().EAVE.clone();\n //this.matW1 = MaterialManager.Instance().EAVE.clone();\n\n app.sldBaySize.addAction(this.uiChanged.bind(this));\n app.sldSpan.addAction(this.uiChanged.bind(this));\n app.sldExistingWallHeight.addAction(this.uiChanged.bind(this));\n app.sldEaveWidth.addAction(this.uiChanged.bind(this));\n app.sldExistingLength.addAction(this.uiChanged.bind(this));\n app.sldExistingLength2.addAction(this.uiChanged.bind(this));\n app.sldExistingWidth1.addAction(this.uiChanged.bind(this));\n app.sldExistingWidth2.addAction(this.uiChanged.bind(this));\n app.sltExistingType.addAction(this.uiChanged.bind(this));\n app.sltStructureType.addAction(this.uiChanged.bind(this));\n\n resolve();\n });\n }\n public optimize() : Promise{\n return new Promise((resolve, reject) => {\n \n let scaleX = CONFIG.eaveWidth.default/this.geometryManager.EAVE.EAVE.width;\n let scaleZ = CONFIG.span.default/this.geometryManager.EAVE.EAVE.length;\n \n let translateX = this.geometryManager.EAVE.EAVE.width/2;\n let translateY = this.geometryManager.EAVE.EAVE.height/2;\n let translateZ = this.geometryManager.EAVE.EAVE.length/2;\n\n \n this.geo_eaveWidth1 = this.geometryManager.EAVE.EAVE.geometry\n .clone()\n .translate(translateX,translateY,translateZ)\n\n this.geo_eaveWidth2 = this.geometryManager.EAVE.EAVE.geometry\n .clone()\n .translate(translateX,translateY,translateZ)\n \n\n let _scaleX = CONFIG.baySize.default/this.geometryManager.EAVE.EAVE.length;\n let _scaleZ = CONFIG.eaveWidth.default/this.geometryManager.EAVE.EAVE.width;\n\n this.geo_eaveLength1 = new GeometryInfo();\n this.geo_eaveLength1.geometry = this.geometryManager.EAVE.EAVE.geometry\n .clone()\n .rotateY(Math.PI/2)\n .translate(0,translateY,translateX)\n \n // this.geo_eaveLength1.length = env.baySize.default;\n // this.geo_eaveLength1.width = env.eaveWidth.default;\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.EAVE));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == 'EAVE_OUTLINE'));\n this.listEave = [];\n\n // if(this.APP.sldExistingLength2.currentValue == 0){\n // this.clippingPlaneW1 = new Plane(new Vector3(0,0,-1), this.APP.sldExistingWidth1.currentValue/2);\n // this.matW1.clippingPlanes = [this.clippingPlaneW1];\n // }\n // else{\n // this.matW1.clippingPlanes = [];\n // }\n\n if(this.APP.sltStructureType.currentValue == 4){\n resolve();\n return;\n }\n\n this.addEave({length1: true});\n if(this.APP.sldExistingLength2.currentValue > 0){\n this.addEave({length2: true});\n }\n if(this.APP.sldExistingWidth1.currentValue > 0){\n this.addEave({width1: true});\n }\n if(this.APP.sldExistingWidth2.currentValue > 0){\n this.addEave({width2: true});\n }\n\n //this.getOutLines();\n\n resolve();\n });\n }\n\n public getOutLines(): Printing2DGeometry{\n let objs = this.scene.children.filter(o => o.userData.type == GEOMETRY_TYPE.EAVE );\n let lsGeometries: Printing2DLine[] = [];\n\n for(let o of objs){ \n let outlineGeo = this.utils.getOutlineGeometryFromMesh((o as Mesh), 10);\n outlineGeo.translate(o.position.x, o.position.y + 5000, o.position.z);\n\n // var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"EAVE_OUTLINE\"};\n // this.scene.add( line );\n\n let simplifiedGeo = this.simplifyGeo(outlineGeo);\n lsGeometries.push({ \n objectType: o.userData.type,\n vertices: simplifiedGeo.vertices, \n views: o.userData.views\n });\n }\n\n return { lines: lsGeometries, texts: [] };\n }\n public simplifyGeo(geo: BufferGeometry): Geometry{\n let simplifiedGeo = new Geometry();\n let vertices = geo.getAttribute('position').array;\n for(let i = 0; i < vertices.length; i+=3){\n simplifiedGeo.vertices.push(new Vector3(vertices[i], vertices[i+1] - 5000, vertices[i+2]));\n }\n return simplifiedGeo;\n }\n \n public addEave(userDataPos: any){\n let mesh: Mesh;\n let offsetY = this.APP.sldExistingWallHeight.currentValue;\n \n let backOverhangL1 = this.APP.existingWallManager.geo_existingWallL1.width + this.backOverhang;\n let backOverhangL2 = this.APP.existingWallManager.geo_existingWallL2.width + this.backOverhang;\n let backOverhangW1 = this.APP.existingWallManager.geo_existingWallW1.width + this.backOverhang;\n let backOverhangW2 = this.APP.existingWallManager.geo_existingWallW2.width + this.backOverhang;\n \n if(userDataPos.length1){\n //let mat = new MeshPhongMaterial({ transparent: true, opacity: 0.8});\n let offsetZ = this.APP.sldExistingWidth1.currentValue/2 + backOverhangL1;\n let scaleX = this.APP.sldExistingLength.currentValue/this.geometryManager.EAVE.EAVE.length;\n let scaleZ = (this.APP.sldEaveWidth.currentValue + backOverhangL1)/this.geometryManager.EAVE.EAVE.width;\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n mesh = new Mesh(this.geo_eaveLength1.geometry, this.material);\n mesh.userData = { type: GEOMETRY_TYPE.EAVE, position: userDataPos, views: views };\n mesh.position.setY(offsetY);\n mesh.position.setZ(-offsetZ);\n mesh.scale.set(scaleX,1,scaleZ);\n this.scene.add(mesh);\n this.listEave.push(mesh);\n }\n else if(userDataPos.length2){\n let views = [\n // { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n // { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n if(this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3){\n views.push({ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS });\n let offsetX = this.APP.sldExistingLength.currentValue/2;\n let offsetZ = this.APP.sldExistingWidth1.currentValue/2 - backOverhangL2;\n let scaleX = this.APP.sldExistingLength2.currentValue/this.geometryManager.EAVE.EAVE.length;\n let scaleZ = (this.APP.sldEaveWidth.currentValue + backOverhangL2)/this.geometryManager.EAVE.EAVE.width;\n \n mesh = new Mesh(this.geo_eaveLength1.geometry, this.material);\n mesh.userData = { type: GEOMETRY_TYPE.EAVE, position: userDataPos, views: views };\n mesh.position.setX(-offsetX - this.APP.sldExistingLength2.currentValue/2);\n mesh.position.setY(offsetY);\n mesh.position.setZ(offsetZ);\n mesh.scale.set(scaleX,1,scaleZ);\n this.scene.add(mesh);\n this.listEave.push(mesh);\n }\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n views.push({ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS });\n let offsetX = this.APP.sldExistingLength.currentValue/2;\n let offsetZ = this.APP.sldExistingWidth1.currentValue/2 - backOverhangL2;\n let scaleX = this.APP.sldExistingLength2.currentValue/this.geometryManager.EAVE.EAVE.length;\n let scaleZ = (this.APP.sldEaveWidth.currentValue + backOverhangL2)/this.geometryManager.EAVE.EAVE.width;\n \n mesh = new Mesh(this.geo_eaveLength1.geometry, this.material);\n mesh.userData = { type: GEOMETRY_TYPE.EAVE, position: userDataPos, views: views };\n mesh.position.setX(offsetX + this.APP.sldExistingLength2.currentValue/2);\n mesh.position.setY(offsetY);\n mesh.position.setZ(offsetZ);\n mesh.scale.set(scaleX,1,scaleZ);\n this.scene.add(mesh);\n this.listEave.push(mesh);\n }\n }\n else if(userDataPos.width1){\n //let mat = new MeshPhongMaterial({color: new Color('blue'), transparent: true, opacity: 0.8});\n let offsetX = this.APP.sldExistingLength.currentValue/2 + backOverhangW1;\n let offsetZ = this.APP.sldExistingWidth1.currentValue/2 + backOverhangL1;\n let scaleX = (this.APP.sldEaveWidth.currentValue + backOverhangW1)/this.geometryManager.EAVE.EAVE.width;\n let scaleZ = (this.APP.sldExistingWidth1.currentValue + this.APP.sldEaveWidth.currentValue + backOverhangL1)/this.geometryManager.EAVE.EAVE.length;\n\n if(this.APP.sldExistingLength2.currentValue <= 0){\n scaleZ = (this.APP.sldExistingWidth1.currentValue + backOverhangL1)/this.geometryManager.EAVE.EAVE.length;\n if(scaleZ <= 0)\n scaleZ = 0.01;\n }\n\n let views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }\n ];\n\n if(this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3){\n mesh = new Mesh(this.geo_eaveWidth1, this.material);\n mesh.userData = { type: GEOMETRY_TYPE.EAVE, position: userDataPos, views: views };\n mesh.position.setX(-offsetX);\n mesh.position.setY(offsetY);\n mesh.position.setZ(-offsetZ);\n mesh.scale.set(scaleX,1,scaleZ); \n this.scene.add(mesh);\n this.listEave.push(mesh);\n }\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n mesh = new Mesh(this.geo_eaveWidth1, this.material);\n mesh.userData = { type: GEOMETRY_TYPE.EAVE, position: userDataPos, views: views };\n mesh.position.setX(offsetX);\n mesh.position.setY(offsetY);\n mesh.position.setZ(-offsetZ);\n mesh.scale.set(-scaleX,1,scaleZ); \n this.scene.add(mesh);\n this.listEave.push(mesh);\n }\n }\n else if(userDataPos.width2){\n let offsetX = this.APP.sldExistingLength.currentValue/2 + this.APP.sldExistingLength2.currentValue + backOverhangW2;\n let offsetZ = this.APP.sldExistingWidth1.currentValue/2 - backOverhangL2;\n let scaleX = (this.APP.sldEaveWidth.currentValue + backOverhangW2)/this.geometryManager.EAVE.EAVE.width;\n let scaleZ = (this.APP.sldExistingWidth2.currentValue + backOverhangL2)/this.geometryManager.EAVE.EAVE.length;\n\n let views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }\n ];\n\n if(this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3){\n mesh = new Mesh(this.geo_eaveWidth2, this.material);\n mesh.userData = { type: GEOMETRY_TYPE.EAVE, position: userDataPos, views: views };\n mesh.position.set(-offsetX, offsetY, offsetZ);\n mesh.scale.set(scaleX,1,scaleZ); \n this.scene.add(mesh);\n this.listEave.push(mesh);\n }\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n mesh = new Mesh(this.geo_eaveWidth2, this.material);\n mesh.userData = { type: GEOMETRY_TYPE.EAVE, position: userDataPos, views: views };\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.set(-scaleX,1,scaleZ); \n this.scene.add(mesh);\n this.listEave.push(mesh);\n }\n }\n }\n\n public uiChanged(preVal: number, curVal): void {\n this.load();\n }\n}\n","import { Scene, Mesh, BufferGeometry, Vector3, Object3D, Color, Material, Plane, PlaneHelper, MeshPhongMaterial, DoubleSide, Geometry, BoxGeometry, LineSegments, Matrix4, Box3, BoxHelper, Box3Helper } from \"three\";\nimport { Util } from \"./utils\";\nimport { CONFIG as env, GEOMETRY_TYPE } from '../app.config';\nimport { HomeComponent as AppComponent } from '../containers/home/home.component';\nimport { GeometryManager } from \"./geometry.manager\";\nimport { MaterialManager } from \"./material.manager\";\nimport { GeometryInfo, Printing2DLine, ViewType, LineType, Printing2DGeometry, Printing2DGeometryType } from './models';\n\nexport class ExistingRoofManager {\n private scene: Scene;\n private APP: AppComponent;\n\n private material: Material;\n private materialL1: MeshPhongMaterial;\n private materialL2L: MeshPhongMaterial;\n private materialL2R: MeshPhongMaterial;\n private materialW1L: MeshPhongMaterial;\n private materialW1R: MeshPhongMaterial;\n private materialW2L: MeshPhongMaterial;\n private materialW2R: MeshPhongMaterial;\n\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private geo_existingWallL: BufferGeometry;\n private geo_existingWallW: BufferGeometry;\n\n // private geo_clipingW1BL: Geometry;\n // private geo_clipingW1BR: Geometry;\n // private geo_clipingW1FL: Geometry;\n // private geo_clipingW1FR: Geometry;\n\n // private geo_clipingL1L: Geometry;\n // private geo_clipingL1R: Geometry;\n\n // private geo_clipingL2LL: Geometry;\n // private geo_clipingL2RL: Geometry;\n // private geo_clipingL2LR: Geometry;\n // private geo_clipingL2RR: Geometry;\n\n // private geo_clipingW2BL: Geometry;\n // private geo_clipingW2BR: Geometry;\n\n\n constructor() {\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n }\n\n public init(app: AppComponent): Promise{\n return new Promise((resolve, reject) => {\n this.APP = app;\n this.scene = app.scene;\n this.materialL1 = MaterialManager.Instance().EXISTING_ROOF.clone();\n \n this.materialL2L = MaterialManager.Instance().EXISTING_ROOF.clone();\n this.materialL2R = MaterialManager.Instance().EXISTING_ROOF.clone();\n\n this.materialW1L = MaterialManager.Instance().EXISTING_ROOF.clone();\n this.materialW1R = MaterialManager.Instance().EXISTING_ROOF.clone();\n\n this.materialW2L = MaterialManager.Instance().EXISTING_ROOF.clone();\n this.materialW2R = MaterialManager.Instance().EXISTING_ROOF.clone();\n\n this.material = MaterialManager.Instance().EXISTING_ROOF.clone();\n\n app.sldExistingWallHeight.addAction(this.uiChanged.bind(this));\n app.sldEaveWidth.addAction(this.uiChanged.bind(this));\n app.sldFasciaDepth.addAction(this.uiChanged.bind(this));\n app.sldExistingLength.addAction(this.uiChanged.bind(this));\n app.sldExistingLength2.addAction(this.uiChanged.bind(this));\n app.sldExistingWidth1.addAction(this.uiChanged.bind(this));\n app.sldExistingWidth2.addAction(this.uiChanged.bind(this));\n app.sltExistingType.addAction(this.uiChanged.bind(this));\n app.sltStructureType.addAction(this.uiChanged.bind(this));\n app.sltExistingRoofPitch.addAction(this.uiChanged.bind(this));\n app.sltExistingRoofType.addAction(this.uiReloadChange.bind(this))\n\n resolve();\n });\n }\n public optimize() : Promise{\n return new Promise((resolve, reject) => {\n let translateWidth = this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.width/2 - 60;\n let translateHeight = this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.height/2;\n\n this.geo_existingWallL = this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.geometry\n .clone()\n .translate(0,translateHeight,-translateWidth)\n //.rotateX(this.utils.degreesToRadians(this.APP.sltExistingRoofPitch.currentValue));\n\n this.geo_existingWallW = this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.geometry\n .clone()\n .translate(0,translateHeight,-translateWidth)\n .rotateY(Math.PI/2)\n //.rotateZ(-this.utils.degreesToRadians(22.5));\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == \"HELPER\"));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == \"OUTLINE\"));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.EXISTING_ROOF));\n\n if(this.APP.sltStructureType.currentValue == 4){\n resolve();\n return;\n }\n\n //----cliping geo-----\n let clipingWidth = 5000;\n let clipingLength = 10000;\n let clipingHeight = 10000;\n \n \n \n // let mat = MaterialManager.Instance().DEFAULT.clone();\n // mat.opacity = 0.7;\n // mat.transparent = true;\n // let mesh = new Mesh(this.geo_clipingW1BL, mat);\n // mesh.userData = { type: 'HELPER' };\n // this.APP.scene.add(mesh);\n\n //----\n\n this.materialL1.clippingPlanes = [];\n this.materialW1L.clippingPlanes = [];\n this.materialW1R.clippingPlanes = [];\n\n this.materialW2L.clippingPlanes = [];\n this.materialW2R.clippingPlanes = [];\n\n this.materialL2L.clippingPlanes = [];\n this.materialL2R.clippingPlanes = [];\n\n // this.geo_clipingW1BL = null;\n // this.geo_clipingW1BR = null;\n // this.geo_clipingW1FL = null;\n // this.geo_clipingW1FR = null;\n\n // this.geo_clipingL1L = null;\n // this.geo_clipingL1R = null;\n\n // this.geo_clipingL2LL = null;\n // this.geo_clipingL2RL = null;\n // this.geo_clipingL2LR = null;\n // this.geo_clipingL2RR = null;\n\n // this.geo_clipingW2BL = null;\n // this.geo_clipingW2BR = null;\n\n\n // if(this.APP.sldExistingWidth1.currentValue >= this.APP.sldEaveWidth.currentValue){\n // if(this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3){\n // this.geo_clipingL1L = new BoxGeometry(clipingWidth, clipingHeight, clipingLength);\n // this.geo_clipingL1L.translate(0,0,clipingLength/2);\n // this.geo_clipingL1L.rotateY(-(Math.PI/4));\n // this.geo_clipingL1L.translate(-this.APP.sldExistingLength.currentValue/2,0,-this.APP.sldExistingWidth1.currentValue/2);\n\n // this.geo_clipingW1BL = new BoxGeometry(clipingWidth, clipingHeight, clipingLength);\n // this.geo_clipingW1BL.translate(0,0,-clipingLength/2);\n // this.geo_clipingW1BL.rotateY(-(Math.PI/4));\n // this.geo_clipingW1BL.translate(-this.APP.sldExistingLength.currentValue/2,0,-this.APP.sldExistingWidth1.currentValue/2);\n\n // // let mat = MaterialManager.Instance().DEFAULT.clone();\n // // mat.opacity = 0.7;\n // // mat.transparent = true;\n // // let mesh = new Mesh(this.geo_clipingL1L, mat);\n // // mesh.userData = { type: 'HELPER' };\n // // this.APP.scene.add(mesh);\n // }\n // if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n // this.geo_clipingL1R = new BoxGeometry(clipingWidth, clipingHeight, clipingLength);\n // this.geo_clipingL1R.translate(0,0,clipingLength/2);\n // this.geo_clipingL1R.rotateY(Math.PI/4);\n // this.geo_clipingL1R.translate(this.APP.sldExistingLength.currentValue/2,0,-this.APP.sldExistingWidth1.currentValue/2);\n\n // this.geo_clipingW1BR = new BoxGeometry(clipingWidth, clipingHeight, clipingLength);\n // this.geo_clipingW1BR.translate(0,0,-clipingLength/2);\n // this.geo_clipingW1BR.rotateY(Math.PI/4);\n // this.geo_clipingW1BR.translate(this.APP.sldExistingLength.currentValue/2,0,-this.APP.sldExistingWidth1.currentValue/2);\n // }\n // }\n\n\n\n this.addExistingRoof({length1: true});\n \n if(this.APP.sldExistingWidth1.currentValue >= this.APP.sldEaveWidth.currentValue){\n let dis = this.getClipingPlaneDistance();\n let planeL1L = new Plane( new Vector3(1,0,-1).normalize(), dis );\n let planeW1L = new Plane( new Vector3(-1,0,1).normalize(), -dis );\n\n let planeL1R = new Plane( new Vector3(-1,0,-1).normalize(), dis );\n let planeW1R = new Plane( new Vector3(1,0,1).normalize(), -dis );\n\n \n\n if(this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3){\n this.materialL1.clippingPlanes.push(planeL1L);\n this.materialW1L.clippingPlanes.push(planeW1L);\n }\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n this.materialL1.clippingPlanes.push(planeL1R);\n this.materialW1R.clippingPlanes.push(planeW1R);\n }\n\n this.addExistingRoof({width1: true});\n }\n if(this.APP.sldExistingWidth2.currentValue >= this.APP.sldEaveWidth.currentValue){\n let dis = this.getClipingPlaneDistance();\n let planeW2L = new Plane( new Vector3(-1,0,1).normalize(), -dis );\n let planeL2L = new Plane( new Vector3(1,0,-1).normalize(), dis );\n\n let planeW2R = new Plane( new Vector3(1,0,1).normalize(), -dis );\n let planeL2R = new Plane( new Vector3(-1,0,-1).normalize(), dis );\n \n var p1 = new Vector3(-this.APP.sldExistingLength.currentValue/2, 0, -this.APP.sldExistingWidth1.currentValue/2);\n var p2 = new Vector3(-this.APP.sldExistingLength.currentValue/2, 0, this.APP.sldExistingWidth1.currentValue/2);\n var p3 = new Vector3(-(this.APP.sldExistingLength.currentValue/2 + this.APP.sldExistingLength2.currentValue), 0, this.APP.sldExistingWidth1.currentValue/2);\n \n var v = new Vector3().subVectors(p2,p1);\n var v2 = new Vector3().subVectors(p3,p2);\n var v2p = v2.clone().multiplyScalar(-1);\n\n planeW2L.translate(v).translate(v2);\n planeW2R.translate(v).translate(v2p);\n planeL2L.translate(v).translate(v2);\n planeL2R.translate(v).translate(v2p);\n\n if(this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3){\n this.materialW2L.clippingPlanes.push(planeW2L);\n this.materialL2L.clippingPlanes.push(planeL2L);\n }\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n this.materialW2R.clippingPlanes.push(planeW2R);\n this.materialL2R.clippingPlanes.push(planeL2R);\n }\n\n this.addExistingRoof({width2: true});\n }\n if(this.APP.sldExistingLength2.currentValue >= this.APP.sldEaveWidth.currentValue + 500){\n let dis = this.getClipingPlaneDistance();\n let planeW1L = new Plane( new Vector3(1,0,-1).normalize(), dis );\n let planeL2L = new Plane( new Vector3(-1,0,1).normalize(), -dis );\n\n let planeW1R = new Plane( new Vector3(-1,0,-1).normalize(), dis );\n let planeL2R = new Plane( new Vector3(1,0,1).normalize(), -dis );\n \n var p1 = new Vector3(-this.APP.sldExistingLength.currentValue/2, 0, -this.APP.sldExistingWidth1.currentValue/2);\n var p2 = new Vector3(-this.APP.sldExistingLength.currentValue/2, 0, this.APP.sldExistingWidth1.currentValue/2);\n var v = p2.sub(p1);\n\n planeW1L.translate(v);\n planeW1R.translate(v);\n planeL2L.translate(v);\n planeL2R.translate(v);\n\n if(this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3){\n this.materialW1L.clippingPlanes.push(planeW1L);\n this.materialL2L.clippingPlanes.push(planeL2L);\n }\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n this.materialW1R.clippingPlanes.push(planeW1R);\n this.materialL2R.clippingPlanes.push(planeL2R);\n }\n\n this.addExistingRoof({length2: true});\n }\n\n //this.getOutLines();\n\n resolve();\n });\n }\n public getOutLines(): Printing2DGeometry{\n let objs = this.scene.children.filter(o => o.userData.type == GEOMETRY_TYPE.EXISTING_ROOF );\n let lsGeometries: Printing2DLine[] = [];\n\n for(let o of objs){ \n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale((o as Mesh), 60);\n o.updateWorldMatrix(true, true);\n\n outlineGeo.applyMatrix4(o.matrixWorld);\n outlineGeo.translate(0,5000,0);\n\n let views = [];\n\n if(o.userData.position.length1){ \n for(let plane of this.materialL1.clippingPlanes){\n let _plane = plane.clone() as Plane;\n _plane.translate(new Vector3(0,5000,0));\n outlineGeo = this.utils.clipOutline(outlineGeo, _plane);\n }\n\n views.push(\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n );\n }\n if(o.userData.position.length2){\n if(o.userData.position.left){\n for(let plane of this.materialL2L.clippingPlanes){\n let _plane = plane.clone() as Plane;\n _plane.translate(new Vector3(0,5000,0));\n outlineGeo = this.utils.clipOutline(outlineGeo, _plane);\n }\n }\n if(o.userData.position.right){\n for(let plane of this.materialL2R.clippingPlanes){\n let _plane = plane.clone() as Plane;\n _plane.translate(new Vector3(0,5000,0));\n outlineGeo = this.utils.clipOutline(outlineGeo, _plane);\n }\n }\n\n if(this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3){\n views.push({ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS })\n }\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n views.push({ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS });\n }\n\n views.push(\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n // { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n // { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n );\n }\n if(o.userData.position.width1){\n if(o.userData.position.left){\n for(let plane of this.materialW1L.clippingPlanes){\n let _plane = plane.clone() as Plane;\n _plane.translate(new Vector3(0,5000,0));\n outlineGeo = this.utils.clipOutline(outlineGeo, _plane);\n }\n }\n if(o.userData.position.right){\n for(let plane of this.materialW1R.clippingPlanes){\n let _plane = plane.clone() as Plane;\n _plane.translate(new Vector3(0,5000,0));\n outlineGeo = this.utils.clipOutline(outlineGeo, _plane);\n }\n }\n\n views.push(\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }\n );\n }\n if(o.userData.position.width2){\n if(o.userData.position.left){\n for(let plane of this.materialW2L.clippingPlanes){\n let _plane = plane.clone() as Plane;\n _plane.translate(new Vector3(0,5000,0));\n outlineGeo = this.utils.clipOutline(outlineGeo, _plane);\n }\n }\n if(o.userData.position.right){\n for(let plane of this.materialW2R.clippingPlanes){\n let _plane = plane.clone() as Plane;\n _plane.translate(new Vector3(0,5000,0));\n outlineGeo = this.utils.clipOutline(outlineGeo, _plane);\n }\n }\n\n views.push(\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }\n );\n }\n \n\n // var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"OUTLINE\"};\n // //line.position.set(o.position.x - 5000, o.position.y, o.position.z);\n // this.APP.scene.add( line );\n\n let simplifiedGeo = this.simplifyGeo(outlineGeo);\n lsGeometries.push({ \n objectType: o.userData.type,\n vertices: simplifiedGeo.vertices, \n views: views\n });\n }\n\n return { lines: lsGeometries, texts: [] };\n }\n public simplifyGeo(geo: BufferGeometry): Geometry{\n let simplifiedGeo = new Geometry();\n let vertices = geo.getAttribute('position').array;\n for(let i = 0; i < vertices.length; i+=3){\n simplifiedGeo.vertices.push(new Vector3(vertices[i], vertices[i+1]-5000, vertices[i+2]));\n }\n return simplifiedGeo;\n }\n\n private getClipingPlaneDistance(): number{\n let AC, BC;\n AC = BC = this.APP.sldExistingWidth1.currentValue/2;\n let CD = this.APP.sldExistingLength.currentValue/2;\n let angle = 45;\n\n let BD = BC - CD;\n let CE = AC * this.utils.sin(angle);\n\n let DG = (BD*CE)/BC;\n\n //let n: Vector3 = new Vector3(1,0,-1).normalize();\n // let clipingPlane = new Plane( n, -DG );\n // let helper = new PlaneHelper(clipingPlane, 10000, 0xffff00);\n // helper.userData = { type: 'HELPER' }\n // this.scene.add(helper);\n\n return -DG;\n } \n \n public addExistingRoof(userDataPos: any) {\n let mesh: Mesh;\n let extraLength = 2500;\n if(userDataPos.width1){\n let offsetX = this.APP.sldExistingLength.currentValue/2;\n let offsetY = this.APP.sldExistingWallHeight.currentValue + this.APP.sldFasciaDepth.currentValue + this.geometryManager.EAVE.EAVE.height;\n let offsetZ = 0;\n //let scaleZ = (this.APP.sldExistingWidth1.currentValue + extraLength)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n\n let tt = MaterialManager.Instance().EXISTING_ROOF_TEXTURE.W1;\n tt.repeat.set((this.APP.sldExistingWidth1.currentValue + extraLength)/1000/2, this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.width/1000/2);\n\n this.materialW1L.map = tt;\n this.materialW1R.map = tt;\n\n // if(this.APP.sldExistingLength2.currentValue > 0){\n // scaleZ = (this.APP.sldExistingWidth1.currentValue + this.APP.sldEaveWidth.currentValue + extraLength)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n // offsetZ = this.APP.sldEaveWidth.currentValue/2;\n // }\n\n if(this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3){\n mesh = new Mesh(this.geo_existingWallW, this.materialW1L);\n mesh.rotateZ(-this.utils.degreesToRadians(this.APP.sltExistingRoofPitch.currentValue));\n \n let box = new Box3().setFromObject(mesh);\n let width = box.max.x - box.min.x;\n let extra = width - this.APP.sldEaveWidth.currentValue;\n let scaleZ = (this.APP.sldExistingWidth1.currentValue + extra)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n \n mesh.position.setX(-offsetX + this.APP.sldEaveWidth.currentValue);\n mesh.position.setY(offsetY);\n mesh.position.setZ(offsetZ - extra/2);\n mesh.scale.set(1,1,scaleZ);\n\n if(this.APP.sldExistingLength2.currentValue > 0){\n scaleZ = (this.APP.sldExistingWidth1.currentValue + this.APP.sldEaveWidth.currentValue + extra)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n mesh.position.setZ(offsetZ + this.APP.sldEaveWidth.currentValue/2 - extra/2);\n mesh.scale.set(1,1,scaleZ);\n }\n \n\n //------clip-----\n // if(this.geo_clipingW1BL){\n // let clipingObj = this.CSG.fromGeometry(this.geo_clipingW1BL);\n // let clipedMesh = this.CSG.fromMesh(mesh).subtract(clipingObj);\n // mesh = this.CSG.toMesh(clipedMesh, this.materialW1L);\n // }\n // if(this.geo_clipingW1FL){\n // let clipingObj = this.CSG.fromGeometry(this.geo_clipingW1FL);\n // let clipedMesh = this.CSG.fromMesh(mesh).subtract(clipingObj);\n // mesh = this.CSG.toMesh(clipedMesh, this.materialW1L);\n // }\n //--------------\n\n mesh.userData = { type: GEOMETRY_TYPE.EXISTING_ROOF, position: {...userDataPos, left: true} };\n this.scene.add(mesh);\n }\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n mesh = new Mesh(this.geo_existingWallW, this.materialW1R);\n mesh.rotateY(Math.PI);\n mesh.rotateZ(-this.utils.degreesToRadians(this.APP.sltExistingRoofPitch.currentValue));\n\n let box = new Box3().setFromObject(mesh);\n let width = box.max.x - box.min.x;\n let extra = width - this.APP.sldEaveWidth.currentValue;\n let scaleZ = (this.APP.sldExistingWidth1.currentValue + extra)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n\n mesh.position.setX(offsetX - this.APP.sldEaveWidth.currentValue);\n mesh.position.setY(offsetY);\n mesh.position.setZ(offsetZ - extra/2);\n mesh.scale.set(1,1,scaleZ);\n\n if(this.APP.sldExistingLength2.currentValue > 0){\n scaleZ = (this.APP.sldExistingWidth1.currentValue + this.APP.sldEaveWidth.currentValue + extra)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n mesh.position.setZ(offsetZ + this.APP.sldEaveWidth.currentValue/2 - extra/2);\n mesh.scale.set(1,1,scaleZ);\n }\n \n\n //------clip-----\n // if(this.geo_clipingW1BR){\n // let clipingObj = this.CSG.fromGeometry(this.geo_clipingW1BR);\n // let clipedMesh = this.CSG.fromMesh(mesh).subtract(clipingObj);\n // mesh = this.CSG.toMesh(clipedMesh, this.materialW1R);\n // }\n // if(this.geo_clipingW1FR){\n // let clipingObj = this.CSG.fromGeometry(this.geo_clipingW1FR);\n // let clipedMesh = this.CSG.fromMesh(mesh).subtract(clipingObj);\n // mesh = this.CSG.toMesh(clipedMesh, this.materialW1R);\n // }\n //--------------\n\n mesh.userData = { type: GEOMETRY_TYPE.EXISTING_ROOF, position: {...userDataPos, right: true} };\n this.scene.add(mesh);\n }\n }\n if(userDataPos.width2){\n let offsetX = this.APP.sldExistingLength.currentValue/2 + this.APP.sldExistingLength2.currentValue;\n let offsetY = this.APP.sldExistingWallHeight.currentValue + this.APP.sldFasciaDepth.currentValue + this.geometryManager.EAVE.EAVE.height;\n let offsetZ = this.APP.sldExistingWidth1.currentValue/2 + this.APP.sldExistingWidth2.currentValue/2;\n //let scaleZ = (this.APP.sldExistingWidth2.currentValue + extraLength)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n\n let tt = MaterialManager.Instance().EXISTING_ROOF_TEXTURE.W2;\n tt.repeat.set((this.APP.sldExistingWidth2.currentValue + extraLength)/1000/2, this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.width/1000/2);\n\n this.materialW2L.map = tt;\n this.materialW2R.map = tt;\n\n if(this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3){\n mesh = new Mesh(this.geo_existingWallW, this.materialW2L);\n mesh.userData = { type: GEOMETRY_TYPE.EXISTING_ROOF, position: {...userDataPos, left: true} };\n mesh.rotateZ(-this.utils.degreesToRadians(this.APP.sltExistingRoofPitch.currentValue));\n\n let box = new Box3().setFromObject(mesh);\n let width = box.max.x - box.min.x;\n let extra = width - this.APP.sldEaveWidth.currentValue;\n let scaleZ = (this.APP.sldExistingWidth2.currentValue + extra)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n\n mesh.position.setX(-offsetX + this.APP.sldEaveWidth.currentValue);\n mesh.position.setY(offsetY);\n mesh.position.setZ(offsetZ - extra/2);\n mesh.scale.set(1,1,scaleZ);\n \n this.scene.add(mesh);\n }\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n mesh = new Mesh(this.geo_existingWallW, this.materialW2R);\n mesh.userData = { type: GEOMETRY_TYPE.EXISTING_ROOF, position: {...userDataPos, right: true} };\n mesh.rotateY(Math.PI);\n mesh.rotateZ(-this.utils.degreesToRadians(this.APP.sltExistingRoofPitch.currentValue));\n\n let box = new Box3().setFromObject(mesh);\n let width = box.max.x - box.min.x;\n let extra = width - this.APP.sldEaveWidth.currentValue;\n let scaleZ = (this.APP.sldExistingWidth2.currentValue + extra)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n\n mesh.position.setX(offsetX - this.APP.sldEaveWidth.currentValue);\n mesh.position.setY(offsetY);\n mesh.position.setZ(offsetZ - extra/2);\n mesh.scale.set(1,1,scaleZ);\n \n this.scene.add(mesh);\n }\n }\n else if(userDataPos.length1){\n let tt = MaterialManager.Instance().EXISTING_ROOF_TEXTURE.L1;\n tt.repeat.set((this.APP.sldExistingLength.currentValue + extraLength)/1000/2, this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.width/1000/2);\n this.materialL1.map = tt;\n\n \n \n mesh = new Mesh(this.geo_existingWallL, this.materialL1);\n mesh.userData = { type: GEOMETRY_TYPE.EXISTING_ROOF, position: userDataPos };\n mesh.rotateX(this.utils.degreesToRadians(this.APP.sltExistingRoofPitch.currentValue));\n\n\n let offsetX = 0;\n\n let box = new Box3().setFromObject(mesh);\n let width = box.max.z - box.min.z;\n let extra = width - this.APP.sldEaveWidth.currentValue;\n //let scaleX = (this.APP.sldExistingLength2.currentValue + this.APP.sldEaveWidth.currentValue)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n let scaleX = (this.APP.sldExistingLength.currentValue + extra)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n\n if(this.APP.sltExistingType.currentValue != 0 && this.APP.sldExistingWidth1.currentValue > this.APP.sldEaveWidth.currentValue){\n if(this.APP.sltExistingType.currentValue == 1){\n offsetX = -extra/2;\n }\n else if(this.APP.sltExistingType.currentValue == 2){\n offsetX = extra/2;\n }\n else{\n //offsetX = -extra/2;\n scaleX = (this.APP.sldExistingLength.currentValue + extra*2)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n }\n }\n else{\n extra = 0;\n scaleX = (this.APP.sldExistingLength.currentValue + extra)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n }\n\n let offsetY = this.APP.sldExistingWallHeight.currentValue + this.APP.sldFasciaDepth.currentValue + this.geometryManager.EAVE.EAVE.height;\n let offsetZ = this.APP.sldExistingWidth1.currentValue/2 ;\n\n\n mesh.position.setX(offsetX);\n mesh.position.setY(offsetY);\n mesh.position.setZ(-offsetZ + this.APP.sldEaveWidth.currentValue);\n mesh.scale.setX(scaleX);\n \n\n //------clip-----\n // if(this.geo_clipingL1L){\n // let clipingObj = this.CSG.fromGeometry(this.geo_clipingL1L);\n // let clipedMesh = this.CSG.fromMesh(mesh).subtract(clipingObj);\n // mesh = this.CSG.toMesh(clipedMesh, this.materialL1);\n // console.log(\"cut LEFT\");\n // }\n // if(this.geo_clipingL1R){\n // let clipingObj = this.CSG.fromGeometry(this.geo_clipingL1R);\n // let clipedMesh = this.CSG.fromMesh(mesh).subtract(clipingObj);\n // mesh = this.CSG.toMesh(clipedMesh, this.materialL1);\n // console.log(\"cut RIHGT\");\n // }\n //--------------\n\n \n \n this.scene.add(mesh);\n }\n else if(userDataPos.length2){\n // let tt = MaterialManager.Instance().EXISTING_ROOF_TEXTURE.L2;\n // tt.repeat.set((this.APP.sldExistingLength2.currentValue + this.APP.sldEaveWidth.currentValue + extraLength)/1000/2, this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.width/1000/2);\n\n // this.materialL2L.map = tt;\n // this.materialL2R.map = tt;\n\n // let offsetX = this.APP.sldExistingLength.currentValue/2 + this.APP.sldExistingLength2.currentValue/2;\n // let offsetY = this.APP.sldExistingWallHeight.currentValue + this.APP.sldFasciaDepth.currentValue + this.geometryManager.EAVE.EAVE.height;\n // let offsetZ = this.APP.sldExistingWidth1.currentValue/2;\n\n // //let scaleX = (this.APP.sldExistingLength2.currentValue + this.APP.sldEaveWidth.currentValue + extraLength)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n\n // if(this.APP.sldExistingWidth2.currentValue <= this.APP.sldEaveWidth.currentValue){\n // // if(this.APP.sltExistingType.currentValue == 1){\n // // offsetX -= extraLength;\n // // }\n // // else if(this.APP.sltExistingType.currentValue == 2){\n // // offsetX -= extraLength;\n // // }\n // offsetX -= extraLength;\n // }\n\n // if(this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3){\n // mesh = new Mesh(this.geo_existingWallL, this.materialL2L);\n // mesh.userData = { type: GEOMETRY_TYPE.EXISTING_ROOF, position: {...userDataPos, left: true} };\n // mesh.position.setX(-offsetX + this.APP.sldEaveWidth.currentValue/2 - extraLength/2);\n // mesh.position.setY(offsetY);\n // mesh.position.setZ(offsetZ + this.APP.sldEaveWidth.currentValue);\n // mesh.rotateX(this.utils.degreesToRadians(this.APP.sltExistingRoofPitch.currentValue));\n // let box = new Box3().setFromObject(mesh);\n // let width = box.max.x - box.min.x;\n // let scaleX = (this.APP.sldExistingLength2.currentValue + width)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n // mesh.scale.setX(scaleX);\n // this.scene.add(mesh);\n // }\n // if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n // mesh = new Mesh(this.geo_existingWallL, this.materialL2R);\n // mesh.userData = { type: GEOMETRY_TYPE.EXISTING_ROOF, position: {...userDataPos, right: true} };\n // mesh.position.setX(offsetX - this.APP.sldEaveWidth.currentValue/2 + extraLength/2);\n // mesh.position.setY(offsetY);\n // mesh.position.setZ(offsetZ + this.APP.sldEaveWidth.currentValue);\n // mesh.rotateX(this.utils.degreesToRadians(this.APP.sltExistingRoofPitch.currentValue));\n // let box = new Box3().setFromObject(mesh);\n // let width = box.max.x - box.min.x;\n // let scaleX = (this.APP.sldExistingLength2.currentValue + width)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n // mesh.scale.setX(scaleX);\n // this.scene.add(mesh);\n // }\n\n let tt = MaterialManager.Instance().EXISTING_ROOF_TEXTURE.L2;\n tt.repeat.set((this.APP.sldExistingLength2.currentValue + this.APP.sldEaveWidth.currentValue + extraLength)/1000/2, this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.width/1000/2);\n\n this.materialL2L.map = tt;\n this.materialL2R.map = tt;\n\n let offsetX = this.APP.sldExistingLength.currentValue/2 + this.APP.sldExistingLength2.currentValue/2;\n let offsetY = this.APP.sldExistingWallHeight.currentValue + this.APP.sldFasciaDepth.currentValue + this.geometryManager.EAVE.EAVE.height;\n let offsetZ = this.APP.sldExistingWidth1.currentValue/2;\n\n //let scaleX = (this.APP.sldExistingLength2.currentValue + this.APP.sldEaveWidth.currentValue + extraLength)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n\n if(this.APP.sldExistingWidth2.currentValue <= this.APP.sldEaveWidth.currentValue){\n // if(this.APP.sltExistingType.currentValue == 1){\n // offsetX -= extraLength;\n // }\n // else if(this.APP.sltExistingType.currentValue == 2){\n // offsetX -= extraLength;\n // }\n //offsetX -= extraLength;\n }\n\n if(this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3){\n mesh = new Mesh(this.geo_existingWallL, this.materialL2L);\n mesh.userData = { type: GEOMETRY_TYPE.EXISTING_ROOF, position: {...userDataPos, left: true} };\n mesh.position.setX(-offsetX + this.APP.sldEaveWidth.currentValue/2);\n mesh.position.setY(offsetY);\n mesh.position.setZ(offsetZ + this.APP.sldEaveWidth.currentValue);\n mesh.rotateX(this.utils.degreesToRadians(this.APP.sltExistingRoofPitch.currentValue));\n let box = new Box3().setFromObject(mesh);\n let width = box.max.z - box.min.z;\n let extra = width - this.APP.sldEaveWidth.currentValue;\n let scaleX = (this.APP.sldExistingLength2.currentValue + this.APP.sldEaveWidth.currentValue)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n \n if(this.APP.sldExistingWidth2.currentValue >= this.APP.sldEaveWidth.currentValue){\n mesh.position.setX(-offsetX + this.APP.sldEaveWidth.currentValue/2 - extra/2);\n scaleX = (this.APP.sldExistingLength2.currentValue + this.APP.sldEaveWidth.currentValue + extra)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n }\n mesh.scale.setX(scaleX);\n this.scene.add(mesh);\n }\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n mesh = new Mesh(this.geo_existingWallL, this.materialL2R);\n mesh.userData = { type: GEOMETRY_TYPE.EXISTING_ROOF, position: {...userDataPos, right: true} };\n mesh.position.setX(offsetX - this.APP.sldEaveWidth.currentValue/2);\n mesh.position.setY(offsetY);\n mesh.position.setZ(offsetZ + this.APP.sldEaveWidth.currentValue);\n mesh.rotateX(this.utils.degreesToRadians(this.APP.sltExistingRoofPitch.currentValue));\n let box = new Box3().setFromObject(mesh);\n let width = box.max.z - box.min.z;\n let extra = width - this.APP.sldEaveWidth.currentValue;\n let scaleX = (this.APP.sldExistingLength2.currentValue + this.APP.sldEaveWidth.currentValue)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n if(this.APP.sldExistingWidth2.currentValue >= this.APP.sldEaveWidth.currentValue){\n mesh.position.setX(offsetX - this.APP.sldEaveWidth.currentValue/2 + extra/2);\n scaleX = (this.APP.sldExistingLength2.currentValue + this.APP.sldEaveWidth.currentValue + extra)/this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.length;\n }\n mesh.scale.setX(scaleX);\n this.scene.add(mesh);\n }\n }\n }\n\n public uiChanged(preVal: number, curVal): void {\n this.load();\n }\n public uiReloadChange(preVal: number, curVal): void {\n this.optimize().then(() => { this.load() });\n }\n}\n","import { Scene, Mesh, BufferGeometry, Vector3, Object3D, Color, Material, MeshPhongMaterial, DoubleSide, Geometry, LineSegments, Group } from \"three\";\nimport { Util } from \"./utils\";\nimport { HomeComponent as AppComponent } from '../containers/home/home.component';\nimport { GeometryManager } from \"./geometry.manager\";\nimport { MaterialManager } from \"./material.manager\";\nimport { GeometryInfo, Printing2DLine, ViewType, LineType, Printing2DGeometry, Printing2DGeometryType } from './models';\nimport { CONFIG as env, GEOMETRY_TYPE } from '../app.config';\nimport HighLightBox from \"../models/HighlightBox\";\nimport { BUILDING_SIDE } from \"../app.constants\";\nimport { UI } from \"./ui\";\n\nexport class ExistingWallManager {\n private scene: Scene;\n private container: Group;\n private APP: AppComponent;\n private material: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n public geo_existingWallW1: GeometryInfo;\n public geo_existingWallL1: GeometryInfo;\n public geo_existingWallL2: GeometryInfo;\n public geo_existingWallW2: GeometryInfo;\n\n constructor() {\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n }\n\n public init(app: AppComponent): Promise {\n return new Promise((resolve, reject) => {\n this.APP = app;\n this.scene = app.scene;\n this.container = new Group();\n this.scene.add(this.container);\n this.material = MaterialManager.Instance().DEFAULT.clone();\n\n // app.sldBaySize.addAction(this.changeLength.bind(this));\n // app.sldSpan.addAction(this.changeSpan.bind(this));\n app.sldExistingWallHeight.addAction(this.uiChanged.bind(this));\n app.sldExistingLength.addAction(this.uiChanged.bind(this));\n app.sldExistingLength2.addAction(this.uiChanged.bind(this));\n app.sldExistingWidth1.addAction(this.uiChanged.bind(this));\n app.sldExistingWidth2.addAction(this.uiChanged.bind(this));\n app.sltExistingType.addAction(this.uiChanged.bind(this));\n app.sltStructureType.addAction(this.uiChanged.bind(this));\n \n resolve();\n });\n }\n public optimize() : Promise {\n return new Promise((resolve, reject) => {\n\n let scaleX = env.baySize.default / this.geometryManager.EXISTING_WALL.EXISTING_WALL.length;\n let scaleY = env.eaveHeight.default / this.geometryManager.EXISTING_WALL.EXISTING_WALL.height;\n let scaleZ = env.span.default / this.geometryManager.EXISTING_WALL.EXISTING_WALL.length;\n\n let translateWidth = this.geometryManager.EXISTING_WALL.EXISTING_WALL.width / 2;\n let translateHeight = this.geometryManager.EXISTING_WALL.EXISTING_WALL.height / 2;\n let translateLength = this.geometryManager.EXISTING_WALL.EXISTING_WALL.length / 2;\n\n this.geo_existingWallW1 = new GeometryInfo();\n this.geo_existingWallW1.geometry = this.geometryManager.EXISTING_WALL.EXISTING_WALL.geometry\n .clone()\n .rotateY(Math.PI / 2)\n .translate(0, translateHeight, 0);\n this.geo_existingWallW1.width = this.geometryManager.EXISTING_WALL.EXISTING_WALL.width;\n this.geo_existingWallW1.length = this.geometryManager.EXISTING_WALL.EXISTING_WALL.length;\n this.geo_existingWallW1.height = this.geometryManager.EXISTING_WALL.EXISTING_WALL.height;\n\n this.geo_existingWallW2 = new GeometryInfo();\n this.geo_existingWallW2.geometry = this.geometryManager.EXISTING_WALL.EXISTING_WALL.geometry\n .clone()\n .rotateY(Math.PI / 2)\n .translate(0, translateHeight, translateLength);\n this.geo_existingWallW2.width = this.geometryManager.EXISTING_WALL.EXISTING_WALL.width;\n this.geo_existingWallW2.length = this.geometryManager.EXISTING_WALL.EXISTING_WALL.length;\n this.geo_existingWallW2.height = this.geometryManager.EXISTING_WALL.EXISTING_WALL.height;\n\n this.geo_existingWallL1 = new GeometryInfo();\n this.geo_existingWallL1.geometry = this.geometryManager.EXISTING_WALL.EXISTING_WALL.geometry\n .clone()\n .translate(0, translateHeight, translateWidth);\n this.geo_existingWallL1.width = this.geometryManager.EXISTING_WALL.EXISTING_WALL.width;\n this.geo_existingWallL1.length = this.geometryManager.EXISTING_WALL.EXISTING_WALL.length;\n this.geo_existingWallL1.height = this.geometryManager.EXISTING_WALL.EXISTING_WALL.height;\n\n //front\n this.geo_existingWallL2 = new GeometryInfo();\n this.geo_existingWallL2.geometry = this.geometryManager.EXISTING_WALL.EXISTING_WALL.geometry\n .clone()\n .translate(-translateLength, translateHeight, -translateWidth);\n this.geo_existingWallL2.width = this.geometryManager.EXISTING_WALL.EXISTING_WALL.width;\n this.geo_existingWallL2.length = this.geometryManager.EXISTING_WALL.EXISTING_WALL.length;\n this.geo_existingWallL2.height = this.geometryManager.EXISTING_WALL.EXISTING_WALL.height;\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.container.children = [];\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.EXISTING_WALL));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == \"EXISTING_WALL_OUTLINE\"));\n\n if(this.APP.sltStructureType.currentValue == 4){\n resolve();\n return;\n }\n \n this.addEaveWall({length1: true});\n if (this.APP.sldExistingLength2.currentValue > 0) {\n this.addEaveWall({length2: true});\n }\n if (this.APP.sldExistingWidth1.currentValue > 0) {\n this.addEaveWall({width1: true});\n }\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n this.addEaveWall({width2: true});\n }\n \n new HighLightBox(this.container, {\n min: {\n x: - UI.existingLength1 / 2 - 150 - (this.APP.sldExistingWidth1.currentValue / 2 ? this.geometryManager.EXISTING_WALL.EXISTING_WALL.width : 0), \n y: 200, \n z: - this.APP.sldExistingWidth1.currentValue / 2 + 75, \n },\n max: {\n x: - UI.existingLength1 / 2 + 150 - (this.APP.sldExistingWidth1.currentValue / 2 ? this.geometryManager.EXISTING_WALL.EXISTING_WALL.width : 0), \n y: UI.eaveHeight + 200, \n z: - this.APP.sldExistingWidth1.currentValue / 2 - 225,\n },\n userData: { wallSide: BUILDING_SIDE.LEFT }\n })\n \n new HighLightBox(this.container, {\n min: {\n x: UI.existingLength1 / 2 + 150 + (this.APP.sldExistingWidth1.currentValue / 2 ? this.geometryManager.EXISTING_WALL.EXISTING_WALL.width : 0), \n y: 200, \n z: - this.APP.sldExistingWidth1.currentValue / 2 + 75, \n },\n max: {\n x: UI.existingLength1 / 2 - 150 + (this.APP.sldExistingWidth1.currentValue / 2 ? this.geometryManager.EXISTING_WALL.EXISTING_WALL.width : 0), \n y: UI.eaveHeight + 200, \n z: - this.APP.sldExistingWidth1.currentValue / 2 - 225,\n },\n userData: { wallSide: BUILDING_SIDE.RIGHT }\n })\n \n //this.getOutLines();\n resolve();\n });\n }\n public getOutLines(): Printing2DGeometry{\n let objs = this.scene.children.filter(o => o.userData.type == GEOMETRY_TYPE.EXISTING_WALL );\n let lsGeometries: Printing2DLine[] = [];\n\n for(let o of objs){ \n let outlineGeo = this.utils.getOutlineGeometryFromMesh((o as Mesh), 10);\n outlineGeo.translate(o.position.x, o.position.y + 5000, o.position.z);\n\n // var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"EXISTING_WALL_OUTLINE\"};\n // this.scene.add( line );\n\n let simplifiedGeo = this.simplifyGeo(outlineGeo);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: simplifiedGeo.vertices, \n views: o.userData.views\n });\n }\n\n return { lines: lsGeometries, texts: [] };\n }\n public simplifyGeo(geo: BufferGeometry): Geometry{\n let simplifiedGeo = new Geometry();\n let vertices = geo.getAttribute('position').array;\n for(let i = 0; i < vertices.length; i+=3){\n simplifiedGeo.vertices.push(new Vector3(vertices[i], vertices[i+1] - 5000, vertices[i+2]));\n }\n return simplifiedGeo;\n }\n public addEaveWall(userDataPos: any) {\n let mesh: Mesh;\n let scaleY = this.APP.sldExistingWallHeight.currentValue / this.geometryManager.EXISTING_WALL.EXISTING_WALL.height;\n\n if (userDataPos.width1) {\n let tt = MaterialManager.Instance().EXISTING_WALL_W1_TEXTURE;\n tt.repeat.set(this.APP.sldExistingWidth1.currentValue / 1024 / 2, this.APP.sldExistingWallHeight.currentValue / 1024 / 2);\n\n let mat = new MeshPhongMaterial({\n side: DoubleSide,\n map: tt\n });\n\n let offsetX = this.APP.sldExistingLength.currentValue / 2 + this.geometryManager.EXISTING_WALL.EXISTING_WALL.width / 2;\n let offsetZ = this.geo_existingWallW1.width/2;\n let scaleZ = (this.APP.sldExistingWidth1.currentValue + this.geo_existingWallW1.width) / this.geometryManager.EXISTING_WALL.EXISTING_WALL.length;\n\n let views = [\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n ]\n\n if (this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3) {\n mesh = new Mesh(this.geo_existingWallW1.geometry, mat);\n mesh.userData = { type: GEOMETRY_TYPE.EXISTING_WALL, position: {...userDataPos, left: true}, views: [...views, { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }] };\n mesh.position.setX(-offsetX);\n mesh.position.setZ(-offsetZ);\n mesh.scale.setY(scaleY);\n mesh.scale.setZ(scaleZ);\n this.scene.add(mesh);\n }\n if (this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3) {\n mesh = new Mesh(this.geo_existingWallW1.geometry, mat);\n mesh.userData = { type: GEOMETRY_TYPE.EXISTING_WALL, position: {...userDataPos, right: true}, views: [...views, { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }] };\n mesh.position.setX(offsetX);\n mesh.position.setZ(-offsetZ);\n mesh.scale.setY(scaleY);\n mesh.scale.setZ(scaleZ);\n this.scene.add(mesh);\n }\n } else if (userDataPos.length1) {\n let tt = MaterialManager.Instance().EXISTING_WALL_L1_TEXTURE;\n tt.repeat.set(this.APP.sldExistingLength.currentValue / 1024 / 2, this.APP.sldExistingWallHeight.currentValue / 1024 / 2);\n\n let mat = new MeshPhongMaterial({\n side: DoubleSide,\n map: tt\n });\n let offsetZ = this.APP.sldExistingWidth1.currentValue / 2 + this.geometryManager.EXISTING_WALL.EXISTING_WALL.width; //this.APP.sldSpan.currentValue/2;\n let scaleX = this.APP.sldExistingLength.currentValue / this.geometryManager.EXISTING_WALL.EXISTING_WALL.length;\n\n let views = [\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ]\n\n mesh = new Mesh(this.geo_existingWallL1.geometry, mat);\n mesh.userData = { type: GEOMETRY_TYPE.EXISTING_WALL, position: userDataPos, views: views };\n mesh.position.setZ(-offsetZ);\n mesh.scale.setY(scaleY);\n mesh.scale.setX(scaleX);\n\n this.scene.add(mesh);\n } else if (userDataPos.length2) {\n let tt = MaterialManager.Instance().EXISTING_WALL_L2_TEXTURE;\n tt.repeat.set(this.APP.sldExistingLength2.currentValue / 1024 / 2, this.APP.sldExistingWallHeight.currentValue / 1024 / 2);\n\n let mat = new MeshPhongMaterial({\n side: DoubleSide,\n map: tt\n });\n\n let offsetX = this.APP.sldExistingLength.currentValue / 2 + this.geometryManager.EXISTING_WALL.EXISTING_WALL.width;\n let offsetZ = this.APP.sldExistingWidth1.currentValue / 2;\n let scaleX = (this.APP.sldExistingLength2.currentValue - this.geometryManager.EXISTING_WALL.EXISTING_WALL.width) / this.geometryManager.EXISTING_WALL.EXISTING_WALL.length;\n if (scaleX == 0)\n scaleX = 0.1;\n\n let views = [\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n if (this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3) {\n views.push({ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS });\n mesh = new Mesh(this.geo_existingWallL2.geometry, mat);\n mesh.userData = { type: GEOMETRY_TYPE.EXISTING_WALL, position: {...userDataPos, left: true}, views: views };\n mesh.position.setX(-offsetX);\n mesh.scale.setY(scaleY);\n mesh.position.setZ(offsetZ);\n mesh.scale.setX(scaleX);\n this.scene.add(mesh);\n }\n if (this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3) {\n views.push({ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS });\n mesh = new Mesh(this.geo_existingWallL2.geometry, mat);\n mesh.userData = { type: GEOMETRY_TYPE.EXISTING_WALL, position: {...userDataPos, right: true}, views: views };\n mesh.position.setX(offsetX);\n mesh.scale.setY(scaleY);\n mesh.position.setZ(offsetZ);\n mesh.scale.setX(-scaleX);\n this.scene.add(mesh);\n }\n\n //mesh.visible = !(this.APP.sldExistingLength2.currentValue == 0);\n } else if (userDataPos.width2) {\n let tt = MaterialManager.Instance().EXISTING_WALL_W2_TEXTURE;\n tt.repeat.set(this.APP.sldExistingWidth2.currentValue / 1024 / 2, this.APP.sldExistingWallHeight.currentValue / 1024 / 2);\n\n let mat = new MeshPhongMaterial({\n side: DoubleSide,\n map: tt\n });\n\n let offsetX = this.APP.sldExistingLength.currentValue / 2 + this.APP.sldExistingLength2.currentValue + this.geometryManager.EXISTING_WALL.EXISTING_WALL.width/2;\n let offsetZ = this.APP.sldExistingWidth1.currentValue / 2 - this.geometryManager.EXISTING_WALL.EXISTING_WALL.width;\n let scaleZ = (this.APP.sldExistingWidth2.currentValue + this.geo_existingWallL2.width) / this.geometryManager.EXISTING_WALL.EXISTING_WALL.length;\n if (scaleZ == 0)\n scaleZ = 0.1;\n\n let views = [ \n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n if (this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3) {\n mesh = new Mesh(this.geo_existingWallW2.geometry, mat);\n mesh.userData = { type: GEOMETRY_TYPE.EXISTING_WALL, position: {...userDataPos, left: true}, views: [...views, { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }] };\n mesh.position.setX(-offsetX);\n mesh.position.setZ(offsetZ);\n mesh.scale.setY(scaleY);\n mesh.scale.setZ(scaleZ);\n this.scene.add(mesh);\n }\n if (this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3) {\n mesh = new Mesh(this.geo_existingWallW2.geometry, mat);\n mesh.userData = { type: GEOMETRY_TYPE.EXISTING_WALL, position: {...userDataPos, right: true}, views: [...views, { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }] };\n mesh.position.setX(offsetX);\n mesh.position.setZ(offsetZ);\n mesh.scale.setY(scaleY);\n mesh.scale.setZ(scaleZ);\n this.scene.add(mesh);\n }\n\n //mesh.visible = !(this.APP.sldExistingWidth2.currentValue == 0);\n }\n //this.scene.add(mesh);\n }\n\n public uiChanged(preVal: number, curVal): void {\n this.load();\n }\n}\n","import {\n Scene,\n Mesh,\n Object3D,\n Material,\n Group,\n FontLoader,\n TextBufferGeometry,\n PlaneBufferGeometry,\n Vector3,\n BoxHelper,\n Box3Helper,\n Matrix4,\n Box3,\n Geometry,\n LineSegments,\n LineBasicMaterial,\n Color,\n BoxBufferGeometry,\n Line,\n Line3,\n BufferGeometry,\n Points,\n PointsMaterial,\n} from \"three\";\nimport {\n HomeComponent as AppComponent,\n HomeComponent,\n} from \"../../containers/home/home.component\";\nimport { Util } from \"../utils\";\nimport { MaterialManager } from \"../material.manager\";\nimport {\n GeometryInfo,\n ViewType,\n LineType,\n IBay,\n Printing2DGeometry,\n Printing2DLine,\n Print2DText,\n Printing2DGeometryType,\n} from \"../models\";\nimport {\n GEOMETRY_TYPE,\n DIMENSION_LOCATION,\n DIMENSION_LABEL_TYPE,\n} from \"src/app/app.config\";\nimport { environment } from \"src/environments/environment\";\nimport { ExistingBuildingManager } from \".\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport {\n FIT_DIMENSION,\n PANEL_DIRECTION,\n RAKECUT_TYPE,\n} from \"src/app/app.constants\";\nimport { UI } from \"../ui\";\nimport Dimension, { AddDimensionOptions } from \"src/app/models/Dimension\";\nimport { CONFIG as conf } from \"../../app.config\";\n\nexport class DimensionManager {\n private scene: Scene;\n private APP: AppComponent;\n private MANAGER: ExistingBuildingManager;\n public listText: THREE.Object3D[] = [];\n private utils: Util;\n\n private eventHandleId: any;\n\n private material: Material;\n private geometryManager: GeometryManager;\n\n private materialManager: MaterialManager;\n\n private dimensionPatiosFrontBottom: Object3D;\n private dimensionPatiosFrontRight: Object3D;\n\n private dimensionPatiosRightBottom: Object3D;\n private dimensionPatiosRightLeft: Object3D;\n private dimensionPatiosRightRight: Object3D;\n\n private dimensionPatiosLeftBottom: Object3D;\n private dimensionPatiosLeftRight: Object3D;\n private dimensionPatiosLeftLeft: Object3D;\n\n private dimensionPatiosPlanRight: Object3D;\n private dimensionPatiosPlanBottom: Object3D;\n private dimensionPatiosPlanLeft: Object3D;\n\n private dimensionPlanMiddle: Object3D;\n private dimensionPlanMidleLeft: Object3D;\n\n private dimensionPatiosLowerHeightDim: Object3D;\n\n private lineCapGeo: GeometryInfo;\n private lineGeo: GeometryInfo;\n private textGeo: TextBufferGeometry;\n\n private dimensionDistance = 1500;\n private dimensionDistance2 = 500;\n\n private textDistance = 5000;\n\n private totalBaySize: number;\n\n private font: any;\n private textParameter: any;\n\n private isReady = false;\n\n private box: Box3;\n\n private controlsToRegisterEvent: Array;\n private options: AddDimensionOptions;\n private startPos: Vector3;\n private startMatrix: Matrix4;\n private startBayLength: number;\n\n constructor(app: AppComponent, manager: ExistingBuildingManager) {\n this.utils = new Util();\n this.materialManager = MaterialManager.Instance();\n this.APP = app;\n this.MANAGER = manager;\n this.scene = this.APP.scene;\n this.material = MaterialManager.Instance().DIMENSION_TEXT;\n this.geometryManager = GeometryManager.Instance();\n\n //this.registerEvent();\n }\n\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n this.lineGeo = this.geometryManager.getDimensionLine();\n this.lineCapGeo = this.geometryManager.getDimensionCap();\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.unload();\n\n var loader = new FontLoader();\n\n this.dimensionPatiosFrontBottom = new Group();\n this.dimensionPatiosFrontBottom.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n // this.dimensionPatiosFrontBottom.rotation.set(0, Math.PI, 0);\n this.dimensionPatiosFrontBottom.visible = false;\n\n this.dimensionPatiosFrontRight = new Group();\n this.dimensionPatiosFrontRight.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosFrontRight.rotation.set(0, 0, -Math.PI / 2);\n this.dimensionPatiosFrontRight.visible = false;\n\n this.dimensionPatiosRightBottom = new Group();\n this.dimensionPatiosRightBottom.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosRightBottom.rotation.set(0, -Math.PI / 2, 0);\n this.dimensionPatiosRightBottom.visible = false;\n\n this.dimensionPatiosRightLeft = new Group();\n this.dimensionPatiosRightLeft.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosRightLeft.rotation.set(0, -Math.PI / 2, -Math.PI / 2);\n this.dimensionPatiosRightLeft.visible = false;\n\n this.dimensionPatiosRightRight = new Group();\n this.dimensionPatiosRightRight.rotation.set(\n 0,\n -Math.PI / 2,\n -Math.PI / 2\n );\n this.dimensionPatiosRightRight.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosRightRight.visible = false;\n\n this.dimensionPatiosLeftBottom = new Group();\n this.dimensionPatiosLeftBottom.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosLeftBottom.rotation.set(0, -Math.PI / 2, 0);\n this.dimensionPatiosLeftBottom.visible = false;\n\n this.dimensionPatiosLeftRight = new Group();\n this.dimensionPatiosLeftRight.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosLeftRight.rotation.set(Math.PI / 2, -Math.PI / 2, 0);\n this.dimensionPatiosLeftRight.visible = false;\n\n this.dimensionPatiosLeftLeft = new Group();\n this.dimensionPatiosLeftLeft.rotation.set(0, -Math.PI / 2, Math.PI / 2);\n this.dimensionPatiosLeftLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftLeft.visible = false;\n\n this.dimensionPatiosPlanRight = new Group();\n this.dimensionPatiosPlanRight.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosPlanRight.rotation.set(\n -Math.PI / 2,\n Math.PI,\n -Math.PI / 2\n );\n\n this.dimensionPatiosPlanBottom = new Group();\n this.dimensionPatiosPlanBottom.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosPlanBottom.rotation.set(-Math.PI / 2, 0, 0);\n\n this.dimensionPatiosPlanLeft = new Group();\n this.dimensionPatiosPlanLeft.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n position: { left: true },\n };\n this.dimensionPatiosPlanLeft.rotation.set(-Math.PI / 2, 0, -Math.PI / 2);\n\n this.dimensionPlanMiddle = new Group();\n this.dimensionPlanMidleLeft = new Group();\n\n this.dimensionPatiosLowerHeightDim = new Group();\n this.dimensionPatiosLowerHeightDim.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosLowerHeightDim.rotation.set(0, 0, Math.PI / 2);\n\n this.scene.add(this.dimensionPatiosPlanRight);\n this.scene.add(this.dimensionPatiosPlanLeft);\n this.scene.add(this.dimensionPatiosFrontRight);\n this.APP.patiosManager.patiosGroup.add(\n this.dimensionPatiosFrontBottom,\n //this.dimensionPatiosFrontRight,\n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom,\n this.dimensionPatiosLeftRight,\n this.dimensionPatiosLeftLeft,\n this.dimensionPatiosPlanBottom,\n //this.dimensionPatiosPlanRight,\n this.dimensionPatiosLowerHeightDim,\n this.dimensionPlanMiddle,\n this.dimensionPlanMidleLeft\n );\n\n loader.load(\n environment.modelBaseUrl +\n \"/assets/fonts/helvetiker_regular.typeface.json\",\n (font) => {\n this.font = font;\n\n this.textParameter = {\n font: this.font,\n size: 200,\n height: 5,\n curveSegments: 10,\n };\n this.options = {\n container: HomeComponent.ins.scene,\n start: new Vector3(),\n end: new Vector3(),\n linePos: new Vector3(),\n views: [],\n allowDrag: true,\n textParameter: this.textParameter,\n textPos: new Vector3(),\n labelType: null,\n fitZ: 10,\n hasTextClone: false,\n axis: \"x\",\n lineLength: 0,\n subtype: null,\n textUserData: null,\n onDragCallback: this.onDimDrag.bind(this),\n onDragStartCallback: this.onDimDragStart.bind(this),\n };\n this.isReady = true;\n this.draw();\n\n resolve();\n }\n );\n });\n }\n\n public unload() {\n this.scene.remove(this.dimensionPatiosPlanRight);\n this.scene.remove(this.dimensionPatiosPlanLeft);\n this.scene.remove(this.dimensionPatiosFrontRight);\n if (this.APP.patiosManager && this.APP.patiosManager.patiosGroup) {\n this.APP.patiosManager.patiosGroup.remove(\n this.dimensionPatiosFrontBottom,\n //this.dimensionPatiosFrontRight,\n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom,\n this.dimensionPatiosLeftRight,\n this.dimensionPatiosLeftLeft,\n this.dimensionPatiosPlanBottom,\n this.dimensionPatiosLowerHeightDim,\n //this.dimensionPatiosPlanRight,\n this.dimensionPlanMiddle,\n this.dimensionPlanMidleLeft\n );\n }\n }\n\n public draw() {\n if (!this.isReady) {\n return;\n }\n\n // this.dimensionPatiosPlanBottom.children = [];\n // this.dimensionPatiosPlanRight.children = [];\n // this.dimensionPatiosPlanLeft.children = [];\n this.dimensionPatiosLowerHeightDim.children =\n this.dimensionPatiosLowerHeightDim.children.filter(\n (el) => el.userData?.groupType == DIMENSION_LABEL_TYPE.LOWER_HEIGHT_DIM\n );\n\n this.dimensionPatiosPlanBottom.children =\n this.dimensionPatiosPlanBottom.children.filter(\n (el) =>\n el.userData?.groupType ==\n DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL ||\n el.userData?.groupType ==\n DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.LEFT_OVERHANG ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.RIGHT_OVERHANG ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY\n );\n this.dimensionPatiosPlanRight.children =\n this.dimensionPatiosPlanRight.children.filter(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.MULTI_SPAN ||\n el.userData?.groupType ==\n DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.FRONT_OVERHANG ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.BACK_OVERHANG\n );\n this.dimensionPatiosPlanLeft.children =\n this.dimensionPatiosPlanLeft.children.filter(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL\n );\n this.dimensionPatiosFrontBottom.children = [];\n this.dimensionPatiosFrontRight.children = [];\n this.dimensionPatiosLeftBottom.children = [];\n this.dimensionPatiosLeftRight.children = [];\n this.dimensionPatiosLeftLeft.children = [];\n this.dimensionPatiosRightBottom.children = [];\n this.dimensionPatiosRightLeft.children = [];\n this.dimensionPatiosRightRight.children = [];\n this.dimensionPlanMiddle.children = [];\n this.dimensionPlanMidleLeft.children = [];\n\n //this.scene.remove(...this.scene.children.filter(o => o.userData.type == 'BOXHELPER'));\n\n this.totalBaySize = this.APP.dialogEditBay.listBay\n .map((b) => b.value)\n .reduce((sum, current) => sum + current);\n // for (let b of this.APP.dialogEditBay.listBay) {\n // this.totalBaySize += b.value;\n // }\n\n this.box = this.utils.getSceneBox();\n // let boxHelper = new Box3Helper(this.MANAGER.boundingBox);\n // boxHelper.userData = { type: \"BOXHELPER\" };\n // this.scene.add(boxHelper);\n\n this.drawDimensionLowerHeightDim();\n this.drawDimensionPatiosPlanBottom();\n this.drawDimensionPatiosPlanRight();\n this.drawDimensionPatiosPlanLeft();\n\n this.drawDimensionPatiosFrontBottom();\n this.drawDimensionPatiosFrontRight();\n\n this.drawDimensionPatiosLeftBottom();\n this.drawDimensionPatiosLeftRight();\n this.drawDimensionPatiosLeftLeft();\n\n this.drawDimensionPatiosRightBottom();\n this.drawDimensionPatiosRightLeft();\n this.drawDimensionPatiosRightRight();\n\n this.drawDimensionMidle();\n this.drawDimensionMidleLeft();\n\n //testing\n // [\n // this.dimensionPatiosFrontBottom,\n // this.dimensionPatiosFrontRight,\n // this.dimensionPatiosRightBottom,\n // this.dimensionPatiosRightLeft,\n // this.dimensionPatiosRightRight,\n // this.dimensionPatiosLeftBottom,\n // this.dimensionPatiosLeftRight,\n // this.dimensionPatiosLeftLeft,\n // ].forEach(g => { g.visible = true });\n\n // var offset = this.calulateBoundingBox();\n // this.dimensionPatiosPlanRight.position.setX(offset.right);\n // this.dimensionPatiosPlanLeft.position.setX(offset.left);\n // this.dimensionPatiosPlanBottom.position.setZ(offset.front);\n\n // let existingHouseDimLeft = this.APP.scene.children.find(c => c.userData.type == GEOMETRY_TYPE.DIMENSION && c.userData.position?.planLeft);\n // //let existingHouseDimBox = new Box3().setFromObject(existingHouseDimLeft);\n // if(existingHouseDimLeft && existingHouseDimLeft.position.x > offset.left){\n // existingHouseDimLeft.position.setX(offset.left - 500);\n // }\n\n this.APP.dimensionManager.draw();\n }\n\n private drawDimensionLowerHeightDim() {\n const frontPostHeight = this.utils.getHeightByAngle(\n UI.height - this.MANAGER.postAndBeamManager.beamInfo.height,\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n -1\n );\n const offsetZFrontPos = UI.span + UI.multiSpan + FIT_DIMENSION;\n\n this.dimensionPatiosLowerHeightDim.position.set(\n 0,\n frontPostHeight / 2,\n offsetZFrontPos\n );\n\n let textStr = this.utils.getDimensionValue(frontPostHeight);\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: frontPostHeight,\n container: this.dimensionPatiosLowerHeightDim,\n views: [],\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, 200, 0),\n labelType: DIMENSION_LABEL_TYPE.LOWER_HEIGHT_DIM,\n textUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: [],\n },\n allowDrag: false,\n };\n let dimBay = this.dimensionPatiosLowerHeightDim.children.find(\n (el) => el.userData?.groupType == DIMENSION_LABEL_TYPE.LOWER_HEIGHT_DIM\n ) as Dimension;\n if (!dimBay) {\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n\n private drawDimensionMidleLeft() {\n let offsetX = 0; //this.totalBaySize / 2;\n let offsetZ = -this.APP.sldExistingWidth1.currentValue / 2 + 500;\n let origin = new Vector3(0, 0, 0);\n let head = new Vector3(0, 0, 1000);\n let hand1 = new Vector3(-50, 0, 950);\n let hand2 = new Vector3(50, 0, 950);\n\n //arrow\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n //let material = new LineBasicMaterial({ color: 0x0000ff });\n let geoLine = new Geometry();\n geoLine.vertices.push(origin);\n geoLine.vertices.push(head);\n\n geoLine.vertices.push(head);\n geoLine.vertices.push(hand1);\n\n geoLine.vertices.push(hand1);\n geoLine.vertices.push(hand2);\n\n geoLine.vertices.push(hand2);\n geoLine.vertices.push(head);\n let dim = new Line(geoLine);\n dim.userData = { type: \"Arrow\", views: views };\n\n //text of degree\n let textStr = \"Panel direction\";\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(\n this.textGeo,\n MaterialManager.Instance().DIMENSION_TEXT\n );\n\n text.userData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, 0, 0),\n };\n text.position.setZ(500);\n text.position.setX(200);\n\n dim.visible = false;\n text.visible = false;\n\n this.dimensionPlanMidleLeft.add(dim);\n this.dimensionPlanMidleLeft.add(text);\n\n if (\n this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT\n ) {\n text.position.set(-200, 0, 500);\n this.dimensionPlanMidleLeft.rotation.set(0, -Math.PI / 2, 0);\n this.dimensionPlanMidleLeft.position.set(offsetX + 500, 0, offsetZ);\n } else {\n this.dimensionPlanMidleLeft.rotation.set(0, Math.PI / 2, 0);\n this.dimensionPlanMidleLeft.position.set(-offsetX - 500, 0, offsetZ);\n }\n }\n private drawDimensionMidle() {\n let offsetZ =\n this.APP.sldSpan.currentValue / 2 +\n this.APP.sldMultiSpan.currentValue / 2 -\n this.APP.sldExistingWidth1.currentValue / 2;\n let origin = new Vector3(0, 0, 0);\n let head = new Vector3(0, 0, 1000);\n let hand1 = new Vector3(-50, 0, 950);\n let hand2 = new Vector3(50, 0, 950);\n\n //arrow\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n let material = new LineBasicMaterial({ color: 0x0000ff });\n let geoLine = new Geometry();\n geoLine.vertices.push(origin);\n geoLine.vertices.push(head);\n\n geoLine.vertices.push(head);\n geoLine.vertices.push(hand1);\n\n geoLine.vertices.push(hand1);\n geoLine.vertices.push(hand2);\n\n geoLine.vertices.push(hand2);\n geoLine.vertices.push(head);\n let dim = new Line(geoLine, material);\n dim.userData = { type: \"Arrow\", views: views };\n\n //text of degree\n let textStr = this.APP.sltRoofPitch.currentValue + \" degree\";\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(\n this.textGeo,\n MaterialManager.Instance().DIMENSION_TEXT\n );\n\n text.userData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, Math.PI / 2, 0),\n };\n text.position.setZ(500);\n text.position.setX(200);\n\n dim.visible = false;\n text.visible = false;\n\n this.dimensionPlanMiddle.add(dim);\n this.dimensionPlanMiddle.add(text);\n\n this.dimensionPlanMiddle.position.set(0, 0, offsetZ);\n\n //console.log(dim);\n }\n\n private drawDimensionPatiosPlanBottom() {\n //let offsetX = -(this.totalBaySize + this.APP.sldLeftOverhang.currentValue*2 + this.APP.sldRightOverhang.currentValue)/2;\n let offsetX = -this.totalBaySize / 2;\n let offsetZ = this.box.max.z + this.dimensionDistance2;\n //let offsetZ = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance2 - this.APP.sldExistingWidth1.currentValue / 2;\n //if (this.APP.sldExistingWidth1.currentValue > this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) {\n // offsetZ = this.APP.sldExistingWidth1.currentValue / 2 + this.dimensionDistance2;\n //}\n\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosPlanBottom.position.setZ(offsetZ);\n\n this.dimensionPatiosPlanBottom.children =\n this.dimensionPatiosPlanBottom.children.filter(\n (el) =>\n el.userData?.groupType != DIMENSION_LABEL_TYPE.BAY ||\n (el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY &&\n el.userData?.bayNum <\n HomeComponent.ins.dialogEditBay.listBay.length)\n );\n\n for (let i = 0; i <= this.APP.dialogEditBay.listBay.length; i++) {\n let b: IBay = { index: 0, value: 0, isCut: false };\n if (i < this.APP.dialogEditBay.listBay.length) {\n b = this.APP.dialogEditBay.listBay[i];\n }\n\n if (i < this.APP.dialogEditBay.listBay.length) {\n let textStr = this.utils.getDimensionValue(b.value);\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: b.value,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(offsetX + b.value / 2, 0, 0),\n textPos: new Vector3(offsetX + b.value / 2, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.BAY,\n bayNum: i,\n textUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n position: { bottom: true },\n },\n };\n let dimBay = this.dimensionPatiosPlanBottom.children.find(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY &&\n el.userData?.bayNum == i\n ) as Dimension;\n if (!dimBay) {\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n offsetX += b.value;\n }\n\n //rakecut\n if (this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE) {\n let _offsetX =\n -this.APP.dialogEditBay.totalBaySize / 2 +\n this.APP.sldLeftCutHorizontal.currentValue / 2 -\n this.APP.sldLeftOverhang.currentValue;\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldLeftCutHorizontal.currentValue,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(_offsetX, 500, 0),\n textPos: new Vector3(_offsetX, 300, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL,\n subtype: GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT,\n };\n let dimRake = this.dimensionPatiosPlanBottom.children.find(\n (el) =>\n el.userData?.groupType ==\n DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL\n ) as Dimension;\n if (!dimRake) {\n new Dimension(options);\n } else {\n dimRake.update(options);\n }\n } else {\n this.dimensionPatiosPlanBottom.children =\n this.dimensionPatiosPlanBottom.children.filter(\n (el) =>\n el.userData?.groupType !=\n DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL\n );\n }\n if (this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE) {\n let _offsetX =\n this.APP.dialogEditBay.totalBaySize / 2 -\n this.APP.sldRightCutHorizontal.currentValue / 2 +\n this.APP.sldRightOverhang.currentValue;\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldRightCutHorizontal.currentValue,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(_offsetX, 500, 0),\n textPos: new Vector3(_offsetX, 500 - 200, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL,\n subtype: GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT,\n };\n let dimRake = this.dimensionPatiosPlanBottom.children.find(\n (el) =>\n el.userData?.groupType ==\n DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL\n ) as Dimension;\n if (!dimRake) {\n new Dimension(options);\n } else {\n dimRake.update(options);\n }\n } else {\n this.dimensionPatiosPlanBottom.children =\n this.dimensionPatiosPlanBottom.children.filter(\n (el) =>\n el.userData?.groupType !=\n DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL\n );\n }\n\n //Left over hang\n this.addOverhang(\n this.dimensionPatiosPlanBottom,\n offsetX,\n this.APP.sldLeftOverhang.currentValue,\n views,\n \"Left\",\n 0,\n \"z\",\n DIMENSION_LABEL_TYPE.LEFT_OVERHANG\n );\n this.addOverhang(\n this.dimensionPatiosPlanBottom,\n offsetX,\n this.APP.sldRightOverhang.currentValue,\n views,\n \"Right\",\n 0,\n \"z\",\n DIMENSION_LABEL_TYPE.RIGHT_OVERHANG\n );\n this.repositionDimension(\n this.dimensionPatiosPlanBottom,\n DIMENSION_LOCATION.PLAN_BOTTOM\n );\n }\n onDimDrag(event) {\n this.utils.handlerDimDragEvent(\n event,\n this.startPos,\n this.startMatrix,\n this.startBayLength\n );\n this.startPos = event.object.position.clone();\n }\n onDimDragStart(event) {\n this.startPos = event.object.position.clone();\n this.startMatrix = event.object.matrixWorld.clone();\n if (event.object.userData?.dimType === DIMENSION_LABEL_TYPE.BAY) {\n let bayNum = event.object.userData.bayNum;\n this.startBayLength = UI.listBay[+bayNum].value;\n }\n }\n private drawDimensionPatiosPlanRight() {\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n let offsetDimensionZ =\n this.APP.sldSpan.currentValue / 2 -\n this.APP.sldExistingWidth1.currentValue / 2;\n\n let _dimensionDistane = this.dimensionDistance2;\n if (\n this.APP.sltExistingType.currentValue == 2 ||\n this.APP.sltExistingType.currentValue == 3\n ) {\n if (this.APP.sldExistingWidth1.currentValue > 0) {\n _dimensionDistane = this.dimensionDistance;\n }\n }\n\n let offsetDimensionX = this.box.max.x + this.dimensionDistance2;\n //let offsetDimensionX = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue + _dimensionDistane;\n //if (this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3) {\n // if (this.APP.sldExistingLength.currentValue > )\n //}\n //if (this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3) {\n\n //}\n\n //if (this.APP.sldExistingLength.currentValue / 2 > this.totalBaySize / 2) {\n // offsetDimensionX = this.APP.sldExistingLength.currentValue / 2 + _dimensionDistane;\n //}\n\n //if (this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3) {\n // offsetDimensionX += this.APP.sldExistingLength2.currentValue;\n //}\n\n this.dimensionPatiosPlanRight.position.set(\n offsetDimensionX,\n 0,\n offsetDimensionZ\n );\n let dimLength = this.APP.sldSpan.currentValue;\n\n let textStr = this.utils.getDimensionValue(this.APP.sldSpan.currentValue);\n\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldSpan.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.SPAN,\n hasTextClone: false,\n textUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, -Math.PI / 2, 0),\n },\n textCloneUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, -Math.PI / 2, 0),\n },\n textCloneRotation: new Vector3(0, Math.PI, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, -Math.PI, 0),\n fitZ: -10,\n };\n let dimSpan = this.dimensionPatiosPlanRight.children.find(\n (el) => el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN\n ) as Dimension;\n if (!dimSpan) {\n new Dimension(options);\n } else {\n dimSpan.update(options);\n }\n\n if (this.APP.sldMultiSpan.currentValue > 0) {\n let offsetX =\n this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue;\n // - this.APP.sldExistingWidth1.currentValue/2\n // - this.APP.existingWallManager.geo_existingWallL1.width\n // - this.APP.eaveManager.backOverhang;\n dimLength += this.APP.sldMultiSpan.currentValue;\n\n let textStr = this.utils.getDimensionValue(\n this.APP.sldMultiSpan.currentValue\n );\n\n let optionsMul: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldMultiSpan.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(\n this.APP.sldSpan.currentValue / 2 +\n this.APP.sldMultiSpan.currentValue / 2,\n 0,\n 0\n ),\n textPos: new Vector3(\n this.APP.sldSpan.currentValue / 2 +\n this.APP.sldMultiSpan.currentValue / 2,\n -200,\n 0\n ),\n labelType: DIMENSION_LABEL_TYPE.MULTI_SPAN,\n hasTextClone: false,\n textUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, -Math.PI / 2, 0),\n },\n textCloneUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, -Math.PI / 2, 0),\n },\n textCloneRotation: new Vector3(0, Math.PI, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, -Math.PI, 0),\n fitZ: -10,\n };\n let dimMul = this.dimensionPatiosPlanRight.children.find(\n (el) => el.userData?.groupType == DIMENSION_LABEL_TYPE.MULTI_SPAN\n ) as Dimension;\n if (!dimMul) {\n new Dimension(optionsMul);\n } else {\n dimMul.update(optionsMul);\n }\n } else {\n this.dimensionPatiosPlanRight.children =\n this.dimensionPatiosPlanRight.children.filter(\n (el) => el.userData?.groupType != DIMENSION_LABEL_TYPE.MULTI_SPAN\n );\n }\n\n let extraDistance = 0;\n\n //----Rake cut\n if (this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE) {\n extraDistance = 500;\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n\n let offsetZ =\n dimLength / 2 +\n UI.overhangFront +\n UI.multiSpan / 2 -\n UI.rakeCutRightVer / 2;\n\n let optionsRake: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldRightCutVertical.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(offsetZ, 500, 0),\n textPos: new Vector3(offsetZ, 300, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL,\n textRotation: new Vector3(0, Math.PI, 0),\n fitZ: -10,\n subtype: GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT,\n };\n let dimRake = this.dimensionPatiosPlanRight.children.find(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL\n ) as Dimension;\n if (!dimRake) {\n new Dimension(optionsRake);\n } else {\n dimRake.update(optionsRake);\n }\n } else {\n this.dimensionPatiosPlanRight.children =\n this.dimensionPatiosPlanRight.children.filter(\n (el) =>\n el.userData?.groupType !=\n DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL\n );\n }\n //----End rake cut\n\n let offsetRight =\n this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue;\n let offsetLeft = this.APP.sldSpan.currentValue / 2; // + this.APP.sldMultiSpan.currentValue;\n\n this.addOverhang(\n this.dimensionPatiosPlanRight,\n offsetRight,\n this.APP.sldFrontOverhang.currentValue,\n views,\n \"Right\",\n Math.PI,\n \"y\",\n DIMENSION_LABEL_TYPE.FRONT_OVERHANG\n );\n this.addOverhang(\n this.dimensionPatiosPlanRight,\n offsetLeft,\n this.APP.sldBackOverhang.currentValue,\n views,\n \"Left\",\n Math.PI,\n \"y\",\n DIMENSION_LABEL_TYPE.BACK_OVERHANG\n );\n this.repositionDimension(\n this.dimensionPatiosPlanRight,\n DIMENSION_LOCATION.PLAN_RIGHT,\n extraDistance\n );\n }\n private drawDimensionPatiosPlanLeft() {\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.NONE) {\n this.dimensionPatiosPlanLeft.children =\n this.dimensionPatiosPlanLeft.children.filter(\n (el) =>\n el.userData?.groupType !=\n DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL\n );\n return;\n }\n\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n\n let offsetDimensionZ =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue -\n this.APP.sldExistingWidth1.currentValue / 2 -\n // - this.APP.existingWallManager.geo_existingWallL1.width\n // - this.APP.eaveManager.backOverhang\n this.APP.sldLeftCutVertical.currentValue / 2;\n\n let optionsRake: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldLeftCutVertical.currentValue,\n container: this.dimensionPatiosPlanLeft,\n views: views,\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL,\n };\n let dimRake = this.dimensionPatiosPlanLeft.children.find(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL\n ) as Dimension;\n if (!dimRake) {\n new Dimension(optionsRake);\n } else {\n dimRake.update(optionsRake);\n }\n\n //let offsetDimensionX = this.MANAGER.boundingBox.min.x - this.dimensionDistance2;\n this.dimensionPatiosPlanLeft.position.set(0, 0, offsetDimensionZ);\n this.repositionDimension(\n this.dimensionPatiosPlanLeft,\n DIMENSION_LOCATION.PLAN_LEFT\n );\n }\n\n private drawDimensionPatiosFrontBottom() {\n let dimOffsetY = -this.dimensionDistance2;\n this.dimensionPatiosFrontBottom.position.set(0, dimOffsetY, 0);\n\n let views = [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosPlanBottom.children.forEach((groupDim) => {\n groupDim.children\n .filter(\n (c) => c.userData.subtype != GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT\n )\n .forEach((e) => {\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.rotation.set(0, Math.PI, 0);\n dim.userData[\"rotation\"] = new Vector3(0, 0, 0);\n dim.userData[\"position\"] = { ...e.userData.position, bottom: true };\n }\n this.dimensionPatiosFrontBottom.add(dim);\n });\n });\n }\n private drawDimensionPatiosFrontRight() {\n let views = [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }];\n\n let _dimensionDistane = this.dimensionDistance2;\n if (\n this.APP.sltExistingType.currentValue == 2 ||\n this.APP.sltExistingType.currentValue == 3\n ) {\n if (this.APP.sldExistingWidth1.currentValue > 0) {\n _dimensionDistane = this.dimensionDistance;\n }\n }\n let height = this.utils.getHeightByAngle(\n this.APP.sldBuildingHeight.currentValue,\n this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue,\n this.APP.sltRoofPitch.currentValue,\n -1\n );\n let dimOffsetX = this.box.max.x;\n //let dimOffsetX = this.totalBaySize / 2 + this.APP.patiosManager.patiosGroup.position.x + _dimensionDistane;\n let dimOffsetY = height / 2;\n //if (this.APP.sldExistingLength.currentValue / 2 > this.totalBaySize / 2) {\n // dimOffsetX = this.APP.sldExistingLength.currentValue / 2 + _dimensionDistane;\n //}\n\n //if (this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3) {\n // dimOffsetX += this.APP.sldExistingLength2.currentValue;\n //}\n\n this.dimensionPatiosFrontRight.position.set(dimOffsetX, dimOffsetY, 0);\n\n //--------\n let scaleLength = height / this.lineGeo.length;\n\n let cap1 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-dimOffsetY);\n\n let cap2 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(dimOffsetY);\n\n let line = new Mesh(\n this.lineGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(height);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(\n this.textGeo,\n MaterialManager.Instance().DIMENSION_TEXT\n );\n text.userData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, 0, -Math.PI / 2),\n };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosFrontRight.add(\n line,\n cap1,\n cap2,\n text,\n ...this.utils.addArrowForLine(line)\n );\n this.repositionDimension(\n this.dimensionPatiosFrontRight,\n DIMENSION_LOCATION.FRONT_RIGHT\n );\n }\n private drawDimensionPatiosLeftBottom() {\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z;\n\n this.dimensionPatiosLeftBottom.position.set(0, dimOffsetY, dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n this.dimensionPatiosPlanRight.children.forEach((groupDim) => {\n groupDim.children.forEach((e) => {\n if (e.userData?.subType == GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT) return;\n\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.rotation.set(0, 0, 0);\n dim.userData[\"views\"] = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n ];\n dim.userData[\"rotation\"] = new Vector3(0, 0, 0);\n dim.userData[\"position\"] = { ...e.userData.position, bottom: true };\n }\n this.dimensionPatiosLeftBottom.add(dim);\n });\n });\n }\n private drawDimensionPatiosLeftRight() {\n let dimOffsetY =\n this.APP.sldBuildingHeight.currentValue -\n this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue);\n let dimOffsetZ =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.dimensionDistance2 -\n this.APP.sldExistingWidth1.currentValue / 2;\n if (\n this.APP.sldExistingWidth1.currentValue +\n this.APP.sldExistingWidth2.currentValue >\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue\n ) {\n dimOffsetZ =\n this.APP.sldExistingWidth1.currentValue / 2 +\n this.APP.sldExistingWidth2.currentValue +\n this.dimensionDistance2 -\n 290;\n }\n if (this.APP.sldExistingLength2.currentValue > 0) {\n dimOffsetZ += 500;\n }\n\n this.dimensionPatiosLeftRight.position.set(0, dimOffsetY / 2, dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n let offsetLength = dimOffsetY;\n let scaleLength = offsetLength / this.lineGeo.length;\n\n let cap1 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength / 2);\n\n let cap2 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength / 2);\n\n let line = new Mesh(\n this.lineGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(\n this.textGeo,\n MaterialManager.Instance().DIMENSION_TEXT\n );\n text.userData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }],\n rotation: new Vector3(-Math.PI / 2, 0, 0),\n };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosLeftRight.add(\n line,\n cap1,\n cap2,\n text,\n ...this.utils.addArrowForLine(line)\n );\n this.repositionDimension(\n this.dimensionPatiosLeftRight,\n DIMENSION_LOCATION.LEFT_RIGHT\n );\n }\n private drawDimensionPatiosRightBottom() {\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z;\n\n this.dimensionPatiosRightBottom.position.set(0, dimOffsetY, dimOffsetZ);\n\n let views = [{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosPlanRight.children.forEach((groupDim) => {\n groupDim.children.forEach((e) => {\n if (e.userData?.subType == GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT) return;\n\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.userData[\"rotation\"] = new Vector3(0, 0, 0);\n dim.userData[\"position\"] = { ...e.userData.position, bottom: true };\n }\n this.dimensionPatiosRightBottom.add(dim);\n });\n });\n }\n private drawDimensionPatiosRightLeft() {\n let dimOffsetY = this.utils.getHeightByAngle(\n this.APP.sldBuildingHeight.currentValue,\n this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue,\n this.APP.sltRoofPitch.currentValue,\n -1\n );\n let dimOffsetZ = this.dimensionPatiosLeftRight.position.z; //this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance2 - this.APP.sldExistingWidth1.currentValue/2;\n //this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance2;\n\n this.dimensionPatiosRightLeft.position.set(0, dimOffsetY / 2, dimOffsetZ);\n\n let views = [{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosLeftRight.children.forEach((e) => {\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.userData[\"rotation\"] = new Vector3(Math.PI / 2, 0, 0);\n dim.rotation.set(0, Math.PI, 0);\n }\n this.dimensionPatiosRightLeft.add(dim);\n });\n this.repositionDimension(\n this.dimensionPatiosRightLeft,\n DIMENSION_LOCATION.RIGHT_LEFT\n );\n }\n private drawDimensionPatiosLeftLeft() {\n let dimOffsetY = this.APP.sldBuildingHeight.currentValue;\n let dimOffsetZ = this.APP.sldExistingWidth1.currentValue / 2 + 1800;\n\n this.dimensionPatiosLeftLeft.position.set(0, dimOffsetY / 2, -dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n ];\n\n let offsetLength = dimOffsetY;\n let scaleLength = offsetLength / this.lineGeo.length;\n\n let cap1 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength / 2);\n\n let cap2 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength / 2);\n\n let line = new Mesh(\n this.lineGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(\n this.textGeo,\n MaterialManager.Instance().DIMENSION_TEXT\n );\n text.userData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }],\n rotation: new Vector3(Math.PI / 2, 0, 0),\n };\n text.position.set(0, 200, 0);\n\n this.dimensionPatiosLeftLeft.add(\n line,\n cap1,\n cap2,\n text,\n ...this.utils.addArrowForLine(line)\n );\n }\n private drawDimensionPatiosRightRight() {\n let dimOffsetY = this.APP.sldBuildingHeight.currentValue;\n let dimOffsetZ = this.APP.sldExistingWidth1.currentValue / 2 + 1800;\n\n this.dimensionPatiosRightRight.position.set(0, dimOffsetY / 2, -dimOffsetZ);\n\n let views = [{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosLeftLeft.children.forEach((e) => {\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n dim.userData[\"rotation\"] = new Vector3(-Math.PI / 2, 0, 0);\n dim.rotation.set(0, Math.PI, 0);\n dim.position.set(dim.position.x, -dim.position.y, dim.position.z);\n this.dimensionPatiosRightRight.add(dim);\n }\n });\n }\n private addOverhang(\n groupDim: Object3D,\n offset: number,\n overhangValue: number,\n views: any,\n side: string,\n rotateText: number,\n axis: string,\n labelType?: string\n ) {\n if (overhangValue == 0) {\n let dim = groupDim.children.find(\n (el) => el.userData?.groupType == labelType\n ) as Dimension;\n if (dim) {\n groupDim.remove(dim);\n }\n return;\n }\n\n let textStr = this.utils.getDimensionValue(overhangValue);\n\n let textRotation = new Vector3();\n let textUserData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n position: { overhang: true },\n };\n if (axis === \"z\") {\n textRotation.setZ(rotateText);\n textUserData[\"rotation\"] = new Vector3(0, 0, -rotateText / 2);\n textUserData[\"position\"][\"bottom\"] = true;\n } else if (axis === \"y\") {\n textRotation.setY(rotateText);\n textUserData[\"rotation\"] = new Vector3(0, -rotateText / 2, 0);\n } else if (axis === \"x\") {\n textRotation.setX(rotateText);\n textUserData[\"rotation\"] = new Vector3(-rotateText / 2, 0, 0);\n }\n\n let linePos = new Vector3();\n if (side === \"Left\") {\n linePos.setX(-offset - overhangValue / 2);\n } else if (side === \"Right\") {\n linePos.setX(offset + overhangValue / 2);\n }\n let fitZ = 0;\n if (labelType) {\n if (axis === \"z\") {\n fitZ = 10;\n } else if (axis === \"y\") {\n fitZ = -10;\n }\n }\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: overhangValue,\n container: groupDim,\n views: views,\n linePos: linePos,\n textPos: linePos.clone().setY(linePos.y - 200),\n labelType: labelType ? labelType : null,\n fitZ: fitZ,\n textRotation: textRotation,\n textUserData: textUserData,\n };\n let dim = groupDim.children.find(\n (el) => el.userData?.groupType == labelType\n ) as Dimension;\n if (!dim) {\n new Dimension(options);\n } else {\n dim.update(options);\n }\n }\n private getTextCover(\n textGeo: TextBufferGeometry,\n labelType: string,\n pos: Vector3,\n fitZ = 0,\n bayNum?: number\n ) {\n let textSize = new Vector3();\n textGeo.boundingBox.getSize(textSize);\n\n let textCover = new Mesh(\n new BoxBufferGeometry(textSize.x, textSize.y, textSize.z)\n );\n textCover.position.set(pos.x, pos.y, pos.z + fitZ);\n textCover.userData = { type: GEOMETRY_TYPE.TEXT_COVER, labelType };\n if (bayNum !== undefined) {\n textCover.userData[\"bayNum\"] = bayNum;\n }\n textCover.material[\"opacity\"] = 0;\n textCover.material[\"transparent\"] = true;\n\n return textCover;\n }\n\n public getOutlines(): Printing2DGeometry {\n let lsGeometries: Printing2DLine[] = [];\n let lsText: Print2DText[] = [];\n\n for (let dim of [\n ...this.dimensionPatiosPlanBottom.children,\n ...this.dimensionPatiosPlanRight.children,\n ...this.dimensionPatiosPlanLeft.children,\n ...this.dimensionPatiosFrontBottom.children,\n ...this.dimensionPatiosFrontRight.children,\n ...this.dimensionPatiosLeftBottom.children,\n ...this.dimensionPatiosLeftRight.children,\n ...this.dimensionPatiosLeftLeft.children,\n ...this.dimensionPatiosRightBottom.children,\n ...this.dimensionPatiosRightLeft.children,\n ...this.dimensionPatiosRightRight.children,\n ...this.dimensionPlanMiddle.children,\n ...this.dimensionPlanMidleLeft.children,\n ]) {\n if (!dim.userData.views) {\n console.log(\"TEXT NO VIEW\", dim);\n continue;\n }\n\n if (dim.type == \"Group\") {\n dim.children.forEach((el) => {\n el.updateMatrix();\n let _clone = el.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(el.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n\n el.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(el.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(el.matrixWorld);\n\n let textRotation = el.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, el, pos, textRotation, points);\n });\n } else {\n dim.updateMatrix();\n let _clone = dim.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(dim.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n\n dim.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(dim.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(dim.matrixWorld);\n\n let textRotation = dim.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, dim, pos, textRotation, points);\n }\n }\n return { lines: lsGeometries, texts: lsText };\n }\n private getDimInfo(\n lsGeometries: Printing2DLine[],\n lsText: Print2DText[],\n dim: Object3D,\n pos: Vector3,\n textRotation: Vector3,\n points: Vector3[]\n ) {\n if (\n dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT &&\n dim.userData.views &&\n dim.userData.value\n ) {\n let box = new Box3().setFromObject(dim.parent);\n let startEnd = this.utils.getStartEndPoint(box);\n let line = new Line3(startEnd[0], startEnd[1]);\n\n let projectPoint = new Vector3();\n line.closestPointToPoint(pos, true, projectPoint);\n let _pos = new Vector3().addVectors(\n projectPoint,\n new Vector3()\n .subVectors(pos, projectPoint)\n .normalize()\n .multiplyScalar(10)\n );\n\n if (dim.userData.position?.bottom) {\n if (dim.userData.position?.overhang) {\n _pos = new Vector3().addVectors(\n projectPoint,\n new Vector3()\n .subVectors(pos, projectPoint)\n .normalize()\n .multiplyScalar(180)\n );\n } else {\n _pos = new Vector3().addVectors(\n projectPoint,\n new Vector3()\n .subVectors(pos, projectPoint)\n .normalize()\n .multiplyScalar(120)\n );\n }\n } else {\n if (dim.userData.position?.overhang) {\n _pos = new Vector3().addVectors(\n projectPoint,\n new Vector3()\n .subVectors(pos, projectPoint)\n .normalize()\n .multiplyScalar(100)\n );\n }\n }\n\n let p = new Vector3().applyMatrix4(dim.matrixWorld);\n\n lsText.push({\n value: dim.userData.value,\n position: p,\n rotation: textRotation,\n views: dim.userData.views,\n });\n } else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_LINE) {\n // this.scene.add(new LineSegments(new Geometry().setFromPoints(points), new LineBasicMaterial({color: new Color('red')})));\n\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views,\n });\n } else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_CAP) {\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views,\n });\n } else if (dim.userData.type == \"Arrow\") {\n let geo = ((dim as Line).geometry as Geometry).clone();\n geo.applyMatrix4(dim.matrixWorld);\n lsGeometries.push({\n vertices: geo.vertices,\n objectType: dim.userData.type,\n views: dim.userData.views,\n });\n }\n }\n public destroy(): void {\n this.unregisterEvent();\n this.unload();\n }\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldFrontOverhang,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sldExistingWallHeight,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch,\n\n this.APP.sldEaveWidth,\n ];\n this.controlsToRegisterEvent.forEach((c) =>\n c.addAction(this.eventHandleId)\n );\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.controlsToRegisterEvent = undefined;\n }\n public uiChanged(preVal: number, curVal: number): void {\n this.draw();\n }\n private calulateBoundingBox() {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter((c) => c.userData.type == \"BOX_HELPER_\")\n );\n let patiosBox = this.MANAGER.boundingBox;\n\n let planRightBox = this.APP.utils.getObjectBoundingBox(\n this.dimensionPatiosPlanRight\n );\n planRightBox.min.x = patiosBox.max.x;\n planRightBox.max.x = patiosBox.max.x + 500;\n planRightBox.max.y = 10000;\n\n let planLeftBox = this.APP.utils.getObjectBoundingBox(\n this.dimensionPatiosPlanLeft\n );\n planLeftBox.min.x = patiosBox.min.x - 500;\n planLeftBox.max.x = patiosBox.min.x;\n planLeftBox.max.y = 10000;\n\n let planBottomBox = this.APP.utils.getObjectBoundingBox(\n this.dimensionPatiosPlanBottom\n );\n let planBottomBoxWidth = planBottomBox.max.z - planBottomBox.min.z;\n planBottomBox.min.z = patiosBox.max.z;\n planBottomBox.max.z = patiosBox.max.z + planBottomBoxWidth;\n planBottomBox.max.y = 10000;\n\n let objs = [];\n\n objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n c.userData.position?.width1) ||\n c.userData.position?.width2 ||\n c.userData.position?.length2 ||\n c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n\n // for(let e of objs){\n // let boxModelHelper = new BoxHelper(e);\n // boxModelHelper.userData = {type: 'BOX_HELPER_'};\n // this.scene.add(boxModelHelper);\n // }\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (planRightBox.intersectsBox(objBox)) {\n intersectBox = true;\n planRightBox.translate(new Vector3(100, 0, 0));\n }\n if (planLeftBox.intersectsBox(objBox)) {\n intersectBox = true;\n planLeftBox.translate(new Vector3(-100, 0, 0));\n }\n if (planBottomBox.intersectsBox(objBox)) {\n intersectBox = true;\n planBottomBox.translate(new Vector3(0, 0, 100));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(planRightBox);\n // boxHelper.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper);\n\n // let boxHelper2 = new Box3Helper(planLeftBox);\n // boxHelper2.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper2);\n\n // let boxHelper3 = new Box3Helper(planBottomBox);\n // boxHelper3.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper3);\n\n return {\n left: planLeftBox.min.x,\n right: planRightBox.max.x,\n front: planBottomBox.max.z,\n };\n }\n private repositionDimension(dimension, location, extraDistance = 0) {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter((c) => c.userData.type == location)\n );\n\n let patiosBox = this.MANAGER.boundingBox;\n\n if (location == DIMENSION_LOCATION.FRONT_RIGHT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.max.x;\n dimBox.max.x = patiosBox.max.x + 500;\n dimBox.max.z = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n !c.userData.position.length1 &&\n !c.userData.position.length2) ||\n (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL &&\n !c.userData.position.length1 &&\n !c.userData.position.length2)\n );\n\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n !c.userData.position.length1) ||\n (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL &&\n !c.userData.position.length1)\n );\n }\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(100, 0, 0));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setX(dimBox.max.x + extraDistance);\n } else if (location == DIMENSION_LOCATION.PLAN_LEFT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.min.x - 500;\n dimBox.max.x = patiosBox.min.x;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF ||\n c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(-100, 0, 0));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setX(dimBox.min.x + extraDistance);\n } else if (location == DIMENSION_LOCATION.PLAN_RIGHT) {\n // patiosBox = this.APP.utils.getObjectsBoundingBox(\n // this.MANAGER.patiosGroup.children.filter(c => c.userData.type != GEOMETRY_TYPE.DIMENSION && c.userData.type != GEOMETRY_TYPE.ROOF_PATIOS)\n // );\n\n // let patiosBoxHelper = new Box3Helper(patiosBox);\n // patiosBoxHelper.userData = {type: location};\n // this.scene.add(patiosBoxHelper);\n\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.max.x;\n dimBox.max.x = patiosBox.max.x + 500;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF ||\n c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n\n // for(let e of objs){\n // let boxModelHelper = new BoxHelper(e);\n // boxModelHelper.userData = {type: location};\n // this.scene.add(boxModelHelper);\n // }\n\n // for(let i = 0; i < 100; i++){\n // let intersectBox = false;\n // for(let o of objs){\n // let objBox = this.APP.utils.getObjectBoundingBox(o);\n // if(dimBox.intersectsBox(objBox)){\n // intersectBox = true;\n // dimBox.translate(new Vector3(100,0,0))\n // }\n // }\n\n // if(!intersectBox)\n // break;\n // }\n\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n dimBox.translate(new Vector3(objBox.max.x - dimBox.min.x, 0, 0));\n }\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setX(dimBox.max.x + extraDistance);\n } else if (location == DIMENSION_LOCATION.PLAN_BOTTOM) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF ||\n c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(0, 0, 100));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setZ(dimBox.max.z + extraDistance);\n } else if (location == DIMENSION_LOCATION.LEFT_RIGHT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n dimBox.min.x = -10000;\n dimBox.max.x = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n c.userData.position?.left) ||\n (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL &&\n c.userData.position?.left)\n );\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(0, 0, 100));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setZ(dimBox.max.z);\n } else if (location == DIMENSION_LOCATION.RIGHT_LEFT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(\n this.dimensionPatiosLeftRight\n );\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n\n dimBox.min.x = -10000;\n dimBox.max.x = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n c.userData.position?.right) ||\n (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL &&\n c.userData.position?.right)\n );\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(0, 0, 100));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setZ(dimBox.max.z);\n }\n }\n}\n","import { PostAndBeamManager } from \"./post-and-beam.manager\";\nimport { RoofManager } from \"./roof.manager\";\nimport { HomeComponent as AppComponent } from \"../../containers/home/home.component\";\nimport { PatiosManager } from \"../patios.manager\";\nimport { Printing2DGeometry } from \"../models\";\nimport { Group, Box3, Box3Helper, BoxHelper, Vector3 } from \"three\";\nimport { GEOMETRY_CATEGORY, CONFIG, GEOMETRY_TYPE } from \"src/app/app.config\";\nimport { DimensionManager } from \"./dimension.manager\";\nimport { SliderInputComponent } from \"src/app/component/slider-input/slider-input.component\";\nimport {\n CUTOUT_ENABLE,\n EXISTING_BUILDING_CONFIG,\n RAKECUT_TYPE,\n} from \"src/app/app.constants\";\nimport { environment } from \"src/environments/environment\";\n\nexport class ExistingBuildingManager implements PatiosManager {\n private APP: AppComponent;\n patiosGroup: Group;\n public boundingBox: Box3;\n public postAndBeamManager: PostAndBeamManager;\n private roofManager: RoofManager;\n public dimesionManager: DimensionManager;\n public ignoreBayEvent: boolean = false;\n\n private updateEventHandle: any;\n private controlsToRegisterEvent: Array;\n private deferHandle;\n private deferTimeout = EXISTING_BUILDING_CONFIG.CUTOUT_DEFFER_TIME_OUT;\n public get cutoutCondition(): boolean {\n return (\n [this.APP.sldSpan, this.APP.sldMultiSpan, this.APP.sldFrontOverhang]\n .map((x) => x.currentValue)\n .reduce((a, b) => a + b, 0) -\n this.APP.sldExistingWidth1.currentValue >=\n EXISTING_BUILDING_CONFIG.CUTOUT_ALLOW\n );\n }\n public get rakecutCondition(): boolean {\n let patiosWidth =\n this.APP.dialogEditBay.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n let patiosLength =\n this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue;\n\n return false;\n }\n\n public patiosLength: number;\n public patiosWidth: number;\n public firstLoad = true;\n\n constructor(app: AppComponent) {\n this.APP = app;\n this.patiosGroup = new Group();\n this.patiosGroup.userData = { category: GEOMETRY_CATEGORY.PATIOS };\n app.scene.add(this.patiosGroup);\n\n this.postAndBeamManager = new PostAndBeamManager(app, this);\n this.roofManager = new RoofManager(app, this);\n this.dimesionManager = new DimensionManager(app, this);\n\n this.registerEvents();\n }\n\n load(): Promise {\n return Promise.all([\n this.postAndBeamManager.optimize(),\n this.roofManager.optimize(),\n this.dimesionManager.optimize(),\n ]).then(() => {\n this.postAndBeamManager.load();\n this.roofManager.load();\n this.dimesionManager.load();\n });\n }\n loadBracket(bracketQuantity: number): void {}\n loadBracketCutout(bracketQuantity: number): void {}\n loadSideGableBracket(bracketQuantity: number): void {}\n public destroy(): void {\n this.postAndBeamManager.destroy();\n this.roofManager.destroy();\n this.dimesionManager.destroy();\n this.unRegisterEvent();\n }\n\n registerEvents(): void {\n this.updateEventHandle = this.updateDefer.bind(this);\n this.controlsToRegisterEvent = [\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sltCutOut,\n this.APP.sldFrontOverhang,\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltColourBarge,\n this.APP.sltColourGutter,\n this.APP.sltColourDownpipe,\n this.APP.sltColourRoof,\n this.APP.sldSpan,\n this.APP.sldExistingWallHeight,\n this.APP.sldEaveWidth,\n this.APP.sldFasciaDepth,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldFlyOverBracketHeight,\n this.APP.sltColourBeam,\n this.APP.sltColourPost,\n this.APP.sltColourBracket,\n this.APP.sltColourFasciaBracket,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n this.APP.sltLeftCutType,\n this.APP.sldLeftCutVertical,\n this.APP.sldLeftCutHorizontal,\n this.APP.sltRightCutType,\n this.APP.sldRightCutVertical,\n this.APP.sldRightCutHorizontal,\n this.APP.sldBuildingHeight,\n this.APP.sltPanelDirection,\n this.APP.sltPanelDirectionShow,\n this.APP.btnTurnOnPanel,\n this.APP.sltBeamLayoutShow,\n ];\n this.controlsToRegisterEvent.forEach((c) => {\n c.addAction(this.updateEventHandle);\n });\n }\n unRegisterEvent(): void {\n this.controlsToRegisterEvent.forEach((c) =>\n c.removeAction(this.updateEventHandle)\n );\n }\n updateDefer(previousValue: number, currentValue: number) {\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES ||\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE ||\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE\n ) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => {\n this.update(previousValue, currentValue);\n }, this.deferTimeout);\n } else {\n this.update(previousValue, currentValue);\n }\n }\n update(preVal: number, curVal: number) {\n let totalBaySize = this.APP.dialogEditBay.totalBaySize;\n\n let diff = this.APP.sldExistingLength.currentValue - totalBaySize;\n\n this.patiosWidth =\n totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n this.patiosLength =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue;\n\n //let cutoutCondition = this.cutoutCondition.map(x => x.currentValue).reduce((a,b) => a + b, 0) - this.APP.sldExistingWidth1.currentValue >= EXISTING_BUILDING_CONFIG.CUTOUT_ALLOW;\n if (this.APP.sltExistingType.currentValue == 1) {\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n this.patiosGroup.position.setX(\n -diff / 2 +\n this.APP.sldLeftOverhang.currentValue -\n this.APP.sldExistingLength2.currentValue\n );\n } else {\n this.patiosGroup.position.setX(\n -diff / 2 + this.APP.sldLeftOverhang.currentValue\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 2) {\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n this.patiosGroup.position.setX(\n diff / 2 -\n this.APP.sldRightOverhang.currentValue +\n this.APP.sldExistingLength2.currentValue\n );\n } else {\n this.patiosGroup.position.setX(\n diff / 2 - this.APP.sldRightOverhang.currentValue\n );\n }\n } else {\n this.patiosGroup.position.setX(0);\n }\n\n Promise.all([this.roofManager.load(), this.postAndBeamManager.load()]).then(\n () => {\n this.boundingBox = this.getPatiosBox();\n this.dimesionManager.draw();\n }\n );\n }\n getOutlines(): Printing2DGeometry {\n let dimensionOutline = this.dimesionManager.getOutlines();\n return {\n lines: [\n ...this.postAndBeamManager.getSection().lines,\n ...this.roofManager.getOutLines().lines,\n ...dimensionOutline.lines,\n ],\n texts: dimensionOutline.texts,\n };\n }\n public getPatiosBox(): Box3 {\n let left =\n -this.APP.dialogEditBay.totalBaySize / 2 -\n this.APP.sldLeftOverhang.currentValue;\n let right =\n this.APP.dialogEditBay.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue;\n let front =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue;\n let back = 0;\n let height = this.APP.sldBuildingHeight.currentValue;\n\n let box = new Box3();\n box = box.expandByPoint(new Vector3(left, 0, front));\n box = box.expandByPoint(new Vector3(right, height, back));\n\n if (this.APP.sltExistingType.currentValue == 1) {\n let diff =\n (this.APP.sldExistingLength.currentValue -\n this.APP.dialogEditBay.totalBaySize) /\n 2;\n box.translate(new Vector3(-diff, 0, 0));\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n box.translate(new Vector3(this.APP.sldLeftOverhang.currentValue, 0, 0));\n\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n box.translate(\n new Vector3(-this.APP.sldExistingLength2.currentValue, 0, 0)\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 2) {\n let diff =\n (this.APP.sldExistingLength.currentValue -\n this.APP.dialogEditBay.totalBaySize) /\n 2;\n box.translate(new Vector3(diff, 0, 0));\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n box.translate(new Vector3(-this.APP.sldRightOverhang.currentValue, 0, 0));\n\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n box.translate(\n new Vector3(this.APP.sldExistingLength2.currentValue, 0, 0)\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 3) {\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n }\n\n // if(!environment.production){\n // this.APP.scene.remove(...this.APP.scene.children.filter(o => o.userData.type == 'BOXHELPER'));\n // let boxHelper = new Box3Helper(box);\n // boxHelper.userData = { type: \"BOXHELPER\" };\n // this.APP.scene.add(boxHelper);\n // }\n\n return box;\n }\n}\n","import {\n HomeComponent as AppComponent,\n HomeComponent,\n} from \"../../containers/home/home.component\";\nimport {\n Scene,\n Material,\n Mesh,\n Vector3,\n BufferGeometry,\n BoxHelper,\n Geometry,\n LineSegments,\n BoxBufferGeometry,\n Group,\n Object3D,\n Matrix4,\n Line,\n Points,\n PointsMaterial,\n Box3,\n Box3Helper,\n} from \"three\";\nimport { Util, getBeamEndCapCode } from \"../utils\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport {\n CONFIG as env,\n GEOMETRY_TYPE,\n GEOMETRY_CATEGORY,\n} from \"../../app.config\";\nimport {\n BUILDING_SIDE,\n EXISTING_BUILDING_CONFIG as CONST,\n EXISTING_BUILDING_CONFIG,\n RAKECUT_TYPE,\n} from \"../../app.constants\";\nimport {\n GeometryInfo,\n Printing2DGeometryType,\n Printing2DLine,\n Printing2DGeometry,\n Print2DView,\n ViewType,\n LineType,\n} from \"../models\";\nimport { ExistingBuildingManager } from \".\";\nimport { group } from \"console\";\nimport { UI } from \"../ui\";\nimport _ from \"lodash\";\n\nexport class PostAndBeamManager {\n private scene: Group;\n private APP: AppComponent;\n private material: Material;\n private utils: Util;\n private geometryManager: GeometryManager;\n private postInfo: GeometryInfo;\n public beamInfo: GeometryInfo;\n private beamRakecutInfoLeft: GeometryInfo;\n private beamRakecutInfoRight: GeometryInfo;\n private geo_beamEndCap: GeometryInfo;\n private geo_groundBase: GeometryInfo;\n private eventHandleId: any;\n private roofWidth: number;\n private frontPostHeight: number;\n private totalBaySize: number;\n private downpipeGroup: Group;\n private downpipeStepRakeCutGroupLeft: Group;\n private downpipeStepRakeCutGroupRight: Group;\n private geo_downPipe: GeometryInfo;\n private geo_downPipeL: GeometryInfo;\n private geo_roofBase: GeometryInfo;\n private objectSizeChangedHandle: any;\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n private MANAGER: ExistingBuildingManager;\n private enableCutout: boolean;\n private deferHandle;\n private deferTimeout = EXISTING_BUILDING_CONFIG.CUTOUT_DEFFER_TIME_OUT;\n\n private geoBeamJoint: GeometryInfo;\n private geoHouseBeamJoint: GeometryInfo;\n\n private geo_beamStepRakecutLeft: GeometryInfo;\n private geo_beamStepRakecutRight: GeometryInfo;\n\n private beamLeftCutSizeInfo: any;\n private beamRightCutSizeInfo: any;\n\n constructor(app: AppComponent, existingManager: ExistingBuildingManager) {\n this.APP = app;\n this.MANAGER = existingManager;\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.scene = existingManager.patiosGroup;\n this.material = MaterialManager.Instance().DEFAULT.clone();\n this.registerEvent();\n }\n public destroy(): void {\n this.unregisterEvent();\n }\n public uiChanged(preVal: number, curVal: number): void {\n this.load();\n }\n uiCHangedDefer(previousValue: number, currentValue: number) {\n if (this.APP.sltCutOut.currentValue == 1) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => {\n this.load();\n }, this.deferTimeout);\n } else {\n this.load();\n }\n }\n private objectSizeChanged(pre: number, cur: number) {\n this.optimize().then(() => {\n this.load();\n });\n }\n private registerEvent(): void {\n this.eventHandleId = this.uiCHangedDefer.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldBuildingHeight,\n this.APP.sltRoofPitch,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldExistingWidth1,\n this.APP.sltExistingType,\n //this.APP.dialogEditBay,\n this.APP.sldFrontOverhang,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n this.APP.sltCutOut,\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sldExistingWidth1,\n ];\n //this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n this.controlsToRegisterEvent2 = [\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltColumnType,\n ];\n this.controlsToRegisterEvent2.forEach((c) =>\n c.addAction(this.objectSizeChangedHandle)\n );\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach((c) =>\n c.removeAction(this.objectSizeChangedHandle)\n );\n this.controlsToRegisterEvent2 = undefined;\n }\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n this.beamInfo = this.geometryManager.getBeam();\n this.beamInfo.geometry\n .rotateY(Math.PI / 2)\n .translate(this.beamInfo.length / 2, -this.beamInfo.height / 2, 0);\n //.scale(this.APP.sldBaySize.currentValue / this.beamInfo.length, 1, 1);\n\n this.geoBeamJoint = this.geometryManager.getBeamJoint();\n this.geoHouseBeamJoint = this.geometryManager.getHouseBeamJoint();\n\n this.beamRakecutInfoLeft = this.geometryManager.getBeam();\n this.beamRakecutInfoLeft.geometry.translate(\n this.beamInfo.width / 2,\n -this.beamInfo.height / 2,\n -this.beamInfo.length / 2\n );\n\n this.beamRakecutInfoRight = this.geometryManager.getBeam();\n this.beamRakecutInfoRight.geometry.translate(\n -this.beamInfo.width / 2,\n -this.beamInfo.height / 2,\n -this.beamInfo.length / 2\n );\n\n this.geo_beamStepRakecutLeft = this.geometryManager.getBeam();\n this.geo_beamStepRakecutLeft.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_beamStepRakecutLeft.length / 2,\n -this.geo_beamStepRakecutLeft.height / 2,\n -this.geo_beamStepRakecutLeft.width / 2\n );\n\n this.geo_beamStepRakecutRight = this.geometryManager.getBeam();\n this.geo_beamStepRakecutRight.geometry\n .rotateY(Math.PI / 2)\n .translate(\n -this.geo_beamStepRakecutRight.length / 2,\n -this.geo_beamStepRakecutRight.height / 2,\n -this.geo_beamStepRakecutRight.width / 2\n );\n\n this.geo_beamEndCap = this.geometryManager.getBeamEndCap();\n this.geo_beamEndCap.geometry.translate(\n 0,\n -this.geo_beamEndCap.height / 2,\n 0\n );\n\n this.postInfo = this.geometryManager.getPost();\n this.postInfo.geometry\n .rotateX(Math.PI / 2)\n .translate(0, this.postInfo.height / 2, 0);\n //.scale(1, env.height.default / this.postInfo.height, 1);\n\n this.geo_groundBase = new GeometryInfo();\n this.geo_groundBase.width = 1000;\n this.geo_groundBase.height = 1;\n this.geo_groundBase.length = 1000;\n this.geo_groundBase.geometry = new BoxBufferGeometry(\n this.geo_groundBase.width,\n this.geo_groundBase.height,\n this.geo_groundBase.length\n );\n this.geo_groundBase.geometry.translate(\n this.geo_groundBase.width / 2,\n 0,\n this.geo_groundBase.length / 2\n );\n\n this.geo_downPipe = this.geometryManager.getDownPipe();\n this.geo_downPipeL = this.geometryManager.getDownPipeL();\n this.geo_roofBase = this.geometryManager.getRoofBase();\n\n this.scene.remove(\n ...this.scene.children.filter(\n (c) => c.userData.type == GEOMETRY_TYPE.DOWNPIPE\n )\n );\n this.downpipeGroup = new Group();\n this.downpipeGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeGroup);\n\n this.downpipeStepRakeCutGroupLeft = new Group();\n this.downpipeStepRakeCutGroupLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeStepRakeCutGroupLeft);\n\n this.downpipeStepRakeCutGroupRight = new Group();\n this.downpipeStepRakeCutGroupRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeStepRakeCutGroupRight);\n\n resolve();\n });\n }\n\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.SUPERIOR_POST\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === \"COLUMN_OUTLINE\"\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.GROUND_BASE\n )\n );\n this.downpipeGroup.children = [];\n this.downpipeStepRakeCutGroupLeft.children = [];\n this.downpipeStepRakeCutGroupRight.children = [];\n\n this.beamLeftCutSizeInfo = this.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.LEFT\n );\n this.beamRightCutSizeInfo = this.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.RIGHT\n );\n\n this.totalBaySize = UI.totalBayLength;\n this.roofWidth = UI.overhangLeft + UI.overhangRight + this.totalBaySize;\n this.enableCutout = this.MANAGER.cutoutCondition;\n this.addBeam({ isMultiSpan: false });\n this.addBeam({ isMultiSpan: true });\n this.addBeamAngleRakecut(BUILDING_SIDE.LEFT);\n this.addBeamAngleRakecut(BUILDING_SIDE.RIGHT);\n this.addBeamStepRakecut();\n this.addGround();\n let offsetX = -(this.totalBaySize / 2) + this.postInfo.width / 2;\n let offsetXOrigin = -(this.totalBaySize / 2) + this.postInfo.width / 2;\n\n let idx = 0;\n this.addPost(offsetX, { isMultiSpan: false, left: true });\n this.addPost(offsetX, { isMultiSpan: true, left: true });\n\n this.APP.dialogEditBay.listBay.forEach((m) => {\n offsetX += m.value;\n if (idx === this.APP.dialogEditBay.listBay.length - 1) {\n offsetX -= this.postInfo.width;\n this.addPost(offsetX, { isMultiSpan: false, right: true });\n this.addPost(offsetX, { isMultiSpan: true, right: true });\n this.addPostAngleRakecut(offsetXOrigin, { left: true });\n this.addPostAngleRakecut(offsetX, { right: true });\n } else {\n this.addPost(offsetX - this.postInfo.width / 2, {\n isMultiSpan: false,\n });\n this.addPost(offsetX - this.postInfo.width / 2, {\n isMultiSpan: true,\n });\n }\n idx++;\n });\n\n this.addPostStepRakecut();\n this.addDownPipe();\n this.addDownPipeStepRakecut();\n this.showBeamOutline();\n this.updateUI();\n resolve();\n });\n }\n public showBeamOutline() {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.BEAM_OUTLINE\n )\n );\n\n if (!UI.beamLayoutShow) return;\n\n const objs = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n const meshes = [];\n objs.forEach((el) => {\n if (el.type == \"Group\") {\n meshes.push(\n ...el.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n }\n });\n\n for (let o of meshes) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n o as Mesh,\n 10\n );\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n\n var line = new LineSegments(\n outlineGeo,\n MaterialManager.Instance().BEAM_OUTLINE\n );\n line.userData = { type: GEOMETRY_TYPE.BEAM_OUTLINE };\n this.APP.scene.add(line);\n }\n }\n private addDownPipeStepRakecut() {\n if (\n UI.rakeCutLeftType != RAKECUT_TYPE.STEP &&\n UI.rakeCutRightType != RAKECUT_TYPE.STEP\n ) {\n return;\n }\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n let offsetX = -this.totalBaySize / 2 + 50;\n let offsetY =\n this.utils.getHeightByAngle(\n UI.height,\n UI.span + UI.multiSpan + UI.overhangFront - UI.rakeCutLeftVer,\n UI.patiosPitch,\n -1\n ) +\n this.geometryManager.getRoofBase().height -\n 30;\n let offsetZ =\n UI.span +\n UI.multiSpan +\n UI.overhangFront +\n 40 -\n UI.existingWidth1 / 2 -\n UI.rakeCutLeftVer;\n\n this.downpipeStepRakeCutGroupLeft.position.set(offsetX, 0, offsetZ);\n\n if (this.APP.sltGutterType.currentValue == 0) {\n offsetY -= 80;\n } else {\n offsetY -= 60;\n }\n\n let userData = { type: GEOMETRY_TYPE.DOWNPIPE };\n\n let scaleY = offsetY / this.geo_downPipe.height;\n\n let meshPipe = new Mesh(\n this.geo_downPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipe.userData = userData;\n meshPipe.scale.setY(scaleY);\n\n this.downpipeStepRakeCutGroupLeft.add(meshPipe);\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n let offsetX = this.totalBaySize / 2 - 50;\n let offsetY =\n this.utils.getHeightByAngle(\n UI.height,\n UI.span + UI.multiSpan + UI.overhangFront - UI.rakeCutRightVer,\n UI.patiosPitch,\n -1\n ) +\n this.geometryManager.getRoofBase().height -\n 30;\n let offsetZ =\n UI.span +\n UI.multiSpan +\n UI.overhangFront +\n 40 -\n UI.existingWidth1 / 2 -\n UI.rakeCutRightVer;\n\n this.downpipeStepRakeCutGroupRight.position.set(offsetX, 0, offsetZ);\n\n if (this.APP.sltGutterType.currentValue == 0) {\n offsetY -= 80;\n } else {\n offsetY -= 60;\n }\n\n let userData = { type: GEOMETRY_TYPE.DOWNPIPE };\n\n let scaleY = offsetY / this.geo_downPipe.height;\n\n let meshPipe = new Mesh(\n this.geo_downPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipe.userData = userData;\n meshPipe.scale.setY(scaleY);\n\n this.downpipeStepRakeCutGroupRight.add(meshPipe);\n }\n }\n private addDownPipe() {\n let offsetZ = UI.span + UI.multiSpan + 100 - UI.existingWidth1 / 2;\n let offsetX = -this.totalBaySize / 2 + 50;\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n offsetX = this.totalBaySize / 2 - 50;\n }\n\n //Rakecut\n //Downpipe will be in left\n if (UI.rakeCutLeftType != RAKECUT_TYPE.NONE) {\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n offsetX = -this.totalBaySize / 2 + this.beamLeftCutSizeInfo.l;\n } else if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n offsetX =\n -this.totalBaySize / 2 +\n UI.rakeCutLeftHor +\n EXISTING_BUILDING_CONFIG.FIT_FROM_CORNER_TO_CENTER_GUTTER;\n }\n }\n //Downpipe will be in right\n else {\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n offsetX = this.totalBaySize / 2 - this.beamRightCutSizeInfo.l;\n } else if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n offsetX =\n this.totalBaySize / 2 -\n UI.rakeCutRightHor -\n EXISTING_BUILDING_CONFIG.FIT_FROM_CORNER_TO_CENTER_GUTTER;\n }\n }\n\n let pipeLength =\n this.utils.getHeightByAngle(\n UI.height,\n UI.span + UI.multiSpan + UI.overhangFront,\n UI.patiosPitch,\n -1\n ) + this.geo_roofBase.height;\n\n this.downpipeGroup = this.utils.createDownpipeGroup(\n this.APP,\n this.downpipeGroup,\n this.geo_downPipe,\n this.geo_downPipeL,\n offsetX,\n 0,\n offsetZ,\n offsetZ,\n 0,\n UI.overhangFront,\n pipeLength,\n true\n );\n }\n private updateUI() {\n this.APP.sldMinHeight.setValue(_.round(this.frontPostHeight, 0));\n }\n public getSection(): Printing2DGeometry {\n let objs = this.scene.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_POST ||\n o.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET\n );\n\n objs = [...objs];\n\n let lsGeometries: Printing2DLine[] = [];\n\n for (let o of objs) {\n let box = new BoxHelper(o);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n //this.scene.add(box);\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: outlineGeo.vertices,\n views: o.userData.views,\n });\n\n // var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"OUTLINE\"};\n // //line.position.set(o.position.x - 5000, o.position.y, o.position.z);\n // this.scene.add( line );\n }\n let beamGroups = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n for (let g of beamGroups) {\n for (let c of g.children) {\n c.updateMatrix();\n\n let objCloned = c.clone();\n objCloned.applyMatrix4(new Matrix4().getInverse(c.matrix));\n\n let box = new BoxHelper(objCloned);\n\n c.updateWorldMatrix(true, true);\n\n box.geometry.applyMatrix4(c.matrixWorld);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n //this.APP.scene.add(box);\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n const planView = _.find(\n g.userData.views,\n (el) => el.viewType == ViewType.PLAN\n );\n const anotherViews = _.filter(\n g.userData.views,\n (el) => el.viewType != ViewType.PLAN\n );\n if (anotherViews.length > 0) {\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo.vertices,\n views: anotherViews,\n });\n }\n if (planView) {\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo.vertices\n .slice(0, 8)\n .filter((el, index) => [0, 1, 4, 5].includes(index)),\n views: [planView],\n });\n }\n }\n }\n\n return { lines: lsGeometries, texts: [] };\n }\n public simplifyGeo(geo: BufferGeometry): Geometry {\n let vertices = geo.getAttribute(\"position\").array;\n let lineGeo = new Geometry();\n for (let i = 0; i < vertices.length; i += 3) {\n lineGeo.vertices.push(\n new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2])\n );\n }\n\n //2-3\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n //3-7\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n //7-6\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n //6-2\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n\n //1-4\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n //4-8\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n //8-5\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n //5-1\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n\n return lineGeo;\n }\n private addGround() {\n let offsetX = -(this.totalBaySize / 2 + UI.overhangLeft);\n let offsetZ = -UI.existingWidth1 / 2;\n let width = this.totalBaySize + UI.overhangLeft + UI.overhangRight;\n let length =\n UI.span +\n UI.multiSpan +\n UI.overhangFront +\n this.APP.sldBackOverhang.currentValue;\n\n let base = new Mesh(\n this.geo_groundBase.geometry,\n MaterialManager.Instance().BASE\n );\n base.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GROUND_BASE,\n };\n base.position.set(offsetX, 0, offsetZ);\n base.scale.set(\n width / this.geo_groundBase.width,\n 1,\n length / this.geo_groundBase.length\n );\n\n this.scene.add(base);\n }\n public addPost(offsetX: number, userDataPos: any) {\n if (userDataPos.isMultiSpan && UI.multiSpan === 0) {\n return;\n }\n\n const _existingType = +this.APP.sltExistingType.currentValue;\n\n let _flag = false;\n if (userDataPos.left && UI.overhangLeft > 0) {\n _flag = true;\n } else if (userDataPos.right && UI.overhangRight > 0) {\n _flag = true;\n }\n\n if (!userDataPos.isMultiSpan && !_flag) {\n if (\n (_existingType === 1 || _existingType === 3) &&\n userDataPos.left &&\n UI.existingWidth1 >= UI.span\n ) {\n return;\n }\n if (\n (_existingType === 2 || _existingType === 3) &&\n userDataPos.right &&\n UI.existingWidth1 >= UI.span\n ) {\n return;\n }\n } else if (!_flag) {\n if (\n (_existingType === 1 || _existingType === 3) &&\n userDataPos.left &&\n UI.existingWidth1 >= UI.span + UI.multiSpan\n ) {\n return;\n }\n if (\n (_existingType === 2 || _existingType === 3) &&\n userDataPos.right &&\n UI.existingWidth1 >= UI.span + UI.multiSpan\n ) {\n return;\n }\n }\n let views: Print2DView[] = [];\n\n if (userDataPos.isMultiSpan) {\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else {\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n const mesh = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n let offsetZ = -UI.existingWidth1 / 2;\n if (userDataPos.isMultiSpan) {\n offsetZ += UI.span + UI.multiSpan - this.beamInfo.width / 2;\n } else {\n offsetZ += UI.span - (UI.multiSpan > 0 ? 0 : this.beamInfo.width / 2);\n }\n // offsetZ += this.geometryManager.EXISTING_WALL.EXISTING_WALL.width;\n let scaleY = 0;\n let length = 0;\n\n if (userDataPos.isMultiSpan) {\n length =\n UI.height - this.getHeightByRoofPitch(false) - this.beamInfo.height;\n scaleY = length / this.postInfo.height;\n } else {\n length =\n UI.height - this.getHeightByRoofPitch(true) - this.beamInfo.height;\n scaleY = length / this.postInfo.height;\n }\n this.frontPostHeight = length;\n // scaleY -= this.geometryManager.SUPERIOR_BEAM.S65x160.height;\n\n let exceedMoveBackLimit = false;\n\n //Rakecut\n if (\n UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE ||\n UI.rakeCutLeftType == RAKECUT_TYPE.STEP\n ) {\n //Move front post to back\n let moveToBack = false;\n if (UI.multiSpan > 0) {\n if (userDataPos.isMultiSpan && userDataPos.left) {\n moveToBack = true;\n }\n } else {\n if (!userDataPos.isMultiSpan && userDataPos.left) {\n moveToBack = true;\n }\n }\n\n if (moveToBack) {\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n offsetX -= UI.overhangLeft;\n offsetZ -= this.beamLeftCutSizeInfo.v + this.beamLeftCutSizeInfo.k_;\n let length =\n UI.span +\n UI.multiSpan -\n (this.beamLeftCutSizeInfo.v + this.beamLeftCutSizeInfo.k_);\n scaleY =\n this.utils.getHeightByAngle(\n UI.height - this.beamInfo.height,\n length,\n UI.patiosPitch,\n -1\n ) / this.postInfo.height;\n\n if (\n UI.rakeCutLeftVer + this.beamLeftCutSizeInfo.k_ >\n this.MANAGER.patiosLength\n ) {\n exceedMoveBackLimit = true;\n }\n } else if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n let moveBack = UI.rakeCutLeftVer;\n if (moveBack > 0) {\n offsetZ -= moveBack;\n let length = UI.span + UI.multiSpan - moveBack;\n scaleY =\n this.utils.getHeightByAngle(\n UI.height - this.beamInfo.height,\n length,\n UI.patiosPitch,\n -1\n ) / this.postInfo.height;\n }\n }\n }\n }\n if (\n UI.rakeCutRightType == RAKECUT_TYPE.ANGLE ||\n UI.rakeCutRightType == RAKECUT_TYPE.STEP\n ) {\n //Move front post to back\n let moveToBack = false;\n if (UI.multiSpan > 0) {\n if (userDataPos.isMultiSpan && userDataPos.right) {\n moveToBack = true;\n }\n } else {\n if (!userDataPos.isMultiSpan && userDataPos.right) {\n moveToBack = true;\n }\n }\n\n if (moveToBack) {\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n offsetX += UI.overhangRight;\n offsetZ -= this.beamRightCutSizeInfo.v + this.beamRightCutSizeInfo.k_;\n let length =\n UI.span +\n UI.multiSpan -\n (this.beamRightCutSizeInfo.v + this.beamRightCutSizeInfo.k_);\n scaleY =\n this.utils.getHeightByAngle(\n UI.height - this.beamInfo.height,\n length,\n UI.patiosPitch,\n -1\n ) / this.postInfo.height;\n\n if (\n UI.rakeCutRightVer + this.beamRightCutSizeInfo.k_ >\n this.MANAGER.patiosLength\n ) {\n exceedMoveBackLimit = true;\n }\n } else if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n let moveBack = UI.rakeCutRightVer;\n if (moveBack > 0) {\n offsetZ -= moveBack;\n let length = UI.span + UI.multiSpan - moveBack;\n scaleY =\n this.utils.getHeightByAngle(\n UI.height - this.beamInfo.height,\n length,\n UI.patiosPitch,\n -1\n ) / this.postInfo.height;\n }\n }\n }\n }\n //End rakecut\n\n //post can not go behind existing wall\n if (exceedMoveBackLimit) {\n return;\n }\n\n mesh.position.set(offsetX, 0, offsetZ);\n mesh.scale.setY(scaleY);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n this.scene.add(mesh);\n }\n public addPostAngleRakecut(offsetX: number, userDataPos: any) {\n if (\n UI.rakeCutLeftType != RAKECUT_TYPE.ANGLE &&\n UI.rakeCutRightType != RAKECUT_TYPE.ANGLE\n ) {\n return;\n }\n\n let height =\n UI.height - this.getHeightByRoofPitch(true) - this.beamInfo.height;\n let offsetZ =\n -UI.existingWidth1 / 2 + UI.span + UI.multiSpan - this.beamInfo.width / 2;\n\n let scaleY = height / this.postInfo.height;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n if (userDataPos.left) {\n let postLeft = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n postLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n postLeft.position.set(offsetX + this.beamLeftCutSizeInfo.l, 0, offsetZ);\n postLeft.scale.setY(scaleY);\n\n let isIntersect = false;\n let boxPost = new Box3().setFromObject(postLeft);\n this.scene.children\n .filter((el) => el.userData.type == GEOMETRY_TYPE.SUPERIOR_POST)\n .forEach((el) => {\n el.updateWorldMatrix(true, true);\n let boxEl = new Box3().setFromObject(el);\n if (boxPost.intersectsBox(boxEl)) {\n isIntersect = true;\n }\n });\n\n if (!isIntersect) {\n this.scene.add(postLeft);\n }\n }\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n if (userDataPos.right) {\n let postRight = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n postRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n postRight.position.set(\n offsetX - this.beamRightCutSizeInfo.l,\n 0,\n offsetZ\n );\n postRight.scale.setY(scaleY);\n\n let isIntersect = false;\n let boxPost = new Box3().setFromObject(postRight);\n this.scene.children\n .filter((el) => el.userData.type == GEOMETRY_TYPE.SUPERIOR_POST)\n .forEach((el) => {\n el.updateWorldMatrix(true, true);\n let boxEl = new Box3().setFromObject(el);\n if (boxPost.intersectsBox(boxEl)) {\n isIntersect = true;\n }\n });\n\n if (!isIntersect) {\n this.scene.add(postRight);\n }\n }\n }\n }\n private addPostStepRakecut() {\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n let userDataPos = { rakecut: true };\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n let offsetXL = -UI.totalBayLength / 2;\n let offsetZF =\n UI.span +\n UI.multiSpan -\n UI.existingWidth1 / 2 -\n this.postInfo.width / 2;\n\n let scaleYF =\n this.utils.getHeightByAngle(\n UI.height - this.beamInfo.height,\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n -1\n ) / this.postInfo.height;\n\n let scaleYB = scaleYF;\n let offsetZB = offsetZF;\n\n let moveRight = UI.rakeCutLeftHor - UI.overhangLeft;\n if (moveRight > 0) {\n offsetXL += moveRight;\n }\n\n let moveBack = UI.rakeCutLeftVer;\n if (moveBack > 0) {\n offsetZB -= moveBack;\n scaleYB =\n this.utils.getHeightByAngle(\n UI.height - this.beamInfo.height,\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n -1\n ) / this.postInfo.height;\n }\n\n let postFront = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n postFront.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n postFront.position.set(offsetXL + this.postInfo.width / 2, 0, offsetZF);\n postFront.scale.setY(scaleYF);\n this.scene.add(postFront);\n\n let postBack = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n postBack.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n postBack.position.set(offsetXL + this.postInfo.width / 2, 0, offsetZB);\n postBack.scale.setY(scaleYB);\n this.scene.add(postBack);\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n let offsetXR = UI.totalBayLength / 2 - this.postInfo.width;\n let offsetZF =\n UI.span +\n UI.multiSpan -\n UI.existingWidth1 / 2 -\n this.postInfo.width / 2;\n\n let scaleYF =\n this.utils.getHeightByAngle(\n UI.height - this.beamInfo.height,\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n -1\n ) / this.postInfo.height;\n\n let scaleYB = scaleYF;\n let offsetZB = offsetZF;\n\n let moveLeft = UI.rakeCutRightHor - UI.overhangRight;\n if (moveLeft > 0) {\n offsetXR -= moveLeft;\n }\n\n let moveBack = UI.rakeCutRightVer;\n if (moveBack > 0) {\n offsetZB -= moveBack;\n scaleYB =\n this.utils.getHeightByAngle(\n UI.height - this.beamInfo.height,\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n -1\n ) / this.postInfo.height;\n }\n\n let postFront = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n postFront.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n postFront.position.set(offsetXR + this.postInfo.width / 2, 0, offsetZF);\n postFront.scale.setY(scaleYF);\n this.scene.add(postFront);\n\n let postBack = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n postBack.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n postBack.position.set(offsetXR + this.postInfo.width / 2, 0, offsetZB);\n postBack.scale.setY(scaleYB);\n this.scene.add(postBack);\n }\n }\n public addBeam(userDataPos: any) {\n if (userDataPos.isMultiSpan && UI.multiSpan === 0) {\n return;\n }\n //const mesh = new Mesh(this.beamInfo.geometry, MaterialManager.Instance().BEAM);\n\n let offsetZ = -UI.existingWidth1 / 2;\n let offsetY = 0;\n let scaleX = this.roofWidth / this.beamInfo.length;\n let beamLength = this.roofWidth;\n\n if (userDataPos.isMultiSpan) {\n offsetY = UI.height - this.getHeightByRoofPitch(false);\n offsetZ += UI.span + UI.multiSpan - this.beamInfo.width / 2;\n } else {\n offsetY = UI.height - this.getHeightByRoofPitch(true);\n offsetZ += UI.span - (UI.multiSpan > 0 ? 0 : this.beamInfo.width / 2);\n }\n\n let offsetXL = -(this.totalBaySize / 2 + UI.overhangLeft);\n let offsetXR = this.totalBaySize / 2 + UI.overhangRight;\n\n let views: Print2DView[] = [];\n if (userDataPos.isMultiSpan) {\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else {\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n //Cutout - in case of multi span & apply only the back beam\n if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.enableCutout &&\n !userDataPos.isMultiSpan\n ) {\n if (UI.span <= UI.existingWidth1) {\n if (this.APP.sltExistingType.currentValue == 1) {\n offsetXL += this.APP.sldExistingLength2.currentValue;\n scaleX =\n (this.roofWidth - this.APP.sldExistingLength2.currentValue) /\n this.beamInfo.length;\n beamLength =\n this.roofWidth - this.APP.sldExistingLength2.currentValue;\n } else if (this.APP.sltExistingType.currentValue == 2) {\n offsetXR -= this.APP.sldExistingLength2.currentValue;\n scaleX =\n (this.roofWidth - this.APP.sldExistingLength2.currentValue) /\n this.beamInfo.length;\n beamLength =\n this.roofWidth - this.APP.sldExistingLength2.currentValue;\n } else if (this.APP.sltExistingType.currentValue == 3) {\n offsetXL += this.APP.sldExistingLength2.currentValue;\n offsetXR -= this.APP.sldExistingLength2.currentValue;\n scaleX =\n (this.roofWidth - this.APP.sldExistingLength2.currentValue * 2) /\n this.beamInfo.length;\n beamLength =\n this.roofWidth - this.APP.sldExistingLength2.currentValue * 2;\n }\n }\n }\n\n //rake cut - apply only the front beam\n if (UI.multiSpan <= 0 || (UI.multiSpan > 0 && userDataPos.isMultiSpan)) {\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n offsetXL += this.beamLeftCutSizeInfo.l;\n scaleX =\n (this.roofWidth - this.beamLeftCutSizeInfo.l) / this.beamInfo.length;\n beamLength -= this.beamLeftCutSizeInfo.l;\n } else if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n offsetXL += UI.rakeCutLeftHor;\n scaleX = (this.roofWidth - UI.rakeCutLeftHor) / this.beamInfo.length;\n beamLength -= UI.rakeCutLeftHor;\n }\n\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n offsetXR -= this.beamRightCutSizeInfo.l;\n scaleX =\n (this.roofWidth - this.beamRightCutSizeInfo.l) / this.beamInfo.length;\n beamLength -= this.beamRightCutSizeInfo.l;\n } else if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n offsetXR -= UI.rakeCutRightHor;\n scaleX = (this.roofWidth - UI.rakeCutRightHor) / this.beamInfo.length;\n beamLength -= UI.rakeCutRightHor;\n }\n }\n\n this.cutStandardBeamByCutBeamWithinBayControl(\n this.beamInfo,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetXL, offsetY, offsetZ),\n new Vector3(),\n views,\n 1,\n userDataPos,\n 0,\n \"x\",\n this.geoBeamJoint\n );\n }\n private cutStandardBeamByCutBeamWithinBayControl(\n beamGeo: GeometryInfo,\n beamCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n userDataPos: any,\n beamGeoTranslationZ: number,\n beamDirection: string,\n jointGeo: GeometryInfo\n ) {\n // Map list cut beam here\n const beamStartX = pos.x;\n const beamEndX = pos.x + length;\n\n let endOfBayX = -UI.totalBayLength / 2;\n let startCutBeamX = beamStartX;\n let endCutBeamX = beamStartX;\n\n const beams = this.utils.getListSeperateBeamsByBays(\n endOfBayX,\n beamStartX,\n beamEndX,\n endCutBeamX,\n startCutBeamX\n );\n\n for (let i = 0; i < beams.length; i++) {\n endCutBeamX = beams[i][1];\n startCutBeamX = beams[i][0];\n let beamGroup = this.utils.createBeamGroup2(\n beamGeo,\n beamCapGeo,\n endCutBeamX - startCutBeamX,\n new Vector3(startCutBeamX, pos.y, pos.z),\n rot,\n views,\n directionOffset,\n userDataPos,\n beamGeoTranslationZ,\n beamDirection,\n UI.beamLayoutShow,\n {\n hasStartCap: UI.beamType == 0 && i == 0,\n hasEndCap:\n UI.beamType == 0 &&\n (i == beams.length - 1 || (i == 0 && beams.length == 1)),\n hasStartJoint: i !== 0,\n hasEndJoint: false,\n jointGeo: jointGeo,\n }\n );\n this.scene.add(beamGroup);\n }\n }\n private addBeamAngleRakecut(cutSide: BUILDING_SIDE) {\n if (\n cutSide == BUILDING_SIDE.LEFT &&\n UI.rakeCutLeftType != RAKECUT_TYPE.ANGLE\n ) {\n return;\n }\n\n if (\n cutSide == BUILDING_SIDE.RIGHT &&\n UI.rakeCutRightType != RAKECUT_TYPE.ANGLE\n ) {\n return;\n }\n\n let beamSizeInfo = this.utils.getBeamRakeCutInfo(this.APP, cutSide);\n\n let offsetX = -this.totalBaySize / 2 - UI.overhangLeft + beamSizeInfo.l;\n let offsetZ = UI.span + UI.multiSpan - UI.existingWidth1 / 2;\n\n let offsetY = this.utils.getHeightByAngle(\n UI.height,\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n -1\n );\n let beamLength = beamSizeInfo.m;\n let scaleZ = beamLength / this.beamRakecutInfoLeft.length;\n\n //beam lenght can not go behind existing wall\n if (\n cutSide == BUILDING_SIDE.LEFT &&\n UI.rakeCutLeftVer + beamSizeInfo.k_ > this.MANAGER.patiosLength\n ) {\n beamLength -= beamSizeInfo.b;\n scaleZ = beamLength / this.beamRakecutInfoLeft.length;\n } else if (\n cutSide == BUILDING_SIDE.RIGHT &&\n UI.rakeCutRightVer + beamSizeInfo.k_ > this.MANAGER.patiosLength\n ) {\n beamLength -= beamSizeInfo.b;\n scaleZ = beamLength / this.beamRakecutInfoLeft.length;\n }\n\n let offsetXStart = 0;\n let offsetXEnd = beamLength;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n let rotYL = Math.atan(UI.rakeCutLeftHor / UI.rakeCutLeftVer);\n let rotYR = Math.atan(UI.rakeCutRightHor / UI.rakeCutRightVer);\n let rotX = this.utils.degreesToRadians(UI.patiosPitch);\n\n if (cutSide == BUILDING_SIDE.LEFT) {\n const mesh = new Mesh(\n this.beamRakecutInfoLeft.geometry,\n MaterialManager.Instance().BEAM\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n };\n mesh.scale.setZ(scaleZ);\n\n let capL = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capL.position.set(\n this.geo_beamEndCap.width / 2,\n 0,\n -(offsetXEnd + this.geo_beamEndCap.length / 2 - 2)\n );\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let capR = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capR.position.set(\n this.geo_beamEndCap.width / 2,\n 0,\n offsetXStart - this.geo_beamEndCap.length / 2 + 2\n );\n capR.rotateY(Math.PI);\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n angle: true,\n };\n beamGroup.position.set(offsetX, offsetY, offsetZ);\n beamGroup.rotation.set(0, rotYL, 0);\n beamGroup.updateMatrixWorld();\n let matrix = beamGroup.matrixWorld;\n\n if (beamLength > 8000) {\n this.addPostForBeamAngelRakecut(cutSide, matrix);\n }\n\n beamGroup.rotation.set(rotX, rotYL, 0);\n if (UI.beamType == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n\n this.scene.add(beamGroup);\n }\n if (cutSide == BUILDING_SIDE.RIGHT) {\n offsetX = this.totalBaySize / 2 + UI.overhangRight - beamSizeInfo.l;\n const mesh = new Mesh(\n this.beamRakecutInfoRight.geometry,\n MaterialManager.Instance().BEAM\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n };\n mesh.scale.setZ(scaleZ);\n\n let capL = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capL.position.set(\n -this.geo_beamEndCap.width / 2,\n 0,\n -(offsetXEnd + this.geo_beamEndCap.length / 2 - 2)\n );\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let capR = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capR.position.set(\n -this.geo_beamEndCap.width / 2,\n 0,\n offsetXStart - this.geo_beamEndCap.length / 2 + 2\n );\n capR.rotateY(Math.PI);\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n angle: true,\n };\n beamGroup.position.set(offsetX, offsetY, offsetZ);\n beamGroup.rotation.set(0, -rotYR, 0);\n beamGroup.updateMatrixWorld();\n let matrix = beamGroup.matrixWorld;\n if (beamLength > 8000) {\n this.addPostForBeamAngelRakecut(cutSide, matrix);\n }\n\n beamGroup.rotation.set(rotX, -rotYR, 0);\n if (UI.beamType == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n this.scene.add(beamGroup);\n }\n }\n private addBeamStepRakecut() {\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n let offsetXL = -UI.totalBayLength / 2 - UI.overhangLeft;\n let offsetZ = UI.span + UI.multiSpan - UI.existingWidth1 / 2;\n let offsetY = this.utils.getHeightByAngle(\n UI.height,\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n -1\n );\n\n let moveBack = UI.rakeCutLeftVer;\n if (moveBack > 0) {\n offsetZ -= moveBack;\n offsetY = this.utils.getHeightByAngle(\n UI.height,\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n -1\n );\n }\n\n let beamLength = UI.rakeCutLeftHor + this.postInfo.width;\n if (UI.rakeCutLeftHor < UI.overhangLeft) {\n beamLength = UI.overhangLeft + this.postInfo.width;\n }\n\n let beamGroup;\n\n if (UI.beamType == 0) {\n beamGroup = this.utils.createBeamGroup2(\n this.geo_beamStepRakecutLeft,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetXL, offsetY, offsetZ),\n new Vector3(),\n views,\n 1,\n null,\n -this.geo_beamEndCap.width / 2,\n \"x\",\n false,\n {\n hasStartCap: UI.beamType == 0,\n hasEndCap: UI.beamType == 0,\n hasStartJoint: false,\n hasEndJoint: false,\n jointGeo: null,\n }\n );\n } else {\n beamGroup = this.utils.createBeamGroup2(\n this.geo_beamStepRakecutLeft,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetXL, offsetY, offsetZ),\n new Vector3(),\n views,\n 1,\n null,\n -this.geo_beamEndCap.width / 2,\n \"x\",\n false,\n {\n hasStartCap: UI.beamType == 0,\n hasEndCap: UI.beamType == 0,\n hasStartJoint: false,\n hasEndJoint: false,\n jointGeo: null,\n }\n );\n }\n\n this.scene.add(beamGroup);\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n let offsetXR = UI.totalBayLength / 2 + UI.overhangRight;\n let offsetZ = UI.span + UI.multiSpan - UI.existingWidth1 / 2;\n let offsetY = this.utils.getHeightByAngle(\n UI.height,\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n -1\n );\n\n let moveBack = UI.rakeCutRightVer;\n if (moveBack > 0) {\n offsetZ -= moveBack;\n offsetY = this.utils.getHeightByAngle(\n UI.height,\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n -1\n );\n }\n let beamLength = UI.rakeCutRightHor + this.postInfo.width;\n if (UI.rakeCutRightHor < UI.overhangRight) {\n beamLength = UI.overhangRight + this.postInfo.width;\n }\n\n let beamGroup;\n\n if (UI.beamType == 0) {\n beamGroup = this.utils.createBeamGroup2(\n this.geo_beamStepRakecutRight,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetXR, offsetY, offsetZ),\n new Vector3(),\n views,\n -1,\n null,\n -this.geo_beamEndCap.width / 2,\n \"x\",\n false,\n {\n hasStartCap: UI.beamType == 0,\n hasEndCap: UI.beamType == 0,\n hasStartJoint: false,\n hasEndJoint: false,\n jointGeo: null,\n }\n );\n } else {\n beamGroup = this.utils.createBeamGroup2(\n this.geo_beamStepRakecutRight,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetXR, offsetY, offsetZ),\n new Vector3(),\n views,\n -1,\n null,\n -this.geo_beamEndCap.width / 2,\n \"x\",\n false,\n {\n hasStartCap: UI.beamType == 0,\n hasEndCap: UI.beamType == 0,\n hasStartJoint: false,\n hasEndJoint: false,\n jointGeo: null,\n }\n );\n }\n\n this.scene.add(beamGroup);\n }\n }\n private addPostForBeamAngelRakecut(\n cutSide: BUILDING_SIDE,\n beamMatrix: Matrix4\n ) {\n let inf = this.utils.getBeamRakeCutInfo(this.APP, cutSide);\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n if (cutSide == BUILDING_SIDE.LEFT) {\n let p1 = new Vector3(\n -UI.totalBayLength / 2 - UI.overhangLeft,\n 2500,\n -UI.existingWidth1 / 2 + UI.span + UI.multiSpan\n );\n let p2 = new Vector3().addVectors(\n p1,\n new Vector3(0, 0, -1).multiplyScalar(inf.j)\n );\n let p3 = new Vector3().addVectors(\n p1,\n new Vector3(1, 0, 0).multiplyScalar(inf.l)\n );\n let angle = Math.atan(UI.rakeCutLeftHor / UI.rakeCutLeftVer);\n\n let ver = (Math.cos(angle) * inf.m) / 2;\n let pMid = new Vector3().addVectors(\n p2,\n new Vector3(0, 0, 1).multiplyScalar(ver)\n );\n let pOri = new Vector3(\n -UI.totalBayLength / 2 + UI.overhangLeft,\n 2500,\n -UI.existingWidth1 / 2\n );\n\n let dir = new Vector3().subVectors(p2, p3).normalize();\n let pMid2 = new Vector3().addVectors(p3, dir.multiplyScalar(inf.m / 2));\n\n let length = new Vector3().subVectors(pMid, pOri).length();\n let height = this.utils.getHeightByAngle(\n UI.height - this.beamInfo.height,\n length,\n UI.patiosPitch,\n -1\n );\n\n let scaleY = height / this.postInfo.height;\n\n let postLeft = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n postLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: { rakecut: true },\n views: views,\n };\n postLeft.position.set(pMid2.x, 0, pMid2.z);\n postLeft.scale.setY(scaleY);\n this.scene.add(postLeft);\n }\n if (cutSide == BUILDING_SIDE.RIGHT) {\n let p1 = new Vector3(\n UI.totalBayLength / 2 + UI.overhangRight,\n 2500,\n -UI.existingWidth1 / 2 + UI.span + UI.multiSpan\n );\n let p2 = new Vector3().addVectors(\n p1,\n new Vector3(0, 0, -1).multiplyScalar(inf.j)\n );\n let p3 = new Vector3().addVectors(\n p1,\n new Vector3(-1, 0, 0).multiplyScalar(inf.l)\n );\n let angle = Math.atan(UI.rakeCutRightHor / UI.rakeCutRightVer);\n\n let ver = (Math.cos(angle) * inf.m) / 2;\n let pMid = new Vector3().addVectors(\n p2,\n new Vector3(0, 0, 1).multiplyScalar(ver)\n );\n let pOri = new Vector3(\n UI.totalBayLength / 2 + UI.overhangRight,\n 2500,\n -UI.existingWidth1 / 2\n );\n\n let dir = new Vector3().subVectors(p2, p3).normalize();\n let pMid2 = new Vector3().addVectors(p3, dir.multiplyScalar(inf.m / 2));\n\n let length = new Vector3().subVectors(pMid, pOri).length();\n let height = this.utils.getHeightByAngle(\n UI.height - this.beamInfo.height,\n length,\n UI.patiosPitch,\n -1\n );\n\n let scaleY = height / this.postInfo.height;\n\n let postRight = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n postRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: { rakecut: true },\n views: views,\n };\n postRight.position.set(pMid2.x, 0, pMid2.z);\n postRight.scale.setY(scaleY);\n this.scene.add(postRight);\n }\n }\n private getHeightByRoofPitch(isSpan: boolean): number {\n if (isSpan) {\n return this.utils.tan(UI.patiosPitch) * UI.span;\n } else {\n return this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan);\n }\n }\n}\n","import { Mesh, Vector3, Material, Plane, Geometry, BufferGeometry, Group, BoxBufferGeometry, MeshLambertMaterial, BoxHelper, Matrix4, PlaneHelper, Points, PointsMaterial, Color, PlaneBufferGeometry, DoubleSide, Object3D, LineSegments, Line3, Line } from 'three';\nimport { Util } from '../utils';\nimport { CONFIG as env, GEOMETRY_TYPE, GEOMETRY_CATEGORY } from '../../app.config';\nimport { BUILDING_SIDE, CUTOUT_ENABLE, EXISTING_BUILDING_CONFIG as CONST, EXISTING_BUILDING_CONFIG, PANEL_DIRECTION, RAKECUT_TYPE } from '../../app.constants';\nimport { HomeComponent as AppComponent } from '../../containers/home/home.component';\nimport { GeometryManager } from '../geometry.manager';\nimport { MaterialManager } from '../material.manager';\nimport { GeometryInfo, Printing2DGeometry, Printing2DLine, Print2DView, ViewType, LineType } from '../models';\nimport { ExistingBuildingManager } from '.';\nimport { CSG } from 'three-csg-ts';\nimport HighLightBox from 'src/app/models/HighlightBox';\nimport { UI } from '../ui';\nimport SelectionManager from '../selection.manager';\nimport { BufferGeometryUtils } from 'three/examples/jsm/utils/BufferGeometryUtils'\nimport _ from 'lodash'\nimport { distance } from 'mathjs';\n\nexport class RoofManager {\n private scene: Group;\n private APP: AppComponent;\n private MANAGER: ExistingBuildingManager;\n private material: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private roofInfo: GeometryInfo;\n private roofBaseInfo: GeometryInfo;\n private bargeLeftInfo: GeometryInfo;\n private bargeRightInfo: GeometryInfo;\n private receiverCutoutLeftHor: GeometryInfo;\n private receiverCutoutRightHor: GeometryInfo;\n private receiverCutoutRightVer: GeometryInfo;\n private receiverCutoutRightVer2: GeometryInfo;\n private receiverCutoutLeftVer: GeometryInfo;\n private receiverCutoutLeftVer2: GeometryInfo;\n private gutterInfo: GeometryInfo;\n private gutterRakecutLeftInfo: GeometryInfo;\n private gutterRakecutRightInfo: GeometryInfo;\n //private flashingInfo: GeometryInfo;\n private geo_receiverChanel: GeometryInfo;\n private zFlashingGeo: GeometryInfo;\n private zFlashingRakecutRightGeo: GeometryInfo;\n private geo_gutterCap: GeometryInfo;\n private roofGroup: Group;\n\n private eventHandleId: any;\n\n // Var\n private roofLengthPlus: number;\n private roofWidth: number;\n private roofLength: number;\n private totalBaySize: number;\n\n private objectSizeChangedHandle: any;\n\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n\n private mesh_CutoutLeft: Mesh;\n private csg_cutoutLeft: CSG;\n private mesh_CutoutRight: Mesh;\n private csg_cutoutRight: CSG;\n private geo_cutoutLeft: BoxBufferGeometry;\n private geo_cutoutRight: BoxBufferGeometry;\n\n private geo_rakecutLeft: BoxBufferGeometry;\n private geo_rakecutRight: BoxBufferGeometry;\n private mesh_rakecutLeft: Mesh;\n private mesh_rakecutRight: Mesh;\n private csg_rakecutLeft: CSG;\n private csg_rakecutRight: CSG;\n\n private geoCutGutter: BoxBufferGeometry;\n private meshCutGutterLeft1: Mesh;\n private csgCutGutterLeft1: CSG;\n private meshCutGutterLeft2: Mesh;\n private csgCutGutterLeft2: CSG;\n\n private meshCutGutterRight1: Mesh;\n private csgCutGutterRight1: CSG;\n private meshCutGutterRight2: Mesh;\n private csgCutGutterRight2: CSG;\n\n private enableCutout: boolean;\n private deferHandle;\n private deferTimeout = EXISTING_BUILDING_CONFIG.CUTOUT_DEFFER_TIME_OUT;\n\n\n constructor(app: AppComponent, existingManager: ExistingBuildingManager) {\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.APP = app;\n this.MANAGER = existingManager;\n this.scene = new Group();\n existingManager.patiosGroup.add(this.scene)\n this.material = MaterialManager.Instance().ROOF;\n this.registerEvent();\n }\n\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n this.roofInfo = this.geometryManager.getRoofSheetPanel();\n this.roofInfo.geometry\n .translate(this.roofInfo.width / 2, -1, this.roofInfo.length / 2);\n\n this.roofBaseInfo = this.geometryManager.getRoofBase();\n this.roofBaseInfo.geometry\n .translate(this.roofBaseInfo.width / 2, this.roofBaseInfo.height / 2, this.roofBaseInfo.length / 2);\n\n this.zFlashingGeo = this.geometryManager.getZFlashing();\n this.zFlashingRakecutRightGeo = this.geometryManager.getZFlashing();\n this.zFlashingRakecutRightGeo.geometry.translate(-this.zFlashingRakecutRightGeo.length, 0, 0);\n\n // Barge capping - left\n this.bargeLeftInfo = this.geometryManager.getBarge();\n this.bargeLeftInfo.geometry\n .rotateY(Math.PI)\n .translate(this.bargeLeftInfo.width / 2 - 3, this.bargeLeftInfo.height / 2 - (this.APP.sltDripBarge.currentValue ? 9 : 1), this.bargeLeftInfo.length / 2);\n\n // Barge capping - right\n this.bargeRightInfo = this.geometryManager.getBarge();\n this.bargeRightInfo.geometry\n .translate(-this.bargeLeftInfo.width / 2 + 3, this.bargeLeftInfo.height / 2 - (this.APP.sltDripBarge.currentValue ? 9 : 1), this.bargeLeftInfo.length / 2);\n\n //Barge cutout left\n this.receiverCutoutLeftHor = this.geometryManager.getReceiverChannel();\n this.receiverCutoutLeftHor.geometry\n .rotateY(Math.PI / 2)\n .translate(-this.receiverCutoutLeftHor.length / 2, this.receiverCutoutLeftHor.height / 2, this.receiverCutoutLeftHor.width / 2);\n\n //Barge cutout right\n this.receiverCutoutRightHor = this.geometryManager.getReceiverChannel();\n this.receiverCutoutRightHor.geometry\n .rotateY(Math.PI / 2)\n .translate(this.receiverCutoutRightHor.length / 2, this.receiverCutoutRightHor.height / 2, this.receiverCutoutRightHor.width / 2);\n\n \n //Vertical Barge cutout left 2\n this.receiverCutoutLeftVer2 = this.geometryManager.getReceiverChannel();\n this.receiverCutoutLeftVer2.geometry\n .rotateY(Math.PI)\n .translate(this.receiverCutoutLeftVer2.width / 2, this.receiverCutoutLeftVer2.height / 2, this.receiverCutoutLeftVer2.length / 2);\n\n //Vertical cutout right 2\n this.receiverCutoutRightVer2 = this.geometryManager.getReceiverChannel();\n this.receiverCutoutRightVer2.geometry\n .translate(-this.receiverCutoutRightVer2.width / 2, this.receiverCutoutRightVer2.height / 2, this.receiverCutoutRightVer2.length / 2);\n\n //Vertical Barge cutout left\n this.receiverCutoutLeftVer = this.geometryManager.getReceiverChannel();\n this.receiverCutoutLeftVer.geometry\n .rotateY(Math.PI)\n .translate(this.receiverCutoutLeftVer.width / 2, this.receiverCutoutLeftVer.height / 2, this.receiverCutoutLeftVer.length / 2);\n\n //Vertical cutout right\n this.receiverCutoutRightVer = this.geometryManager.getReceiverChannel();\n this.receiverCutoutRightVer.geometry\n .translate(-this.receiverCutoutRightVer.width / 2, this.receiverCutoutRightVer.height / 2, this.receiverCutoutRightVer.length / 2);\n\n //Receiver chanel - barge caping back\n this.geo_receiverChanel = this.geometryManager.getReceiverChannel();\n this.geo_receiverChanel.geometry\n .rotateY(Math.PI / 2)\n .translate(this.geo_receiverChanel.length / 2, this.geo_receiverChanel.height / 2 + 2, this.geo_receiverChanel.width / 2);\n\n // Gutter\n let gtExtraOffsetY = 0;\n if (this.APP.sltGutterType.currentValue == 1 || this.APP.sltGutterType.currentValue == 2) {\n gtExtraOffsetY = 20;\n }\n\n this.gutterInfo = this.geometryManager.getGutter();\n this.gutterInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.gutterInfo.length / 2, -20, this.gutterInfo.width / 2);\n\n this.gutterRakecutLeftInfo = this.geometryManager.getGutter();\n this.gutterRakecutLeftInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.gutterRakecutLeftInfo.length / 2, -20, this.gutterRakecutLeftInfo.width / 2);\n\n this.gutterRakecutRightInfo = this.geometryManager.getGutter();\n this.gutterRakecutRightInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(-this.gutterRakecutRightInfo.length / 2, -20, this.gutterRakecutRightInfo.width / 2);\n\n //Gutter cap\n this.geo_gutterCap = this.geometryManager.getGuterEndCap();\n this.geo_gutterCap.geometry\n .rotateY(-Math.PI / 2)\n .translate(0, -20, this.geo_gutterCap.length / 2);\n\n this.geo_cutoutLeft = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_cutoutLeft.translate(-500, 0, -500);\n\n this.geo_cutoutRight = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_cutoutRight.translate(500, 0, -500);\n\n this.geo_rakecutLeft = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_rakecutLeft.translate(-500, 500, 500);\n this.geo_rakecutRight = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_rakecutRight.translate(500, 500, 500);\n\n this.geoCutGutter = new BoxBufferGeometry(500, 10000, 500);\n this.geoCutGutter.translate(0, 0, -250);\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(...this.scene.children.filter(x => x.userData.type === GEOMETRY_TYPE.ROOF_PANEL \n || x.userData.type === GEOMETRY_TYPE.ROOF_PANEL_BASE\n || x.userData.type === GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING\n || x.userData.type === GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n || x.userData.type === GEOMETRY_TYPE.GUTTER_PATIOS\n || x.userData.type === GEOMETRY_TYPE.ROOF_PATIOS\n || x.userData.type === GEOMETRY_TYPE.HIGHLIGHT_BOX));\n\n // this.scene.remove(...this.scene.children.filter(x => x.userData.type === GEOMETRY_TYPE.ROOF_PANEL_BASE));\n // this.scene.remove(...this.scene.children.filter(x => x.userData.type === this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING));\n // this.scene.remove(...this.scene.children.filter(x => x.userData.type === GEOMETRY_TYPE.GUTTER_PATIOS));\n // this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PATIOS));\n // this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PATIOS));\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.SHEET_OUTLINE));\n\n //test\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == 'HELPER'));\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == 'RAKECUT'));\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == 'CUTGUTTER'));\n\n //this.scene.remove(...this.scene.children.filter(x => x.userData.type === 'ROOF_OUTLINE'));\n\n this.totalBaySize = this.APP.dialogEditBay.totalBaySize;\n this.roofLength = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue;\n const _roofLength = Math.pow(this.roofLength, 2) + Math.pow(this.getHeightByRoofPitch({ isMultiSpan: true }), 2);\n this.roofLengthPlus = Math.sqrt(_roofLength);\n this.roofWidth = this.totalBaySize + this.APP.sldLeftOverhang.currentValue + this.APP.sldRightOverhang.currentValue;\n\n \n\n this.addRoofGroup();\n this.addCutout();\n if(UI.rakeCutLeftType == 0){\n new HighLightBox(this.roofGroup, {\n min: {\n x: -(UI.totalBayLength / 2 + UI.overhangLeft), \n y: 0, \n z: UI.span + UI.multiSpan + UI.overhangFront, \n },\n max: {\n x: -(UI.totalBayLength / 2 + UI.overhangLeft) + 300, \n y: 0, \n z: UI.span + UI.multiSpan + UI.overhangFront - 300,\n },\n userData: { side: BUILDING_SIDE.LEFT }\n })\n }\n if(UI.rakeCutRightType == 0){\n new HighLightBox(this.roofGroup, {\n min: {\n x: UI.totalBayLength / 2 + UI.overhangRight - 300, \n y: 0, \n z: UI.span + UI.multiSpan + UI.overhangFront, \n },\n max: {\n x: UI.totalBayLength / 2 + UI.overhangRight,\n y: 0,\n z: UI.span + UI.multiSpan + UI.overhangFront - 300,\n },\n userData: { side: BUILDING_SIDE.RIGHT }\n })\n }\n\n //Add angle rakecut\n if(this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE){\n this.addAngleRakeCut(BUILDING_SIDE.LEFT);\n }\n if(this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE){\n this.addAngleRakeCut(BUILDING_SIDE.RIGHT);\n }\n\n //Add step rakecut\n if(this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP){\n this.addStepRakecut(BUILDING_SIDE.LEFT);\n }\n if(this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP){\n this.addStepRakecut(BUILDING_SIDE.RIGHT);\n }\n \n\n let offsetXL = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n let offsetXR = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue + this.MANAGER.patiosGroup.position.x;\n\n let roofPanelCount = Math.ceil(this.roofWidth / this.roofInfo.width);\n this.enableCutout = this.MANAGER.cutoutCondition;\n\n //clipping plane\n let offsetLeft = this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue - this.MANAGER.patiosGroup.position.x;\n let clipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n const clipingPlane = new Plane(new Vector3(-1, 0, 0), offsetXR);\n this.material.clippingPlanes = [clipingPlaneLeft, clipingPlane];\n MaterialManager.Instance().ROOF_BASE.clippingPlanes = [clipingPlaneLeft, clipingPlane];\n\n //panel direction\n let panelDirectionOfset = 1;\n if(this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT){\n offsetXL = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue - this.roofInfo.width;\n panelDirectionOfset = -1;\n }\n else if(this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.LEFT_TO_RIGHT){\n offsetXL = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n }\n\n if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT && this.enableCutout) {\n let totalPanelLength = 0;\n let cuted = true;\n for (let index = 0; index < roofPanelCount; index++) {\n totalPanelLength += this.roofInfo.width;\n let isOver = totalPanelLength < this.APP.sldExistingLength2.currentValue;\n\n this.addRoofBase(offsetXL, [this.csg_cutoutLeft] );\n this.addRoof(offsetXL, [this.csg_cutoutLeft]);\n cuted = isOver;\n\n offsetXL += this.roofInfo.width * panelDirectionOfset;\n }\n }\n else if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT && this.enableCutout) {\n let totalPanelLength = 0;\n let cuted = false;\n for (let index = 0; index < roofPanelCount; index++) {\n totalPanelLength += this.roofInfo.width;\n let isOver = totalPanelLength >= this.roofWidth - this.APP.sldExistingLength2.currentValue + this.roofInfo.width;\n cuted = totalPanelLength >= this.roofWidth - this.APP.sldExistingLength2.currentValue && !isOver;\n this.addRoofBase(offsetXL, [this.csg_cutoutRight] );\n this.addRoof(offsetXL, [this.csg_cutoutRight] );\n\n offsetXL += this.roofInfo.width * panelDirectionOfset;\n }\n }\n else if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH && this.enableCutout) {\n let totalPanelLength = 0;\n let cuted = false;\n let cuted2 = false;\n for (let index = 0; index < roofPanelCount; index++) {\n totalPanelLength += this.roofInfo.width;\n let isOver = totalPanelLength < this.APP.sldExistingLength2.currentValue;\n let isOver2 = totalPanelLength >= this.roofWidth - this.APP.sldExistingLength2.currentValue + this.roofInfo.width;\n let flag = totalPanelLength >= this.roofWidth - this.APP.sldExistingLength2.currentValue;\n\n //cuted2 = totalPanelLength >= this.APP.sldExistingLength2.currentValue + this.roofWidth && !isOver;\n\n // if (!cuted && !isOver) {\n // this.addRoofBase(offsetXL, true, isOver || isOver2, this.csg_cutoutLeft);\n // this.addRoof(offsetXL, true, isOver || isOver2, this.csg_cutoutLeft);\n // cuted = true;\n // }\n // else if (!cuted2 && flag) {\n // this.addRoofBase(offsetXL, true, isOver || isOver2, this.csg_cutoutRight);\n // this.addRoof(offsetXL, true, isOver || isOver2, this.csg_cutoutRight);\n // cuted2 = true;\n // }\n // else {\n // this.addRoofBase(offsetXL, false, isOver || isOver2, null);\n // this.addRoof(offsetXL, false, isOver || isOver2, null);\n // }\n\n this.addRoofBase(offsetXL, [this.csg_cutoutLeft, this.csg_cutoutRight]);\n this.addRoof(offsetXL, [this.csg_cutoutLeft, this.csg_cutoutRight]);\n\n offsetXL += this.roofInfo.width * panelDirectionOfset;\n }\n }\n else {\n //clipping plane\n // const clipingPlane = new Plane(new Vector3(-1, 0, 0), offsetXR); // (this.APP.sldBaySize.currentValue / 2) + this.APP.sldRightOverhang.currentValue );\n // this.material.clippingPlanes = [clipingPlane];\n // MaterialManager.Instance().ROOF_BASE.clippingPlanes = [clipingPlane];\n\n for (let index = 0; index < roofPanelCount; index++) {\n this.addRoofBase(offsetXL, []);\n this.addRoof(offsetXL, []);\n\n offsetXL += this.roofInfo.width * panelDirectionOfset;\n }\n }\n\n\n this.addZFlashing();\n this.addZFlashingAngleRakeCut();\n this.addZFlashingStepRakeCut();\n this.addBarge();\n this.addBargeStepRakecut();\n this.addGutter();\n this.addGutterAngelRakecut();\n this.addGutterStepRakecut();\n this.showPanelOutline();\n\n this.scene.visible = UI.showRoof\n\n //this.getOutLines();\n resolve();\n });\n }\n private addCutout() {\n if (this.APP.sltCutOut.currentValue == 1) {\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == 'CUTOUT'));\n\n let offsetX = this.APP.sldExistingLength.currentValue / 2;\n let offsetY = 0;\n let offsetZ = this.APP.sldExistingWidth1.currentValue / 2;\n\n let scaleX = (this.APP.sldExistingLength2.currentValue + 5000) / 1000;\n if (scaleX == 0) scaleX = 1;\n let scaleY = (this.APP.sldExistingWallHeight.currentValue + 5000) / 1000;\n let scaleZ = (this.APP.sldExistingWidth1.currentValue + 5000) / 1000;\n if (scaleZ == 0) scaleZ = 1;\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT || this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n this.mesh_CutoutLeft = new Mesh(this.geo_cutoutLeft, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.mesh_CutoutLeft.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: 'CUTOUT' };\n\n this.mesh_CutoutLeft.position.set(-offsetX, offsetY, offsetZ);\n this.mesh_CutoutLeft.scale.set(scaleX, scaleY, scaleZ);\n\n //this.APP.scene.add(this.mesh_CutoutLeft);\n\n this.mesh_CutoutLeft.updateMatrix();\n this.csg_cutoutLeft = CSG.fromMesh(this.mesh_CutoutLeft);\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT || this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n this.mesh_CutoutRight = new Mesh(this.geo_cutoutRight, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.mesh_CutoutRight.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: 'CUTOUT' };\n\n this.mesh_CutoutRight.position.set(offsetX, offsetY, offsetZ);\n this.mesh_CutoutRight.scale.set(scaleX, scaleY, scaleZ);\n\n //this.APP.scene.add(this.mesh_CutoutRight);\n\n this.mesh_CutoutRight.updateMatrix();\n this.csg_cutoutRight = CSG.fromMesh(this.mesh_CutoutRight);\n }\n }\n }\n \n public addRoofGroup() {\n this.roofGroup = null;\n this.roofGroup = new Group();\n this.roofGroup.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PATIOS };\n\n //let offsetX = -this.APP.sldLeftOverhang.currentValue;\n let offsetY = this.APP.sldBuildingHeight.currentValue;\n let offsetZ = -this.APP.sldExistingWidth1.currentValue / 2;\n\n this.roofGroup.position.set(0, offsetY, offsetZ);\n this.roofGroup.rotation.set(this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue), 0, 0);\n\n this.scene.add(this.roofGroup);\n }\n public getOutLines(): Printing2DGeometry {\n\n let objs = this.roofGroup.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL\n || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n );\n\n let gutterGroupObjs = this.roofGroup.children.filter(o => o.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS);\n let gutterObjs: Object3D[] = [];\n for(let group of gutterGroupObjs){\n gutterObjs.push(...group.children);\n }\n\n objs = [...objs, ...gutterObjs];\n\n let lsGeometries: Printing2DLine[] = [];\n\n let offsetLeft = this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue - this.MANAGER.patiosGroup.position.x;\n let offsetRight = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue + this.MANAGER.patiosGroup.position.x;\n let roofClipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let roofClipingPlane = new Plane(new Vector3(-1, 0, 0), offsetRight);\n\n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale((o as Mesh), 60);\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n outlineGeo.translate(0, 5000, 0);\n\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE) {\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlane);\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n }\n\n\n //var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n //line.userData = {type: \"ROOF_OUTLINE\"};\n //this.APP.scene.add( line );\n\n let simplifiedGeo = this.simplifyGeo(outlineGeo);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: simplifiedGeo.vertices,\n views: o.userData.views\n });\n\n // var line = new LineSegments( simplifiedGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"SHEETING_OUTLINE\"};\n // this.APP.scene.add( line );\n }\n\n lsGeometries.push({\n objectType: GEOMETRY_TYPE.ROOF_COVER,\n vertices: this.makeRoofPolygon(),\n color: this.utils.convertHexColorToRgb(`#${new Color(UI.panelColor).getHexString()}`),\n views: [\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ]\n });\n\n return { lines: lsGeometries, texts: [] };\n }\n\n makeRoofPolygon() {\n const polygon = this.utils.getRoofCoverPolygonForLRRoof()\n this.roofGroup.updateWorldMatrix(true, true)\n return polygon.map(el => (el as Vector3).applyMatrix4(this.roofGroup.matrixWorld))\n }\n public showPanelOutline(){\n if(this.APP.sltPanelDirectionShow.currentValue == false)\n return;\n\n let objs = this.roofGroup.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n );\n\n let offsetLeft = this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue - this.MANAGER.patiosGroup.position.x;\n let offsetRight = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue + this.MANAGER.patiosGroup.position.x;\n let roofClipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let roofClipingPlaneRight = new Plane(new Vector3(-1, 0, 0), offsetRight);\n \n\n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale((o as Mesh), 60);\n\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n //outlineGeo.translate(0, 5000, 0);\n\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE) {\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneRight);\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n }\n\n var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n line.userData = {type: GEOMETRY_TYPE.SHEET_OUTLINE};\n this.APP.scene.add( line );\n }\n}\n public simplifyGeo(geo: BufferGeometry): Geometry {\n let simplifiedGeo = new Geometry();\n let vertices = geo.getAttribute('position').array;\n for (let i = 0; i < vertices.length; i += 3) {\n simplifiedGeo.vertices.push(new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2]));\n }\n return simplifiedGeo;\n }\n public addRoof(offsetX: number, csgObjs: CSG[]) {\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n const mesh: Mesh = new Mesh(this.roofInfo.geometry, MaterialManager.Instance().ROOF);\n\n let offsetSheet = 0;\n if (this.APP.sltRoofSheetingType.currentValue == 0 || this.APP.sltRoofSheetingType.currentValue == 1) {\n offsetSheet = 13;\n }\n else {\n offsetSheet = 5;\n }\n\n let scaleZ = this.roofLengthPlus / this.roofInfo.length;\n const offsetY = this.roofBaseInfo.height - offsetSheet//this.APP.sldBuildingHeight.currentValue + this.roofBaseInfo.height - offsetSheet;\n let offsetZ = 0;//(-this.APP.sldExistingWidth1.currentValue / 2) ; // + this.geometryManager.EXISTING_WALL.EXISTING_WALL.width; // -(this.APP.sldExistingWidth1.currentValue / 2);\n // if (this.APP.sltCutOut.currentValue == 1 && this.APP.sltExistingType.currentValue != 0 && this.APP.sldExistingLength2.currentValue > 0) {\n // scaleZ = (this.roofLengthPlus - this.APP.sldExistingWidth1.currentValue) / this.roofInfo.length;\n // offsetZ += this.APP.sldExistingWidth1.currentValue;\n // }\n mesh.position.set(offsetX, offsetY, offsetZ);\n //mesh.rotateX(this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue));\n mesh.scale.setZ(scaleZ);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PANEL, views: views };\n \n let cutoutCondition = this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue != BUILDING_SIDE.NONE && this.APP.sldExistingLength2.currentValue > 0;\n let rakeCutCondition = this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE || this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE;\n \n if (cutoutCondition || rakeCutCondition) {\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n //Cai nay bi delay\n //this.roofGroup.updateMatrixWorld();\n //mesh.applyMatrix4(this.roofGroup.matrixWorld);\n\n //cho no cung he toa do => cai nay khong delay\n mesh.position.set(offsetX + this.MANAGER.patiosGroup.position.x, offsetY, offsetZ + this.roofGroup.position.z);\n\n // let helper = new BoxHelper(mesh);\n // helper.userData = { type: 'HELPER' };\n // this.APP.scene.add(helper);\n\n mesh.updateMatrix();\n\n let meshResult = mesh.clone();\n\n if(cutoutCondition){\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n }\n //meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n }\n if(rakeCutCondition){\n if(this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE){\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(this.csg_rakecutLeft), mesh.matrix);\n }\n if(this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE){\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(this.csg_rakecutRight), mesh.matrix);\n }\n }\n \n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix)); //=> tra ve goc toa do\n meshResult.applyMatrix4(matrixBefore);\n\n this.roofGroup.add(meshResult);\n }\n else {\n this.roofGroup.add(mesh);\n }\n }\n private addAngleRakeCut(cutSide: BUILDING_SIDE) {\n let offsetXL = -this.totalBaySize / 2 - this.APP.sldLeftOverhang.currentValue;\n let offsetXR = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n let offsetY = -100;\n\n let offsetZ = this.MANAGER.patiosLength - this.APP.sldExistingWidth1.currentValue / 2;\n\n let angle;\n\n if(cutSide == BUILDING_SIDE.LEFT){\n angle = Math.atan(this.APP.sldLeftCutHorizontal.currentValue / this.APP.sldLeftCutVertical.currentValue);\n }\n else if(cutSide == BUILDING_SIDE.RIGHT){\n angle = Math.atan(this.APP.sldRightCutHorizontal.currentValue / this.APP.sldRightCutVertical.currentValue);\n }\n \n const _offsetZ = (this.APP.sldFrontOverhang.currentValue\n + this.APP.sldMultiSpan.currentValue\n + this.APP.sldSpan.currentValue\n //- this.APP.sldExistingWidth1.currentValue/2\n - CONST.GUTTER_ROOF_OFFSET_Z) / this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n let _rotY;\n if(cutSide == BUILDING_SIDE.LEFT){\n _rotY = Math.atan(this.APP.sldLeftCutVertical.currentValue / this.APP.sldLeftCutHorizontal.currentValue);\n }\n else if(cutSide == BUILDING_SIDE.RIGHT){\n _rotY = Math.atan(this.APP.sldRightCutVertical.currentValue / this.APP.sldRightCutHorizontal.currentValue);\n }\n let _angle = (Math.PI - _rotY)/2;\n\n let hypotenuse = Math.sqrt(Math.pow(this.MANAGER.patiosLength, 2) + Math.pow(this.MANAGER.patiosWidth, 2));\n let scaleLength = hypotenuse/1000;\n let scaleWidth = this.MANAGER.patiosLength * this.MANAGER.patiosWidth / hypotenuse/1000;\n\n if (cutSide == BUILDING_SIDE.LEFT) {\n this.mesh_rakecutLeft = new Mesh(this.geo_rakecutLeft, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.mesh_rakecutLeft.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: 'RAKECUT' };\n\n this.mesh_rakecutLeft.position.set(offsetXL + this.MANAGER.patiosGroup.position.x, offsetY, offsetZ - this.APP.sldLeftCutVertical.currentValue);\n this.mesh_rakecutLeft.scale.set(scaleWidth, 5, scaleLength);\n this.mesh_rakecutLeft.rotateY(angle);\n this.mesh_rakecutLeft.updateMatrix();\n this.csg_rakecutLeft = CSG.fromMesh(this.mesh_rakecutLeft);\n //this.APP.scene.add(this.mesh_rakecutLeft);\n\n //cut gutter csg\n let scaleZ = (this.APP.dialogEditBay.totalBaySize + 200)/500;\n let scaleX = (this.APP.dialogEditBay.totalBaySize + 200)/500;\n this.meshCutGutterLeft1 = new Mesh(this.geoCutGutter, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.meshCutGutterLeft1.userData = {category: GEOMETRY_CATEGORY.PATIOS, type: 'CUTGUTTER'};\n this.meshCutGutterLeft1.position.set(offsetXL + this.APP.sldLeftCutHorizontal.currentValue, 0, _offsetZ);\n this.meshCutGutterLeft1.scale.set(scaleX, 1, scaleZ);\n this.meshCutGutterLeft1.rotation.set(0,_angle,0);\n this.meshCutGutterLeft1.updateMatrix();\n this.csgCutGutterLeft1 = CSG.fromMesh(this.meshCutGutterLeft1);\n //this.APP.scene.add(this.meshCutGutterLeft1);\n\n this.meshCutGutterLeft2 = new Mesh(this.geoCutGutter, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.meshCutGutterLeft2.userData = {category: GEOMETRY_CATEGORY.PATIOS, type: 'CUTGUTTER'};\n this.meshCutGutterLeft2.position.set(offsetXL + this.APP.sldLeftCutHorizontal.currentValue, 0, _offsetZ);\n this.meshCutGutterLeft2.scale.set(scaleX, 1, scaleZ);\n this.meshCutGutterLeft2.rotation.set(0,_angle + Math.PI,0);\n this.meshCutGutterLeft2.updateMatrix();\n this.csgCutGutterLeft2 = CSG.fromMesh(this.meshCutGutterLeft2);\n }\n if (cutSide == BUILDING_SIDE.RIGHT) {\n this.mesh_rakecutRight = new Mesh(this.geo_rakecutRight, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.mesh_rakecutRight.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: 'RAKECUT' };\n\n this.mesh_rakecutRight.position.set(offsetXR + this.MANAGER.patiosGroup.position.x, offsetY, offsetZ - this.APP.sldRightCutVertical.currentValue);\n this.mesh_rakecutRight.scale.set(scaleWidth, 5, scaleLength);\n this.mesh_rakecutRight.rotateY(-angle);\n\n //this.APP.scene.add(this.mesh_rakecutRight);\n\n this.mesh_rakecutRight.updateMatrix();\n this.csg_rakecutRight = CSG.fromMesh(this.mesh_rakecutRight);\n\n\n //cut gutter\n let scaleZ = (this.APP.dialogEditBay.totalBaySize + 200)/500;\n let scaleX = (this.APP.dialogEditBay.totalBaySize + 200)/500;\n this.meshCutGutterRight1 = new Mesh(this.geoCutGutter, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.meshCutGutterRight1.userData = {category: GEOMETRY_CATEGORY.PATIOS, type: 'CUTGUTTER'};\n this.meshCutGutterRight1.position.set(offsetXR - this.APP.sldRightCutHorizontal.currentValue, 0, _offsetZ);\n this.meshCutGutterRight1.rotation.set(0,-_angle,0);\n this.meshCutGutterRight1.scale.set(scaleX, 1, scaleZ);\n this.meshCutGutterRight1.updateMatrix();\n this.csgCutGutterRight1 = CSG.fromMesh(this.meshCutGutterRight1);\n\n this.meshCutGutterRight2 = new Mesh(this.geoCutGutter, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.meshCutGutterRight2.userData = {category: GEOMETRY_CATEGORY.PATIOS, type: 'CUTGUTTER'};\n this.meshCutGutterRight2.position.set(offsetXR - this.APP.sldRightCutHorizontal.currentValue, 0, _offsetZ);\n this.meshCutGutterRight2.scale.set(scaleX, 1, scaleZ);\n this.meshCutGutterRight2.rotation.set(0,-(_angle + Math.PI),0);\n this.meshCutGutterRight2.updateMatrix();\n this.csgCutGutterRight2 = CSG.fromMesh(this.meshCutGutterRight2);\n //this.APP.scene.add(this.meshCutGutterRight2);\n }\n }\n private addStepRakecut(cutSide: BUILDING_SIDE) {\n let offsetXL = -this.totalBaySize / 2 - this.APP.sldLeftOverhang.currentValue + this.MANAGER.patiosGroup.position.x;\n let offsetXR = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue + this.MANAGER.patiosGroup.position.x;\n let offsetY = -100;//this.APP.sldExistingWallHeight.currentValue;\n // let offsetY = this.utils.getHeightByAngle(\n // this.APP.sldExistingWallHeight.currentValue + this.APP.sldFlyOverBracketHeight.currentValue, \n // this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue, \n // this.APP.sltRoofPitch.currentValue, \n // 1\n // );\n\n let offsetZ = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue - this.APP.sldExistingWidth1.currentValue / 2;\n \n\n if (cutSide == BUILDING_SIDE.LEFT) {\n let scaleLength = (this.APP.sldLeftCutVertical.currentValue + 100)/1000;\n let scaleWidth = (this.APP.sldLeftCutHorizontal.currentValue + 100)/1000;\n\n this.mesh_rakecutLeft = new Mesh(this.geo_rakecutLeft, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.mesh_rakecutLeft.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: 'RAKECUT' };\n\n this.mesh_rakecutLeft.position.set(offsetXL + this.APP.sldLeftCutHorizontal.currentValue, offsetY, offsetZ - this.APP.sldLeftCutVertical.currentValue);\n this.mesh_rakecutLeft.scale.set(scaleWidth, 5, scaleLength);\n\n //this.APP.scene.add(this.mesh_rakecutLeft);\n\n this.mesh_rakecutLeft.updateMatrix();\n this.csg_rakecutLeft = CSG.fromMesh(this.mesh_rakecutLeft);\n }\n if (cutSide == BUILDING_SIDE.RIGHT) {\n let scaleLength = (this.APP.sldRightCutVertical.currentValue + 100)/1000;\n let scaleWidth = (this.APP.sldRightCutHorizontal.currentValue + 100)/1000;\n\n this.mesh_rakecutRight = new Mesh(this.geo_rakecutRight, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.mesh_rakecutRight.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: 'RAKECUT' };\n\n this.mesh_rakecutRight.position.set(offsetXR - this.APP.sldRightCutHorizontal.currentValue, offsetY, offsetZ - this.APP.sldRightCutVertical.currentValue);\n this.mesh_rakecutRight.scale.set(scaleWidth, 5, scaleLength);\n\n //this.APP.scene.add(this.mesh_rakecutRight);\n\n this.mesh_rakecutRight.updateMatrix();\n this.csg_rakecutRight = CSG.fromMesh(this.mesh_rakecutRight);\n }\n }\n\n public addRoofBase(offsetX: number, csgObjs: CSG[]) {\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n const mesh: Mesh = new Mesh(this.roofBaseInfo.geometry, MaterialManager.Instance().ROOF_BASE);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PANEL_BASE, views: views };\n\n let scaleZ = (this.roofLengthPlus - CONST.ROOF_BASE_SUBTRACT) / this.roofBaseInfo.length;\n const offsetY = 0//this.APP.sldBuildingHeight.currentValue// + (this.geometryManager.MONO_PANEL.S50MM_BASE.height);\n let offsetZ = 0//(-this.APP.sldExistingWidth1.currentValue / 2) ; // + this.geometryManager.EXISTING_WALL.EXISTING_WALL.width; // -(this.APP.sldExistingWidth1.currentValue / 2);\n\n // if (this.APP.sltCutOut.currentValue == 1 && this.APP.sltExistingType.currentValue != 0 && this.APP.sldExistingLength2.currentValue > 0) {\n // scaleZ = (this.roofLengthPlus - CONST.ROOF_BASE_SUBTRACT - this.APP.sldExistingWidth1.currentValue) / this.roofBaseInfo.length;\n // offsetZ += this.APP.sldExistingWidth1.currentValue;\n // }\n\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setZ(scaleZ);\n\n let cutoutCondition = this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue != BUILDING_SIDE.NONE && this.APP.sldExistingLength2.currentValue > 0;\n let rakeCutCondition = this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE || this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE;\n\n if (cutoutCondition || rakeCutCondition) {\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n mesh.position.set(offsetX + this.MANAGER.patiosGroup.position.x, offsetY, offsetZ + this.roofGroup.position.z);\n mesh.updateMatrix();\n\n let meshResult = mesh.clone();\n \n if(cutoutCondition){\n //meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n }\n }\n if(rakeCutCondition){\n if(this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE){\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(this.csg_rakecutLeft), mesh.matrix);\n }\n if(this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE){\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(this.csg_rakecutRight), mesh.matrix);\n }\n }\n \n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix));\n meshResult.applyMatrix4(matrixBefore);\n\n this.roofGroup.add(meshResult);\n }\n else {\n this.roofGroup.add(mesh);\n }\n }\n private addBarge() {\n let mesh: Mesh;\n\n let offsetXB = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n let offsetXL1 = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue) + this.APP.sldExistingLength2.currentValue;\n let offsetXL2 = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n\n let offsetXR1 = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue - this.APP.sldExistingLength2.currentValue;\n let offsetXR2 = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n\n let offsetZLeft = 0;\n let offsetZRight = 0;\n\n let scaleXB = this.roofWidth / this.geo_receiverChanel.length;\n let scaleCutoutVer = this.utils.getHypotenuseByCos(this.APP.sldExistingWidth1.currentValue + this.receiverCutoutLeftHor.width, this.APP.sltRoofPitch.currentValue) / this.bargeLeftInfo.length;\n let scaleCutoutHor = this.APP.sldExistingLength2.currentValue / this.receiverCutoutLeftHor.length;\n let scaleZLeft = this.roofLength / this.bargeLeftInfo.length;\n let bargeLeftLength = this.roofLength;\n let scaleZRight = this.roofLength / this.bargeRightInfo.length;\n let bargeRightLength = this.roofLength;\n\n let offsetY = 0\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n //cutout\n if (this.APP.sltCutOut.currentValue == 1\n && this.APP.sldExistingLength2.currentValue > 0\n && this.enableCutout\n && (this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3)) {\n scaleXB = (this.roofWidth - this.APP.sldExistingLength2.currentValue) / this.geo_receiverChanel.length;\n scaleZLeft = this.utils.getHypotenuseByCos(this.roofLength - this.APP.sldExistingWidth1.currentValue, this.APP.sltRoofPitch.currentValue) / this.bargeLeftInfo.length;\n bargeLeftLength = this.utils.getHypotenuseByCos(this.roofLength - this.APP.sldExistingWidth1.currentValue, this.APP.sltRoofPitch.currentValue);\n \n offsetXB += this.APP.sldExistingLength2.currentValue;\n offsetZLeft += this.utils.getHypotenuseByCos(this.APP.sldExistingWidth1.currentValue, this.APP.sltRoofPitch.currentValue);\n\n //cutout Hor\n let offsetZ = this.utils.getHypotenuseByCos(this.APP.sldExistingWidth1.currentValue, this.APP.sltRoofPitch.currentValue);\n mesh = new Mesh(this.receiverCutoutLeftHor.geometry, MaterialManager.Instance().RECEIVER_CHANEL);\n mesh.position.set(offsetXL1, offsetY, offsetZ);\n mesh.scale.setX(scaleCutoutHor);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.RECEIVER_CHANEL, views: views };\n this.roofGroup.add(mesh);\n\n //cutout Ver\n mesh = new Mesh(this.receiverCutoutLeftVer.geometry, MaterialManager.Instance().RECEIVER_CHANEL);\n mesh.position.set(offsetXL1, offsetY, 0);\n mesh.scale.setZ(scaleCutoutVer);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.RECEIVER_CHANEL, views: views };\n this.roofGroup.add(mesh);\n }\n if (this.APP.sltCutOut.currentValue == 1\n && this.APP.sldExistingLength2.currentValue > 0\n && this.enableCutout\n && (this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3)) {\n scaleXB = (this.roofWidth - this.APP.sldExistingLength2.currentValue) / this.geo_receiverChanel.length;\n scaleZRight = this.utils.getHypotenuseByCos(this.roofLength - this.APP.sldExistingWidth1.currentValue, this.APP.sltRoofPitch.currentValue) / this.bargeRightInfo.length;\n bargeRightLength = this.utils.getHypotenuseByCos(this.roofLength - this.APP.sldExistingWidth1.currentValue, this.APP.sltRoofPitch.currentValue);\n offsetZRight += this.utils.getHypotenuseByCos(this.APP.sldExistingWidth1.currentValue, this.APP.sltRoofPitch.currentValue);\n //cutout hor\n let offsetZ = this.utils.getHypotenuseByCos(this.APP.sldExistingWidth1.currentValue, this.APP.sltRoofPitch.currentValue);\n mesh = new Mesh(this.receiverCutoutRightHor.geometry, MaterialManager.Instance().RECEIVER_CHANEL);\n mesh.position.set(offsetXR1, offsetY, offsetZ);\n mesh.scale.setX(scaleCutoutHor);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.RECEIVER_CHANEL, views: views };\n this.roofGroup.add(mesh);\n\n //cutout ver\n mesh = new Mesh(this.receiverCutoutRightVer.geometry, MaterialManager.Instance().RECEIVER_CHANEL);\n mesh.position.set(offsetXR1, offsetY, 0);\n mesh.scale.setZ(scaleCutoutVer);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.RECEIVER_CHANEL, views: views };\n this.roofGroup.add(mesh);\n }\n if (this.APP.sltCutOut.currentValue == 1\n && this.APP.sldExistingLength2.currentValue > 0\n && this.enableCutout\n && (this.APP.sltExistingType.currentValue == 3)) {\n scaleXB = (this.roofWidth - this.APP.sldExistingLength2.currentValue * 2) / this.geo_receiverChanel.length;\n }\n\n //Rake cut\n if(this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE){\n bargeLeftLength -= this.APP.sldLeftCutVertical.currentValue\n }\n\n if(this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE){\n bargeRightLength -= this.APP.sldRightCutVertical.currentValue\n }\n\n scaleZLeft = bargeLeftLength/this.bargeLeftInfo.length;\n scaleZRight = bargeRightLength/this.bargeRightInfo.length;\n\n //left\n if ((this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3)\n && ((this.APP.sldExistingWidth2.currentValue == 0 && this.APP.sldExistingWidth1.currentValue > scaleZLeft * this.receiverCutoutLeftVer2.length \n || this.APP.sldExistingWidth2.currentValue > 0 && this.APP.sldExistingWidth2.currentValue > scaleZLeft * this.receiverCutoutLeftVer2.length))) {\n mesh = new Mesh(this.receiverCutoutLeftVer2.geometry, MaterialManager.Instance().RECEIVER_CHANEL);\n mesh.position.set(offsetXL2, offsetY, offsetZLeft);\n mesh.scale.setZ(scaleZLeft);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.RECEIVER_CHANEL, views: views };\n this.roofGroup.add(mesh);\n } else {\n mesh = new Mesh(this.bargeLeftInfo.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXL2, offsetY, offsetZLeft);\n mesh.scale.setZ(scaleZLeft);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroup.add(mesh);\n }\n \n\n //right\n if ((this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3)\n && ((this.APP.sldExistingWidth2.currentValue == 0 && this.APP.sldExistingWidth1.currentValue > scaleZRight * this.receiverCutoutRightVer2.length \n || this.APP.sldExistingWidth2.currentValue > 0 && this.APP.sldExistingWidth2.currentValue > scaleZRight * this.receiverCutoutRightVer2.length))) {\n mesh = new Mesh(this.receiverCutoutRightVer2.geometry, MaterialManager.Instance().RECEIVER_CHANEL);\n mesh.position.set(offsetXR2, offsetY, offsetZRight);\n mesh.scale.setZ(scaleZRight);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.RECEIVER_CHANEL, views: views };\n this.roofGroup.add(mesh);\n } else {\n mesh = new Mesh(this.bargeRightInfo.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXR2, offsetY, offsetZRight);\n mesh.scale.setZ(scaleZRight);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroup.add(mesh);\n }\n\n\n // back\n mesh = new Mesh(this.geo_receiverChanel.geometry, MaterialManager.Instance().RECEIVER_CHANEL);\n mesh.position.set(offsetXB, offsetY, 0);\n mesh.scale.setX(scaleXB);\n //FIXED: BARGE -> RECEIVER_CHANCEL\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.RECEIVER_CHANEL, views: views };\n this.roofGroup.add(mesh);\n }\n private addBargeStepRakecut() {\n if(!(this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP || this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP)){\n return;\n }\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n let offsetXL = this.APP.dialogEditBay.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue;\n let offsetXR = this.APP.dialogEditBay.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n let offsetZL = this.utils.getHypotenuseByCos(this.APP.sldSpan.currentValue\n + this.APP.sldMultiSpan.currentValue\n + this.APP.sldFrontOverhang.currentValue\n - this.APP.sldLeftCutVertical.currentValue, this.APP.sltRoofPitch.currentValue);\n let offsetZR = this.utils.getHypotenuseByCos(this.APP.sldSpan.currentValue\n + this.APP.sldMultiSpan.currentValue\n + this.APP.sldFrontOverhang.currentValue\n - this.APP.sldRightCutVertical.currentValue, this.APP.sltRoofPitch.currentValue);\n let scaleZL = (this.APP.sldLeftCutVertical.currentValue) / this.bargeLeftInfo.length;\n let scaleZR = (this.APP.sldRightCutVertical.currentValue) / this.bargeRightInfo.length;\n //let scaleX = (this.APP.sldRakeCutHorizontal.currentValue) / this.bargeLeftInfo.length;\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n let bargeVer = new Mesh(this.bargeLeftInfo.geometry, MaterialManager.Instance().BARGE);\n bargeVer.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n bargeVer.position.set(-offsetXL + this.APP.sldLeftCutHorizontal.currentValue, 0, offsetZL);\n bargeVer.scale.set(1, 1, scaleZL);\n\n // let bargeHor = new Mesh(this.bargeLeftInfo.geometry, MaterialManager.Instance().BARGE);\n // bargeHor.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n // bargeHor.position.set(-offsetXL, 0, offsetZ);\n // bargeHor.scale.set(1, 1, scaleX);\n // bargeHor.rotateY(Math.PI / 2);\n\n this.roofGroup.add(bargeVer);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n let bargeVer = new Mesh(this.bargeRightInfo.geometry, MaterialManager.Instance().BARGE);\n bargeVer.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n bargeVer.position.set(offsetXR - this.APP.sldRightCutHorizontal.currentValue, 0, offsetZR);\n bargeVer.scale.set(1, 1, scaleZR);\n\n // let bargeHor = new Mesh(this.bargeRightInfo.geometry, MaterialManager.Instance().BARGE);\n // bargeHor.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n // bargeHor.position.set(offsetXR, 0, offsetZ);\n // bargeHor.scale.set(1, 1, scaleX);\n // bargeHor.rotateY(-Math.PI / 2);\n\n this.roofGroup.add(bargeVer);\n }\n }\n public addGutter() {\n let offsetXL = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n const offsetZ = (this.APP.sldFrontOverhang.currentValue\n + this.APP.sldMultiSpan.currentValue\n + this.APP.sldSpan.currentValue\n - CONST.GUTTER_ROOF_OFFSET_Z) / this.utils.cos(this.APP.sltRoofPitch.currentValue);\n const offsetY = this.roofBaseInfo.height - 25;\n\n let gutterLength = this.roofWidth;\n let exLength = 300//Math.tan(extraAngle) * this.gutterInfo.width;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n offsetXL += (this.APP.sldLeftCutHorizontal.currentValue - exLength);\n gutterLength -= (this.APP.sldLeftCutHorizontal.currentValue - exLength);\n }\n else if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n offsetXL += this.APP.sldLeftCutHorizontal.currentValue;\n gutterLength -= this.APP.sldLeftCutHorizontal.currentValue;\n }\n\n if(this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE){\n gutterLength -= (this.APP.sldRightCutHorizontal.currentValue - exLength);\n }\n else if(this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP){\n gutterLength -= this.APP.sldRightCutHorizontal.currentValue;\n }\n \n if(this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE && this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE){\n let gutterMesh = new Mesh(this.gutterInfo.geometry, MaterialManager.Instance().GUTTER);\n gutterMesh.scale.setX(gutterLength/this.gutterInfo.length);\n gutterMesh.updateMatrix();\n let matrixBefore = gutterMesh.matrix.clone();\n\n gutterMesh.position.set(offsetXL, offsetY, offsetZ);\n gutterMesh.rotation.set(-this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue), 0, 0);\n gutterMesh.updateMatrix();\n\n let meshClipped = CSG.toMesh(CSG.fromMesh(gutterMesh).subtract(this.csgCutGutterLeft1), gutterMesh.matrix);\n meshClipped = CSG.toMesh(CSG.fromMesh(meshClipped).subtract(this.csgCutGutterRight1), gutterMesh.matrix);\n meshClipped.applyMatrix4(new Matrix4().getInverse(gutterMesh.matrix));\n meshClipped.applyMatrix4(matrixBefore);\n meshClipped.material = gutterMesh.material;\n meshClipped.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.GUTTER_PATIOS, views: views };\n\n let gutterGroup = this.utils.createGutterGroupWithMesh(meshClipped, this.geo_gutterCap,\n gutterLength, new Vector3(offsetXL, offsetY, offsetZ), new Vector3(-this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue), 0, 0),\n views, 1, false, false);\n\n this.roofGroup.add(gutterGroup);\n }\n else if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE){\n {\n let gutterGroup = this.utils.createGutterGroup(this.gutterInfo, this.geo_gutterCap,\n gutterLength, new Vector3(offsetXL, offsetY, offsetZ), new Vector3(-this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue), 0, 0),\n views, 1, false, true, this.csgCutGutterLeft1, this.roofGroup);\n\n this.roofGroup.add(gutterGroup);\n }\n \n }\n else if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE){\n {\n let gutterGroup = this.utils.createGutterGroup(this.gutterInfo, this.geo_gutterCap,\n gutterLength, new Vector3(offsetXL, offsetY, offsetZ), new Vector3(-this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue), 0, 0),\n views, 1, true, false, this.csgCutGutterRight1, this.roofGroup);\n\n this.roofGroup.add(gutterGroup);\n }\n }\n else{\n let gutterGroup = this.utils.createGutterGroup(this.gutterInfo, this.geo_gutterCap,\n gutterLength, new Vector3(offsetXL, offsetY, offsetZ), new Vector3(-this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue), 0, 0),\n views, 1, true, true);\n this.roofGroup.add(gutterGroup);\n }\n }\n \n public addGutterAngelRakecut(){\n if(this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.ANGLE && this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.ANGLE){\n return;\n }\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n let exLength = 300\n let rc_offsetXL = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n let rc_offsetXR = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n const rc_offsetZL = (this.APP.sldFrontOverhang.currentValue\n + this.APP.sldMultiSpan.currentValue\n + this.APP.sldSpan.currentValue\n - this.APP.sldLeftCutVertical.currentValue\n - CONST.GUTTER_ROOF_OFFSET_Z) / this.utils.cos(this.APP.sltRoofPitch.currentValue);\n const rc_offsetZR = (this.APP.sldFrontOverhang.currentValue\n + this.APP.sldMultiSpan.currentValue\n + this.APP.sldSpan.currentValue\n - this.APP.sldRightCutVertical.currentValue\n - CONST.GUTTER_ROOF_OFFSET_Z) / this.utils.cos(this.APP.sltRoofPitch.currentValue);\n const rc_offsetY = this.roofBaseInfo.height - 25;\n\n\n let rc_rotYL = Math.atan(this.APP.sldLeftCutVertical.currentValue / this.APP.sldLeftCutHorizontal.currentValue);\n let rc_lengthL = exLength + Math.sqrt(Math.pow(this.APP.sldLeftCutVertical.currentValue, 2) + Math.pow(this.APP.sldLeftCutHorizontal.currentValue, 2));\n let rc_rotYR = Math.atan(this.APP.sldRightCutVertical.currentValue / this.APP.sldRightCutHorizontal.currentValue);\n let rc_lengthR = exLength + Math.sqrt(Math.pow(this.APP.sldRightCutVertical.currentValue, 2) + Math.pow(this.APP.sldRightCutHorizontal.currentValue, 2));\n\n if(this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE && this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE){\n let gutterRakecutGroupLeft = this.utils.createGutterGroup(this.gutterRakecutLeftInfo, this.geo_gutterCap,\n rc_lengthL, new Vector3(rc_offsetXL, rc_offsetY, rc_offsetZL), new Vector3(0, -rc_rotYL, 0), views, 1, true, false,\n this.csgCutGutterLeft2, this.roofGroup);\n let gutterRakecutGroupRight = this.utils.createGutterGroup(this.gutterRakecutRightInfo, this.geo_gutterCap,\n rc_lengthR, new Vector3(rc_offsetXR, rc_offsetY, rc_offsetZR), new Vector3(0, rc_rotYR, 0), views, 1, true, false,\n this.csgCutGutterRight2, this.roofGroup);\n\n this.roofGroup.add(gutterRakecutGroupLeft, gutterRakecutGroupRight);\n }\n else{\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n let gutterRakecutGroup = this.utils.createGutterGroup(this.gutterRakecutLeftInfo, this.geo_gutterCap,\n rc_lengthL, new Vector3(rc_offsetXL, rc_offsetY, rc_offsetZL), new Vector3(0, -rc_rotYL, 0), views, 1, true, false,\n this.csgCutGutterLeft2, this.roofGroup);\n\n this.roofGroup.add(gutterRakecutGroup);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n let gutterRakecutGroup = this.utils.createGutterGroup(this.gutterRakecutRightInfo, this.geo_gutterCap,\n rc_lengthR, new Vector3(rc_offsetXR, rc_offsetY, rc_offsetZR), new Vector3(0, rc_rotYR, 0), views, 1, true, false,\n this.csgCutGutterRight2, this.roofGroup);\n\n this.roofGroup.add(gutterRakecutGroup);\n }\n }\n }\n public addGutterStepRakecut() {\n if(this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.STEP && this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.STEP){\n return;\n }\n\n let offsetXL = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n let offsetXR = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n const offsetZL = (this.APP.sldFrontOverhang.currentValue\n + this.APP.sldMultiSpan.currentValue\n + this.APP.sldSpan.currentValue\n - this.APP.sldLeftCutVertical.currentValue\n - CONST.GUTTER_ROOF_OFFSET_Z) / this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n const offsetZR = (this.APP.sldFrontOverhang.currentValue\n + this.APP.sldMultiSpan.currentValue\n + this.APP.sldSpan.currentValue\n - this.APP.sldRightCutVertical.currentValue\n - CONST.GUTTER_ROOF_OFFSET_Z) / this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n const offsetY = this.roofBaseInfo.height - 25;\n\n\n //let scaleX = length / this.gutterRakecutLeftInfo.length;\n\n //let rotYL = Math.atan(this.APP.sldLeftCutVertical.currentValue / this.APP.sldLeftCutHorizontal.currentValue);\n //let rotYR = Math.atan(this.APP.sldRightCutVertical.currentValue / this.APP.sldRightCutHorizontal.currentValue);\n //let rotX = this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue);\n\n //let extraAngle = (Math.PI - (rotY + Math.PI / 2)) / 2;\n //let exLength = 300//Math.tan(extraAngle) * this.gutterInfo.width;\n //let length = exLength + Math.sqrt(Math.pow(this.APP.sldRakeCutVertical.currentValue, 2) + Math.pow(this.APP.sldRakeCutHorizontal.currentValue, 2));\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n //Step rakecut\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n let gutterLength = this.APP.sldLeftCutHorizontal.currentValue;\n let gutterHor = this.utils.createGutterGroup(this.gutterInfo, this.geo_gutterCap, gutterLength, \n new Vector3(offsetXL, offsetY, offsetZL),\n new Vector3(0, 0, 0),\n views, 1, true, true);\n \n this.roofGroup.add(gutterHor);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n let gutterLength = this.APP.sldRightCutHorizontal.currentValue;\n let gutterHor = this.utils.createGutterGroup(this.gutterInfo, this.geo_gutterCap, gutterLength, \n new Vector3(offsetXR - this.APP.sldRightCutHorizontal.currentValue, offsetY, offsetZR),\n new Vector3(0, 0, 0),\n views, 1, true, true);\n \n this.roofGroup.add(gutterHor);\n }\n }\n public addZFlashing() {\n let offsetX = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n let offsetY = this.roofBaseInfo.height - 25;\n const offsetZ = (this.APP.sldFrontOverhang.currentValue\n + this.APP.sldMultiSpan.currentValue\n + this.APP.sldSpan.currentValue\n ) / this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n let flashingLength = this.roofWidth;\n \n if (this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE) {\n offsetX += (this.APP.sldLeftCutHorizontal.currentValue);\n flashingLength -= this.APP.sldLeftCutHorizontal.currentValue;\n }\n if(this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE){\n flashingLength -= this.APP.sldRightCutHorizontal.currentValue;\n }\n \n\n let scaleX = flashingLength / this.zFlashingGeo.length;\n \n\n let mesh = new Mesh(this.zFlashingGeo.geometry, MaterialManager.Instance().ZFLASHING);\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.set(scaleX, 1, 1);\n\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ZFLASHING, scale: mesh.scale };\n this.roofGroup.add(mesh);\n }\n public addZFlashingAngleRakeCut(){\n if(this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.ANGLE && this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.ANGLE){\n return;\n }\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n \n const offsetY = this.roofBaseInfo.height - 25;\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n let offsetX = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n \n const offsetZ = (\n this.APP.sldFrontOverhang.currentValue\n + this.APP.sldMultiSpan.currentValue\n + this.APP.sldSpan.currentValue\n + 50\n - this.APP.sldLeftCutVertical.currentValue\n ) / this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n let rotY = Math.atan(this.APP.sldLeftCutVertical.currentValue / this.APP.sldLeftCutHorizontal.currentValue);\n let length = Math.sqrt(Math.pow(this.APP.sldLeftCutVertical.currentValue, 2) + Math.pow(this.APP.sldLeftCutHorizontal.currentValue, 2));\n\n let scaleX = length/this.zFlashingGeo.length;\n\n let mesh = new Mesh(this.zFlashingGeo.geometry, MaterialManager.Instance().ZFLASHING);\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.rotation.set(0, -rotY, 0);\n mesh.scale.set(scaleX, 1, 1);\n\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ZFLASHING, views: views };\n\n this.roofGroup.add(mesh);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n let offsetX = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n \n const offsetZ = (\n this.APP.sldFrontOverhang.currentValue\n + this.APP.sldMultiSpan.currentValue\n + this.APP.sldSpan.currentValue\n + 50\n - this.APP.sldRightCutVertical.currentValue\n ) / this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n let rotY = Math.atan(this.APP.sldRightCutVertical.currentValue / this.APP.sldRightCutHorizontal.currentValue);\n let length = Math.sqrt(Math.pow(this.APP.sldRightCutVertical.currentValue, 2) + Math.pow(this.APP.sldRightCutHorizontal.currentValue, 2));\n let scaleX = length/this.zFlashingGeo.length;\n\n let mesh = new Mesh(this.zFlashingRakecutRightGeo.geometry, MaterialManager.Instance().ZFLASHING);\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.rotation.set(0, rotY, 0);\n mesh.scale.set(scaleX, 1, 1);\n\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ZFLASHING, views: views};\n\n this.roofGroup.add(mesh);\n }\n }\n public addZFlashingStepRakeCut(){\n if(this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.STEP && this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.STEP){\n return;\n }\n \n const offsetY = this.roofBaseInfo.height - 25;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n const offsetX = -this.totalBaySize / 2 - this.APP.sldLeftOverhang.currentValue;\n \n const offsetZ = (this.APP.sldFrontOverhang.currentValue\n + this.APP.sldMultiSpan.currentValue\n + this.APP.sldSpan.currentValue\n - this.APP.sldLeftCutVertical.currentValue\n ) / this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n const length = this.APP.sldLeftCutHorizontal.currentValue;\n const scaleX = length/this.zFlashingGeo.length;\n\n let mesh = new Mesh(this.zFlashingGeo.geometry, MaterialManager.Instance().ZFLASHING);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ZFLASHING, views: views };\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.set(scaleX, 1, 1);\n \n this.roofGroup.add(mesh);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n const offsetX = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n \n const offsetZ = (this.APP.sldFrontOverhang.currentValue\n + this.APP.sldMultiSpan.currentValue\n + this.APP.sldSpan.currentValue\n - this.APP.sldRightCutVertical.currentValue\n ) / this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n const length = this.APP.sldRightCutHorizontal.currentValue;\n const scaleX = length/this.zFlashingGeo.length;\n\n let mesh = new Mesh(this.zFlashingRakecutRightGeo.geometry, MaterialManager.Instance().ZFLASHING);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ZFLASHING, views: views };\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.set(scaleX, 1, 1);\n \n this.roofGroup.add(mesh);\n }\n }\n private getHeightByRoofPitch(userDataPos: any): number {\n if (userDataPos.isSpan) {\n return this.utils.tan(this.APP.sltRoofPitch.currentValue) * this.APP.sldSpan.currentValue;\n } else if (userDataPos.isMultiSpan) {\n return this.utils.tan(this.APP.sltRoofPitch.currentValue) * (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue);\n } else {\n return this.utils.tan(this.APP.sltRoofPitch.currentValue) * this.roofLength;\n }\n }\n public destroy(): void {\n this.unregisterEvent();\n }\n uiCHangedDefer(previousValue: number, currentValue: number) {\n if (this.APP.sltCutOut.currentValue == 1) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => { this.load() }, this.deferTimeout);\n }\n else {\n this.load();\n }\n }\n public uiChanged(preVal: number, curVal: number): void {\n this.load();\n }\n private registerEvent(): void {\n this.eventHandleId = this.uiCHangedDefer.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldBuildingHeight,\n this.APP.sldFrontOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldLeftOverhang,\n this.APP.sltRoofPitch,\n //this.APP.dialogEditBay,\n //this.APP.sltCutOut,\n //this.APP.sldExistingLength2,\n this.APP.sldExistingWidth1,\n this.APP.sldEaveWidth\n ];\n //this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n this.controlsToRegisterEvent2 = [\n this.APP.sltRoofSheetingType,\n this.APP.sltRoofThickness,\n this.APP.sltBargeType,\n this.APP.sltDripBarge,\n this.APP.sltGutterType,\n this.APP.sltReceiverType\n ];\n this.controlsToRegisterEvent2.forEach(c => c.addAction(this.objectSizeChangedHandle));\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach(c => c.removeAction(this.objectSizeChangedHandle));\n this.controlsToRegisterEvent2 = undefined;\n }\n private objectSizeChanged(preVal: number, curVal: number) {\n this.optimize().then(() => { this.load() });\n }\n}\n\n","import { Scene, Mesh, BufferGeometry, Vector3, Object3D, Color, Material, Plane, Geometry, LineSegments } from \"three\";\nimport { Util } from \"./utils\";\nimport { HomeComponent as AppComponent } from '../containers/home/home.component';\nimport { GeometryManager } from \"./geometry.manager\";\nimport { MaterialManager } from \"./material.manager\";\nimport { GeometryInfo, Printing2DLine, ViewType, LineType, Printing2DGeometry, Printing2DGeometryType } from './models';\nimport { GEOMETRY_TYPE } from '../app.config';\n\nexport class FasciaManager {\n private scene: Scene;\n private APP: AppComponent;\n private material: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private geo_fasciaW1: BufferGeometry;\n private geo_fasciaW2: BufferGeometry;\n private geo_fasciaL1: BufferGeometry;\n\n // private matW1: Material;\n // private clippingPlaneW1: Plane;\n\n constructor() {\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n }\n\n public init(app: AppComponent): Promise{\n return new Promise((resolve, reject) => {\n this.APP = app;\n this.scene = app.scene;\n this.material = MaterialManager.Instance().FASCIA.clone();\n //this.matW1 = MaterialManager.Instance().EAVE.clone();\n\n app.sldExistingWallHeight.addAction(this.uiChanged.bind(this));\n app.sldEaveWidth.addAction(this.uiChanged.bind(this));\n app.sldFasciaDepth.addAction(this.uiChanged.bind(this));\n app.sldExistingLength.addAction(this.uiChanged.bind(this));\n app.sldExistingLength2.addAction(this.uiChanged.bind(this));\n app.sldExistingWidth1.addAction(this.uiChanged.bind(this));\n app.sldExistingWidth2.addAction(this.uiChanged.bind(this));\n app.sltExistingType.addAction(this.uiChanged.bind(this));\n app.sltStructureType.addAction(this.uiChanged.bind(this));\n\n resolve();\n });\n }\n public optimize() : Promise{\n return new Promise((resolve, reject) => {\n let translateWidth = this.geometryManager.FASCIA.FASCIA.width/2;\n let translateHeight = this.geometryManager.FASCIA.FASCIA.height/2;\n let translateLength = this.geometryManager.FASCIA.FASCIA.length/2;\n \n this.geo_fasciaW1 = this.geometryManager.FASCIA.FASCIA.geometry\n .clone()\n .translate(translateWidth,translateHeight,translateLength);\n\n this.geo_fasciaL1 = this.geometryManager.FASCIA.FASCIA.geometry\n .clone()\n .rotateY(Math.PI/2)\n .translate(0,translateHeight,-translateWidth)\n \n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.FASCIA));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == 'FASCIA_OUTLINE'));\n\n // if(this.APP.sldExistingLength2.currentValue == 0){\n // this.clippingPlaneW1 = new Plane(new Vector3(0,0,-1), this.APP.sldExistingWidth1.currentValue/2);\n // this.matW1.clippingPlanes = [this.clippingPlaneW1];\n // }\n // else{\n // this.matW1.clippingPlanes = [];\n // }\n\n if(this.APP.sltStructureType.currentValue == 4){\n resolve();\n return;\n }\n\n this.addFascia({length1: true});\n if(this.APP.sldExistingLength2.currentValue > 0){\n this.addFascia({length2: true});\n }\n if(this.APP.sldExistingWidth1.currentValue >= this.APP.sldEaveWidth.currentValue){\n this.addFascia({width1: true});\n }\n if(this.APP.sldExistingWidth2.currentValue >= this.APP.sldEaveWidth.currentValue){\n this.addFascia({width2: true});\n }\n\n //this.getOutLines();\n resolve();\n });\n }\n\n public getOutLines(): Printing2DGeometry{\n let objs = this.scene.children.filter(o => o.userData.type == GEOMETRY_TYPE.FASCIA );\n let lsGeometries: Printing2DLine[] = [];\n\n for(let o of objs){ \n let outlineGeo = this.utils.getOutlineGeometryFromMesh((o as Mesh), 10);\n outlineGeo.translate(o.position.x, o.position.y + 5000, o.position.z);\n\n // var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"FASCIA_OUTLINE\"};\n // this.scene.add( line );\n\n let simplifiedGeo = this.simplifyGeo(outlineGeo);\n lsGeometries.push({ \n objectType: o.userData.type,\n vertices: simplifiedGeo.vertices, \n views: o.userData.views\n });\n }\n\n return { lines: lsGeometries, texts: [] };\n }\n public simplifyGeo(geo: BufferGeometry): Geometry{\n let simplifiedGeo = new Geometry();\n let vertices = geo.getAttribute('position').array;\n for(let i = 0; i < vertices.length; i+=3){\n simplifiedGeo.vertices.push(new Vector3(vertices[i], vertices[i+1] - 5000 , vertices[i+2]));\n }\n return simplifiedGeo;\n }\n \n public addFascia(userDataPos: any){\n let mesh: Mesh;\n \n let offsetX = this.APP.sldExistingLength.currentValue/2 - this.APP.sldEaveWidth.currentValue;\n let offsetY = this.APP.sldExistingWallHeight.currentValue + this.geometryManager.EAVE.EAVE.height;\n let offsetZ = this.APP.sldExistingWidth1.currentValue/2;\n let scaleX = this.APP.sldExistingLength.currentValue/this.geometryManager.FASCIA.FASCIA.length;\n let scaleY = this.APP.sldFasciaDepth.currentValue/this.geometryManager.FASCIA.FASCIA.height;\n let scaleZ = (this.APP.sldExistingWidth1.currentValue + this.geometryManager.FASCIA.FASCIA.width)/this.geometryManager.FASCIA.FASCIA.length;\n \n\n if(userDataPos.width1){\n if(this.APP.sldExistingLength2.currentValue <= 0){\n scaleZ = (this.APP.sldExistingWidth1.currentValue - this.APP.sldEaveWidth.currentValue + this.geometryManager.FASCIA.FASCIA.width)/this.geometryManager.FASCIA.FASCIA.length;\n if(scaleZ <= 0)\n scaleZ = 0.01;\n }\n\n let views = [ \n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }\n ];\n\n if(this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3){\n mesh = new Mesh(this.geo_fasciaW1, this.material);\n mesh.userData = { type: GEOMETRY_TYPE.FASCIA, position: userDataPos, views: views };\n mesh.position.setX(-offsetX-this.geometryManager.FASCIA.FASCIA.width);\n mesh.position.setY(offsetY);\n mesh.position.setZ(-offsetZ + this.APP.sldEaveWidth.currentValue - this.geometryManager.FASCIA.FASCIA.width);\n mesh.scale.set(1,scaleY,scaleZ);\n this.scene.add(mesh);\n }\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n mesh = new Mesh(this.geo_fasciaW1, this.material);\n mesh.userData = { type: GEOMETRY_TYPE.FASCIA, position: userDataPos, views: views };\n mesh.position.setX(offsetX);\n mesh.position.setY(offsetY);\n mesh.position.setZ(-offsetZ + this.APP.sldEaveWidth.currentValue - this.geometryManager.FASCIA.FASCIA.width);\n mesh.scale.set(1,scaleY,scaleZ);\n this.scene.add(mesh);\n }\n }\n else if(userDataPos.width2){\n let _offsetX = this.APP.sldExistingLength.currentValue/2 + this.APP.sldExistingLength2.currentValue - this.APP.sldEaveWidth.currentValue;\n let _offsetY = this.APP.sldExistingWallHeight.currentValue + this.geometryManager.EAVE.EAVE.height;\n let _offsetZ = this.APP.sldExistingWidth1.currentValue/2 + this.APP.sldEaveWidth.currentValue - this.geometryManager.FASCIA.FASCIA.width;\n \n let _scaleY = this.APP.sldFasciaDepth.currentValue/this.geometryManager.FASCIA.FASCIA.height;\n let _scaleZ = (this.APP.sldExistingWidth2.currentValue - this.APP.sldEaveWidth.currentValue + this.geometryManager.FASCIA.FASCIA.width)/this.geometryManager.FASCIA.FASCIA.length;\n\n let views = [ \n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }\n ];\n\n if(this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3){\n mesh = new Mesh(this.geo_fasciaW1, this.material);\n mesh.userData = { type: GEOMETRY_TYPE.FASCIA, position: userDataPos, views: views };\n mesh.position.set(-(_offsetX + this.geometryManager.FASCIA.FASCIA.width), _offsetY, _offsetZ);\n mesh.scale.set(1,_scaleY,_scaleZ);\n this.scene.add(mesh);\n }\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n mesh = new Mesh(this.geo_fasciaW1, this.material);\n mesh.userData = { type: GEOMETRY_TYPE.FASCIA, position: userDataPos, views: views };\n mesh.position.set(_offsetX, _offsetY, _offsetZ);\n mesh.scale.set(1,_scaleY,_scaleZ);\n this.scene.add(mesh);\n }\n }\n else if(userDataPos.length1){\n let offsetX = 0;\n if(this.APP.sldExistingWidth1.currentValue >= this.APP.sldEaveWidth.currentValue){\n if(this.APP.sltExistingType.currentValue == 1){\n offsetX = this.APP.sldEaveWidth.currentValue/2;\n scaleX = (this.APP.sldExistingLength.currentValue - this.APP.sldEaveWidth.currentValue)/this.geometryManager.FASCIA.FASCIA.length;\n }\n else if(this.APP.sltExistingType.currentValue == 2){\n offsetX = -this.APP.sldEaveWidth.currentValue/2;\n scaleX = (this.APP.sldExistingLength.currentValue - this.APP.sldEaveWidth.currentValue)/this.geometryManager.FASCIA.FASCIA.length;\n }\n else if(this.APP.sltExistingType.currentValue == 3){\n offsetX = 0;\n scaleX = (this.APP.sldExistingLength.currentValue - this.APP.sldEaveWidth.currentValue*2)/this.geometryManager.FASCIA.FASCIA.length;\n }\n }\n\n let views = [ \n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n mesh = new Mesh(this.geo_fasciaL1, this.material);\n mesh.userData = { type: GEOMETRY_TYPE.FASCIA, position: userDataPos, views: views };\n mesh.position.setX(offsetX);\n mesh.position.setY(offsetY);\n mesh.position.setZ(-offsetZ+this.APP.sldEaveWidth.currentValue);\n mesh.scale.set(scaleX,scaleY,1);\n this.scene.add(mesh);\n }\n else if(userDataPos.length2){\n let _offsetX = this.APP.sldExistingLength.currentValue/2 + this.APP.sldExistingLength2.currentValue/2 - this.APP.sldEaveWidth.currentValue/2;\n let _offsetY = this.APP.sldExistingWallHeight.currentValue + this.geometryManager.EAVE.EAVE.height;\n let _offsetZ = this.APP.sldExistingWidth1.currentValue/2 + this.APP.sldEaveWidth.currentValue;\n let _scaleX = (this.APP.sldExistingLength2.currentValue + this.APP.sldEaveWidth.currentValue)/this.geometryManager.FASCIA.FASCIA.length;\n let _scaleY = this.APP.sldFasciaDepth.currentValue/this.geometryManager.FASCIA.FASCIA.height;\n\n if(this.APP.sldExistingWidth2.currentValue >= this.APP.sldEaveWidth.currentValue){\n _offsetX = this.APP.sldExistingLength.currentValue/2 + this.APP.sldExistingLength2.currentValue/2 - this.APP.sldEaveWidth.currentValue;\n _scaleX = this.APP.sldExistingLength2.currentValue/this.geometryManager.FASCIA.FASCIA.length;\n }\n\n let views = [ \n // { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n // { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n if(this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3){\n views.push({ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS });\n mesh = new Mesh(this.geo_fasciaL1, this.material);\n mesh.userData = { type: GEOMETRY_TYPE.FASCIA, position: userDataPos, views: views };\n mesh.position.setX(-_offsetX);\n mesh.position.setY(_offsetY);\n mesh.position.setZ(_offsetZ);\n mesh.scale.set(_scaleX,_scaleY,1);\n this.scene.add(mesh);\n }\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n views.push({ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS });\n mesh = new Mesh(this.geo_fasciaL1, this.material);\n mesh.userData = { type: GEOMETRY_TYPE.FASCIA, position: userDataPos, views: views };\n mesh.position.setX(_offsetX);\n mesh.position.setY(_offsetY);\n mesh.position.setZ(_offsetZ);\n mesh.scale.set(_scaleX,_scaleY,1);\n this.scene.add(mesh);\n }\n }\n \n \n \n }\n\n public uiChanged(preVal: number, curVal): void {\n this.load();\n }\n}\n","import {\n DIMENSION_LABEL_TYPE,\n DIMENSION_LOCATION,\n GEOMETRY_TYPE,\n} from \"src/app/app.config\";\nimport {\n FIT_DIMENSION,\n PANEL_DIRECTION,\n RAKECUT_TYPE,\n} from \"src/app/app.constants\";\nimport Dimension, { AddDimensionOptions } from \"src/app/models/Dimension\";\nimport { environment } from \"src/environments/environment\";\nimport {\n Box3,\n BoxBufferGeometry,\n FontLoader,\n Geometry,\n Group,\n Line,\n Line3,\n LineBasicMaterial,\n Material,\n Matrix4,\n Mesh,\n Object3D,\n Scene,\n TextBufferGeometry,\n Vector3,\n} from \"three\";\nimport { FasciaManager } from \".\";\nimport {\n HomeComponent as AppComponent,\n HomeComponent,\n} from \"../../containers/home/home.component\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport {\n GeometryInfo,\n IBay,\n LineType,\n Print2DText,\n Printing2DGeometry,\n Printing2DLine,\n ViewType,\n} from \"../models\";\nimport { UI } from \"../ui\";\nimport { Util } from \"../utils\";\n\nexport class DimensionManager {\n private scene: Scene;\n private APP: AppComponent;\n private MANAGER: FasciaManager;\n public listText: THREE.Object3D[] = [];\n private utils: Util;\n\n private eventHandleId: any;\n\n private material: Material;\n\n private materialManager: MaterialManager;\n\n private dimensionPatiosFrontBottom: Object3D;\n private dimensionPatiosFrontRight: Object3D;\n\n private dimensionPatiosRightBottom: Object3D;\n private dimensionPatiosRightLeft: Object3D;\n private dimensionPatiosRightRight: Object3D;\n\n private dimensionPatiosLeftBottom: Object3D;\n private dimensionPatiosLeftRight: Object3D;\n private dimensionPatiosLeftLeft: Object3D;\n\n private dimensionPatiosPlanRight: Object3D;\n private dimensionPatiosPlanBottom: Object3D;\n private dimensionPatiosPlanLeft: Object3D;\n\n private dimensionPlanMiddle: Object3D;\n private dimensionPlanMidleLeft: Object3D;\n\n private dimensionPatiosLowerHeightDim: Object3D;\n\n private lineCapGeo: GeometryInfo;\n private lineGeo: GeometryInfo;\n private textGeo: TextBufferGeometry;\n\n private dimensionDistance = 1500;\n private dimensionDistance2 = 500;\n\n private textDistance = 5000;\n\n private totalBaySize: number;\n private box: Box3;\n\n private font: any;\n private textParameter: any;\n private isReady = false;\n private controlsToRegisterEvent: Array;\n private options: AddDimensionOptions;\n private startPos: Vector3;\n private startMatrix: Matrix4;\n private startBayLength: number;\n\n private geometryManager: GeometryManager;\n private offsetBraketZ: number = 0;\n\n constructor(app: AppComponent, manager: FasciaManager) {\n this.utils = new Util();\n this.materialManager = MaterialManager.Instance();\n this.APP = app;\n this.MANAGER = manager;\n this.scene = this.APP.scene;\n this.material = MaterialManager.Instance().DIMENSION_TEXT;\n this.geometryManager = GeometryManager.Instance();\n //this.registerEvent();\n }\n\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n this.lineGeo = this.geometryManager.getDimensionLine();\n this.lineCapGeo = this.geometryManager.getDimensionCap();\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.unload();\n\n var loader = new FontLoader();\n\n this.dimensionPatiosFrontBottom = new Group();\n this.dimensionPatiosFrontBottom.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n // this.dimensionPatiosFrontBottom.rotation.set(0, Math.PI, 0);\n this.dimensionPatiosFrontBottom.visible = false;\n\n this.dimensionPatiosFrontRight = new Group();\n this.dimensionPatiosFrontRight.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosFrontRight.rotation.set(0, 0, -Math.PI / 2);\n this.dimensionPatiosFrontRight.visible = false;\n\n this.dimensionPatiosRightBottom = new Group();\n this.dimensionPatiosRightBottom.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosRightBottom.rotation.set(0, -Math.PI / 2, 0);\n this.dimensionPatiosRightBottom.visible = false;\n\n this.dimensionPatiosRightLeft = new Group();\n this.dimensionPatiosRightLeft.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosRightLeft.rotation.set(0, -Math.PI / 2, -Math.PI / 2);\n this.dimensionPatiosRightLeft.visible = false;\n\n this.dimensionPatiosRightRight = new Group();\n this.dimensionPatiosRightRight.rotation.set(\n 0,\n -Math.PI / 2,\n -Math.PI / 2\n );\n this.dimensionPatiosRightRight.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosRightRight.visible = false;\n\n this.dimensionPatiosLeftBottom = new Group();\n this.dimensionPatiosLeftBottom.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosLeftBottom.rotation.set(0, -Math.PI / 2, 0);\n this.dimensionPatiosLeftBottom.visible = false;\n\n this.dimensionPatiosLeftRight = new Group();\n this.dimensionPatiosLeftRight.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosLeftRight.rotation.set(Math.PI / 2, -Math.PI / 2, 0);\n this.dimensionPatiosLeftRight.visible = false;\n\n this.dimensionPatiosLeftLeft = new Group();\n this.dimensionPatiosLeftLeft.rotation.set(0, -Math.PI / 2, Math.PI / 2);\n this.dimensionPatiosLeftLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftLeft.visible = false;\n\n this.dimensionPatiosLowerHeightDim = new Group();\n this.dimensionPatiosLowerHeightDim.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosLowerHeightDim.rotation.set(0, 0, Math.PI / 2);\n\n this.dimensionPatiosPlanRight = new Group();\n this.dimensionPatiosPlanRight.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosPlanRight.rotation.set(\n -Math.PI / 2,\n Math.PI,\n -Math.PI / 2\n );\n\n this.dimensionPatiosPlanBottom = new Group();\n this.dimensionPatiosPlanBottom.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosPlanBottom.rotation.set(-Math.PI / 2, 0, 0);\n\n this.dimensionPatiosPlanLeft = new Group();\n this.dimensionPatiosPlanLeft.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n position: { left: true },\n };\n this.dimensionPatiosPlanLeft.rotation.set(-Math.PI / 2, 0, -Math.PI / 2);\n\n this.dimensionPlanMiddle = new Group();\n this.dimensionPlanMidleLeft = new Group();\n\n //testing\n // [\n // this.dimensionPatiosFrontBottom,\n // this.dimensionPatiosFrontRight,\n // this.dimensionPatiosRightBottom,\n // this.dimensionPatiosRightLeft,\n // this.dimensionPatiosRightRight,\n // this.dimensionPatiosLeftBottom,\n // this.dimensionPatiosLeftRight,\n // this.dimensionPatiosLeftLeft,\n // ].forEach(g => { g.visible = true });\n\n this.scene.add(this.dimensionPatiosPlanRight);\n this.scene.add(this.dimensionPatiosPlanLeft);\n this.scene.add(this.dimensionPatiosFrontRight);\n this.APP.patiosManager.patiosGroup.add(\n this.dimensionPatiosFrontBottom,\n //this.dimensionPatiosFrontRight,\n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom,\n this.dimensionPatiosLeftRight,\n this.dimensionPatiosLeftLeft,\n this.dimensionPatiosPlanBottom,\n this.dimensionPatiosLowerHeightDim,\n this.dimensionPlanMiddle,\n this.dimensionPlanMidleLeft\n );\n\n loader.load(\n environment.modelBaseUrl +\n \"/assets/fonts/helvetiker_regular.typeface.json\",\n (font) => {\n this.font = font;\n\n this.textParameter = {\n font: this.font,\n size: 200,\n height: 5,\n curveSegments: 10,\n };\n this.options = {\n container: HomeComponent.ins.scene,\n start: new Vector3(),\n end: new Vector3(),\n linePos: new Vector3(),\n views: [],\n allowDrag: true,\n textParameter: this.textParameter,\n textPos: new Vector3(),\n labelType: null,\n fitZ: 10,\n hasTextClone: false,\n axis: \"x\",\n lineLength: 0,\n subtype: null,\n textUserData: null,\n onDragCallback: this.onDimDrag.bind(this),\n onDragStartCallback: this.onDimDragStart.bind(this),\n };\n\n this.isReady = true;\n this.draw();\n resolve();\n }\n );\n });\n }\n\n public unload() {\n this.scene.remove(this.dimensionPatiosPlanRight);\n this.scene.remove(this.dimensionPatiosPlanLeft);\n this.scene.remove(this.dimensionPatiosFrontRight);\n if (this.APP.patiosManager && this.APP.patiosManager.patiosGroup) {\n this.APP.patiosManager.patiosGroup.remove(\n this.dimensionPatiosFrontBottom,\n //this.dimensionPatiosFrontRight,\n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom,\n this.dimensionPatiosLeftRight,\n this.dimensionPatiosLeftLeft,\n this.dimensionPatiosLowerHeightDim,\n this.dimensionPatiosPlanBottom,\n this.dimensionPlanMiddle,\n this.dimensionPlanMidleLeft\n );\n }\n }\n\n public draw() {\n if (!this.isReady) {\n return;\n }\n // this.dimensionPatiosPlanBottom.children = [];\n // this.dimensionPatiosPlanRight.children = [];\n // this.dimensionPatiosPlanLeft.children = [];\n this.dimensionPatiosLowerHeightDim.children =\n this.dimensionPatiosLowerHeightDim.children.filter(\n (el) => el.userData?.groupType == DIMENSION_LABEL_TYPE.LOWER_HEIGHT_DIM\n );\n this.dimensionPatiosPlanBottom.children =\n this.dimensionPatiosPlanBottom.children.filter(\n (el) =>\n el.userData?.groupType ==\n DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL ||\n el.userData?.groupType ==\n DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.LEFT_OVERHANG ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.RIGHT_OVERHANG ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY\n );\n this.dimensionPatiosPlanRight.children =\n this.dimensionPatiosPlanRight.children.filter(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.MULTI_SPAN ||\n el.userData?.groupType ==\n DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.FRONT_OVERHANG ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.BACK_OVERHANG\n );\n this.dimensionPatiosPlanLeft.children =\n this.dimensionPatiosPlanLeft.children.filter(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL\n );\n this.dimensionPatiosFrontBottom.children = [];\n this.dimensionPatiosFrontRight.children = [];\n this.dimensionPatiosLeftBottom.children = [];\n this.dimensionPatiosLeftRight.children = [];\n this.dimensionPatiosLeftLeft.children = [];\n this.dimensionPatiosRightBottom.children = [];\n this.dimensionPatiosRightLeft.children = [];\n this.dimensionPatiosRightRight.children = [];\n this.dimensionPlanMiddle.children = [];\n this.dimensionPlanMidleLeft.children = [];\n\n //this.scene.remove(...this.scene.children.filter(o => o.userData.type == 'BOXHELPER'));\n\n this.offsetBraketZ = 0;\n if (+UI.upstandBraketType !== 0) {\n this.offsetBraketZ =\n this.MANAGER.postAndBeamManager.geoBraket_2.height / 4;\n }\n\n this.totalBaySize = 0;\n for (let b of this.APP.dialogEditBay.listBay) {\n this.totalBaySize += b.value;\n }\n\n this.box = this.utils.getSceneBox();\n\n this.drawDimensionLowerHeightDim();\n this.drawDimensionPatiosPlanBottom();\n this.drawDimensionPatiosPlanRight();\n this.drawDimensionPatiosPlanLeft();\n\n this.drawDimensionPatiosFrontBottom();\n this.drawDimensionPatiosFrontRight();\n\n this.drawDimensionPatiosLeftBottom();\n this.drawDimensionPatiosLeftRight();\n this.drawDimensionPatiosLeftLeft();\n\n this.drawDimensionPatiosRightBottom();\n this.drawDimensionPatiosRightLeft();\n this.drawDimensionPatiosRightRight();\n\n this.drawDimensionMidle();\n this.drawDimensionMidleLeft();\n\n // var offset = this.calulateBoundingBox();\n // this.dimensionPatiosPlanRight.position.setX(offset.right);\n // this.dimensionPatiosPlanLeft.position.setX(offset.left);\n // this.dimensionPatiosPlanBottom.position.setZ(offset.front);\n\n // let existingHouseDimLeft = this.APP.scene.children.find(c => c.userData.type == GEOMETRY_TYPE.DIMENSION && c.userData.position?.planLeft);\n // if (existingHouseDimLeft && existingHouseDimLeft.position.x > offset.left) {\n // existingHouseDimLeft.position.setX(offset.left - 500);\n // }\n this.APP.dimensionManager.draw();\n }\n\n private drawDimensionLowerHeightDim() {\n let offsetYBraket = 0;\n if (+UI.upstandBraketType !== 0) {\n offsetYBraket =\n +UI.upstandBraketType +\n this.MANAGER.postAndBeamManager.beamInfo.height +\n this.MANAGER.postAndBeamManager.geoBraket_1.width *\n this.utils.tan(UI.patiosPitch);\n }\n if (UI.isUpFasciaUpstandardBracket) {\n offsetYBraket -=\n this.MANAGER.postAndBeamManager.beamInfo.width *\n this.utils.tan(UI.patiosPitch);\n }\n\n const frontPostHeight =\n UI.eaveHeight -\n this.getHeightByRoofPitch(true) -\n this.MANAGER.postAndBeamManager.beamInfo.height +\n offsetYBraket;\n\n const offsetZFrontPos =\n UI.span + UI.multiSpan + UI.eaveWidth + FIT_DIMENSION;\n\n this.dimensionPatiosLowerHeightDim.position.set(\n 0,\n frontPostHeight / 2,\n offsetZFrontPos\n );\n\n let textStr = this.utils.getDimensionValue(frontPostHeight);\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: frontPostHeight,\n container: this.dimensionPatiosLowerHeightDim,\n views: [],\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, 200, 0),\n labelType: DIMENSION_LABEL_TYPE.LOWER_HEIGHT_DIM,\n textUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: [],\n },\n allowDrag: false,\n };\n let dimBay = this.dimensionPatiosLowerHeightDim.children.find(\n (el) => el.userData?.groupType == DIMENSION_LABEL_TYPE.LOWER_HEIGHT_DIM\n ) as Dimension;\n if (!dimBay) {\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n\n private getHeightByRoofPitch(isSpan: boolean): number {\n if (isSpan) {\n if (UI.isUpFasciaUpstandardBracket) {\n return -this.utils.tan(UI.patiosPitch) * UI.span;\n } else {\n return this.utils.tan(UI.patiosPitch) * UI.span;\n }\n } else {\n if (UI.isUpFasciaUpstandardBracket) {\n return -this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan);\n } else {\n return this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan);\n }\n }\n }\n\n private drawDimensionMidleLeft() {\n let offsetX = 0;\n let offsetZ = -this.APP.sldExistingWidth1.currentValue / 2 + 500;\n let origin = new Vector3(0, 0, 0);\n let head = new Vector3(0, 0, 1000);\n let hand1 = new Vector3(-50, 0, 950);\n let hand2 = new Vector3(50, 0, 950);\n\n //arrow\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n //let material = new LineBasicMaterial({ color: 0x0000ff });\n let geoLine = new Geometry();\n geoLine.vertices.push(origin);\n geoLine.vertices.push(head);\n\n geoLine.vertices.push(head);\n geoLine.vertices.push(hand1);\n\n geoLine.vertices.push(hand1);\n geoLine.vertices.push(hand2);\n\n geoLine.vertices.push(hand2);\n geoLine.vertices.push(head);\n let dim = new Line(geoLine);\n dim.userData = { type: \"Arrow\", views: views };\n\n //text of degree\n let textStr = \"Panel direction\";\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(\n this.textGeo,\n MaterialManager.Instance().DIMENSION_TEXT\n );\n\n text.userData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, 0, 0),\n };\n text.position.setZ(500);\n text.position.setX(200);\n\n dim.visible = false;\n text.visible = false;\n\n this.dimensionPlanMidleLeft.add(dim);\n this.dimensionPlanMidleLeft.add(text);\n\n if (\n this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT\n ) {\n text.position.set(-100, 0, 500);\n this.dimensionPlanMidleLeft.rotation.set(0, -Math.PI / 2, 0);\n this.dimensionPlanMidleLeft.position.set(offsetX + 500, 0, offsetZ);\n } else {\n this.dimensionPlanMidleLeft.rotation.set(0, Math.PI / 2, 0);\n this.dimensionPlanMidleLeft.position.set(-offsetX - 500, 0, offsetZ);\n }\n }\n private drawDimensionMidle() {\n let offsetZ =\n this.APP.sldSpan.currentValue / 2 +\n this.APP.sldMultiSpan.currentValue / 2 -\n this.APP.sldExistingWidth1.currentValue / 2;\n let origin = new Vector3(0, 0, 0);\n let head = new Vector3(0, 0, 1000);\n let hand1 = new Vector3(-50, 0, 950);\n let hand2 = new Vector3(50, 0, 950);\n\n if (UI.isUpFasciaUpstandardBracket) {\n origin = new Vector3(0, 0, 1000);\n head = new Vector3(0, 0, 0);\n hand1 = new Vector3(-50, 0, 50);\n hand2 = new Vector3(50, 0, 50);\n }\n\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n\n let material = new LineBasicMaterial({ color: 0x0000ff });\n let geoLine = new Geometry();\n geoLine.vertices.push(origin);\n geoLine.vertices.push(head);\n\n geoLine.vertices.push(head);\n geoLine.vertices.push(hand1);\n\n geoLine.vertices.push(hand1);\n geoLine.vertices.push(hand2);\n\n geoLine.vertices.push(hand2);\n geoLine.vertices.push(head);\n let dim = new Line(geoLine, material);\n dim.userData = { type: \"Arrow\", views: views };\n\n //text of degree\n let textStr = this.APP.sltRoofPitch.currentValue + \" degree\";\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(\n this.textGeo,\n MaterialManager.Instance().DIMENSION_TEXT\n );\n text.userData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, Math.PI / 2, 0),\n };\n text.position.setZ(500);\n text.position.setX(200);\n\n dim.visible = false;\n text.visible = false;\n\n this.dimensionPlanMiddle.add(dim);\n this.dimensionPlanMiddle.add(text);\n\n this.dimensionPlanMiddle.position.set(0, 0, offsetZ);\n }\n\n private drawDimensionPatiosPlanBottom() {\n let offsetX = -this.totalBaySize / 2;\n //let offsetZ = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance2 + this.APP.sldEaveWidth.currentValue - this.APP.sldExistingWidth1.currentValue / 2;\n //if (this.APP.sldExistingWidth1.currentValue > this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) {\n // offsetZ = this.APP.sldExistingWidth1.currentValue / 2 + this.dimensionDistance2;\n //}\n\n let offsetZ =\n this.box.max.z +\n this.dimensionDistance2 +\n this.APP.sldEaveWidth.currentValue;\n\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosPlanBottom.position.setZ(offsetZ);\n\n this.dimensionPatiosPlanBottom.children =\n this.dimensionPatiosPlanBottom.children.filter(\n (el) =>\n el.userData?.groupType != DIMENSION_LABEL_TYPE.BAY ||\n (el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY &&\n el.userData?.bayNum <\n HomeComponent.ins.dialogEditBay.listBay.length)\n );\n\n for (let i = 0; i <= this.APP.dialogEditBay.listBay.length; i++) {\n let b: IBay = { index: 0, value: 0, isCut: false };\n if (i < this.APP.dialogEditBay.listBay.length) {\n b = this.APP.dialogEditBay.listBay[i];\n }\n\n if (i < this.APP.dialogEditBay.listBay.length) {\n let textStr = this.utils.getDimensionValue(b.value);\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: b.value,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(offsetX + b.value / 2, 0, 0),\n textPos: new Vector3(offsetX + b.value / 2, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.BAY,\n bayNum: i,\n textUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n position: { bottom: true },\n },\n };\n let dimBay = this.dimensionPatiosPlanBottom.children.find(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY &&\n el.userData?.bayNum == i\n ) as Dimension;\n if (!dimBay) {\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n\n offsetX += b.value;\n }\n\n //rakecut\n if (this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE) {\n let _offsetX =\n -this.APP.dialogEditBay.totalBaySize / 2 +\n this.APP.sldLeftCutHorizontal.currentValue / 2 -\n this.APP.sldLeftOverhang.currentValue;\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldLeftCutHorizontal.currentValue,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(_offsetX, 500, 0),\n textPos: new Vector3(_offsetX, 300, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL,\n subtype: GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT,\n };\n let dimRake = this.dimensionPatiosPlanBottom.children.find(\n (el) =>\n el.userData?.groupType ==\n DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL\n ) as Dimension;\n if (!dimRake) {\n new Dimension(options);\n } else {\n dimRake.update(options);\n }\n } else {\n this.dimensionPatiosPlanBottom.children =\n this.dimensionPatiosPlanBottom.children.filter(\n (el) =>\n el.userData?.groupType !=\n DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL\n );\n }\n if (this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE) {\n let _offsetX =\n this.APP.dialogEditBay.totalBaySize / 2 -\n this.APP.sldRightCutHorizontal.currentValue / 2 +\n this.APP.sldRightOverhang.currentValue;\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldRightCutHorizontal.currentValue,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(_offsetX, 500, 0),\n textPos: new Vector3(_offsetX, 500 - 200, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL,\n subtype: GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT,\n };\n let dimRake = this.dimensionPatiosPlanBottom.children.find(\n (el) =>\n el.userData?.groupType ==\n DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL\n ) as Dimension;\n if (!dimRake) {\n new Dimension(options);\n } else {\n dimRake.update(options);\n }\n } else {\n this.dimensionPatiosPlanBottom.children =\n this.dimensionPatiosPlanBottom.children.filter(\n (el) =>\n el.userData?.groupType !=\n DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL\n );\n }\n //End rakecut\n\n //Left over hang\n this.addOverhang(\n this.dimensionPatiosPlanBottom,\n offsetX,\n this.APP.sldLeftOverhang.currentValue,\n views,\n \"Left\",\n 0,\n \"z\",\n DIMENSION_LABEL_TYPE.LEFT_OVERHANG\n );\n this.addOverhang(\n this.dimensionPatiosPlanBottom,\n offsetX,\n this.APP.sldRightOverhang.currentValue,\n views,\n \"Right\",\n 0,\n \"z\",\n DIMENSION_LABEL_TYPE.RIGHT_OVERHANG\n );\n this.repositionDimension(\n this.dimensionPatiosPlanBottom,\n DIMENSION_LOCATION.PLAN_BOTTOM\n );\n }\n onDimDrag(event) {\n this.utils.handlerDimDragEvent(\n event,\n this.startPos,\n this.startMatrix,\n this.startBayLength\n );\n this.startPos = event.object.position.clone();\n }\n onDimDragStart(event) {\n this.startPos = event.object.position.clone();\n this.startMatrix = event.object.matrixWorld.clone();\n if (event.object.userData?.dimType === DIMENSION_LABEL_TYPE.BAY) {\n let bayNum = event.object.userData.bayNum;\n this.startBayLength = UI.listBay[+bayNum].value;\n }\n }\n private drawDimensionPatiosPlanRight() {\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n let offsetDimensionZ =\n this.APP.sldSpan.currentValue / 2 +\n this.APP.sldEaveWidth.currentValue -\n this.APP.sldExistingWidth1.currentValue / 2 +\n this.offsetBraketZ;\n\n let _dimensionDistane = this.dimensionDistance2;\n if (\n this.APP.sltExistingType.currentValue == 2 ||\n this.APP.sltExistingType.currentValue == 3\n ) {\n if (this.APP.sldExistingWidth1.currentValue > 0) {\n _dimensionDistane = this.dimensionDistance;\n }\n }\n\n let offsetDimensionX = this.box.max.x + this.dimensionDistance2;\n if (this.APP.sltExistingType.currentValue == 1) {\n offsetDimensionX += this.APP.sldEaveWidth.currentValue;\n }\n //let offsetDimensionX = this.totalBaySize / 2 + this.APP.patiosManager.patiosGroup.position.x + _dimensionDistane;\n //if (this.APP.sldExistingLength.currentValue / 2 > this.totalBaySize / 2) {\n // offsetDimensionX = this.APP.sldExistingLength.currentValue / 2 + _dimensionDistane;\n //}\n\n //if (this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3) {\n // offsetDimensionX += this.APP.sldExistingLength2.currentValue;\n //}\n\n this.dimensionPatiosPlanRight.position.set(\n offsetDimensionX,\n 0,\n offsetDimensionZ\n );\n let dimLength = this.APP.sldSpan.currentValue;\n\n let textStr = this.utils.getDimensionValue(this.APP.sldSpan.currentValue);\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldSpan.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.SPAN,\n hasTextClone: false,\n textUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, -Math.PI / 2, 0),\n },\n textCloneUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, -Math.PI / 2, 0),\n },\n textCloneRotation: new Vector3(0, Math.PI, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, -Math.PI, 0),\n fitZ: -10,\n };\n let dimSpan = this.dimensionPatiosPlanRight.children.find(\n (el) => el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN\n ) as Dimension;\n if (!dimSpan) {\n new Dimension(options);\n } else {\n dimSpan.update(options);\n }\n\n if (this.APP.sldMultiSpan.currentValue > 0) {\n // let offsetX = this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue;\n // - this.APP.sldExistingWidth1.currentValue/2\n // - this.APP.existingWallManager.geo_existingWallL1.width\n // - this.APP.eaveManager.backOverhang;\n\n // let scaleLength = this.APP.sldMultiSpan.currentValue / this.lineGeo.length;\n dimLength += this.APP.sldMultiSpan.currentValue;\n let textStr = this.utils.getDimensionValue(\n this.APP.sldMultiSpan.currentValue\n );\n let optionsMul: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldMultiSpan.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(\n this.APP.sldSpan.currentValue / 2 +\n this.APP.sldMultiSpan.currentValue / 2,\n 0,\n 0\n ),\n textPos: new Vector3(\n this.APP.sldSpan.currentValue / 2 +\n this.APP.sldMultiSpan.currentValue / 2,\n -200,\n 0\n ),\n labelType: DIMENSION_LABEL_TYPE.MULTI_SPAN,\n hasTextClone: false,\n textUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, -Math.PI / 2, 0),\n },\n textCloneUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, -Math.PI / 2, 0),\n },\n textCloneRotation: new Vector3(0, Math.PI, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, -Math.PI, 0),\n fitZ: -10,\n };\n let dimMul = this.dimensionPatiosPlanRight.children.find(\n (el) => el.userData?.groupType == DIMENSION_LABEL_TYPE.MULTI_SPAN\n ) as Dimension;\n if (!dimMul) {\n new Dimension(optionsMul);\n } else {\n dimMul.update(optionsMul);\n }\n } else {\n this.dimensionPatiosPlanRight.children =\n this.dimensionPatiosPlanRight.children.filter(\n (el) => el.userData?.groupType != DIMENSION_LABEL_TYPE.MULTI_SPAN\n );\n }\n\n let extraDistance = 0;\n\n //----Rake cut\n if (this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE) {\n extraDistance = 500;\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n\n let offsetZ =\n dimLength / 2 +\n UI.multiSpan / 2 +\n this.APP.sldFrontOverhang.currentValue -\n this.APP.sldRightCutVertical.currentValue / 2;\n\n let optionsRake: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldRightCutVertical.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(offsetZ, 500, 0),\n textPos: new Vector3(offsetZ, 300, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL,\n textRotation: new Vector3(0, Math.PI, 0),\n fitZ: -10,\n subtype: GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT,\n };\n let dimRake = this.dimensionPatiosPlanRight.children.find(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL\n ) as Dimension;\n if (!dimRake) {\n new Dimension(optionsRake);\n } else {\n dimRake.update(optionsRake);\n }\n } else {\n this.dimensionPatiosPlanRight.children =\n this.dimensionPatiosPlanRight.children.filter(\n (el) =>\n el.userData?.groupType !=\n DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL\n );\n }\n //----End rake cut\n\n let offsetRight =\n this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue;\n let offsetLeft = this.APP.sldSpan.currentValue / 2; // + this.APP.sldMultiSpan.currentValue;\n\n this.addOverhang(\n this.dimensionPatiosPlanRight,\n offsetRight,\n this.APP.sldFrontOverhang.currentValue,\n views,\n \"Right\",\n Math.PI,\n \"y\",\n DIMENSION_LABEL_TYPE.FRONT_OVERHANG\n );\n this.addOverhang(\n this.dimensionPatiosPlanRight,\n offsetLeft,\n this.APP.sldBackOverhang.currentValue,\n views,\n \"Left\",\n Math.PI,\n \"y\",\n DIMENSION_LABEL_TYPE.BACK_OVERHANG\n );\n this.repositionDimension(\n this.dimensionPatiosPlanRight,\n DIMENSION_LOCATION.PLAN_RIGHT,\n extraDistance\n );\n }\n private drawDimensionPatiosPlanLeft() {\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.NONE) {\n this.dimensionPatiosPlanLeft.children =\n this.dimensionPatiosPlanLeft.children.filter(\n (el) =>\n el.userData?.groupType !=\n DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL\n );\n return;\n }\n\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n\n let offsetDimensionZ =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldEaveWidth.currentValue -\n this.APP.sldExistingWidth1.currentValue / 2 -\n // - this.APP.existingWallManager.geo_existingWallL1.width\n // - this.APP.eaveManager.backOverhang\n this.APP.sldLeftCutVertical.currentValue / 2;\n\n let optionsRake: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldLeftCutVertical.currentValue,\n container: this.dimensionPatiosPlanLeft,\n views: views,\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL,\n };\n let dimRake = this.dimensionPatiosPlanLeft.children.find(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL\n ) as Dimension;\n if (!dimRake) {\n new Dimension(optionsRake);\n } else {\n dimRake.update(optionsRake);\n }\n\n //let offsetDimensionX = this.MANAGER.boundingBox.min.x - this.dimensionDistance2;\n this.dimensionPatiosPlanLeft.position.set(0, 0, offsetDimensionZ);\n this.repositionDimension(\n this.dimensionPatiosPlanLeft,\n DIMENSION_LOCATION.PLAN_LEFT\n );\n }\n private drawDimensionPatiosFrontBottom() {\n let dimOffsetY = -this.dimensionDistance2;\n this.dimensionPatiosFrontBottom.position.set(0, dimOffsetY, 0);\n\n let views = [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosPlanBottom.children.forEach((groupDim) => {\n groupDim.children\n .filter(\n (c) => c.userData.subtype != GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT\n )\n .forEach((e) => {\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.rotation.set(0, Math.PI, 0);\n dim.userData[\"rotation\"] = new Vector3(0, 0, 0);\n dim.userData[\"position\"] = { ...e.userData.position, bottom: true };\n }\n this.dimensionPatiosFrontBottom.add(dim);\n });\n });\n }\n private drawDimensionPatiosFrontRight() {\n let views = [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }];\n\n let _dimensionDistane = this.dimensionDistance2;\n if (\n this.APP.sltExistingType.currentValue == 2 ||\n this.APP.sltExistingType.currentValue == 3\n ) {\n if (this.APP.sldExistingWidth1.currentValue > 0) {\n _dimensionDistane = this.dimensionDistance;\n }\n }\n let height = this.utils.getHeightByAngle(\n this.APP.sldExistingWallHeight.currentValue,\n this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue,\n this.APP.sltRoofPitch.currentValue,\n -1\n );\n let dimOffsetX =\n this.totalBaySize / 2 +\n this.APP.patiosManager.patiosGroup.position.x +\n _dimensionDistane;\n let dimOffsetY = height / 2;\n if (this.APP.sldExistingLength.currentValue / 2 > this.totalBaySize / 2) {\n dimOffsetX =\n this.APP.sldExistingLength.currentValue / 2 + _dimensionDistane;\n }\n\n if (\n this.APP.sltExistingType.currentValue == 2 ||\n this.APP.sltExistingType.currentValue == 3\n ) {\n dimOffsetX += this.APP.sldExistingLength2.currentValue;\n }\n\n this.dimensionPatiosFrontRight.position.set(dimOffsetX, dimOffsetY, 0);\n\n //--------\n\n let scaleLength = height / this.lineGeo.length;\n\n let cap1 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-dimOffsetY);\n\n let cap2 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(dimOffsetY);\n\n let line = new Mesh(\n this.lineGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(height);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(\n this.textGeo,\n MaterialManager.Instance().DIMENSION_TEXT\n );\n text.userData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, 0, -Math.PI / 2),\n };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosFrontRight.add(\n line,\n cap1,\n cap2,\n text,\n ...this.utils.addArrowForLine(line)\n );\n this.repositionDimension(\n this.dimensionPatiosFrontRight,\n DIMENSION_LOCATION.FRONT_RIGHT\n );\n }\n private drawDimensionPatiosLeftBottom() {\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z;\n\n this.dimensionPatiosLeftBottom.position.set(0, dimOffsetY, dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n this.dimensionPatiosPlanRight.children.forEach((groupDim) => {\n groupDim.children.forEach((e) => {\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n if (e.userData?.subType == GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT)\n return;\n dim.rotation.set(0, 0, 0);\n dim.userData[\"views\"] = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n ];\n dim.userData[\"rotation\"] = new Vector3(0, 0, 0);\n dim.userData[\"position\"] = { ...e.userData.position, bottom: true };\n }\n this.dimensionPatiosLeftBottom.add(dim);\n });\n });\n }\n private drawDimensionPatiosLeftRight() {\n let dimOffsetY = this.APP.sldExistingWallHeight.currentValue;\n if (UI.isUpFasciaUpstandardBracket) {\n dimOffsetY +=\n this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue);\n // dimOffsetY -= (this.MANAGER.roofManager.geoBraket_2.height / 4 + this.MANAGER.roofManager.geoBraket_1.width) * this.utils.tan(UI.patiosPitch) + this.MANAGER.roofManager.geoBraket_2.height / 4 * this.utils.tan(UI.patiosPitch);\n } else {\n dimOffsetY -=\n this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue);\n }\n dimOffsetY += this.MANAGER.postAndBeamManager.beamInfo.height;\n\n dimOffsetY += +UI.upstandBraketType;\n let dimOffsetZ =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldEaveWidth.currentValue +\n this.dimensionDistance2 -\n this.APP.sldExistingWidth1.currentValue / 2;\n if (\n this.APP.sldExistingWidth1.currentValue +\n this.APP.sldExistingWidth2.currentValue >\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue\n ) {\n dimOffsetZ =\n this.APP.sldExistingWidth1.currentValue / 2 +\n this.APP.sldExistingWidth2.currentValue +\n this.dimensionDistance2 -\n 290;\n }\n if (this.APP.sldExistingLength2.currentValue > 0) {\n dimOffsetZ += 500;\n }\n\n this.dimensionPatiosLeftRight.position.set(0, dimOffsetY / 2, dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n let offsetLength = +dimOffsetY.toFixed(0);\n let scaleLength = offsetLength / this.lineGeo.length;\n\n let cap1 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength / 2);\n\n let cap2 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength / 2);\n\n let line = new Mesh(\n this.lineGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(\n this.textGeo,\n MaterialManager.Instance().DIMENSION_TEXT\n );\n text.userData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }],\n rotation: new Vector3(-Math.PI / 2, 0, 0),\n };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosLeftRight.add(\n line,\n cap1,\n cap2,\n text,\n ...this.utils.addArrowForLine(line)\n );\n this.repositionDimension(\n this.dimensionPatiosLeftRight,\n DIMENSION_LOCATION.LEFT_RIGHT\n );\n }\n private drawDimensionPatiosRightBottom() {\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z;\n\n this.dimensionPatiosRightBottom.position.set(0, dimOffsetY, dimOffsetZ);\n\n let views = [{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosPlanRight.children.forEach((groupDim) => {\n groupDim.children.forEach((e) => {\n if (e.userData?.subType == GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT) return;\n\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.userData[\"rotation\"] = new Vector3(0, 0, 0);\n dim.userData[\"position\"] = { ...e.userData.position, bottom: true };\n }\n this.dimensionPatiosRightBottom.add(dim);\n });\n });\n }\n private drawDimensionPatiosRightLeft() {\n // let dimOffsetY = this.utils.getHeightByAngle(this.APP.sldExistingWallHeight.currentValue, this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue, this.APP.sltRoofPitch.currentValue, -1);\n let dimOffsetY = this.APP.sldExistingWallHeight.currentValue;\n if (UI.isUpFasciaUpstandardBracket) {\n dimOffsetY +=\n this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue);\n // dimOffsetY -= (this.MANAGER.roofManager.geoBraket_2.height / 4 + this.MANAGER.roofManager.geoBraket_1.width) * this.utils.tan(UI.patiosPitch) + this.MANAGER.roofManager.geoBraket_2.height / 4 * this.utils.tan(UI.patiosPitch);\n } else {\n dimOffsetY -=\n this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue);\n }\n dimOffsetY += +UI.upstandBraketType;\n dimOffsetY += this.MANAGER.postAndBeamManager.beamInfo.height;\n let dimOffsetZ = this.dimensionPatiosLeftRight.position.z; //this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.APP.sldEaveWidth.currentValue + this.dimensionDistance2 - this.APP.sldExistingWidth1.currentValue / 2;\n //this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance2;\n\n this.dimensionPatiosRightLeft.position.set(0, dimOffsetY / 2, dimOffsetZ);\n let views = [{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosLeftRight.children.forEach((e) => {\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.userData[\"rotation\"] = new Vector3(Math.PI / 2, 0, 0);\n dim.rotation.set(0, Math.PI, 0);\n }\n this.dimensionPatiosRightLeft.add(dim);\n });\n this.repositionDimension(\n this.dimensionPatiosRightLeft,\n DIMENSION_LOCATION.RIGHT_LEFT\n );\n }\n private drawDimensionPatiosLeftLeft() {\n let dimOffsetY = this.APP.sldExistingWallHeight.currentValue;\n let dimOffsetZ = this.APP.sldExistingWidth1.currentValue / 2 + 1800;\n\n this.dimensionPatiosLeftLeft.position.set(0, dimOffsetY / 2, -dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n ];\n\n let offsetLength = dimOffsetY;\n let scaleLength = offsetLength / this.lineGeo.length;\n\n let cap1 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength / 2);\n\n let cap2 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength / 2);\n\n let line = new Mesh(\n this.lineGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(\n this.textGeo,\n MaterialManager.Instance().DIMENSION_TEXT\n );\n text.userData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }],\n rotation: new Vector3(Math.PI / 2, 0, 0),\n };\n text.position.set(0, 200, 0);\n\n this.dimensionPatiosLeftLeft.add(\n line,\n cap1,\n cap2,\n text,\n ...this.utils.addArrowForLine(line)\n );\n }\n private drawDimensionPatiosRightRight() {\n let dimOffsetY = this.APP.sldExistingWallHeight.currentValue;\n let dimOffsetZ = this.APP.sldExistingWidth1.currentValue / 2 + 1800;\n\n this.dimensionPatiosRightRight.position.set(0, dimOffsetY / 2, -dimOffsetZ);\n\n let views = [{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosLeftLeft.children.forEach((e) => {\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n dim.userData[\"rotation\"] = new Vector3(-Math.PI / 2, 0, 0);\n dim.rotation.set(0, Math.PI, 0);\n dim.position.set(dim.position.x, -dim.position.y, dim.position.z);\n this.dimensionPatiosRightRight.add(dim);\n }\n });\n }\n private addOverhang(\n groupDim: Object3D,\n offset: number,\n overhangValue: number,\n views: any,\n side: string,\n rotateText: number,\n axis: string,\n labelType?: string\n ) {\n if (overhangValue == 0) {\n let dim = groupDim.children.find(\n (el) => el.userData?.groupType == labelType\n ) as Dimension;\n if (dim) {\n groupDim.remove(dim);\n }\n return;\n }\n\n let textStr = this.utils.getDimensionValue(overhangValue);\n\n let textRotation = new Vector3();\n let textUserData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n position: { overhang: true },\n };\n if (axis === \"z\") {\n textRotation.setZ(rotateText);\n textUserData[\"rotation\"] = new Vector3(0, 0, -rotateText / 2);\n textUserData[\"position\"][\"bottom\"] = true;\n } else if (axis === \"y\") {\n textRotation.setY(rotateText);\n textUserData[\"rotation\"] = new Vector3(0, -rotateText / 2, 0);\n } else if (axis === \"x\") {\n textRotation.setX(rotateText);\n textUserData[\"rotation\"] = new Vector3(-rotateText / 2, 0, 0);\n }\n\n let linePos = new Vector3();\n if (side === \"Left\") {\n linePos.setX(-offset - overhangValue / 2);\n } else if (side === \"Right\") {\n linePos.setX(offset + overhangValue / 2);\n }\n let fitZ = 0;\n if (labelType) {\n if (axis === \"z\") {\n fitZ = 10;\n } else if (axis === \"y\") {\n fitZ = -10;\n }\n }\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: overhangValue,\n container: groupDim,\n views: views,\n linePos: linePos,\n textPos: linePos.clone().setY(linePos.y - 200),\n labelType: labelType ? labelType : null,\n fitZ: fitZ,\n textRotation: textRotation,\n textUserData: textUserData,\n };\n let dim = groupDim.children.find(\n (el) => el.userData?.groupType == labelType\n ) as Dimension;\n if (!dim) {\n new Dimension(options);\n } else {\n dim.update(options);\n }\n }\n private getTextCover(\n textGeo: TextBufferGeometry,\n labelType: string,\n pos: Vector3,\n fitZ = 0,\n bayNum?: number\n ) {\n let textSize = new Vector3();\n textGeo.boundingBox.getSize(textSize);\n\n let textCover = new Mesh(\n new BoxBufferGeometry(textSize.x, textSize.y, textSize.z)\n );\n textCover.position.set(pos.x, pos.y, pos.z + fitZ);\n textCover.userData = { type: GEOMETRY_TYPE.TEXT_COVER, labelType };\n if (bayNum !== undefined) {\n textCover.userData[\"bayNum\"] = bayNum;\n }\n textCover.material[\"opacity\"] = 0;\n textCover.material[\"transparent\"] = true;\n\n return textCover;\n }\n public getOutlines(): Printing2DGeometry {\n let lsGeometries: Printing2DLine[] = [];\n let lsText: Print2DText[] = [];\n\n for (let dim of [\n ...this.dimensionPatiosPlanBottom.children,\n ...this.dimensionPatiosPlanRight.children,\n ...this.dimensionPatiosPlanLeft.children,\n ...this.dimensionPatiosFrontBottom.children,\n ...this.dimensionPatiosFrontRight.children,\n ...this.dimensionPatiosLeftBottom.children,\n ...this.dimensionPatiosLeftRight.children,\n ...this.dimensionPatiosLeftLeft.children,\n ...this.dimensionPatiosRightBottom.children,\n ...this.dimensionPatiosRightLeft.children,\n ...this.dimensionPatiosRightRight.children,\n ...this.dimensionPlanMiddle.children,\n ...this.dimensionPlanMidleLeft.children,\n ]) {\n if (!dim.userData.views) {\n console.log(\"TEXT NO VIEW\", dim);\n continue;\n }\n\n if (dim.type == \"Group\") {\n dim.children.forEach((el) => {\n el.updateMatrix();\n let _clone = el.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(el.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n\n el.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(el.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(el.matrixWorld);\n\n let textRotation = el.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, el, pos, textRotation, points);\n });\n } else {\n dim.updateMatrix();\n let _clone = dim.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(dim.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n\n dim.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(dim.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(dim.matrixWorld);\n\n let textRotation = dim.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, dim, pos, textRotation, points);\n }\n }\n\n return { lines: lsGeometries, texts: lsText };\n }\n private getDimInfo(\n lsGeometries: Printing2DLine[],\n lsText: Print2DText[],\n dim: Object3D,\n pos: Vector3,\n textRotation: Vector3,\n points: Vector3[]\n ) {\n if (\n dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT &&\n dim.userData.views &&\n dim.userData.value\n ) {\n let box = new Box3().setFromObject(dim.parent);\n let startEnd = this.utils.getStartEndPoint(box);\n let line = new Line3(startEnd[0], startEnd[1]);\n\n let projectPoint = new Vector3();\n line.closestPointToPoint(pos, true, projectPoint);\n let _pos = new Vector3().addVectors(\n projectPoint,\n new Vector3()\n .subVectors(pos, projectPoint)\n .normalize()\n .multiplyScalar(10)\n );\n\n if (dim.userData.position?.bottom) {\n if (dim.userData.position?.overhang) {\n _pos = new Vector3().addVectors(\n projectPoint,\n new Vector3()\n .subVectors(pos, projectPoint)\n .normalize()\n .multiplyScalar(180)\n );\n } else {\n _pos = new Vector3().addVectors(\n projectPoint,\n new Vector3()\n .subVectors(pos, projectPoint)\n .normalize()\n .multiplyScalar(120)\n );\n }\n } else {\n if (dim.userData.position?.overhang) {\n _pos = new Vector3().addVectors(\n projectPoint,\n new Vector3()\n .subVectors(pos, projectPoint)\n .normalize()\n .multiplyScalar(100)\n );\n }\n }\n\n let p = new Vector3().applyMatrix4(dim.matrixWorld);\n\n lsText.push({\n value: dim.userData.value,\n position: p,\n rotation: textRotation,\n views: dim.userData.views,\n });\n } else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_LINE) {\n // this.scene.add(new LineSegments(new Geometry().setFromPoints(points), new LineBasicMaterial({color: new Color('red')})));\n\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views,\n });\n } else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_CAP) {\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views,\n });\n } else if (dim.userData.type == \"Arrow\") {\n let geo = ((dim as Line).geometry as Geometry).clone();\n geo.applyMatrix4(dim.matrixWorld);\n lsGeometries.push({\n vertices: geo.vertices,\n objectType: dim.userData.type,\n views: dim.userData.views,\n });\n }\n }\n public destroy(): void {\n this.unregisterEvent();\n this.unload();\n }\n\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldFrontOverhang,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sldExistingWallHeight,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch,\n ];\n this.controlsToRegisterEvent.forEach((c) =>\n c.addAction(this.eventHandleId)\n );\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.controlsToRegisterEvent = undefined;\n }\n\n public uiChanged(preVal: number, curVal: number): void {\n this.draw();\n }\n private calulateBoundingBox() {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter((c) => c.userData.type == \"BOX_HELPER_\")\n );\n let patiosBox = this.MANAGER.boundingBox;\n\n let planRightBox = this.APP.utils.getObjectBoundingBox(\n this.dimensionPatiosPlanRight\n );\n planRightBox.min.x = patiosBox.max.x;\n planRightBox.max.x = patiosBox.max.x + 500;\n planRightBox.max.y = 10000;\n\n let planLeftBox = this.APP.utils.getObjectBoundingBox(\n this.dimensionPatiosPlanLeft\n );\n planLeftBox.min.x = patiosBox.min.x - 500;\n planLeftBox.max.x = patiosBox.min.x;\n planLeftBox.max.y = 10000;\n\n let planBottomBox = this.APP.utils.getObjectBoundingBox(\n this.dimensionPatiosPlanBottom\n );\n let planBottomBoxWidth = planBottomBox.max.z - planBottomBox.min.z;\n planBottomBox.min.z = patiosBox.max.z;\n planBottomBox.max.z = patiosBox.max.z + planBottomBoxWidth;\n planBottomBox.max.y = 10000;\n\n let objs = [];\n\n objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n c.userData.position?.width1) ||\n c.userData.position?.width2 ||\n c.userData.position?.length2 ||\n c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n\n // for(let e of objs){\n // let boxModelHelper = new BoxHelper(e);\n // boxModelHelper.userData = {type: 'BOX_HELPER_'};\n // this.scene.add(boxModelHelper);\n // }\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (planRightBox.intersectsBox(objBox)) {\n intersectBox = true;\n planRightBox.translate(new Vector3(100, 0, 0));\n }\n if (planLeftBox.intersectsBox(objBox)) {\n intersectBox = true;\n planLeftBox.translate(new Vector3(-100, 0, 0));\n }\n if (planBottomBox.intersectsBox(objBox)) {\n intersectBox = true;\n planBottomBox.translate(new Vector3(0, 0, 100));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(planRightBox);\n // boxHelper.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper);\n\n // let boxHelper2 = new Box3Helper(planLeftBox);\n // boxHelper2.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper2);\n\n // let boxHelper3 = new Box3Helper(planBottomBox);\n // boxHelper3.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper3);\n\n return {\n left: planLeftBox.min.x,\n right: planRightBox.max.x,\n front: planBottomBox.max.z,\n };\n }\n private repositionDimension(dimension, location, extraDistance = 0) {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter((c) => c.userData.type == location)\n );\n\n let patiosBox = this.MANAGER.boundingBox;\n\n if (location == DIMENSION_LOCATION.FRONT_RIGHT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.max.x;\n dimBox.max.x = patiosBox.max.x + 500;\n dimBox.max.z = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n !c.userData.position.length1 &&\n !c.userData.position.length2) ||\n (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL &&\n !c.userData.position.length1 &&\n !c.userData.position.length2)\n );\n\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n !c.userData.position.length1) ||\n (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL &&\n !c.userData.position.length1)\n );\n }\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(100, 0, 0));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setX(dimBox.max.x + extraDistance);\n } else if (location == DIMENSION_LOCATION.PLAN_LEFT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.min.x - 500;\n dimBox.max.x = patiosBox.min.x;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF ||\n c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(-100, 0, 0));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setX(dimBox.min.x + extraDistance);\n } else if (location == DIMENSION_LOCATION.PLAN_RIGHT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.max.x;\n dimBox.max.x = patiosBox.max.x + 500;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF ||\n c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n\n // for(let e of objs){\n // let boxModelHelper = new BoxHelper(e);\n // boxModelHelper.userData = {type: location};\n // this.scene.add(boxModelHelper);\n // }\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(100, 0, 0));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setX(dimBox.max.x + extraDistance);\n } else if (location == DIMENSION_LOCATION.PLAN_BOTTOM) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF ||\n c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(0, 0, 100));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setZ(dimBox.max.z + extraDistance);\n } else if (location == DIMENSION_LOCATION.LEFT_RIGHT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n dimBox.min.x = -10000;\n dimBox.max.x = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n c.userData.position?.left) ||\n (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL &&\n c.userData.position?.left)\n );\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(0, 0, 100));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setZ(dimBox.max.z + extraDistance);\n } else if (location == DIMENSION_LOCATION.RIGHT_LEFT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(\n this.dimensionPatiosLeftRight\n );\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n\n dimBox.min.x = -10000;\n dimBox.max.x = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n c.userData.position?.right) ||\n (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL &&\n c.userData.position?.right)\n );\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(0, 0, 100));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setZ(dimBox.max.z + extraDistance);\n }\n }\n}\n","import { GEOMETRY_CATEGORY } from \"src/app/app.config\";\nimport { Box3, Group, Vector3 } from \"three\";\nimport {\n BUILDING_SIDE,\n CUTOUT_ENABLE,\n EXISTING_BUILDING_CONFIG,\n RAKECUT_TYPE,\n} from \"../../app.constants\";\nimport { HomeComponent as AppComponent, HomeComponent } from \"../../containers/home/home.component\";\nimport { Printing2DGeometry } from \"../models\";\nimport { PatiosManager } from \"../patios.manager\";\nimport { DimensionManager } from \"./dimension.manager\";\nimport { PostAndBeamManager } from \"./post-and-beam.manager\";\nimport { RoofManager } from \"./roof.manager\";\nimport { UI } from \"../ui\";\n\nexport class FasciaManager implements PatiosManager {\n public patiosGroup: Group;\n public boundingBox: Box3;\n private APP: AppComponent;\n public postAndBeamManager: PostAndBeamManager;\n public roofManager: RoofManager;\n public dimesionManager: DimensionManager;\n public ignoreBayEvent: boolean = false;\n\n private updateEventHandle: any;\n private deferHandle;\n private deferTimeout = EXISTING_BUILDING_CONFIG.CUTOUT_DEFFER_TIME_OUT;\n private controlsToRegisterEvent: Array;\n public patiosWidth: number;\n public patiosLength: number;\n public get cutoutCondition(): boolean {\n return (\n [\n this.APP.sldEaveWidth,\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldFrontOverhang,\n ]\n .map((x) => x.currentValue)\n .reduce((a, b) => a + b, 0) -\n this.APP.sldExistingWidth1.currentValue >=\n EXISTING_BUILDING_CONFIG.CUTOUT_ALLOW\n );\n }\n public get rakecutCondition(): boolean {\n let patiosWidth =\n this.APP.dialogEditBay.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n let patiosLength =\n this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue;\n\n return false;\n }\n\n public firstLoad = true;\n\n constructor(app: AppComponent) {\n this.APP = app;\n this.patiosGroup = new Group();\n this.patiosGroup.userData = { category: GEOMETRY_CATEGORY.PATIOS };\n app.scene.add(this.patiosGroup);\n\n this.postAndBeamManager = new PostAndBeamManager(app, this);\n this.roofManager = new RoofManager(app, this);\n this.dimesionManager = new DimensionManager(app, this);\n this.registerEvents();\n }\n\n load(): Promise {\n return Promise.all([\n this.postAndBeamManager.optimize(),\n this.roofManager.optimize(),\n this.dimesionManager.optimize(),\n ]).then(() => {\n this.postAndBeamManager.load();\n this.roofManager.load();\n this.dimesionManager.load();\n });\n }\n loadBracket(bracketQuantity: number): void {\n this.postAndBeamManager.addUpstandBraket(bracketQuantity);\n }\n loadBracketCutout(bracketQuantity: number): void {\n this.postAndBeamManager.addUpstandBraketCutOut(bracketQuantity);\n }\n loadSideGableBracket(bracketQuantity: number): void{\n \n }\n public destroy(): void {\n this.postAndBeamManager.destroy();\n this.roofManager.destroy();\n this.dimesionManager.destroy();\n this.unRegisterEvent();\n }\n registerEvents(): void {\n this.updateEventHandle = this.updateDefer.bind(this);\n this.controlsToRegisterEvent = [\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sltCutOut,\n this.APP.sldFrontOverhang,\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltHouseBeamSize,\n this.APP.sltColourBarge,\n this.APP.sltColourGutter,\n this.APP.sltColourDownpipe,\n this.APP.sltColourRoof,\n this.APP.sldSpan,\n this.APP.sldExistingWallHeight,\n this.APP.sldEaveWidth,\n this.APP.sldFasciaDepth,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldFlyOverBracketHeight,\n this.APP.sltColourBeam,\n this.APP.sltColourPost,\n this.APP.sltColourBracket,\n this.APP.sltColourFasciaBracket,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n this.APP.sltLeftCutType,\n this.APP.sldLeftCutVertical,\n this.APP.sldLeftCutHorizontal,\n this.APP.sltRightCutType,\n this.APP.sldRightCutVertical,\n this.APP.sldRightCutHorizontal,\n this.APP.sltPanelDirection,\n this.APP.sltPanelDirectionShow,\n this.APP.sltBeamLayoutShow,\n this.APP.sltFasciaUpstandBrackets,\n this.APP.sltUpFasciaUpstandBracket,\n this.APP.btnTurnOnPanel,\n ];\n this.controlsToRegisterEvent.forEach((c) => {\n c.addAction(this.updateEventHandle);\n });\n }\n unRegisterEvent(): void {\n this.controlsToRegisterEvent.forEach((c) =>\n c.removeAction(this.updateEventHandle)\n );\n }\n updateDefer(previousValue: number, currentValue: number) {\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES ||\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE ||\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE\n ) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => {\n this.update(previousValue, currentValue);\n }, this.deferTimeout);\n } else {\n this.update(previousValue, currentValue);\n }\n }\n update(preVal: number, curVal: number): void {\n let diff = UI.existingLength1 - UI.totalBayLength;\n\n this.patiosWidth = UI.totalBayLength + UI.overhangLeft + UI.overhangRight;\n this.patiosLength = UI.span + UI.multiSpan + UI.overhangFront;\n\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n const shouldSnap = HomeComponent.ins.uiManager.calcShouldSnapRoofToExistingWhenCutout()\n if (UI.cutOutType == CUTOUT_ENABLE.YES && this.cutoutCondition) {\n this.patiosGroup.position.setX( -diff / 2 - UI.existingLength2 + (shouldSnap ? 0 : UI.eaveWidth));\n } else {\n this.patiosGroup.position.setX(-diff / 2 + UI.eaveWidth);\n }\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n const shouldSnap = HomeComponent.ins.uiManager.calcShouldSnapRoofToExistingWhenCutout()\n if (UI.cutOutType == CUTOUT_ENABLE.YES && this.cutoutCondition) {\n this.patiosGroup.position.setX(diff / 2 + UI.existingLength2 - (shouldSnap ? 0 : UI.eaveWidth));\n } else {\n this.patiosGroup.position.setX(diff / 2 - UI.eaveWidth);\n }\n } else {\n this.patiosGroup.position.setX(0);\n }\n\n Promise.all([this.roofManager.load(), this.postAndBeamManager.load()]).then(\n () => {\n this.boundingBox = this.getPatiosBox();\n this.dimesionManager.draw();\n }\n );\n }\n getOutlines(): Printing2DGeometry {\n let dimensionOutline = this.dimesionManager.getOutlines();\n return {\n lines: [\n ...this.postAndBeamManager.getSection().lines,\n ...this.roofManager.getOutLines().lines,\n ...dimensionOutline.lines,\n ],\n texts: dimensionOutline.texts,\n };\n }\n public getPatiosBox(): Box3 {\n let left =\n -this.APP.dialogEditBay.totalBaySize / 2 -\n this.APP.sldLeftOverhang.currentValue;\n let right =\n this.APP.dialogEditBay.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue;\n let front =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue;\n let back = 0;\n let height = this.APP.sldBuildingHeight.currentValue;\n\n let box = new Box3();\n box = box.expandByPoint(new Vector3(left, 0, front));\n box = box.expandByPoint(new Vector3(right, height, back));\n box.translate(new Vector3(0, 0, this.APP.sldEaveWidth.currentValue));\n\n if (this.APP.sltExistingType.currentValue == 1) {\n let diff =\n (this.APP.sldExistingLength.currentValue -\n this.APP.dialogEditBay.totalBaySize) /\n 2;\n box.translate(new Vector3(-diff, 0, 0));\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n box.translate(new Vector3(this.APP.sldLeftOverhang.currentValue, 0, 0));\n box.translate(new Vector3(this.APP.sldEaveWidth.currentValue, 0, 0));\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n box.translate(\n new Vector3(-this.APP.sldExistingLength2.currentValue, 0, 0)\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 2) {\n let diff =\n (this.APP.sldExistingLength.currentValue -\n this.APP.dialogEditBay.totalBaySize) /\n 2;\n box.translate(new Vector3(diff, 0, 0));\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n box.translate(new Vector3(-this.APP.sldRightOverhang.currentValue, 0, 0));\n box.translate(new Vector3(-this.APP.sldEaveWidth.currentValue, 0, 0));\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n box.translate(\n new Vector3(this.APP.sldExistingLength2.currentValue, 0, 0)\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 3) {\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n }\n\n // if (!environment.production) {\n // this.APP.scene.remove(...this.APP.scene.children.filter(o => o.userData.type == 'BOXHELPER'));\n // let boxHelper = new Box3Helper(box);\n // boxHelper.userData = { type: \"BOXHELPER\" };\n // this.APP.scene.add(boxHelper);\n // }\n\n return box;\n }\n}\n","import _ from \"lodash\";\nimport UpstandBraket, {\n UpstandBraketOptions,\n} from \"src/app/models/UpstandBraket.model\";\nimport {\n Box3,\n BoxBufferGeometry,\n BoxHelper,\n BufferGeometry,\n Geometry,\n Group,\n LineSegments,\n Material,\n Matrix4,\n Mesh,\n Vector3,\n} from \"three\";\nimport { FasciaManager } from \".\";\nimport { GEOMETRY_CATEGORY, GEOMETRY_TYPE } from \"../../app.config\";\nimport {\n BUILDING_SIDE,\n EXISTING_BUILDING_CONFIG,\n RAKECUT_TYPE,\n} from \"../../app.constants\";\nimport {\n HomeComponent as AppComponent,\n HomeComponent,\n} from \"../../containers/home/home.component\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport {\n GeometryInfo,\n LineType,\n Print2DView,\n Printing2DGeometry,\n Printing2DLine,\n ViewType,\n} from \"../models\";\nimport { UI } from \"../ui\";\nimport { Util, getBeamEndCapCode } from \"../utils\";\n\nexport class PostAndBeamManager {\n private scene: Group;\n private APP: AppComponent;\n private MANAGER: FasciaManager;\n private material: Material;\n private utils: Util;\n private geometryManager: GeometryManager;\n private postInfo: GeometryInfo;\n public beamInfo: GeometryInfo;\n private beamRakecutInfoLeft: GeometryInfo;\n private beamRakecutInfoRight: GeometryInfo;\n private geo_beamEndCap: GeometryInfo;\n private geo_groundBase: GeometryInfo;\n private eventHandleId: any;\n private roofWidth: number;\n private existingTypeLeftX: number;\n private existingTypeRightX: number;\n private existingType: number;\n private totalBaySize: number;\n private frontPostHeight: number;\n private downpipeGroup: Group;\n private downpipeStepRakeCutGroupLeft: Group;\n private downpipeStepRakeCutGroupRight: Group;\n public geo_downPipe: GeometryInfo;\n private geo_downPipeL: GeometryInfo;\n private geo_roofBase: GeometryInfo;\n private geoBraketExtL_2: GeometryInfo;\n private geoBraketExtR_2: GeometryInfo;\n private objectSizeChangedHandle: any;\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n\n private geo_beamStepRakecutLeft: GeometryInfo;\n private geo_beamStepRakecutRight: GeometryInfo;\n private geoBeamJoint: GeometryInfo;\n private geoHouseBeamJoint: GeometryInfo;\n\n private beamLeftCutSizeInfo: any;\n private beamRightCutSizeInfo: any;\n\n public geoBraket_1: GeometryInfo;\n public geoBraket_2: GeometryInfo;\n private geoBeam: GeometryInfo;\n private geoBeamEndCap: GeometryInfo;\n private geoHouseBeam: GeometryInfo;\n private geoHouseBeamEndCap: GeometryInfo;\n\n private offsetYBraket = 0;\n private offsetBraketZ = 0;\n\n k: number;\n k_: number;\n j: number;\n l: number;\n m: number;\n v: number;\n\n constructor(app: AppComponent, fasciaManager: FasciaManager) {\n this.APP = app;\n this.MANAGER = fasciaManager;\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.scene = fasciaManager.patiosGroup;\n this.material = MaterialManager.Instance().DEFAULT.clone();\n this.registerEvent();\n }\n public destroy(): void {\n this.unregisterEvent();\n }\n public uiChanged(preVal: number, curVal: number): void {\n this.load();\n }\n private objectSizeChanged(pre: number, cur: number) {\n this.optimize().then(() => {\n this.load();\n });\n }\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldExistingWallHeight,\n this.APP.sltRoofPitch,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldExistingWidth1,\n this.APP.sltExistingType,\n this.APP.dialogEditBay,\n this.APP.sldEaveWidth,\n this.APP.sldFrontOverhang,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n ];\n //this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n this.controlsToRegisterEvent2 = [\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltHouseBeamSize,\n this.APP.sltColumnType,\n ];\n this.controlsToRegisterEvent2.forEach((c) =>\n c.addAction(this.objectSizeChangedHandle)\n );\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach((c) =>\n c.removeAction(this.objectSizeChangedHandle)\n );\n this.controlsToRegisterEvent2 = undefined;\n }\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n this.beamInfo = this.geometryManager.getBeam();\n this.beamInfo.geometry\n .rotateY(Math.PI / 2)\n .translate(this.beamInfo.length / 2, -this.beamInfo.height / 2, 0);\n //.scale(this.APP.sldBaySize.currentValue / this.beamInfo.length, 1, 1);\n\n this.geoBeamJoint = this.geometryManager.getBeamJoint();\n this.geoHouseBeamJoint = this.geometryManager.getHouseBeamJoint();\n\n this.beamRakecutInfoLeft = this.geometryManager.getBeam();\n this.beamRakecutInfoLeft.geometry.translate(\n this.beamInfo.width / 2,\n -this.beamInfo.height / 2,\n -this.beamInfo.length / 2\n );\n\n this.beamRakecutInfoRight = this.geometryManager.getBeam();\n this.beamRakecutInfoRight.geometry.translate(\n -this.beamInfo.width / 2,\n -this.beamInfo.height / 2,\n -this.beamInfo.length / 2\n );\n\n this.geo_beamStepRakecutLeft = this.geometryManager.getBeam();\n this.geo_beamStepRakecutLeft.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_beamStepRakecutLeft.length / 2,\n -this.geo_beamStepRakecutLeft.height / 2,\n -this.geo_beamStepRakecutLeft.width / 2\n );\n\n this.geo_beamStepRakecutRight = this.geometryManager.getBeam();\n this.geo_beamStepRakecutRight.geometry\n .rotateY(Math.PI / 2)\n .translate(\n -this.geo_beamStepRakecutRight.length / 2,\n -this.geo_beamStepRakecutRight.height / 2,\n -this.geo_beamStepRakecutRight.width / 2\n );\n\n this.geo_beamEndCap = this.geometryManager.getBeamEndCap();\n this.geo_beamEndCap.geometry.translate(\n 0,\n -this.geo_beamEndCap.height / 2,\n 0\n );\n\n this.postInfo = this.geometryManager.getPost();\n this.postInfo.geometry\n .rotateX(Math.PI / 2)\n .translate(0, this.postInfo.height / 2, 0);\n //.scale(1, scalePostHeight, 1);\n\n this.geo_groundBase = new GeometryInfo();\n this.geo_groundBase.width = 1000;\n this.geo_groundBase.height = 1;\n this.geo_groundBase.length = 1000;\n this.geo_groundBase.geometry = new BoxBufferGeometry(\n this.geo_groundBase.width,\n this.geo_groundBase.height,\n this.geo_groundBase.length\n );\n this.geo_groundBase.geometry.translate(\n this.geo_groundBase.width / 2,\n 0,\n this.geo_groundBase.length / 2\n );\n\n this.geo_downPipe = this.geometryManager.getDownPipe();\n this.geo_downPipeL = this.geometryManager.getDownPipeL();\n this.geo_roofBase = this.geometryManager.getRoofBase();\n\n this.scene.remove(\n ...this.scene.children.filter(\n (c) => c.userData.type == GEOMETRY_TYPE.DOWNPIPE\n )\n );\n this.downpipeGroup = new Group();\n this.downpipeGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeGroup);\n\n this.downpipeStepRakeCutGroupLeft = new Group();\n this.downpipeStepRakeCutGroupLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeStepRakeCutGroupLeft);\n\n this.downpipeStepRakeCutGroupRight = new Group();\n this.downpipeStepRakeCutGroupRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeStepRakeCutGroupRight);\n\n this.geoBraket_1 = this.geometryManager.getUpstandBraket(1);\n this.geoBraket_1.geometry.rotateX(Math.PI / 2);\n this.geoBraket_1.geometry.translate(0, this.geoBraket_1.length / 2, 0);\n this.geoBraket_2 = this.geometryManager.getUpstandBraket(2);\n this.geoBraket_2.geometry.rotateY(Math.PI);\n this.geoBraket_2.geometry.rotateX(Math.PI / 2);\n this.geoBraket_2.geometry.translate(\n 0,\n this.geoBraket_2.length / 2,\n -this.geoBraket_2.height / 4\n );\n\n this.geoBraketExtL_2 = this.geometryManager.getUpstandBraket(2);\n this.geoBraketExtL_2.geometry.rotateX(Math.PI / 2);\n this.geoBraketExtL_2.geometry.rotateY(-Math.PI / 2);\n this.geoBraketExtL_2.geometry.rotateZ(-Math.PI);\n this.geoBraketExtL_2.geometry.translate(\n -this.geoBraketExtL_2.height / 2,\n this.geoBraketExtL_2.length / 2,\n this.geoBraketExtL_2.height / 3 - this.geoBraket_1.width / 2\n );\n //Right\n this.geoBraketExtR_2 = this.geometryManager.getUpstandBraket(2);\n this.geoBraketExtR_2.geometry.rotateX(Math.PI / 2);\n this.geoBraketExtR_2.geometry.rotateY(Math.PI / 2);\n this.geoBraketExtR_2.geometry.rotateZ(-Math.PI);\n this.geoBraketExtR_2.geometry.translate(\n this.geoBraketExtR_2.height / 2,\n this.geoBraketExtR_2.length / 2,\n this.geoBraketExtR_2.height / 3 - this.geoBraket_1.width / 2\n );\n\n this.geoBeam = this.geometryManager.getBeam();\n this.geoBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(0, this.geoBeam.height / 2, 0);\n\n this.geoHouseBeam = this.geometryManager.getHouseBeam();\n this.geoHouseBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geoHouseBeam.length / 2,\n -this.geoHouseBeam.height / 2,\n 0\n );\n\n this.geoBeamEndCap = this.geometryManager.getBeamEndCap();\n this.geoBeamEndCap.geometry\n .translate(\n 0,\n this.geoBeamEndCap.height / 2,\n this.geoBeamEndCap.length / 2\n )\n .rotateY(Math.PI / 2);\n\n this.geoHouseBeamEndCap = this.geometryManager.getHouseBeamEndCap();\n this.geoHouseBeamEndCap.geometry.translate(\n 0,\n -this.geoHouseBeamEndCap.height / 2,\n 0\n );\n\n resolve();\n });\n }\n\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.SUPERIOR_POST\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.GROUND_BASE\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (o) => o.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET_EXT\n )\n );\n this.downpipeGroup.children = [];\n this.downpipeStepRakeCutGroupLeft.children = [];\n this.downpipeStepRakeCutGroupRight.children = [];\n\n this.beamLeftCutSizeInfo = this.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.LEFT\n );\n this.beamRightCutSizeInfo = this.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.RIGHT\n );\n\n this.totalBaySize = this.APP.dialogEditBay.listBay.reduce(\n (total, val) => total + val.value,\n 0\n );\n this.roofWidth = UI.overhangLeft + UI.overhangRight + this.totalBaySize;\n this.existingType = +this.APP.sltExistingType.currentValue;\n this.existingTypeLeftX = 0;\n this.existingTypeRightX = 0;\n if (this.existingType === 1 || this.existingType === 3) {\n this.existingTypeLeftX = UI.eaveWidth;\n }\n if (this.existingType === 2 || this.existingType === 3) {\n this.existingTypeRightX = UI.eaveWidth;\n }\n this.offsetYBraket = 0;\n if (+UI.upstandBraketType !== 0) {\n this.offsetYBraket =\n +UI.upstandBraketType +\n this.geoBeam.height +\n this.geoBraket_1.width * this.utils.tan(UI.patiosPitch);\n }\n if (UI.isUpFasciaUpstandardBracket) {\n this.offsetYBraket -=\n this.geoBraket_1.width * this.utils.tan(UI.patiosPitch);\n }\n this.offsetBraketZ = 0;\n if (+UI.upstandBraketType !== 0) {\n this.offsetBraketZ = this.geoBraket_2.height / 4;\n }\n this.addBeam({ isMultiSpan: false });\n this.addBeam({ isMultiSpan: true });\n this.addBeamAngelRakecut();\n this.addBeamStepRakecut();\n this.addGround();\n let offsetX = -(this.totalBaySize / 2) + this.postInfo.width / 2;\n let offsetXOrigin = -(this.totalBaySize / 2) + this.postInfo.width / 2;\n let idx = 0;\n this.addPost(offsetX, { isMultiSpan: false, left: true });\n this.addUpstandBraketExt({ isMultiSpan: false, left: true });\n this.addPost(offsetX, { isMultiSpan: true, left: true });\n this.addUpstandBraketExt({ isMultiSpan: true, left: true });\n\n this.APP.dialogEditBay.listBay.map((m) => {\n offsetX += m.value;\n if (idx === this.APP.dialogEditBay.listBay.length - 1) {\n offsetX -= this.postInfo.width;\n this.addPost(offsetX, { isMultiSpan: false, right: true });\n this.addUpstandBraketExt({ isMultiSpan: false, right: true });\n this.addPost(offsetX, { isMultiSpan: true, right: true });\n this.addUpstandBraketExt({ isMultiSpan: true, right: true });\n this.addPostAngelRakecut(offsetX, { right: true });\n this.addPostAngelRakecut(offsetXOrigin, { left: true });\n } else {\n this.addPost(offsetX - this.postInfo.width / 2, {\n isMultiSpan: false,\n });\n this.addPost(offsetX - this.postInfo.width / 2, {\n isMultiSpan: true,\n });\n }\n idx++;\n });\n\n //this.addTest();\n this.addDownPipe();\n this.addDownPipeStepRakecut();\n this.addPostStepRakecut();\n //this.getSection();\n this.addUpstandBeam();\n this.addUpstandBraket();\n this.addUpstandBraketCutOut();\n this.showBeamOutline();\n this.updateUI();\n resolve();\n });\n }\n public showBeamOutline() {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.BEAM_OUTLINE\n )\n );\n\n if (!UI.beamLayoutShow) return;\n\n const objs = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n const meshes = [];\n objs.forEach((el) => {\n if (el.type == \"Group\") {\n meshes.push(\n ...el.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n }\n });\n\n for (let o of meshes) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n o as Mesh,\n 10\n );\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n\n var line = new LineSegments(\n outlineGeo,\n MaterialManager.Instance().BEAM_OUTLINE\n );\n line.userData = { type: GEOMETRY_TYPE.BEAM_OUTLINE };\n this.APP.scene.add(line);\n }\n }\n private houseBeamHeight() {\n return this.geoBeam.height - this.geoHouseBeam.height;\n }\n\n public addUpstandBeam() {\n if (UI.upstandBraketType == 0 || UI.listBay.length == 0) {\n return;\n }\n let pos = new Vector3(\n -UI.totalBayLength / 2 - UI.overhangLeft,\n UI.existingWallHeight + this.offsetYBraket + this.houseBeamHeight(),\n UI.eaveWidth +\n this.geoBraket_2.height / 4 +\n this.geoBraket_1.width / 2 -\n UI.existingWidth1 / 2\n );\n let totalLength = UI.totalBayLength + UI.overhangLeft + UI.overhangRight;\n if (!HomeComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n if (\n UI.existingType == BUILDING_SIDE.LEFT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n totalLength -= UI.existingLength2;\n pos.setX(pos.x + UI.existingLength2);\n }\n if (\n UI.existingType == BUILDING_SIDE.RIGHT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n totalLength -= UI.existingLength2;\n }\n }\n let views: Print2DView[];\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n this.cutStandardBeamToEqualLengthBeam(\n this.geoHouseBeam,\n this.geoHouseBeamEndCap,\n totalLength,\n pos,\n new Vector3(),\n views,\n 1,\n { back: true },\n 0,\n \"x\",\n this.geoHouseBeamJoint\n );\n // Beam cutout\n if (!HomeComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n let offsetHeightCutout = +this.offsetYBraket + this.houseBeamHeight();\n if (UI.isUpFasciaUpstandardBracket) {\n offsetHeightCutout +=\n UI.existingWidth1 * this.utils.tan(UI.patiosPitch);\n } else {\n offsetHeightCutout -=\n UI.existingWidth1 * this.utils.tan(UI.patiosPitch);\n }\n\n if (offsetHeightCutout < 0) {\n return;\n }\n if (UI.existingType == 1 || UI.existingType == 3) {\n this.cutStandardBeamToEqualLengthBeam(\n this.geoHouseBeam,\n this.geoHouseBeamEndCap,\n UI.existingLength2,\n new Vector3(\n -UI.totalBayLength / 2 - UI.overhangLeft,\n UI.existingWallHeight + offsetHeightCutout,\n UI.eaveWidth +\n this.geoBraket_2.height / 4 +\n this.geoBraket_1.width / 2 +\n UI.existingWidth1 / 2\n ),\n new Vector3(),\n views,\n 1,\n { back: true },\n 0,\n \"x\",\n this.geoHouseBeamJoint\n );\n }\n if (UI.existingType == 2 || UI.existingType == 3) {\n this.cutStandardBeamToEqualLengthBeam(\n this.geoHouseBeam,\n this.geoHouseBeamEndCap,\n UI.existingLength2,\n new Vector3(\n UI.totalBayLength / 2 - UI.existingLength2 + UI.overhangRight,\n UI.existingWallHeight + offsetHeightCutout,\n UI.eaveWidth +\n this.geoBraket_2.height / 4 +\n this.geoBraket_1.width / 2 +\n UI.existingWidth1 / 2\n ),\n new Vector3(),\n views,\n 1,\n { back: true },\n 0,\n \"x\",\n this.geoHouseBeamJoint\n );\n }\n }\n }\n\n public addUpstandBraket(numOfBraket = 2) {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.UPSTAND_BRAKET\n )\n );\n if (UI.upstandBraketType == 0 || UI.listBay.length == 0) {\n return;\n }\n let height = UI.upstandBraketType + this.houseBeamHeight();\n\n const _bracketOffsetXExt = this.geoBraket_2.height / 5;\n let distance = 1000;\n let offsetX = -UI.existingLength1 / 2;\n let bayMainLength = UI.totalBayLength;\n if (!HomeComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n if (UI.existingType == 1 || UI.existingType == 2) {\n bayMainLength -= UI.existingLength2;\n }\n if (UI.existingType == 3) {\n bayMainLength -= 2 * UI.existingLength2;\n }\n }\n\n if (UI.existingType == 0) {\n let startX =\n -bayMainLength / 2 > -UI.existingLength1 / 2\n ? -bayMainLength / 2\n : -UI.existingLength1 / 2;\n let endX =\n bayMainLength / 2 < UI.existingLength1 / 2\n ? bayMainLength / 2\n : UI.existingLength1 / 2;\n distance = (endX - startX) / (numOfBraket - 1);\n offsetX = startX;\n } else if (UI.existingType == 1) {\n distance = (bayMainLength - _bracketOffsetXExt) / (numOfBraket - 1);\n offsetX = -bayMainLength / 2 + _bracketOffsetXExt;\n if (bayMainLength > UI.existingLength1 - UI.eaveWidth) {\n distance =\n (UI.existingLength1 - UI.eaveWidth - _bracketOffsetXExt) /\n (numOfBraket - 1);\n }\n if (!HomeComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n offsetX =\n -bayMainLength / 2 + UI.existingLength2 / 2 + _bracketOffsetXExt;\n }\n } else if (UI.existingType == 2) {\n offsetX = -bayMainLength / 2;\n distance = (bayMainLength - _bracketOffsetXExt) / (numOfBraket - 1);\n\n if (bayMainLength > UI.existingLength1 - UI.eaveWidth) {\n offsetX =\n -bayMainLength / 2 +\n (bayMainLength - UI.existingLength1 + UI.eaveWidth);\n distance =\n (UI.existingLength1 - _bracketOffsetXExt - UI.eaveWidth) /\n (numOfBraket - 1);\n }\n\n if (!HomeComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n offsetX -= UI.existingLength2 / 2;\n }\n } else if (UI.existingType == 3) {\n distance = (bayMainLength - _bracketOffsetXExt * 2) / (numOfBraket - 1);\n offsetX = -bayMainLength / 2 + _bracketOffsetXExt;\n }\n\n let optionBrakets: UpstandBraketOptions = {\n container: this.scene,\n position: new Vector3(),\n geoBraket_1: this.geoBraket_1,\n geoBraket_2: this.geoBraket_2,\n height: height,\n material: MaterialManager.Instance().FASCIA_BRACKET.clone(),\n };\n let views: Print2DView[] = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n let userData = {\n type: GEOMETRY_TYPE.UPSTAND_BRAKET,\n views: views,\n };\n for (let i = 0; i < numOfBraket; i++) {\n let posX = offsetX;\n if (i == 0) {\n posX = posX + this.geoBraket_1.width / 2;\n } else if (i == numOfBraket - 1) {\n posX = posX - this.geoBraket_1.width / 2;\n }\n new UpstandBraket({\n ...optionBrakets,\n position: new Vector3(\n posX,\n UI.existingWallHeight,\n UI.eaveWidth - UI.existingWidth1 / 2\n ),\n userData: userData,\n });\n offsetX += distance;\n }\n }\n\n public addUpstandBraketCutOut(numOfBraket = 2) {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.UPSTAND_BRAKET_CUTOUT\n )\n );\n if (HomeComponent.ins.sltCutOut._isDisable || UI.cutOutType == 0) {\n return;\n }\n if (UI.upstandBraketType == 0 || UI.listBay.length == 0) {\n return;\n }\n let height = UI.upstandBraketType + this.houseBeamHeight();\n\n if (UI.isUpFasciaUpstandardBracket) {\n height += UI.existingWidth1 * this.utils.tan(UI.patiosPitch);\n } else {\n height -= UI.existingWidth1 * this.utils.tan(UI.patiosPitch);\n }\n\n if (height < 0) {\n return;\n }\n const _bracketOffsetXExt = this.geoBraket_2.height / 5;\n if (UI.existingType == 1 || UI.existingType == 3) {\n let _offsetZ = UI.existingWidth2 > 0 ? UI.overhangLeft : 0;\n let distance =\n (UI.existingLength2 - UI.eaveWidth - UI.overhangLeft + _offsetZ) /\n (numOfBraket - 1);\n let offsetZ = -UI.totalBayLength / 2 - _offsetZ + _bracketOffsetXExt;\n\n let optionBrakets: UpstandBraketOptions = {\n container: this.scene,\n position: new Vector3(),\n geoBraket_1: this.geoBraket_1,\n geoBraket_2: this.geoBraket_2,\n height: height,\n material: MaterialManager.Instance().FASCIA_BRACKET.clone(),\n };\n let views: Print2DView[] = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n let userData = {\n type: GEOMETRY_TYPE.UPSTAND_BRAKET_CUTOUT,\n views: views,\n };\n for (let i = 0; i < numOfBraket; i++) {\n let posX = offsetZ;\n if (i == 0) {\n posX = posX + this.geoBraket_1.width / 2;\n } else if (i == numOfBraket - 1) {\n posX = posX - this.geoBraket_1.width / 2;\n }\n new UpstandBraket({\n ...optionBrakets,\n position: new Vector3(\n posX,\n UI.existingWallHeight,\n UI.eaveWidth + UI.existingWidth1 / 2\n ),\n userData: userData,\n });\n offsetZ += distance;\n }\n }\n if (UI.existingType == 2 || UI.existingType == 3) {\n let _offsetZ = UI.existingWidth2 > 0 ? UI.overhangRight : 0;\n let distance =\n (UI.existingLength2 - (UI.overhangRight + UI.eaveWidth) + _offsetZ) /\n (numOfBraket - 1);\n let offsetZ =\n UI.totalBayLength / 2 -\n UI.existingLength2 +\n UI.eaveWidth +\n UI.overhangRight -\n _bracketOffsetXExt;\n let optionBrakets: UpstandBraketOptions = {\n container: this.scene,\n position: new Vector3(),\n geoBraket_1: this.geoBraket_1,\n geoBraket_2: this.geoBraket_2,\n height: height,\n material: MaterialManager.Instance().FASCIA_BRACKET.clone(),\n };\n let views: Print2DView[] = [\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n let userData = {\n type: GEOMETRY_TYPE.UPSTAND_BRAKET_CUTOUT,\n views: views,\n };\n for (let i = 0; i < numOfBraket; i++) {\n let posX = offsetZ;\n if (i == 0) {\n posX = posX + this.geoBraket_1.width / 2;\n } else if (i == numOfBraket - 1) {\n posX = posX - this.geoBraket_1.width / 2;\n }\n new UpstandBraket({\n ...optionBrakets,\n position: new Vector3(\n posX,\n UI.existingWallHeight,\n UI.eaveWidth + UI.existingWidth1 / 2\n ),\n userData: userData,\n });\n offsetZ += distance;\n }\n }\n }\n private addDownPipe() {\n if (UI.isUpFasciaUpstandardBracket) {\n return;\n }\n let offsetZ =\n UI.span +\n UI.multiSpan +\n UI.eaveWidth +\n 100 -\n UI.existingWidth1 / 2 +\n this.offsetBraketZ;\n let offsetX = -this.totalBaySize / 2 + 50;\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n offsetX = this.totalBaySize / 2 - 50;\n }\n //Rakecut\n //Downpipe will be in left\n if (UI.rakeCutLeftType != RAKECUT_TYPE.NONE) {\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n offsetX = -this.totalBaySize / 2 + this.beamLeftCutSizeInfo.l;\n } else if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n offsetX = -this.totalBaySize / 2 + UI.rakeCutLeftHor + UI.overhangFront;\n }\n }\n //Downpipe will be in right\n else {\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n offsetX = this.totalBaySize / 2 - this.beamRightCutSizeInfo.l;\n } else if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n offsetX = this.totalBaySize / 2 - UI.rakeCutRightHor - UI.overhangFront;\n }\n }\n\n this.downpipeGroup.position.set(offsetX, 0, offsetZ);\n\n let offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight,\n UI.span + UI.multiSpan + UI.overhangFront,\n UI.patiosPitch,\n -1\n ) +\n this.geo_roofBase.height +\n this.offsetYBraket;\n\n this.downpipeGroup = this.utils.createDownpipeGroup(\n this.APP,\n this.downpipeGroup,\n this.geo_downPipe,\n this.geo_downPipeL,\n offsetX,\n 0,\n offsetZ,\n offsetZ,\n 0,\n UI.overhangFront,\n offsetY,\n true\n );\n }\n private addDownPipeStepRakecut() {\n if (UI.isUpFasciaUpstandardBracket) {\n return;\n }\n if (\n UI.rakeCutLeftType != RAKECUT_TYPE.STEP &&\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.STEP\n ) {\n return;\n }\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n let offsetX = -this.totalBaySize / 2 + 50;\n let offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight,\n UI.span + UI.multiSpan + UI.overhangFront - UI.rakeCutLeftVer,\n UI.patiosPitch,\n -1\n ) +\n this.geometryManager.getRoofBase().height -\n 30 +\n this.offsetYBraket;\n let offsetZ =\n UI.span +\n UI.multiSpan +\n UI.overhangFront +\n UI.eaveWidth +\n 40 -\n UI.existingWidth1 / 2 -\n UI.rakeCutLeftVer +\n this.offsetBraketZ;\n\n this.downpipeStepRakeCutGroupLeft.position.set(offsetX, 0, offsetZ);\n\n if (this.APP.sltGutterType.currentValue == 0) {\n offsetY -= 80;\n } else {\n offsetY -= 60;\n }\n\n let userData = { type: GEOMETRY_TYPE.DOWNPIPE };\n\n let scaleY = offsetY / this.geo_downPipe.height;\n\n let meshPipe = new Mesh(\n this.geo_downPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipe.userData = userData;\n meshPipe.scale.setY(scaleY);\n\n this.downpipeStepRakeCutGroupLeft.add(meshPipe);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n let offsetX = this.totalBaySize / 2 - 50;\n let offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight,\n UI.span + UI.multiSpan + UI.overhangFront - UI.rakeCutRightVer,\n UI.patiosPitch,\n -1\n ) +\n this.geometryManager.getRoofBase().height -\n 30 +\n this.offsetYBraket;\n let offsetZ =\n UI.span +\n UI.multiSpan +\n UI.overhangFront +\n UI.eaveWidth +\n 40 -\n UI.existingWidth1 / 2 -\n UI.rakeCutRightVer +\n this.offsetBraketZ;\n\n this.downpipeStepRakeCutGroupRight.position.set(offsetX, 0, offsetZ);\n\n if (this.APP.sltGutterType.currentValue == 0) {\n offsetY -= 80;\n } else {\n offsetY -= 60;\n }\n\n let userData = { type: GEOMETRY_TYPE.DOWNPIPE };\n\n let scaleY = offsetY / this.geo_downPipe.height;\n\n let meshPipe = new Mesh(\n this.geo_downPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipe.userData = userData;\n meshPipe.scale.setY(scaleY);\n\n this.downpipeStepRakeCutGroupRight.add(meshPipe);\n }\n }\n private addGround() {\n let offsetX = -(this.totalBaySize / 2 + UI.overhangLeft);\n let offsetZ = -UI.existingWidth1 / 2 - UI.overhangBack;\n let width = this.totalBaySize + UI.overhangLeft + UI.overhangRight;\n let length =\n UI.span +\n UI.multiSpan +\n UI.overhangFront +\n this.APP.sldBackOverhang.currentValue +\n UI.eaveWidth;\n\n let base = new Mesh(\n this.geo_groundBase.geometry,\n MaterialManager.Instance().BASE\n );\n base.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GROUND_BASE,\n };\n base.position.set(offsetX, 0, offsetZ + this.offsetBraketZ);\n base.scale.set(\n width / this.geo_groundBase.width,\n 1,\n length / this.geo_groundBase.length\n );\n\n this.scene.add(base);\n }\n private getRoofHeight() {\n const _height = this.utils.getHeightByAngle(\n UI.eaveHeight,\n UI.span + UI.multiSpan + UI.overhangFront,\n UI.patiosPitch,\n -1\n );\n return UI.eaveHeight - _height;\n }\n private updateUI() {\n this.APP.roofHeight = this.getRoofHeight();\n this.APP.sldMinHeight.setValue(_.round(this.frontPostHeight, 0));\n }\n public getSection(): Printing2DGeometry {\n let objs = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_POST\n );\n\n objs = [...objs];\n\n let lsGeometries: Printing2DLine[] = [];\n\n for (let o of objs) {\n let box = new BoxHelper(o);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n //this.scene.add(box);\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: outlineGeo.vertices,\n views: o.userData.views,\n });\n\n // var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"OUTLINE\"};\n // //line.position.set(o.position.x - 5000, o.position.y, o.position.z);\n // this.scene.add( line );\n }\n let beamGroups = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n for (let g of beamGroups) {\n for (let c of g.children) {\n c.updateMatrix();\n\n let objCloned = c.clone();\n objCloned.applyMatrix4(new Matrix4().getInverse(c.matrix));\n\n let box = new BoxHelper(objCloned);\n\n c.updateWorldMatrix(true, true);\n\n box.geometry.applyMatrix4(c.matrixWorld);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n //this.APP.scene.add(box);\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n const planView = _.find(\n g.userData.views,\n (el) => el.viewType == ViewType.PLAN\n );\n const anotherViews = _.filter(\n g.userData.views,\n (el) => el.viewType != ViewType.PLAN\n );\n if (anotherViews.length > 0) {\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo.vertices,\n views: anotherViews,\n });\n }\n if (planView) {\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo.vertices\n .slice(0, 8)\n .filter((el, index) => [0, 1, 4, 5].includes(index)),\n views: [planView],\n });\n }\n }\n }\n\n let braketGroup = this.scene.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.UPSTAND_BRAKET ||\n o.userData.type == GEOMETRY_TYPE.UPSTAND_BRAKET_CUTOUT\n );\n\n for (let g of braketGroup) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n g.children[1] as Mesh,\n 60\n );\n g.children[1].updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(g.children[1].matrixWorld);\n outlineGeo.translate(0, 5000, 0);\n\n let simplifiedGeo = this.simplifyGeo(outlineGeo);\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: simplifiedGeo.vertices,\n views: g.userData.views,\n });\n\n g.children[0].updateMatrix();\n let objCloned = g.children[0].clone();\n objCloned.applyMatrix4(new Matrix4().getInverse(g.children[0].matrix));\n\n let box = new BoxHelper(objCloned);\n\n g.children[0].updateWorldMatrix(true, true);\n\n box.geometry.applyMatrix4(g.children[0].matrixWorld);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n //this.APP.scene.add(box);\n\n let outlineGeo1 = this.simplifyGeo(box.geometry as BufferGeometry);\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo1.vertices,\n views: g.userData.views,\n });\n }\n\n return { lines: lsGeometries, texts: [] };\n }\n public simplifyGeo(geo: BufferGeometry): Geometry {\n let vertices = geo.getAttribute(\"position\").array;\n let lineGeo = new Geometry();\n for (let i = 0; i < vertices.length; i += 3) {\n lineGeo.vertices.push(\n new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2])\n );\n }\n\n //2-3\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n //3-7\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n //7-6\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n //6-2\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n\n //1-4\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n //4-8\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n //8-5\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n //5-1\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n\n return lineGeo;\n }\n public addPost(offsetX: number, userDataPos: any) {\n if (userDataPos.isMultiSpan && UI.multiSpan === 0) {\n return;\n }\n // // let _flag = false;\n // if (userDataPos.left && UI.overhangLeft > 0 && this.APP.sltExistingType.currentValue == 1) {\n // // _flag = true;\n // return;\n // } else if (userDataPos.right && UI.overhangRight > 0 && this.APP.sltExistingType.currentValue == 2) {\n // // _flag = true;\n // return;\n // }\n const condition = UI.span + UI.eaveWidth;\n if (!userDataPos.isMultiSpan) {\n if (\n (this.existingType === 1 || this.existingType === 3) &&\n userDataPos.left &&\n (UI.existingWidth1 >= condition ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition &&\n UI.cutOutType == 1))\n ) {\n return;\n }\n if (\n (this.existingType === 2 || this.existingType === 3) &&\n userDataPos.right &&\n (UI.existingWidth1 >= condition ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition &&\n UI.cutOutType == 1))\n ) {\n return;\n }\n } else {\n if (\n (this.existingType === 1 || this.existingType === 3) &&\n userDataPos.left &&\n (UI.existingWidth1 >= condition + UI.multiSpan ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition + UI.multiSpan &&\n UI.cutOutType == 1))\n ) {\n return;\n }\n if (\n (this.existingType === 2 || this.existingType === 3) &&\n userDataPos.right &&\n (UI.existingWidth1 >= condition + UI.multiSpan ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition + UI.multiSpan &&\n UI.cutOutType == 1))\n ) {\n return;\n }\n }\n let views: Print2DView[] = [];\n if (userDataPos.isMultiSpan) {\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else {\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n const mesh = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n let offsetZ = -UI.existingWidth1 / 2 + UI.eaveWidth;\n if (userDataPos.isMultiSpan) {\n offsetZ += UI.span + UI.multiSpan - this.beamInfo.width / 2;\n } else {\n offsetZ += UI.span - (UI.multiSpan > 0 ? 0 : this.beamInfo.width / 2);\n }\n let scaleY = 0;\n let length = 0;\n if (userDataPos.isMultiSpan) {\n length =\n UI.eaveHeight -\n this.getHeightByRoofPitch(false) -\n this.beamInfo.height +\n this.offsetYBraket;\n scaleY = length / this.postInfo.height;\n } else {\n length =\n UI.eaveHeight -\n this.getHeightByRoofPitch(true) -\n this.beamInfo.height +\n this.offsetYBraket;\n scaleY = length / this.postInfo.height;\n }\n this.frontPostHeight = length;\n // scaleY -= this.geometryManager.SUPERIOR_BEAM.S65x160.height;\n\n //in case of multi span & apply to back post only\n if (\n !userDataPos.isMultiSpan &&\n this.APP.sltCutOut.currentValue == 1 &&\n this.MANAGER.cutoutCondition\n ) {\n if (\n UI.span + UI.eaveWidth > UI.existingWidth1 &&\n UI.span + UI.eaveWidth < UI.existingWidth1 + UI.eaveWidth\n ) {\n if (this.APP.sltExistingType.currentValue == 1 && userDataPos.left) {\n offsetX += this.APP.sldExistingLength2.currentValue;\n } else if (\n this.APP.sltExistingType.currentValue == 2 &&\n userDataPos.right\n ) {\n offsetX -= this.APP.sldExistingLength2.currentValue;\n } else if (this.APP.sltExistingType.currentValue == 3) {\n if (userDataPos.left) {\n offsetX += this.APP.sldExistingLength2.currentValue;\n }\n if (userDataPos.right) {\n offsetX -= this.APP.sldExistingLength2.currentValue;\n }\n }\n }\n }\n\n let exceedMoveBackLimit = false;\n\n //Rakecut\n if (\n UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE ||\n UI.rakeCutLeftType == RAKECUT_TYPE.STEP\n ) {\n //Move front post to back\n let moveToBack = false;\n if (UI.multiSpan > 0) {\n if (userDataPos.isMultiSpan && userDataPos.left) {\n moveToBack = true;\n }\n } else {\n if (!userDataPos.isMultiSpan && userDataPos.left) {\n moveToBack = true;\n }\n }\n\n if (moveToBack) {\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n offsetX -= UI.overhangLeft;\n offsetZ -= this.beamLeftCutSizeInfo.v + this.beamLeftCutSizeInfo.k_;\n let length =\n UI.span +\n UI.multiSpan -\n (this.beamLeftCutSizeInfo.v + this.beamLeftCutSizeInfo.k_);\n scaleY =\n (this.utils.getHeightByAngle(\n UI.eaveHeight - this.beamInfo.height,\n length,\n UI.patiosPitch,\n -1\n ) +\n this.offsetYBraket) /\n this.postInfo.height;\n if (UI.isUpFasciaUpstandardBracket) {\n scaleY =\n (this.utils.getHeightByAngle(\n UI.eaveHeight - this.beamInfo.height,\n length,\n UI.patiosPitch,\n 1\n ) +\n this.offsetYBraket) /\n this.postInfo.height;\n }\n\n if (\n UI.rakeCutLeftVer + this.beamLeftCutSizeInfo.k_ >\n this.MANAGER.patiosLength\n ) {\n console.log(\n \"EXCEED_LIMIT LEFT\",\n UI.rakeCutLeftVer,\n this.beamLeftCutSizeInfo.k_,\n this.MANAGER.patiosLength\n );\n exceedMoveBackLimit = true;\n }\n } else if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n let moveBack = UI.rakeCutLeftVer;\n if (moveBack > 0) {\n offsetZ -= moveBack;\n let length = UI.span + UI.multiSpan - moveBack;\n scaleY =\n (this.utils.getHeightByAngle(\n UI.eaveHeight - this.beamInfo.height,\n length,\n UI.patiosPitch,\n -1\n ) +\n this.offsetYBraket) /\n this.postInfo.height;\n if (UI.isUpFasciaUpstandardBracket) {\n scaleY =\n (this.utils.getHeightByAngle(\n UI.eaveHeight - this.beamInfo.height,\n length,\n UI.patiosPitch,\n 1\n ) +\n this.offsetYBraket) /\n this.postInfo.height;\n }\n }\n }\n }\n }\n\n if (\n this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE ||\n this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP\n ) {\n //Move front post to back\n let moveToBack = false;\n if (UI.multiSpan > 0) {\n if (userDataPos.isMultiSpan && userDataPos.right) {\n moveToBack = true;\n }\n } else {\n if (!userDataPos.isMultiSpan && userDataPos.right) {\n moveToBack = true;\n }\n }\n\n if (moveToBack) {\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n offsetX += UI.overhangRight;\n offsetZ -= this.beamRightCutSizeInfo.v + this.beamRightCutSizeInfo.k_;\n let length =\n UI.span +\n UI.multiSpan -\n (this.beamRightCutSizeInfo.v + this.beamRightCutSizeInfo.k_);\n scaleY =\n (this.utils.getHeightByAngle(\n UI.eaveHeight - this.beamInfo.height,\n length,\n UI.patiosPitch,\n -1\n ) +\n this.offsetYBraket) /\n this.postInfo.height;\n if (UI.isUpFasciaUpstandardBracket) {\n scaleY =\n (this.utils.getHeightByAngle(\n UI.eaveHeight - this.beamInfo.height,\n length,\n UI.patiosPitch,\n 1\n ) +\n this.offsetYBraket) /\n this.postInfo.height;\n }\n if (\n UI.rakeCutRightVer + this.beamRightCutSizeInfo.k_ >\n this.MANAGER.patiosLength\n ) {\n console.log(\n \"EXCEED_LIMIT RIGHT\",\n UI.rakeCutRightVer,\n this.beamLeftCutSizeInfo.k_,\n this.MANAGER.patiosLength\n );\n exceedMoveBackLimit = true;\n }\n } else if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n let moveBack = UI.rakeCutRightVer;\n if (moveBack > 0) {\n offsetZ -= moveBack;\n let length = UI.span + UI.multiSpan - moveBack;\n scaleY =\n (this.utils.getHeightByAngle(\n UI.eaveHeight - this.beamInfo.height,\n length,\n UI.patiosPitch,\n -1\n ) +\n this.offsetYBraket) /\n this.postInfo.height;\n if (UI.isUpFasciaUpstandardBracket) {\n scaleY =\n (this.utils.getHeightByAngle(\n UI.eaveHeight - this.beamInfo.height,\n length,\n UI.patiosPitch,\n 1\n ) +\n this.offsetYBraket) /\n this.postInfo.height;\n }\n }\n }\n }\n }\n //End rakecut\n\n if (exceedMoveBackLimit) {\n //console.log(\"EXCEED_LIMIT\");\n return;\n }\n\n mesh.position.set(offsetX, 0, offsetZ + this.offsetBraketZ);\n mesh.scale.setY(scaleY);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n this.scene.add(mesh);\n }\n\n private addUpstandBraketExt(userDataPos: any) {\n if (\n UI.upstandBraketType == 0 ||\n UI.listBay.length == 0 ||\n UI.existingType == 0 ||\n (userDataPos.isMultiSpan && UI.multiSpan == 0)\n ) {\n return;\n }\n if (\n (this.existingType == 1 && userDataPos.right) ||\n (this.existingType == 2 && userDataPos.left)\n ) {\n return;\n }\n let _flag = false;\n\n const condition = UI.span + UI.eaveWidth;\n if (!userDataPos.isMultiSpan && !_flag) {\n if (\n (this.existingType === 1 || this.existingType === 3) &&\n userDataPos.left &&\n (UI.existingWidth1 >= condition ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition &&\n UI.cutOutType == 1))\n ) {\n _flag = true;\n // return;\n }\n if (\n (this.existingType === 2 || this.existingType === 3) &&\n userDataPos.right &&\n (UI.existingWidth1 >= condition ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition &&\n UI.cutOutType == 1))\n ) {\n _flag = true;\n // return;\n }\n } else if (!_flag) {\n if (\n (this.existingType === 1 || this.existingType === 3) &&\n userDataPos.left &&\n (UI.existingWidth1 >= condition + UI.multiSpan ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition + UI.multiSpan &&\n UI.cutOutType == 1))\n ) {\n _flag = true;\n // return;\n }\n if (\n (this.existingType === 2 || this.existingType === 3) &&\n userDataPos.right &&\n (UI.existingWidth1 >= condition + UI.multiSpan ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition + UI.multiSpan &&\n UI.cutOutType == 1))\n ) {\n _flag = true;\n // return;\n }\n }\n if (!_flag) {\n return;\n }\n // if (userDataPos.left && UI.overhangLeft > 0 || userDataPos.right && UI.overhangRight > 0)\n // return;\n\n const _bracketOffsetXExt = this.geoBraket_2.height / 5; // + this.geoBraket_1.width / 4;\n let height = 0;\n let offsetX = -UI.existingLength1 / 2;\n let bayMainLength = UI.totalBayLength;\n if (!AppComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n if (UI.existingType == 1 || UI.existingType == 2) {\n bayMainLength -= UI.existingLength2;\n }\n if (UI.existingType == 3) {\n bayMainLength -= 2 * UI.existingLength2;\n }\n }\n const _cond1 =\n UI.existingWidth1 < condition &&\n UI.existingWidth1 + UI.existingWidth2 > condition;\n const _cond2 =\n userDataPos.isMultiSpan &&\n UI.existingWidth1 < condition + UI.multiSpan &&\n UI.existingWidth1 + UI.existingWidth2 > condition + UI.multiSpan;\n\n if (UI.existingType == 1) {\n offsetX = -bayMainLength / 2;\n if (!AppComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n offsetX = -bayMainLength / 2 + UI.existingLength2 / 2;\n }\n if (\n UI.existingWidth1 < condition ||\n (userDataPos.isMultiSpan &&\n UI.existingWidth1 + UI.existingWidth2 >= condition + UI.multiSpan)\n ) {\n offsetX -= UI.existingLength2;\n }\n offsetX += _bracketOffsetXExt;\n } else if (UI.existingType == 2) {\n offsetX = bayMainLength / 2 - this.geoBraket_1.width;\n if (!AppComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n offsetX -= UI.existingLength2 / 2;\n }\n if (\n UI.existingWidth1 < condition ||\n (userDataPos.isMultiSpan &&\n UI.existingWidth1 + UI.existingWidth2 >= condition + UI.multiSpan)\n ) {\n offsetX += UI.existingLength2;\n }\n offsetX -= _bracketOffsetXExt;\n } else if (UI.existingType == 3) {\n offsetX =\n (-bayMainLength / 2) * (userDataPos.left ? 1 : -1) -\n (userDataPos.right ? this.geoBraket_1.width : 0);\n if ((!userDataPos.isMultiSpan && _cond1) || _cond2) {\n offsetX -=\n UI.existingLength2 * (userDataPos.left ? 1 : -1) +\n (userDataPos.right ? this.geoBraket_1.width : 0);\n }\n offsetX += _bracketOffsetXExt * (userDataPos.left ? 1 : -1);\n }\n let offsetZ =\n -UI.existingWidth1 / 2 +\n UI.eaveWidth -\n (this.geoBraket_2.height / 4 + this.geoBraket_1.width / 2);\n if (userDataPos.isMultiSpan) {\n offsetZ += UI.span + UI.multiSpan - this.beamInfo.width / 2;\n } else {\n offsetZ += UI.span - (UI.multiSpan > 0 ? 0 : this.beamInfo.width / 2);\n }\n if (userDataPos.isMultiSpan) {\n height = this.offsetYBraket - this.getHeightByRoofPitch(false);\n } else {\n height = this.offsetYBraket - this.getHeightByRoofPitch(true);\n }\n let optionBrakets: UpstandBraketOptions = {\n container: this.scene,\n position: new Vector3(),\n geoBraket_1: this.geoBraket_1,\n geoBraket_2:\n UI.existingType == 2 ? this.geoBraketExtR_2 : this.geoBraketExtL_2,\n height: height,\n material: MaterialManager.Instance().FASCIA_BRACKET.clone(),\n };\n if (UI.existingType == 1) {\n optionBrakets = { ...optionBrakets, geoBraket_2: this.geoBraketExtL_2 };\n } else if (UI.existingType == 2) {\n optionBrakets = { ...optionBrakets, geoBraket_2: this.geoBraketExtR_2 };\n } else {\n optionBrakets = {\n ...optionBrakets,\n geoBraket_2: userDataPos.right\n ? this.geoBraketExtR_2\n : this.geoBraketExtL_2,\n };\n }\n new UpstandBraket({\n ...optionBrakets,\n position: new Vector3(\n offsetX,\n UI.existingWallHeight,\n offsetZ + this.offsetBraketZ\n ),\n userData: { type: GEOMETRY_TYPE.UPSTAND_BRAKET_EXT },\n });\n }\n\n public addPostAngelRakecut(offsetX: number, userDataPos: any) {\n if (\n UI.rakeCutLeftType != RAKECUT_TYPE.ANGLE &&\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.ANGLE\n ) {\n return;\n }\n\n let height =\n UI.eaveHeight -\n this.getHeightByRoofPitch(false) -\n this.beamInfo.height +\n this.offsetYBraket;\n let offsetZ =\n UI.span +\n UI.multiSpan +\n UI.eaveWidth -\n this.beamInfo.width / 2 -\n UI.existingWidth1 / 2;\n\n let scaleY = height / this.postInfo.height;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n if (userDataPos.left) {\n let postLeft = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n postLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n postLeft.position.set(\n offsetX + this.beamLeftCutSizeInfo.l,\n 0,\n offsetZ + this.offsetBraketZ\n );\n postLeft.scale.setY(scaleY);\n let isIntersect = false;\n let boxPost = new Box3().setFromObject(postLeft);\n this.scene.children\n .filter((el) => el.userData.type == GEOMETRY_TYPE.SUPERIOR_POST)\n .forEach((el) => {\n el.updateWorldMatrix(true, true);\n let boxEl = new Box3().setFromObject(el);\n if (boxPost.intersectsBox(boxEl)) {\n isIntersect = true;\n }\n });\n\n if (!isIntersect) {\n this.scene.add(postLeft);\n }\n }\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n if (userDataPos.right) {\n let postRight = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n postRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n postRight.position.set(\n offsetX - this.beamRightCutSizeInfo.l,\n 0,\n offsetZ + this.offsetBraketZ\n );\n postRight.scale.setY(scaleY);\n let isIntersect = false;\n let boxPost = new Box3().setFromObject(postRight);\n this.scene.children\n .filter((el) => el.userData.type == GEOMETRY_TYPE.SUPERIOR_POST)\n .forEach((el) => {\n el.updateWorldMatrix(true, true);\n let boxEl = new Box3().setFromObject(el);\n if (boxPost.intersectsBox(boxEl)) {\n isIntersect = true;\n }\n });\n\n if (!isIntersect) {\n this.scene.add(postRight);\n }\n }\n }\n }\n private addPostStepRakecut() {\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n let userDataPos = { rakecut: true };\n\n let offsetZF =\n UI.span +\n UI.multiSpan +\n UI.eaveWidth -\n UI.existingWidth1 / 2 -\n this.postInfo.width / 2;\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n let offsetXL = -UI.totalBayLength / 2;\n\n let scaleYF =\n (this.utils.getHeightByAngle(\n UI.eaveHeight - this.beamInfo.height,\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n -1\n ) +\n this.offsetYBraket) /\n this.postInfo.height;\n\n if (UI.isUpFasciaUpstandardBracket) {\n scaleYF =\n (this.utils.getHeightByAngle(\n UI.eaveHeight - this.beamInfo.height,\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n 1\n ) +\n this.offsetYBraket) /\n this.postInfo.height;\n }\n\n let scaleYB = scaleYF;\n\n let offsetZB = offsetZF;\n\n let moveRight = UI.rakeCutLeftHor - UI.overhangLeft;\n if (moveRight > 0) {\n offsetXL += moveRight;\n }\n\n let moveBack = UI.rakeCutLeftVer;\n if (moveBack > 0) {\n offsetZB -= moveBack;\n scaleYB =\n (this.utils.getHeightByAngle(\n UI.eaveHeight - this.beamInfo.height,\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n -1\n ) +\n this.offsetYBraket) /\n this.postInfo.height;\n if (UI.isUpFasciaUpstandardBracket) {\n scaleYB =\n (this.utils.getHeightByAngle(\n UI.eaveHeight - this.beamInfo.height,\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n 1\n ) +\n this.offsetYBraket) /\n this.postInfo.height;\n }\n }\n\n let postFront = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n postFront.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n postFront.position.set(\n offsetXL + this.postInfo.width / 2,\n 0,\n offsetZF + this.offsetBraketZ\n );\n postFront.scale.setY(scaleYF);\n this.scene.add(postFront);\n\n let postBack = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n postBack.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n postBack.position.set(\n offsetXL + this.postInfo.width / 2,\n 0,\n offsetZB + this.offsetBraketZ\n );\n postBack.scale.setY(scaleYB);\n this.scene.add(postBack);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n let offsetXR = UI.totalBayLength / 2 - this.postInfo.width;\n\n let scaleYF =\n (this.utils.getHeightByAngle(\n UI.eaveHeight - this.beamInfo.height,\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n -1\n ) +\n this.offsetYBraket) /\n this.postInfo.height;\n if (UI.isUpFasciaUpstandardBracket) {\n scaleYF =\n (this.utils.getHeightByAngle(\n UI.eaveHeight - this.beamInfo.height,\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n 1\n ) +\n this.offsetYBraket) /\n this.postInfo.height;\n }\n\n let scaleYB = scaleYF;\n\n let offsetZB = offsetZF;\n\n let moveLeft = UI.rakeCutRightHor - UI.overhangRight;\n if (moveLeft > 0) {\n offsetXR -= moveLeft;\n }\n\n let moveBack = UI.rakeCutRightVer;\n if (moveBack > 0) {\n offsetZB -= moveBack;\n scaleYB =\n (this.utils.getHeightByAngle(\n UI.eaveHeight - this.beamInfo.height,\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n -1\n ) +\n this.offsetYBraket) /\n this.postInfo.height;\n if (UI.isUpFasciaUpstandardBracket) {\n scaleYB =\n (this.utils.getHeightByAngle(\n UI.eaveHeight - this.beamInfo.height,\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n 1\n ) +\n this.offsetYBraket) /\n this.postInfo.height;\n }\n }\n\n let postFront = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n postFront.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n postFront.position.set(\n offsetXR + this.postInfo.width / 2,\n 0,\n offsetZF + this.offsetBraketZ\n );\n postFront.scale.setY(scaleYF);\n this.scene.add(postFront);\n\n let postBack = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n postBack.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n postBack.position.set(\n offsetXR + this.postInfo.width / 2,\n 0,\n offsetZB + this.offsetBraketZ\n );\n postBack.scale.setY(scaleYB);\n this.scene.add(postBack);\n }\n }\n public addBeam(userDataPos: any) {\n if (userDataPos.isMultiSpan && UI.multiSpan === 0) {\n return;\n }\n\n let offsetY = 0;\n let offsetZ = -UI.existingWidth1 / 2 + UI.eaveWidth;\n let offsetXL = -(this.totalBaySize / 2 + UI.overhangLeft);\n let offsetXR = this.totalBaySize / 2 + UI.overhangRight;\n\n let beamLength = this.roofWidth;\n\n const condition = UI.span + UI.eaveWidth;\n let _flag = false;\n if (\n (userDataPos.isMultiSpan &&\n UI.existingWidth1 >= condition + UI.multiSpan) ||\n (!userDataPos.isMultiSpan && UI.existingWidth1 >= condition)\n ) {\n _flag = true;\n }\n // switch (this.existingType) {\n // case 1:\n // if (_flag) {\n // beamLength = this.roofWidth + UI.eaveWidth;\n // offsetXL -= UI.eaveWidth;//(this.existingTypeLeftX - this.existingTypeRightX) / 2 - (this.existingTypeLeftX / 2);\n // }\n // break;\n // case 2:\n // if (_flag) {\n // beamLength = this.roofWidth + UI.eaveWidth;\n // //offsetX = (this.existingTypeLeftX - this.existingTypeRightX) / 2 + (this.existingTypeRightX / 2);\n // offsetXR += UI.eaveWidth;\n // }\n // break;\n // case 3:\n // if (_flag) {\n // offsetXL -= UI.eaveWidth;\n // offsetXR += UI.eaveWidth;\n // beamLength = this.roofWidth + UI.eaveWidth * 2;\n // }\n // break;\n // }\n if (userDataPos.isMultiSpan) {\n offsetY =\n UI.eaveHeight - this.getHeightByRoofPitch(false) + this.offsetYBraket;\n offsetZ += UI.span + UI.multiSpan - this.beamInfo.width / 2;\n } else {\n offsetY =\n UI.eaveHeight - this.getHeightByRoofPitch(true) + this.offsetYBraket;\n offsetZ += UI.span - (UI.multiSpan > 0 ? 0 : this.beamInfo.width / 2);\n }\n //offsetY -= this.geometryManager.SUPERIOR_BEAM.S65x160.height / 2;\n let views: Print2DView[] = [];\n if (userDataPos.isMultiSpan) {\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else {\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n //Cutout\n if (\n !userDataPos.isMultiSpan &&\n this.APP.sltCutOut.currentValue == 1 &&\n this.MANAGER.cutoutCondition\n ) {\n if (UI.span + UI.eaveWidth <= UI.existingWidth1) {\n if (this.APP.sltExistingType.currentValue == 1) {\n offsetXL += this.APP.sldExistingLength2.currentValue;\n beamLength =\n this.roofWidth - this.APP.sldExistingLength2.currentValue; // + UI.eaveWidth;\n } else if (this.APP.sltExistingType.currentValue == 2) {\n offsetXR -= this.APP.sldExistingLength2.currentValue;\n beamLength =\n this.roofWidth - this.APP.sldExistingLength2.currentValue; // + UI.eaveWidth;\n } else if (this.APP.sltExistingType.currentValue == 3) {\n offsetXL += this.APP.sldExistingLength2.currentValue;\n offsetXR -= this.APP.sldExistingLength2.currentValue;\n beamLength =\n this.roofWidth - this.APP.sldExistingLength2.currentValue * 2; // + UI.eaveWidth;\n }\n } else if (\n UI.span + UI.eaveWidth > UI.existingWidth1 &&\n UI.span + UI.eaveWidth < UI.existingWidth1 + UI.eaveWidth\n ) {\n if (this.APP.sltExistingType.currentValue == 1) {\n offsetXL += this.APP.sldExistingLength2.currentValue;\n beamLength =\n this.roofWidth - this.APP.sldExistingLength2.currentValue;\n } else if (this.APP.sltExistingType.currentValue == 2) {\n offsetXR -= this.APP.sldExistingLength2.currentValue;\n beamLength =\n this.roofWidth - this.APP.sldExistingLength2.currentValue;\n } else if (this.APP.sltExistingType.currentValue == 3) {\n offsetXL += this.APP.sldExistingLength2.currentValue;\n offsetXR -= this.APP.sldExistingLength2.currentValue;\n beamLength =\n this.roofWidth - this.APP.sldExistingLength2.currentValue * 2;\n }\n }\n // else{\n // if(this.APP.sltExistingType.currentValue == 1){\n // offsetXL -= this.APP.sldExistingLength2.currentValue;\n // scaleX = this.roofWidth / this.beamInfo.length;\n // }\n // else if(this.APP.sltExistingType.currentValue == 2){\n // offsetXR += this.APP.sldExistingLength2.currentValue;\n // scaleX = this.roofWidth / this.beamInfo.length;\n // }\n // else if(this.APP.sltExistingType.currentValue == 3){\n // offsetXL -= this.APP.sldExistingLength2.currentValue;\n // offsetXR += this.APP.sldExistingLength2.currentValue;\n // scaleX = this.roofWidth / this.beamInfo.length;\n // }\n // }\n }\n\n //rake cut - apply only the front beam\n if (UI.multiSpan <= 0 || (UI.multiSpan > 0 && userDataPos.isMultiSpan)) {\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n offsetXL += this.beamLeftCutSizeInfo.l;\n beamLength -= this.beamLeftCutSizeInfo.l;\n } else if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n offsetXL += UI.rakeCutLeftHor;\n beamLength -= UI.rakeCutLeftHor;\n }\n\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n offsetXR -= this.beamRightCutSizeInfo.l;\n beamLength -= this.beamRightCutSizeInfo.l;\n } else if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n offsetXR -= UI.rakeCutRightHor;\n beamLength -= UI.rakeCutRightHor;\n }\n }\n\n this.cutStandardBeamByCutBeamWithinBayControl(\n this.beamInfo,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetXL, offsetY, offsetZ + this.offsetBraketZ),\n new Vector3(),\n views,\n 1,\n userDataPos,\n 0,\n \"x\",\n this.geoBeamJoint\n );\n }\n private cutStandardBeamToEqualLengthBeam(\n beamGeo: GeometryInfo,\n beamCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n userDataPos: any,\n beamGeoTranslationZ: number,\n beamDirection: string,\n jointGeo: GeometryInfo\n ) {\n const beamStartX = pos.x;\n const beamEndX = pos.x + length;\n\n const numOfBeam = Math.ceil(\n length / EXISTING_BUILDING_CONFIG.MAXIMUM_LENGTH_PER_BEAM\n );\n const lengthPerBeam = Math.abs(beamEndX - beamStartX) / numOfBeam;\n for (let i = 0; i < numOfBeam; i++) {\n let beamGroup = this.utils.createBeamGroup2(\n beamGeo,\n beamCapGeo,\n lengthPerBeam,\n new Vector3(beamStartX + lengthPerBeam * i, pos.y, pos.z),\n rot,\n views,\n directionOffset,\n userDataPos,\n beamGeoTranslationZ,\n beamDirection,\n UI.beamLayoutShow,\n {\n hasStartCap: UI.beamType == 0 && i == 0,\n hasEndCap:\n UI.beamType == 0 &&\n (i == numOfBeam - 1 || (i == 0 && numOfBeam == 1)),\n hasStartJoint: i !== 0,\n hasEndJoint: false,\n jointGeo: jointGeo,\n }\n );\n this.scene.add(beamGroup);\n }\n }\n private cutStandardBeamByCutBeamWithinBayControl(\n beamGeo: GeometryInfo,\n beamCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n userDataPos: any,\n beamGeoTranslationZ: number,\n beamDirection: string,\n jointGeo: GeometryInfo\n ) {\n // Map list cut beam here\n const beamStartX = pos.x;\n const beamEndX = pos.x + length;\n\n let endOfBayX = -UI.totalBayLength / 2;\n let startCutBeamX = beamStartX;\n let endCutBeamX = beamStartX;\n\n const beams = this.utils.getListSeperateBeamsByBays(\n endOfBayX,\n beamStartX,\n beamEndX,\n endCutBeamX,\n startCutBeamX\n );\n\n for (let i = 0; i < beams.length; i++) {\n endCutBeamX = beams[i][1];\n startCutBeamX = beams[i][0];\n let beamGroup = this.utils.createBeamGroup2(\n beamGeo,\n beamCapGeo,\n endCutBeamX - startCutBeamX,\n new Vector3(startCutBeamX, pos.y, pos.z),\n rot,\n views,\n directionOffset,\n userDataPos,\n beamGeoTranslationZ,\n beamDirection,\n UI.beamLayoutShow,\n {\n hasStartCap: UI.beamType == 0 && i == 0,\n hasEndCap:\n UI.beamType == 0 &&\n (i == beams.length - 1 || (i == 0 && beams.length == 1)),\n hasStartJoint: i !== 0,\n hasEndJoint: false,\n jointGeo: jointGeo,\n }\n );\n this.scene.add(beamGroup);\n }\n }\n private addBeamAngelRakecut() {\n if (\n UI.rakeCutLeftType == RAKECUT_TYPE.NONE &&\n UI.rakeCutRightType == RAKECUT_TYPE.NONE\n ) {\n return;\n }\n\n let offsetZ = UI.span + UI.multiSpan + UI.eaveWidth - UI.existingWidth1 / 2;\n\n let offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight,\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n -1\n ) + this.offsetYBraket;\n if (UI.isUpFasciaUpstandardBracket) {\n offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight,\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n 1\n ) + this.offsetYBraket;\n }\n\n let offsetXStart = 0;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n let rotX = this.utils.degreesToRadians(UI.patiosPitch);\n if (UI.isUpFasciaUpstandardBracket) {\n rotX = -rotX;\n }\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n let offsetX =\n -this.totalBaySize / 2 - UI.overhangLeft + this.beamLeftCutSizeInfo.l;\n let beamLength = this.beamLeftCutSizeInfo.m;\n let scaleZ = beamLength / this.beamRakecutInfoLeft.length;\n let rotYL = Math.atan(UI.rakeCutLeftHor / UI.rakeCutLeftVer);\n\n //beam lenght can not go behind existing wall\n if (\n UI.rakeCutLeftVer + this.beamLeftCutSizeInfo.k_ >\n this.MANAGER.patiosLength\n ) {\n beamLength -= this.beamLeftCutSizeInfo.b;\n scaleZ = beamLength / this.beamRakecutInfoLeft.length;\n }\n\n let offsetXEnd = beamLength;\n\n const mesh = new Mesh(\n this.beamRakecutInfoLeft.geometry,\n MaterialManager.Instance().BEAM\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n };\n mesh.scale.setZ(scaleZ);\n\n let capL = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capL.position.set(\n this.geo_beamEndCap.width / 2,\n 0,\n -(offsetXEnd + this.geo_beamEndCap.length / 2 - 2)\n );\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let capR = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capR.position.set(\n this.geo_beamEndCap.width / 2,\n 0,\n offsetXStart - this.geo_beamEndCap.length / 2 + 2\n );\n capR.rotateY(Math.PI);\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n angle: true,\n };\n beamGroup.position.set(offsetX, offsetY, offsetZ + this.offsetBraketZ);\n beamGroup.rotation.set(0, rotYL, 0);\n beamGroup.updateMatrixWorld();\n let matrix = beamGroup.matrixWorld;\n\n if (beamLength > 8000) {\n this.addPostForBeamAngelRakecut(BUILDING_SIDE.LEFT, matrix);\n }\n\n beamGroup.rotation.set(rotX, rotYL, 0);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n\n this.scene.add(beamGroup);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n //let beamSizeInfo = this.getBeamRakeCutInfo(BUILDING_SIDE.RIGHT);\n let offsetX =\n this.totalBaySize / 2 + UI.overhangRight - this.beamRightCutSizeInfo.l;\n let beamLength = this.beamRightCutSizeInfo.m;\n let scaleZ = beamLength / this.beamRakecutInfoLeft.length;\n let rotYR = Math.atan(UI.rakeCutRightHor / UI.rakeCutRightVer);\n\n //beam lenght can not go behind existing wall\n if (\n UI.rakeCutRightVer + this.beamRightCutSizeInfo.k_ >\n this.MANAGER.patiosLength\n ) {\n beamLength -= this.beamRightCutSizeInfo.b;\n scaleZ = beamLength / this.beamRakecutInfoRight.length;\n }\n\n let offsetXEnd = beamLength;\n\n const mesh = new Mesh(\n this.beamRakecutInfoRight.geometry,\n MaterialManager.Instance().BEAM\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n };\n mesh.scale.setZ(scaleZ);\n\n let capL = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capL.position.set(\n -this.geo_beamEndCap.width / 2,\n 0,\n -(offsetXEnd + this.geo_beamEndCap.length / 2 - 2)\n );\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let capR = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capR.position.set(\n -this.geo_beamEndCap.width / 2,\n 0,\n offsetXStart - this.geo_beamEndCap.length / 2 + 2\n );\n capR.rotateY(Math.PI);\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n angle: true,\n };\n beamGroup.position.set(offsetX, offsetY, offsetZ + this.offsetBraketZ);\n beamGroup.rotation.set(0, -rotYR, 0);\n beamGroup.updateMatrixWorld();\n let matrix = beamGroup.matrixWorld;\n if (beamLength > 8000) {\n this.addPostForBeamAngelRakecut(BUILDING_SIDE.RIGHT, matrix);\n }\n\n beamGroup.rotation.set(rotX, -rotYR, 0);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n this.scene.add(beamGroup);\n }\n }\n private addBeamStepRakecut() {\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n let offsetXL = -UI.totalBayLength / 2 - UI.overhangLeft;\n let offsetZ =\n UI.span + UI.multiSpan + UI.eaveWidth - UI.existingWidth1 / 2;\n let offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight,\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n -1\n ) + this.offsetYBraket;\n if (UI.isUpFasciaUpstandardBracket) {\n offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight,\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n 1\n ) + this.offsetYBraket;\n }\n\n let moveBack = UI.rakeCutLeftVer;\n if (moveBack > 0) {\n offsetZ -= moveBack;\n offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight,\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n -1\n ) + this.offsetYBraket;\n if (UI.isUpFasciaUpstandardBracket) {\n offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight,\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n 1\n ) + this.offsetYBraket;\n }\n }\n\n let beamLength = UI.rakeCutLeftHor + this.postInfo.width;\n if (UI.rakeCutLeftHor < UI.overhangLeft) {\n beamLength = UI.overhangLeft + this.postInfo.width;\n }\n\n let beamGroup;\n\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup = this.utils.createBeamGroup2(\n this.geo_beamStepRakecutLeft,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetXL, offsetY, offsetZ + this.offsetBraketZ),\n new Vector3(),\n views,\n 1,\n null,\n -this.geo_beamEndCap.width / 2,\n \"x\",\n false,\n {\n hasStartCap: UI.beamType == 0,\n hasEndCap: UI.beamType == 0,\n hasStartJoint: false,\n hasEndJoint: false,\n jointGeo: null,\n }\n );\n } else {\n beamGroup = this.utils.createBeamGroup2(\n this.geo_beamStepRakecutLeft,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetXL, offsetY, offsetZ + this.offsetBraketZ),\n new Vector3(),\n views,\n 1,\n null,\n -this.geo_beamEndCap.width / 2,\n \"x\",\n false,\n {\n hasStartCap: UI.beamType == 0,\n hasEndCap: UI.beamType == 0,\n hasStartJoint: false,\n hasEndJoint: false,\n jointGeo: null,\n }\n );\n }\n\n this.scene.add(beamGroup);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n let offsetXR = UI.totalBayLength / 2 + UI.overhangRight;\n let offsetZ =\n UI.span + UI.multiSpan + UI.eaveWidth - UI.existingWidth1 / 2;\n let offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight,\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n -1\n ) + this.offsetYBraket;\n if (UI.isUpFasciaUpstandardBracket) {\n offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight,\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n 1\n ) + this.offsetYBraket;\n }\n\n let moveBack = UI.rakeCutRightVer;\n if (moveBack > 0) {\n offsetZ -= moveBack;\n offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight,\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n -1\n ) + this.offsetYBraket;\n if (UI.isUpFasciaUpstandardBracket) {\n offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight,\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n 1\n ) + this.offsetYBraket;\n }\n }\n let beamLength = UI.rakeCutRightHor + this.postInfo.width;\n if (UI.rakeCutRightHor < UI.overhangRight) {\n beamLength = UI.overhangRight + this.postInfo.width;\n }\n\n let beamGroup;\n\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup = this.utils.createBeamGroup2(\n this.geo_beamStepRakecutRight,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetXR, offsetY, offsetZ + this.offsetBraketZ),\n new Vector3(),\n views,\n -1,\n null,\n -this.geo_beamEndCap.width / 2,\n \"x\",\n false,\n {\n hasStartCap: UI.beamType == 0,\n hasEndCap: UI.beamType == 0,\n hasStartJoint: false,\n hasEndJoint: false,\n jointGeo: null,\n }\n );\n } else {\n beamGroup = this.utils.createBeamGroup2(\n this.geo_beamStepRakecutRight,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetXR, offsetY, offsetZ + this.offsetBraketZ),\n new Vector3(),\n views,\n -1,\n null,\n -this.geo_beamEndCap.width / 2,\n \"x\",\n false,\n {\n hasStartCap: UI.beamType == 0,\n hasEndCap: UI.beamType == 0,\n hasStartJoint: false,\n hasEndJoint: false,\n jointGeo: null,\n }\n );\n }\n\n this.scene.add(beamGroup);\n }\n }\n private getHeightByRoofPitch(isSpan: boolean): number {\n if (isSpan) {\n if (UI.isUpFasciaUpstandardBracket) {\n return -this.utils.tan(UI.patiosPitch) * UI.span;\n } else {\n return this.utils.tan(UI.patiosPitch) * UI.span;\n }\n } else {\n if (UI.isUpFasciaUpstandardBracket) {\n return -this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan);\n } else {\n return this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan);\n }\n }\n }\n private addPostForBeamAngelRakecut(\n cutSide: BUILDING_SIDE,\n beamMatrix: Matrix4\n ) {\n //let inf = this.getBeamRakeCutInfo(cutSide);\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n if (cutSide == BUILDING_SIDE.LEFT) {\n let p1 = new Vector3(\n -UI.totalBayLength / 2 - UI.overhangLeft,\n 2500,\n -UI.existingWidth1 / 2 + UI.span + UI.multiSpan\n );\n let p2 = new Vector3().addVectors(\n p1,\n new Vector3(0, 0, -1).multiplyScalar(this.beamLeftCutSizeInfo.j)\n );\n let p3 = new Vector3().addVectors(\n p1,\n new Vector3(1, 0, 0).multiplyScalar(this.beamLeftCutSizeInfo.l)\n );\n let angle = Math.atan(UI.rakeCutLeftHor / UI.rakeCutLeftVer);\n\n let ver = (Math.cos(angle) * this.beamLeftCutSizeInfo.m) / 2;\n let pMid = new Vector3().addVectors(\n p2,\n new Vector3(0, 0, 1).multiplyScalar(ver)\n );\n let pOri = new Vector3(\n -UI.totalBayLength / 2 + UI.overhangLeft,\n 2500,\n -UI.existingWidth1 / 2\n );\n\n let dir = new Vector3().subVectors(p2, p3).normalize();\n let pMid2 = new Vector3().addVectors(\n p3,\n dir.multiplyScalar(this.beamLeftCutSizeInfo.m / 2)\n );\n\n let length = new Vector3().subVectors(pMid, pOri).length();\n let height = this.utils.getHeightByAngle(\n UI.eaveHeight - this.beamInfo.height,\n length,\n UI.patiosPitch,\n -1\n );\n\n let scaleY = height / this.postInfo.height;\n\n let postLeft = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n postLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: { rakecut: true },\n views: views,\n };\n postLeft.position.set(pMid2.x, 0, pMid2.z);\n //postLeft.rotation.set(0,this.utils.degreesToRadians(UI.patiosPitch),0);\n //postLeft.applyMatrix4(beamMatrix);\n //postLeft.position.setY(-height/2);\n postLeft.scale.setY(scaleY);\n this.scene.add(postLeft);\n }\n if (cutSide == BUILDING_SIDE.RIGHT) {\n let p1 = new Vector3(\n UI.totalBayLength / 2 + UI.overhangRight,\n 2500,\n -UI.existingWidth1 / 2 + UI.span + UI.multiSpan\n );\n let p2 = new Vector3().addVectors(\n p1,\n new Vector3(0, 0, -1).multiplyScalar(this.beamRightCutSizeInfo.j)\n );\n let p3 = new Vector3().addVectors(\n p1,\n new Vector3(-1, 0, 0).multiplyScalar(this.beamRightCutSizeInfo.l)\n );\n let angle = Math.atan(UI.rakeCutRightHor / UI.rakeCutRightVer);\n\n let ver = (Math.cos(angle) * this.beamRightCutSizeInfo.m) / 2;\n let pMid = new Vector3().addVectors(\n p2,\n new Vector3(0, 0, 1).multiplyScalar(ver)\n );\n let pOri = new Vector3(\n UI.totalBayLength / 2 + UI.overhangRight,\n 2500,\n -UI.existingWidth1 / 2\n );\n\n let dir = new Vector3().subVectors(p2, p3).normalize();\n let pMid2 = new Vector3().addVectors(\n p3,\n dir.multiplyScalar(this.beamRightCutSizeInfo.m / 2)\n );\n\n let length = new Vector3().subVectors(pMid, pOri).length();\n let height = this.utils.getHeightByAngle(\n UI.eaveHeight - this.beamInfo.height,\n length,\n UI.patiosPitch,\n -1\n );\n\n let scaleY = height / this.postInfo.height;\n\n let postRight = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n postRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: { rakecut: true },\n views: views,\n };\n postRight.position.set(pMid2.x, 0, pMid2.z);\n postRight.scale.setY(scaleY);\n this.scene.add(postRight);\n }\n }\n}\n","import {\n BoxBufferGeometry,\n BufferGeometry,\n Color,\n Geometry,\n Group,\n LineSegments,\n Material,\n Matrix4,\n Mesh,\n MeshLambertMaterial,\n Object3D,\n Plane,\n Vector3,\n} from \"three\";\nimport { GEOMETRY_CATEGORY, GEOMETRY_TYPE } from \"../../app.config\";\nimport {\n BUILDING_SIDE,\n CUTOUT_ENABLE,\n EXISTING_BUILDING_CONFIG as CONST,\n EXISTING_BUILDING_CONFIG,\n PANEL_DIRECTION,\n RAKECUT_TYPE,\n CONNECTION_TYPE,\n} from \"../../app.constants\";\nimport { Util } from \"../utils\";\n// import { AppComponent } from '../../app.component';\nimport HighLightBox from \"src/app/models/HighlightBox\";\nimport { CSG } from \"three-csg-ts\";\nimport { FasciaManager } from \".\";\nimport { HomeComponent as AppComponent } from \"../../containers/home/home.component\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport {\n GeometryInfo,\n LineType,\n Print2DView,\n Printing2DGeometry,\n Printing2DLine,\n ViewType,\n} from \"../models\";\nimport { UI } from \"../ui\";\n\nexport class RoofManager {\n private scene: Group;\n private APP: AppComponent;\n private MANAGER: FasciaManager;\n private material: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private roofInfo: GeometryInfo;\n private roofBaseInfo: GeometryInfo;\n private zFlashingGeo: GeometryInfo;\n private zFlashingRakecutRightGeo: GeometryInfo;\n private bargeLeftInfo: GeometryInfo;\n private bargeRightInfo: GeometryInfo;\n private bargeFrontInfo: GeometryInfo;\n private bargeBackInfo: GeometryInfo;\n private geoReceiveChannelLeftInfo: GeometryInfo;\n private geoReceiveChannelRightInfo: GeometryInfo;\n private geo_bargeCutoutLeftHor: GeometryInfo;\n private geo_bargeCutoutRightHor: GeometryInfo;\n private geo_bargeRakecutLeft: GeometryInfo;\n private geo_bargeRakecutRight: GeometryInfo;\n private receiverCutoutLeftHor: GeometryInfo;\n private receiverCutoutLeftVer: GeometryInfo;\n private receiverCutoutRightHor: GeometryInfo;\n private receiverCutoutRightVer: GeometryInfo;\n private gutterInfo: GeometryInfo;\n private gutterRakecutLeftInfo: GeometryInfo;\n private gutterRakecutRightInfo: GeometryInfo;\n //private flashingInfo: GeometryInfo;\n private geo_receiverChanel: GeometryInfo;\n private geo_gutterCap: GeometryInfo;\n public geoBraket_1: GeometryInfo;\n public geoBraket_2: GeometryInfo;\n private geoBeam: GeometryInfo;\n private geoBeamEndCap: GeometryInfo;\n private eventHandleId: any;\n // Var\n private roofLength: number;\n private roofLengthPlus: number;\n private roofWidth: number;\n //private existingTypeLeftX: number;\n //private existingTypeRightX: number;\n private existingType: number;\n private totalBaySize: number;\n private objectSizeChangedHandle: any;\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n\n private mesh_CutoutLeft: Mesh;\n private csg_cutoutLeft: CSG;\n private mesh_CutoutRight: Mesh;\n private csg_cutoutRight: CSG;\n private geo_cutoutLeft: BoxBufferGeometry;\n private geo_cutoutRight: BoxBufferGeometry;\n\n private geo_rakecutLeft: BoxBufferGeometry;\n private geo_rakecutRight: BoxBufferGeometry;\n private mesh_rakecutLeft: Mesh;\n private mesh_rakecutRight: Mesh;\n private csg_rakecutLeft: CSG;\n private csg_rakecutRight: CSG;\n\n private geoCutGutter: BoxBufferGeometry;\n private meshCutGutterLeft1: Mesh;\n private csgCutGutterLeft1: CSG;\n private meshCutGutterLeft2: Mesh;\n private csgCutGutterLeft2: CSG;\n\n private meshCutGutterRight1: Mesh;\n private csgCutGutterRight1: CSG;\n private meshCutGutterRight2: Mesh;\n private csgCutGutterRight2: CSG;\n\n private roofGroup: Group;\n private cutoutExistingBothLength: number;\n\n private offsetBraketZ: number = 0;\n\n public shouldSnapRoofToExistingWhenCutout: boolean = false;\n\n constructor(app: AppComponent, fasciaManager: FasciaManager) {\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.APP = app;\n this.MANAGER = fasciaManager;\n this.scene = new Group();\n fasciaManager.patiosGroup.add(this.scene)\n this.material = MaterialManager.Instance().ROOF;\n this.registerEvent();\n }\n public destroy(): void {\n this.unregisterEvent();\n }\n public uiChanged(preVal: number, curVal: number): void {\n this.load();\n }\n private objectSizeChanged(preVal: number, curVal: number) {\n this.optimize().then(() => {\n this.load();\n });\n }\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldBaySize,\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldExistingWallHeight,\n this.APP.sldFrontOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldLeftOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldExistingWidth1,\n this.APP.sldNoOfBay,\n this.APP.dialogEditBay,\n this.APP.sldEaveWidth,\n this.APP.sltExistingType,\n this.APP.sltColourDownpipe,\n ];\n //this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n this.controlsToRegisterEvent2 = [\n this.APP.sltRoofSheetingType,\n this.APP.sltRoofThickness,\n this.APP.sltBargeType,\n this.APP.sltDripBarge,\n this.APP.sltGutterType,\n this.APP.sltBeamSize,\n this.APP.sltHouseBeamSize,\n ];\n this.controlsToRegisterEvent2.forEach((c) =>\n c.addAction(this.objectSizeChangedHandle)\n );\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach((c) =>\n c.removeAction(this.objectSizeChangedHandle)\n );\n this.controlsToRegisterEvent2 = undefined;\n }\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n this.roofInfo = this.geometryManager.getRoofSheetPanel();\n this.roofInfo.geometry.translate(\n this.roofInfo.width / 2 + 3,\n -1,\n this.roofInfo.length / 2\n );\n\n this.roofBaseInfo = this.geometryManager.getRoofBase();\n this.roofBaseInfo.geometry.translate(\n this.roofBaseInfo.width / 2,\n this.roofBaseInfo.height / 2,\n this.roofBaseInfo.length / 2\n );\n\n this.zFlashingGeo = this.geometryManager.getZFlashing();\n this.zFlashingRakecutRightGeo = this.geometryManager.getZFlashing();\n this.zFlashingRakecutRightGeo.geometry.translate(\n -this.zFlashingRakecutRightGeo.length,\n 0,\n 0\n );\n\n // Barge capping\n this.bargeLeftInfo = this.geometryManager.getBarge();\n this.bargeLeftInfo.geometry\n .rotateY(Math.PI)\n .translate(\n this.bargeLeftInfo.width / 2 - 3,\n this.bargeLeftInfo.height / 2 -\n (this.APP.sltDripBarge.currentValue ? 9 : 1),\n this.bargeLeftInfo.length / 2\n );\n \n this.geoReceiveChannelLeftInfo = this.geometryManager.getReceiverChannel();\n this.geoReceiveChannelLeftInfo.geometry\n .rotateY(Math.PI)\n .translate(\n this.geoReceiveChannelLeftInfo.width / 2,\n this.geoReceiveChannelLeftInfo.height / 2,\n this.geoReceiveChannelLeftInfo.length / 2\n );\n\n this.bargeRightInfo = this.geometryManager.getBarge();\n this.bargeRightInfo.geometry.translate(\n -this.bargeRightInfo.width / 2 + 3,\n this.bargeRightInfo.height / 2 -\n (this.APP.sltDripBarge.currentValue ? 9 : 1),\n this.bargeRightInfo.length / 2\n );\n\n this.geoReceiveChannelRightInfo = this.geometryManager.getReceiverChannel();\n this.geoReceiveChannelRightInfo.geometry\n .translate(\n - this.geoReceiveChannelRightInfo.width / 2,\n this.geoReceiveChannelRightInfo.height / 2,\n this.geoReceiveChannelRightInfo.length / 2\n );\n\n //Barge cutout left\n this.receiverCutoutLeftHor = this.geometryManager.getReceiverChannel();\n this.receiverCutoutLeftHor.geometry\n .rotateY(Math.PI / 2)\n .translate(\n -this.receiverCutoutLeftHor.length / 2,\n this.receiverCutoutLeftHor.height / 2,\n this.receiverCutoutLeftHor.width / 2\n );\n\n //Barge cutout right\n this.receiverCutoutRightHor = this.geometryManager.getReceiverChannel();\n this.receiverCutoutRightHor.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.receiverCutoutLeftHor.length / 2,\n this.receiverCutoutLeftHor.height / 2,\n this.receiverCutoutLeftHor.width / 2\n );\n\n //Vertical Barge cutout left\n this.receiverCutoutLeftVer = this.geometryManager.getReceiverChannel();\n this.receiverCutoutLeftVer.geometry\n .rotateY(Math.PI)\n .translate(\n this.receiverCutoutLeftVer.width / 2,\n this.receiverCutoutLeftVer.height / 2,\n this.receiverCutoutLeftVer.length / 2\n );\n\n //Vertical cutout right\n this.receiverCutoutRightVer = this.geometryManager.getReceiverChannel();\n this.receiverCutoutRightVer.geometry.translate(\n -this.receiverCutoutRightVer.width / 2,\n this.receiverCutoutRightVer.height / 2,\n this.receiverCutoutRightVer.length / 2\n );\n\n //Receiver chanel - barge caping back\n this.geo_receiverChanel = this.geometryManager.getReceiverChannel();\n this.geo_receiverChanel.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_receiverChanel.length / 2,\n this.geo_receiverChanel.height / 2 + 2,\n this.geo_receiverChanel.width / 2\n );\n\n // Gutter\n this.gutterInfo = this.geometryManager.getGutter();\n this.gutterInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.gutterInfo.length / 2, -20, this.gutterInfo.width / 2);\n\n this.gutterRakecutLeftInfo = this.geometryManager.getGutter();\n this.gutterRakecutLeftInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(\n this.gutterRakecutLeftInfo.length / 2,\n -20,\n this.gutterRakecutLeftInfo.width / 2\n );\n\n this.gutterRakecutRightInfo = this.geometryManager.getGutter();\n this.gutterRakecutRightInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(\n -this.gutterRakecutRightInfo.length / 2,\n -20,\n this.gutterRakecutRightInfo.width / 2\n );\n\n //Gutter cap\n this.geo_gutterCap = this.geometryManager.getGuterEndCap();\n this.geo_gutterCap.geometry\n .rotateY(-Math.PI / 2)\n .translate(0, -20, this.geo_gutterCap.length / 2);\n\n this.geo_cutoutLeft = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_cutoutLeft.translate(-500, 0, -500);\n\n this.geo_cutoutRight = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_cutoutRight.translate(500, 0, -500);\n\n this.geo_rakecutLeft = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_rakecutLeft.translate(-500, 500, 500);\n this.geo_rakecutRight = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_rakecutRight.translate(500, 500, 500);\n\n this.geoCutGutter = new BoxBufferGeometry(800, 10000, 500);\n this.geoCutGutter.translate(0, 0, -250);\n\n this.geoBraket_1 = this.geometryManager.getUpstandBraket(1);\n this.geoBraket_1.geometry.rotateX(Math.PI / 2);\n this.geoBraket_1.geometry.translate(0, this.geoBraket_1.length / 2, 0);\n\n this.geoBraket_2 = this.geometryManager.getUpstandBraket(2);\n this.geoBraket_2.geometry.rotateY(Math.PI);\n this.geoBraket_2.geometry.rotateX(Math.PI / 2);\n this.geoBraket_2.geometry.translate(\n 0,\n this.geoBraket_2.length / 2,\n -this.geoBraket_2.height / 4\n );\n\n this.geoBeam = this.geometryManager.getBeam();\n this.geoBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(0, this.geoBeam.height / 2, 0);\n\n this.geoBeamEndCap = this.geometryManager.getBeamEndCap();\n this.geoBeamEndCap.geometry\n .translate(\n 0,\n this.geoBeamEndCap.height / 2,\n this.geoBeamEndCap.length / 2\n )\n .rotateY(Math.PI / 2);\n\n this.bargeFrontInfo = this.geometryManager.getBarge();\n this.bargeFrontInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(\n this.bargeFrontInfo.length / 2,\n this.bargeFrontInfo.height / 2 -\n (this.APP.sltDripBarge.currentValue ? 9 : 1),\n -this.bargeFrontInfo.width / 2\n );\n\n this.bargeBackInfo = this.geometryManager.getBarge();\n this.bargeBackInfo.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.bargeBackInfo.length / 2,\n this.bargeBackInfo.height / 2 -\n (this.APP.sltDripBarge.currentValue ? 9 : 1),\n this.bargeBackInfo.width / 2 - 3\n );\n\n this.geo_bargeRakecutLeft = this.geometryManager.getBarge();\n this.geo_bargeRakecutLeft.geometry\n .rotateY(Math.PI)\n .translate(\n this.geo_bargeRakecutLeft.width / 2,\n this.geo_bargeRakecutLeft.height / 2 -\n (this.APP.sltDripBarge.currentValue ? 9 : 1),\n -this.geo_bargeRakecutLeft.length / 2\n );\n\n this.geo_bargeRakecutRight = this.geometryManager.getBarge();\n this.geo_bargeRakecutRight.geometry.translate(\n -this.geo_bargeRakecutRight.width / 2,\n this.geo_bargeRakecutRight.height / 2 -\n (this.APP.sltDripBarge.currentValue ? 9 : 1),\n -this.geo_bargeRakecutRight.length / 2\n );\n\n this.geo_bargeRakecutLeft = this.geometryManager.getBarge();\n this.geo_bargeRakecutLeft.geometry\n .rotateY(Math.PI)\n .translate(\n this.geo_bargeRakecutLeft.width / 2,\n this.geo_bargeRakecutLeft.height / 2 -\n (this.APP.sltDripBarge.currentValue ? 9 : 1),\n -this.geo_bargeRakecutLeft.length / 2\n );\n\n this.geo_bargeRakecutRight = this.geometryManager.getBarge();\n this.geo_bargeRakecutRight.geometry.translate(\n -this.geo_bargeRakecutRight.width / 2,\n this.geo_bargeRakecutRight.height / 2 -\n (this.APP.sltDripBarge.currentValue ? 9 : 1),\n -this.geo_bargeRakecutRight.length / 2\n );\n\n //Barge cutout left\n this.geo_bargeCutoutLeftHor = this.geometryManager.getBarge();\n this.geo_bargeCutoutLeftHor.geometry\n .rotateY(Math.PI / 2)\n .translate(\n -this.geo_bargeCutoutLeftHor.length / 2,\n this.geo_bargeCutoutLeftHor.height / 2 -\n (this.APP.sltDripBarge.currentValue ? 9 : 1),\n this.geo_bargeCutoutLeftHor.width / 2\n );\n\n //Barge cutout right\n this.geo_bargeCutoutRightHor = this.geometryManager.getBarge();\n this.geo_bargeCutoutRightHor.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_bargeCutoutRightHor.length / 2,\n this.geo_bargeCutoutRightHor.height / 2 -\n (this.APP.sltDripBarge.currentValue ? 9 : 1),\n this.geo_bargeCutoutRightHor.width / 2\n );\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.ROOF_PANEL\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.ROOF_PANEL_BASE\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.GUTTER_PATIOS\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.ROOF_PATIOS\n )\n );\n this.APP.scene.remove(\n ...this.APP.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SHEET_OUTLINE\n )\n );\n //test\n this.APP.scene.remove(\n ...this.APP.scene.children.filter((x) => x.userData.type == \"RAKECUT\")\n );\n\n this.totalBaySize = this.APP.dialogEditBay.listBay.reduce(\n (total, val) => total + val.value,\n 0\n );\n this.roofLength =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldBackOverhang.currentValue;\n const _roofLength =\n Math.pow(this.roofLength, 2) +\n Math.pow(this.getHeightByRoofPitch({ isMultiSpan: true }), 2);\n this.roofLengthPlus = Math.sqrt(_roofLength); // this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue;\n this.roofWidth =\n this.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n this.cutoutExistingBothLength =\n (this.totalBaySize -\n (this.APP.sldExistingLength.currentValue +\n this.APP.existingWallManager.geo_existingWallW1.width * 2)) /\n 2;\n\n this.offsetBraketZ = 0;\n if (+UI.upstandBraketType !== 0) {\n this.offsetBraketZ = this.geoBraket_2.height / 4;\n }\n\n this.shouldSnapRoofToExistingWhenCutout = AppComponent.ins.uiManager.calcShouldSnapRoofToExistingWhenCutout()\n\n this.addRoofGroup();\n this.addCutout();\n this.addAngelRakeCut();\n this.addStepRakecut();\n\n if (UI.rakeCutLeftType == 0) {\n new HighLightBox(this.roofGroup, {\n min: {\n x: -(UI.totalBayLength / 2 + UI.overhangLeft),\n y: 0,\n z: UI.span + UI.multiSpan + UI.overhangBack + UI.overhangFront,\n },\n max: {\n x: -(UI.totalBayLength / 2 + UI.overhangLeft) + 300,\n y: 0,\n z:\n UI.span + UI.multiSpan + UI.overhangBack + UI.overhangFront - 300,\n },\n userData: { side: BUILDING_SIDE.LEFT },\n });\n }\n\n if (UI.rakeCutRightType == 0) {\n new HighLightBox(this.roofGroup, {\n min: {\n x: UI.totalBayLength / 2 + UI.overhangRight - 300,\n y: 0,\n z: UI.span + UI.multiSpan + UI.overhangBack + UI.overhangFront,\n },\n max: {\n x: UI.totalBayLength / 2 + UI.overhangRight,\n y: 0,\n z:\n UI.span + UI.multiSpan + UI.overhangBack + UI.overhangFront - 300,\n },\n userData: { side: BUILDING_SIDE.RIGHT },\n });\n }\n\n this.existingType = +this.APP.sltExistingType.currentValue;\n // this.existingTypeLeftX = 0;\n // this.existingTypeRightX = 0;\n // if ((this.existingType === 1 || this.existingType === 3) && this.APP.sldExistingWidth1.currentValue > this.APP.sldEaveWidth.currentValue) {\n // this.existingTypeLeftX = this.APP.sldEaveWidth.currentValue;\n // }\n // if ((this.existingType === 2 || this.existingType === 3) && this.APP.sldExistingWidth1.currentValue > this.APP.sldEaveWidth.currentValue) {\n // this.existingTypeRightX = this.APP.sldEaveWidth.currentValue;\n // }\n\n let offsetXR =\n this.totalBaySize / 2 +\n this.MANAGER.patiosGroup.position.x +\n this.APP.sldRightOverhang.currentValue;\n //if ((this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3) && this.APP.sldExistingWidth1.currentValue > this.APP.sldEaveWidth.currentValue) {\n // offsetXR -= this.APP.sldEaveWidth.currentValue;\n //}\n let offsetLeft =\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue -\n this.MANAGER.patiosGroup.position.x;\n let clipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n const clipingPlane = new Plane(new Vector3(-1, 0, 0), offsetXR); // (this.APP.sldBaySize.currentValue / 2) + this.APP.sldRightOverhang.currentValue );\n this.material.clippingPlanes = [clipingPlaneLeft, clipingPlane];\n MaterialManager.Instance().ROOF_BASE.clippingPlanes = [\n clipingPlaneLeft,\n clipingPlane,\n ];\n const roofPanelCount = Math.ceil(this.roofWidth / this.roofInfo.width);\n let offsetXL = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n\n //panel direction\n let panelDirectionOfset = 1;\n if (\n this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT\n ) {\n offsetXL =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue -\n this.roofInfo.width;\n panelDirectionOfset = -1;\n } else if (\n this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.LEFT_TO_RIGHT\n ) {\n offsetXL = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n }\n\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES &&\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT &&\n this.MANAGER.cutoutCondition\n ) {\n let totalPanelLength = 0;\n let cuted = true;\n\n for (let index = 0; index < roofPanelCount; index++) {\n totalPanelLength += this.roofInfo.width;\n let isOver =\n totalPanelLength < this.APP.sldExistingLength2.currentValue;\n\n this.addRoofBase(offsetXL, [this.csg_cutoutLeft]);\n this.addRoof(offsetXL, [this.csg_cutoutLeft]);\n cuted = isOver;\n\n offsetXL += this.roofInfo.width * panelDirectionOfset;\n }\n } else if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES &&\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT &&\n this.MANAGER.cutoutCondition\n ) {\n let totalPanelLength = 0;\n let cuted = false;\n for (let index = 0; index < roofPanelCount; index++) {\n totalPanelLength += this.roofInfo.width;\n let isOver =\n totalPanelLength >=\n this.roofWidth -\n this.APP.sldExistingLength2.currentValue +\n this.roofInfo.width;\n cuted =\n totalPanelLength >=\n this.roofWidth - this.APP.sldExistingLength2.currentValue &&\n !isOver;\n\n this.addRoofBase(offsetXL, [this.csg_cutoutRight]);\n this.addRoof(offsetXL, [this.csg_cutoutRight]);\n offsetXL += this.roofInfo.width * panelDirectionOfset;\n }\n } else if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES &&\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH &&\n this.MANAGER.cutoutCondition\n ) {\n let totalPanelLength = 0;\n let cuted = false;\n let cuted2 = false;\n for (let index = 0; index < roofPanelCount; index++) {\n totalPanelLength += this.roofInfo.width;\n let isOver =\n totalPanelLength < this.APP.sldExistingLength2.currentValue;\n let isOver2 =\n totalPanelLength >=\n this.roofWidth -\n this.APP.sldExistingLength2.currentValue +\n this.roofInfo.width;\n let flag =\n totalPanelLength >=\n this.roofWidth - this.APP.sldExistingLength2.currentValue;\n\n this.addRoofBase(offsetXL, [\n this.csg_cutoutLeft,\n this.csg_cutoutRight,\n ]);\n this.addRoof(offsetXL, [this.csg_cutoutLeft, this.csg_cutoutRight]);\n\n offsetXL += this.roofInfo.width * panelDirectionOfset;\n }\n } else {\n for (let index = 0; index < roofPanelCount; index++) {\n this.addRoofBase(offsetXL, []);\n this.addRoof(offsetXL, []);\n offsetXL += this.roofInfo.width * panelDirectionOfset;\n }\n }\n\n this.addZFlashing();\n if (!UI.isUpFasciaUpstandardBracket) {\n this.addZFlashingAngleRakeCut();\n this.addZFlashingStepRakeCut();\n }\n this.addBarge();\n this.addBargeStepRakecut();\n this.addBargeAngelRakecut();\n this.addGutter();\n this.addGutterAngelRakeCut();\n this.addGutterStepRakeCut();\n this.showPanelOutline();\n\n this.scene.visible = UI.showRoof\n\n resolve();\n });\n }\n private addCutout() {\n if (this.APP.sltCutOut.currentValue == 1) {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter((x) => x.userData.type == \"CUTOUT\")\n );\n\n let offsetX =\n this.APP.sldExistingLength.currentValue / 2 -\n this.APP.sldEaveWidth.currentValue;\n let offsetY = 0;\n let offsetZ =\n this.APP.sldExistingWidth1.currentValue / 2 +\n UI.eaveWidth -\n UI.overhangBack +\n this.offsetBraketZ;\n \n // To fascia, move roof snap to existing wall\n if(this.shouldSnapRoofToExistingWhenCutout) {\n offsetZ = UI.existingWidth1 / 2 - UI.overhangBack + this.offsetBraketZ;\n }\n\n // Apply pitch to offsetZ, because we cut panel before rotate roof\n offsetZ = offsetZ / this.utils.cos(UI.patiosPitch)\n\n //extra length to prevent lack when cut\n let extra = 5000;\n\n let scaleX = (this.APP.sldExistingLength2.currentValue + extra) / 1000;\n if (scaleX == 0) scaleX = 1;\n let scaleY = (this.APP.sldExistingWallHeight.currentValue + extra) / 1000;\n let scaleZ =\n (this.APP.sldExistingWidth1.currentValue + UI.overhangBack + extra) /\n 1000;\n if (scaleZ == 0) scaleZ = 1;\n\n if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n this.mesh_CutoutLeft = new Mesh(\n this.geo_cutoutLeft,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.mesh_CutoutLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"CUTOUT\",\n };\n\n this.mesh_CutoutLeft.position.set(\n -offsetX - this.APP.sldLeftOverhang.currentValue,\n offsetY,\n offsetZ\n );\n this.mesh_CutoutLeft.scale.set(scaleX, scaleY, scaleZ);\n\n //this.APP.scene.add(this.mesh_CutoutLeft);\n\n this.mesh_CutoutLeft.updateMatrix();\n this.csg_cutoutLeft = CSG.fromMesh(this.mesh_CutoutLeft);\n }\n if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n this.mesh_CutoutRight = new Mesh(\n this.geo_cutoutRight,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.mesh_CutoutRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"CUTOUT\",\n };\n\n this.mesh_CutoutRight.position.set(\n offsetX + this.APP.sldRightOverhang.currentValue,\n offsetY,\n offsetZ\n );\n this.mesh_CutoutRight.scale.set(scaleX, scaleY, scaleZ);\n\n //this.APP.scene.add(this.mesh_CutoutRight);\n\n this.mesh_CutoutRight.updateMatrix();\n this.csg_cutoutRight = CSG.fromMesh(this.mesh_CutoutRight);\n }\n }\n }\n private addAngelRakeCut() {\n let offsetXL =\n -this.totalBaySize / 2 - this.APP.sldLeftOverhang.currentValue;\n let offsetXR =\n this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n let offsetY = -100;\n\n let offsetZ =\n this.MANAGER.patiosLength +\n this.APP.sldEaveWidth.currentValue -\n this.APP.sldExistingWidth1.currentValue / 2 +\n this.offsetBraketZ;\n const _offsetZ =\n (this.MANAGER.patiosLength +\n UI.overhangBack -\n //- this.APP.sldExistingWidth1.currentValue/2\n CONST.GUTTER_ROOF_OFFSET_Z) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n let hypotenuse = Math.sqrt(\n Math.pow(this.MANAGER.patiosLength, 2) +\n Math.pow(this.MANAGER.patiosWidth, 2)\n );\n let scaleLength = hypotenuse / 1000;\n let scaleWidth =\n (this.MANAGER.patiosLength * this.MANAGER.patiosWidth) /\n hypotenuse /\n 1000;\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n let angle = Math.atan(\n this.APP.sldLeftCutHorizontal.currentValue /\n this.APP.sldLeftCutVertical.currentValue\n );\n let _rotY = Math.atan(\n this.APP.sldLeftCutVertical.currentValue /\n this.APP.sldLeftCutHorizontal.currentValue\n );\n let _angle = (Math.PI - _rotY) / 2;\n\n this.mesh_rakecutLeft = new Mesh(\n this.geo_rakecutLeft,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.mesh_rakecutLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"RAKECUT\",\n };\n\n this.mesh_rakecutLeft.position.set(\n offsetXL + this.MANAGER.patiosGroup.position.x,\n offsetY,\n offsetZ - this.APP.sldLeftCutVertical.currentValue\n );\n this.mesh_rakecutLeft.scale.set(scaleWidth, 5, scaleLength);\n this.mesh_rakecutLeft.rotateY(angle);\n this.mesh_rakecutLeft.updateMatrix();\n this.csg_rakecutLeft = CSG.fromMesh(this.mesh_rakecutLeft);\n //this.APP.scene.add(this.mesh_rakecutLeft);\n\n //cut gutter csg\n let scaleZ = (this.APP.dialogEditBay.totalBaySize + 200) / 500;\n let scaleX = (this.APP.dialogEditBay.totalBaySize + 200) / 500;\n this.meshCutGutterLeft1 = new Mesh(\n this.geoCutGutter,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.meshCutGutterLeft1.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"CUTGUTTER\",\n };\n this.meshCutGutterLeft1.position.set(\n offsetXL + this.APP.sldLeftCutHorizontal.currentValue,\n 0,\n _offsetZ\n );\n this.meshCutGutterLeft1.scale.set(scaleX, 1, scaleZ);\n this.meshCutGutterLeft1.rotation.set(0, _angle, 0);\n this.meshCutGutterLeft1.updateMatrix();\n this.csgCutGutterLeft1 = CSG.fromMesh(this.meshCutGutterLeft1);\n //this.APP.scene.add(this.meshCutGutterLeft1);\n\n this.meshCutGutterLeft2 = new Mesh(\n this.geoCutGutter,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.meshCutGutterLeft2.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"CUTGUTTER\",\n };\n this.meshCutGutterLeft2.position.set(\n offsetXL + this.APP.sldLeftCutHorizontal.currentValue,\n 0,\n _offsetZ\n );\n this.meshCutGutterLeft2.scale.set(scaleX, 1, scaleZ);\n this.meshCutGutterLeft2.rotation.set(0, _angle + Math.PI, 0);\n this.meshCutGutterLeft2.updateMatrix();\n this.csgCutGutterLeft2 = CSG.fromMesh(this.meshCutGutterLeft2);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n let angle = Math.atan(\n this.APP.sldRightCutHorizontal.currentValue /\n this.APP.sldRightCutVertical.currentValue\n );\n\n let _rotY = Math.atan(\n this.APP.sldRightCutVertical.currentValue /\n this.APP.sldRightCutHorizontal.currentValue\n );\n let _angle = (Math.PI - _rotY) / 2;\n this.mesh_rakecutRight = new Mesh(\n this.geo_rakecutRight,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.mesh_rakecutRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"RAKECUT\",\n };\n\n this.mesh_rakecutRight.position.set(\n offsetXR + this.MANAGER.patiosGroup.position.x,\n offsetY,\n offsetZ - this.APP.sldRightCutVertical.currentValue\n );\n this.mesh_rakecutRight.scale.set(scaleWidth, 5, scaleLength);\n this.mesh_rakecutRight.rotateY(-angle);\n\n //this.APP.scene.add(this.mesh_rakecutRight);\n\n this.mesh_rakecutRight.updateMatrix();\n this.csg_rakecutRight = CSG.fromMesh(this.mesh_rakecutRight);\n\n //cut gutter\n let scaleZ = (this.APP.dialogEditBay.totalBaySize + 200) / 500;\n let scaleX = (this.APP.dialogEditBay.totalBaySize + 200) / 500;\n this.meshCutGutterRight1 = new Mesh(\n this.geoCutGutter,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.meshCutGutterRight1.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"CUTGUTTER\",\n };\n this.meshCutGutterRight1.position.set(\n offsetXR - this.APP.sldRightCutHorizontal.currentValue,\n 0,\n _offsetZ\n );\n this.meshCutGutterRight1.rotation.set(0, -_angle, 0);\n this.meshCutGutterRight1.scale.set(scaleX, 1, scaleZ);\n this.meshCutGutterRight1.updateMatrix();\n this.csgCutGutterRight1 = CSG.fromMesh(this.meshCutGutterRight1);\n\n this.meshCutGutterRight2 = new Mesh(\n this.geoCutGutter,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.meshCutGutterRight2.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"CUTGUTTER\",\n };\n this.meshCutGutterRight2.position.set(\n offsetXR - this.APP.sldRightCutHorizontal.currentValue,\n 0,\n _offsetZ\n );\n this.meshCutGutterRight2.scale.set(scaleX, 1, scaleZ);\n this.meshCutGutterRight2.rotation.set(0, -(_angle + Math.PI), 0);\n this.meshCutGutterRight2.updateMatrix();\n this.csgCutGutterRight2 = CSG.fromMesh(this.meshCutGutterRight2);\n //this.APP.scene.add(this.meshCutGutterRight2);\n }\n }\n private addStepRakecut() {\n let offsetXL =\n -this.totalBaySize / 2 -\n this.APP.sldLeftOverhang.currentValue +\n this.MANAGER.patiosGroup.position.x;\n let offsetXR =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue +\n this.MANAGER.patiosGroup.position.x;\n let offsetY = -100; //this.APP.sldExistingWallHeight.currentValue;\n // let offsetY = this.utils.getHeightByAngle(\n // this.APP.sldExistingWallHeight.currentValue + this.APP.sldFlyOverBracketHeight.currentValue,\n // this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue,\n // this.APP.sltRoofPitch.currentValue,\n // 1\n // );\n\n let offsetZ =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldEaveWidth.currentValue -\n this.APP.sldExistingWidth1.currentValue / 2 +\n this.offsetBraketZ;\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n let scaleLength = (this.APP.sldLeftCutVertical.currentValue + 100) / 1000;\n let scaleWidth =\n (this.APP.sldLeftCutHorizontal.currentValue + 100) / 1000;\n\n this.mesh_rakecutLeft = new Mesh(\n this.geo_rakecutLeft,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.mesh_rakecutLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"RAKECUT\",\n };\n\n this.mesh_rakecutLeft.position.set(\n offsetXL + this.APP.sldLeftCutHorizontal.currentValue,\n offsetY,\n offsetZ - this.APP.sldLeftCutVertical.currentValue\n );\n this.mesh_rakecutLeft.scale.set(scaleWidth, 5, scaleLength);\n\n //this.APP.scene.add(this.mesh_rakecutLeft);\n\n this.mesh_rakecutLeft.updateMatrix();\n this.csg_rakecutLeft = CSG.fromMesh(this.mesh_rakecutLeft);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n let scaleLength =\n (this.APP.sldRightCutVertical.currentValue + 100) / 1000;\n let scaleWidth =\n (this.APP.sldRightCutHorizontal.currentValue + 100) / 1000;\n\n this.mesh_rakecutRight = new Mesh(\n this.geo_rakecutRight,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.mesh_rakecutRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"RAKECUT\",\n };\n\n this.mesh_rakecutRight.position.set(\n offsetXR - this.APP.sldRightCutHorizontal.currentValue,\n offsetY,\n offsetZ - this.APP.sldRightCutVertical.currentValue\n );\n this.mesh_rakecutRight.scale.set(scaleWidth, 5, scaleLength);\n\n //this.APP.scene.add(this.mesh_rakecutRight);\n\n this.mesh_rakecutRight.updateMatrix();\n this.csg_rakecutRight = CSG.fromMesh(this.mesh_rakecutRight);\n }\n }\n public addZFlashing() {\n let offsetX = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n let offsetY = this.roofBaseInfo.height - 25;\n if (!UI.isUpFasciaUpstandardBracket) {\n const offsetZ =\n (this.APP.sldFrontOverhang.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue +\n UI.overhangBack) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n let flashingLength = this.roofWidth;\n\n if (this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE) {\n offsetX += this.APP.sldLeftCutHorizontal.currentValue;\n flashingLength -= this.APP.sldLeftCutHorizontal.currentValue;\n }\n if (this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE) {\n flashingLength -= this.APP.sldRightCutHorizontal.currentValue;\n }\n\n let scaleX = flashingLength / this.zFlashingGeo.length;\n\n let mesh = new Mesh(\n this.zFlashingGeo.geometry,\n MaterialManager.Instance().ZFLASHING\n );\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.set(scaleX, 1, 1);\n\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.ZFLASHING,\n scale: mesh.scale,\n };\n this.roofGroup.add(mesh);\n } else {\n const offsetZ = 0;\n let offsetX = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n let scaleX =\n (this.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue) /\n this.zFlashingGeo.length;\n let flashingLength =\n UI.totalBayLength + UI.overhangLeft + UI.overhangRight;\n // let extraWallWidth = this.APP.existingWallManager.geo_existingWallW1.width + EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES &&\n this.MANAGER.cutoutCondition\n ) {\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n if (UI.existingWidth2 > 0) {\n offsetX += UI.existingLength2;\n flashingLength -= UI.existingLength2;\n } else {\n offsetX += UI.existingLength2;\n flashingLength -= UI.existingLength2;\n }\n\n offsetX += UI.overhangLeft;\n flashingLength -= UI.overhangLeft;\n } else if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT\n ) {\n if (UI.existingWidth2 > 0) {\n flashingLength -= UI.existingLength2;\n } else {\n flashingLength -= UI.existingLength2;\n }\n flashingLength -= UI.overhangRight;\n } else if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n offsetX += UI.existingLength2;\n flashingLength = UI.existingLength1 - UI.eaveWidth * 2;\n }\n }\n\n scaleX = flashingLength / this.zFlashingGeo.length;\n let mesh = new Mesh(\n this.zFlashingGeo.geometry,\n MaterialManager.Instance().ZFLASHING\n );\n mesh.position.set(offsetX + flashingLength, offsetY, offsetZ);\n mesh.rotateY(Math.PI);\n mesh.scale.set(scaleX, 1, 1);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.ZFLASHING,\n scale: mesh.scale,\n };\n\n this.roofGroup.add(mesh);\n }\n }\n public addZFlashingAngleRakeCut() {\n if (\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.ANGLE &&\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.ANGLE\n ) {\n return;\n }\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n const offsetY = this.roofBaseInfo.height - 25;\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n let offsetX = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n\n const offsetZ =\n (this.APP.sldFrontOverhang.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue +\n 50 -\n this.APP.sldLeftCutVertical.currentValue) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n let rotY = Math.atan(\n this.APP.sldLeftCutVertical.currentValue /\n this.APP.sldLeftCutHorizontal.currentValue\n );\n let length = Math.sqrt(\n Math.pow(this.APP.sldLeftCutVertical.currentValue, 2) +\n Math.pow(this.APP.sldLeftCutHorizontal.currentValue, 2)\n );\n\n let scaleX = length / this.zFlashingGeo.length;\n\n let mesh = new Mesh(\n this.zFlashingGeo.geometry,\n MaterialManager.Instance().ZFLASHING\n );\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.rotation.set(0, -rotY, 0);\n mesh.scale.set(scaleX, 1, 1);\n\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.ZFLASHING,\n views: views,\n };\n\n this.roofGroup.add(mesh);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n let offsetX =\n this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n\n const offsetZ =\n (this.APP.sldFrontOverhang.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue +\n 50 -\n this.APP.sldRightCutVertical.currentValue) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n let rotY = Math.atan(\n this.APP.sldRightCutVertical.currentValue /\n this.APP.sldRightCutHorizontal.currentValue\n );\n let length = Math.sqrt(\n Math.pow(this.APP.sldRightCutVertical.currentValue, 2) +\n Math.pow(this.APP.sldRightCutHorizontal.currentValue, 2)\n );\n let scaleX = length / this.zFlashingGeo.length;\n\n let mesh = new Mesh(\n this.zFlashingRakecutRightGeo.geometry,\n MaterialManager.Instance().ZFLASHING\n );\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.rotation.set(0, rotY, 0);\n mesh.scale.set(scaleX, 1, 1);\n\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.ZFLASHING,\n views: views,\n };\n\n this.roofGroup.add(mesh);\n }\n }\n public addZFlashingStepRakeCut() {\n if (\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.STEP &&\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.STEP\n ) {\n return;\n }\n\n const offsetY = this.roofBaseInfo.height - 25;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n const offsetX =\n -this.totalBaySize / 2 - this.APP.sldLeftOverhang.currentValue;\n\n const offsetZ =\n (this.APP.sldFrontOverhang.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue -\n this.APP.sldLeftCutVertical.currentValue) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n const length = this.APP.sldLeftCutHorizontal.currentValue;\n const scaleX = length / this.zFlashingGeo.length;\n\n let mesh = new Mesh(\n this.zFlashingGeo.geometry,\n MaterialManager.Instance().ZFLASHING\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.ZFLASHING,\n views: views,\n };\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.set(scaleX, 1, 1);\n\n this.roofGroup.add(mesh);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n const offsetX =\n this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n\n const offsetZ =\n (this.APP.sldFrontOverhang.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue -\n this.APP.sldRightCutVertical.currentValue) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n const length = this.APP.sldRightCutHorizontal.currentValue;\n const scaleX = length / this.zFlashingGeo.length;\n\n let mesh = new Mesh(\n this.zFlashingRakecutRightGeo.geometry,\n MaterialManager.Instance().ZFLASHING\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.ZFLASHING,\n views: views,\n };\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.set(scaleX, 1, 1);\n\n this.roofGroup.add(mesh);\n }\n }\n public addRoofGroup() {\n this.roofGroup = null;\n this.roofGroup = new Group();\n this.roofGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.ROOF_PATIOS,\n };\n\n let offsetX = 0;\n // if (this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3) {\n // if (this.APP.sldExistingWidth1.currentValue > this.APP.sldEaveWidth.currentValue) {\n // offsetX = this.APP.sldEaveWidth.currentValue;\n // }\n // }\n let height = 0;\n if (+UI.upstandBraketType !== 0) {\n height =\n +UI.upstandBraketType +\n this.geoBeam.height +\n this.geoBraket_1.width * this.utils.tan(UI.patiosPitch);\n }\n if (UI.isUpFasciaUpstandardBracket) {\n height -= this.geoBraket_1.width * this.utils.tan(UI.patiosPitch);\n }\n let offsetY =\n UI.eaveHeight + height + UI.overhangBack * this.utils.tan(UI.patiosPitch);\n if (UI.isUpFasciaUpstandardBracket) {\n offsetY =\n UI.eaveHeight +\n height -\n UI.overhangBack * this.utils.tan(UI.patiosPitch);\n }\n\n let offsetZ =\n this.APP.sldEaveWidth.currentValue -\n this.APP.sldExistingWidth1.currentValue / 2 -\n UI.overhangBack;\n\n this.roofGroup.position.set(offsetX, offsetY, offsetZ + this.offsetBraketZ);\n if (UI.isUpFasciaUpstandardBracket) {\n this.roofGroup.rotation.set(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue),\n 0,\n 0\n );\n } else {\n this.roofGroup.rotation.set(\n this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue),\n 0,\n 0\n );\n }\n\n this.scene.add(this.roofGroup);\n }\n public getOutLines(): Printing2DGeometry {\n let objs = this.roofGroup.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n );\n\n let gutterGroupObjs = this.roofGroup.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS\n );\n let gutterObjs: Object3D[] = [];\n for (let group of gutterGroupObjs) {\n gutterObjs.push(...group.children);\n }\n\n objs = [...objs, ...gutterObjs];\n\n let lsGeometries: Printing2DLine[] = [];\n\n let offsetLeft =\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue -\n this.MANAGER.patiosGroup.position.x;\n let offsetRight =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue +\n this.MANAGER.patiosGroup.position.x;\n let roofClipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let roofClipingPlane = new Plane(new Vector3(-1, 0, 0), offsetRight);\n\n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n o as Mesh,\n 60\n );\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n outlineGeo.translate(0, 5000, 0);\n\n if (\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ) {\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlane);\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n }\n\n // var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"ROOF_OUTLINE\"};\n // this.APP.scene.add( line );\n\n let simplifiedGeo = this.simplifyGeo(outlineGeo);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: simplifiedGeo.vertices,\n views: o.userData.views,\n });\n\n // var line = new LineSegments( simplifiedGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"SHEETING_OUTLINE\"};\n // this.APP.scene.add( line );\n }\n\n lsGeometries.push({\n objectType: GEOMETRY_TYPE.ROOF_COVER,\n vertices: this.makeRoofPolygon(),\n color: this.utils.convertHexColorToRgb(`#${new Color(UI.panelColor).getHexString()}`),\n views: [\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ]\n });\n\n return { lines: lsGeometries, texts: [] };\n }\n makeRoofPolygon() {\n const polygon = this.utils.getRoofCoverPolygonForLRRoof()\n this.roofGroup.updateWorldMatrix(true, true)\n return polygon.map(el => (el as Vector3).applyMatrix4(this.roofGroup.matrixWorld))\n }\n public showPanelOutline() {\n if (this.APP.sltPanelDirectionShow.currentValue == false) return;\n\n let objs = this.roofGroup.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n );\n\n let offsetLeft =\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue -\n this.MANAGER.patiosGroup.position.x;\n let offsetRight =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue +\n this.MANAGER.patiosGroup.position.x;\n let roofClipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let roofClipingPlaneRight = new Plane(new Vector3(-1, 0, 0), offsetRight);\n\n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n o as Mesh,\n 60\n );\n\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n //outlineGeo.translate(0, 5000, 0);\n\n if (\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ) {\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneRight);\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n }\n\n var line = new LineSegments(\n outlineGeo,\n MaterialManager.Instance().MESH_OUTLINE\n );\n line.userData = { type: GEOMETRY_TYPE.SHEET_OUTLINE };\n this.APP.scene.add(line);\n }\n }\n public simplifyGeo(geo: BufferGeometry): Geometry {\n let simplifiedGeo = new Geometry();\n let vertices = geo.getAttribute(\"position\").array;\n for (let i = 0; i < vertices.length; i += 3) {\n simplifiedGeo.vertices.push(\n new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2])\n );\n }\n return simplifiedGeo;\n }\n public addRoof(offsetX: number, csgObjs: CSG[]) {\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n const mesh: Mesh = new Mesh(\n this.roofInfo.geometry,\n MaterialManager.Instance().ROOF\n );\n\n let offsetSheet = 0;\n if (\n this.APP.sltRoofSheetingType.currentValue == 0 ||\n this.APP.sltRoofSheetingType.currentValue == 1\n ) {\n offsetSheet = 13;\n } else {\n offsetSheet = 5;\n }\n\n //if ((this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3) && this.APP.sldExistingWidth1.currentValue > this.APP.sldEaveWidth.currentValue) {\n // offsetX += this.APP.sldEaveWidth.currentValue;\n //}\n\n let scaleZ = this.roofLengthPlus / this.roofInfo.length;\n const offsetY = this.roofBaseInfo.height - offsetSheet;\n let offsetZ = UI.isUpFasciaUpstandardBracket ? 0 : 0;\n\n // if (this.APP.sltCutOut.currentValue == 1 && this.APP.sltExistingType.currentValue != 0 && over && this.APP.sldExistingLength2.currentValue > 0) {\n // scaleZ = (this.roofLengthPlus - this.APP.sldExistingWidth1.currentValue) / this.roofInfo.length;\n // offsetZ += this.APP.sldExistingWidth1.currentValue;\n // }\n\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setZ(scaleZ);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.ROOF_PANEL,\n views: views,\n length: scaleZ,\n };\n\n let cutoutCondition =\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES &&\n this.APP.sltExistingType.currentValue != BUILDING_SIDE.NONE &&\n this.APP.sldExistingLength2.currentValue > 0;\n let rakeCutCondition =\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE ||\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE;\n\n if (cutoutCondition || rakeCutCondition) {\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n //cho no cung he toa do\n mesh.position.set(\n offsetX + this.MANAGER.patiosGroup.position.x,\n offsetY,\n offsetZ + this.roofGroup.position.z\n );\n mesh.updateMatrix();\n\n // let meshResult = new Mesh();\n // let meshTemp = mesh;\n\n // for (let csgObj of csgObjs) {\n // meshResult = CSG.toMesh(CSG.fromMesh(meshTemp).subtract(csgObj), mesh.matrix);\n // meshTemp = meshResult;\n // }\n\n let meshResult = mesh.clone();\n\n if (cutoutCondition) {\n //meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(\n CSG.fromMesh(meshResult).subtract(csgObj),\n mesh.matrix\n );\n }\n }\n if (rakeCutCondition) {\n if (this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE) {\n meshResult = CSG.toMesh(\n CSG.fromMesh(meshResult).subtract(this.csg_rakecutLeft),\n mesh.matrix\n );\n }\n if (this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE) {\n meshResult = CSG.toMesh(\n CSG.fromMesh(meshResult).subtract(this.csg_rakecutRight),\n mesh.matrix\n );\n }\n }\n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix)); //=> tra ve goc toa do\n meshResult.applyMatrix4(matrixBefore);\n this.roofGroup.add(meshResult);\n } else {\n this.roofGroup.add(mesh);\n }\n }\n public addRoofBase(offsetX: number, csgObjs: CSG[]) {\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n //if ((this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3) && this.APP.sldExistingWidth1.currentValue > this.APP.sldEaveWidth.currentValue) {\n // offsetX += this.APP.sldEaveWidth.currentValue;\n //}\n const mesh: Mesh = new Mesh(\n this.roofBaseInfo.geometry,\n MaterialManager.Instance().ROOF_BASE\n );\n let scaleZ =\n (this.roofLengthPlus - CONST.ROOF_BASE_SUBTRACT) /\n this.roofBaseInfo.length;\n let offsetY = 0; //this.APP.sldExistingWallHeight.currentValue// + (this.geometryManager.MONO_PANEL.S50MM_BASE.height);\n let offsetZ = UI.isUpFasciaUpstandardBracket ? CONST.ROOF_BASE_SUBTRACT : 0; //(-this.APP.sldExistingWidth1.currentValue / 2) ; // + this.geometryManager.EXISTING_WALL.EXISTING_WALL.width; // -(this.APP.sldExistingWidth1.currentValue / 2);\n\n // if (this.APP.sltCutOut.currentValue == 1 && this.APP.sltExistingType.currentValue != 0 && over && this.APP.sldExistingLength2.currentValue > 0) {\n // scaleZ = (this.roofLengthPlus - CONST.ROOF_BASE_SUBTRACT - this.APP.sldExistingWidth1.currentValue) / this.roofBaseInfo.length;\n // offsetZ += this.APP.sldExistingWidth1.currentValue;\n // }\n\n mesh.position.set(offsetX, offsetY, offsetZ);\n //mesh.rotateX(this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue));\n mesh.scale.setZ(scaleZ);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.ROOF_PANEL_BASE,\n views: views,\n };\n\n let cutoutCondition =\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES &&\n this.APP.sltExistingType.currentValue != BUILDING_SIDE.NONE &&\n this.APP.sldExistingLength2.currentValue > 0;\n let rakeCutCondition =\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE ||\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE;\n\n if (cutoutCondition || rakeCutCondition) {\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n mesh.position.set(\n offsetX + this.MANAGER.patiosGroup.position.x,\n offsetY,\n offsetZ + this.roofGroup.position.z\n );\n mesh.updateMatrix();\n\n // let meshResult = new Mesh();\n // let meshTemp = mesh;\n\n // for (let csgObj of csgObjs) {\n // meshResult = CSG.toMesh(CSG.fromMesh(meshTemp).subtract(csgObj), mesh.matrix);\n // meshTemp = meshResult;\n // }\n\n let meshResult = mesh.clone();\n\n if (cutoutCondition) {\n //meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(\n CSG.fromMesh(meshResult).subtract(csgObj),\n mesh.matrix\n );\n }\n }\n if (rakeCutCondition) {\n if (this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE) {\n meshResult = CSG.toMesh(\n CSG.fromMesh(meshResult).subtract(this.csg_rakecutLeft),\n mesh.matrix\n );\n }\n if (this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE) {\n meshResult = CSG.toMesh(\n CSG.fromMesh(meshResult).subtract(this.csg_rakecutRight),\n mesh.matrix\n );\n }\n }\n\n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix));\n meshResult.applyMatrix4(matrixBefore);\n\n this.roofGroup.add(meshResult);\n } else {\n this.roofGroup.add(mesh);\n }\n }\n private addBarge() {\n if (UI.isUpFasciaUpstandardBracket) {\n let mesh: Mesh;\n let extraWallWidth =\n this.APP.existingWallManager.geo_existingWallW1.width +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n let offsetXF = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n let offsetXL1 =\n -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue) +\n this.APP.sldExistingLength2.currentValue;\n let offsetXL2 = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n let offsetXR1 =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue -\n this.APP.sldExistingLength2.currentValue;\n let offsetXR2 =\n this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n let offsetZL = 0;\n let offsetZR = 0;\n let offsetZFront =\n (this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldBackOverhang.currentValue) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n let bargeFrontLength = this.roofWidth;\n let scaleCutoutVer =\n this.utils.getHypotenuseByCos(\n this.APP.sldExistingWidth1.currentValue + this.bargeLeftInfo.width,\n this.APP.sltRoofPitch.currentValue\n ) / this.bargeLeftInfo.length;\n let bargeLeftLength = this.roofLength;\n let bargeRightLength = this.roofLength;\n let offsetY = 0;\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n //cutout\n if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.APP.sldExistingLength2.currentValue > 0 &&\n this.MANAGER.cutoutCondition &&\n (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH)\n ) {\n bargeLeftLength -= this.APP.sldExistingWidth1.currentValue;\n offsetZL += this.utils.getHypotenuseByCos(\n this.APP.sldExistingWidth1.currentValue,\n this.APP.sltRoofPitch.currentValue\n );\n //TODO: Temp ==> this.geoBraket_1.width / 10\n //cutout Hor\n let offsetZ = this.utils.getHypotenuseByCos(\n UI.existingWidth1 - this.geoBraket_1.width / 10,\n UI.patiosPitch\n );\n mesh = new Mesh(\n this.geo_bargeCutoutLeftHor.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXL1, offsetY, offsetZ);\n mesh.scale.setX(\n UI.existingLength2 / this.geo_bargeCutoutLeftHor.length\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n //cutout Ver\n mesh = new Mesh(\n this.bargeLeftInfo.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXL1, offsetY, 0);\n mesh.scale.setZ(scaleCutoutVer);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n }\n if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.APP.sldExistingLength2.currentValue > 0 &&\n this.MANAGER.cutoutCondition &&\n (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH)\n ) {\n bargeRightLength -= this.APP.sldExistingWidth1.currentValue;\n offsetZR += this.utils.getHypotenuseByCos(\n this.APP.sldExistingWidth1.currentValue,\n this.APP.sltRoofPitch.currentValue\n );\n //TODO: Temp ==> this.geoBraket_1.width / 10\n //cutout hor\n let offsetZ = this.utils.getHypotenuseByCos(\n this.APP.sldExistingWidth1.currentValue - this.geoBraket_1.width / 10,\n this.APP.sltRoofPitch.currentValue\n );\n mesh = new Mesh(\n this.geo_bargeCutoutRightHor.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXR1, offsetY, offsetZ);\n mesh.scale.setX(\n UI.existingLength2 / this.geo_bargeCutoutLeftHor.length\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n // cutout ver\n mesh = new Mesh(\n this.bargeRightInfo.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXR1, offsetY, 0);\n mesh.scale.setZ(scaleCutoutVer);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n }\n //Rakecut\n if (\n this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE ||\n this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP\n ) {\n offsetXF += this.APP.sldLeftCutHorizontal.currentValue;\n bargeLeftLength -= this.APP.sldLeftCutVertical.currentValue;\n bargeFrontLength -= this.APP.sldLeftCutHorizontal.currentValue;\n }\n if (\n this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE ||\n this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP\n ) {\n bargeRightLength -= this.APP.sldRightCutVertical.currentValue;\n bargeFrontLength -= this.APP.sldRightCutHorizontal.currentValue;\n }\n let scaleXF = bargeFrontLength / this.bargeFrontInfo.length;\n let scaleZLeft =\n this.utils.getHypotenuseByCos(\n bargeLeftLength,\n this.APP.sltRoofPitch.currentValue\n ) / this.bargeLeftInfo.length;\n let scaleZRight =\n this.utils.getHypotenuseByCos(\n bargeRightLength,\n this.APP.sltRoofPitch.currentValue\n ) / this.bargeRightInfo.length;\n //left\n mesh = new Mesh(\n this.bargeLeftInfo.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXL2, offsetY, offsetZL);\n mesh.scale.setZ(scaleZLeft);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n //right\n mesh = new Mesh(\n this.bargeRightInfo.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXR2, offsetY, offsetZR);\n mesh.scale.setZ(scaleZRight);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n //front\n mesh = new Mesh(\n this.bargeFrontInfo.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXF, 0, offsetZFront + 2);\n mesh.scale.setX(scaleXF);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n } else {\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n let mesh: Mesh;\n let offsetXB = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n let offsetXL1 = -(UI.totalBayLength / 2 + UI.overhangLeft) + UI.existingLength2 + (this.shouldSnapRoofToExistingWhenCutout ? 1 : 0) * UI.eaveWidth;\n let offsetXL2 = -( UI.totalBayLength / 2 + UI.overhangLeft);\n let offsetXR1 = this.totalBaySize / 2 + UI.overhangRight - UI.existingLength2 - (this.shouldSnapRoofToExistingWhenCutout ? 1 : 0) * UI.eaveWidth;\n let offsetXR2 = UI.totalBayLength / 2 + UI.overhangRight;\n let offsetZL = 0;\n let offsetZR = 0;\n const offsetY = 0;\n let scaleXB = this.roofWidth / this.geo_receiverChanel.length;\n let scaleZLeft = this.roofLengthPlus / this.bargeLeftInfo.length;\n let bargeLeftLength = this.roofLengthPlus;\n let scaleZRight = this.roofLengthPlus / this.bargeRightInfo.length;\n let bargeRightLength = this.roofLengthPlus;\n\n let bargeCutOutVerLength = this.utils.getHypotenuseByCos(\n this.APP.sldExistingWidth1.currentValue + this.bargeLeftInfo.width,\n this.APP.sltRoofPitch.currentValue\n )\n if(UI.structureType == CONNECTION_TYPE.FASCIA) {\n if(this.shouldSnapRoofToExistingWhenCutout) {\n bargeCutOutVerLength = this.utils.getHypotenuseByCos(\n UI.existingWidth1 - UI.eaveWidth + this.geo_receiverChanel.width,\n this.APP.sltRoofPitch.currentValue\n )\n } else {\n bargeCutOutVerLength = this.utils.getHypotenuseByCos(\n UI.existingWidth1 + this.geo_receiverChanel.width,\n this.APP.sltRoofPitch.currentValue\n )\n }\n }\n let scaleCutoutVer = bargeCutOutVerLength / this.bargeLeftInfo.length;\n let scaleCutoutHor =\n this.APP.sldExistingLength2.currentValue /\n this.geo_bargeCutoutLeftHor.length;\n //cutout\n if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.APP.sldExistingLength2.currentValue > 0 &&\n this.MANAGER.cutoutCondition &&\n (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH)\n ) {\n scaleXB =\n (this.roofWidth - this.APP.sldExistingLength2.currentValue) /\n this.geo_receiverChanel.length;\n scaleZLeft =\n this.utils.getHypotenuseByCos(\n this.roofLength - this.APP.sldExistingWidth1.currentValue,\n this.APP.sltRoofPitch.currentValue\n ) / this.bargeLeftInfo.length;\n bargeLeftLength = this.utils.getHypotenuseByCos(\n this.roofLength - UI.existingWidth1,\n this.APP.sltRoofPitch.currentValue\n );\n offsetXB += this.APP.sldExistingLength2.currentValue;\n if(this.shouldSnapRoofToExistingWhenCutout) {\n bargeLeftLength = this.utils.getHypotenuseByCos(\n this.roofLength - UI.existingWidth1 + UI.eaveWidth,\n this.APP.sltRoofPitch.currentValue\n );\n offsetZL += this.utils.getHypotenuseByCos(\n UI.existingWidth1 - UI.eaveWidth,\n this.APP.sltRoofPitch.currentValue\n );\n } else {\n offsetZL += this.utils.getHypotenuseByCos(\n UI.existingWidth1,\n this.APP.sltRoofPitch.currentValue\n );\n }\n\n //TODO: Temp ==> this.geoBraket_1.width / 10\n //cutout Hor\n let offsetZ = this.utils.getHypotenuseByCos(\n UI.existingWidth1 - this.geoBraket_1.width / 10,\n this.APP.sltRoofPitch.currentValue\n );\n if(this.shouldSnapRoofToExistingWhenCutout) {\n offsetZ = this.utils.getHypotenuseByCos(\n UI.existingWidth1 - UI.eaveWidth - this.geoBraket_1.width / 10,\n this.APP.sltRoofPitch.currentValue\n );\n }\n \n // If normal fascia, the back barge is receive chanel\n if (UI.structureType == CONNECTION_TYPE.FASCIA) {\n const receiveChanelLength = scaleCutoutHor * this.geo_bargeCutoutLeftHor.length + (this.shouldSnapRoofToExistingWhenCutout ? 1 : 0) * UI.eaveWidth\n const receiveChanelScale = receiveChanelLength / this.geo_receiverChanel.length\n mesh = new Mesh(\n this.geo_receiverChanel.geometry,\n MaterialManager.Instance().RECEIVER_CHANEL\n );\n mesh.position.set(offsetXL1 - receiveChanelLength, offsetY, offsetZ);\n mesh.scale.setX(receiveChanelScale);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.RECEIVER_CHANEL,\n views: views,\n };\n } else {\n mesh = new Mesh(\n this.geo_bargeCutoutLeftHor.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXL1, offsetY, offsetZ);\n mesh.scale.setX(scaleCutoutHor);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n \n }\n \n this.roofGroup.add(mesh);\n\n // Cutout vertical (Left of existing length 1)\n if(UI.structureType == CONNECTION_TYPE.FASCIA) {\n mesh = new Mesh(\n this.geoReceiveChannelLeftInfo.geometry,\n MaterialManager.Instance().RECEIVER_CHANEL\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.RECEIVER_CHANEL,\n views: views,\n };\n } else {\n mesh = new Mesh(\n this.bargeLeftInfo.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n }\n mesh.position.set(offsetXL1, offsetY, 0);\n mesh.scale.setZ(scaleCutoutVer);\n this.roofGroup.add(mesh);\n }\n if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.APP.sldExistingLength2.currentValue > 0 &&\n this.MANAGER.cutoutCondition &&\n (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH)\n ) {\n scaleXB =\n (this.roofWidth - this.APP.sldExistingLength2.currentValue) /\n this.geo_receiverChanel.length;\n scaleZRight =\n this.utils.getHypotenuseByCos(\n this.roofLength - this.APP.sldExistingWidth1.currentValue,\n this.APP.sltRoofPitch.currentValue\n ) / this.bargeRightInfo.length;\n bargeRightLength = this.utils.getHypotenuseByCos(\n this.roofLength - UI.existingWidth1,\n UI.patiosPitch\n );\n \n if(this.shouldSnapRoofToExistingWhenCutout) {\n bargeRightLength = this.utils.getHypotenuseByCos(\n this.roofLength - UI.existingWidth1 + UI.eaveWidth,\n UI.patiosPitch\n );\n offsetZR += this.utils.getHypotenuseByCos(\n UI.existingWidth1 - UI.eaveWidth,\n UI.patiosPitch\n );\n } else {\n offsetZR += this.utils.getHypotenuseByCos(\n UI.existingWidth1,\n UI.patiosPitch\n );\n }\n\n //TODO: Temp ==> this.geoBraket_1.width / 10\n //cutout hor\n let offsetZ = this.utils.getHypotenuseByCos(\n UI.existingWidth1 - this.geoBraket_1.width / 10,\n this.APP.sltRoofPitch.currentValue\n );\n if(this.shouldSnapRoofToExistingWhenCutout) {\n offsetZ = this.utils.getHypotenuseByCos(\n UI.existingWidth1 - UI.eaveWidth - this.geoBraket_1.width / 10,\n this.APP.sltRoofPitch.currentValue\n );\n }\n\n if (UI.structureType == CONNECTION_TYPE.FASCIA) {\n const receiveChanelLength = scaleCutoutHor * this.geo_bargeCutoutLeftHor.length + (this.shouldSnapRoofToExistingWhenCutout ? 1 : 0) * UI.eaveWidth\n const receiveChanelScale = receiveChanelLength / this.geo_receiverChanel.length\n mesh = new Mesh(\n this.geo_receiverChanel.geometry,\n MaterialManager.Instance().RECEIVER_CHANEL\n );\n mesh.scale.setX(receiveChanelScale);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.RECEIVER_CHANEL,\n views: views,\n };\n \n } else {\n mesh = new Mesh(\n this.geo_bargeCutoutRightHor.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.scale.setX(scaleCutoutHor);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n }\n mesh.position.set(offsetXR1, offsetY, offsetZ);\n this.roofGroup.add(mesh);\n \n //cutout ver\n \n if(UI.structureType == CONNECTION_TYPE.FASCIA) {\n mesh = new Mesh(\n this.geoReceiveChannelRightInfo.geometry,\n MaterialManager.Instance().RECEIVER_CHANEL\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.RECEIVER_CHANEL,\n views: views,\n };\n } else {\n mesh = new Mesh(\n this.bargeRightInfo.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n }\n mesh.position.set(offsetXR1, offsetY, 0);\n mesh.scale.setZ(scaleCutoutVer);\n this.roofGroup.add(mesh);\n }\n\n if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.APP.sldExistingLength2.currentValue > 0 &&\n this.MANAGER.cutoutCondition &&\n this.APP.sltExistingType.currentValue == 3\n ) {\n scaleXB =\n (this.roofWidth - this.APP.sldExistingLength2.currentValue * 2) /\n this.geo_receiverChanel.length;\n }\n //Rake cut\n if (this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE) {\n bargeLeftLength -= this.APP.sldLeftCutVertical.currentValue;\n }\n if (this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE) {\n bargeRightLength -= this.APP.sldRightCutVertical.currentValue;\n }\n scaleZLeft = bargeLeftLength / this.bargeLeftInfo.length;\n scaleZRight = bargeRightLength / this.bargeRightInfo.length;\n\n // Left barge (Left side of existing length 1 and existing length 2)\n if(\n UI.structureType == CONNECTION_TYPE.FASCIA \n && (UI.existingType == BUILDING_SIDE.LEFT || UI.existingType == BUILDING_SIDE.BOTH)\n && this.shouldSnapRoofToExistingWhenCutout\n && UI.existingWidth2 > 0\n ) {\n mesh = new Mesh(\n this.geoReceiveChannelLeftInfo.geometry,\n MaterialManager.Instance().RECEIVER_CHANEL\n );\n mesh.scale.setZ(scaleZLeft);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.RECEIVER_CHANEL,\n views: views,\n };\n } else {\n mesh = new Mesh(\n this.bargeLeftInfo.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.scale.setZ(scaleZLeft);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n }\n mesh.position.set(offsetXL2, offsetY, offsetZL);\n this.roofGroup.add(mesh);\n\n // Right barge (Right side of existing length 1 and existing length 2)\n if(\n UI.structureType == CONNECTION_TYPE.FASCIA \n && (UI.existingType == BUILDING_SIDE.RIGHT || UI.existingType == BUILDING_SIDE.BOTH)\n && this.shouldSnapRoofToExistingWhenCutout\n && UI.existingWidth2 > 0\n ) {\n mesh = new Mesh(\n this.geoReceiveChannelRightInfo.geometry,\n MaterialManager.Instance().RECEIVER_CHANEL\n );\n mesh.scale.setZ(scaleZRight);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.RECEIVER_CHANEL,\n views: views,\n };\n } else {\n mesh = new Mesh(\n this.bargeRightInfo.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.scale.setZ(scaleZRight);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n }\n mesh.position.set(offsetXR2, offsetY, offsetZR);\n this.roofGroup.add(mesh);\n if(this.shouldSnapRoofToExistingWhenCutout) {\n if(UI.existingType == BUILDING_SIDE.LEFT || UI.existingType == BUILDING_SIDE.RIGHT) {\n scaleXB -= UI.eaveWidth / this.geo_receiverChanel.length;\n } else if(UI.existingType == BUILDING_SIDE.BOTH) {\n scaleXB -= 2 * UI.eaveWidth / this.geo_receiverChanel.length;\n }\n if(UI.existingType == BUILDING_SIDE.LEFT || UI.existingType == BUILDING_SIDE.BOTH) {\n offsetXB += UI.eaveWidth;\n }\n }\n // back\n if (UI.upstandBraketType == 0) {\n mesh = new Mesh(\n this.geo_receiverChanel.geometry,\n MaterialManager.Instance().RECEIVER_CHANEL\n );\n mesh.position.set(offsetXB, offsetY, 0);\n mesh.scale.setX(scaleXB);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.RECEIVER_CHANEL,\n views: views,\n };\n this.roofGroup.add(mesh);\n } else {\n mesh = new Mesh(\n this.bargeBackInfo.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXB, offsetY, 0);\n mesh.scale.setX(scaleXB);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n }\n }\n }\n private addBargeStepRakecut() {\n if (UI.isUpFasciaUpstandardBracket) {\n if (\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.STEP &&\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.STEP\n ) {\n return;\n }\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n let offsetXL =\n this.APP.dialogEditBay.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue;\n let offsetXR =\n this.APP.dialogEditBay.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue;\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n let offsetZ = this.utils.getHypotenuseByCos(\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldBackOverhang.currentValue -\n this.APP.sldLeftCutVertical.currentValue,\n this.APP.sltRoofPitch.currentValue\n );\n let scaleZ =\n (this.APP.sldLeftCutVertical.currentValue +\n this.bargeLeftInfo.width) /\n this.bargeLeftInfo.length;\n let scaleX =\n this.APP.sldLeftCutHorizontal.currentValue /\n this.bargeLeftInfo.length;\n\n let bargeVer = new Mesh(\n this.bargeLeftInfo.geometry,\n MaterialManager.Instance().BARGE\n );\n bargeVer.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n bargeVer.position.set(\n -offsetXL + this.APP.sldLeftCutHorizontal.currentValue,\n 0,\n offsetZ - this.bargeLeftInfo.width\n );\n bargeVer.scale.set(1, 1, scaleZ);\n\n let bargeHor = new Mesh(\n this.bargeLeftInfo.geometry,\n MaterialManager.Instance().BARGE\n );\n bargeHor.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n bargeHor.position.set(-offsetXL, 0, offsetZ);\n bargeHor.scale.set(1, 1, scaleX);\n bargeHor.rotateY(Math.PI / 2);\n\n this.roofGroup.add(bargeVer, bargeHor);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n let offsetZ = this.utils.getHypotenuseByCos(\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldBackOverhang.currentValue -\n this.APP.sldRightCutVertical.currentValue,\n this.APP.sltRoofPitch.currentValue\n );\n let scaleZ =\n (this.APP.sldRightCutVertical.currentValue +\n this.bargeRightInfo.width) /\n this.bargeRightInfo.length;\n let scaleX =\n this.APP.sldRightCutHorizontal.currentValue /\n this.bargeRightInfo.length;\n\n let bargeVer = new Mesh(\n this.bargeRightInfo.geometry,\n MaterialManager.Instance().BARGE\n );\n bargeVer.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n bargeVer.position.set(\n offsetXR - this.APP.sldRightCutHorizontal.currentValue,\n 0,\n offsetZ - this.bargeRightInfo.width\n );\n bargeVer.scale.set(1, 1, scaleZ);\n\n let bargeHor = new Mesh(\n this.bargeRightInfo.geometry,\n MaterialManager.Instance().BARGE\n );\n bargeHor.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n bargeHor.position.set(offsetXR, 0, offsetZ);\n bargeHor.scale.set(1, 1, scaleX);\n bargeHor.rotateY(-Math.PI / 2);\n\n this.roofGroup.add(bargeVer, bargeHor);\n }\n } else {\n if (\n !(\n this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP ||\n this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP\n )\n ) {\n return;\n }\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n let offsetXL =\n this.APP.dialogEditBay.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue;\n let offsetXR =\n this.APP.dialogEditBay.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue;\n let offsetZL = this.utils.getHypotenuseByCos(\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n UI.overhangBack -\n this.APP.sldLeftCutVertical.currentValue,\n this.APP.sltRoofPitch.currentValue\n );\n let offsetZR = this.utils.getHypotenuseByCos(\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n UI.overhangBack +\n this.APP.sldFrontOverhang.currentValue -\n this.APP.sldRightCutVertical.currentValue,\n this.APP.sltRoofPitch.currentValue\n );\n let scaleZL =\n this.APP.sldLeftCutVertical.currentValue / this.bargeLeftInfo.length;\n let scaleZR =\n this.APP.sldRightCutVertical.currentValue / this.bargeRightInfo.length;\n //let scaleX = (this.APP.sldRakeCutHorizontal.currentValue) / this.bargeLeftInfo.length;\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n let bargeVer = new Mesh(\n this.bargeLeftInfo.geometry,\n MaterialManager.Instance().BARGE\n );\n bargeVer.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n bargeVer.position.set(\n -offsetXL + this.APP.sldLeftCutHorizontal.currentValue,\n 0,\n offsetZL\n );\n bargeVer.scale.set(1, 1, scaleZL);\n\n // let bargeHor = new Mesh(this.bargeLeftInfo.geometry, MaterialManager.Instance().BARGE);\n // bargeHor.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n // bargeHor.position.set(-offsetXL, 0, offsetZ);\n // bargeHor.scale.set(1, 1, scaleX);\n // bargeHor.rotateY(Math.PI / 2);\n\n this.roofGroup.add(bargeVer);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n let bargeVer = new Mesh(\n this.bargeRightInfo.geometry,\n MaterialManager.Instance().BARGE\n );\n bargeVer.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n bargeVer.position.set(\n offsetXR - this.APP.sldRightCutHorizontal.currentValue,\n 0,\n offsetZR\n );\n bargeVer.scale.set(1, 1, scaleZR);\n\n // let bargeHor = new Mesh(this.bargeRightInfo.geometry, MaterialManager.Instance().BARGE);\n // bargeHor.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n // bargeHor.position.set(offsetXR, 0, offsetZ);\n // bargeHor.scale.set(1, 1, scaleX);\n // bargeHor.rotateY(-Math.PI / 2);\n\n this.roofGroup.add(bargeVer);\n }\n }\n }\n private addBargeAngelRakecut() {\n if (!UI.isUpFasciaUpstandardBracket) {\n return;\n }\n if (\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.ANGLE &&\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.ANGLE\n ) {\n return;\n }\n\n let offsetY = 0;\n let offsetZ =\n (this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldBackOverhang.currentValue) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n let length = Math.sqrt(\n Math.pow(this.APP.sldLeftCutVertical.currentValue, 2) +\n Math.pow(this.APP.sldLeftCutHorizontal.currentValue, 2)\n );\n let scaleZ = length / this.geo_bargeRakecutLeft.length;\n\n let rotY = Math.atan(\n this.APP.sldLeftCutHorizontal.currentValue /\n this.APP.sldLeftCutVertical.currentValue\n );\n\n let offsetX =\n -this.totalBaySize / 2 -\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldLeftCutHorizontal.currentValue;\n let mesh = new Mesh(\n this.geo_bargeRakecutLeft.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setZ(scaleZ);\n mesh.rotateY(rotY);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n let length = Math.sqrt(\n Math.pow(this.APP.sldRightCutVertical.currentValue, 2) +\n Math.pow(this.APP.sldRightCutHorizontal.currentValue, 2)\n );\n let scaleZ = length / this.geo_bargeRakecutLeft.length;\n\n let rotY = Math.atan(\n this.APP.sldRightCutHorizontal.currentValue /\n this.APP.sldRightCutVertical.currentValue\n );\n\n let offsetX =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue -\n this.APP.sldRightCutHorizontal.currentValue;\n let mesh = new Mesh(\n this.geo_bargeRakecutRight.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setZ(scaleZ);\n mesh.rotateY(-rotY);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n }\n }\n public addGutter() {\n if (UI.isUpFasciaUpstandardBracket) {\n let offsetX = UI.totalBayLength / 2 + UI.overhangRight;\n let offsetZ = CONST.GUTTER_ROOF_OFFSET_Z;\n let offsetY = this.roofBaseInfo.height - 25;\n let gutterLength = UI.totalBayLength + UI.overhangLeft + UI.overhangRight;\n //cutout\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES &&\n this.MANAGER.cutoutCondition\n ) {\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n gutterLength =\n UI.totalBayLength +\n UI.overhangLeft +\n UI.overhangRight -\n UI.existingLength2;\n } else if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT\n ) {\n gutterLength =\n UI.totalBayLength +\n UI.overhangLeft +\n UI.overhangRight -\n UI.existingLength2;\n offsetX =\n UI.totalBayLength / 2 + UI.overhangRight - UI.existingLength2;\n } else if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n offsetX = UI.existingLength1 / 2 - UI.eaveWidth;\n gutterLength = UI.existingLength1 - 2 * UI.eaveWidth;\n }\n }\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n //Add gutter back\n let gutterGroup = this.utils.createGutterGroup(\n this.gutterInfo,\n this.geo_gutterCap,\n gutterLength,\n new Vector3(offsetX, offsetY, offsetZ),\n new Vector3(\n this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue),\n Math.PI,\n 0\n ),\n views,\n 1,\n true,\n true\n );\n this.roofGroup.add(gutterGroup);\n this.addDownPipe(gutterGroup, gutterLength);\n } else {\n let offsetXL = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n const offsetZ =\n (this.APP.sldFrontOverhang.currentValue +\n UI.overhangBack +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue -\n CONST.GUTTER_ROOF_OFFSET_Z) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n const offsetY = this.roofBaseInfo.height - 25;\n\n let gutterLength = this.roofWidth;\n let exLength = 300; //Math.tan(extraAngle) * this.gutterInfo.width;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n offsetXL += this.APP.sldLeftCutHorizontal.currentValue - exLength;\n gutterLength -= this.APP.sldLeftCutHorizontal.currentValue - exLength;\n } else if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n offsetXL += this.APP.sldLeftCutHorizontal.currentValue;\n gutterLength -= this.APP.sldLeftCutHorizontal.currentValue;\n }\n\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n gutterLength -= this.APP.sldRightCutHorizontal.currentValue - exLength;\n } else if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n gutterLength -= this.APP.sldRightCutHorizontal.currentValue;\n }\n\n if (\n this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE &&\n this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE\n ) {\n let gutterMesh = new Mesh(\n this.gutterInfo.geometry,\n MaterialManager.Instance().GUTTER\n );\n gutterMesh.scale.setX(gutterLength / this.gutterInfo.length);\n gutterMesh.updateMatrix();\n let matrixBefore = gutterMesh.matrix.clone();\n\n gutterMesh.position.set(offsetXL, offsetY, offsetZ);\n gutterMesh.rotation.set(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue),\n 0,\n 0\n );\n gutterMesh.updateMatrix();\n\n let meshClipped = CSG.toMesh(\n CSG.fromMesh(gutterMesh).subtract(this.csgCutGutterLeft1),\n gutterMesh.matrix\n );\n meshClipped = CSG.toMesh(\n CSG.fromMesh(meshClipped).subtract(this.csgCutGutterRight1),\n gutterMesh.matrix\n );\n meshClipped.applyMatrix4(new Matrix4().getInverse(gutterMesh.matrix));\n meshClipped.applyMatrix4(matrixBefore);\n meshClipped.material = gutterMesh.material;\n meshClipped.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GUTTER_PATIOS,\n views: views,\n };\n\n let gutterGroup = this.utils.createGutterGroupWithMesh(\n meshClipped,\n this.geo_gutterCap,\n gutterLength,\n new Vector3(offsetXL, offsetY, offsetZ),\n new Vector3(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue),\n 0,\n 0\n ),\n views,\n 1,\n false,\n false\n );\n\n this.roofGroup.add(gutterGroup);\n } else if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n {\n let gutterGroup = this.utils.createGutterGroup(\n this.gutterInfo,\n this.geo_gutterCap,\n gutterLength,\n new Vector3(offsetXL, offsetY, offsetZ),\n new Vector3(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue),\n 0,\n 0\n ),\n views,\n 1,\n false,\n true,\n this.csgCutGutterLeft1,\n this.roofGroup\n );\n\n this.roofGroup.add(gutterGroup);\n }\n } else if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n {\n let gutterGroup = this.utils.createGutterGroup(\n this.gutterInfo,\n this.geo_gutterCap,\n gutterLength,\n new Vector3(offsetXL, offsetY, offsetZ),\n new Vector3(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue),\n 0,\n 0\n ),\n views,\n 1,\n true,\n false,\n this.csgCutGutterRight1,\n this.roofGroup\n );\n\n this.roofGroup.add(gutterGroup);\n }\n } else {\n let gutterGroup = this.utils.createGutterGroup(\n this.gutterInfo,\n this.geo_gutterCap,\n gutterLength,\n new Vector3(offsetXL, offsetY, offsetZ),\n new Vector3(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue),\n 0,\n 0\n ),\n views,\n 1,\n true,\n true\n );\n this.roofGroup.add(gutterGroup);\n }\n }\n }\n private addDownPipe(gutterGroup: Group, gutterLength: number) {\n let meshPipe = new Mesh(\n this.MANAGER.postAndBeamManager.geo_downPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipe.userData = { type: GEOMETRY_TYPE.DOWNPIPE_NOZZLE };\n meshPipe.scale.setY(\n 100 / this.MANAGER.postAndBeamManager.geo_downPipe.height\n );\n meshPipe.position.set(\n gutterLength - 100,\n -190,\n this.MANAGER.postAndBeamManager.geo_downPipe.width / 2 + 20\n );\n\n gutterGroup.add(meshPipe);\n }\n private addGutterAngelRakeCut() {\n if (UI.isUpFasciaUpstandardBracket) {\n return;\n }\n if (\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.ANGLE &&\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.ANGLE\n ) {\n return;\n }\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n let exLength = 300;\n let rc_offsetXL = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n let rc_offsetXR =\n this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n const rc_offsetZL =\n (UI.overhangFront +\n UI.overhangBack +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue -\n this.APP.sldLeftCutVertical.currentValue -\n CONST.GUTTER_ROOF_OFFSET_Z) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n const rc_offsetZR =\n (UI.overhangFront +\n UI.overhangBack +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue -\n this.APP.sldRightCutVertical.currentValue -\n CONST.GUTTER_ROOF_OFFSET_Z) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n const rc_offsetY = this.roofBaseInfo.height - 25;\n\n let rc_rotYL = Math.atan(\n this.APP.sldLeftCutVertical.currentValue /\n this.APP.sldLeftCutHorizontal.currentValue\n );\n let rc_lengthL =\n exLength +\n Math.sqrt(\n Math.pow(this.APP.sldLeftCutVertical.currentValue, 2) +\n Math.pow(this.APP.sldLeftCutHorizontal.currentValue, 2)\n );\n let rc_rotYR = Math.atan(\n this.APP.sldRightCutVertical.currentValue /\n this.APP.sldRightCutHorizontal.currentValue\n );\n let rc_lengthR =\n exLength +\n Math.sqrt(\n Math.pow(this.APP.sldRightCutVertical.currentValue, 2) +\n Math.pow(this.APP.sldRightCutHorizontal.currentValue, 2)\n );\n if (\n this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE &&\n this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE\n ) {\n let gutterRakecutGroupLeft = this.utils.createGutterGroup(\n this.gutterRakecutLeftInfo,\n this.geo_gutterCap,\n rc_lengthL,\n new Vector3(rc_offsetXL, rc_offsetY, rc_offsetZL),\n new Vector3(0, -rc_rotYL, 0),\n views,\n 1,\n true,\n false,\n this.csgCutGutterLeft2,\n this.roofGroup\n );\n let gutterRakecutGroupRight = this.utils.createGutterGroup(\n this.gutterRakecutRightInfo,\n this.geo_gutterCap,\n rc_lengthR,\n new Vector3(rc_offsetXR, rc_offsetY, rc_offsetZR),\n new Vector3(0, rc_rotYR, 0),\n views,\n 1,\n true,\n false,\n this.csgCutGutterRight2,\n this.roofGroup\n );\n\n this.roofGroup.add(gutterRakecutGroupLeft, gutterRakecutGroupRight);\n } else {\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n let gutterRakecutGroup = this.utils.createGutterGroup(\n this.gutterRakecutLeftInfo,\n this.geo_gutterCap,\n rc_lengthL,\n new Vector3(rc_offsetXL, rc_offsetY, rc_offsetZL),\n new Vector3(0, -rc_rotYL, 0),\n views,\n 1,\n true,\n false,\n this.csgCutGutterLeft2,\n this.roofGroup\n );\n\n this.roofGroup.add(gutterRakecutGroup);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n let gutterRakecutGroup = this.utils.createGutterGroup(\n this.gutterRakecutRightInfo,\n this.geo_gutterCap,\n rc_lengthR,\n new Vector3(rc_offsetXR, rc_offsetY, rc_offsetZR),\n new Vector3(0, rc_rotYR, 0),\n views,\n 1,\n true,\n false,\n this.csgCutGutterRight2,\n this.roofGroup\n );\n\n this.roofGroup.add(gutterRakecutGroup);\n }\n }\n }\n private addGutterStepRakeCut() {\n if (UI.isUpFasciaUpstandardBracket) {\n return;\n }\n if (\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.STEP &&\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.STEP\n ) {\n return;\n }\n\n let offsetXL = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n let offsetXR =\n this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n const offsetZL =\n (this.APP.sldFrontOverhang.currentValue +\n UI.overhangBack +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue -\n this.APP.sldLeftCutVertical.currentValue -\n CONST.GUTTER_ROOF_OFFSET_Z) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n const offsetZR =\n (this.APP.sldFrontOverhang.currentValue +\n UI.overhangBack +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue -\n this.APP.sldRightCutVertical.currentValue -\n CONST.GUTTER_ROOF_OFFSET_Z) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n const offsetY = this.roofBaseInfo.height - 25;\n\n //let scaleX = length / this.gutterRakecutLeftInfo.length;\n\n //let rotYL = Math.atan(this.APP.sldLeftCutVertical.currentValue / this.APP.sldLeftCutHorizontal.currentValue);\n //let rotYR = Math.atan(this.APP.sldRightCutVertical.currentValue / this.APP.sldRightCutHorizontal.currentValue);\n //let rotX = this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue);\n\n //let extraAngle = (Math.PI - (rotY + Math.PI / 2)) / 2;\n //let exLength = 300//Math.tan(extraAngle) * this.gutterInfo.width;\n //let length = exLength + Math.sqrt(Math.pow(this.APP.sldRakeCutVertical.currentValue, 2) + Math.pow(this.APP.sldRakeCutHorizontal.currentValue, 2));\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n //Step rakecut\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n let gutterLength = this.APP.sldLeftCutHorizontal.currentValue;\n let gutterHor = this.utils.createGutterGroup(\n this.gutterInfo,\n this.geo_gutterCap,\n gutterLength,\n new Vector3(offsetXL, offsetY, offsetZL),\n new Vector3(0, 0, 0),\n views,\n 1,\n true,\n true\n );\n\n this.roofGroup.add(gutterHor);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n let gutterLength = this.APP.sldRightCutHorizontal.currentValue;\n let gutterHor = this.utils.createGutterGroup(\n this.gutterInfo,\n this.geo_gutterCap,\n gutterLength,\n new Vector3(\n offsetXR - this.APP.sldRightCutHorizontal.currentValue,\n offsetY,\n offsetZR\n ),\n new Vector3(0, 0, 0),\n views,\n 1,\n true,\n true\n );\n\n this.roofGroup.add(gutterHor);\n }\n }\n\n private getHeightByRoofPitch(userDataPos: any): number {\n if (userDataPos.isSpan) {\n return (\n this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n this.APP.sldSpan.currentValue\n );\n } else if (userDataPos.isMultiSpan) {\n return (\n this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue)\n );\n } else {\n return (\n this.utils.tan(this.APP.sltRoofPitch.currentValue) * this.roofLength\n );\n }\n }\n}\n","import {\n BUILDING_SIDE,\n EXISTING_BUILDING_CONFIG as CONST,\n CUTOUT_ENABLE,\n EXISTING_BUILDING_CONFIG,\n FIT_FLYOVER_BRAKET_ON_ROOF,\n RAKECUT_TYPE,\n} from \"src/app/app.constants\";\nimport {\n Box3,\n BoxBufferGeometry,\n BoxHelper,\n BufferGeometry,\n Geometry,\n Group,\n LineSegments,\n Material,\n Matrix4,\n Mesh,\n Vector3,\n} from \"three\";\nimport { PatiosFlyOverManager } from \".\";\nimport { GEOMETRY_CATEGORY, GEOMETRY_TYPE, INIT } from \"../../app.config\";\nimport {\n HomeComponent as AppComponent,\n HomeComponent,\n} from \"../../containers/home/home.component\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport {\n GeometryInfo,\n LineType,\n Print2DView,\n Printing2DGeometry,\n Printing2DLine,\n ViewType,\n} from \"../models\";\nimport { Util, getBeamEndCapCode } from \"../utils\";\nimport { UI } from \"../ui\";\nimport _ from \"lodash\";\n\nexport class ColumnAndBeamManager {\n private scene: Group;\n private APP: AppComponent;\n private MANAGER: PatiosFlyOverManager;\n private material: Material;\n //private beamMaterial: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private geo_superiorPost: GeometryInfo;\n public geo_superiorBeam: GeometryInfo;\n public geo_superiorHouseBeam: GeometryInfo;\n private geo_beamRakecutLeft: GeometryInfo;\n private geo_beamRakecutRight: GeometryInfo;\n private geo_beamStepRakecutLeft: GeometryInfo;\n private geo_beamStepRakecutRight: GeometryInfo;\n private geo_beamEndCap: GeometryInfo;\n private geo_houseBeamEndCap: GeometryInfo;\n public geo_bracket: GeometryInfo;\n private geo_groundBase: GeometryInfo;\n private geo_downPipe: GeometryInfo;\n private geo_downPipeL: GeometryInfo;\n private geo_roofBase: GeometryInfo;\n private downpipeGroup: Group;\n private downpipeStepRakeCutGroupLeft: Group;\n private downpipeStepRakeCutGroupRight: Group;\n private eventHandleId: any;\n private objectSizeChangedHandle: any;\n private totalBaySize: number;\n public extraOffsetZ: number;\n private geoBeamJoint: GeometryInfo;\n private geoHouseBeamJoint: GeometryInfo;\n\n private frontPostHeight: number;\n //private extraBracketHeight = 250;\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n\n private deferHandle;\n private deferTimeout = CONST.CUTOUT_DEFFER_TIME_OUT;\n\n public numberOfBracketsBack = INIT.DEFAULT_BRACKET_NUMBER;\n public numberOfBracketCutout = INIT.DEFAULT_BRACKET_CUTOUT_NUMBER;\n private cutoutExistingBothLength: number;\n private beamLeftCutSizeInfo: any;\n private beamRightCutSizeInfo: any;\n\n constructor(app: AppComponent, flyOverManager: PatiosFlyOverManager) {\n this.APP = app;\n this.MANAGER = flyOverManager;\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n\n this.scene = flyOverManager.patiosGroup;\n this.material = MaterialManager.Instance().DEFAULT.clone();\n //this.beamMaterial = MaterialManager.Instance().DEFAULT.clone();\n\n this.registerEvent();\n }\n\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n let bracketHeight =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height / 2;\n let bracketWidth = this.geometryManager.FLY_OVER_BRACKET.S65x3.width;\n\n this.geo_bracket = new GeometryInfo();\n this.geo_bracket.geometry =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.geometry\n .clone()\n .rotateX(Math.PI / 2)\n .translate(bracketWidth / 2, bracketHeight, bracketWidth / 2);\n this.geo_bracket.width =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.width;\n this.geo_bracket.length =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.length;\n this.geo_bracket.height =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n this.geo_superiorBeam = this.geometryManager.getBeam();\n this.geo_superiorBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_superiorBeam.length / 2,\n this.geo_superiorBeam.height / 2,\n this.geo_superiorBeam.width / 2\n );\n\n this.geoBeamJoint = this.geometryManager.getBeamJoint();\n this.geoHouseBeamJoint = this.geometryManager.getHouseBeamJoint();\n\n this.geo_superiorHouseBeam = this.geometryManager.getHouseBeam();\n this.geo_superiorHouseBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_superiorHouseBeam.length / 2,\n this.geo_superiorHouseBeam.height / 2,\n this.geo_superiorHouseBeam.width / 2\n );\n\n this.geo_beamRakecutLeft = this.geometryManager.getBeam();\n this.geo_beamRakecutLeft.geometry.translate(\n this.geo_beamRakecutLeft.width / 2,\n this.geo_beamRakecutLeft.height / 2,\n -this.geo_beamRakecutLeft.length / 2\n );\n\n this.geo_beamRakecutRight = this.geometryManager.getBeam();\n this.geo_beamRakecutRight.geometry.translate(\n -this.geo_beamRakecutRight.width / 2,\n this.geo_beamRakecutRight.height / 2,\n -this.geo_beamRakecutRight.length / 2\n );\n\n this.geo_beamStepRakecutLeft = this.geometryManager.getBeam();\n this.geo_beamStepRakecutLeft.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_beamStepRakecutLeft.length / 2,\n this.geo_beamStepRakecutLeft.height / 2,\n -this.geo_beamStepRakecutLeft.width / 2\n );\n\n this.geo_beamStepRakecutRight = this.geometryManager.getBeam();\n this.geo_beamStepRakecutRight.geometry\n .rotateY(Math.PI / 2)\n .translate(\n -this.geo_beamStepRakecutRight.length / 2,\n this.geo_beamStepRakecutRight.height / 2,\n -this.geo_beamStepRakecutRight.width / 2\n );\n\n this.geo_beamEndCap = this.geometryManager.getBeamEndCap();\n this.geo_beamEndCap.geometry.translate(\n 0,\n this.geo_beamEndCap.height / 2,\n 0\n );\n\n this.geo_houseBeamEndCap = this.geometryManager.getHouseBeamEndCap();\n this.geo_houseBeamEndCap.geometry.translate(\n 0,\n this.geo_houseBeamEndCap.height / 2,\n 0\n );\n\n this.geo_superiorPost = this.geometryManager.getPost();\n this.geo_superiorPost.geometry\n .rotateX(Math.PI / 2)\n .translate(\n this.geo_superiorPost.width / 2,\n this.geo_superiorPost.height / 2,\n this.geo_superiorPost.width / 2\n );\n\n this.geo_groundBase = new GeometryInfo();\n this.geo_groundBase.width = 1000;\n this.geo_groundBase.height = 1;\n this.geo_groundBase.length = 1000;\n this.geo_groundBase.geometry = new BoxBufferGeometry(\n this.geo_groundBase.width,\n this.geo_groundBase.height,\n this.geo_groundBase.length\n );\n this.geo_groundBase.geometry.translate(\n 0,\n 0,\n this.geo_groundBase.length / 2\n );\n\n this.geo_downPipe = this.geometryManager.getDownPipe();\n this.geo_downPipeL = this.geometryManager.getDownPipeL();\n this.geo_roofBase = this.geometryManager.getRoofBase();\n\n this.scene.remove(\n ...this.scene.children.filter(\n (c) => c.userData.type == GEOMETRY_TYPE.DOWNPIPE\n )\n );\n this.downpipeGroup = new Group();\n this.downpipeGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeGroup);\n this.downpipeStepRakeCutGroupLeft = new Group();\n this.downpipeStepRakeCutGroupLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeStepRakeCutGroupLeft);\n\n this.downpipeStepRakeCutGroupRight = new Group();\n this.downpipeStepRakeCutGroupRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeStepRakeCutGroupRight);\n resolve();\n });\n }\n\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET &&\n !x.userData.position.back\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.SUPERIOR_POST &&\n !x.userData.position.back\n )\n );\n // this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.MESH_OUTLINE));\n this.scene.remove(\n ...this.scene.children.filter((x) => x.userData.type == \"BOXHELPER\")\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.GROUND_BASE\n )\n );\n this.APP.scene.remove(\n ...this.APP.scene.children.filter(\n (o) =>\n o.userData.type == \"OUTLINE\" || o.userData.type == \"COLUMN_OUTLINE\"\n )\n );\n\n this.beamLeftCutSizeInfo = this.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.LEFT\n );\n this.beamRightCutSizeInfo = this.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.RIGHT\n );\n this.downpipeGroup.children = [];\n this.downpipeStepRakeCutGroupLeft.children = [];\n this.downpipeStepRakeCutGroupRight.children = [];\n\n this.extraOffsetZ =\n this.APP.existingWallManager.geo_existingWallL1.width +\n this.APP.eaveManager.backOverhang;\n this.totalBaySize = UI.totalBayLength;\n this.cutoutExistingBothLength =\n (this.totalBaySize - this.APP.sldExistingLength.currentValue) / 2;\n\n this.addSuperiorBeam({ front: true });\n this.addSuperiorBeam({ back: true });\n this.addBeamAngleRakecut();\n this.addBeamStepRakecut();\n if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.MANAGER.cutoutCondition\n ) {\n this.addSuperiorBeam({ cutout: true });\n }\n if (UI.multiSpan > 0) {\n this.addSuperiorBeam({ multiSpan: true });\n }\n this.addGround();\n\n const fitX = this.getContainerOffsetXToFitBraketToExistingWall();\n let offsetX = -this.totalBaySize / 2;\n let first = true;\n let last = false;\n for (let i = 0; i <= this.APP.dialogEditBay.listBay.length; i++) {\n if (i == this.APP.dialogEditBay.listBay.length) {\n last = true;\n }\n this.addPostOrBracket(offsetX, {\n front: true,\n first,\n last,\n left: first,\n right: last,\n });\n\n if (UI.multiSpan > 0) {\n this.addPostOrBracket(offsetX, {\n multiSpan: true,\n first,\n last,\n left: first,\n right: last,\n });\n }\n if (i < this.APP.dialogEditBay.listBay.length) {\n let b = this.APP.dialogEditBay.listBay[i];\n offsetX += b.value;\n }\n first = false;\n }\n\n offsetX = -this.totalBaySize / 2;\n first = true;\n last = false;\n for (let i = 0; i <= this.APP.dialogEditBay.listBay.length; i++) {\n if (i == this.APP.dialogEditBay.listBay.length) {\n last = true;\n }\n this.addPostAngleRakecut(offsetX + fitX, {\n first,\n last,\n left: first,\n right: last,\n });\n if (i < this.APP.dialogEditBay.listBay.length) {\n let b = this.APP.dialogEditBay.listBay[i];\n offsetX += b.value;\n }\n first = false;\n }\n\n this.addPostOrBracketBack();\n this.addPostOrBracketBackCutout();\n this.addPostStepRakecut();\n this.addDownPipe();\n this.addDownPipeStepRakecut();\n this.showBeamOutline();\n this.updateUI();\n resolve();\n });\n }\n public showBeamOutline() {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.BEAM_OUTLINE\n )\n );\n\n if (!UI.beamLayoutShow) return;\n\n const objs = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n const meshes = [];\n objs.forEach((el) => {\n if (el.type == \"Group\") {\n meshes.push(\n ...el.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n }\n });\n\n for (let o of meshes) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n o as Mesh,\n 10\n );\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n\n var line = new LineSegments(\n outlineGeo,\n MaterialManager.Instance().BEAM_OUTLINE\n );\n line.userData = { type: GEOMETRY_TYPE.BEAM_OUTLINE };\n this.APP.scene.add(line);\n }\n }\n private getContainerOffsetXToFitBraketToExistingWall() {\n let fitX = 0;\n if (UI.existingType == BUILDING_SIDE.RIGHT) {\n fitX = -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0)\n );\n }\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n fitX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n }\n\n return fitX;\n }\n private totalHeightFromEaveHeightToTopOfExistingRoof() {\n const height =\n this.geometryManager.EAVE.EAVE.height +\n UI.fasciaDepth +\n UI.eaveWidth * this.utils.tan(UI.existingRoofPitch) +\n this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.height /\n this.utils.cos(UI.existingRoofPitch);\n\n return height;\n }\n private totalHeightFromEaveHeightToTopOfFlyoverBraket() {\n const height =\n this.totalHeightFromEaveHeightToTopOfExistingRoof() +\n UI.braketHeight -\n FIT_FLYOVER_BRAKET_ON_ROOF;\n\n return height;\n }\n private addDownPipeStepRakecut() {\n const fitX = this.getContainerOffsetXToFitBraketToExistingWall();\n if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n let offsetX = -this.totalBaySize / 2 + 50 + fitX;\n let offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.span + UI.multiSpan + UI.overhangFront - UI.rakeCutLeftVer,\n UI.patiosPitch,\n -1\n ) +\n this.geo_roofBase.height +\n this.geo_superiorBeam.height -\n 30;\n let offsetZ =\n UI.span +\n UI.multiSpan +\n UI.overhangFront -\n UI.rakeCutLeftVer -\n 260 -\n UI.existingWidth1 / 2;\n\n if (this.APP.sltGutterType.currentValue == 0) {\n offsetY -= 80;\n } else {\n offsetY -= 60;\n }\n\n this.utils.createDownpipeGroup(\n this.APP,\n this.downpipeStepRakeCutGroupLeft,\n this.geo_downPipe,\n this.geo_downPipeL,\n offsetX,\n offsetY,\n offsetZ,\n offsetZ,\n 0,\n UI.overhangFront,\n offsetY,\n false\n );\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n let offsetX = this.totalBaySize / 2 - 50 + fitX;\n let offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.span + UI.multiSpan + UI.overhangFront - UI.rakeCutRightVer,\n UI.patiosPitch,\n -1\n ) +\n this.geo_roofBase.height +\n this.geo_superiorBeam.height -\n 30;\n let offsetZ =\n UI.span +\n UI.multiSpan +\n UI.overhangFront -\n UI.rakeCutRightVer -\n 260 -\n UI.existingWidth1 / 2;\n\n if (this.APP.sltGutterType.currentValue == 0) {\n offsetY -= 80;\n } else {\n offsetY -= 60;\n }\n\n this.utils.createDownpipeGroup(\n this.APP,\n this.downpipeStepRakeCutGroupRight,\n this.geo_downPipe,\n this.geo_downPipeL,\n offsetX,\n offsetY,\n offsetZ,\n offsetZ,\n 0,\n UI.overhangFront,\n offsetY,\n false\n );\n }\n }\n private addDownPipe() {\n let offsetZ = UI.span + UI.multiSpan - 170;\n const fitX = this.getContainerOffsetXToFitBraketToExistingWall();\n let offsetX = -this.totalBaySize / 2 + 50 + fitX;\n if (this.APP.sltExistingType.currentValue == 1) {\n offsetX = this.totalBaySize / 2 - 50 + fitX;\n }\n if (this.APP.sltExistingType.currentValue != 0) {\n offsetZ -= UI.existingWidth1 / 2;\n }\n //Rakecut\n //Downpipe will be in left\n if (UI.rakeCutLeftType != RAKECUT_TYPE.NONE) {\n if (\n this.APP.sltExistingType.currentValue == 1 &&\n UI.rakeCutRightType == RAKECUT_TYPE.NONE\n ) {\n offsetX = this.totalBaySize / 2 - 50 + fitX;\n } else if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n offsetX = -this.totalBaySize / 2 + this.beamLeftCutSizeInfo.l + fitX;\n } else if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n offsetX =\n -this.totalBaySize / 2 +\n UI.rakeCutLeftHor +\n EXISTING_BUILDING_CONFIG.FIT_FROM_CORNER_TO_CENTER_GUTTER +\n fitX;\n }\n }\n //Downpipe will be in right\n else {\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n offsetX = this.totalBaySize / 2 - this.beamRightCutSizeInfo.l + fitX;\n } else if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n offsetX =\n this.totalBaySize / 2 -\n UI.rakeCutRightHor -\n EXISTING_BUILDING_CONFIG.FIT_FROM_CORNER_TO_CENTER_GUTTER +\n fitX;\n }\n }\n\n let offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.span + UI.multiSpan + UI.overhangFront,\n UI.patiosPitch,\n -1\n ) +\n this.geo_roofBase.height +\n this.geo_superiorBeam.height +\n 90;\n\n if (this.APP.sltGutterType.currentValue == 0) {\n offsetY -= 80;\n } else {\n offsetY -= 60;\n }\n\n this.utils.createDownpipeGroup(\n this.APP,\n this.downpipeGroup,\n this.geo_downPipe,\n this.geo_downPipeL,\n offsetX,\n offsetY,\n offsetZ,\n offsetZ,\n 0,\n UI.overhangFront,\n offsetY,\n true\n );\n\n // let isIntersect = false;\n // let boxDownPipe = new Box3().setFromObject(this.downpipeGroup);\n\n // for (let eave of this.APP.eaveManager.listEave) {\n // let boxEave = new Box3().setFromObject(eave);\n\n // if (boxEave.intersectsBox(boxDownPipe)) {\n // isIntersect = true;\n // break;\n // }\n // }\n // if (isIntersect) {\n // this.downpipeGroup.children = [];\n // this.utils.createDownpipeNozzle(this.APP, this.downpipeGroup, this.geo_downPipe, offsetX, offsetY, offsetZ + UI.overhangFront - 100);\n // }\n }\n\n public houseBeamHeight() {\n return this.geo_superiorBeam.height - this.geo_superiorHouseBeam.height;\n }\n private updateUI() {\n this.APP.sldMinHeight.setValue(_.round(this.frontPostHeight, 0));\n }\n public getSection(): Printing2DGeometry {\n let objs = this.scene.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_POST ||\n o.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET\n );\n\n objs = [...objs];\n\n let lsGeometries: Printing2DLine[] = [];\n\n for (let o of objs) {\n let box = new BoxHelper(o);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n //this.scene.add(box);\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: outlineGeo.vertices,\n views: o.userData.views,\n });\n\n // var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"OUTLINE\"};\n // //line.position.set(o.position.x - 5000, o.position.y, o.position.z);\n // this.scene.add( line );\n }\n let beamGroups = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n for (let g of beamGroups) {\n for (let c of g.children) {\n c.updateMatrix();\n\n let objCloned = c.clone();\n objCloned.applyMatrix4(new Matrix4().getInverse(c.matrix));\n\n let box = new BoxHelper(objCloned);\n\n c.updateWorldMatrix(true, true);\n\n box.geometry.applyMatrix4(c.matrixWorld);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n //this.APP.scene.add(box);\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n const planView = _.find(\n g.userData.views,\n (el) => el.viewType == ViewType.PLAN\n );\n const anotherViews = _.filter(\n g.userData.views,\n (el) => el.viewType != ViewType.PLAN\n );\n if (anotherViews.length > 0) {\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo.vertices,\n views: anotherViews,\n });\n }\n if (planView) {\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo.vertices\n .slice(0, 8)\n .filter((el, index) => [0, 1, 4, 5].includes(index)),\n views: [planView],\n });\n }\n }\n }\n\n return { lines: lsGeometries, texts: [] };\n }\n public simplifyGeo(geo: BufferGeometry): Geometry {\n //let simplifiedGeo = new Geometry();\n let vertices = geo.getAttribute(\"position\").array;\n let lineGeo = new Geometry();\n for (let i = 0; i < vertices.length; i += 3) {\n //simplifiedGeo.vertices.push();\n\n lineGeo.vertices.push(\n new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2])\n );\n //lineGeo.vertices.push(new Vector3(vertices[i+3], vertices[i+4], vertices[i+5]));\n\n //if(i == 18) break;\n }\n\n //2-3\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n //3-7\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n //7-6\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n //6-2\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n\n //1-4\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n //4-8\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n //8-5\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n //5-1\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n\n //let line = new LineSegments(lineGeo, new LineBasicMaterial({color: new Color('red')}));\n //this.scene.add(line);\n return lineGeo;\n }\n\n private addGround() {\n let offsetZ = -(\n UI.existingWidth1 / 2 +\n this.extraOffsetZ +\n this.APP.sldBackOverhang.currentValue\n );\n let width = this.totalBaySize + UI.overhangLeft + UI.overhangRight;\n let length =\n UI.span +\n UI.multiSpan +\n UI.overhangFront +\n this.APP.sldBackOverhang.currentValue;\n\n let base = new Mesh(\n this.geo_groundBase.geometry,\n MaterialManager.Instance().BASE\n );\n base.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GROUND_BASE,\n };\n base.position.set(0, 0, offsetZ);\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2;\n if (this.APP.sltExistingType.currentValue == 1) {\n base.position.setX(offsetX);\n }\n if (this.APP.sltExistingType.currentValue == 2) {\n base.position.setX(-offsetX);\n }\n base.scale.set(\n width / this.geo_groundBase.width,\n 1,\n length / this.geo_groundBase.length\n );\n\n this.scene.add(base);\n }\n private addPostOrBracket(offsetX: number, userDataPos: any): void {\n let meshPost = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n meshPost.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let meshBracket = new Mesh(\n this.geo_bracket.geometry,\n MaterialManager.Instance().BRACKET\n );\n meshBracket.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let offsetY =\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfExistingRoof() -\n FIT_FLYOVER_BRAKET_ON_ROOF;\n let postOffsetZ = 0;\n let bracketOffsetZ = 0;\n let scalePostY = 1;\n let scaleBracketY = 1;\n\n let views: Print2DView[];\n if (userDataPos.front) {\n postOffsetZ = UI.span - UI.existingWidth1 / 2 - this.extraOffsetZ;\n bracketOffsetZ = UI.span - UI.existingWidth1 / 2 - this.extraOffsetZ;\n this.frontPostHeight = UI.eaveHeight + this.getBracketHeight(UI.span);\n scalePostY = this.frontPostHeight / this.geo_superiorPost.height;\n scaleBracketY =\n (this.getBracketHeight(UI.span) -\n this.totalHeightFromEaveHeightToTopOfExistingRoof() +\n FIT_FLYOVER_BRAKET_ON_ROOF) /\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n if (UI.multiSpan > 0) {\n postOffsetZ -= this.geo_superiorPost.width / 2;\n bracketOffsetZ -= this.geometryManager.FLY_OVER_BRACKET.S65x3.width / 2;\n } else {\n postOffsetZ -= this.geo_superiorPost.width;\n bracketOffsetZ -= this.geometryManager.FLY_OVER_BRACKET.S65x3.width;\n }\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n if (userDataPos.multiSpan) {\n postOffsetZ =\n UI.multiSpan +\n UI.span -\n UI.existingWidth1 / 2 -\n this.geo_superiorPost.width -\n this.extraOffsetZ;\n bracketOffsetZ =\n UI.multiSpan +\n UI.span -\n UI.existingWidth1 / 2 -\n this.geometryManager.FLY_OVER_BRACKET.S65x3.width -\n this.extraOffsetZ;\n scalePostY =\n (UI.eaveHeight + this.getBracketHeight(UI.span + UI.multiSpan)) /\n this.geo_superiorPost.height;\n scaleBracketY =\n (this.getBracketHeight(UI.span + UI.multiSpan) -\n this.totalHeightFromEaveHeightToTopOfExistingRoof() +\n FIT_FLYOVER_BRAKET_ON_ROOF) /\n this.geo_bracket.height;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n meshPost.userData.views = views;\n meshBracket.userData.views = views;\n\n let bracketOffsetX = offsetX;\n let postOffsetX = offsetX;\n if (userDataPos.first) {\n } else if (userDataPos.last) {\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n } else {\n bracketOffsetX -= this.geo_bracket.width / 2;\n postOffsetX -= this.geo_superiorPost.width / 2;\n }\n\n let exceedMoveBackLimit = false;\n //Rakecut\n if (\n UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE ||\n UI.rakeCutLeftType == RAKECUT_TYPE.STEP\n ) {\n let moveToBack = false;\n if (UI.multiSpan > 0) {\n if (userDataPos.multiSpan && userDataPos.first) {\n moveToBack = true;\n }\n } else {\n if (!userDataPos.multiSpan && userDataPos.first) {\n moveToBack = true;\n }\n }\n\n if (moveToBack) {\n if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n let moveBack = UI.rakeCutLeftVer;\n if (moveBack > 0) {\n postOffsetZ -= moveBack;\n bracketOffsetZ -= moveBack;\n let length = UI.span + UI.multiSpan - moveBack;\n scalePostY =\n this.utils.getHeightByAngle(\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n length,\n UI.patiosPitch,\n -1\n ) / this.geo_superiorPost.height;\n scaleBracketY =\n (this.getBracketHeight(\n UI.span + UI.multiSpan - UI.rakeCutLeftVer\n ) -\n this.totalHeightFromEaveHeightToTopOfExistingRoof() +\n FIT_FLYOVER_BRAKET_ON_ROOF) /\n this.geo_bracket.height;\n }\n } else if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n postOffsetX -= UI.overhangLeft;\n bracketOffsetX -= UI.overhangLeft;\n postOffsetZ -=\n this.beamLeftCutSizeInfo.v + this.beamLeftCutSizeInfo.k_;\n bracketOffsetZ -=\n this.beamLeftCutSizeInfo.v + this.beamLeftCutSizeInfo.k_;\n let length =\n UI.span +\n UI.multiSpan -\n (this.beamLeftCutSizeInfo.v + this.beamLeftCutSizeInfo.k_);\n scalePostY =\n this.utils.getHeightByAngle(\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n length,\n UI.patiosPitch,\n -1\n ) / this.geo_superiorPost.height;\n scaleBracketY =\n (this.getBracketHeight(\n UI.span +\n UI.multiSpan -\n (this.beamLeftCutSizeInfo.v + this.beamLeftCutSizeInfo.k_)\n ) -\n this.totalHeightFromEaveHeightToTopOfExistingRoof() +\n FIT_FLYOVER_BRAKET_ON_ROOF) /\n this.geo_bracket.height;\n if (\n UI.rakeCutLeftVer + this.beamLeftCutSizeInfo.k_ >\n this.MANAGER.patiosLength\n ) {\n exceedMoveBackLimit = true;\n }\n }\n\n //if rake cut is on then do not add post left and right\n //left and right post will be added in individual function\n //return;\n }\n }\n if (\n UI.rakeCutRightType == RAKECUT_TYPE.ANGLE ||\n UI.rakeCutRightType == RAKECUT_TYPE.STEP\n ) {\n let moveToBack = false;\n if (UI.multiSpan > 0) {\n if (userDataPos.multiSpan && userDataPos.last) {\n moveToBack = true;\n }\n } else {\n if (!userDataPos.multiSpan && userDataPos.last) {\n moveToBack = true;\n }\n }\n\n if (moveToBack) {\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n postOffsetX += UI.overhangRight;\n bracketOffsetX += UI.overhangRight;\n postOffsetZ -=\n this.beamRightCutSizeInfo.v + this.beamRightCutSizeInfo.k_;\n bracketOffsetZ -=\n this.beamRightCutSizeInfo.v + this.beamRightCutSizeInfo.k_;\n let length =\n UI.span +\n UI.multiSpan -\n (this.beamRightCutSizeInfo.v + this.beamRightCutSizeInfo.k_);\n scalePostY =\n this.utils.getHeightByAngle(\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n length,\n UI.patiosPitch,\n -1\n ) / this.geo_superiorPost.height;\n scaleBracketY =\n (this.getBracketHeight(\n UI.span +\n UI.multiSpan -\n (this.beamRightCutSizeInfo.v + this.beamRightCutSizeInfo.k_)\n ) -\n this.totalHeightFromEaveHeightToTopOfExistingRoof() +\n FIT_FLYOVER_BRAKET_ON_ROOF) /\n this.geo_bracket.height;\n if (\n UI.rakeCutRightVer + this.beamRightCutSizeInfo.k_ >\n this.MANAGER.patiosLength\n ) {\n exceedMoveBackLimit = true;\n }\n } else if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n let moveBack = UI.rakeCutRightVer;\n if (moveBack > 0) {\n postOffsetZ -= moveBack;\n bracketOffsetZ -= moveBack;\n let length = UI.span + UI.multiSpan - moveBack;\n scalePostY =\n this.utils.getHeightByAngle(\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n length,\n UI.patiosPitch,\n -1\n ) / this.geo_superiorPost.height;\n scaleBracketY =\n (this.getBracketHeight(\n UI.span + UI.multiSpan - UI.rakeCutRightVer\n ) -\n this.totalHeightFromEaveHeightToTopOfExistingRoof() +\n FIT_FLYOVER_BRAKET_ON_ROOF) /\n this.geo_bracket.height;\n }\n }\n //if rake cut is on then do not add post left and right\n //left and right post will be added in individual function\n //return;\n }\n }\n //End rakecut\n\n //post can not go behind existing wall\n if (exceedMoveBackLimit) {\n return;\n }\n\n meshPost.position.set(postOffsetX, 0, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n meshBracket.position.set(bracketOffsetX, offsetY, bracketOffsetZ);\n meshBracket.scale.setY(scaleBracketY);\n let boxPost = new Box3().setFromObject(meshPost);\n // let boxPostHelper = new Box3Helper(boxPost);\n // this.APP.scene.add(boxPostHelper);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n if (isIntersect) {\n if (\n meshBracket.userData.position.left &&\n UI.existingType != BUILDING_SIDE.BOTH\n ) {\n meshBracket.translateX(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n );\n } else if (\n meshBracket.userData.position.right &&\n UI.existingType != BUILDING_SIDE.BOTH\n ) {\n meshBracket.translateX(\n -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n )\n );\n }\n this.scene.add(meshBracket);\n } else {\n if (this.APP.sltExistingType.currentValue == 1) {\n meshPost.translateX(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n );\n } else if (this.APP.sltExistingType.currentValue == 2) {\n meshPost.translateX(\n -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n )\n );\n }\n this.scene.add(meshPost);\n }\n }\n public addPostAngleRakecut(offsetX: number, userDataPos: any) {\n if (\n UI.rakeCutLeftType != RAKECUT_TYPE.ANGLE &&\n UI.rakeCutRightType != RAKECUT_TYPE.ANGLE\n ) {\n return;\n }\n\n let postOffsetZ =\n UI.multiSpan +\n UI.span -\n UI.existingWidth1 / 2 -\n this.geo_superiorPost.width -\n this.extraOffsetZ;\n let bracketOffsetZ =\n UI.multiSpan +\n UI.span -\n UI.existingWidth1 / 2 -\n this.geometryManager.FLY_OVER_BRACKET.S65x3.width -\n this.extraOffsetZ;\n let scalePostY =\n (UI.eaveHeight + this.getBracketHeight(UI.span + UI.multiSpan)) /\n this.geo_superiorPost.height;\n let scaleBracketY =\n this.getBracketHeight(UI.span + UI.multiSpan) / this.geo_bracket.height;\n let offsetY = UI.eaveHeight;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n if (userDataPos.first) {\n let postLeft = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n postLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n postLeft.position.set(\n offsetX + this.beamLeftCutSizeInfo.l,\n 0,\n postOffsetZ\n );\n postLeft.scale.setY(scalePostY);\n\n let bracketLeft = new Mesh(\n this.geo_bracket.geometry,\n MaterialManager.Instance().BRACKET\n );\n bracketLeft.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n views: views,\n };\n bracketLeft.position.set(\n offsetX + this.beamLeftCutSizeInfo.l,\n offsetY,\n bracketOffsetZ\n );\n bracketLeft.scale.setY(scaleBracketY);\n\n let boxPost = new Box3().setFromObject(postLeft);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n let isIntersectPost = false;\n this.scene.children\n .filter((el) => el.userData.type == GEOMETRY_TYPE.SUPERIOR_POST)\n .forEach((el) => {\n el.updateWorldMatrix(true, true);\n let boxEl = new Box3().setFromObject(el);\n if (boxPost.intersectsBox(boxEl)) {\n isIntersectPost = true;\n }\n });\n\n if (isIntersect && !isIntersectPost) {\n this.scene.add(bracketLeft);\n } else if (!isIntersectPost) {\n this.scene.add(postLeft);\n }\n }\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n if (userDataPos.last) {\n let postLeft = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n postLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n postLeft.position.set(\n offsetX - this.beamRightCutSizeInfo.l - this.geo_superiorPost.width,\n 0,\n postOffsetZ\n );\n postLeft.scale.setY(scalePostY);\n\n let bracketLeft = new Mesh(\n this.geo_bracket.geometry,\n MaterialManager.Instance().BRACKET\n );\n bracketLeft.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n views: views,\n };\n bracketLeft.position.set(\n offsetX - this.beamRightCutSizeInfo.l - this.geo_superiorBeam.width,\n offsetY,\n bracketOffsetZ\n );\n bracketLeft.scale.setY(scaleBracketY);\n\n let boxPost = new Box3().setFromObject(postLeft);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n let isIntersectPost = false;\n this.scene.children\n .filter((el) => el.userData.type == GEOMETRY_TYPE.SUPERIOR_POST)\n .forEach((el) => {\n el.updateWorldMatrix(true, true);\n let boxEl = new Box3().setFromObject(el);\n if (boxPost.intersectsBox(boxEl)) {\n isIntersectPost = true;\n }\n });\n\n if (isIntersect && !isIntersectPost) {\n this.scene.add(bracketLeft);\n } else if (!isIntersectPost) {\n this.scene.add(postLeft);\n }\n }\n }\n }\n private addPostStepRakecut() {\n if (\n UI.rakeCutLeftType != RAKECUT_TYPE.STEP &&\n UI.rakeCutRightType != RAKECUT_TYPE.STEP\n ) {\n return;\n }\n const fitX = this.getContainerOffsetXToFitBraketToExistingWall();\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n let userDataPos = { rakecut: true };\n\n let offsetXL = -UI.totalBayLength / 2 + fitX;\n let offsetXR = UI.totalBayLength / 2 - this.geo_superiorPost.width + fitX;\n let offsetZF =\n UI.span +\n UI.multiSpan -\n UI.existingWidth1 / 2 -\n this.extraOffsetZ -\n this.geo_superiorPost.width;\n let scaleYF =\n this.utils.getHeightByAngle(\n UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n -1\n ) / this.geo_superiorPost.height;\n\n let moveRight = UI.rakeCutLeftHor - UI.overhangLeft;\n if (moveRight > 0) {\n offsetXL += moveRight;\n }\n\n let moveLeft = UI.rakeCutRightHor - UI.overhangRight;\n if (moveLeft > 0) {\n offsetXR -= moveLeft;\n }\n\n let posts: Array = [];\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n let offsetZB = offsetZF;\n let scaleYB = scaleYF;\n let moveBack = UI.rakeCutLeftVer;\n if (moveBack > 0) {\n offsetZB -= moveBack;\n scaleYB =\n this.utils.getHeightByAngle(\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n -1\n ) / this.geo_superiorPost.height;\n }\n\n let postFront = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n postFront.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: { ...userDataPos, left: true },\n views: views,\n };\n postFront.position.set(offsetXL, 0, offsetZF);\n postFront.scale.setY(scaleYF);\n //this.scene.add(postFront);\n posts.push(postFront);\n\n let postBack = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n postBack.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: { ...userDataPos, left: true },\n views: views,\n };\n postBack.position.set(offsetXL, 0, offsetZB);\n postBack.scale.setY(scaleYB);\n posts.push(postBack);\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n let offsetZB = offsetZF;\n let scaleYB = scaleYF;\n let moveBack = UI.rakeCutRightVer;\n if (moveBack > 0) {\n offsetZB -= moveBack;\n scaleYB =\n this.utils.getHeightByAngle(\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n -1\n ) / this.geo_superiorPost.height;\n }\n\n let postFront = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n postFront.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: { ...userDataPos, right: true },\n views: views,\n };\n postFront.position.set(offsetXR, 0, offsetZF);\n postFront.scale.setY(scaleYF);\n //this.scene.add(postFront);\n posts.push(postFront);\n\n let postBack = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n postBack.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: { ...userDataPos, right: true },\n views: views,\n };\n postBack.position.set(offsetXR, 0, offsetZB);\n postBack.scale.setY(scaleYB);\n //this.scene.add(postBack);\n posts.push(postBack);\n }\n\n for (let post of posts) {\n let boxPost = new Box3().setFromObject(post);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n if (isIntersect) {\n let bracket = new Mesh(\n this.geo_bracket.geometry,\n MaterialManager.Instance().BRACKET\n );\n bracket.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n bracket.position.set(post.position.x, UI.eaveHeight, post.position.z);\n let height =\n post.scale.y * this.geo_superiorPost.height - UI.eaveHeight;\n let scaleY = height / this.geo_bracket.height;\n bracket.scale.setY(scaleY);\n this.scene.add(bracket);\n } else {\n this.scene.add(post);\n }\n }\n }\n public addPostOrBracketBack() {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET &&\n x.userData.position.back\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.SUPERIOR_POST &&\n x.userData.position.back\n )\n );\n\n let first = true;\n let last = false;\n let offsetX = -this.totalBaySize / 2;\n let userDataPos = { back: true };\n\n let bracketDistance = this.totalBaySize / (this.numberOfBracketsBack - 1);\n let cutoutLengthInExistingBoth =\n (this.totalBaySize - this.APP.sldExistingLength.currentValue) / 2;\n let extraWalWidth =\n this.APP.existingWallManager.geo_existingWallL1.width +\n CONST.EAVE_OFFSET_BACK;\n\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES &&\n this.MANAGER.cutoutCondition\n ) {\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n offsetX += this.APP.sldExistingLength2.currentValue;\n bracketDistance =\n (this.totalBaySize - this.APP.sldExistingLength2.currentValue) /\n (this.numberOfBracketsBack - 1);\n } else {\n offsetX +=\n this.APP.sldExistingLength2.currentValue -\n (this.APP.existingWallManager.geo_existingWallW1.width +\n CONST.EAVE_OFFSET_BACK);\n bracketDistance =\n (this.totalBaySize -\n this.APP.sldExistingLength2.currentValue +\n extraWalWidth) /\n (this.numberOfBracketsBack - 1);\n }\n } else if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n bracketDistance =\n (this.totalBaySize - this.APP.sldExistingLength2.currentValue) /\n (this.numberOfBracketsBack - 1);\n } else {\n bracketDistance =\n (this.totalBaySize -\n this.APP.sldExistingLength2.currentValue +\n extraWalWidth) /\n (this.numberOfBracketsBack - 1);\n }\n } else if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n offsetX += cutoutLengthInExistingBoth - extraWalWidth;\n bracketDistance =\n (this.APP.sldExistingLength.currentValue + extraWalWidth * 2) /\n (this.numberOfBracketsBack - 1);\n }\n }\n\n for (let i = 0; i < this.numberOfBracketsBack; i++) {\n if (i == this.numberOfBracketsBack - 1) {\n last = true;\n }\n let meshPost = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n meshPost.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let meshBracket = new Mesh(\n this.geo_bracket.geometry,\n MaterialManager.Instance().BRACKET\n );\n meshBracket.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let bracketOffsetY =\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfExistingRoof() -\n FIT_FLYOVER_BRAKET_ON_ROOF;\n let postOffsetZ = 0;\n let bracketOffsetZ = 0;\n\n let scalePostY = 1;\n let scaleBracketY = 1;\n\n let views: Print2DView[];\n\n postOffsetZ = -UI.existingWidth1 / 2 - this.extraOffsetZ;\n bracketOffsetZ = -UI.existingWidth1 / 2 - this.extraOffsetZ;\n scalePostY =\n (UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket()) /\n this.geo_superiorPost.height;\n scaleBracketY =\n (UI.braketHeight + this.houseBeamHeight()) /\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n meshPost.userData.views = views;\n meshBracket.userData.views = views;\n\n let bracketOffsetX = offsetX;\n let postOffsetX = offsetX;\n\n if (first) {\n } else if (last) {\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n } else {\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n }\n\n meshPost.position.set(postOffsetX, 0, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n meshBracket.position.set(bracketOffsetX, bracketOffsetY, bracketOffsetZ);\n meshBracket.scale.setY(scaleBracketY);\n\n //Check intersect eave\n let boxPost = new Box3().setFromObject(meshPost);\n boxPost.translate(this.scene.position);\n\n let isIntersect = false;\n //let isCutoutInterset = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n }\n }\n\n if (isIntersect) {\n if (\n i == 0 &&\n (this.APP.sltExistingType.currentValue == 1 ||\n this.APP.sltExistingType.currentValue == 3)\n ) {\n meshBracket.translateX(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n );\n } else if (\n last &&\n (this.APP.sltExistingType.currentValue == 2 ||\n this.APP.sltExistingType.currentValue == 3)\n ) {\n meshBracket.translateX(\n -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n )\n );\n }\n\n this.scene.add(meshBracket);\n } else {\n this.scene.add(meshPost);\n }\n\n if (i < this.numberOfBracketsBack) {\n offsetX += bracketDistance;\n }\n first = false;\n }\n }\n public addPostOrBracketBackCutout(): void {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET &&\n x.userData.position.back &&\n x.userData.position.cutout\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.SUPERIOR_POST &&\n x.userData.position.back &&\n x.userData.position.cutout\n )\n );\n\n if (\n this.APP.sltCutOut.currentValue != CUTOUT_ENABLE.YES ||\n !this.MANAGER.cutoutCondition\n )\n return;\n\n let first = true;\n let last = false;\n let offsetXL = -this.totalBaySize / 2;\n let offsetXR = this.totalBaySize / 2;\n\n let userDataPos = { back: true, cutout: true };\n\n let extraWalWidth =\n this.APP.existingWallManager.geo_existingWallL1.width +\n CONST.EAVE_OFFSET_BACK;\n let bracketDistance =\n (this.APP.sldExistingLength2.currentValue - extraWalWidth) /\n (this.numberOfBracketCutout - 1);\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n bracketDistance =\n this.APP.sldExistingLength2.currentValue /\n (this.numberOfBracketCutout - 1);\n }\n\n // Add for left side\n if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n for (let i = 0; i < this.numberOfBracketCutout; i++) {\n if (i == this.numberOfBracketCutout - 1) {\n last = true;\n }\n\n let meshPost = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n meshPost.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let meshBracket = new Mesh(\n this.geo_bracket.geometry,\n MaterialManager.Instance().BRACKET\n );\n meshBracket.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let offsetY =\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfExistingRoof() -\n FIT_FLYOVER_BRAKET_ON_ROOF;\n\n let postOffsetZ =\n -UI.existingWidth1 / 2 - this.extraOffsetZ + UI.existingWidth1;\n let bracketOffsetZ =\n -UI.existingWidth1 / 2 - this.extraOffsetZ + UI.existingWidth1;\n\n let views: Print2DView[];\n\n let scalePostY =\n this.utils.getHeightByAngle(\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.existingWidth1,\n UI.patiosPitch,\n -1\n ) / this.geo_superiorPost.height;\n let scaleBracketY =\n (this.utils.getHeightByAngle(\n UI.braketHeight,\n UI.existingWidth1,\n UI.patiosPitch,\n -1\n ) +\n this.houseBeamHeight()) /\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n // { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n meshPost.userData.views = views;\n meshBracket.userData.views = views;\n\n let bracketOffsetX = offsetXL;\n let postOffsetX = offsetXL;\n if (first) {\n } else if (last) {\n } else {\n bracketOffsetX -= this.geo_bracket.width / 2;\n postOffsetX -= this.geo_superiorPost.width / 2;\n }\n\n meshPost.position.set(postOffsetX, 0, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n\n meshBracket.position.set(bracketOffsetX, offsetY, bracketOffsetZ);\n meshBracket.scale.setY(scaleBracketY);\n\n //Check intersect eave\n let boxPost = new Box3().setFromObject(meshPost);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n if (isIntersect) {\n if (this.APP.sltExistingType.currentValue == 1) {\n meshBracket.translateX(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n );\n }\n this.scene.add(meshBracket);\n } else {\n this.scene.add(meshPost);\n }\n\n if (i < this.numberOfBracketCutout) {\n offsetXL += bracketDistance;\n }\n first = false;\n }\n }\n\n if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n first = true;\n\n for (let i = 0; i < this.numberOfBracketCutout; i++) {\n if (i == this.numberOfBracketCutout - 1) {\n last = true;\n }\n\n let meshPost = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n meshPost.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let meshBracket = new Mesh(\n this.geo_bracket.geometry,\n MaterialManager.Instance().BRACKET\n );\n meshBracket.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let offsetY =\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfExistingRoof() -\n FIT_FLYOVER_BRAKET_ON_ROOF;\n\n let postOffsetZ =\n -UI.existingWidth1 / 2 - this.extraOffsetZ + UI.existingWidth1;\n let bracketOffsetZ =\n -UI.existingWidth1 / 2 - this.extraOffsetZ + UI.existingWidth1;\n\n let views: Print2DView[];\n\n let scalePostY =\n this.utils.getHeightByAngle(\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.existingWidth1,\n UI.patiosPitch,\n -1\n ) / this.geo_superiorPost.height;\n let scaleBracketY =\n (this.utils.getHeightByAngle(\n UI.braketHeight,\n UI.existingWidth1,\n UI.patiosPitch,\n -1\n ) +\n this.houseBeamHeight()) /\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n views = [\n // { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n meshPost.userData.views = views;\n meshBracket.userData.views = views;\n\n let bracketOffsetX = offsetXR;\n let postOffsetX = offsetXR;\n if (first) {\n if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n }\n } else if (last) {\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n } else {\n bracketOffsetX -= this.geo_bracket.width / 2;\n postOffsetX -= this.geo_superiorPost.width / 2;\n }\n\n meshPost.position.set(postOffsetX, 0, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n\n meshBracket.position.set(bracketOffsetX, offsetY, bracketOffsetZ);\n meshBracket.scale.setY(scaleBracketY);\n\n //Check intersect eave\n let boxPost = new Box3().setFromObject(meshPost);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n if (isIntersect) {\n if (this.APP.sltExistingType.currentValue == 2) {\n meshBracket.translateX(\n -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n )\n );\n }\n\n this.scene.add(meshBracket);\n } else {\n this.scene.add(meshPost);\n }\n\n if (i < this.numberOfBracketCutout) {\n offsetXR -= bracketDistance;\n }\n first = false;\n }\n }\n }\n public addSuperiorBeam(userDataPos: any) {\n let offsetX = -this.totalBaySize / 2 - UI.overhangLeft;\n let offsetZ = 0;\n let offsetY = 0;\n\n let beamLength = this.totalBaySize + UI.overhangLeft + UI.overhangRight;\n let extraWallWidth =\n this.APP.existingWallManager.geo_existingWallW1.width +\n CONST.EAVE_OFFSET_BACK;\n let views: Print2DView[];\n\n if (userDataPos.front) {\n offsetY = UI.eaveHeight + this.getBracketHeight(UI.span);\n offsetZ = UI.span - UI.existingWidth1 / 2 - this.extraOffsetZ;\n if (UI.multiSpan > 0) {\n offsetZ -= this.geo_superiorBeam.width / 2;\n } else {\n offsetZ -= this.geo_superiorBeam.width;\n }\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.back) {\n //Add house beam\n offsetY =\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.houseBeamHeight();\n\n offsetZ = -(UI.existingWidth1 / 2 + this.extraOffsetZ);\n\n if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.MANAGER.cutoutCondition\n ) {\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n offsetX += this.APP.sldExistingLength2.currentValue;\n beamLength =\n this.totalBaySize +\n UI.overhangLeft +\n UI.overhangRight -\n this.APP.sldExistingLength2.currentValue;\n } else {\n offsetX +=\n this.APP.sldExistingLength2.currentValue - extraWallWidth;\n beamLength =\n this.totalBaySize +\n UI.overhangLeft +\n UI.overhangRight -\n this.APP.sldExistingLength2.currentValue +\n extraWallWidth;\n }\n\n offsetX += UI.overhangLeft;\n beamLength -= UI.overhangLeft;\n } else if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT\n ) {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n beamLength =\n this.totalBaySize +\n UI.overhangLeft +\n UI.overhangRight -\n this.APP.sldExistingLength2.currentValue;\n } else {\n beamLength =\n this.totalBaySize +\n UI.overhangLeft +\n UI.overhangRight -\n this.APP.sldExistingLength2.currentValue +\n extraWallWidth;\n }\n\n beamLength -= UI.overhangRight;\n } else if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n offsetX +=\n (this.totalBaySize -\n (this.APP.sldExistingLength.currentValue +\n this.APP.existingWallManager.geo_existingWallW1.width * 2)) /\n 2 -\n CONST.EAVE_OFFSET_BACK;\n beamLength =\n this.APP.sldExistingLength.currentValue +\n this.APP.existingWallManager.geo_existingWallW1.width * 2 +\n CONST.EAVE_OFFSET_BACK * 2;\n }\n }\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.multiSpan) {\n offsetY = UI.eaveHeight + this.getBracketHeight(UI.span + UI.multiSpan);\n offsetZ =\n UI.multiSpan +\n UI.span -\n UI.existingWidth1 / 2 -\n this.geo_superiorBeam.width -\n this.extraOffsetZ;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.cutout) {\n offsetY =\n UI.eaveHeight +\n this.getBracketHeight(UI.existingWidth1) +\n this.houseBeamHeight();\n offsetZ = UI.existingWidth1 - UI.existingWidth1 / 2 - this.extraOffsetZ;\n beamLength =\n this.APP.sldExistingLength2.currentValue -\n this.APP.existingWallManager.geo_existingWallW1.width;\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n beamLength += extraWallWidth;\n }\n\n beamLength +=\n UI.overhangLeft +\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n views = [\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n beamLength += extraWallWidth;\n offsetX =\n this.totalBaySize / 2 +\n UI.overhangRight -\n this.APP.sldExistingLength2.currentValue -\n CONST.EAVE_OFFSET_BACK;\n } else {\n offsetX =\n this.totalBaySize / 2 +\n UI.overhangRight -\n this.APP.sldExistingLength2.currentValue +\n this.APP.existingWallManager.geo_existingWallW1.width;\n }\n\n offsetX -=\n UI.overhangRight +\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2;\n beamLength +=\n UI.overhangRight +\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2;\n } else if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n beamLength =\n (this.totalBaySize - this.APP.sldExistingLength.currentValue) / 2 -\n this.APP.existingWallManager.geo_existingWallW1.width -\n CONST.EAVE_OFFSET_BACK +\n this.geo_bracket.width +\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2;\n }\n }\n //rake cut\n if (\n (UI.multiSpan <= 0 && userDataPos.front) ||\n (UI.multiSpan > 0 && userDataPos.multiSpan)\n ) {\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n offsetX += this.beamLeftCutSizeInfo.l;\n beamLength -= this.beamLeftCutSizeInfo.l;\n } else if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n offsetX += UI.rakeCutLeftHor;\n beamLength -= UI.rakeCutLeftHor;\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n beamLength -= this.beamRightCutSizeInfo.l;\n } else if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n beamLength -= UI.rakeCutRightHor;\n }\n }\n const fitX = this.getContainerOffsetXToFitBraketToExistingWall();\n offsetX += fitX;\n if (userDataPos.front || userDataPos.multiSpan) {\n this.cutStandardBeamByCutBeamWithinBayControl(\n this.geo_superiorBeam,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetX, offsetY, offsetZ),\n new Vector3(),\n views,\n 1,\n userDataPos,\n this.geoBeamJoint\n );\n } else {\n this.cutStandardBeamToEqualLengthBeam(\n userDataPos.back || userDataPos.cutout\n ? this.geo_superiorHouseBeam\n : this.geo_superiorBeam,\n userDataPos.back || userDataPos.cutout\n ? this.geo_houseBeamEndCap\n : this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetX, offsetY, offsetZ),\n new Vector3(),\n views,\n 1,\n userDataPos,\n userDataPos.back || userDataPos.cutout\n ? this.geoHouseBeamJoint\n : this.geoBeamJoint\n );\n }\n\n //Add one more beam cutout right\n if (userDataPos.cutout && UI.existingType == BUILDING_SIDE.BOTH) {\n offsetX = UI.totalBayLength / 2 - beamLength;\n this.cutStandardBeamToEqualLengthBeam(\n this.geo_superiorHouseBeam,\n this.geo_houseBeamEndCap,\n beamLength,\n new Vector3(offsetX, offsetY, offsetZ),\n new Vector3(),\n views,\n 1,\n userDataPos,\n this.geoHouseBeamJoint\n );\n }\n }\n private cutStandardBeamToEqualLengthBeam(\n beamGeo: GeometryInfo,\n beamCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n userDataPos: any,\n jointGeo: GeometryInfo\n ) {\n const beamStartX = pos.x;\n const beamEndX = pos.x + length;\n\n const numOfBeam = Math.ceil(\n length / EXISTING_BUILDING_CONFIG.MAXIMUM_LENGTH_PER_BEAM\n );\n const lengthPerBeam = Math.abs(beamEndX - beamStartX) / numOfBeam;\n for (let i = 0; i < numOfBeam; i++) {\n let beamGroup = this.utils.createBeamGroup(\n beamGeo,\n beamCapGeo,\n lengthPerBeam,\n new Vector3(beamStartX + lengthPerBeam * i, pos.y, pos.z),\n rot,\n views,\n directionOffset,\n userDataPos,\n UI.beamLayoutShow,\n {\n hasStartCap: UI.beamType == 0 && i == 0,\n hasEndCap:\n UI.beamType == 0 &&\n (i == numOfBeam - 1 || (i == 0 && numOfBeam == 1)),\n hasStartJoint: i !== 0,\n hasEndJoint: false,\n jointGeo: jointGeo,\n }\n );\n this.scene.add(beamGroup);\n }\n }\n private cutStandardBeamByCutBeamWithinBayControl(\n beamGeo: GeometryInfo,\n beamCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n userDataPos: any,\n jointGeo: GeometryInfo\n ) {\n const fitX = this.getContainerOffsetXToFitBraketToExistingWall();\n // Map list cut beam here\n const beamStartX = pos.x;\n const beamEndX = pos.x + length;\n\n let endOfBayX = -UI.totalBayLength / 2 + fitX;\n let startCutBeamX = beamStartX;\n let endCutBeamX = beamStartX;\n\n const beams = this.utils.getListSeperateBeamsByBays(\n endOfBayX,\n beamStartX,\n beamEndX,\n endCutBeamX,\n startCutBeamX\n );\n\n for (let i = 0; i < beams.length; i++) {\n endCutBeamX = beams[i][1];\n startCutBeamX = beams[i][0];\n let beamGroup = this.utils.createBeamGroup(\n beamGeo,\n beamCapGeo,\n endCutBeamX - startCutBeamX,\n new Vector3(startCutBeamX, pos.y, pos.z),\n rot,\n views,\n directionOffset,\n userDataPos,\n UI.beamLayoutShow,\n {\n hasStartCap: UI.beamType == 0 && i == 0,\n hasEndCap:\n UI.beamType == 0 &&\n (i == beams.length - 1 || (i == 0 && beams.length == 1)),\n hasStartJoint: i !== 0,\n hasEndJoint: false,\n jointGeo: jointGeo,\n }\n );\n this.scene.add(beamGroup);\n }\n }\n private addBeamAngleRakecut() {\n if (\n UI.rakeCutLeftType != RAKECUT_TYPE.ANGLE &&\n UI.rakeCutRightType != RAKECUT_TYPE.ANGLE\n ) {\n return;\n }\n\n let offsetZ =\n UI.multiSpan + UI.span - UI.existingWidth1 / 2 - this.extraOffsetZ;\n let offsetY = this.utils.getHeightByAngle(\n UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n -1\n );\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n let beamLength = this.beamLeftCutSizeInfo.m;\n\n //beam lenght can not go behind existing wall\n if (\n UI.rakeCutLeftVer + this.beamLeftCutSizeInfo.k_ >\n this.MANAGER.patiosLength\n ) {\n beamLength -= this.beamLeftCutSizeInfo.b;\n }\n\n let scaleZ = beamLength / this.geo_beamRakecutLeft.length;\n\n let offsetXStart = 0;\n let offsetXEnd = beamLength;\n let rotY = Math.atan(UI.rakeCutLeftHor / UI.rakeCutLeftVer);\n let rotX = this.utils.degreesToRadians(UI.patiosPitch);\n\n let offsetX =\n -this.totalBaySize / 2 - UI.overhangLeft + this.beamLeftCutSizeInfo.l;\n const mesh = new Mesh(\n this.geo_beamRakecutLeft.geometry,\n MaterialManager.Instance().BEAM\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n };\n mesh.scale.setZ(scaleZ);\n\n let capL = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capL.position.set(\n this.geo_beamEndCap.width / 2,\n 0,\n -(offsetXEnd + this.geo_beamEndCap.length / 2 - 2)\n );\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let capR = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capR.position.set(\n this.geo_beamEndCap.width / 2,\n 0,\n offsetXStart - this.geo_beamEndCap.length / 2 + 2\n );\n capR.rotateY(Math.PI);\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n angle: true,\n };\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetX -= fitZ;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetX += fitZ;\n }\n beamGroup.position.set(offsetX, offsetY, offsetZ);\n beamGroup.rotation.set(rotX, rotY, 0);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n this.scene.add(beamGroup);\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n let beamLength = this.beamRightCutSizeInfo.m;\n\n //beam lenght can not go behind existing wall\n if (\n UI.rakeCutRightVer + this.beamRightCutSizeInfo.k_ >\n this.MANAGER.patiosLength\n ) {\n beamLength -= this.beamRightCutSizeInfo.b;\n }\n\n let scaleZ = beamLength / this.geo_beamRakecutLeft.length;\n\n let offsetXStart = 0;\n let offsetXEnd = beamLength;\n let rotY = Math.atan(UI.rakeCutRightHor / UI.rakeCutRightVer);\n let rotX = this.utils.degreesToRadians(UI.patiosPitch);\n\n let offsetX =\n this.totalBaySize / 2 + UI.overhangRight - this.beamRightCutSizeInfo.l;\n const mesh = new Mesh(\n this.geo_beamRakecutRight.geometry,\n MaterialManager.Instance().BEAM\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n };\n mesh.scale.setZ(scaleZ);\n\n let capL = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capL.position.set(\n -this.geo_beamEndCap.width / 2,\n 0,\n -(offsetXEnd + this.geo_beamEndCap.length / 2 - 2)\n );\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let capR = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capR.position.set(\n -this.geo_beamEndCap.width / 2,\n 0,\n offsetXStart - this.geo_beamEndCap.length / 2 + 2\n );\n capR.rotateY(Math.PI);\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n angle: true,\n };\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetX -= fitZ;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetX += fitZ;\n }\n beamGroup.position.set(offsetX, offsetY, offsetZ);\n beamGroup.rotation.set(rotX, -rotY, 0);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n this.scene.add(beamGroup);\n }\n }\n private addBeamStepRakecut() {\n if (\n UI.rakeCutLeftType != RAKECUT_TYPE.STEP &&\n UI.rakeCutRightType != RAKECUT_TYPE.STEP\n ) {\n return;\n }\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n let offsetXL = -UI.totalBayLength / 2 - UI.overhangLeft;\n let offsetXR = UI.totalBayLength / 2 + UI.overhangRight;\n\n let offsetY = this.utils.getHeightByAngle(\n UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.span + UI.multiSpan,\n UI.patiosPitch,\n -1\n );\n\n if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n let offsetZ =\n UI.span + UI.multiSpan - this.extraOffsetZ - UI.existingWidth1 / 2;\n let moveBack = UI.rakeCutLeftVer;\n if (moveBack > 0) {\n offsetZ -= moveBack;\n offsetY = this.utils.getHeightByAngle(\n UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n -1\n );\n }\n\n let beamLength = UI.rakeCutLeftHor + this.geo_superiorPost.width;\n if (UI.rakeCutLeftHor < UI.overhangLeft) {\n beamLength = UI.overhangLeft + this.geo_superiorPost.width;\n }\n\n let scaleX = beamLength / this.geo_beamStepRakecutLeft.length;\n\n let beam = new Mesh(\n this.geo_beamStepRakecutLeft.geometry,\n MaterialManager.Instance().BEAM\n );\n beam.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n };\n beam.scale.setX(scaleX);\n\n let capL = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capL.position.set(\n this.geo_beamEndCap.length / 2 - 2,\n 0,\n -this.geo_beamEndCap.width / 2\n );\n capL.rotateY(Math.PI / 2);\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let capR = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capR.position.set(\n beamLength + this.geo_beamEndCap.length / 2 - 2,\n 0,\n -this.geo_beamEndCap.width / 2\n );\n capR.rotateY(-Math.PI / 2);\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n };\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetXL -= fitZ;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetXL += fitZ;\n }\n beamGroup.position.set(offsetXL, offsetY, offsetZ);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(beam, capL, capR);\n } else {\n beamGroup.add(beam);\n }\n this.scene.add(beamGroup);\n }\n if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n let offsetZ =\n UI.span + UI.multiSpan - this.extraOffsetZ - UI.existingWidth1 / 2;\n let moveBack = UI.rakeCutRightVer;\n if (moveBack > 0) {\n offsetZ -= moveBack;\n offsetY = this.utils.getHeightByAngle(\n UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.span + UI.multiSpan - moveBack,\n UI.patiosPitch,\n -1\n );\n }\n\n let beamLength = UI.rakeCutRightHor + this.geo_superiorPost.width;\n if (UI.rakeCutRightHor < UI.overhangRight) {\n beamLength = UI.overhangRight + this.geo_superiorPost.width;\n }\n\n let scaleX = beamLength / this.geo_beamStepRakecutRight.length;\n\n let beam = new Mesh(\n this.geo_beamStepRakecutRight.geometry,\n MaterialManager.Instance().BEAM\n );\n beam.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n };\n beam.scale.setX(scaleX);\n\n let capL = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capL.position.set(\n -(beamLength + this.geo_beamEndCap.length / 2 - 2),\n 0,\n -this.geo_beamEndCap.width / 2\n );\n capL.rotateY(Math.PI / 2);\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let capR = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capR.position.set(\n -(this.geo_beamEndCap.length / 2 - 2),\n 0,\n -this.geo_beamEndCap.width / 2\n );\n capR.rotateY(-Math.PI / 2);\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n views: views,\n };\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetXR -= fitZ;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetXR += fitZ;\n }\n beamGroup.position.set(offsetXR, offsetY, offsetZ);\n //beamGroup.rotateY(Math.PI);\n if (UI.beamType == 0) {\n beamGroup.add(beam, capL, capR);\n } else {\n beamGroup.add(beam);\n }\n\n this.scene.add(beamGroup);\n }\n }\n public getBracketHeight(offset): number {\n let angle = UI.patiosPitch;\n return (\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() -\n this.utils.tan(angle) * offset\n );\n }\n\n public destroy(): void {\n this.unregisterEvent();\n }\n\n private registerEvent(): void {\n this.eventHandleId = this.uiChangedDefer.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldExistingWallHeight,\n this.APP.sldEaveWidth,\n this.APP.sldFasciaDepth,\n\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n\n this.APP.sltExistingType,\n this.APP.dialogEditBay,\n\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldFrontOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldFlyOverBracketHeight,\n\n this.APP.sltColourBeam,\n this.APP.sltColourPost,\n this.APP.sltColourBracket,\n this.APP.sltColourFasciaBracket,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n ];\n //this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n\n this.controlsToRegisterEvent2 = [\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltHouseBeamSize,\n this.APP.sltColumnType,\n ];\n this.controlsToRegisterEvent2.forEach((c) =>\n c.addAction(this.objectSizeChangedHandle)\n );\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach((c) =>\n c.removeAction(this.objectSizeChangedHandle)\n );\n this.controlsToRegisterEvent2 = undefined;\n }\n private objectSizeChanged(pre: number, cur: number) {\n this.optimize().then(() => {\n this.load();\n });\n }\n uiChangedDefer(previousValue: number, currentValue: number) {\n if (this.APP.sltCutOut.currentValue == 1) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => {\n this.load();\n }, this.deferTimeout);\n } else {\n this.load();\n }\n }\n}\n","import { Scene, Mesh, Object3D, Material, Group, FontLoader, TextBufferGeometry, PlaneBufferGeometry, Vector3, BoxHelper, Box3Helper, Matrix4, Box3, Geometry, LineSegments, LineBasicMaterial, Color, BoxBufferGeometry, ArrowHelper, BufferGeometry, Line, Line3 } from \"three\";\nimport { HomeComponent as AppComponent, HomeComponent } from '../../containers/home/home.component';\nimport { Util } from '../utils';\nimport { MaterialManager } from '../material.manager';\nimport { GeometryInfo, ViewType, LineType, IBay, Printing2DGeometry, Printing2DLine, Print2DText, Printing2DGeometryType } from '../models';\nimport { GEOMETRY_TYPE, DIMENSION_LOCATION, DIMENSION_LABEL_TYPE } from 'src/app/app.config';\nimport { environment } from 'src/environments/environment';\nimport { PatiosFlyOverManager } from '.';\nimport { GeometryManager } from '../geometry.manager';\nimport { FIT_DIMENSION, FIT_DIMENSION_FAR, FIT_FLYOVER_BRAKET_ON_ROOF, PANEL_DIRECTION, RAKECUT_TYPE } from 'src/app/app.constants';\nimport Dimension, { AddDimensionOptions } from \"src/app/models/Dimension\";\nimport {CONFIG as conf} from '../../app.config'\nimport { UI } from \"../ui\";\n\nexport class DimensionManager {\n private scene: Scene;\n private APP: AppComponent;\n private MANAGER: PatiosFlyOverManager;\n public listText: THREE.Object3D[] = [];\n private utils: Util;\n\n\n private eventHandleId: any;\n\n private material: Material;\n\n private materialManager: MaterialManager;\n\n private dimensionPatiosFrontBottom: Object3D;\n private dimensionPatiosFrontRight: Object3D;\n \n private dimensionPatiosRightBottom: Object3D;\n private dimensionPatiosRightLeft: Object3D;\n private dimensionPatiosRightRight: Object3D;\n\n private dimensionPatiosLeftBottom: Object3D;\n private dimensionPatiosLeftRight: Object3D;\n private dimensionPatiosLeftLeft: Object3D;\n\n private dimensionPatiosPlanRight: Object3D;\n private dimensionPatiosPlanBottom: Object3D;\n private dimensionPatiosPlanLeft: Object3D;\n private dimensionPlanMiddle: Object3D;\n private dimensionPlanMidleLeft: Object3D;\n private dimensionPatiosPlanLeftOverHang: Object3D;\n\n private dimensionPatiosLowerHeightDim: Object3D;\n private dimensionPatiosFlyOverBraketHeightDim: Object3D;\n\n private lineCapGeo: GeometryInfo;\n private lineGeo: GeometryInfo;\n private textGeo: TextBufferGeometry;\n\n private dimensionDistance = 1500;\n private dimensionDistance2 = 500;\n private dimensionDistance3 = 300;\n\n private textDistance = 5000;\n\n private totalBaySize: number;\n private box: Box3;\n\n private font: any\n private textParameter: any;\n private isReady = false;\n\n private controlsToRegisterEvent: Array;\n private geometryManager: GeometryManager;\n\n private options : AddDimensionOptions;\n private startPos: Vector3;\n private startMatrix: Matrix4;\n private startBayLength: number;\n\n constructor(app: AppComponent, flyOverManager: PatiosFlyOverManager) {\n this.utils = new Util();\n this.materialManager = MaterialManager.Instance();\n this.APP = app;\n this.MANAGER = flyOverManager;\n this.scene = this.APP.scene;\n this.material = MaterialManager.Instance().DIMENSION_TEXT;\n this.geometryManager = GeometryManager.Instance();\n //this.registerEvent();\n }\n\n \n public optimize() : Promise{\n return new Promise((resolve, reject) => {\n this.lineGeo = this.geometryManager.getDimensionLine();\n this.lineCapGeo = this.geometryManager.getDimensionCap();\n\n resolve();\n });\n }\n public load(): Promise { \n return new Promise((resolve, reject) => {\n this.unload();\n \n var loader = new FontLoader();\n \n this.dimensionPatiosFrontBottom = new Group();\n this.dimensionPatiosFrontBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n // this.dimensionPatiosFrontBottom.rotation.set(0,Math.PI,0);\n this.dimensionPatiosFrontBottom.visible = false;\n\n this.dimensionPatiosFrontRight = new Group();\n this.dimensionPatiosFrontRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosFrontRight.rotation.set(0,0,-Math.PI/2);\n this.dimensionPatiosFrontRight.visible = false;\n \n this.dimensionPatiosRightBottom = new Group();\n this.dimensionPatiosRightBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightBottom.rotation.set(0,-Math.PI/2,0);\n this.dimensionPatiosRightBottom.visible = false;\n\n this.dimensionPatiosRightLeft = new Group();\n this.dimensionPatiosRightLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightLeft.rotation.set(0,-Math.PI/2,-Math.PI/2);\n this.dimensionPatiosRightLeft.visible = false;\n\n this.dimensionPatiosRightRight = new Group();\n this.dimensionPatiosRightRight.rotation.set(0,-Math.PI/2,-Math.PI/2);\n this.dimensionPatiosRightRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightRight.visible = false;\n \n this.dimensionPatiosLeftBottom = new Group();\n this.dimensionPatiosLeftBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftBottom.rotation.set(0,-Math.PI/2,0);\n this.dimensionPatiosLeftBottom.visible = false;\n\n this.dimensionPatiosLeftRight = new Group();\n this.dimensionPatiosLeftRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftRight.rotation.set(Math.PI/2,-Math.PI/2,0);\n this.dimensionPatiosLeftRight.visible = false;\n\n this.dimensionPatiosLeftLeft = new Group();\n this.dimensionPatiosLeftLeft.rotation.set(0, -Math.PI / 2, Math.PI / 2);\n this.dimensionPatiosLeftLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftLeft.visible = false;\n\n this.dimensionPatiosPlanRight = new Group();\n this.dimensionPatiosPlanRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosPlanRight.rotation.set(-Math.PI/2, Math.PI, -Math.PI/2);\n\n this.dimensionPatiosPlanBottom = new Group();\n this.dimensionPatiosPlanBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosPlanBottom.rotation.set(-Math.PI / 2, 0, 0);\n\n this.dimensionPatiosLowerHeightDim = new Group();\n this.dimensionPatiosLowerHeightDim.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLowerHeightDim.rotation.set(0, 0, Math.PI / 2);\n \n this.dimensionPatiosFlyOverBraketHeightDim = new Group();\n this.dimensionPatiosFlyOverBraketHeightDim.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosFlyOverBraketHeightDim.rotation.set(0, 0, Math.PI / 2);\n\n this.dimensionPatiosPlanLeft = new Group();\n this.dimensionPatiosPlanLeft.userData = { type: GEOMETRY_TYPE.DIMENSION , position: { left: true } };\n this.dimensionPatiosPlanLeft.rotation.set(-Math.PI / 2, 0, -Math.PI / 2);\n\n this.dimensionPlanMiddle = new Group();\n this.dimensionPlanMiddle.userData = { type: GEOMETRY_TYPE.DIMENSION };\n //this.dimensionPlanMiddle.rotation.set(-Math.PI / 2, 0, 0);\n this.dimensionPlanMidleLeft = new Group();\n\n this.dimensionPatiosPlanLeftOverHang = new Group();\n\n this.scene.add(this.dimensionPatiosPlanRight);\n this.scene.add(this.dimensionPatiosPlanLeft);\n this.scene.add(this.dimensionPatiosFrontRight);\n this.APP.patiosManager.patiosGroup.add(\n this.dimensionPatiosFrontBottom, \n //this.dimensionPatiosFrontRight, \n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom, \n this.dimensionPatiosLeftRight, \n this.dimensionPatiosPlanBottom,\n this.dimensionPatiosLowerHeightDim,\n this.dimensionPatiosFlyOverBraketHeightDim,\n this.dimensionPlanMiddle,\n this.dimensionPatiosPlanLeftOverHang,\n this.dimensionPatiosLeftLeft,\n this.dimensionPlanMidleLeft\n );\n loader.load( environment.modelBaseUrl + '/assets/fonts/helvetiker_regular.typeface.json', (font) => {\n this.font = font;\n\n this.textParameter = {\n font: this.font,\n size: 200,\n height: 5,\n curveSegments: 10\n };\n this.options = {\n container: HomeComponent.ins.scene,\n start: new Vector3(),\n end: new Vector3(),\n linePos: new Vector3(),\n views: [],\n allowDrag: true,\n textParameter: this.textParameter,\n textPos: new Vector3(),\n labelType: null,\n fitZ: 10,\n hasTextClone: false,\n axis: 'x',\n lineLength: 0,\n subtype: null,\n textUserData: null,\n onDragCallback: this.onDimDrag.bind(this),\n onDragStartCallback: this.onDimDragStart.bind(this),\n }\n\n this.isReady = true;\n this.draw();\n \n resolve();\n })\n });\n }\n\n public unload(){\n this.scene.remove(this.dimensionPatiosPlanRight);\n this.scene.remove(this.dimensionPatiosPlanLeft);\n this.scene.remove(this.dimensionPatiosFrontRight);\n if(this.APP.patiosManager && this.APP.patiosManager.patiosGroup){\n this.APP.patiosManager.patiosGroup.remove(\n this.dimensionPatiosFrontBottom, \n //this.dimensionPatiosFrontRight, \n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom, \n this.dimensionPatiosLeftRight,\n this.dimensionPatiosLeftLeft,\n this.dimensionPatiosPlanBottom,\n this.dimensionPatiosLowerHeightDim,\n this.dimensionPatiosFlyOverBraketHeightDim,\n this.dimensionPlanMiddle,\n this.dimensionPlanMidleLeft,\n this.dimensionPatiosPlanLeftOverHang\n );\n }\n }\n \n public draw() {\n if (!this.isReady) {\n return;\n }\n this.dimensionPatiosLowerHeightDim.children = this.dimensionPatiosLowerHeightDim.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.LOWER_HEIGHT_DIM\n );\n this.dimensionPatiosFlyOverBraketHeightDim.children = this.dimensionPatiosFlyOverBraketHeightDim.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.BRAKET_HEIGHT_DIM\n );\n this.dimensionPatiosPlanBottom.children = this.dimensionPatiosPlanBottom.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.LEFT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.RIGHT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY\n );\n this.dimensionPatiosPlanRight.children = this.dimensionPatiosPlanRight.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.MULTI_SPAN\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.FRONT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.BACK_OVERHANG\n );\n this.dimensionPatiosPlanLeft.children = this.dimensionPatiosPlanLeft.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL \n )\n this.dimensionPatiosFrontBottom.children = [];\n this.dimensionPatiosFrontRight.children = [];\n this.dimensionPatiosLeftBottom.children = [];\n this.dimensionPatiosLeftRight.children = [];\n this.dimensionPatiosRightBottom.children = [];\n this.dimensionPatiosRightLeft.children = [];\n this.dimensionPatiosRightRight.children = [];\n this.dimensionPlanMiddle.children = [];\n this.dimensionPatiosPlanLeftOverHang.children = [];\n this.dimensionPatiosLeftLeft.children = [];\n this.dimensionPlanMidleLeft.children = [];\n \n this.totalBaySize = 0;\n for(let b of this.APP.dialogEditBay.listBay){\n this.totalBaySize += b.value;\n }\n\n this.box = this.utils.getSceneBox();\n\n this.drawDimensionLowerHeightDim();\n this.drawDimensionFlyOverBraketHeightDim();\n\n this.drawDimensionPatiosPlanBottom();\n this.drawDimensionPatiosPlanRight();\n this.drawDimensionPatiosPlanLeft();\n\n this.drawDimensionPatiosFrontBottom();\n this.drawDimensionPatiosFrontRight();\n\n this.drawDimensionPatiosLeftBottom();\n this.drawDimensionPatiosLeftRight();\n this.drawDimensionPatiosLeftLeft();\n\n this.drawDimensionPatiosRightBottom();\n this.drawDimensionPatiosRightLeft();\n this.drawDimensionPatiosRightRight();\n\n //testing\n // [\n // this.dimensionPatiosFrontBottom,\n // this.dimensionPatiosFrontRight,\n // this.dimensionPatiosRightBottom,\n // this.dimensionPatiosRightLeft,\n // this.dimensionPatiosRightRight,\n // this.dimensionPatiosLeftBottom,\n // this.dimensionPatiosLeftRight,\n // this.dimensionPatiosLeftLeft,\n // ].forEach(g => { g.visible = true });\n\n this.drawDimensionMidle();\n //this.drawDimensionPatiosPlanLeftOverHang();\n this.drawDimensionMidleLeft();\n\n // var offset = this.calulateBoundingBox();\n // this.dimensionPatiosPlanRight.position.setX(offset.right);\n // this.dimensionPatiosPlanLeft.position.setX(offset.left);\n // this.dimensionPatiosPlanBottom.position.setZ(offset.front);\n\n // let existingHouseDimLeft = this.APP.scene.children.find(c => c.userData.type == GEOMETRY_TYPE.DIMENSION && c.userData.position?.planLeft);\n // if(existingHouseDimLeft && existingHouseDimLeft.position.x > offset.left){\n // existingHouseDimLeft.position.setX(offset.left - 500);\n // }\n\n this.APP.dimensionManager.draw();\n }\n private totalHeightFromEaveHeightToTopOfFlyoverBraket(){\n const height = this.totalHeightFromEaveHeightToTopOfExistingRoof() + UI.braketHeight - FIT_FLYOVER_BRAKET_ON_ROOF;\n \n return height\n }\n private drawDimensionMidleLeft() {\n let offsetX = 0;\n let offsetZ = -this.APP.sldExistingWidth1.currentValue / 2 + 500;\n let origin = new Vector3(0, 0, 0);\n let head = new Vector3(0, 0, 1000);\n let hand1 = new Vector3(-50, 0, 950);\n let hand2 = new Vector3(50, 0, 950);\n\n //arrow\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n //let material = new LineBasicMaterial({ color: 0x0000ff });\n let geoLine = new Geometry();\n geoLine.vertices.push(origin);\n geoLine.vertices.push(head);\n\n geoLine.vertices.push(head);\n geoLine.vertices.push(hand1);\n\n geoLine.vertices.push(hand1);\n geoLine.vertices.push(hand2);\n\n geoLine.vertices.push(hand2);\n geoLine.vertices.push(head);\n let dim = new Line(geoLine);\n dim.userData = { type: \"Arrow\", views: views };\n\n //text of degree\n let textStr = \"Panel direction\";\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, 0, 0) };\n text.position.setZ(500);\n text.position.setX(200);\n\n dim.visible = false;\n text.visible = false;\n\n this.dimensionPlanMidleLeft.add(dim);\n this.dimensionPlanMidleLeft.add(text);\n\n\n if (this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT) {\n text.position.set(-200, 0, 500);\n this.dimensionPlanMidleLeft.rotation.set(0, -Math.PI / 2, 0);\n this.dimensionPlanMidleLeft.position.set(offsetX + 500, 0, offsetZ);\n }\n else {\n this.dimensionPlanMidleLeft.rotation.set(0, Math.PI / 2, 0);\n this.dimensionPlanMidleLeft.position.set(-offsetX - 500, 0, offsetZ);\n }\n }\n private drawDimensionMidle() {\n let offsetZ = this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue / 2 - this.APP.sldExistingWidth1.currentValue/2;\n let origin = new Vector3(0, 0, 0);\n let head = new Vector3(0, 0, 1000);\n let hand1 = new Vector3(-50, 0, 950);\n let hand2 = new Vector3(50, 0, 950);\n let dir = new Vector3(0,0,1);\n let arrow = new ArrowHelper(dir, origin, 1000);\n arrow.userData = { type: \"ARROW\", views: [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }] };\n\n //arrow\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n let material = new LineBasicMaterial({ color: 0x0000ff });\n let geoLine = new Geometry();\n geoLine.vertices.push(origin);\n geoLine.vertices.push(head);\n\n geoLine.vertices.push(head);\n geoLine.vertices.push(hand1);\n\n geoLine.vertices.push(hand1);\n geoLine.vertices.push(hand2);\n\n geoLine.vertices.push(hand2);\n geoLine.vertices.push(head);\n let dim = new Line(geoLine, material);\n dim.userData = { type: \"Arrow\", views: views };\n\n //text of degree\n let textStr = this.APP.sltRoofPitch.currentValue + ' degree';\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n \n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, Math.PI / 2, 0) };\n text.position.setZ(500);\n text.position.setX(200);\n\n dim.visible = false;\n text.visible = false;\n\n this.dimensionPlanMiddle.add(dim);\n this.dimensionPlanMiddle.add(text);\n\n this.dimensionPlanMiddle.position.set(0, 0, offsetZ);\n\n //console.log(dim);\n }\n\n private totalHeightFromEaveHeightToTopOfExistingRoof(){\n const height = \n this.geometryManager.EAVE.EAVE.height \n + UI.fasciaDepth \n + UI.eaveWidth * this.utils.tan(UI.existingRoofPitch) \n + this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.height / this.utils.cos(UI.existingRoofPitch)\n \n return height\n }\n private drawDimensionFlyOverBraketHeightDim(){\n const bracketHeight =(UI.braketHeight + this.MANAGER.columnAndBeamManager.houseBeamHeight())\n const offsetZBackPos = - UI.existingWidth1 / 2 - this.MANAGER.columnAndBeamManager.extraOffsetZ - FIT_DIMENSION_FAR;\n\n this.dimensionPatiosFlyOverBraketHeightDim.position.set(0, UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfExistingRoof() - FIT_FLYOVER_BRAKET_ON_ROOF + bracketHeight / 2, offsetZBackPos);\n\n let textStr = this.utils.getDimensionValue(bracketHeight);\n let options : AddDimensionOptions = {\n ... this.options,\n lineLength: bracketHeight,\n container: this.dimensionPatiosFlyOverBraketHeightDim,\n views: [],\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, -200, 0),\n textRotation: new Vector3(Math.PI, 0, 0),\n labelType: DIMENSION_LABEL_TYPE.BRAKET_HEIGHT_DIM,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [] },\n allowDrag: false\n }\n let dimBay = this.dimensionPatiosFlyOverBraketHeightDim.children.find(el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.BRAKET_HEIGHT_DIM\n ) as Dimension;\n if(!dimBay){\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n\n private drawDimensionLowerHeightDim(){\n const frontPostHeight = UI.eaveHeight + this.MANAGER.columnAndBeamManager.getBracketHeight(UI.span + UI.multiSpan)\n const offsetZFrontPos = UI.span + UI.multiSpan - UI.existingWidth1 / 2 - this.MANAGER.columnAndBeamManager.extraOffsetZ + FIT_DIMENSION;\n\n this.dimensionPatiosLowerHeightDim.position.set(0, frontPostHeight / 2, offsetZFrontPos);\n\n let textStr = this.utils.getDimensionValue(frontPostHeight);\n let options : AddDimensionOptions = {\n ... this.options,\n lineLength: frontPostHeight,\n container: this.dimensionPatiosLowerHeightDim,\n views: [],\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, 200, 0),\n labelType: DIMENSION_LABEL_TYPE.LOWER_HEIGHT_DIM,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [] },\n allowDrag: false\n }\n let dimBay = this.dimensionPatiosLowerHeightDim.children.find(el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.LOWER_HEIGHT_DIM\n ) as Dimension;\n if(!dimBay){\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n\n private drawDimensionPatiosPlanBottom(){\n let offsetX = -this.totalBaySize / 2;\n //let offsetZ = this.box.max.z + this.dimensionDistance2;\n //let offsetZ = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance3 - this.APP.sldExistingWidth1.currentValue/2;\n //if (this.APP.sldExistingWidth1.currentValue > this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) {\n // offsetZ = this.APP.sldExistingWidth1.currentValue / 2 + this.dimensionDistance2\n // if(this.APP.sldExistingLength2.currentValue > 0){\n // offsetZ += 500;\n // }\n //}\n\n let views = [ { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS } ];\n\n //this.dimensionPatiosPlanBottom.position.setZ(offsetZ);\n this.dimensionPatiosPlanBottom.children = this.dimensionPatiosPlanBottom.children.filter(el => \n el.userData?.groupType != DIMENSION_LABEL_TYPE.BAY\n || (el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY && el.userData?.bayNum < HomeComponent.ins.dialogEditBay.listBay.length)\n );\n \n for(let i = 0; i <= this.APP.dialogEditBay.listBay.length; i++){\n let b: IBay = {index: 0, value: 0, isCut: false};\n if(i < this.APP.dialogEditBay.listBay.length){\n b = this.APP.dialogEditBay.listBay[i];\n }\n\n // let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n // cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n // cap2.position.setX(offsetX);\n // this.dimensionPatiosPlanBottom.add(cap2);\n\n if(i < this.APP.dialogEditBay.listBay.length){\n let textStr = this.utils.getDimensionValue(b.value);\n let options : AddDimensionOptions = {... this.options,\n lineLength: b.value,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(offsetX + b.value / 2, 0, 0),\n textPos: new Vector3(offsetX + b.value / 2, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.BAY,\n bayNum: i,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, position: { bottom: true } }\n }\n let dimBay = this.dimensionPatiosPlanBottom.children.find(el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY \n && el.userData?.bayNum == i\n ) as Dimension;\n if(!dimBay){\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n offsetX += b.value;\n }\n\n //rakecut\n if(this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE){\n let _offsetX = -this.APP.dialogEditBay.totalBaySize/2 + this.APP.sldLeftCutHorizontal.currentValue/2 - this.APP.sldLeftOverhang.currentValue;\n let options : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldLeftCutHorizontal.currentValue,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(_offsetX, 500, 0),\n textPos: new Vector3(_offsetX, 300, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL,\n subtype: GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT\n }\n let dimRake = this.dimensionPatiosPlanBottom.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL) as Dimension;\n if(!dimRake){\n new Dimension(options);\n } else {\n dimRake.update(options);\n }\n } else {\n this.dimensionPatiosPlanBottom.children = this.dimensionPatiosPlanBottom.children.filter(el => el.userData?.groupType != DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL)\n }\n if(this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE){\n let _offsetX = this.APP.dialogEditBay.totalBaySize/2 - this.APP.sldRightCutHorizontal.currentValue/2 + this.APP.sldRightOverhang.currentValue;\n let options : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldRightCutHorizontal.currentValue,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(_offsetX, 500, 0),\n textPos: new Vector3(_offsetX, 500-200, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL,\n subtype: GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT\n }\n let dimRake = this.dimensionPatiosPlanBottom.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL) as Dimension;\n if(!dimRake){\n new Dimension(options);\n } else {\n dimRake.update(options);\n }\n } else {\n this.dimensionPatiosPlanBottom.children = this.dimensionPatiosPlanBottom.children.filter(el => el.userData?.groupType != DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL)\n }\n //Left over hang\n this.addOverhang(this.dimensionPatiosPlanBottom, offsetX, this.APP.sldLeftOverhang.currentValue, views, \"Left\", 0, \"z\", DIMENSION_LABEL_TYPE.LEFT_OVERHANG);\n this.addOverhang(this.dimensionPatiosPlanBottom, offsetX, this.APP.sldRightOverhang.currentValue, views, \"Right\", 0, \"z\", DIMENSION_LABEL_TYPE.RIGHT_OVERHANG);\n this.repositionDimension(this.dimensionPatiosPlanBottom, DIMENSION_LOCATION.PLAN_BOTTOM);\n }\n onDimDrag(event){\n this.utils.handlerDimDragEvent(event, this.startPos, this.startMatrix, this.startBayLength);\n this.startPos = event.object.position.clone();\n }\n onDimDragStart(event){\n this.startPos = event.object.position.clone();\n this.startMatrix = event.object.matrixWorld.clone();\n if(event.object.userData?.dimType === DIMENSION_LABEL_TYPE.BAY){\n let bayNum = event.object.userData.bayNum;\n this.startBayLength = UI.listBay[+bayNum].value;\n }\n }\n private drawDimensionPatiosPlanRight(){\n \n let views = [ { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS } ];\n let offsetDimensionZ = this.APP.sldSpan.currentValue/2 \n - this.APP.sldExistingWidth1.currentValue/2 \n - this.APP.existingWallManager.geo_existingWallL1.width \n - this.APP.eaveManager.backOverhang;\n\n let _dimensionDistane = this.dimensionDistance2;\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n if(this.APP.sldExistingWidth1.currentValue > 0){\n _dimensionDistane = this.dimensionDistance;\n }\n }\n\n let offsetDimensionX = this.box.max.x + this.dimensionDistance2;\n //let offsetDimensionX = this.totalBaySize/2 + this.APP.patiosManager.patiosGroup.position.x + _dimensionDistane;\n //if(this.APP.sldExistingLength.currentValue/2 > this.totalBaySize/2){\n // offsetDimensionX = this.APP.sldExistingLength.currentValue/2 + _dimensionDistane;\n //}\n \n //if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n // offsetDimensionX += this.APP.sldExistingLength2.currentValue;\n //}\n\n //this.dimensionPatiosPlanRight.position.set(offsetDimensionX, 0, offsetDimensionZ);\n\n let dimLength = this.APP.sldSpan.currentValue;\n\n let textStr = this.utils.getDimensionValue(this.APP.sldSpan.currentValue);\n\n let options : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldSpan.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.SPAN,\n hasTextClone: false,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneRotation: new Vector3(0, Math.PI, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, -Math.PI, 0),\n fitZ: -10\n }\n let dimSpan = this.dimensionPatiosPlanRight.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN) as Dimension;\n if(!dimSpan){\n new Dimension(options);\n } else {\n dimSpan.update(options);\n }\n\n if(this.APP.sldMultiSpan.currentValue > 0){\n // let offsetX = this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue;\n // - this.APP.sldExistingWidth1.currentValue/2 \n // - this.APP.existingWallManager.geo_existingWallL1.width \n // - this.APP.eaveManager.backOverhang;\n dimLength += this.APP.sldMultiSpan.currentValue;\n\n let textStr = this.utils.getDimensionValue(this.APP.sldMultiSpan.currentValue);\n\n let optionsMul : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldMultiSpan.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue / 2, 0, 0),\n textPos: new Vector3(this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue / 2, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.MULTI_SPAN,\n hasTextClone: false,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneRotation: new Vector3(0, Math.PI, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, -Math.PI, 0),\n fitZ: -10\n }\n let dimMul = this.dimensionPatiosPlanRight.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.MULTI_SPAN) as Dimension;\n if(!dimMul){\n new Dimension(optionsMul);\n } else {\n dimMul.update(optionsMul);\n }\n } else {\n this.dimensionPatiosPlanRight.children = this.dimensionPatiosPlanRight.children.filter(el => el.userData?.groupType != DIMENSION_LABEL_TYPE.MULTI_SPAN)\n }\n\n let extraDistance = 0;\n //----Rake cut\n if(this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE){\n extraDistance = 500;\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n \n let offsetZ = dimLength/2 + UI.multiSpan / 2 + this.APP.sldFrontOverhang.currentValue - this.APP.sldRightCutVertical.currentValue/2;\n \n let optionsRake : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldRightCutVertical.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(offsetZ, 500, 0),\n textPos: new Vector3(offsetZ, 300, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL,\n textRotation: new Vector3( 0, Math.PI, 0),\n fitZ: -10,\n subtype: GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT\n }\n let dimRake = this.dimensionPatiosPlanRight.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL) as Dimension;\n if(!dimRake){\n new Dimension(optionsRake);\n } else {\n dimRake.update(optionsRake);\n }\n } else {\n this.dimensionPatiosPlanRight.children = this.dimensionPatiosPlanRight.children.filter(el => el.userData?.groupType != DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL)\n }\n //----End rake cut\n \n let offsetRight = this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue;\n let offsetLeft = this.APP.sldSpan.currentValue / 2;// + this.APP.sldMultiSpan.currentValue;\n\n this.addOverhang(this.dimensionPatiosPlanRight, offsetRight, this.APP.sldFrontOverhang.currentValue, views, \"Right\", Math.PI,\"y\", DIMENSION_LABEL_TYPE.FRONT_OVERHANG);\n this.addOverhang(this.dimensionPatiosPlanRight, offsetLeft, this.APP.sldBackOverhang.currentValue, views, \"Left\", Math.PI, \"y\", DIMENSION_LABEL_TYPE.BACK_OVERHANG);\n\n this.repositionDimension(this.dimensionPatiosPlanRight, DIMENSION_LOCATION.PLAN_RIGHT, extraDistance);\n }\n private drawDimensionPatiosPlanLeft(){\n if(this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.NONE){\n this.dimensionPatiosPlanLeft.children = this.dimensionPatiosPlanLeft.children.filter(el => el.userData?.groupType != DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL)\n return;\n }\n\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n\n let offsetDimensionZ = this.APP.sldSpan.currentValue\n + this.APP.sldMultiSpan.currentValue\n + this.APP.sldFrontOverhang.currentValue\n - this.APP.sldExistingWidth1.currentValue / 2\n - this.APP.existingWallManager.geo_existingWallL1.width\n - this.APP.eaveManager.backOverhang\n - this.APP.sldLeftCutVertical.currentValue/2;\n\n let optionsRake : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldLeftCutVertical.currentValue,\n container: this.dimensionPatiosPlanLeft,\n views: views,\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL,\n }\n let dimRake = this.dimensionPatiosPlanLeft.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL) as Dimension;\n if(!dimRake){\n new Dimension(optionsRake);\n } else {\n dimRake.update(optionsRake);\n }\n\n //let offsetDimensionX = this.MANAGER.boundingBox.min.x - this.dimensionDistance2;\n this.dimensionPatiosPlanLeft.position.set(0, 0, offsetDimensionZ);\n this.repositionDimension(this.dimensionPatiosPlanLeft, DIMENSION_LOCATION.PLAN_LEFT);\n }\n private drawDimensionPatiosFrontBottom(){\n let dimOffsetY = -this.dimensionDistance2;\n this.dimensionPatiosFrontBottom.position.set(0,dimOffsetY,0);\n\n let views = [ { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosPlanBottom.children.forEach( groupDim => {\n groupDim.children.filter(c => c.userData.subtype != GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT).forEach(e => {\n let dim = e.clone();\n dim.userData['views'] = views;\n if(dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n dim.rotation.set(0,Math.PI,0);\n dim.userData['rotation'] = new Vector3(0,0,0);\n dim.userData['position'] = { ...e.userData.position, bottom: true };\n }\n this.dimensionPatiosFrontBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosFrontRight(){\n let views = [ { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS } ];\n\n let _dimensionDistane = this.dimensionDistance2;\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n if(this.APP.sldExistingWidth1.currentValue > 0){\n _dimensionDistane = this.dimensionDistance;\n }\n }\n \n \n let dimOffsetX = this.totalBaySize/2 + this.APP.patiosManager.patiosGroup.position.x + _dimensionDistane;\n let height = this.utils.getHeightByAngle(UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.MANAGER.columnAndBeamManager.geo_superiorBeam.height, this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue, this.APP.sltRoofPitch.currentValue, -1);\n let dimOffsetY = height/2;\n \n\n //--------\n let scaleLength = height/this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-dimOffsetY);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(dimOffsetY);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(height);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0,0,-Math.PI/2) };\n text.position.set(0,200,0);\n\n this.dimensionPatiosFrontRight.add(line, cap1, cap2, text, ...this.utils.addArrowForLine(line));\n this.repositionDimension(this.dimensionPatiosFrontRight, DIMENSION_LOCATION.FRONT_RIGHT);\n }\n private drawDimensionPatiosLeftBottom(){\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z - (this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + this.APP.eaveManager.backOverhang - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0));\n \n this.dimensionPatiosLeftBottom.position.set(0,dimOffsetY,dimOffsetZ);\n\n let views = [ \n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n this.dimensionPatiosPlanRight.children.forEach( groupDim => {\n groupDim.children.forEach(e => {\n if(e.userData?.subType == GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT)\n return;\n \n let dim = e.clone();\n dim.userData['views'] = views;\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.rotation.set(0, 0, 0);\n dim.userData['views'] = [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }];\n dim.userData['rotation'] = new Vector3(0, 0, 0);\n dim.userData['position'] = {...e.userData.position, bottom: true}; \n }\n this.dimensionPatiosLeftBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosLeftRight() {\n let dimOffsetY = UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.MANAGER.columnAndBeamManager.geo_superiorBeam.height - (this.utils.tan(this.APP.sltRoofPitch.currentValue) * (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue));\n\n let views = [ \n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n let offsetLength = dimOffsetY;\n let scaleLength = offsetLength / this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength/2);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength/2);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }], rotation: new Vector3(-Math.PI / 2, 0, 0) };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosLeftRight.add(line, cap1, cap2, text, ...this.utils.addArrowForLine(line));\n\n //this.dimensionPatiosFrontRight.children.forEach(e => {\n // let dim = e.clone();\n // dim.userData['views'] = views;\n // if(dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n // dim.userData['views'] = [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }];\n // dim.userData['rotation'] = new Vector3(-Math.PI/2,0,0);\n // }\n // this.dimensionPatiosLeftRight.add(dim);\n //});\n\n this.repositionDimension(this.dimensionPatiosLeftRight, DIMENSION_LOCATION.LEFT_RIGHT);\n }\n private drawDimensionPatiosRightBottom(){\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z - (this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + this.APP.eaveManager.backOverhang - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0));\n \n this.dimensionPatiosRightBottom.position.set(0,dimOffsetY,dimOffsetZ);\n\n let views = [ { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosPlanRight.children.forEach(groupDim => {\n groupDim.children.forEach(e => {\n if(e.userData?.subType == GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT)\n return;\n \n let dim = e.clone();\n dim.userData['views'] = views;\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.userData['rotation'] = new Vector3(0, 0, 0);\n dim.userData['position'] = {...e.userData.position, bottom: true};\n }\n this.dimensionPatiosRightBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosRightLeft(){\n // let dimOffsetY = this.APP.sldBuildingHeight.currentValue - (this.utils.tan(this.APP.sltRoofPitch.currentValue) * (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue));\n // let dimOffsetZ = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance2 - this.APP.sldExistingWidth1.currentValue / 2 - 290;\n // if(this.APP.sldExistingWidth1.currentValue > this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue){\n // dimOffsetZ = this.APP.sldExistingWidth1.currentValue/2 + this.dimensionDistance2;\n // }\n this.dimensionPatiosRightLeft.position.set(0,this.dimensionPatiosLeftRight.position.y,this.dimensionPatiosLeftRight.position.z);\n\n let views = [ { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosLeftRight.children.forEach(e => {\n let dim = e.clone();\n dim.userData['views'] = views;\n if(e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n dim.userData['rotation'] = new Vector3(Math.PI/2,0,0);\n dim.rotation.set(0,Math.PI,0);\n }\n this.dimensionPatiosRightLeft.add(dim);\n });\n\n this.repositionDimension(this.dimensionPatiosRightLeft, DIMENSION_LOCATION.RIGHT_LEFT);\n }\n private drawDimensionPatiosLeftLeft() { \n let dimOffsetY = UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.MANAGER.columnAndBeamManager.geo_superiorBeam.height;\n let dimOffsetZ = this.APP.sldExistingWidth1.currentValue / 2 + 1800;\n\n this.dimensionPatiosLeftLeft.position.set(0, dimOffsetY / 2, -dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n let offsetLength = dimOffsetY;\n let scaleLength = offsetLength / this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength / 2);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength / 2);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }], rotation: new Vector3(Math.PI / 2, 0, 0) };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosLeftLeft.add(line, cap1, cap2, text, ...this.utils.addArrowForLine(line));\n\n //this.dimensionPatiosFrontRight.children.forEach(e => {\n // let dim = e.clone();\n // dim.userData['views'] = views;\n // if(dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n // dim.userData['views'] = [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }];\n // dim.userData['rotation'] = new Vector3(-Math.PI/2,0,0);\n // }\n // this.dimensionPatiosLeftRight.add(dim);\n //});\n }\n private drawDimensionPatiosRightRight(){\n let dimOffsetY = UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.MANAGER.columnAndBeamManager.geo_superiorBeam.height;\n let dimOffsetZ = this.APP.sldExistingWidth1.currentValue / 2 + 1800;\n \n this.dimensionPatiosRightRight.position.set(0,dimOffsetY/2,-dimOffsetZ);\n\n let views = [ { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosLeftLeft.children.forEach(e => {\n if(e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n let dim = e.clone();\n dim.userData['views'] = views;\n dim.userData['rotation'] = new Vector3(-Math.PI/2,0,0);\n dim.rotation.set(0,Math.PI,0);\n dim.position.set(dim.position.x, -dim.position.y, dim.position.z);\n this.dimensionPatiosRightRight.add(dim);\n }\n });\n }\n\n private addOverhang(groupDim: Object3D, offset: number, overhangValue: number, views: any, side: string, rotateText: number, axis: string, labelType?: string) {\n // if (overhangValue == 0)\n // return;\n\n let textStr = this.utils.getDimensionValue(overhangValue);\n\n let textRotation = new Vector3();\n let textUserData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, position: { overhang: true }};\n if (axis === \"z\") {\n textRotation.setZ(rotateText);\n textUserData['rotation'] = new Vector3(0, 0, -rotateText / 2);\n textUserData['position']['bottom'] = true;\n }\n else if (axis === \"y\") {\n textRotation.setY(rotateText);\n textUserData['rotation'] = new Vector3(0, -rotateText / 2, 0);\n }\n else if (axis === \"x\") {\n textRotation.setX(rotateText);\n textUserData['rotation'] = new Vector3(-rotateText / 2, 0, 0);\n }\n\n let linePos = new Vector3();\n if (side === \"Left\") {\n linePos.setX(-offset - overhangValue / 2);\n }\n else if (side === \"Right\") {\n linePos.setX(offset + overhangValue / 2);\n }\n let fitZ = 0;\n if(labelType){\n if(axis === 'z'){\n fitZ = 10;\n } else if(axis === 'y'){\n fitZ = -10;\n }\n }\n let options : AddDimensionOptions = {... this.options,\n lineLength: overhangValue,\n container: groupDim,\n views: views,\n linePos: linePos,\n textPos: linePos.clone().setY(linePos.y - 200),\n labelType: labelType ? labelType : null,\n fitZ: fitZ,\n textRotation: textRotation,\n textUserData: textUserData\n }\n let dim = groupDim.children.find(el => el.userData?.groupType == labelType) as Dimension;\n if(!dim){\n new Dimension(options);\n } else {\n dim.update(options)\n }\n\n if(overhangValue == 0){\n groupDim.children = groupDim.children.filter(el => el.userData?.groupType != labelType)\n }\n }\n private getTextCover(textGeo: TextBufferGeometry, labelType: string, pos: Vector3, fitZ = 0, bayNum?: number){\n let textSize = new Vector3();\n textGeo.boundingBox.getSize(textSize)\n\n let textCover = new Mesh(new BoxBufferGeometry(textSize.x, textSize.y, textSize.z + fitZ))\n textCover.position.set(pos.x , pos.y, pos.z);\n textCover.userData = { type: GEOMETRY_TYPE.TEXT_COVER, labelType };\n if(bayNum !== undefined){\n textCover.userData['bayNum'] = bayNum;\n }\n textCover.material['opacity'] = 0;\n textCover.material['transparent'] = true;\n\n return textCover\n }\n\n public getOutlines(): Printing2DGeometry{\n let lsGeometries: Printing2DLine[] = [];\n let lsText: Print2DText[] = [];\n \n for(let dim of [\n ...this.dimensionPatiosPlanBottom.children,\n ...this.dimensionPatiosPlanRight.children,\n ...this.dimensionPatiosPlanLeft.children,\n ...this.dimensionPatiosFrontBottom.children,\n ...this.dimensionPatiosFrontRight.children,\n ...this.dimensionPatiosLeftBottom.children,\n ...this.dimensionPatiosLeftRight.children,\n ...this.dimensionPatiosRightBottom.children,\n ...this.dimensionPatiosRightLeft.children,\n ...this.dimensionPlanMiddle.children,\n ...this.dimensionPatiosPlanLeftOverHang.children,\n ...this.dimensionPatiosLeftLeft.children,\n ...this.dimensionPatiosRightRight.children,\n ...this.dimensionPlanMidleLeft.children\n\n ]){\n if(!dim.userData.views){\n // console.log(\"TEXT NO VIEW\", dim);\n continue;\n }\n\n if(dim.type == 'Group'){\n dim.children.forEach(el => {\n el.updateMatrix();\n let _clone = el.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(el.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n \n el.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(el.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(el.matrixWorld);\n\n let textRotation = el.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, el, pos, textRotation, points)\n })\n } else{\n dim.updateMatrix();\n let _clone = dim.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(dim.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n \n dim.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(dim.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(dim.matrixWorld);\n\n let textRotation = dim.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, dim, pos, textRotation, points)\n }\n }\n \n return { lines: lsGeometries, texts: lsText };\n }\n private getDimInfo(lsGeometries: Printing2DLine[], lsText: Print2DText[], dim: Object3D, pos: Vector3, textRotation: Vector3, points: Vector3[]){\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && dim.userData.views && dim.userData.value) {\n let box = new Box3().setFromObject(dim.parent);\n let startEnd = this.utils.getStartEndPoint(box);\n let line = new Line3(startEnd[0], startEnd[1]);\n\n let projectPoint = new Vector3();\n line.closestPointToPoint(pos, true, projectPoint);\n let _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(10));\n\n if(dim.userData.position?.bottom){\n if(dim.userData.position?.overhang){\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(180));\n }\n else{\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(120));\n }\n }\n else{\n if(dim.userData.position?.overhang){\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(100));\n }\n }\n\n let p = new Vector3().applyMatrix4(dim.matrixWorld);\n\n lsText.push({\n value: dim.userData.value,\n position: p,\n rotation: textRotation,\n views: dim.userData.views\n });\n\n \n }\n else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_LINE) {\n // this.scene.add(new LineSegments(new Geometry().setFromPoints(points), new LineBasicMaterial({color: new Color('red')})));\n\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_CAP) {\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n else if (dim.userData.type == \"Arrow\") {\n let geo = ((dim as Line).geometry as Geometry).clone();\n geo.applyMatrix4(dim.matrixWorld);\n lsGeometries.push({\n vertices: geo.vertices,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n }\n\n private getGeometryFromBufferGeometry(bufferGeo: BufferGeometry) {\n let points: Vector3[] = [];\n let verties = bufferGeo.getAttribute('position').array;\n for (let i = 0; i < verties.length; i += 3) {\n points.push(new Vector3(verties[i], verties[i + 1], verties[i+2]));\n }\n\n return new Geometry().setFromPoints(points);\n }\n public destroy(): void {\n this.unregisterEvent();\n this.unload();\n }\n\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldFrontOverhang,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sldExistingWallHeight,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sldFlyOverBracketHeight,\n this.APP.sltRoofPitch\n ];\n\n this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n \n //this.APP.sldSpan.addAction(this.eventHandleId);\n //this.APP.sldMultiSpan.addAction(this.eventHandleId);\n //this.APP.sldFrontOverhang.addAction(this.eventHandleId);\n //this.APP.sldExistingWidth1.addAction(this.eventHandleId);\n //this.APP.sldExistingWidth2.addAction(this.eventHandleId);\n //this.APP.sldExistingLength.addAction(this.eventHandleId);\n //this.APP.sldExistingLength2.addAction(this.eventHandleId);\n //this.APP.sltExistingType.addAction(this.eventHandleId);\n //this.APP.sldExistingWallHeight.addAction(this.eventHandleId);\n //this.APP.dialogEditBay.addAction(this.eventHandleId);\n\n //this.APP.sldLeftOverhang.addAction(this.eventHandleId);\n //this.APP.sldRightOverhang.addAction(this.eventHandleId);\n //this.APP.sldBackOverhang.addAction(this.eventHandleId);\n\n //this.APP.sldFlyOverBracketHeight.addAction(this.eventHandleId);\n //this.APP.sltRoofPitch.addAction(this.eventHandleId);\n }\n private unregisterEvent(): void{\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.APP.sldSpan.removeAction(this.eventHandleId);\n //this.APP.sldMultiSpan.removeAction(this.eventHandleId);\n //this.APP.sldFrontOverhang.removeAction(this.eventHandleId);\n //this.APP.sldExistingWidth1.removeAction(this.eventHandleId);\n //this.APP.sldExistingWidth2.removeAction(this.eventHandleId);\n //this.APP.sldExistingLength.removeAction(this.eventHandleId);\n //this.APP.sldExistingLength2.removeAction(this.eventHandleId);\n //this.APP.sltExistingType.removeAction(this.eventHandleId);\n //this.APP.sldExistingWallHeight.removeAction(this.eventHandleId);\n //this.APP.dialogEditBay.removeAction(this.eventHandleId);\n\n //this.APP.sldLeftOverhang.removeAction(this.eventHandleId);\n //this.APP.sldRightOverhang.removeAction(this.eventHandleId);\n //this.APP.sldBackOverhang.removeAction(this.eventHandleId);\n\n //this.APP.sldFlyOverBracketHeight.removeAction(this.eventHandleId);\n //this.APP.sltRoofPitch.removeAction(this.eventHandleId);\n }\n\n\n public uiChanged(preVal: number, curVal: number): void {\n this.draw();\n }\n private calulateBoundingBox(){\n this.APP.scene.remove(...this.APP.scene.children.filter(c => c.userData.type == 'BOX_HELPER_'));\n let patiosBox = this.MANAGER.boundingBox;\n \n let planRightBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosPlanRight);\n planRightBox.min.x = patiosBox.max.x;\n planRightBox.max.x = patiosBox.max.x + 500;\n planRightBox.max.y = 10000;\n \n let planLeftBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosPlanLeft);\n planLeftBox.min.x = patiosBox.min.x - 500;\n planLeftBox.max.x = patiosBox.min.x;\n planLeftBox.max.y = 10000;\n\n let planBottomBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosPlanBottom);\n let planBottomBoxWidth = planBottomBox.max.z - planBottomBox.min.z;\n planBottomBox.min.z = patiosBox.max.z;\n planBottomBox.max.z = patiosBox.max.z + planBottomBoxWidth;\n planBottomBox.max.y = 10000;\n \n let objs = [];\n\n objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && c.userData.position?.width1 || c.userData.position?.width2 || c.userData.position?.length2)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL)\n );\n\n // for(let e of objs){\n // let boxModelHelper = new BoxHelper(e);\n // boxModelHelper.userData = {type: 'BOX_HELPER_'};\n // this.scene.add(boxModelHelper);\n // }\n\n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(planRightBox.intersectsBox(objBox)){\n intersectBox = true;\n planRightBox.translate(new Vector3(100,0,0))\n }\n if(planLeftBox.intersectsBox(objBox)){\n intersectBox = true;\n planLeftBox.translate(new Vector3(-100,0,0))\n }\n if(planBottomBox.intersectsBox(objBox)){\n intersectBox = true;\n planBottomBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(planRightBox);\n // boxHelper.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper);\n\n // let boxHelper2 = new Box3Helper(planLeftBox);\n // boxHelper2.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper2);\n\n // let boxHelper3 = new Box3Helper(planBottomBox);\n // boxHelper3.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper3);\n \n return { left: planLeftBox.min.x, right: planRightBox.max.x, front: planBottomBox.max.z };\n }\n private repositionDimension(dimension, location, extraDistance = 0){\n this.APP.scene.remove(...this.APP.scene.children.filter(c => c.userData.type == location));\n this.APP.scene.remove(...this.APP.scene.children.filter(c => c.userData.type == location));\n\n let patiosBox = this.MANAGER.boundingBox;\n \n if(location == DIMENSION_LOCATION.FRONT_RIGHT){\n let height = this.utils.getHeightByAngle(UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.MANAGER.columnAndBeamManager.geo_superiorBeam.height, this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue, this.APP.sltRoofPitch.currentValue, -1);\n let dimOffsetY = height/2;\n dimension.position.setY(dimOffsetY);\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.max.x;\n dimBox.max.x = patiosBox.max.x + 500;\n dimBox.max.z = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && !c.userData.position.length1 && !c.userData.position.length2)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && !c.userData.position.length1 && !c.userData.position.length2)\n );\n\n if(this.APP.sldExistingWidth2.currentValue > 0){\n objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && !c.userData.position.length1)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && !c.userData.position.length1)\n );\n }\n \n // for(let e of objs){\n // let boxModelHelper = new BoxHelper(e);\n // boxModelHelper.userData = {type: 'BOX_HELPER_'};\n // this.scene.add(boxModelHelper);\n // }\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(100,0,0))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n //let dimOffsetY = this.APP.sldBuildingHeight.currentValue / 2;\n dimension.position.setX(dimBox.max.x + extraDistance);\n }\n else if(location == DIMENSION_LOCATION.PLAN_LEFT){\n // let offsetDimensionZ = this.APP.sldSpan.currentValue\n // + this.APP.sldMultiSpan.currentValue\n // + this.APP.sldFrontOverhang.currentValue\n // - this.APP.sldExistingWidth1.currentValue / 2\n // - this.APP.existingWallManager.geo_existingWallL1.width\n // - this.APP.eaveManager.backOverhang;\n // dimension.position.setZ(offsetDimensionZ);\n\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.min.x - 500;\n dimBox.max.x = patiosBox.min.x;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF || c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(-100,0,0))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setX(dimBox.min.x + extraDistance);\n dimension.translateX(this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + this.APP.eaveManager.backOverhang - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0));\n }\n else if(location == DIMENSION_LOCATION.PLAN_RIGHT){\n let offsetDimensionZ = this.APP.sldSpan.currentValue / 2\n - this.APP.sldExistingWidth1.currentValue / 2\n - this.APP.existingWallManager.geo_existingWallL1.width\n - this.APP.eaveManager.backOverhang;\n dimension.position.setZ(offsetDimensionZ);\n\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.max.x;\n dimBox.max.x = patiosBox.max.x + 500;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL)\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(100,0,0))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setX(dimBox.max.x + extraDistance);\n dimension.translateX(this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + this.APP.eaveManager.backOverhang - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0));\n }\n else if(location == DIMENSION_LOCATION.PLAN_BOTTOM){\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL)\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setZ(dimBox.max.z + extraDistance);\n\n if (this.APP.sltExistingType.currentValue == 1) {\n dimension.position.setX(this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0)/2)\n } else if(this.APP.sltExistingType.currentValue == 2) {\n dimension.position.setX( -(this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0)/2))\n } else {\n dimension.position.setX(0)\n }\n }\n else if(location == DIMENSION_LOCATION.LEFT_RIGHT){\n let dimOffsetY = UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.MANAGER.columnAndBeamManager.geo_superiorBeam.height - (this.utils.tan(this.APP.sltRoofPitch.currentValue) * (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue));\n dimension.position.setY(dimOffsetY / 2);\n\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n dimBox.min.x = -10000;\n dimBox.max.x = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && c.userData.position?.left)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && c.userData.position?.left)\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setZ(dimBox.max.z + extraDistance);\n }\n else if(location == DIMENSION_LOCATION.RIGHT_LEFT){\n let dimOffsetY = this.dimensionPatiosLeftRight.position.y;\n dimension.position.setY(dimOffsetY);\n\n let dimBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosLeftRight);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n \n dimBox.min.x = -10000;\n dimBox.max.x = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && c.userData.position?.right)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && c.userData.position?.right)\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setZ(dimBox.max.z + extraDistance);\n }\n }\n}\n","import { GEOMETRY_CATEGORY } from \"src/app/app.config\";\nimport {\n BUILDING_SIDE,\n CUTOUT_ENABLE,\n EXISTING_BUILDING_CONFIG,\n RAKECUT_TYPE,\n} from \"src/app/app.constants\";\nimport { Box3, Group, Vector3 } from \"three\";\nimport { HomeComponent as AppComponent } from \"../../containers/home/home.component\";\nimport { Printing2DGeometry } from \"../models\";\nimport { PatiosManager } from \"../patios.manager\";\nimport { ColumnAndBeamManager } from \"./column-and-beam.manager\";\nimport { DimensionManager } from \"./dimension.manager\";\nimport { RoofManager } from \"./roof.manager\";\n// import { environment } from 'src/environments/environment';\n\nexport class PatiosFlyOverManager implements PatiosManager {\n public columnAndBeamManager: ColumnAndBeamManager;\n public roofManager: RoofManager;\n private APP: AppComponent;\n public patiosGroup: Group;\n public boundingBox: Box3;\n private updateEventHandle: any;\n public dimensionManager: DimensionManager;\n private controlsToRegisterEvent: Array;\n public ignoreBayEvent: boolean = false;\n private deferHandle;\n private deferTimeout = EXISTING_BUILDING_CONFIG.CUTOUT_DEFFER_TIME_OUT;\n public patiosWidth: number;\n public patiosLength: number;\n public get cutoutCondition(): boolean {\n return (\n [this.APP.sldSpan, this.APP.sldMultiSpan, this.APP.sldFrontOverhang]\n .map((x) => x.currentValue)\n .reduce((a, b) => a + b, 0) -\n this.APP.sldExistingWidth1.currentValue >=\n EXISTING_BUILDING_CONFIG.CUTOUT_ALLOW\n );\n }\n public get rakecutCondition(): boolean {\n this.patiosWidth =\n this.APP.dialogEditBay.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n this.patiosLength =\n this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue;\n\n return false;\n }\n\n public firstLoad = true;\n\n constructor(app: AppComponent) {\n this.APP = app;\n\n this.patiosGroup = new Group();\n this.patiosGroup.userData = {\n isGroup: true,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n app.scene.add(this.patiosGroup);\n\n this.roofManager = new RoofManager(app, this);\n this.columnAndBeamManager = new ColumnAndBeamManager(app, this);\n this.dimensionManager = new DimensionManager(app, this);\n\n this.registerEvents();\n }\n\n load(): Promise {\n return Promise.all([\n this.roofManager.optimize(),\n this.columnAndBeamManager.optimize(),\n this.dimensionManager.optimize(),\n ]).then(() => {\n this.roofManager.load();\n this.columnAndBeamManager.load();\n this.dimensionManager.load();\n });\n }\n loadBracket(bracketQuantity: number): void {\n this.columnAndBeamManager.numberOfBracketsBack = bracketQuantity;\n this.columnAndBeamManager.addPostOrBracketBack();\n }\n loadBracketCutout(bracketQuantity: number): void {\n this.columnAndBeamManager.numberOfBracketCutout = bracketQuantity;\n this.columnAndBeamManager.addPostOrBracketBackCutout();\n }\n loadSideGableBracket(bracketQuantity: number): void {}\n getOutlines(): Printing2DGeometry {\n let dimensionOutline = this.dimensionManager.getOutlines();\n return {\n lines: [\n ...this.columnAndBeamManager.getSection().lines,\n ...this.roofManager.getOutLines().lines,\n ...dimensionOutline.lines,\n ],\n texts: dimensionOutline.texts,\n };\n }\n public destroy(): void {\n this.columnAndBeamManager.destroy();\n this.roofManager.destroy();\n this.dimensionManager.destroy();\n this.unRegisterEvent();\n }\n registerEvents() {\n this.updateEventHandle = this.updateDefer.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sltCutOut,\n this.APP.sldFrontOverhang,\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltHouseBeamSize,\n this.APP.sltColourBarge,\n this.APP.sltColourGutter,\n this.APP.sltColourDownpipe,\n this.APP.sltColourRoof,\n this.APP.sldSpan,\n this.APP.sldExistingWallHeight,\n this.APP.sldEaveWidth,\n this.APP.sldFasciaDepth,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldFlyOverBracketHeight,\n this.APP.sltColourBeam,\n this.APP.sltColourPost,\n this.APP.sltColourBracket,\n this.APP.sltColourFasciaBracket,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n this.APP.sltLeftCutType,\n this.APP.sldLeftCutVertical,\n this.APP.sldLeftCutHorizontal,\n this.APP.sltRightCutType,\n this.APP.sldRightCutVertical,\n this.APP.sldRightCutHorizontal,\n this.APP.sltPanelDirection,\n this.APP.sltPanelDirectionShow,\n this.APP.sltBeamLayoutShow,\n this.APP.sltExistingRoofPitch,\n this.APP.btnTurnOnPanel,\n ];\n this.controlsToRegisterEvent.forEach((c) => {\n c.addAction(this.updateEventHandle);\n });\n }\n unRegisterEvent() {\n this.controlsToRegisterEvent.forEach((c) =>\n c.removeAction(this.updateEventHandle)\n );\n }\n\n updateDefer(previousValue: number, currentValue: number) {\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES ||\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE ||\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE\n ) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => {\n this.update(previousValue, currentValue);\n }, this.deferTimeout);\n } else {\n this.update(previousValue, currentValue);\n }\n }\n\n update(preVal: number, curVal: number) {\n let totalBaySize = this.APP.dialogEditBay.totalBaySize;\n this.patiosWidth =\n totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n this.patiosLength =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue;\n\n let diff = this.APP.sldExistingLength.currentValue - totalBaySize;\n\n let extraWallWidth =\n this.APP.existingWallManager.geo_existingWallW1.width +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n this.patiosGroup.position.setX(\n -diff / 2 -\n this.APP.sldExistingLength2.currentValue -\n extraWallWidth\n );\n } else {\n this.patiosGroup.position.setX(\n -diff / 2 - this.APP.sldExistingLength2.currentValue\n );\n }\n } else {\n this.patiosGroup.position.setX(-diff / 2 - extraWallWidth);\n }\n } else if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n this.patiosGroup.position.setX(\n diff / 2 + this.APP.sldExistingLength2.currentValue + extraWallWidth\n );\n } else {\n this.patiosGroup.position.setX(\n diff / 2 + this.APP.sldExistingLength2.currentValue\n );\n }\n } else {\n this.patiosGroup.position.setX(diff / 2 + extraWallWidth);\n }\n } else {\n this.patiosGroup.position.setX(0);\n }\n\n this.patiosGroup.position.setZ(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n this.APP.eaveManager.backOverhang -\n (this.columnAndBeamManager.geo_bracket?.width || 0)\n );\n\n Promise.all([\n this.roofManager.load(),\n this.columnAndBeamManager.load(),\n ]).then(() => {\n this.boundingBox = this.getPatiosBox();\n this.dimensionManager.draw();\n });\n }\n public getPatiosBox(): Box3 {\n let left =\n -this.APP.dialogEditBay.totalBaySize / 2 -\n this.APP.sldLeftOverhang.currentValue;\n let right =\n this.APP.dialogEditBay.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue;\n let front =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue;\n let back = 0;\n let height = this.APP.sldBuildingHeight.currentValue;\n let extraOffsetZ =\n this.APP.existingWallManager.geo_existingWallL1.width +\n this.APP.eaveManager.backOverhang;\n\n let box = new Box3();\n box = box.expandByPoint(new Vector3(left, 0, front));\n box = box.expandByPoint(new Vector3(right, height, back));\n box.translate(new Vector3(0, 0, -extraOffsetZ));\n\n if (this.APP.sltExistingType.currentValue == 1) {\n let diff =\n (this.APP.sldExistingLength.currentValue -\n this.APP.dialogEditBay.totalBaySize) /\n 2;\n box.translate(new Vector3(-diff, 0, 0));\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n box.translate(new Vector3(this.APP.sldLeftOverhang.currentValue, 0, 0));\n\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n box.translate(\n new Vector3(-this.APP.sldExistingLength2.currentValue, 0, 0)\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 2) {\n let diff =\n (this.APP.sldExistingLength.currentValue -\n this.APP.dialogEditBay.totalBaySize) /\n 2;\n box.translate(new Vector3(diff, 0, 0));\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n box.translate(new Vector3(-this.APP.sldRightOverhang.currentValue, 0, 0));\n\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n box.translate(\n new Vector3(this.APP.sldExistingLength2.currentValue, 0, 0)\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 3) {\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n }\n\n // if (!environment.production) {\n // this.APP.scene.remove(...this.APP.scene.children.filter(o => o.userData.type == 'BOXHELPER'));\n // let boxHelper = new Box3Helper(box);\n // boxHelper.userData = { type: \"BOXHELPER\" };\n // this.APP.scene.add(boxHelper);\n // }\n\n return box;\n }\n}\n","import {\n BoxBufferGeometry,\n BufferGeometry,\n Color,\n Geometry,\n Group,\n LineSegments,\n Material,\n Matrix4,\n Mesh,\n MeshLambertMaterial,\n Object3D,\n Plane,\n Vector3,\n} from \"three\";\nimport { GEOMETRY_CATEGORY, GEOMETRY_TYPE } from \"../../app.config\";\nimport { Util } from \"../utils\";\n// import { AppComponent } from \"../../app.component\";\nimport {\n BUILDING_SIDE,\n EXISTING_BUILDING_CONFIG as CONST,\n CUTOUT_ENABLE,\n EXISTING_BUILDING_CONFIG,\n FIT_FLYOVER_BRAKET_ON_ROOF,\n PANEL_DIRECTION,\n RAKECUT_TYPE,\n} from \"src/app/app.constants\";\nimport HighLightBox from \"src/app/models/HighlightBox\";\nimport { CSG } from \"three-csg-ts\";\nimport { PatiosFlyOverManager } from \".\";\nimport { HomeComponent as AppComponent } from \"../../containers/home/home.component\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport {\n GeometryInfo,\n LineType,\n Print2DView,\n Printing2DGeometry,\n Printing2DLine,\n ViewType,\n} from \"../models\";\nimport { UI } from \"../ui\";\n\nexport class RoofManager {\n private scene: Group;\n private APP: AppComponent;\n private MANAGER: PatiosFlyOverManager;\n private material: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private geo_RoofPanel: GeometryInfo;\n private geo_roofPanelBase: GeometryInfo;\n private gutterRakecutLeftInfo: GeometryInfo;\n private gutterRakecutRightInfo: GeometryInfo;\n private geo_roofPanelBargeCappingLeft: GeometryInfo;\n private geo_roofPanelBargeCappingRight: GeometryInfo;\n private geo_roofPanelBargeCappingBack: GeometryInfo;\n private geo_bargeCutoutLeftHor: GeometryInfo;\n private geo_bargeCutoutRightHor: GeometryInfo;\n private geo_gutterBack: GeometryInfo;\n private zFlashingGeo: GeometryInfo;\n private zFlashingRakecutRightGeo: GeometryInfo;\n private geo_gutterCap: GeometryInfo;\n\n private geo_rakecutLeft: BoxBufferGeometry;\n private geo_rakecutRight: BoxBufferGeometry;\n private mesh_rakecutLeft: Mesh;\n private mesh_rakecutRight: Mesh;\n private csg_rakecutLeft: CSG;\n private csg_rakecutRight: CSG;\n\n private roofGroup: Group;\n\n private objectSizeChangedHandle: any;\n\n private totalBaySize: number;\n private extraOffsetZ: number;\n\n private controlsToRegisterEvent2: Array;\n\n private mesh_CutoutLeft: Mesh;\n private csg_cutoutLeft: CSG;\n private mesh_CutoutRight: Mesh;\n private csg_cutoutRight: CSG;\n private geo_cutoutLeft: BoxBufferGeometry;\n private geo_cutoutRight: BoxBufferGeometry;\n\n private geoCutGutter: BoxBufferGeometry;\n private meshCutGutterLeft1: Mesh;\n private csgCutGutterLeft1: CSG;\n private meshCutGutterLeft2: Mesh;\n private csgCutGutterLeft2: CSG;\n\n private meshCutGutterRight1: Mesh;\n private csgCutGutterRight1: CSG;\n private meshCutGutterRight2: Mesh;\n private csgCutGutterRight2: CSG;\n\n private roofWidth: number;\n private roofLength: number;\n\n private deferHandle;\n private deferTimeout = EXISTING_BUILDING_CONFIG.CUTOUT_DEFFER_TIME_OUT;\n\n constructor(app: AppComponent, flyOverManager: PatiosFlyOverManager) {\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.APP = app;\n this.MANAGER = flyOverManager;\n this.scene = new Group();\n flyOverManager.patiosGroup.add(this.scene)\n this.material = MaterialManager.Instance().ROOF;\n\n this.registerEvent();\n }\n\n public optimize(): Promise {\n return new Promise((resolve) => {\n this.geo_RoofPanel = this.geometryManager.getRoofSheetPanel();\n this.geo_RoofPanel.geometry.translate(\n this.geo_RoofPanel.width / 2 + 2,\n this.geo_RoofPanel.height / 2 - 1,\n this.geo_RoofPanel.length / 2\n );\n\n this.geo_roofPanelBase = this.geometryManager.getRoofBase();\n this.geo_roofPanelBase.geometry.translate(\n this.geo_roofPanelBase.width / 2,\n this.geo_roofPanelBase.height / 2,\n this.geo_roofPanelBase.length / 2\n );\n\n this.zFlashingGeo = this.geometryManager.getZFlashing();\n this.zFlashingGeo.geometry.translate(0, -3, 0);\n\n this.zFlashingRakecutRightGeo = this.geometryManager.getZFlashing();\n this.zFlashingRakecutRightGeo.geometry.translate(\n -this.zFlashingRakecutRightGeo.length,\n -3,\n 0\n );\n\n //Barge capping\n\n this.geo_roofPanelBargeCappingLeft = this.geometryManager.getBarge();\n this.geo_roofPanelBargeCappingLeft.geometry\n .rotateY(Math.PI)\n .translate(\n this.geo_roofPanelBargeCappingLeft.width / 2 - 3,\n this.geo_roofPanelBargeCappingLeft.height / 2 -\n (this.APP.sltDripBarge.currentValue ? 9 : 1),\n this.geo_roofPanelBargeCappingLeft.length / 2\n );\n\n this.geo_roofPanelBargeCappingRight = this.geometryManager.getBarge();\n this.geo_roofPanelBargeCappingRight.geometry.translate(\n -this.geo_roofPanelBargeCappingRight.width / 2 + 3,\n this.geo_roofPanelBargeCappingRight.height / 2 -\n (this.APP.sltDripBarge.currentValue ? 9 : 1),\n this.geo_roofPanelBargeCappingRight.length / 2\n );\n\n this.geo_roofPanelBargeCappingBack = this.geometryManager.getBarge();\n this.geo_roofPanelBargeCappingBack.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_roofPanelBargeCappingBack.length / 2,\n this.geo_roofPanelBargeCappingBack.height / 2 -\n (this.APP.sltDripBarge.currentValue ? 9 : 1),\n this.geo_roofPanelBargeCappingBack.width / 2 - 3\n );\n\n //Gutter\n this.geo_gutterBack = this.geometryManager.getGutter();\n this.geo_gutterBack.geometry\n .rotateY(-Math.PI / 2)\n .translate(\n this.geo_gutterBack.length / 2,\n -20,\n this.geo_gutterBack.width / 2\n );\n\n this.gutterRakecutLeftInfo = this.geometryManager.getGutter();\n this.gutterRakecutLeftInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(\n this.gutterRakecutLeftInfo.length / 2,\n -20,\n this.gutterRakecutLeftInfo.width / 2\n );\n\n this.gutterRakecutRightInfo = this.geometryManager.getGutter();\n this.gutterRakecutRightInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(\n -this.gutterRakecutRightInfo.length / 2,\n -20,\n this.gutterRakecutRightInfo.width / 2\n );\n\n //Gutter cap\n this.geo_gutterCap = this.geometryManager.getGuterEndCap();\n this.geo_gutterCap.geometry\n .rotateY(-Math.PI / 2)\n .translate(0, -20, this.geo_gutterCap.length / 2);\n\n this.geo_cutoutLeft = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_cutoutLeft.translate(-500, 500, -500);\n this.geo_cutoutRight = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_cutoutRight.translate(500, 500, -500);\n\n this.geo_rakecutLeft = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_rakecutLeft.translate(-500, 500, 500);\n this.geo_rakecutRight = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_rakecutRight.translate(500, 500, 500);\n\n this.geoCutGutter = new BoxBufferGeometry(500, 10000, 500);\n this.geoCutGutter.translate(0, 0, -250);\n //Barge cutout left\n this.geo_bargeCutoutLeftHor = this.geometryManager.getBarge();\n this.geo_bargeCutoutLeftHor.geometry\n .rotateY(Math.PI / 2)\n .translate(\n -this.geo_bargeCutoutLeftHor.length / 2,\n this.geo_bargeCutoutLeftHor.height / 2 -\n (this.APP.sltDripBarge.currentValue ? 9 : 1),\n this.geo_bargeCutoutLeftHor.width / 2\n );\n\n //Barge cutout right\n this.geo_bargeCutoutRightHor = this.geometryManager.getBarge();\n this.geo_bargeCutoutRightHor.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_bargeCutoutRightHor.length / 2,\n this.geo_bargeCutoutRightHor.height / 2 -\n (this.APP.sltDripBarge.currentValue ? 9 : 1),\n this.geo_bargeCutoutRightHor.width / 2\n );\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve) => {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.ROOF_PATIOS\n )\n );\n this.APP.scene.remove(\n ...this.APP.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SHEET_OUTLINE\n )\n );\n\n //test\n //this.scene.remove(...this.scene.children.filter(x => x.userData.type == 'HELPER'));\n this.APP.scene.remove(\n ...this.APP.scene.children.filter((x) => x.userData.type == \"RAKECUT\")\n );\n this.APP.scene.remove(\n ...this.APP.scene.children.filter((x) => x.userData.type == \"CUTGUTTER\")\n );\n this.extraOffsetZ =\n this.APP.existingWallManager.geo_existingWallL1.width +\n this.APP.eaveManager.backOverhang;\n this.totalBaySize = this.APP.dialogEditBay.totalBaySize;\n\n this.addRoof();\n this.addCutout();\n if (UI.rakeCutLeftType == 0) {\n new HighLightBox(this.roofGroup, {\n min: {\n x: -(UI.totalBayLength / 2 + UI.overhangLeft),\n y: 0,\n z: UI.span + UI.multiSpan + UI.overhangBack + UI.overhangFront,\n },\n max: {\n x: -(UI.totalBayLength / 2 + UI.overhangLeft) + 300,\n y: 0,\n z:\n UI.span + UI.multiSpan + UI.overhangBack + UI.overhangFront - 300,\n },\n userData: { side: BUILDING_SIDE.LEFT },\n });\n }\n if (UI.rakeCutRightType == 0) {\n new HighLightBox(this.roofGroup, {\n min: {\n x: UI.totalBayLength / 2 + UI.overhangRight - 300,\n y: 0,\n z: UI.span + UI.multiSpan + UI.overhangBack + UI.overhangFront,\n },\n max: {\n x: UI.totalBayLength / 2 + UI.overhangRight,\n y: 0,\n z:\n UI.span + UI.multiSpan + UI.overhangBack + UI.overhangFront - 300,\n },\n userData: { side: BUILDING_SIDE.RIGHT },\n });\n }\n\n // this.addAngleRakeCut();\n //Add angle rakecut\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n this.addAngleRakeCut(BUILDING_SIDE.LEFT);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n this.addAngleRakeCut(BUILDING_SIDE.RIGHT);\n }\n this.addStepRakeCut();\n\n let offsetLeft =\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue -\n this.MANAGER.patiosGroup.position.x;\n let offsetRight =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue +\n this.MANAGER.patiosGroup.position.x;\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetRight -= offsetX;\n offsetLeft += offsetX;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetLeft += offsetX;\n offsetRight += offsetX;\n }\n\n let clipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let clipingPlaneRight = new Plane(new Vector3(-1, 0, 0), offsetRight);\n\n this.material.clippingPlanes = [clipingPlaneLeft, clipingPlaneRight];\n MaterialManager.Instance().ROOF_BASE.clippingPlanes = [\n clipingPlaneLeft,\n clipingPlaneRight,\n ];\n let width =\n this.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n this.roofWidth = width;\n this.roofLength =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldBackOverhang.currentValue +\n this.APP.sldFrontOverhang.currentValue;\n let roofSheetingCount = Math.ceil(width / this.geo_RoofPanel.width);\n let offsetX = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n\n let panelDirectionOfset = 1;\n if (\n this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT\n ) {\n offsetX =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue -\n this.geo_RoofPanel.width;\n panelDirectionOfset = -1;\n } else if (\n this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.LEFT_TO_RIGHT\n ) {\n offsetX = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n }\n\n if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.APP.sltExistingType.currentValue == 1 &&\n this.MANAGER.cutoutCondition\n ) {\n for (let index = 0; index < roofSheetingCount; index++) {\n let last = index == roofSheetingCount - 1;\n\n this.addRoofSheeting(offsetX, [this.csg_cutoutLeft]);\n this.addRoofSheetingBase(offsetX, last, [this.csg_cutoutLeft]);\n\n offsetX += this.geo_RoofPanel.width * panelDirectionOfset;\n }\n } else if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.APP.sltExistingType.currentValue == 2 &&\n this.MANAGER.cutoutCondition\n ) {\n for (let index = 0; index < roofSheetingCount; index++) {\n let last = index == roofSheetingCount - 1;\n\n this.addRoofSheeting(offsetX, [this.csg_cutoutRight]);\n this.addRoofSheetingBase(offsetX, last, [this.csg_cutoutRight]);\n\n offsetX += this.geo_RoofPanel.width * panelDirectionOfset;\n }\n } else if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.APP.sltExistingType.currentValue == 3 &&\n this.MANAGER.cutoutCondition\n ) {\n for (let index = 0; index < roofSheetingCount; index++) {\n let last = index == roofSheetingCount - 1;\n\n this.addRoofSheeting(offsetX, [\n this.csg_cutoutLeft,\n this.csg_cutoutRight,\n ]);\n this.addRoofSheetingBase(offsetX, last, [\n this.csg_cutoutLeft,\n this.csg_cutoutRight,\n ]);\n\n offsetX += this.geo_RoofPanel.width * panelDirectionOfset;\n }\n } else {\n for (let index = 0; index < roofSheetingCount; index++) {\n let last = index == roofSheetingCount - 1;\n\n this.addRoofSheeting(offsetX, null);\n this.addRoofSheetingBase(offsetX, last, []);\n\n offsetX += this.geo_RoofPanel.width * panelDirectionOfset;\n }\n }\n this.addZFlashing();\n this.addZFlashingAngleRakeCut();\n this.addZFlashingStepRakeCut();\n this.addBargeCapping();\n this.addBargeStepRakecut();\n this.addGutter();\n this.addGutterStepRakecut();\n this.addGutterAngleRakecut();\n this.showPanelOutline();\n //this.getOutLines();\n\n this.scene.visible = UI.showRoof\n\n resolve();\n });\n }\n private addCutout() {\n if (this.APP.sltCutOut.currentValue == 1) {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter((x) => x.userData.type == \"CUTOUT\")\n );\n\n let offsetX =\n this.APP.sldExistingLength.currentValue / 2 +\n this.APP.existingWallManager.geo_existingWallL2.width +\n 100;\n let offsetY = 0;\n let offsetZ =\n this.APP.sldExistingWidth1.currentValue / 2 -\n this.APP.existingWallManager.geo_existingWallL2.width -\n this.APP.sldBackOverhang.currentValue;\n\n let scaleX = (this.APP.sldExistingLength2.currentValue + 5000) / 1000;\n if (scaleX == 0) scaleX = 1;\n let scaleY = (this.APP.sldExistingWallHeight.currentValue + 5000) / 1000;\n let scaleZ =\n (this.APP.sldExistingWidth1.currentValue +\n this.APP.sldBackOverhang.currentValue +\n 5000) /\n 1000;\n if (scaleZ == 0) scaleZ = 1;\n\n if (\n this.APP.sltExistingType.currentValue == 1 ||\n this.APP.sltExistingType.currentValue == 3\n ) {\n this.mesh_CutoutLeft = new Mesh(\n this.geo_cutoutLeft,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.mesh_CutoutLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"CUTOUT\",\n };\n\n this.mesh_CutoutLeft.position.set(-offsetX, offsetY, offsetZ);\n this.mesh_CutoutLeft.scale.set(scaleX, scaleY, scaleZ);\n\n // this.APP.scene.add(this.mesh_CutoutLeft);\n\n this.mesh_CutoutLeft.updateMatrix();\n this.csg_cutoutLeft = CSG.fromMesh(this.mesh_CutoutLeft);\n }\n if (\n this.APP.sltExistingType.currentValue == 2 ||\n this.APP.sltExistingType.currentValue == 3\n ) {\n this.mesh_CutoutRight = new Mesh(\n this.geo_cutoutRight,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.mesh_CutoutRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"CUTOUT\",\n };\n\n this.mesh_CutoutRight.position.set(offsetX, offsetY, offsetZ);\n this.mesh_CutoutRight.scale.set(scaleX, scaleY, scaleZ);\n\n // this.APP.scene.add(this.mesh_CutoutRight);\n\n this.mesh_CutoutRight.updateMatrix();\n this.csg_cutoutRight = CSG.fromMesh(this.mesh_CutoutRight);\n }\n }\n }\n private addAngleRakeCut(cutSide: BUILDING_SIDE) {\n let offsetXL =\n -this.totalBaySize / 2 - this.APP.sldLeftOverhang.currentValue;\n let offsetXR =\n this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n let offsetY = -100;\n\n let offsetZ =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue -\n // + this.APP.sldBackOverhang.currentValue\n this.extraOffsetZ -\n this.APP.sldExistingWidth1.currentValue / 2;\n //\n let angle;\n let _rotY;\n if (cutSide == BUILDING_SIDE.LEFT) {\n angle = Math.atan(\n this.APP.sldLeftCutHorizontal.currentValue /\n this.APP.sldLeftCutVertical.currentValue\n );\n _rotY = Math.atan(\n this.APP.sldLeftCutVertical.currentValue /\n this.APP.sldLeftCutHorizontal.currentValue\n );\n }\n if (cutSide == BUILDING_SIDE.RIGHT) {\n angle = Math.atan(\n this.APP.sldRightCutHorizontal.currentValue /\n this.APP.sldRightCutVertical.currentValue\n );\n _rotY = Math.atan(\n this.APP.sldRightCutVertical.currentValue /\n this.APP.sldRightCutHorizontal.currentValue\n );\n }\n const _offsetZ =\n (this.APP.sldFrontOverhang.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue +\n this.APP.sldBackOverhang.currentValue -\n CONST.GUTTER_ROOF_OFFSET_Z) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n let _angle = (Math.PI - _rotY) / 2;\n\n let hypotenuse = Math.sqrt(\n Math.pow(this.MANAGER.patiosLength, 2) +\n Math.pow(this.MANAGER.patiosWidth, 2)\n );\n let scaleLength = hypotenuse / 1000;\n let scaleWidth =\n (this.MANAGER.patiosLength * this.MANAGER.patiosWidth) /\n hypotenuse /\n 1000;\n //\n if (cutSide === BUILDING_SIDE.LEFT) {\n this.mesh_rakecutLeft = new Mesh(\n this.geo_rakecutLeft,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.mesh_rakecutLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"RAKECUT\",\n };\n\n this.mesh_rakecutLeft.position.set(\n offsetXL + this.MANAGER.patiosGroup.position.x,\n offsetY,\n offsetZ - this.APP.sldLeftCutVertical.currentValue\n );\n this.mesh_rakecutLeft.scale.set(scaleWidth, 5, scaleLength);\n this.mesh_rakecutLeft.rotateY(angle);\n this.mesh_rakecutLeft.updateMatrix();\n this.csg_rakecutLeft = CSG.fromMesh(this.mesh_rakecutLeft);\n // this.APP.scene.add(this.mesh_rakecutLeft);\n\n //cut gutter csg\n let scaleZ = (this.APP.dialogEditBay.totalBaySize + 200) / 500;\n let scaleX = (this.APP.dialogEditBay.totalBaySize + 200) / 500;\n this.meshCutGutterLeft1 = new Mesh(\n this.geoCutGutter,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.meshCutGutterLeft1.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"CUTGUTTER\",\n };\n this.meshCutGutterLeft1.position.set(\n offsetXL + this.APP.sldLeftCutHorizontal.currentValue,\n 0,\n _offsetZ\n );\n this.meshCutGutterLeft1.scale.set(scaleX, 1, scaleZ);\n this.meshCutGutterLeft1.rotation.set(0, _angle, 0);\n this.meshCutGutterLeft1.updateMatrix();\n this.csgCutGutterLeft1 = CSG.fromMesh(this.meshCutGutterLeft1);\n // this.APP.scene.add(this.meshCutGutterLeft1);\n\n this.meshCutGutterLeft2 = new Mesh(\n this.geoCutGutter,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.meshCutGutterLeft2.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"CUTGUTTER\",\n };\n this.meshCutGutterLeft2.position.set(\n offsetXL + this.APP.sldLeftCutHorizontal.currentValue,\n 0,\n _offsetZ\n );\n this.meshCutGutterLeft2.scale.set(scaleX, 1, scaleZ);\n this.meshCutGutterLeft2.rotation.set(0, _angle + Math.PI, 0);\n this.meshCutGutterLeft2.updateMatrix();\n this.csgCutGutterLeft2 = CSG.fromMesh(this.meshCutGutterLeft2);\n // this.APP.scene.add(this.meshCutGutterLeft2);\n }\n if (cutSide === BUILDING_SIDE.RIGHT) {\n this.mesh_rakecutRight = new Mesh(\n this.geo_rakecutRight,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.mesh_rakecutRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"RAKECUT\",\n };\n\n this.mesh_rakecutRight.position.set(\n offsetXR + this.MANAGER.patiosGroup.position.x,\n offsetY,\n offsetZ - this.APP.sldRightCutVertical.currentValue\n );\n this.mesh_rakecutRight.scale.set(scaleWidth, 5, scaleLength);\n this.mesh_rakecutRight.rotateY(-angle);\n this.mesh_rakecutRight.updateMatrix();\n this.csg_rakecutRight = CSG.fromMesh(this.mesh_rakecutRight);\n // this.APP.scene.add(this.mesh_rakecutRight);\n\n //cut gutter\n let scaleZ = (this.APP.dialogEditBay.totalBaySize + 200) / 500;\n let scaleX = (this.APP.dialogEditBay.totalBaySize + 200) / 500;\n this.meshCutGutterRight1 = new Mesh(\n this.geoCutGutter,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.meshCutGutterRight1.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"CUTGUTTER\",\n };\n this.meshCutGutterRight1.position.set(\n offsetXR - this.APP.sldRightCutHorizontal.currentValue,\n 0,\n _offsetZ\n );\n this.meshCutGutterRight1.rotation.set(0, -_angle, 0);\n this.meshCutGutterRight1.scale.set(scaleX, 1, scaleZ);\n this.meshCutGutterRight1.updateMatrix();\n this.csgCutGutterRight1 = CSG.fromMesh(this.meshCutGutterRight1);\n\n this.meshCutGutterRight2 = new Mesh(\n this.geoCutGutter,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.meshCutGutterRight2.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"CUTGUTTER\",\n };\n this.meshCutGutterRight2.position.set(\n offsetXR - this.APP.sldRightCutHorizontal.currentValue,\n 0,\n _offsetZ\n );\n this.meshCutGutterRight2.scale.set(scaleX, 1, scaleZ);\n this.meshCutGutterRight2.rotation.set(0, -(_angle + Math.PI), 0);\n this.meshCutGutterRight2.updateMatrix();\n this.csgCutGutterRight2 = CSG.fromMesh(this.meshCutGutterRight2);\n }\n }\n private addStepRakeCut() {\n let offsetXL =\n -this.totalBaySize / 2 -\n this.APP.sldLeftOverhang.currentValue +\n this.MANAGER.patiosGroup.position.x;\n let offsetXR =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue +\n this.MANAGER.patiosGroup.position.x;\n let offsetY = -100; //this.APP.sldExistingWallHeight.currentValue;\n\n let offsetZ =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue -\n this.extraOffsetZ -\n this.APP.sldExistingWidth1.currentValue / 2;\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n this.mesh_rakecutLeft = new Mesh(\n this.geo_rakecutLeft,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.mesh_rakecutLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"RAKECUT\",\n };\n\n this.mesh_rakecutLeft.position.set(\n offsetXL + this.APP.sldLeftCutHorizontal.currentValue,\n offsetY,\n offsetZ - this.APP.sldLeftCutVertical.currentValue\n );\n this.mesh_rakecutLeft.scale.set(10, 10, 10);\n\n //this.APP.scene.add(this.mesh_rakecutLeft);\n\n this.mesh_rakecutLeft.updateMatrix();\n this.csg_rakecutLeft = CSG.fromMesh(this.mesh_rakecutLeft);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n this.mesh_rakecutRight = new Mesh(\n this.geo_rakecutRight,\n new MeshLambertMaterial({\n color: \"red\",\n transparent: true,\n opacity: 0.5,\n })\n );\n this.mesh_rakecutRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: \"RAKECUT\",\n };\n\n this.mesh_rakecutRight.position.set(\n offsetXR - this.APP.sldRightCutHorizontal.currentValue,\n offsetY,\n offsetZ - this.APP.sldRightCutVertical.currentValue\n );\n this.mesh_rakecutRight.scale.set(10, 10, 10);\n\n //this.APP.scene.add(this.mesh_rakecutRight);\n\n this.mesh_rakecutRight.updateMatrix();\n this.csg_rakecutRight = CSG.fromMesh(this.mesh_rakecutRight);\n }\n }\n public getOutLines(): Printing2DGeometry {\n let objs = this.roofGroup.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n );\n\n let gutterGroupObjs = this.roofGroup.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS\n );\n let gutterObjs: Object3D[] = [];\n for (let group of gutterGroupObjs) {\n gutterObjs.push(...group.children);\n }\n objs = [...objs, ...gutterObjs];\n\n let lsGeometries: Printing2DLine[] = [];\n\n let offsetLeft =\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue -\n this.MANAGER.patiosGroup.position.x;\n let offsetRight =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue +\n this.MANAGER.patiosGroup.position.x;\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetRight -= offsetX;\n offsetLeft += offsetX;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetLeft += offsetX;\n offsetRight += offsetX;\n }\n let roofClipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let roofClipingPlaneRight = new Plane(new Vector3(-1, 0, 0), offsetRight);\n\n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n o as Mesh,\n 60\n );\n\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n outlineGeo.translate(0, 5000, 0);\n\n if (\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ) {\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneRight);\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n }\n // if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL) {\n // var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"SHEETING_OUTLINE\"};\n // this.APP.scene.add(line);\n // // let boxPost = new Box3().setFromObject(o);\n // // console.log('😋: RoofManager -> getOutLines -> boxPost', boxPost.min.distanceTo(boxPost.max));\n // }\n\n let simplifiedGeo = this.simplifyGeo(outlineGeo);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: simplifiedGeo.vertices,\n views: o.userData.views,\n });\n }\n\n lsGeometries.push({\n objectType: GEOMETRY_TYPE.ROOF_COVER,\n vertices: this.makeRoofPolygon(),\n color: this.utils.convertHexColorToRgb(`#${new Color(UI.panelColor).getHexString()}`),\n views: [\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ]\n });\n\n return { lines: lsGeometries, texts: [] };\n }\n makeRoofPolygon() {\n const polygon = this.utils.getRoofCoverPolygonForLRRoof()\n this.roofGroup.updateWorldMatrix(true, true)\n return polygon.map(el => (el as Vector3).applyMatrix4(this.roofGroup.matrixWorld))\n }\n public showPanelOutline() {\n if (this.APP.sltPanelDirectionShow.currentValue == false) return;\n\n let objs = this.roofGroup.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n );\n\n let offsetLeft =\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue -\n this.MANAGER.patiosGroup.position.x;\n let offsetRight =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue +\n this.MANAGER.patiosGroup.position.x;\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetRight -= offsetX;\n offsetLeft += offsetX;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetLeft += offsetX;\n offsetRight += offsetX;\n }\n let roofClipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let roofClipingPlaneRight = new Plane(new Vector3(-1, 0, 0), offsetRight);\n\n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n o as Mesh,\n 60\n );\n\n //let outlineBox = new Box3().setFromBufferAttribute(outlineGeo.getAttribute('position') as Buffer);\n\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n //outlineGeo.translate(0, 1000, 0);\n\n if (\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ) {\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneRight);\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n }\n\n var line = new LineSegments(\n outlineGeo,\n MaterialManager.Instance().MESH_OUTLINE\n );\n line.userData = { type: GEOMETRY_TYPE.SHEET_OUTLINE };\n this.APP.scene.add(line);\n }\n }\n public simplifyGeo(geo: BufferGeometry): Geometry {\n let simplifiedGeo = new Geometry();\n let vertices = geo.getAttribute(\"position\").array;\n for (let i = 0; i < vertices.length; i += 3) {\n simplifiedGeo.vertices.push(\n new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2])\n );\n }\n return simplifiedGeo;\n }\n\n public addRoof() {\n this.roofGroup = null;\n this.roofGroup = new Group();\n this.roofGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.ROOF_PATIOS,\n };\n\n let offsetY = this.getRoofOffsetY();\n let offsetZ = -(\n this.APP.sldExistingWidth1.currentValue / 2 +\n this.APP.sldBackOverhang.currentValue +\n this.extraOffsetZ\n );\n\n this.roofGroup.position.setY(offsetY);\n this.roofGroup.position.setZ(offsetZ);\n this.roofGroup.rotateX(\n this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue)\n );\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n this.roofGroup.position.setX(-offsetX);\n }\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n this.roofGroup.position.setX(offsetX);\n }\n\n this.scene.add(this.roofGroup);\n }\n public addRoofSheeting(offsetX: number, csgObjs: CSG[]) {\n let mesh = new Mesh(this.geo_RoofPanel.geometry, this.material);\n\n let offsetSheet = 0;\n if (\n this.APP.sltRoofSheetingType.currentValue == 0 ||\n this.APP.sltRoofSheetingType.currentValue == 1\n ) {\n offsetSheet = 30;\n } else {\n offsetSheet = 12;\n }\n\n let scaleZ =\n (this.APP.sldSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldBackOverhang.currentValue +\n this.APP.sldMultiSpan.currentValue) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue) /\n this.geo_RoofPanel.length;\n\n let offsetY = this.geo_roofPanelBase.height - offsetSheet;\n let offsetZ = 0;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setZ(scaleZ);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.ROOF_PANEL,\n views: views,\n };\n\n let cutoutCondition =\n this.APP.sltCutOut.currentValue == 1 &&\n this.APP.sltExistingType.currentValue != 0 &&\n this.APP.sldExistingLength2.currentValue > 0;\n let rakeCutCondition =\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE ||\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE;\n if (cutoutCondition || rakeCutCondition) {\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n mesh.position.set(\n offsetX + this.MANAGER.patiosGroup.position.x,\n offsetY,\n offsetZ + this.roofGroup.position.z\n );\n mesh.updateMatrix();\n let meshResult = mesh.clone();\n\n if (cutoutCondition) {\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(\n CSG.fromMesh(meshResult).subtract(csgObj),\n mesh.matrix\n );\n }\n }\n if (rakeCutCondition) {\n if (this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE) {\n meshResult = CSG.toMesh(\n CSG.fromMesh(meshResult).subtract(this.csg_rakecutLeft),\n mesh.matrix\n );\n }\n if (this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE) {\n meshResult = CSG.toMesh(\n CSG.fromMesh(meshResult).subtract(this.csg_rakecutRight),\n mesh.matrix\n );\n }\n }\n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix));\n meshResult.applyMatrix4(matrixBefore);\n\n this.roofGroup.add(meshResult);\n } else {\n this.roofGroup.add(mesh);\n }\n }\n public addRoofSheetingBase(offsetX: number, isLast: boolean, csgObjs: CSG[]) {\n let mesh: Mesh = new Mesh(\n this.geo_roofPanelBase.geometry,\n MaterialManager.Instance().ROOF_BASE\n );\n let offsetZ = 0;\n let scaleZ =\n (this.APP.sldSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldBackOverhang.currentValue +\n this.APP.sldMultiSpan.currentValue -\n 60) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue) /\n this.geo_roofPanelBase.length;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n mesh.position.set(offsetX, 0, offsetZ);\n mesh.scale.setZ(scaleZ);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.ROOF_PANEL_BASE,\n views: views,\n };\n if (isLast) {\n mesh.userData.last = true;\n }\n\n let cutoutCondition =\n this.APP.sltCutOut.currentValue == 1 &&\n this.APP.sltExistingType.currentValue != 0 &&\n this.APP.sldExistingLength2.currentValue > 0;\n let rakeCutCondition =\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE ||\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE;\n if (cutoutCondition || rakeCutCondition) {\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n mesh.position.set(\n offsetX + this.MANAGER.patiosGroup.position.x,\n 0,\n offsetZ + this.roofGroup.position.z\n );\n mesh.updateMatrix();\n\n let meshResult = mesh.clone();\n\n if (cutoutCondition) {\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(\n CSG.fromMesh(meshResult).subtract(csgObj),\n mesh.matrix\n );\n }\n }\n if (rakeCutCondition) {\n if (this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE) {\n meshResult = CSG.toMesh(\n CSG.fromMesh(meshResult).subtract(this.csg_rakecutLeft),\n mesh.matrix\n );\n }\n if (this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE) {\n meshResult = CSG.toMesh(\n CSG.fromMesh(meshResult).subtract(this.csg_rakecutRight),\n mesh.matrix\n );\n }\n }\n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix));\n meshResult.applyMatrix4(matrixBefore);\n\n this.roofGroup.add(meshResult);\n } else {\n this.roofGroup.add(mesh);\n }\n }\n private addBargeCapping() {\n let mesh: Mesh;\n\n let extraWallWidth =\n this.APP.existingWallManager.geo_existingWallW1.width +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n\n let offsetXB =\n -this.totalBaySize / 2 - this.APP.sldLeftOverhang.currentValue;\n let offsetXL1 =\n -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue) +\n this.APP.sldExistingLength2.currentValue -\n extraWallWidth;\n let offsetXL2 = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n\n let offsetXR1 =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue -\n this.APP.sldExistingLength2.currentValue +\n extraWallWidth;\n let offsetXR2 =\n this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n\n let offsetZL = 0;\n let offsetZR = 0;\n\n let bargeBackLength = this.roofWidth;\n let scaleCutoutVer =\n this.utils.getHypotenuseByCos(\n this.APP.sldExistingWidth1.currentValue +\n this.geo_roofPanelBargeCappingLeft.width,\n this.APP.sltRoofPitch.currentValue\n ) / this.geo_roofPanelBargeCappingLeft.length;\n let scaleZLeft =\n this.utils.getHypotenuseByCos(\n this.roofLength,\n this.APP.sltRoofPitch.currentValue\n ) / this.geo_roofPanelBargeCappingLeft.length;\n let scaleZRight =\n this.utils.getHypotenuseByCos(\n this.roofLength,\n this.APP.sltRoofPitch.currentValue\n ) / this.geo_roofPanelBargeCappingLeft.length;\n\n let offsetY = 0;\n let bargeLeftLength = this.roofLength;\n let bargeRightLength = this.roofLength;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n // cutout\n if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.APP.sldExistingLength2.currentValue > 0 &&\n this.MANAGER.cutoutCondition &&\n (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH)\n ) {\n bargeLeftLength -= this.APP.sldExistingWidth1.currentValue;\n scaleZLeft =\n this.utils.getHypotenuseByCos(\n this.roofLength - this.APP.sldExistingWidth1.currentValue,\n this.APP.sltRoofPitch.currentValue\n ) / this.geo_roofPanelBargeCappingLeft.length;\n\n let bargeCutoutHorLength =\n this.APP.sldExistingLength2.currentValue +\n this.APP.sldLeftOverhang.currentValue -\n extraWallWidth;\n\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n offsetXB += this.APP.sldExistingLength2.currentValue;\n offsetXL1 =\n -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue) +\n this.APP.sldExistingLength2.currentValue;\n bargeBackLength -= this.APP.sldExistingLength2.currentValue;\n bargeCutoutHorLength += extraWallWidth;\n } else {\n bargeBackLength -=\n this.APP.sldExistingLength2.currentValue - extraWallWidth;\n offsetXB += this.APP.sldExistingLength2.currentValue - extraWallWidth;\n }\n\n offsetZL += this.utils.getHypotenuseByCos(\n this.APP.sldExistingWidth1.currentValue,\n this.APP.sltRoofPitch.currentValue\n );\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n offsetXL1 =\n -this.APP.sldExistingLength.currentValue / 2 - extraWallWidth;\n bargeCutoutHorLength =\n (this.roofWidth -\n (this.APP.sldExistingLength.currentValue +\n this.APP.existingWallManager.geo_existingWallW1.width * 2)) /\n 2 -\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n }\n\n bargeBackLength -= this.APP.sldLeftOverhang.currentValue;\n offsetXL1 +=\n this.APP.sldLeftOverhang.currentValue -\n EXISTING_BUILDING_CONFIG.BARGE_ROOF_OFFSET_X;\n offsetXB += this.APP.sldLeftOverhang.currentValue;\n\n //cutout Hor\n let offsetZ = this.utils.getHypotenuseByCos(\n this.APP.sldExistingWidth1.currentValue,\n this.APP.sltRoofPitch.currentValue\n );\n mesh = new Mesh(\n this.geo_bargeCutoutLeftHor.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXL1, offsetY, offsetZ);\n mesh.scale.setX(\n bargeCutoutHorLength / this.geo_bargeCutoutLeftHor.length\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n\n //cutout Ver\n mesh = new Mesh(\n this.geo_roofPanelBargeCappingLeft.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXL1, offsetY, 0);\n mesh.scale.setZ(scaleCutoutVer);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n }\n if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.APP.sldExistingLength2.currentValue > 0 &&\n this.MANAGER.cutoutCondition &&\n (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH)\n ) {\n bargeRightLength -= this.APP.sldExistingWidth1.currentValue;\n let bargeCutoutHorLength =\n this.APP.sldExistingLength2.currentValue +\n this.APP.sldRightOverhang.currentValue -\n extraWallWidth;\n //scaleXB = (this.roofWidth - this.APP.sldExistingLength2.currentValue + extraWallWidth) / this.geo_roofPanelBargeCappingBack.length;\n //bargeBackLength -= (this.APP.sldExistingLength2.currentValue - extraWallWidth);\n scaleZRight =\n this.utils.getHypotenuseByCos(\n this.roofLength - this.APP.sldExistingWidth1.currentValue,\n this.APP.sltRoofPitch.currentValue\n ) / this.geo_roofPanelBargeCappingRight.length;\n offsetZR += this.utils.getHypotenuseByCos(\n this.APP.sldExistingWidth1.currentValue,\n this.APP.sltRoofPitch.currentValue\n );\n\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n //scaleXB = (this.roofWidth - this.APP.sldExistingLength2.currentValue) / this.geo_roofPanelBargeCappingBack.length;\n bargeBackLength -= this.APP.sldExistingLength2.currentValue;\n offsetXR1 -= extraWallWidth;\n\n bargeCutoutHorLength += extraWallWidth;\n } else {\n bargeBackLength -=\n this.APP.sldExistingLength2.currentValue - extraWallWidth;\n }\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n offsetXR1 =\n this.APP.sldExistingLength.currentValue / 2 +\n this.APP.existingWallManager.geo_existingWallW1.width +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n bargeCutoutHorLength =\n (this.roofWidth -\n (this.APP.sldExistingLength.currentValue +\n this.APP.existingWallManager.geo_existingWallW1.width * 2)) /\n 2 -\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n }\n\n bargeBackLength -= this.APP.sldRightOverhang.currentValue;\n offsetXR1 -=\n this.APP.sldRightOverhang.currentValue -\n EXISTING_BUILDING_CONFIG.BARGE_ROOF_OFFSET_X;\n\n //cutout hor\n let offsetZ = this.utils.getHypotenuseByCos(\n this.APP.sldExistingWidth1.currentValue,\n this.APP.sltRoofPitch.currentValue\n );\n mesh = new Mesh(\n this.geo_bargeCutoutRightHor.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXR1, offsetY, offsetZ);\n mesh.scale.setX(\n bargeCutoutHorLength / this.geo_bargeCutoutRightHor.length\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n\n //cutout ver\n mesh = new Mesh(\n this.geo_roofPanelBargeCappingRight.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXR1, offsetY, 0);\n mesh.scale.setZ(scaleCutoutVer);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n }\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES &&\n this.APP.sldExistingLength2.currentValue > 0 &&\n this.MANAGER.cutoutCondition &&\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n offsetXB = -this.APP.sldExistingLength.currentValue / 2 - extraWallWidth;\n //scaleXB = (this.APP.sldExistingLength.currentValue + this.APP.existingWallManager.geo_existingWallW1.width * 2 + EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK*2)/this.geo_roofPanelBargeCappingBack.length;\n bargeBackLength =\n this.APP.sldExistingLength.currentValue + extraWallWidth * 2;\n }\n //Rakecut\n if (\n this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE ||\n this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP\n ) {\n bargeLeftLength -= this.APP.sldLeftCutVertical.currentValue;\n }\n if (\n this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE ||\n this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP\n ) {\n bargeRightLength -= this.APP.sldRightCutVertical.currentValue;\n }\n\n scaleZLeft =\n this.utils.getHypotenuseByCos(\n bargeLeftLength,\n this.APP.sltRoofPitch.currentValue\n ) / this.geo_roofPanelBargeCappingLeft.length;\n scaleZRight =\n this.utils.getHypotenuseByCos(\n bargeRightLength,\n this.APP.sltRoofPitch.currentValue\n ) / this.geo_roofPanelBargeCappingLeft.length;\n\n //left\n mesh = new Mesh(\n this.geo_roofPanelBargeCappingLeft.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXL2, offsetY, offsetZL);\n mesh.scale.setZ(scaleZLeft);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n\n //right\n mesh = new Mesh(\n this.geo_roofPanelBargeCappingRight.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.set(offsetXR2, offsetY, offsetZR);\n mesh.scale.setZ(scaleZRight);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n\n //back\n mesh = new Mesh(\n this.geo_roofPanelBargeCappingBack.geometry,\n MaterialManager.Instance().BARGE\n );\n mesh.position.setX(offsetXB);\n mesh.scale.setX(\n bargeBackLength / this.geo_roofPanelBargeCappingBack.length\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n this.roofGroup.add(mesh);\n }\n // private addBargeAngleRakecut() {\n // if (this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.ANGLE && this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.ANGLE) {\n // return;\n // }\n\n // let offsetY = 0;\n // let offsetZ = (this.APP.sldSpan.currentValue\n // + this.APP.sldMultiSpan.currentValue\n // + this.APP.sldFrontOverhang.currentValue\n // + this.APP.sldBackOverhang.currentValue) / this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n // let views: Print2DView[] = [\n // { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n // { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n // { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n // { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n // ];\n\n // if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n // let length = Math.sqrt(Math.pow(this.APP.sldLeftCutVertical.currentValue, 2) + Math.pow(this.APP.sldLeftCutHorizontal.currentValue, 2));\n // let scaleZ = length / this.geo_bargeRakecutLeft.length;\n\n // let rotY = Math.atan(this.APP.sldLeftCutHorizontal.currentValue / this.APP.sldLeftCutVertical.currentValue);\n\n // let offsetX = -this.totalBaySize / 2 - this.APP.sldLeftOverhang.currentValue + this.APP.sldLeftCutHorizontal.currentValue;\n // let mesh = new Mesh(this.geo_bargeRakecutLeft.geometry, MaterialManager.Instance().BARGE);\n // mesh.position.set(offsetX, offsetY, offsetZ);\n // mesh.scale.setZ(scaleZ);\n // mesh.rotateY(rotY);\n // mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n // this.roofGroup.add(mesh);\n // }\n // if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n // let length = Math.sqrt(Math.pow(this.APP.sldRightCutVertical.currentValue, 2) + Math.pow(this.APP.sldRightCutHorizontal.currentValue, 2));\n // let scaleZ = length / this.geo_bargeRakecutLeft.length;\n\n // let rotY = Math.atan(this.APP.sldRightCutHorizontal.currentValue / this.APP.sldRightCutVertical.currentValue);\n\n // let offsetX = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue - this.APP.sldRightCutHorizontal.currentValue;\n // let mesh = new Mesh(this.geo_bargeRakecutRight.geometry, MaterialManager.Instance().BARGE);\n // mesh.position.set(offsetX, offsetY, offsetZ);\n // mesh.scale.setZ(scaleZ);\n // mesh.rotateY(-rotY);\n // mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n // this.roofGroup.add(mesh);\n // }\n // }\n private addGutterStepRakecut() {\n if (\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.STEP &&\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.STEP\n ) {\n return;\n }\n let mesh: Mesh;\n\n let offsetXLL = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n let offsetXLR = offsetXLL + this.APP.sldLeftCutHorizontal.currentValue;\n let offsetXRR = this.totalBaySize / 2 + UI.overhangRight;\n let offsetXRL = offsetXRR - this.APP.sldRightCutHorizontal.currentValue;\n let offsetY = this.geo_roofPanelBase.height - 25;\n let offsetLZ =\n (this.APP.sldFrontOverhang.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue +\n this.APP.sldBackOverhang.currentValue -\n this.APP.sldLeftCutVertical.currentValue -\n 50) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n let offsetRZ =\n (this.APP.sldFrontOverhang.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue +\n this.APP.sldBackOverhang.currentValue -\n this.APP.sldRightCutVertical.currentValue -\n 50) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n let gutterLengthL = this.APP.sldLeftCutHorizontal.currentValue;\n let gutterLengthR = this.APP.sldRightCutHorizontal.currentValue;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n let scaleX = gutterLengthL / this.geo_gutterBack.length;\n mesh = new Mesh(\n this.geo_gutterBack.geometry,\n MaterialManager.Instance().GUTTER\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GUTTER_PATIOS,\n views: views,\n };\n mesh.position.set(offsetXLL, 0, 0);\n mesh.scale.setX(scaleX);\n\n let endCapMesh = new Mesh(\n this.geo_gutterCap.geometry,\n MaterialManager.Instance().GUTTER\n );\n endCapMesh.position.set(offsetXLL, 0, 0);\n\n let endCapMesh2 = new Mesh(\n this.geo_gutterCap.geometry,\n MaterialManager.Instance().GUTTER\n );\n endCapMesh2.position.set(offsetXLR, 0, 0);\n\n let gutterGroup = new Group();\n gutterGroup.add(mesh, endCapMesh, endCapMesh2);\n gutterGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GUTTER_PATIOS,\n views: views,\n };\n gutterGroup.position.set(0, offsetY, offsetLZ);\n gutterGroup.rotation.set(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue),\n 0,\n 0\n );\n this.roofGroup.add(gutterGroup);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n let scaleX = gutterLengthR / this.geo_gutterBack.length;\n mesh = new Mesh(\n this.geo_gutterBack.geometry,\n MaterialManager.Instance().GUTTER\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GUTTER_PATIOS,\n views: views,\n };\n mesh.position.set(offsetXRL, 0, 0);\n mesh.scale.setX(scaleX);\n\n let endCapMesh = new Mesh(\n this.geo_gutterCap.geometry,\n MaterialManager.Instance().GUTTER\n );\n endCapMesh.position.set(offsetXRL, 0, 0);\n\n let endCapMesh2 = new Mesh(\n this.geo_gutterCap.geometry,\n MaterialManager.Instance().GUTTER\n );\n endCapMesh2.position.set(offsetXRR, 0, 0);\n\n let gutterGroup = new Group();\n gutterGroup.add(mesh, endCapMesh, endCapMesh2);\n gutterGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GUTTER_PATIOS,\n views: views,\n };\n gutterGroup.position.set(0, offsetY, offsetRZ);\n gutterGroup.rotation.set(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue),\n 0,\n 0\n );\n this.roofGroup.add(gutterGroup);\n }\n }\n private addGutterAngleRakecut() {\n if (\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.ANGLE &&\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.ANGLE\n ) {\n return;\n }\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n let exLength = 300;\n let rc_offsetXL = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n let rc_offsetXR =\n this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n const rc_offsetZL =\n (this.APP.sldFrontOverhang.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue +\n this.APP.sldBackOverhang.currentValue -\n this.APP.sldLeftCutVertical.currentValue -\n CONST.GUTTER_ROOF_OFFSET_Z) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n const rc_offsetZR =\n (this.APP.sldFrontOverhang.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue +\n this.APP.sldBackOverhang.currentValue -\n this.APP.sldRightCutVertical.currentValue -\n CONST.GUTTER_ROOF_OFFSET_Z) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n const rc_offsetY = this.geo_roofPanelBase.height - 25;\n\n let rc_rotYL = Math.atan(\n this.APP.sldLeftCutVertical.currentValue /\n this.APP.sldLeftCutHorizontal.currentValue\n );\n let rc_lengthL =\n exLength +\n Math.sqrt(\n Math.pow(this.APP.sldLeftCutVertical.currentValue, 2) +\n Math.pow(this.APP.sldLeftCutHorizontal.currentValue, 2)\n );\n let rc_rotYR = Math.atan(\n this.APP.sldRightCutVertical.currentValue /\n this.APP.sldRightCutHorizontal.currentValue\n );\n let rc_lengthR =\n exLength +\n Math.sqrt(\n Math.pow(this.APP.sldRightCutVertical.currentValue, 2) +\n Math.pow(this.APP.sldRightCutHorizontal.currentValue, 2)\n );\n\n if (\n this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE &&\n this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE\n ) {\n let gutterRakecutGroupLeft = this.utils.createGutterGroup(\n this.gutterRakecutLeftInfo,\n this.geo_gutterCap,\n rc_lengthL,\n new Vector3(rc_offsetXL, rc_offsetY, rc_offsetZL),\n new Vector3(0, -rc_rotYL, 0),\n views,\n 1,\n true,\n false,\n this.csgCutGutterLeft2,\n this.roofGroup\n );\n let gutterRakecutGroupRight = this.utils.createGutterGroup(\n this.gutterRakecutRightInfo,\n this.geo_gutterCap,\n rc_lengthR,\n new Vector3(rc_offsetXR, rc_offsetY, rc_offsetZR),\n new Vector3(0, rc_rotYR, 0),\n views,\n 1,\n true,\n false,\n this.csgCutGutterRight2,\n this.roofGroup\n );\n\n this.roofGroup.add(gutterRakecutGroupLeft, gutterRakecutGroupRight);\n } else {\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n let gutterRakecutGroup = this.utils.createGutterGroup(\n this.gutterRakecutLeftInfo,\n this.geo_gutterCap,\n rc_lengthL,\n new Vector3(rc_offsetXL, rc_offsetY, rc_offsetZL),\n new Vector3(0, -rc_rotYL, 0),\n views,\n 1,\n true,\n false,\n this.csgCutGutterLeft2,\n this.roofGroup\n );\n\n this.roofGroup.add(gutterRakecutGroup);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n let gutterRakecutGroup = this.utils.createGutterGroup(\n this.gutterRakecutRightInfo,\n this.geo_gutterCap,\n rc_lengthR,\n new Vector3(rc_offsetXR, rc_offsetY, rc_offsetZR),\n new Vector3(0, rc_rotYR, 0),\n views,\n 1,\n true,\n false,\n this.csgCutGutterRight2,\n this.roofGroup\n );\n\n this.roofGroup.add(gutterRakecutGroup);\n }\n }\n }\n private addBargeStepRakecut() {\n if (\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.STEP &&\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.STEP\n ) {\n return;\n }\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n let offsetXL =\n this.APP.dialogEditBay.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue;\n let offsetXR =\n this.APP.dialogEditBay.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue;\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n let offsetZ = this.utils.getHypotenuseByCos(\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldBackOverhang.currentValue -\n this.APP.sldLeftCutVertical.currentValue,\n this.APP.sltRoofPitch.currentValue\n );\n let scaleZ =\n this.APP.sldLeftCutVertical.currentValue /\n this.geo_roofPanelBargeCappingLeft.length;\n\n let bargeVer = new Mesh(\n this.geo_roofPanelBargeCappingLeft.geometry,\n MaterialManager.Instance().BARGE\n );\n bargeVer.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n bargeVer.position.set(\n -offsetXL -\n CONST.BARGE_ROOF_OFFSET_X +\n this.APP.sldLeftCutHorizontal.currentValue,\n 0,\n offsetZ\n );\n bargeVer.scale.set(1, 1, scaleZ);\n\n this.roofGroup.add(bargeVer);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n let offsetZ = this.utils.getHypotenuseByCos(\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldBackOverhang.currentValue -\n this.APP.sldRightCutVertical.currentValue,\n this.APP.sltRoofPitch.currentValue\n );\n let scaleZ =\n this.APP.sldRightCutVertical.currentValue /\n this.geo_roofPanelBargeCappingLeft.length;\n\n let bargeVer = new Mesh(\n this.geo_roofPanelBargeCappingRight.geometry,\n MaterialManager.Instance().BARGE\n );\n bargeVer.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: this.APP.sltDripBarge.currentValue\n ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING,\n views: views,\n };\n bargeVer.position.set(\n offsetXR -\n this.APP.sldRightCutHorizontal.currentValue +\n CONST.BARGE_ROOF_OFFSET_X,\n 0,\n offsetZ\n );\n bargeVer.scale.set(1, 1, scaleZ);\n this.roofGroup.add(bargeVer);\n }\n }\n public addGutter() {\n let offsetXL = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n let offsetY = this.geo_roofPanelBase.height - 25;\n let offsetZ =\n (this.APP.sldFrontOverhang.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue +\n this.APP.sldBackOverhang.currentValue -\n CONST.GUTTER_ROOF_OFFSET_Z) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n let gutterLength = this.roofWidth;\n let exLength = 300; //Math.tan(extraAngle) * this.gutterInfo.width;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n //Rakecut\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n offsetXL += this.APP.sldLeftCutHorizontal.currentValue - exLength;\n gutterLength -= this.APP.sldLeftCutHorizontal.currentValue - exLength;\n } else if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n offsetXL += this.APP.sldLeftCutHorizontal.currentValue;\n gutterLength -= this.APP.sldLeftCutHorizontal.currentValue;\n }\n\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n gutterLength -= this.APP.sldRightCutHorizontal.currentValue - exLength;\n } else if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n gutterLength -= this.APP.sldRightCutHorizontal.currentValue;\n }\n if (\n this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE &&\n this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE\n ) {\n let gutterMesh = new Mesh(\n this.geo_gutterBack.geometry,\n MaterialManager.Instance().GUTTER\n );\n gutterMesh.scale.setX(gutterLength / this.geo_gutterBack.length);\n gutterMesh.updateMatrix();\n let matrixBefore = gutterMesh.matrix.clone();\n\n gutterMesh.position.set(offsetXL, offsetY, offsetZ);\n gutterMesh.rotation.set(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue),\n 0,\n 0\n );\n gutterMesh.updateMatrix();\n\n let meshClipped = CSG.toMesh(\n CSG.fromMesh(gutterMesh).subtract(this.csgCutGutterLeft1),\n gutterMesh.matrix\n );\n meshClipped = CSG.toMesh(\n CSG.fromMesh(meshClipped).subtract(this.csgCutGutterRight1),\n gutterMesh.matrix\n );\n meshClipped.applyMatrix4(new Matrix4().getInverse(gutterMesh.matrix));\n meshClipped.applyMatrix4(matrixBefore);\n meshClipped.material = gutterMesh.material;\n\n let gutterGroup = this.utils.createGutterGroupWithMesh(\n meshClipped,\n this.geo_gutterCap,\n gutterLength,\n new Vector3(offsetXL, offsetY, offsetZ),\n new Vector3(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue),\n 0,\n 0\n ),\n views,\n 1,\n false,\n false\n );\n\n this.roofGroup.add(gutterGroup);\n } else if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n let gutterGroup = this.utils.createGutterGroup(\n this.geo_gutterBack,\n this.geo_gutterCap,\n gutterLength,\n new Vector3(offsetXL, offsetY, offsetZ),\n new Vector3(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue),\n 0,\n 0\n ),\n views,\n 1,\n false,\n true,\n this.csgCutGutterLeft1,\n this.roofGroup\n );\n\n this.roofGroup.add(gutterGroup);\n } else if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n let gutterGroup = this.utils.createGutterGroup(\n this.geo_gutterBack,\n this.geo_gutterCap,\n gutterLength,\n new Vector3(offsetXL, offsetY, offsetZ),\n new Vector3(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue),\n 0,\n 0\n ),\n views,\n 1,\n true,\n false,\n this.csgCutGutterRight1,\n this.roofGroup\n );\n\n this.roofGroup.add(gutterGroup);\n } else {\n let gutterGroup = this.utils.createGutterGroup(\n this.geo_gutterBack,\n this.geo_gutterCap,\n gutterLength,\n new Vector3(offsetXL, offsetY, offsetZ),\n new Vector3(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue),\n 0,\n 0\n ),\n views,\n 1,\n true,\n true\n );\n this.roofGroup.add(gutterGroup);\n }\n // let scaleX = gutterLength / this.geo_gutterBack.length;\n // mesh = new Mesh(this.geo_gutterBack.geometry, MaterialManager.Instance().GUTTER);\n // mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.GUTTER_PATIOS, views: views };\n // mesh.position.set(offsetXL, 0, 0);\n // mesh.scale.setX(scaleX);\n\n // let endCapMesh = new Mesh(this.geo_gutterCap.geometry, MaterialManager.Instance().GUTTER);\n // endCapMesh.position.set(offsetXL, 0, 0);\n\n // let endCapMesh2 = new Mesh(this.geo_gutterCap.geometry, MaterialManager.Instance().GUTTER);\n // endCapMesh2.position.set(offsetXR, 0, 0);\n\n // let gutterGroup = new Group();\n // gutterGroup.add(mesh, endCapMesh, endCapMesh2);\n // gutterGroup.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.GUTTER_PATIOS, views: views};\n // gutterGroup.position.set(0, offsetY, offsetZ);\n // gutterGroup.rotation.set(-this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue), 0, 0);\n // this.roofGroup.add(gutterGroup);\n }\n public addZFlashing() {\n let offsetX = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n let offsetY = this.geo_roofPanelBase.height - 25;\n const offsetZ =\n (this.APP.sldFrontOverhang.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue +\n this.APP.sldBackOverhang.currentValue) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n let zFlashingLength = this.roofWidth;\n //Rakecut\n if (\n this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE ||\n this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP\n ) {\n offsetX += this.APP.sldLeftCutHorizontal.currentValue;\n // bargeLengthLeft -= this.APP.sldLeftCutVertical.currentValue;\n zFlashingLength -= this.APP.sldLeftCutHorizontal.currentValue;\n }\n if (\n this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE ||\n this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP\n ) {\n // bargeLengthRight -= this.APP.sldRightCutVertical.currentValue;\n zFlashingLength -= this.APP.sldRightCutHorizontal.currentValue;\n }\n let scaleX = zFlashingLength / this.zFlashingGeo.length;\n\n let mesh = new Mesh(\n this.zFlashingGeo.geometry,\n MaterialManager.Instance().ZFLASHING\n );\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.set(scaleX, 1, 1);\n\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.ZFLASHING,\n scale: mesh.scale,\n };\n this.roofGroup.add(mesh);\n }\n public addZFlashingAngleRakeCut() {\n if (\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.ANGLE &&\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.ANGLE\n ) {\n return;\n }\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n const offsetY = this.geo_roofPanelBase.height - 25;\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n let offsetX = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n\n const offsetZ =\n (this.APP.sldFrontOverhang.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue +\n 50 -\n this.APP.sldLeftCutVertical.currentValue) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n let rotY = Math.atan(\n this.APP.sldLeftCutVertical.currentValue /\n this.APP.sldLeftCutHorizontal.currentValue\n );\n let length = Math.sqrt(\n Math.pow(this.APP.sldLeftCutVertical.currentValue, 2) +\n Math.pow(this.APP.sldLeftCutHorizontal.currentValue, 2)\n );\n\n let scaleX = length / this.zFlashingGeo.length;\n\n let mesh = new Mesh(\n this.zFlashingGeo.geometry,\n MaterialManager.Instance().ZFLASHING\n );\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.rotation.set(0, -rotY, 0);\n mesh.scale.set(scaleX, 1, 1);\n\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.ZFLASHING,\n views: views,\n };\n\n this.roofGroup.add(mesh);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n let offsetX =\n this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n\n const offsetZ =\n (this.APP.sldFrontOverhang.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue +\n 50 -\n this.APP.sldRightCutVertical.currentValue) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n let rotY = Math.atan(\n this.APP.sldRightCutVertical.currentValue /\n this.APP.sldRightCutHorizontal.currentValue\n );\n let length = Math.sqrt(\n Math.pow(this.APP.sldRightCutVertical.currentValue, 2) +\n Math.pow(this.APP.sldRightCutHorizontal.currentValue, 2)\n );\n let scaleX = length / this.zFlashingGeo.length;\n\n let mesh = new Mesh(\n this.zFlashingRakecutRightGeo.geometry,\n MaterialManager.Instance().ZFLASHING\n );\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.rotation.set(0, rotY, 0);\n mesh.scale.set(scaleX, 1, 1);\n\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.ZFLASHING,\n views: views,\n };\n\n this.roofGroup.add(mesh);\n }\n }\n public addZFlashingStepRakeCut() {\n if (\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.STEP &&\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.STEP\n ) {\n return;\n }\n\n const offsetY = this.geo_roofPanelBase.height - 25;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS },\n ];\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n const offsetX =\n -this.totalBaySize / 2 - this.APP.sldLeftOverhang.currentValue;\n\n const offsetZ =\n (this.APP.sldFrontOverhang.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue -\n this.APP.sldLeftCutVertical.currentValue) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n const length = this.APP.sldLeftCutHorizontal.currentValue;\n const scaleX = length / this.zFlashingGeo.length;\n\n let mesh = new Mesh(\n this.zFlashingGeo.geometry,\n MaterialManager.Instance().ZFLASHING\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.ZFLASHING,\n views: views,\n };\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.set(scaleX, 1, 1);\n\n this.roofGroup.add(mesh);\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n const offsetX =\n this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n\n const offsetZ =\n (this.APP.sldFrontOverhang.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue -\n this.APP.sldRightCutVertical.currentValue) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n const length = this.APP.sldRightCutHorizontal.currentValue;\n const scaleX = length / this.zFlashingGeo.length;\n\n let mesh = new Mesh(\n this.zFlashingRakecutRightGeo.geometry,\n MaterialManager.Instance().ZFLASHING\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.ZFLASHING,\n views: views,\n };\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.set(scaleX, 1, 1);\n\n this.roofGroup.add(mesh);\n }\n }\n private totalHeightFromEaveHeightToTopOfExistingRoof(){\n const height = \n this.geometryManager.EAVE.EAVE.height \n + UI.fasciaDepth \n + UI.eaveWidth * this.utils.tan(UI.existingRoofPitch) \n + this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.height / this.utils.cos(UI.existingRoofPitch)\n\n return height\n }\n private totalHeightFromEaveHeightToTopOfFlyoverBraket(){\n const height = this.totalHeightFromEaveHeightToTopOfExistingRoof() + UI.braketHeight - FIT_FLYOVER_BRAKET_ON_ROOF;\n\n return height\n }\n public getRoofOffsetY() {\n return (\n this.APP.sldExistingWallHeight.currentValue +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geometryManager.getBeam().height +\n this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n this.APP.sldBackOverhang.currentValue\n );\n }\n public destroy(): void {\n this.unregisterEvent();\n }\n private registerEvent(): void {\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n //this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n\n this.controlsToRegisterEvent2 = [\n this.APP.sltRoofSheetingType,\n this.APP.sltRoofThickness,\n this.APP.sltBargeType,\n this.APP.sltDripBarge,\n this.APP.sltGutterType,\n ];\n this.controlsToRegisterEvent2.forEach((c) =>\n c.addAction(this.objectSizeChangedHandle)\n );\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach((c) =>\n c.removeAction(this.objectSizeChangedHandle)\n );\n this.controlsToRegisterEvent2 = undefined;\n }\n private objectSizeChanged() {\n this.optimize().then(() => {\n this.load();\n });\n }\n public uiChanged(): void {\n this.load();\n }\n uiCHangedDefer() {\n if (this.APP.sltCutOut.currentValue == 1) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => {\n this.load();\n }, this.deferTimeout);\n } else {\n this.load();\n }\n }\n}\n","import { HomeComponent as AppComponent } from \"../../containers/home/home.component\";\nimport {\n Scene,\n Material,\n Mesh,\n BufferGeometry,\n Box3,\n Group,\n LineSegments,\n LineBasicMaterial,\n Plane,\n Vector3,\n BoxHelper,\n Geometry,\n BoxBufferGeometry,\n Object3D,\n} from \"three\";\nimport { Util } from \"../utils\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport {\n CONFIG as env,\n GEOMETRY_TYPE,\n GEOMETRY_CATEGORY,\n} from \"../../app.config\";\nimport {\n GeometryInfo,\n Printing2DGeometry,\n Printing2DLine,\n Printing2DGeometryType,\n Print2DView,\n ViewType,\n LineType,\n} from \"../models\";\nimport { PatiosFreeStandingManager } from \".\";\nimport { UI } from \"../ui\";\nimport _ from \"lodash\";\n\nexport class ColumnAndPurlinManager {\n private scene: Group;\n private APP: AppComponent;\n private material: Material;\n //private beamMaterial: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private geo_superiorPost: GeometryInfo;\n public geo_superiorBeam: GeometryInfo;\n private geo_beamEndCap: GeometryInfo;\n private geo_bracket: GeometryInfo;\n private geo_groundBase: GeometryInfo;\n private geoBeamJoint: GeometryInfo;\n private geoHouseBeamJoint: GeometryInfo;\n\n private eventHandleId: any;\n private totalBaySize: number;\n private frontPostHeight: number;\n\n private geo_downPipe: GeometryInfo;\n private geo_downPipeL: GeometryInfo;\n private downpipeGroup: Group;\n private objectSizeChangedHandle: any;\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n\n constructor(app: AppComponent, manager: PatiosFreeStandingManager) {\n this.APP = app;\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n\n this.scene = manager.patiosGroup;\n this.material = MaterialManager.Instance().DEFAULT.clone();\n //this.beamMaterial = MaterialManager.Instance().DEFAULT.clone();\n\n this.registerEvent();\n }\n\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n let bracketHeight =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height / 2;\n let bracketWidth = this.geometryManager.FLY_OVER_BRACKET.S65x3.width;\n\n this.geo_bracket = new GeometryInfo();\n this.geo_bracket.geometry =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.geometry\n .clone()\n .rotateX(Math.PI / 2)\n .translate(bracketWidth / 2, bracketHeight, bracketWidth / 2);\n this.geo_bracket.width =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.width;\n this.geo_bracket.length =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.length;\n this.geo_bracket.height =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n this.geo_superiorBeam = this.geometryManager.getBeam();\n this.geo_superiorBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_superiorBeam.length / 2,\n this.geo_superiorBeam.height / 2,\n this.geo_superiorBeam.width / 2\n );\n\n this.geoBeamJoint = this.geometryManager.getBeamJoint();\n this.geoHouseBeamJoint = this.geometryManager.getHouseBeamJoint();\n\n this.geo_beamEndCap = this.geometryManager.getBeamEndCap();\n this.geo_beamEndCap.geometry.translate(\n 0,\n this.geo_beamEndCap.height / 2,\n 0\n );\n\n this.geo_superiorPost = this.geometryManager.getPost();\n this.geo_superiorPost.geometry\n .rotateX(Math.PI / 2)\n .translate(\n this.geo_superiorPost.width / 2,\n this.geo_superiorPost.height / 2,\n this.geo_superiorPost.width / 2\n );\n\n this.geo_groundBase = new GeometryInfo();\n this.geo_groundBase.width = 1000;\n this.geo_groundBase.height = 1;\n this.geo_groundBase.length = 1000;\n this.geo_groundBase.geometry = new BoxBufferGeometry(\n this.geo_groundBase.width,\n this.geo_groundBase.height,\n this.geo_groundBase.length\n );\n this.geo_groundBase.geometry.translate(\n 0,\n 0,\n this.geo_groundBase.length / 2\n );\n\n this.geo_downPipe = this.geometryManager.getDownPipe();\n this.geo_downPipeL = this.geometryManager.getDownPipeL();\n\n this.scene.remove(\n ...this.scene.children.filter(\n (c) => c.userData.type == GEOMETRY_TYPE.DOWNPIPE\n )\n );\n this.downpipeGroup = new Group();\n this.downpipeGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeGroup);\n\n resolve();\n });\n }\n\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SUPERIOR_POST\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.MESH_OUTLINE\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == \"COLUMN_OUTLINE\"\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.GROUND_BASE\n )\n );\n this.downpipeGroup.children = [];\n\n // this.outlineGroup = new Group();\n // this.outlineGroup.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.MESH_OUTLINE };\n // this.scene.add(this.outlineGroup);\n\n this.totalBaySize = 0;\n for (let b of this.APP.dialogEditBay.listBay) {\n this.totalBaySize += b.value;\n }\n\n this.addSuperiorBeam({ front: true });\n this.addSuperiorBeam({ back: true });\n if (this.APP.sldMultiSpan.currentValue > 0) {\n this.addSuperiorBeam({ multiSpan: true });\n }\n this.addGround();\n\n let offsetX = -this.totalBaySize / 2;\n let first = true;\n let last = false;\n for (let i = 0; i <= this.APP.dialogEditBay.listBay.length; i++) {\n if (i == this.APP.dialogEditBay.listBay.length) {\n last = true;\n }\n this.addPost(offsetX, { back: true, first, last });\n this.addPost(offsetX, { front: true, first, last });\n\n if (this.APP.sldMultiSpan.currentValue > 0) {\n this.addPost(offsetX, { multiSpan: true, first, last });\n }\n if (i < this.APP.dialogEditBay.listBay.length) {\n let b = this.APP.dialogEditBay.listBay[i];\n offsetX += b.value;\n }\n first = false;\n }\n\n //this.getSection();\n this.showBeamOutline();\n this.addDownPipe();\n this.updateUI();\n resolve();\n });\n }\n public showBeamOutline() {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.BEAM_OUTLINE\n )\n );\n\n if (!UI.beamLayoutShow) return;\n\n const objs = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n const meshes = [];\n objs.forEach((el) => {\n if (el.type == \"Group\") {\n meshes.push(\n ...el.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n }\n });\n\n for (let o of meshes) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n o as Mesh,\n 10\n );\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n\n var line = new LineSegments(\n outlineGeo,\n MaterialManager.Instance().BEAM_OUTLINE\n );\n line.userData = { type: GEOMETRY_TYPE.BEAM_OUTLINE };\n this.APP.scene.add(line);\n }\n }\n private updateUI() {\n this.APP.sldMinHeight.setValue(_.round(this.frontPostHeight, 0));\n }\n private addDownPipe() {\n let offsetZ =\n this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + 100;\n let offsetX = -this.totalBaySize / 2 + 50;\n\n this.downpipeGroup.position.set(offsetX, 0, offsetZ);\n let offsetY =\n this.utils.getHeightByAngle(\n this.APP.sldBuildingHeight.currentValue,\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue,\n this.APP.sltRoofPitch.currentValue,\n -1\n ) + this.geometryManager.getRoofBase().height;\n\n if (this.APP.sltGutterType.currentValue == 0) {\n offsetY -= 80;\n } else {\n offsetY -= 60;\n }\n\n let userData = { type: GEOMETRY_TYPE.DOWNPIPE };\n\n if (this.APP.sldFrontOverhang.currentValue > 100) {\n offsetY -= 250;\n\n let meshLBottom = new Mesh(\n this.geo_downPipeL.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshLBottom.userData = userData;\n meshLBottom.position.set(0, offsetY, 20);\n meshLBottom.rotateY(Math.PI / 2);\n\n let meshLTop = new Mesh(\n this.geo_downPipeL.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshLTop.userData = userData;\n meshLTop.rotation.set(Math.PI, Math.PI / 2, 0);\n meshLTop.position.set(\n 0,\n offsetY + 230,\n this.APP.sldFrontOverhang.currentValue - 100\n );\n\n let meshPipeConnect = new Mesh(\n this.geo_downPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipeConnect.userData = userData;\n meshPipeConnect.rotation.set(Math.PI / 2, 0, 0);\n meshPipeConnect.position.set(0, offsetY + 115, 50);\n meshPipeConnect.scale.set(\n 1,\n (this.APP.sldFrontOverhang.currentValue - 140) /\n this.geo_downPipe.height,\n 1\n );\n\n this.downpipeGroup.add(meshLBottom, meshLTop, meshPipeConnect);\n }\n\n let scaleY = offsetY / this.geo_downPipe.height;\n\n let meshPipe = new Mesh(\n this.geo_downPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipe.userData = userData;\n meshPipe.scale.setY(scaleY);\n\n this.downpipeGroup.add(meshPipe);\n }\n private addGround() {\n let offsetZ = -this.APP.sldBackOverhang.currentValue;\n let width =\n this.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n let length =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldBackOverhang.currentValue;\n let offsetX =\n (this.APP.sldRightOverhang.currentValue -\n this.APP.sldLeftOverhang.currentValue) /\n 2;\n\n let base = new Mesh(\n this.geo_groundBase.geometry,\n MaterialManager.Instance().BASE\n );\n base.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GROUND_BASE,\n };\n base.position.set(offsetX, 0, offsetZ);\n base.scale.set(\n width / this.geo_groundBase.width,\n 1,\n length / this.geo_groundBase.length\n );\n\n this.scene.add(base);\n }\n private addPost(offsetX: number, userDataPos: any): void {\n let meshPost = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n meshPost.userData = {\n ...userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let postOffsetZ = 0;\n\n let scalePostY = 1;\n\n let views: Print2DView[];\n\n if (userDataPos.front) {\n postOffsetZ = this.APP.sldSpan.currentValue;\n this.frontPostHeight = this.utils.getHeightByAngle(\n this.APP.sldBuildingHeight.currentValue - this.geo_superiorBeam.height,\n this.APP.sldSpan.currentValue,\n this.APP.sltRoofPitch.currentValue,\n -1\n );\n\n scalePostY = this.frontPostHeight / this.geo_superiorPost.height;\n\n if (this.APP.sldMultiSpan.currentValue > 0) {\n postOffsetZ -= this.geo_superiorPost.width / 2;\n } else {\n postOffsetZ -= this.geo_superiorPost.width;\n }\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n if (userDataPos.back) {\n postOffsetZ = 0;\n scalePostY =\n (this.APP.sldBuildingHeight.currentValue -\n this.geo_superiorBeam.height) /\n this.geo_superiorPost.height;\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n if (userDataPos.multiSpan) {\n postOffsetZ =\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue -\n this.geo_superiorPost.width;\n scalePostY =\n this.utils.getHeightByAngle(\n this.APP.sldBuildingHeight.currentValue -\n this.geo_superiorBeam.height,\n this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue,\n this.APP.sltRoofPitch.currentValue,\n -1\n ) / this.geo_superiorPost.height;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n meshPost.userData.views = views;\n\n let postOffsetX = offsetX;\n if (userDataPos.first) {\n } else if (userDataPos.last) {\n postOffsetX -= this.geo_superiorPost.width;\n } else {\n postOffsetX -= this.geo_superiorPost.width / 2;\n }\n\n meshPost.position.set(postOffsetX, 0, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n\n this.scene.add(meshPost);\n }\n\n public addSuperiorBeam(userDataPos: any) {\n let offsetXL = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n let offsetZ = 0;\n let offsetY = 0;\n\n let beamLength =\n this.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n\n let views: Print2DView[];\n\n if (userDataPos.front) {\n offsetY = this.utils.getHeightByAngle(\n this.APP.sldBuildingHeight.currentValue - this.geo_superiorBeam.height,\n this.APP.sldSpan.currentValue,\n this.APP.sltRoofPitch.currentValue,\n -1\n );\n\n //this.APP.sldBuildingHeight.currentValue + this.getBracketHeight(this.APP.sldSpan.currentValue);\n offsetZ = this.APP.sldSpan.currentValue;\n if (this.APP.sldMultiSpan.currentValue > 0) {\n offsetZ -= this.geo_superiorBeam.width / 2;\n } else {\n offsetZ -= this.geo_superiorBeam.width;\n }\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.back) {\n offsetY =\n this.APP.sldBuildingHeight.currentValue - this.geo_superiorBeam.height;\n offsetZ = 0;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.multiSpan) {\n offsetY = this.utils.getHeightByAngle(\n this.APP.sldBuildingHeight.currentValue - this.geo_superiorBeam.height,\n this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue,\n this.APP.sltRoofPitch.currentValue,\n -1\n );\n offsetZ =\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue -\n this.geo_superiorBeam.width;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n this.cutStandardBeamByCutBeamWithinBayControl(\n this.geo_superiorBeam,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetXL, offsetY, offsetZ),\n new Vector3(),\n views,\n 1,\n userDataPos,\n this.geoBeamJoint\n );\n }\n private cutStandardBeamByCutBeamWithinBayControl(\n beamGeo: GeometryInfo,\n beamCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n userDataPos: any,\n jointGeo: GeometryInfo\n ) {\n // Map list cut beam here\n const beamStartX = pos.x;\n const beamEndX = pos.x + length;\n\n let endOfBayX = -UI.totalBayLength / 2;\n let startCutBeamX = beamStartX;\n let endCutBeamX = beamStartX;\n\n const beams = this.utils.getListSeperateBeamsByBays(\n endOfBayX,\n beamStartX,\n beamEndX,\n endCutBeamX,\n startCutBeamX\n );\n\n for (let i = 0; i < beams.length; i++) {\n endCutBeamX = beams[i][1];\n startCutBeamX = beams[i][0];\n let beamGroup = this.utils.createBeamGroup(\n beamGeo,\n beamCapGeo,\n endCutBeamX - startCutBeamX,\n new Vector3(startCutBeamX, pos.y, pos.z),\n rot,\n views,\n directionOffset,\n userDataPos,\n UI.beamLayoutShow,\n {\n hasStartCap: UI.beamType == 0 && i == 0,\n hasEndCap:\n UI.beamType == 0 &&\n (i == beams.length - 1 || (i == 0 && beams.length == 1)),\n hasStartJoint: i !== 0,\n hasEndJoint: false,\n jointGeo: jointGeo,\n }\n );\n this.scene.add(beamGroup);\n }\n }\n public getSection(): Printing2DGeometry {\n let objs = this.scene.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_POST ||\n o.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET\n );\n let beamGroups = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n let beamObjs: Object3D[] = [];\n for (let g of beamGroups) {\n beamObjs = beamObjs.concat(g.children);\n }\n\n objs = [...objs, ...beamObjs];\n let lsGeometries: Printing2DLine[] = [];\n\n for (let o of objs) {\n let box = new BoxHelper(o);\n box.geometry.translate(0, 5000, 0);\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n const planView = _.find(\n o.userData.views,\n (el) => el.viewType == ViewType.PLAN\n );\n const anotherViews = _.filter(\n o.userData.views,\n (el) => el.viewType != ViewType.PLAN\n );\n if (anotherViews.length > 0) {\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: outlineGeo.vertices,\n views: anotherViews,\n });\n }\n if (planView) {\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: outlineGeo.vertices\n .slice(0, 8)\n .filter((el, index) => [0, 1, 4, 5].includes(index)),\n views: [planView],\n });\n }\n }\n\n return { lines: lsGeometries, texts: [] };\n }\n public simplifyGeo(geo: BufferGeometry): Geometry {\n let vertices = geo.getAttribute(\"position\").array;\n let lineGeo = new Geometry();\n for (let i = 0; i < vertices.length; i += 3) {\n lineGeo.vertices.push(\n new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2])\n );\n }\n\n //2-3\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n //3-7\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n //7-6\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n //6-2\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n\n //1-4\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n //4-8\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n //8-5\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n //5-1\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n return lineGeo;\n }\n\n private getBracketHeight(offset): number {\n let angle = this.APP.sltRoofPitch.currentValue;\n return (\n this.APP.sldFlyOverBracketHeight.currentValue -\n this.utils.tan(angle) * offset\n );\n }\n\n public destroy(): void {\n this.unregisterEvent();\n }\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldBuildingHeight,\n this.APP.sltExistingType,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldFlyOverBracketHeight,\n this.APP.sldBackOverhang,\n this.APP.sldFrontOverhang,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n ];\n //this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n\n this.controlsToRegisterEvent2 = [\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltColumnType,\n ];\n this.controlsToRegisterEvent2.forEach((c) =>\n c.addAction(this.objectSizeChangedHandle)\n );\n }\n private unregisterEvent(): void {\n // this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n // this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach((c) =>\n c.removeAction(this.objectSizeChangedHandle)\n );\n this.controlsToRegisterEvent2 = undefined;\n }\n public uiChanged(preVal: number, curVal: number): void {\n this.load();\n }\n private objectSizeChanged(pre: number, cur: number) {\n this.optimize().then(() => {\n this.load();\n });\n }\n}\n","import { Scene, Mesh, Object3D, Material, Group, FontLoader, TextBufferGeometry, PlaneBufferGeometry, Vector3, BoxHelper, Box3Helper, Matrix4, Box3, Geometry, LineSegments, LineBasicMaterial, Color, BoxBufferGeometry, Line, Line3 } from \"three\";\nimport { HomeComponent as AppComponent, HomeComponent } from '../../containers/home/home.component';\nimport { Util } from '../utils';\nimport { MaterialManager } from '../material.manager';\nimport { GeometryInfo, ViewType, LineType, IBay, Printing2DGeometry, Printing2DLine, Print2DText, Printing2DGeometryType } from '../models';\nimport { DIMENSION_LABEL_TYPE, GEOMETRY_TYPE } from 'src/app/app.config';\nimport { environment } from 'src/environments/environment';\nimport Dimension, { AddDimensionOptions } from \"src/app/models/Dimension\";\nimport {CONFIG as conf} from '../../app.config'\nimport { UI } from \"../ui\";\nimport { PatiosFreeStandingManager } from \".\";\nimport { FIT_DIMENSION } from \"src/app/app.constants\";\n\nexport class DimensionManager {\n private scene: Scene;\n private APP: AppComponent;\n public listText: THREE.Object3D[] = [];\n private utils: Util;\n\n private MANAGER: PatiosFreeStandingManager;\n\n private eventHandleId: any;\n\n private material: Material;\n\n private materialManager: MaterialManager;\n\n private dimensionPatiosFrontBottom: Object3D;\n private dimensionPatiosFrontRight: Object3D;\n \n private dimensionPatiosRightBottom: Object3D;\n private dimensionPatiosRightLeft: Object3D;\n private dimensionPatiosRightRight: Object3D;\n\n private dimensionPatiosLeftBottom: Object3D;\n private dimensionPatiosLeftRight: Object3D;\n private dimensionPatiosLeftLeft: Object3D;\n\n private dimensionPatiosPlanRight: Object3D;\n private dimensionPatiosPlanBottom: Object3D;\n private dimensionPlanMiddle: Object3D;\n private dimensionPlanMidleLeft: Object3D;\n\n private dimensionPatiosLowerHeightDim: Object3D;\n private dimensionPatiosHigherHeightDim: Object3D;\n\n private lineCapGeo: GeometryInfo;\n private lineGeo: GeometryInfo;\n private textGeo: TextBufferGeometry;\n\n private dimensionDistance = 1500;\n private dimensionDistance2 = 500;\n\n private textDistance = 5000;\n\n private totalBaySize: number;\n\n private font: any\n private textParameter: any;\n private isReady = false;\n\n private controlsToRegisterEvent: Array;\n private options : AddDimensionOptions;\n private startPos: Vector3;\n private startMatrix: Matrix4;\n private startBayLength: number;\n\n constructor(app: AppComponent, freeStandingManager: PatiosFreeStandingManager) {\n this.utils = new Util();\n this.materialManager = MaterialManager.Instance();\n this.APP = app;\n this.scene = this.APP.scene;\n this.material = MaterialManager.Instance().DIMENSION_TEXT;\n\n this.MANAGER = freeStandingManager;\n\n this.registerEvent();\n }\n\n \n public optimize() : Promise{\n return new Promise((resolve, reject) => {\n this.lineGeo = new GeometryInfo();\n this.lineGeo.geometry = new PlaneBufferGeometry(1000, 50);\n this.lineGeo.width = 50;\n this.lineGeo.length = 1000;\n\n this.lineCapGeo = new GeometryInfo();\n this.lineCapGeo.geometry = new PlaneBufferGeometry(50, 200);\n this.lineCapGeo.width = 50;\n this.lineCapGeo.length = 200;\n\n resolve();\n });\n }\n public load(): Promise { \n return new Promise((resolve, reject) => {\n this.unload();\n var loader = new FontLoader();\n \n this.dimensionPatiosFrontBottom = new Group();\n this.dimensionPatiosFrontBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n // this.dimensionPatiosFrontBottom.rotation.set(0,Math.PI,0);\n this.dimensionPatiosFrontBottom.visible = false;\n\n this.dimensionPatiosFrontRight = new Group();\n this.dimensionPatiosFrontRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosFrontRight.rotation.set(0,0,-Math.PI/2);\n this.dimensionPatiosFrontRight.visible = false;\n \n this.dimensionPatiosRightBottom = new Group();\n this.dimensionPatiosRightBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightBottom.rotation.set(0,-Math.PI/2,0);\n this.dimensionPatiosRightBottom.visible = false;\n\n this.dimensionPatiosRightLeft = new Group();\n this.dimensionPatiosRightLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightLeft.rotation.set(0,-Math.PI/2,-Math.PI/2);\n this.dimensionPatiosRightLeft.visible = false;\n\n this.dimensionPatiosRightRight = new Group();\n this.dimensionPatiosRightRight.rotation.set(0,-Math.PI/2,-Math.PI/2);\n this.dimensionPatiosRightRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightRight.visible = false;\n\n this.dimensionPatiosLeftBottom = new Group();\n this.dimensionPatiosLeftBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftBottom.rotation.set(0,-Math.PI/2,0);\n this.dimensionPatiosLeftBottom.visible = false;\n\n this.dimensionPatiosLeftRight = new Group();\n this.dimensionPatiosLeftRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftRight.rotation.set(Math.PI/2,-Math.PI/2,0);\n this.dimensionPatiosLeftRight.visible = false;\n\n this.dimensionPatiosLeftLeft = new Group();\n this.dimensionPatiosLeftLeft.rotation.set(0, -Math.PI / 2, Math.PI / 2);\n this.dimensionPatiosLeftLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftLeft.visible = false;\n\n this.dimensionPatiosPlanRight = new Group();\n this.dimensionPatiosPlanRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosPlanRight.rotation.set(-Math.PI/2, Math.PI, -Math.PI/2);\n\n this.dimensionPatiosPlanBottom = new Group();\n this.dimensionPatiosPlanBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosPlanBottom.rotation.set(-Math.PI / 2, 0, 0);\n\n this.dimensionPatiosLowerHeightDim = new Group();\n this.dimensionPatiosLowerHeightDim.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLowerHeightDim.rotation.set(0, 0, Math.PI / 2);\n \n this.dimensionPatiosHigherHeightDim = new Group();\n this.dimensionPatiosHigherHeightDim.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosHigherHeightDim.rotation.set(0, 0, Math.PI / 2);\n\n this.dimensionPlanMiddle = new Group();\n this.dimensionPlanMidleLeft = new Group();\n\n this.scene.add(\n this.dimensionPatiosPlanRight,\n this.dimensionPatiosFrontBottom, \n this.dimensionPatiosFrontRight, \n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom, \n this.dimensionPatiosLeftRight, \n this.dimensionPatiosLeftLeft, \n this.dimensionPatiosPlanBottom,\n this.dimensionPlanMiddle,\n this.dimensionPlanMidleLeft,\n this.dimensionPatiosLowerHeightDim,\n this.dimensionPatiosHigherHeightDim,\n );\n\n loader.load( environment.modelBaseUrl + '/../assets/fonts/helvetiker_regular.typeface.json', (font) => {\n this.font = font;\n\n this.textParameter = {\n font: this.font,\n size: 200,\n height: 5,\n curveSegments: 10\n };\n this.options = {\n container: HomeComponent.ins.scene,\n start: new Vector3(),\n end: new Vector3(),\n linePos: new Vector3(),\n views: [],\n allowDrag: true,\n textParameter: this.textParameter,\n textPos: new Vector3(),\n labelType: null,\n fitZ: 10,\n hasTextClone: false,\n axis: 'x',\n lineLength: 0,\n subtype: null,\n textUserData: null,\n onDragCallback: this.onDimDrag.bind(this),\n onDragStartCallback: this.onDimDragStart.bind(this),\n }\n\n this.isReady = true;\n this.draw();\n\n resolve();\n })\n });\n }\n\n public unload(){\n this.scene.remove(\n this.dimensionPatiosPlanRight,\n this.dimensionPatiosFrontBottom, \n this.dimensionPatiosFrontRight, \n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom, \n this.dimensionPatiosLeftRight,\n this.dimensionPatiosLeftLeft, \n this.dimensionPatiosPlanBottom,\n this.dimensionPlanMiddle,\n this.dimensionPlanMidleLeft,\n this.dimensionPatiosLowerHeightDim,\n this.dimensionPatiosHigherHeightDim,\n );\n }\n \n public draw(){\n if (!this.isReady) {\n return;\n }\n // this.dimensionPatiosPlanBottom.children = [];\n // this.dimensionPatiosPlanRight.children = [];\n this.dimensionPatiosLowerHeightDim.children = this.dimensionPatiosLowerHeightDim.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.LOWER_HEIGHT_DIM\n );\n this.dimensionPatiosHigherHeightDim.children = this.dimensionPatiosHigherHeightDim.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.BRAKET_HEIGHT_DIM\n );\n this.dimensionPatiosPlanBottom.children = this.dimensionPatiosPlanBottom.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.LEFT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.RIGHT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY\n );\n this.dimensionPatiosPlanRight.children = this.dimensionPatiosPlanRight.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.MULTI_SPAN\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.FRONT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.BACK_OVERHANG\n );\n this.dimensionPatiosFrontBottom.children = [];\n this.dimensionPatiosFrontRight.children = [];\n this.dimensionPatiosLeftBottom.children = [];\n this.dimensionPatiosLeftRight.children = [];\n this.dimensionPatiosLeftLeft.children = [];\n this.dimensionPatiosRightBottom.children = [];\n this.dimensionPatiosRightLeft.children = [];\n this.dimensionPatiosRightRight.children = [];\n this.dimensionPlanMiddle.children = [];\n this.dimensionPlanMidleLeft.children = [];\n \n this.totalBaySize = 0;\n for(let b of this.APP.dialogEditBay.listBay){\n this.totalBaySize += b.value;\n }\n\n this.drawDimensionLowerHeightDim();\n this.drawDimensionHigherHeightDim();\n\n this.drawDimensionPatiosPlanBottom();\n this.drawDimensionPatiosPlanRight();\n\n this.drawDimensionPatiosFrontBottom();\n this.drawDimensionPatiosFrontRight();\n\n this.drawDimensionPatiosLeftBottom();\n this.drawDimensionPatiosLeftRight();\n this.drawDimensionPatiosLeftLeft();\n\n this.drawDimensionPatiosRightBottom();\n this.drawDimensionPatiosRightLeft();\n this.drawDimensionPatiosRightRight();\n\n this.drawDimensionMidle();\n this.drawDimensionMidleLeft();\n\n this.APP.dimensionManager.draw();\n }\n\n private drawDimensionLowerHeightDim(){\n const frontPostHeight = this.utils.getHeightByAngle(UI.height - this.MANAGER.columnAndPurlinManager.geo_superiorBeam.height, UI.span + UI.multiSpan, UI.patiosPitch, -1)\n const offsetZFrontPos = UI.span + UI.multiSpan + FIT_DIMENSION;\n\n this.dimensionPatiosLowerHeightDim.position.set(0, frontPostHeight / 2, offsetZFrontPos);\n\n let textStr = this.utils.getDimensionValue(frontPostHeight);\n let options : AddDimensionOptions = {\n ... this.options,\n lineLength: frontPostHeight,\n container: this.dimensionPatiosLowerHeightDim,\n views: [],\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, 200, 0),\n labelType: DIMENSION_LABEL_TYPE.LOWER_HEIGHT_DIM,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [] },\n allowDrag: false\n }\n let dimBay = this.dimensionPatiosLowerHeightDim.children.find(el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.LOWER_HEIGHT_DIM\n ) as Dimension;\n if(!dimBay){\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n\n private drawDimensionHigherHeightDim(){\n const backPostHeight = UI.height - this.MANAGER.columnAndPurlinManager.geo_superiorBeam.height\n const offsetZBackPos = - FIT_DIMENSION;\n\n this.dimensionPatiosHigherHeightDim.position.set(0, backPostHeight / 2, offsetZBackPos);\n\n let textStr = this.utils.getDimensionValue(backPostHeight);\n let options : AddDimensionOptions = {\n ... this.options,\n lineLength: backPostHeight,\n container: this.dimensionPatiosHigherHeightDim,\n views: [],\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, 200, 0),\n textRotation: new Vector3(Math.PI, 0, 0),\n labelType: DIMENSION_LABEL_TYPE.HIGHER_HEIGHT_DIM,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [] },\n allowDrag: false\n }\n let dimBay = this.dimensionPatiosHigherHeightDim.children.find(el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.HIGHER_HEIGHT_DIM\n ) as Dimension;\n if(!dimBay){\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n\n private drawDimensionMidleLeft() {\n let offsetX = this.totalBaySize / 2 + this.APP.patiosManager.patiosGroup.position.x;\n let offsetZ = this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue / 2 - this.APP.sldExistingWidth1.currentValue / 2;\n let origin = new Vector3(0, 0, 0);\n let head = new Vector3(0, 0, 1000);\n let hand1 = new Vector3(-50, 0, 950);\n let hand2 = new Vector3(50, 0, 950);\n\n //arrow\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n //let material = new LineBasicMaterial({ color: 0x0000ff });\n let geoLine = new Geometry();\n geoLine.vertices.push(origin);\n geoLine.vertices.push(head);\n\n geoLine.vertices.push(head);\n geoLine.vertices.push(hand1);\n\n geoLine.vertices.push(hand1);\n geoLine.vertices.push(hand2);\n\n geoLine.vertices.push(hand2);\n geoLine.vertices.push(head);\n let dim = new Line(geoLine);\n dim.userData = { type: \"Arrow\", views: views };\n\n //text of degree\n let textStr = \"Panel direction\";\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, 0, 0) };\n //text.position.setZ(-100);\n text.position.setX(100);\n\n dim.visible = false;\n text.visible = false;\n\n this.dimensionPlanMidleLeft.add(dim);\n this.dimensionPlanMidleLeft.add(text);\n\n\n if (this.APP.sltExistingType.currentValue == 2) {\n text.position.set(-100, 0, 1000);\n this.dimensionPlanMidleLeft.rotation.set(0, -Math.PI / 2, 0);\n this.dimensionPlanMidleLeft.position.set(offsetX, 0, offsetZ);\n }\n else {\n this.dimensionPlanMidleLeft.rotation.set(0, Math.PI / 2, 0);\n this.dimensionPlanMidleLeft.position.set(-offsetX, 0, offsetZ);\n }\n }\n private drawDimensionMidle() {\n let offsetZ = this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue / 2;\n let origin = new Vector3(0, 0, 0);\n let head = new Vector3(0, 0, 1000);\n let hand1 = new Vector3(-50, 0, 950);\n let hand2 = new Vector3(50, 0, 950);\n\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n let material = new LineBasicMaterial({ color: 0x0000ff });\n let geoLine = new Geometry();\n geoLine.vertices.push(origin);\n geoLine.vertices.push(head);\n\n geoLine.vertices.push(head);\n geoLine.vertices.push(hand1);\n\n geoLine.vertices.push(hand1);\n geoLine.vertices.push(hand2);\n\n geoLine.vertices.push(hand2);\n geoLine.vertices.push(head);\n let dim = new Line(geoLine, material);\n dim.userData = { type: \"Arrow\", views: views };\n\n //text of degree\n let textStr = this.APP.sltRoofPitch.currentValue + ' degree';\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n \n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, Math.PI / 2, 0) };\n text.position.setZ(900);\n text.position.setX(200);\n\n dim.visible = false;\n text.visible = false;\n\n this.dimensionPlanMiddle.add(dim);\n this.dimensionPlanMiddle.add(text);\n\n this.dimensionPlanMiddle.position.set(0, 0, offsetZ);\n\n //console.log(text);\n }\n\n private drawDimensionPatiosPlanBottom(){\n let offsetX = -this.totalBaySize/2;\n let offsetZ = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance2;\n\n let views = [ { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosPlanBottom.position.setZ(offsetZ);\n\n this.dimensionPatiosPlanBottom.children = this.dimensionPatiosPlanBottom.children.filter(el => \n el.userData?.groupType != DIMENSION_LABEL_TYPE.BAY\n || (el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY && el.userData?.bayNum < HomeComponent.ins.dialogEditBay.listBay.length)\n );\n \n for(let i = 0; i <= this.APP.dialogEditBay.listBay.length; i++){\n let b: IBay = {index: 0, value: 0, isCut: false};\n if(i < this.APP.dialogEditBay.listBay.length){\n b = this.APP.dialogEditBay.listBay[i];\n }\n\n if(i < this.APP.dialogEditBay.listBay.length){\n let textStr = this.utils.getDimensionValue(b.value);\n let options : AddDimensionOptions = {... this.options,\n lineLength: b.value,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(offsetX + b.value / 2, 0, 0),\n textPos: new Vector3(offsetX + b.value / 2, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.BAY,\n bayNum: i,\n }\n let dimBay = this.dimensionPatiosPlanBottom.children.find(el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY \n && el.userData?.bayNum == i\n ) as Dimension;\n if(!dimBay){\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n offsetX += b.value;\n }\n\n //Left over hang\n this.addOverhang(this.dimensionPatiosPlanBottom, offsetX, this.APP.sldLeftOverhang.currentValue, views, \"Left\", 0, \"z\", DIMENSION_LABEL_TYPE.LEFT_OVERHANG);\n this.addOverhang(this.dimensionPatiosPlanBottom, offsetX, this.APP.sldRightOverhang.currentValue, views, \"Right\", 0, \"z\", DIMENSION_LABEL_TYPE.RIGHT_OVERHANG);\n }\n onDimDrag(event){\n this.utils.handlerDimDragEvent(event, this.startPos, this.startMatrix, this.startBayLength);\n this.startPos = event.object.position.clone();\n }\n onDimDragStart(event){\n this.startPos = event.object.position.clone();\n this.startMatrix = event.object.matrixWorld.clone();\n if(event.object.userData?.dimType === DIMENSION_LABEL_TYPE.BAY){\n let bayNum = event.object.userData.bayNum;\n this.startBayLength = UI.listBay[+bayNum].value;\n }\n }\n private drawDimensionPatiosPlanRight(){\n \n let views = [ { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS } ];\n let offsetDimensionZ = this.APP.sldSpan.currentValue/2;\n \n\n let _dimensionDistane = this.dimensionDistance2;\n // if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n // if(this.APP.sldExistingWidth1.currentValue > 0){\n // _dimensionDistane = this.dimensionDistance;\n // }\n // }\n\n let offsetDimensionX = this.totalBaySize/2 + this.APP.sldRightOverhang.currentValue + this.APP.patiosManager.patiosGroup.position.x + _dimensionDistane;\n // if(this.APP.sldExistingLength.currentValue/2 > this.totalBaySize/2){\n // offsetDimensionX = this.APP.sldExistingLength.currentValue/2 + _dimensionDistane;\n // }\n \n // if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n // offsetDimensionX += this.APP.sldExistingLength2.currentValue;\n // }\n\n this.dimensionPatiosPlanRight.position.set(offsetDimensionX, 0, offsetDimensionZ);\n\n let textStr = this.utils.getDimensionValue(this.APP.sldSpan.currentValue);\n\n let options : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldSpan.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.SPAN,\n hasTextClone: false,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneRotation: new Vector3(0, Math.PI, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, -Math.PI, 0),\n fitZ: -10\n }\n let dimSpan = this.dimensionPatiosPlanRight.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN) as Dimension;\n if(!dimSpan){\n new Dimension(options);\n } else {\n dimSpan.update(options);\n }\n\n if(this.APP.sldMultiSpan.currentValue > 0){\n let offsetX = this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue;\n // - this.APP.existingWallManager.geo_existingWallL1.width \n // - this.APP.eaveManager.backOverhang;\n\n let optionsMul : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldMultiSpan.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue / 2, 0, 0),\n textPos: new Vector3(this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue / 2, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.MULTI_SPAN,\n hasTextClone: false,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneRotation: new Vector3(0, Math.PI, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, -Math.PI, 0),\n fitZ: -10\n }\n let dimMul = this.dimensionPatiosPlanRight.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.MULTI_SPAN) as Dimension;\n if(!dimMul){\n new Dimension(optionsMul);\n } else {\n dimMul.update(optionsMul);\n }\n } else {\n this.dimensionPatiosPlanRight.children = this.dimensionPatiosPlanRight.children.filter(el => el.userData?.groupType != DIMENSION_LABEL_TYPE.MULTI_SPAN)\n }\n\n let offsetRight = this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue;\n let offsetLeft = this.APP.sldSpan.currentValue / 2;// + this.APP.sldMultiSpan.currentValue;\n\n this.addOverhang(this.dimensionPatiosPlanRight, offsetRight, this.APP.sldFrontOverhang.currentValue, views, \"Right\", Math.PI, \"y\", DIMENSION_LABEL_TYPE.FRONT_OVERHANG);\n this.addOverhang(this.dimensionPatiosPlanRight, offsetLeft, this.APP.sldBackOverhang.currentValue, views, \"Left\", Math.PI, \"y\", DIMENSION_LABEL_TYPE.BACK_OVERHANG);\n\n }\n private drawDimensionPatiosFrontBottom(){\n let dimOffsetY = -this.dimensionDistance2;\n this.dimensionPatiosFrontBottom.position.set(0,dimOffsetY,0);\n\n let views = [ { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosPlanBottom.children.forEach( groupDim => {\n groupDim.children.filter(c => c.userData.subtype != GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT).forEach(e => {\n let dim = e.clone();\n dim.userData['views'] = views;\n if(dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n dim.rotation.set(0,Math.PI,0);\n dim.userData['rotation'] = new Vector3(0,0,0);\n }\n this.dimensionPatiosFrontBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosFrontRight(){\n let views = [ { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS } ];\n\n let _dimensionDistane = this.dimensionDistance2;\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n if(this.APP.sldExistingWidth1.currentValue > 0){\n _dimensionDistane = this.dimensionDistance;\n }\n }\n let height = this.utils.getHeightByAngle(this.APP.sldBuildingHeight.currentValue, this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue, this.APP.sltRoofPitch.currentValue, -1);\n let dimOffsetX = this.totalBaySize/2 + this.APP.patiosManager.patiosGroup.position.x + _dimensionDistane;\n let dimOffsetY = height/2;\n if(this.APP.sldExistingLength.currentValue/2 > this.totalBaySize/2){\n dimOffsetX = this.APP.sldExistingLength.currentValue/2 + _dimensionDistane;\n }\n \n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n dimOffsetX += this.APP.sldExistingLength2.currentValue;\n }\n\n this.dimensionPatiosFrontRight.position.set(dimOffsetX,dimOffsetY,0);\n \n\n //--------\n let scaleLength = height/this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-dimOffsetY);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(dimOffsetY);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(height);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0,0,-Math.PI/2) };\n text.position.set(0,200,0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosFrontRight.add(line, cap1, cap2, text);\n }\n private drawDimensionPatiosLeftBottom(){\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z;\n \n this.dimensionPatiosLeftBottom.position.set(0,dimOffsetY,dimOffsetZ);\n\n let views = [ \n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n this.dimensionPatiosPlanRight.children.forEach( groupDim => {\n groupDim.children.forEach(e => {\n let dim = e.clone();\n dim.userData['views'] = views;\n if(dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n dim.rotation.set(0,0,0);\n dim.userData['views'] = [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }];\n dim.userData['rotation'] = new Vector3(0,0,0);\n }\n this.dimensionPatiosLeftBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosLeftRight(){\n let dimOffsetY = this.utils.getHeightByAngle(this.APP.sldBuildingHeight.currentValue, this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue, this.APP.sltRoofPitch.currentValue, -1);\n let dimOffsetZ = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance2;\n \n\n this.dimensionPatiosLeftRight.position.set(0,dimOffsetY/2,dimOffsetZ);\n\n let views = [ \n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n \n let scaleLength = dimOffsetY / this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-dimOffsetY/2);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(dimOffsetY/2);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(dimOffsetY);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }], rotation: new Vector3(-Math.PI / 2, 0, 0) };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosLeftRight.add(line, cap1, cap2, text);\n }\n private drawDimensionPatiosLeftLeft() {\n let dimOffsetY = this.APP.sldBuildingHeight.currentValue;\n let dimOffsetZ = this.APP.sldBackOverhang.currentValue + 500;\n\n this.dimensionPatiosLeftLeft.position.set(0, dimOffsetY / 2, -dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n let offsetLength = dimOffsetY;\n let scaleLength = offsetLength / this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength / 2);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength / 2);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }], rotation: new Vector3(Math.PI / 2, 0, 0) };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosLeftLeft.add(line, cap1, cap2, text);\n\n //this.dimensionPatiosFrontRight.children.forEach(e => {\n // let dim = e.clone();\n // dim.userData['views'] = views;\n // if(dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n // dim.userData['views'] = [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }];\n // dim.userData['rotation'] = new Vector3(-Math.PI/2,0,0);\n // }\n // this.dimensionPatiosLeftRight.add(dim);\n //});\n }\n private drawDimensionPatiosRightBottom(){\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z;\n \n this.dimensionPatiosRightBottom.position.set(0,dimOffsetY,dimOffsetZ);\n\n let views = [ { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosPlanRight.children.forEach(groupDim => {\n groupDim.children.forEach(e => {\n if(e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n let dim = e.clone();\n dim.userData['views'] = views;\n dim.userData['rotation'] = new Vector3(0,0,0);\n \n this.dimensionPatiosRightBottom.add(dim);\n }\n });\n })\n }\n private drawDimensionPatiosRightLeft(){\n let dimOffsetY = this.utils.getHeightByAngle(this.APP.sldBuildingHeight.currentValue, this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue, this.APP.sltRoofPitch.currentValue, -1);\n let dimOffsetZ = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance2;\n\n this.dimensionPatiosRightLeft.position.set(0,dimOffsetY/2,dimOffsetZ);\n\n let views = [ { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosLeftRight.children.forEach(e => {\n if(e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n let dim = e.clone();\n dim.userData['views'] = views;\n dim.userData['rotation'] = new Vector3(Math.PI/2,0,0);\n dim.rotation.set(0,Math.PI,0);\n this.dimensionPatiosRightLeft.add(dim);\n }\n });\n }\n private drawDimensionPatiosRightRight(){\n let dimOffsetY = this.APP.sldBuildingHeight.currentValue;\n let dimOffsetZ = this.APP.sldBackOverhang.currentValue + 500;\n \n this.dimensionPatiosRightRight.position.set(0,dimOffsetY/2,-dimOffsetZ);\n\n let views = [ { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosLeftLeft.children.forEach(e => {\n if(e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){ \n let dim = e.clone();\n dim.userData['views'] = views;\n dim.userData['rotation'] = new Vector3(-Math.PI/2,0,0);\n dim.rotation.set(0,Math.PI,0);\n dim.position.set(dim.position.x, -dim.position.y, dim.position.z);\n this.dimensionPatiosRightRight.add(dim);\n }\n });\n }\n \n \n private addOverhang(groupDim: Object3D, offset: number, overhangValue: number, views: any, side: string, rotateText: number, axis: string, labelType?: string) {\n if (overhangValue == 0){\n let dim = groupDim.children.find(el => el.userData?.groupType == labelType) as Dimension;\n if(dim){\n groupDim.remove(dim)\n }\n return;\n }\n\n let textStr = this.utils.getDimensionValue(overhangValue);\n\n let textRotation = new Vector3();\n let textUserData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, position: { overhang: true }};\n if (axis === \"z\") {\n textRotation.setZ(rotateText);\n textUserData['rotation'] = new Vector3(0, 0, -rotateText / 2);\n textUserData['position']['bottom'] = true;\n }\n else if (axis === \"y\") {\n textRotation.setY(rotateText);\n textUserData['rotation'] = new Vector3(0, -rotateText / 2, 0);\n }\n else if (axis === \"x\") {\n textRotation.setX(rotateText);\n textUserData['rotation'] = new Vector3(-rotateText / 2, 0, 0);\n }\n\n let linePos = new Vector3();\n if (side === \"Left\") {\n linePos.setX(-offset - overhangValue / 2);\n }\n else if (side === \"Right\") {\n linePos.setX(offset + overhangValue / 2);\n }\n let fitZ = 0;\n if(labelType){\n if(axis === 'z'){\n fitZ = 10;\n } else if(axis === 'y'){\n fitZ = -10;\n }\n }\n let options : AddDimensionOptions = {... this.options,\n lineLength: overhangValue,\n container: groupDim,\n views: views,\n linePos: linePos,\n textPos: linePos.clone().setY(linePos.y - 200),\n labelType: labelType ? labelType : null,\n fitZ: fitZ,\n textRotation: textRotation,\n textUserData: textUserData\n }\n let dim = groupDim.children.find(el => el.userData?.groupType == labelType) as Dimension;\n if(!dim){\n new Dimension(options);\n } else {\n dim.update(options)\n }\n }\n private getTextCover(textGeo: TextBufferGeometry, labelType: string, pos: Vector3, fitZ = 0, bayNum?: number){\n let textSize = new Vector3();\n textGeo.boundingBox.getSize(textSize)\n\n let textCover = new Mesh(new BoxBufferGeometry(textSize.x, textSize.y, textSize.z))\n textCover.position.set(pos.x , pos.y, pos.z + fitZ);\n textCover.userData = { type: GEOMETRY_TYPE.TEXT_COVER, labelType };\n if(bayNum !== undefined){\n textCover.userData['bayNum'] = bayNum;\n }\n textCover.material['opacity'] = 0;\n textCover.material['transparent'] = true;\n\n return textCover\n }\n\n public getOutlines(): Printing2DGeometry{\n let lsGeometries: Printing2DLine[] = [];\n let lsText: Print2DText[] = [];\n \n for(let dim of [\n ...this.dimensionPatiosPlanBottom.children,\n ...this.dimensionPatiosPlanRight.children,\n ...this.dimensionPatiosFrontBottom.children,\n ...this.dimensionPatiosFrontRight.children,\n ...this.dimensionPatiosLeftBottom.children,\n ...this.dimensionPatiosLeftRight.children,\n ...this.dimensionPatiosLeftLeft.children,\n ...this.dimensionPatiosRightBottom.children,\n ...this.dimensionPatiosRightLeft.children,\n ...this.dimensionPatiosRightRight.children,\n ...this.dimensionPlanMiddle.children,\n ...this.dimensionPlanMidleLeft.children\n ]){\n if(!dim.userData.views){\n console.log(\"TEXT NO VIEW\", dim);\n continue;\n }\n \n if(dim.type == 'Group'){\n dim.children.forEach(el => {\n el.updateMatrix();\n let _clone = el.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(el.matrix));\n let _box = new Box3().setFromObject(_clone);\n \n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n \n el.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(el.matrixWorld);\n \n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(el.matrixWorld);\n \n let textRotation = el.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, el, pos, textRotation, points)\n })\n } else{\n dim.updateMatrix();\n let _clone = dim.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(dim.matrix));\n let _box = new Box3().setFromObject(_clone);\n \n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n \n dim.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(dim.matrixWorld);\n \n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(dim.matrixWorld);\n \n let textRotation = dim.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, dim, pos, textRotation, points)\n }\n }\n \n return { lines: lsGeometries, texts: lsText };\n }\n private getDimInfo(lsGeometries: Printing2DLine[], lsText: Print2DText[], dim: Object3D, pos: Vector3, textRotation: Vector3, points: Vector3[]){\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && dim.userData.views && dim.userData.value) {\n let box = new Box3().setFromObject(dim.parent);\n let startEnd = this.utils.getStartEndPoint(box);\n let line = new Line3(startEnd[0], startEnd[1]);\n \n let projectPoint = new Vector3();\n line.closestPointToPoint(pos, true, projectPoint);\n let _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(10));\n \n if(dim.userData.position?.bottom){\n if(dim.userData.position?.overhang){\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(180));\n }\n else{\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(120));\n }\n }\n else{\n if(dim.userData.position?.overhang){\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(100));\n }\n }\n \n let p = new Vector3().applyMatrix4(dim.matrixWorld);\n \n lsText.push({\n value: dim.userData.value,\n position: p,\n rotation: textRotation,\n views: dim.userData.views\n });\n \n \n }\n else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_LINE) {\n // this.scene.add(new LineSegments(new Geometry().setFromPoints(points), new LineBasicMaterial({color: new Color('red')})));\n \n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_CAP) {\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n else if (dim.userData.type == \"Arrow\") {\n let geo = ((dim as Line).geometry as Geometry).clone();\n geo.applyMatrix4(dim.matrixWorld);\n lsGeometries.push({\n vertices: geo.vertices,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n }\n public destroy(): void {\n this.unregisterEvent();\n this.unload();\n }\n\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldFrontOverhang,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sldExistingWallHeight,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch\n ];\n this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId)); \n }\n private unregisterEvent(): void{\n this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n this.controlsToRegisterEvent = undefined;\n }\n\n\n public uiChanged(preVal: number, curVal: number): void {\n this.draw();\n }\n}\n","import { HomeComponent as AppComponent } from \"../../containers/home/home.component\";\nimport { ColumnAndPurlinManager } from \"./column-and-purlin.manager\";\nimport { RoofManager } from \"./roof.manager\";\nimport { PatiosManager } from \"../patios.manager\";\nimport { Printing2DGeometry } from \"../models\";\nimport { Group, Box3 } from \"three\";\nimport { GEOMETRY_CATEGORY } from \"src/app/app.config\";\nimport { DimensionManager } from \"./dimension.manager\";\n\nexport class PatiosFreeStandingManager implements PatiosManager {\n patiosGroup: Group;\n public boundingBox: Box3;\n public columnAndPurlinManager: ColumnAndPurlinManager;\n public roofManager: RoofManager;\n public dimesionManager: DimensionManager;\n public cutoutCondition: boolean;\n public get rakecutCondition(): boolean {\n return true;\n }\n public ignoreBayEvent: boolean = false;\n public patiosWidth: number;\n public patiosLength: number;\n public firstLoad = true;\n private controlsToRegisterEvent: Array;\n private APP: AppComponent;\n private updateEventHandle: any;\n\n constructor(app: AppComponent) {\n this.APP = app;\n this.patiosGroup = new Group();\n this.patiosGroup.userData = { category: GEOMETRY_CATEGORY.PATIOS };\n app.scene.add(this.patiosGroup);\n\n this.roofManager = new RoofManager(app, this);\n this.columnAndPurlinManager = new ColumnAndPurlinManager(app, this);\n this.dimesionManager = new DimensionManager(app, this);\n\n this.registerEvents();\n }\n\n load(): Promise {\n return Promise.all([\n this.roofManager.optimize(),\n this.columnAndPurlinManager.optimize(),\n this.dimesionManager.optimize(),\n ]).then(() => {\n this.roofManager.load();\n this.columnAndPurlinManager.load();\n this.dimesionManager.load();\n });\n }\n loadBracket(bracketQuantity: number): void {}\n loadBracketCutout(bracketQuantity: number): void {}\n loadSideGableBracket(bracketQuantity: number): void {}\n enableCutout(enable: boolean) {}\n changeToExistingTypeBoth() {}\n getOutlines(): Printing2DGeometry {\n let dimensionOutline = this.dimesionManager.getOutlines();\n return {\n lines: [\n ...this.columnAndPurlinManager.getSection().lines,\n ...this.roofManager.getOutLines().lines,\n ...dimensionOutline.lines,\n ],\n texts: dimensionOutline.texts,\n };\n }\n public destroy(): void {\n this.columnAndPurlinManager.destroy();\n this.roofManager.destroy();\n this.dimesionManager.destroy();\n this.unRegisterEvent();\n }\n registerEvents(): void {\n this.updateEventHandle = this.update.bind(this);\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldBuildingHeight,\n this.APP.sltExistingType,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldFlyOverBracketHeight,\n this.APP.sldBackOverhang,\n this.APP.sldFrontOverhang,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sldExistingWallHeight,\n this.APP.sltBeamLayoutShow,\n this.APP.sltPanelDirection,\n this.APP.sltPanelDirectionShow,\n this.APP.btnTurnOnPanel,\n ];\n this.controlsToRegisterEvent.forEach((c) => {\n c.addAction(this.updateEventHandle);\n });\n }\n unRegisterEvent(): void {\n this.controlsToRegisterEvent.forEach((c) =>\n c.removeAction(this.updateEventHandle)\n );\n }\n update(preVal: number, curVal: number): void {\n this.patiosGroup.position.setX(0);\n Promise.all([\n this.roofManager.load(),\n this.columnAndPurlinManager.load(),\n ]).then(() => {\n // this.boundingBox = this.APP.utils.getObjectsBoundingBox(\n // this.patiosGroup.children.filter(c => c.userData.type != GEOMETRY_TYPE.DIMENSION && c.userData.type != GEOMETRY_TYPE.ROOF_PATIOS)\n // );\n //this.boundingBox = this.getPatiosBox();\n this.dimesionManager.draw();\n });\n }\n}\n","import { Scene, Mesh, Vector3, Material, Plane, Group, PlaneHelper, BufferGeometry, Geometry, LineSegments, Color } from \"three\";\nimport { Util } from \"../utils\";\nimport { CONFIG as env, GEOMETRY_TYPE, GEOMETRY_CATEGORY } from '../../app.config';\nimport { HomeComponent as AppComponent } from '../../containers/home/home.component';\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport { GeometryInfo, Printing2DGeometry, Printing2DLine, Printing2DGeometryType, Print2DView, ViewType, LineType } from '../models';\nimport { PatiosFreeStandingManager } from '.';\nimport { PANEL_DIRECTION } from 'src/app/app.constants';\nimport { UI } from \"../ui\";\n\nexport class RoofManager {\n private scene: Group;\n private APP: AppComponent;\n private MANAGER: PatiosFreeStandingManager;\n private material: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private geo_RoofPanel: GeometryInfo;\n private geo_roofPanelBase: GeometryInfo;\n private geo_roofPanelBargeCappingLeft: GeometryInfo;\n private geo_roofPanelBargeCappingRight: GeometryInfo;\n private geo_roofPanelBargeCappingBack: GeometryInfo;\n private geo_gutterBack: GeometryInfo;\n private zFlashingGeo: GeometryInfo;\n private geo_gutterCap: GeometryInfo;\n\n private roofGroup: Group;\n\n private eventHandleId: any;\n\n private totalBaySize: number;\n\n private objectSizeChangedHandle: any;\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n\n\n constructor(app: AppComponent, freeStandingManager: PatiosFreeStandingManager) {\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.APP = app;\n this.MANAGER = freeStandingManager;\n this.scene = new Group();\n freeStandingManager.patiosGroup.add(this.scene)\n this.material = MaterialManager.Instance().ROOF;\n\n this.registerEvent();\n }\n \n \n public optimize() : Promise{\n return new Promise((resolve, reject) => {\n this.geo_RoofPanel = this.geometryManager.getRoofSheetPanel();\n this.geo_RoofPanel.geometry\n .translate(this.geo_RoofPanel.width/2+2,this.geo_RoofPanel.height/2 -1,this.geo_RoofPanel.length/2);\n \n this.geo_roofPanelBase = this.geometryManager.getRoofBase();\n this.geo_roofPanelBase.geometry\n .translate(this.geo_roofPanelBase.width/2,\n this.geo_roofPanelBase.height/2,\n this.geo_roofPanelBase.length / 2);\n\n this.zFlashingGeo = this.geometryManager.getZFlashing();\n this.zFlashingGeo.geometry.translate(0, -3, 0);\n \n //Barge capping\n this.geo_roofPanelBargeCappingLeft = this.geometryManager.getBarge();\n this.geo_roofPanelBargeCappingLeft.geometry\n .rotateY(Math.PI)\n .translate(this.geo_roofPanelBargeCappingLeft.width/2 - 3,this.geo_roofPanelBargeCappingLeft.height/2 - (this.APP.sltDripBarge.currentValue ? 9 : 1),this.geo_roofPanelBargeCappingLeft.length/2);\n\n this.geo_roofPanelBargeCappingRight = this.geometryManager.getBarge();\n this.geo_roofPanelBargeCappingRight.geometry\n .translate(-this.geo_roofPanelBargeCappingRight.width/2 + 3,this.geo_roofPanelBargeCappingRight.height/2 - (this.APP.sltDripBarge.currentValue ? 9 : 1),this.geo_roofPanelBargeCappingRight.length/2);\n\n this.geo_roofPanelBargeCappingBack = this.geometryManager.getBarge();\n this.geo_roofPanelBargeCappingBack.geometry\n .rotateY(Math.PI/2)\n .translate(this.geo_roofPanelBargeCappingBack.length/2,this.geo_roofPanelBargeCappingBack.height/2 - (this.APP.sltDripBarge.currentValue ? 9 : 1),this.geo_roofPanelBargeCappingBack.width/2 - 3);\n\n //Gutter\n this.geo_gutterBack = this.geometryManager.getGutter();\n this.geo_gutterBack.geometry\n .rotateY(-Math.PI/2)\n .translate(this.geo_gutterBack.length / 2, -20, this.geo_gutterBack.width / 2);\n\n //Gutter cap\n this.geo_gutterCap = this.geometryManager.getGuterEndCap();\n this.geo_gutterCap.geometry\n .rotateY(-Math.PI / 2)\n .translate(0, -20, this.geo_gutterCap.length / 2);\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PATIOS));\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.SHEET_OUTLINE));\n\n //test\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == 'HELPER'));\n \n this.totalBaySize = 0;\n for(let b of this.APP.dialogEditBay.listBay){\n this.totalBaySize += b.value;\n }\n \n this.addRoof();\n\n let offsetLeft = this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue - this.MANAGER.patiosGroup.position.x;\n let offsetRight = this.totalBaySize/2 + this.APP.sldRightOverhang.currentValue + this.MANAGER.patiosGroup.position.x;\n let clipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let clipingPlaneRight = new Plane( new Vector3( -1, 0, 0 ), offsetRight );\n \n this.material.clippingPlanes = [clipingPlaneLeft, clipingPlaneRight];\n MaterialManager.Instance().ROOF_BASE.clippingPlanes = [clipingPlaneLeft, clipingPlaneRight];\n\n // this.material.clippingPlanes = [];\n // MaterialManager.Instance().ROOF_BASE.clippingPlanes = [];\n\n let width = this.totalBaySize + this.APP.sldLeftOverhang.currentValue + this.APP.sldRightOverhang.currentValue;\n let roofSheetingCount = Math.ceil(width/this.geo_RoofPanel.width);\n let offsetX = -(this.totalBaySize/2 + this.APP.sldLeftOverhang.currentValue);\n\n //panel direction\n let panelDirectionOfset = 1;\n if(this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT){\n offsetX = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue - this.geo_RoofPanel.width;\n panelDirectionOfset = -1;\n }\n else if(this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.LEFT_TO_RIGHT){\n offsetX = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n }\n\n // let helper = new PlaneHelper(clipingPlaneRight, 10000, 0xffff00);\n // helper.userData = { type: 'HELPER' };\n // this.APP.scene.add(helper);\n\n const OFFSET_TOLE_AND_BASE = 10\n\n for (let index = 0; index < roofSheetingCount; index++) {\n let last = index == roofSheetingCount - 1;\n \n this.addRoofSheeting(offsetX + OFFSET_TOLE_AND_BASE);\n this.addRoofSheetingBase(offsetX, last);\n\n offsetX += this.geo_RoofPanel.width * panelDirectionOfset;\n }\n\n this.addZFlashing();\n this.addBargeCapping();\n this.addGutter();\n //this.getOutLines();\n this.showPanelOutline();\n\n this.scene.visible = UI.showRoof\n\n resolve();\n });\n }\n public getOutLines(): Printing2DGeometry{\n \n let objs = this.roofGroup.children.filter(o => \n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL \n || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE \n );\n\n let gutterObjs = this.roofGroup.children.find(o => o.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS).children;\n objs = [...objs, ...gutterObjs];\n\n let lsGeometries: Printing2DLine[] = [];\n\n let offsetLeft = this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue - this.MANAGER.patiosGroup.position.x;\n let offsetRight = this.totalBaySize/2 + this.APP.sldRightOverhang.currentValue + this.MANAGER.patiosGroup.position.x;\n let roofClipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let roofClipingPlane = new Plane( new Vector3( -1, 0, 0 ), offsetRight );\n\n for(let o of objs){ \n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale((o as Mesh), 60);\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n outlineGeo.translate(0,5000,0); \n\n if(o.userData.type == GEOMETRY_TYPE.ROOF_PANEL || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE){\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlane);\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n }\n \n // var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"SHEETING_OUTLINE\"};\n // this.APP.scene.add( line );\n\n let simplifiedGeo = this.simplifyGeo(outlineGeo);\n lsGeometries.push({ \n objectType: o.userData.type,\n vertices: simplifiedGeo.vertices, \n views: o.userData.views\n });\n\n // var line = new LineSegments( simplifiedGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"SHEETING_OUTLINE\"};\n // this.APP.scene.add( line );\n }\n\n lsGeometries.push({\n objectType: GEOMETRY_TYPE.ROOF_COVER,\n vertices: this.makeRoofPolygon(),\n color: this.utils.convertHexColorToRgb(`#${new Color(UI.panelColor).getHexString()}`),\n views: [\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ]\n });\n\n return { lines: lsGeometries, texts: [] };\n }\n makeRoofPolygon() {\n const polygon = this.utils.getRoofCoverPolygonForLRRoof()\n this.roofGroup.updateWorldMatrix(true, true)\n return polygon.map(el => (el as Vector3).applyMatrix4(this.roofGroup.matrixWorld))\n }\n public showPanelOutline(){\n if(this.APP.sltPanelDirectionShow.currentValue == false)\n return;\n \n let objs = this.roofGroup.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n );\n \n let offsetLeft = this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue - this.MANAGER.patiosGroup.position.x;\n let offsetRight = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue + this.MANAGER.patiosGroup.position.x;\n let roofClipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let roofClipingPlaneRight = new Plane(new Vector3(-1, 0, 0), offsetRight);\n \n \n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale((o as Mesh), 60);\n \n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n //outlineGeo.translate(0, 5000, 0);\n \n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE) {\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneRight);\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n }\n \n var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n line.userData = {type: GEOMETRY_TYPE.SHEET_OUTLINE};\n this.APP.scene.add( line );\n }\n }\n public simplifyGeo(geo: BufferGeometry): Geometry{\n let simplifiedGeo = new Geometry();\n let vertices = geo.getAttribute('position').array;\n for(let i = 0; i < vertices.length; i+=3){\n simplifiedGeo.vertices.push(new Vector3(vertices[i], vertices[i+1] - 5000, vertices[i+2]));\n }\n return simplifiedGeo;\n } \n public addRoof(){\n this.roofGroup = null;\n this.roofGroup = new Group();\n this.roofGroup.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PATIOS };\n\n let offsetY = this.getRoofOffsetY();\n let offsetZ = -(this.APP.sldBackOverhang.currentValue);\n\n this.roofGroup.position.setY(offsetY);\n this.roofGroup.position.setZ(offsetZ);\n this.roofGroup.rotateX(this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue));\n\n this.scene.add(this.roofGroup);\n }\n public addRoofSheeting(offsetX: number){\n let mesh = new Mesh(this.geo_RoofPanel.geometry, this.material);\n\n let offsetSheet = 0;\n if(this.APP.sltRoofSheetingType.currentValue == 0 || this.APP.sltRoofSheetingType.currentValue == 1){\n offsetSheet = 30;\n }\n else{\n offsetSheet = 12;\n }\n \n let scaleZ = (this.APP.sldSpan.currentValue \n + this.APP.sldFrontOverhang.currentValue \n + this.APP.sldBackOverhang.currentValue\n + this.APP.sldMultiSpan.currentValue)/this.utils.cos(this.APP.sltRoofPitch.currentValue)/this.geo_RoofPanel.length;\n \n let offsetY = this.geo_roofPanelBase.height - offsetSheet;\n let offsetZ = 0;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setZ(scaleZ);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PANEL, views: views };\n \n this.roofGroup.add(mesh);\n }\n public addRoofSheetingBase(offsetX: number, isLast: boolean){\n let mesh: Mesh = new Mesh(this.geo_roofPanelBase.geometry, MaterialManager.Instance().ROOF_BASE);\n let scaleZ = (this.APP.sldSpan.currentValue\n + this.APP.sldFrontOverhang.currentValue\n + this.APP.sldBackOverhang.currentValue\n + this.APP.sldMultiSpan.currentValue - 60)/this.utils.cos(this.APP.sltRoofPitch.currentValue)/this.geo_roofPanelBase.length;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n mesh.position.set(offsetX + 10, 0, 0);\n mesh.scale.setZ(scaleZ);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PANEL_BASE, views: views };\n if(isLast){\n mesh.userData.last = true;\n }\n this.roofGroup.add(mesh);\n }\n private addBargeCapping(){\n let mesh: Mesh;\n\n let offsetLeft = this.totalBaySize/2 + this.APP.sldLeftOverhang.currentValue;\n let offsetRight = this.totalBaySize/2 + this.APP.sldRightOverhang.currentValue;\n\n let scaleX = (this.APP.sldLeftOverhang.currentValue \n + this.totalBaySize \n + this.APP.sldRightOverhang.currentValue)/this.geo_roofPanelBargeCappingBack.length;\n let scaleZ = (this.APP.sldSpan.currentValue \n + this.APP.sldFrontOverhang.currentValue \n + this.APP.sldBackOverhang.currentValue\n + this.APP.sldMultiSpan.currentValue)/this.utils.cos(this.APP.sltRoofPitch.currentValue)/this.geo_roofPanelBargeCappingLeft.length;\n\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n //left\n mesh = new Mesh(this.geo_roofPanelBargeCappingLeft.geometry, MaterialManager.Instance().BARGE);\n mesh.position.setX(-offsetLeft);\n mesh.scale.setZ(scaleZ);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroup.add(mesh);\n\n //right\n mesh = new Mesh(this.geo_roofPanelBargeCappingRight.geometry, MaterialManager.Instance().BARGE);\n mesh.position.setX(offsetRight);\n mesh.scale.setZ(scaleZ);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroup.add(mesh);\n\n //back\n mesh = new Mesh(this.geo_roofPanelBargeCappingBack.geometry, MaterialManager.Instance().BARGE); \n mesh.position.setX(-offsetLeft);\n mesh.scale.setX(scaleX);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroup.add(mesh);\n }\n\n public addGutter(){\n let mesh: Mesh;\n \n let offsetXL = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n let offsetXR = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n let offsetY = this.geo_roofPanelBase.height - 25;\n let offsetZ = (this.APP.sldFrontOverhang.currentValue \n + this.APP.sldMultiSpan.currentValue \n + this.APP.sldSpan.currentValue\n + this.APP.sldBackOverhang.currentValue\n - 50)/this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n let scaleX = (this.totalBaySize + this.APP.sldLeftOverhang.currentValue + this.APP.sldRightOverhang.currentValue)/this.geo_gutterBack.length;\n \n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n mesh = new Mesh(this.geo_gutterBack.geometry, MaterialManager.Instance().GUTTER);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.GUTTER_PATIOS, views: views };\n mesh.position.set(offsetXL, 0, 0);\n mesh.scale.setX(scaleX);\n \n let endCapMesh = new Mesh(this.geo_gutterCap.geometry, MaterialManager.Instance().GUTTER);\n endCapMesh.position.set(offsetXL, 0, 0);\n\n let endCapMesh2 = new Mesh(this.geo_gutterCap.geometry, MaterialManager.Instance().GUTTER);\n endCapMesh2.position.set(offsetXR, 0, 0);\n\n let gutterGroup = new Group();\n gutterGroup.add(mesh, endCapMesh, endCapMesh2);\n gutterGroup.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.GUTTER_PATIOS, views: views};\n gutterGroup.position.set(0, offsetY, offsetZ);\n gutterGroup.rotation.set(-this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue), 0, 0);\n this.roofGroup.add(gutterGroup);\n }\n public addZFlashing() {\n let offsetX = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n let offsetY = this.geo_roofPanelBase.height - 25;\n const offsetZ = (this.APP.sldFrontOverhang.currentValue\n + this.APP.sldBackOverhang.currentValue\n + this.APP.sldMultiSpan.currentValue\n + this.APP.sldSpan.currentValue\n ) / this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n const scaleX = (this.totalBaySize + this.APP.sldLeftOverhang.currentValue + this.APP.sldRightOverhang.currentValue) / this.zFlashingGeo.length;\n\n let mesh = new Mesh(this.zFlashingGeo.geometry, MaterialManager.Instance().ZFLASHING);\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.set(scaleX, 1, 1);\n\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ZFLASHING, scale: mesh.scale };\n this.roofGroup.add(mesh);\n }\n public getRoofOffsetY() {\n return this.APP.sldBuildingHeight.currentValue\n //+ this.geometryManager.getBeam().height\n + this.utils.tan(this.APP.sltRoofPitch.currentValue)*this.APP.sldBackOverhang.currentValue;\n }\n public destroy(): void {\n this.unregisterEvent();\n }\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldFrontOverhang,\n this.APP.sldBackOverhang,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldBuildingHeight,\n this.APP.dialogEditBay,\n this.APP.sldFrontOverhang,\n this.APP.sldBackOverhang\n ];\n //this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n\n this.controlsToRegisterEvent2 = [\n this.APP.sltRoofSheetingType,\n this.APP.sltRoofThickness,\n this.APP.sltBargeType,\n this.APP.sltDripBarge,\n this.APP.sltGutterType,\n this.APP.sltRoofPitch\n ];\n this.controlsToRegisterEvent2.forEach(c => c.addAction(this.objectSizeChangedHandle));\n }\n private unregisterEvent(): void{\n // this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n // this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach(c => c.removeAction(this.objectSizeChangedHandle));\n this.controlsToRegisterEvent2 = undefined;\n }\n public uiChanged(preVal: number, curVal: number): void {\n this.load();\n }\n private objectSizeChanged(pre: number, cur: number){\n this.optimize().then(() => { this.load() });\n }\n}\n","import { Scene, Mesh, Object3D, Material, Group, FontLoader, TextBufferGeometry, PlaneBufferGeometry, Vector3, BoxHelper, Box3Helper, Matrix4, Box3, Geometry, LineSegments, LineBasicMaterial, Color, BoxBufferGeometry, Line, Line3, BufferGeometry, Points, PointsMaterial } from \"three\";\nimport { HomeComponent as AppComponent, HomeComponent } from '../../containers/home/home.component';\nimport { Util } from '../utils';\nimport { MaterialManager } from '../material.manager';\nimport { GeometryInfo, ViewType, LineType, IBay, Printing2DGeometry, Printing2DLine, Print2DText, Printing2DGeometryType } from '../models';\nimport { GEOMETRY_TYPE, DIMENSION_LOCATION, DIMENSION_LABEL_TYPE } from 'src/app/app.config';\nimport { environment } from 'src/environments/environment';\nimport { GableFBExistingBuildingManager } from '.';\nimport { GeometryManager } from '../geometry.manager';\nimport { PANEL_DIRECTION, RAKECUT_TYPE } from 'src/app/app.constants';\nimport { UI } from \"../ui\";\nimport Dimension, { AddDimensionOptions } from \"src/app/models/Dimension\";\nimport {CONFIG as conf} from '../../app.config'\n\nexport class DimensionManager {\n private scene: Scene;\n private APP: AppComponent;\n private MANAGER: GableFBExistingBuildingManager;\n public listText: THREE.Object3D[] = [];\n private utils: Util;\n\n private eventHandleId: any;\n\n private material: Material;\n private geometryManager: GeometryManager;\n\n private materialManager: MaterialManager;\n\n private dimensionPatiosFrontBottom: Object3D;\n private dimensionPatiosFrontRight: Object3D;\n\n private dimensionPatiosRightBottom: Object3D;\n private dimensionPatiosRightLeft: Object3D;\n private dimensionPatiosRightRight: Object3D;\n\n private dimensionPatiosLeftBottom: Object3D;\n private dimensionPatiosLeftRight: Object3D;\n private dimensionPatiosLeftLeft: Object3D;\n\n private dimensionPatiosPlanRight: Object3D;\n private dimensionPatiosPlanBottom: Object3D;\n private dimensionPatiosPlanLeft: Object3D;\n\n private dimensionPlanMiddle: Object3D;\n private dimensionPlanMidleLeft: Object3D;\n\n private lineCapGeo: GeometryInfo;\n private lineGeo: GeometryInfo;\n private textGeo: TextBufferGeometry;\n\n private dimensionDistance = 1500;\n private dimensionDistance2 = 500;\n\n private textDistance = 5000;\n\n private totalBaySize: number;\n\n private font: any\n private textParameter: any;\n\n private isReady = false;\n\n private box: Box3;\n\n private controlsToRegisterEvent: Array;\n private options : AddDimensionOptions;\n private startPos: Vector3;\n private startMatrix: Matrix4;\n private startBayLength: number;\n\n constructor(app: AppComponent, manager: GableFBExistingBuildingManager) {\n this.utils = new Util();\n this.materialManager = MaterialManager.Instance();\n this.APP = app;\n this.MANAGER = manager;\n this.scene = this.APP.scene;\n this.material = MaterialManager.Instance().DIMENSION_TEXT;\n this.geometryManager = GeometryManager.Instance();\n\n //this.registerEvent();\n }\n\n\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n this.lineGeo = this.geometryManager.getDimensionLine();\n this.lineCapGeo = this.geometryManager.getDimensionCap();\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.unload();\n \n var loader = new FontLoader();\n\n this.dimensionPatiosFrontBottom = new Group();\n this.dimensionPatiosFrontBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n // this.dimensionPatiosFrontBottom.rotation.set(0, Math.PI, 0);\n this.dimensionPatiosFrontBottom.visible = false;\n\n this.dimensionPatiosFrontRight = new Group();\n this.dimensionPatiosFrontRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosFrontRight.rotation.set(0, 0, -Math.PI / 2);\n this.dimensionPatiosFrontRight.visible = false;\n\n this.dimensionPatiosRightBottom = new Group();\n this.dimensionPatiosRightBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightBottom.rotation.set(0, -Math.PI / 2, 0);\n this.dimensionPatiosRightBottom.visible = false;\n\n this.dimensionPatiosRightLeft = new Group();\n this.dimensionPatiosRightLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightLeft.rotation.set(0, -Math.PI / 2, -Math.PI / 2);\n this.dimensionPatiosRightLeft.visible = false;\n\n this.dimensionPatiosRightRight = new Group();\n this.dimensionPatiosRightRight.rotation.set(0, -Math.PI / 2, -Math.PI / 2);\n this.dimensionPatiosRightRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightRight.visible = false;\n\n this.dimensionPatiosLeftBottom = new Group();\n this.dimensionPatiosLeftBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftBottom.rotation.set(0, -Math.PI / 2, 0);\n this.dimensionPatiosLeftBottom.visible = false;\n\n this.dimensionPatiosLeftRight = new Group();\n this.dimensionPatiosLeftRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftRight.rotation.set(Math.PI / 2, -Math.PI / 2, 0);\n this.dimensionPatiosLeftRight.visible = false;\n\n this.dimensionPatiosLeftLeft = new Group();\n this.dimensionPatiosLeftLeft.rotation.set(0, -Math.PI / 2, Math.PI / 2);\n this.dimensionPatiosLeftLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftLeft.visible = false;\n\n this.dimensionPatiosPlanRight = new Group();\n this.dimensionPatiosPlanRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosPlanRight.rotation.set(-Math.PI / 2, Math.PI, -Math.PI / 2);\n\n this.dimensionPatiosPlanBottom = new Group();\n this.dimensionPatiosPlanBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosPlanBottom.rotation.set(-Math.PI / 2, 0, 0);\n \n this.dimensionPatiosPlanLeft = new Group();\n this.dimensionPatiosPlanLeft.userData = { type: GEOMETRY_TYPE.DIMENSION , position: { left: true } };\n this.dimensionPatiosPlanLeft.rotation.set(-Math.PI / 2, 0, -Math.PI / 2);\n \n this.dimensionPlanMiddle = new Group();\n this.dimensionPlanMidleLeft = new Group();\n \n\n this.scene.add(this.dimensionPatiosPlanRight);\n this.scene.add(this.dimensionPatiosPlanLeft);\n this.scene.add(this.dimensionPatiosFrontRight);\n this.APP.patiosManager.patiosGroup.add(\n this.dimensionPatiosFrontBottom,\n //this.dimensionPatiosFrontRight,\n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom,\n this.dimensionPatiosLeftRight,\n this.dimensionPatiosLeftLeft,\n this.dimensionPatiosPlanBottom,\n //this.dimensionPatiosPlanRight,\n this.dimensionPlanMiddle,\n this.dimensionPlanMidleLeft\n );\n\n loader.load(environment.modelBaseUrl + '/assets/fonts/helvetiker_regular.typeface.json', (font) => {\n this.font = font;\n\n this.textParameter = {\n font: this.font,\n size: 200,\n height: 5,\n curveSegments: 10\n };\n this.options = {\n container: HomeComponent.ins.scene,\n start: new Vector3(),\n end: new Vector3(),\n linePos: new Vector3(),\n views: [],\n allowDrag: true,\n textParameter: this.textParameter,\n textPos: new Vector3(),\n labelType: null,\n fitZ: 10,\n hasTextClone: false,\n axis: 'x',\n lineLength: 0,\n subtype: null,\n textUserData: null,\n onDragCallback: this.onDimDrag.bind(this),\n onDragStartCallback: this.onDimDragStart.bind(this),\n }\n this.isReady = true;\n this.draw();\n\n\n resolve();\n })\n });\n }\n\n public unload() {\n this.scene.remove(this.dimensionPatiosPlanRight);\n this.scene.remove(this.dimensionPatiosPlanLeft);\n this.scene.remove(this.dimensionPatiosFrontRight);\n if (this.APP.patiosManager && this.APP.patiosManager.patiosGroup) {\n this.APP.patiosManager.patiosGroup.remove(\n this.dimensionPatiosFrontBottom,\n //this.dimensionPatiosFrontRight,\n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom,\n this.dimensionPatiosLeftRight,\n this.dimensionPatiosLeftLeft,\n this.dimensionPatiosPlanBottom,\n //this.dimensionPatiosPlanRight,\n this.dimensionPlanMiddle,\n this.dimensionPlanMidleLeft\n );\n }\n }\n \n public draw() {\n if (!this.isReady) {\n return;\n }\n\n // this.dimensionPatiosPlanBottom.children = [];\n // this.dimensionPatiosPlanRight.children = [];\n // this.dimensionPatiosPlanLeft.children = [];\n this.dimensionPatiosPlanBottom.children = this.dimensionPatiosPlanBottom.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.LEFT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.RIGHT_OVERHANG\n );\n this.dimensionPatiosPlanRight.children = this.dimensionPatiosPlanRight.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.FRONT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.BACK_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY\n );\n this.dimensionPatiosPlanLeft.children = this.dimensionPatiosPlanLeft.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL \n )\n this.dimensionPatiosFrontBottom.children = [];\n this.dimensionPatiosFrontRight.children = [];\n this.dimensionPatiosLeftBottom.children = [];\n this.dimensionPatiosLeftRight.children = [];\n this.dimensionPatiosLeftLeft.children = [];\n this.dimensionPatiosRightBottom.children = [];\n this.dimensionPatiosRightLeft.children = [];\n this.dimensionPatiosRightRight.children = [];\n this.dimensionPlanMiddle.children = [];\n this.dimensionPlanMidleLeft.children = [];\n\n //this.scene.remove(...this.scene.children.filter(o => o.userData.type == 'BOXHELPER'));\n\n this.totalBaySize = this.APP.dialogEditBay.listBay.map(b => b.value).reduce((sum, current) => sum + current);\n // for (let b of this.APP.dialogEditBay.listBay) {\n // this.totalBaySize += b.value;\n // }\n\n this.box = this.utils.getSceneBox();\n // let boxHelper = new Box3Helper(this.MANAGER.boundingBox);\n // boxHelper.userData = { type: \"BOXHELPER\" };\n // this.scene.add(boxHelper);\n\n\n this.drawDimensionPatiosPlanBottom();\n this.drawDimensionPatiosPlanRight();\n // this.drawDimensionPatiosPlanLeft();\n\n this.drawDimensionPatiosFrontBottom();\n this.drawDimensionPatiosFrontRight();\n\n this.drawDimensionPatiosLeftBottom();\n this.drawDimensionPatiosLeftRight();\n this.drawDimensionPatiosLeftLeft();\n\n this.drawDimensionPatiosRightBottom();\n this.drawDimensionPatiosRightLeft();\n this.drawDimensionPatiosRightRight();\n\n this.drawDimensionMidle();\n this.drawDimensionMidleLeft();\n\n //testing\n // [\n // this.dimensionPatiosFrontBottom,\n // this.dimensionPatiosFrontRight,\n // this.dimensionPatiosRightBottom,\n // this.dimensionPatiosRightLeft,\n // this.dimensionPatiosRightRight,\n // this.dimensionPatiosLeftBottom,\n // this.dimensionPatiosLeftRight,\n // this.dimensionPatiosLeftLeft,\n // ].forEach(g => { g.visible = true });\n\n // var offset = this.calulateBoundingBox();\n // this.dimensionPatiosPlanRight.position.setX(offset.right);\n // this.dimensionPatiosPlanLeft.position.setX(offset.left);\n // this.dimensionPatiosPlanBottom.position.setZ(offset.front);\n\n // let existingHouseDimLeft = this.APP.scene.children.find(c => c.userData.type == GEOMETRY_TYPE.DIMENSION && c.userData.position?.planLeft);\n // //let existingHouseDimBox = new Box3().setFromObject(existingHouseDimLeft);\n // if(existingHouseDimLeft && existingHouseDimLeft.position.x > offset.left){\n // existingHouseDimLeft.position.setX(offset.left - 500);\n // }\n\n this.APP.dimensionManager.draw();\n }\n\n private drawDimensionMidleLeft() {\n let offsetX = 0;\n\n let dimLeft = this.utils.createArrowLine([{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }]);\n dimLeft.visible = false;\n dimLeft.position.setX(-300)\n let textLeft = this.utils.createText(\"Panel direction\", [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }], this.textParameter, new Vector3(-500, 0, 650));\n textLeft.userData.rotation = new Vector3(0, Math.PI / 2, 0)\n textLeft.visible = false;\n\n let dimRight = dimLeft.clone()\n dimRight.position.setX(300);\n let textRight = textLeft.clone();\n textRight.position.setX(500);\n \n this.dimensionPlanMidleLeft.add(dimLeft);\n this.dimensionPlanMidleLeft.add(textLeft);\n this.dimensionPlanMidleLeft.add(dimRight);\n this.dimensionPlanMidleLeft.add(textRight);\n\n if (this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT) {\n let offsetZ = - UI.existingWidth1 / 2 + this.totalBaySize + UI.overhangFront;\n this.dimensionPlanMidleLeft.position.set(offsetX, 0, offsetZ);\n this.dimensionPlanMidleLeft.rotation.set(0, Math.PI, 0);\n }\n else {\n let offsetZ = - UI.existingWidth1 / 2;\n this.dimensionPlanMidleLeft.rotation.set(0, 0, 0);\n this.dimensionPlanMidleLeft.position.set(offsetX, 0, offsetZ);\n }\n }\n private drawDimensionMidle() {\n let offsetX = 0;\n\n let dimLeft = this.utils.createArrowLine([{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }]);\n dimLeft.visible = false;\n dimLeft.rotation.set(0, -Math.PI / 2, 0);\n\n let textLeft = this.utils.createText(`${UI.patiosPitch} degree`, [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }], this.textParameter, new Vector3(-500, 0, 200));\n textLeft.visible = false;\n\n let dimRight = dimLeft.clone()\n dimRight.rotation.set(0, Math.PI / 2, 0);\n\n let textRight = textLeft.clone();\n textRight.position.setX(500);\n \n this.dimensionPlanMiddle.add(dimLeft);\n this.dimensionPlanMiddle.add(textLeft);\n this.dimensionPlanMiddle.add(dimRight);\n this.dimensionPlanMiddle.add(textRight);\n\n let offsetZ = - UI.existingWidth1 / 2 + this.totalBaySize / 2;\n this.dimensionPlanMiddle.rotation.set(0, 0, 0);\n this.dimensionPlanMiddle.position.set(offsetX, 0, offsetZ);\n }\n\n private drawDimensionPatiosPlanBottom() {\n let views = [ { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS } ];\n\n let _dimensionDistane = this.dimensionDistance2;\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n if(this.APP.sldExistingWidth1.currentValue > 0){\n _dimensionDistane = this.dimensionDistance;\n }\n }\n\n let textStr = this.utils.getDimensionValue(this.APP.sldSpan.currentValue);\n\n let options : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldSpan.currentValue,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.SPAN,\n hasTextClone: false,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views },\n textCloneUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views },\n textCloneRotation: new Vector3(0, 0, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, 0, 0)\n }\n let dimSpan = this.dimensionPatiosPlanBottom.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN) as Dimension;\n if(!dimSpan){\n new Dimension(options);\n } else {\n dimSpan.update(options);\n }\n\n //Left over hang\n this.addOverhang(this.dimensionPatiosPlanBottom, UI.span / 2, this.APP.sldLeftOverhang.currentValue, views, \"Left\", 0, \"z\", DIMENSION_LABEL_TYPE.LEFT_OVERHANG);\n this.addOverhang(this.dimensionPatiosPlanBottom, UI.span / 2, this.APP.sldRightOverhang.currentValue, views, \"Right\", 0, \"z\", DIMENSION_LABEL_TYPE.RIGHT_OVERHANG);\n this.repositionDimension(this.dimensionPatiosPlanBottom, DIMENSION_LOCATION.PLAN_BOTTOM);\n }\n onDimDrag(event){\n this.utils.handlerDimDragEvent(event, this.startPos, this.startMatrix, this.startBayLength);\n this.startPos = event.object.position.clone();\n }\n onDimDragStart(event){\n this.startPos = event.object.position.clone();\n this.startMatrix = event.object.matrixWorld.clone();\n if(event.object.userData?.dimType === DIMENSION_LABEL_TYPE.BAY){\n let bayNum = event.object.userData.bayNum;\n this.startBayLength = UI.listBay[+bayNum].value;\n }\n }\n private drawDimensionPatiosPlanRight() {\n let offsetDimensionZ = this.totalBaySize / 2\n - this.APP.sldExistingWidth1.currentValue / 2;\n\n let _dimensionDistane = this.dimensionDistance2;\n if (this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3) {\n if (this.APP.sldExistingWidth1.currentValue > 0) {\n _dimensionDistane = this.dimensionDistance;\n }\n }\n\n let offsetDimensionX = this.box.max.x + this.dimensionDistance2;\n if (this.APP.sltExistingType.currentValue == 1) {\n offsetDimensionX += this.APP.sldEaveWidth.currentValue;\n }\n\n this.dimensionPatiosPlanRight.position.set(offsetDimensionX, 0, offsetDimensionZ);\n\n let views = [ { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS } ];\n let offsetX = -this.totalBaySize / 2;\n this.dimensionPatiosPlanRight.children = this.dimensionPatiosPlanRight.children.filter(el => \n el.userData?.groupType != DIMENSION_LABEL_TYPE.BAY\n || (el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY && el.userData?.bayNum < HomeComponent.ins.dialogEditBay.listBay.length)\n );\n \n for(let i = 0; i <= this.APP.dialogEditBay.listBay.length; i++){\n let b: IBay = {index: 0, value: 0, isCut: false};\n if(i < this.APP.dialogEditBay.listBay.length){\n b = this.APP.dialogEditBay.listBay[i];\n }\n\n if(i < this.APP.dialogEditBay.listBay.length){\n let textStr = this.utils.getDimensionValue(b.value);\n let options : AddDimensionOptions = {... this.options,\n lineLength: b.value,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(offsetX + b.value / 2, 0, 0),\n textPos: new Vector3(offsetX + b.value / 2, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.BAY,\n bayNum: i,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, position: { bottom: true }, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textRotation: new Vector3(0, - Math.PI, 0),\n fitZ: -10\n }\n let dimBay = this.dimensionPatiosPlanRight.children.find(el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY \n && el.userData?.bayNum == i\n ) as Dimension;\n if(!dimBay){\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n offsetX += b.value;\n }\n\n let offsetRight = this.totalBaySize / 2 ;\n let offsetLeft = this.totalBaySize / 2;\n\n this.addOverhang(this.dimensionPatiosPlanRight, offsetRight, this.APP.sldFrontOverhang.currentValue, views, \"Right\", Math.PI, \"y\", DIMENSION_LABEL_TYPE.FRONT_OVERHANG);\n this.addOverhang(this.dimensionPatiosPlanRight, offsetLeft, this.APP.sldBackOverhang.currentValue, views, \"Left\", Math.PI, \"y\", DIMENSION_LABEL_TYPE.BACK_OVERHANG);\n this.repositionDimension(this.dimensionPatiosPlanRight, DIMENSION_LOCATION.PLAN_RIGHT);\n }\n \n private drawDimensionPatiosFrontBottom() {\n let dimOffsetY = -this.dimensionDistance2;\n this.dimensionPatiosFrontBottom.position.set(0, dimOffsetY, 0);\n\n let views = [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosPlanBottom.children.forEach( groupDim => {\n groupDim.children.filter(c => c.userData.subtype != GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT).forEach(e => {\n let dim = e.clone();\n dim.userData['views'] = views;\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.rotation.set(0, Math.PI, 0);\n dim.userData['rotation'] = new Vector3(0, 0, 0);\n dim.userData['position'] = {...e.userData.position, bottom: true};\n }\n this.dimensionPatiosFrontBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosFrontRight() {\n let views = [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }];\n\n let _dimensionDistane = this.dimensionDistance2;\n if (this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3) {\n if (this.APP.sldExistingWidth1.currentValue > 0) {\n _dimensionDistane = this.dimensionDistance;\n }\n }\n let height = this.utils.getHeightByAngle(UI.height, UI.span / 2, UI.patiosPitch, 1);\n let dimOffsetX = this.box.max.x;\n //let dimOffsetX = this.totalBaySize / 2 + this.APP.patiosManager.patiosGroup.position.x + _dimensionDistane;\n let dimOffsetY = height / 2;\n //if (this.APP.sldExistingLength.currentValue / 2 > this.totalBaySize / 2) {\n // dimOffsetX = this.APP.sldExistingLength.currentValue / 2 + _dimensionDistane;\n //}\n\n //if (this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3) {\n // dimOffsetX += this.APP.sldExistingLength2.currentValue;\n //}\n\n this.dimensionPatiosFrontRight.position.set(dimOffsetX, dimOffsetY, 0);\n\n //-------- \n let scaleLength = height / this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-dimOffsetY);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(dimOffsetY);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(height);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, 0, -Math.PI / 2) };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosFrontRight.add(line, cap1, cap2, text, ...this.utils.addArrowForLine(line));\n this.repositionDimension(this.dimensionPatiosFrontRight, DIMENSION_LOCATION.FRONT_RIGHT);\n }\n private drawDimensionPatiosLeftBottom() {\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z;\n\n this.dimensionPatiosLeftBottom.position.set(0, dimOffsetY, dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n this.dimensionPatiosPlanRight.children.forEach( groupDim => {\n groupDim.children.forEach(e => {\n if(e.userData?.subType == GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT)\n return;\n \n let dim = e.clone();\n dim.userData['views'] = views;\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.rotation.set(0, 0, 0);\n dim.userData['views'] = [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }];\n dim.userData['rotation'] = new Vector3(0, 0, 0);\n dim.userData['position'] = {...e.userData.position, bottom: true}; \n }\n this.dimensionPatiosLeftBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosLeftRight() {\n let dimOffsetY = this.utils.getHeightByAngle(UI.height, UI.span / 2, UI.patiosPitch, 1);\n let dimOffsetZ = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance2 - this.APP.sldExistingWidth1.currentValue/2;\n if(this.APP.sldExistingWidth1.currentValue + this.APP.sldExistingWidth2.currentValue > this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue){\n dimOffsetZ = this.APP.sldExistingWidth1.currentValue/2 + this.APP.sldExistingWidth2.currentValue + this.dimensionDistance2 - 290;\n }\n if(this.APP.sldExistingLength2.currentValue > 0){\n dimOffsetZ += 500;\n }\n\n this.dimensionPatiosLeftRight.position.set(0,dimOffsetY/2,dimOffsetZ);\n\n let views = [ \n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n let offsetLength = dimOffsetY;\n let scaleLength = offsetLength / this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength/2);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength/2);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }], rotation: new Vector3(-Math.PI / 2, 0, 0) };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosLeftRight.add(line, cap1, cap2, text, ...this.utils.addArrowForLine(line));\n this.repositionDimension(this.dimensionPatiosLeftRight, DIMENSION_LOCATION.LEFT_RIGHT);\n }\n private drawDimensionPatiosRightBottom() {\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z;\n\n this.dimensionPatiosRightBottom.position.set(0, dimOffsetY, dimOffsetZ);\n\n let views = [{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosPlanRight.children.forEach(groupDim => {\n groupDim.children.forEach(e => {\n if(e.userData?.subType == GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT)\n return;\n \n let dim = e.clone();\n dim.userData['views'] = views;\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.userData['rotation'] = new Vector3(0, 0, 0);\n dim.userData['position'] = {...e.userData.position, bottom: true};\n }\n this.dimensionPatiosRightBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosRightLeft() {\n let dimOffsetY = this.utils.getHeightByAngle(UI.height, UI.span / 2, UI.patiosPitch, 1);\n let dimOffsetZ = this.dimensionPatiosLeftRight.position.z;//this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance2 - this.APP.sldExistingWidth1.currentValue/2;\n //this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance2;\n\n this.dimensionPatiosRightLeft.position.set(0,dimOffsetY/2,dimOffsetZ);\n\n let views = [ { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosLeftRight.children.forEach(e => {\n let dim = e.clone();\n dim.userData['views'] = views;\n if(e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n dim.userData['rotation'] = new Vector3(Math.PI/2,0,0);\n dim.rotation.set(0,Math.PI,0);\n }\n this.dimensionPatiosRightLeft.add(dim);\n });\n this.repositionDimension(this.dimensionPatiosRightLeft, DIMENSION_LOCATION.RIGHT_LEFT);\n }\n private drawDimensionPatiosLeftLeft() {\n let dimOffsetY = this.APP.sldBuildingHeight.currentValue;\n let dimOffsetZ = this.APP.sldExistingWidth1.currentValue / 2 + 1800;\n\n this.dimensionPatiosLeftLeft.position.set(0, dimOffsetY / 2, -dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n let offsetLength = dimOffsetY;\n let scaleLength = offsetLength / this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength / 2);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength / 2);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }], rotation: new Vector3(Math.PI / 2, 0, 0) };\n text.position.set(0, 200, 0);\n\n this.dimensionPatiosLeftLeft.add(line, cap1, cap2, text, ...this.utils.addArrowForLine(line));\n }\n private drawDimensionPatiosRightRight() {\n let dimOffsetY = this.APP.sldBuildingHeight.currentValue;\n let dimOffsetZ = this.APP.sldExistingWidth1.currentValue / 2 + 1800;\n\n this.dimensionPatiosRightRight.position.set(0, dimOffsetY / 2, -dimOffsetZ);\n\n let views = [{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosLeftLeft.children.forEach(e => {\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n let dim = e.clone();\n dim.userData['views'] = views;\n dim.userData['rotation'] = new Vector3(-Math.PI / 2, 0, 0);\n dim.rotation.set(0, Math.PI, 0);\n dim.position.set(dim.position.x, -dim.position.y, dim.position.z);\n this.dimensionPatiosRightRight.add(dim);\n }\n });\n }\n private addOverhang(groupDim: Object3D, offset: number, overhangValue: number, views: any, side: string, rotateText: number, axis: string, labelType?: string) {\n if (overhangValue == 0){\n let dim = groupDim.children.find(el => el.userData?.groupType == labelType) as Dimension;\n if(dim){\n groupDim.remove(dim)\n }\n return;\n }\n\n let textStr = this.utils.getDimensionValue(overhangValue);\n\n let textRotation = new Vector3();\n let textUserData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, position: { overhang: true }};\n if (axis === \"z\") {\n textRotation.setZ(rotateText);\n textUserData['rotation'] = new Vector3(0, 0, -rotateText / 2);\n textUserData['position']['bottom'] = true;\n }\n else if (axis === \"y\") {\n textRotation.setY(rotateText);\n textUserData['rotation'] = new Vector3(0, -rotateText / 2, 0);\n }\n else if (axis === \"x\") {\n textRotation.setX(rotateText);\n textUserData['rotation'] = new Vector3(-rotateText / 2, 0, 0);\n }\n\n let linePos = new Vector3();\n if (side === \"Left\") {\n linePos.setX(-offset - overhangValue / 2);\n }\n else if (side === \"Right\") {\n linePos.setX(offset + overhangValue / 2);\n }\n let fitZ = 0;\n if(labelType){\n if(axis === 'z'){\n fitZ = 10;\n } else if(axis === 'y'){\n fitZ = -10;\n }\n }\n let options : AddDimensionOptions = {... this.options,\n lineLength: overhangValue,\n container: groupDim,\n views: views,\n linePos: linePos,\n textPos: linePos.clone().setY(linePos.y - 200),\n labelType: labelType ? labelType : null,\n fitZ: fitZ,\n textRotation: textRotation,\n textUserData: textUserData\n }\n let dim = groupDim.children.find(el => el.userData?.groupType == labelType) as Dimension;\n if(!dim){\n new Dimension(options);\n } else {\n dim.update(options)\n }\n }\n private getTextCover(textGeo: TextBufferGeometry, labelType: string, pos: Vector3, fitZ = 0, bayNum?: number){\n let textSize = new Vector3();\n textGeo.boundingBox.getSize(textSize)\n\n let textCover = new Mesh(new BoxBufferGeometry(textSize.x, textSize.y, textSize.z))\n textCover.position.set(pos.x , pos.y, pos.z + fitZ);\n textCover.userData = { type: GEOMETRY_TYPE.TEXT_COVER, labelType };\n if(bayNum !== undefined){\n textCover.userData['bayNum'] = bayNum;\n }\n textCover.material['opacity'] = 0;\n textCover.material['transparent'] = true;\n\n return textCover\n }\n\n public getOutlines(): Printing2DGeometry {\n let lsGeometries: Printing2DLine[] = [];\n let lsText: Print2DText[] = [];\n\n for (let dim of [\n ...this.dimensionPatiosPlanBottom.children,\n ...this.dimensionPatiosPlanRight.children,\n ...this.dimensionPatiosPlanLeft.children,\n ...this.dimensionPatiosFrontBottom.children,\n ...this.dimensionPatiosFrontRight.children,\n ...this.dimensionPatiosLeftBottom.children,\n ...this.dimensionPatiosLeftRight.children,\n ...this.dimensionPatiosLeftLeft.children,\n ...this.dimensionPatiosRightBottom.children,\n ...this.dimensionPatiosRightLeft.children,\n ...this.dimensionPatiosRightRight.children,\n ...this.dimensionPlanMiddle.children,\n ...this.dimensionPlanMidleLeft.children\n ]) {\n if (!dim.userData.views) {\n console.log(\"TEXT NO VIEW\", dim);\n continue;\n }\n\n\n if(dim.type == 'Group'){\n dim.children.forEach(el => {\n el.updateMatrix();\n let _clone = el.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(el.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n \n el.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(el.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(el.matrixWorld);\n\n let textRotation = el.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, el, pos, textRotation, points)\n })\n } else{\n dim.updateMatrix();\n let _clone = dim.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(dim.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n \n dim.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(dim.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(dim.matrixWorld);\n\n let textRotation = dim.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, dim, pos, textRotation, points)\n }\n }\n return { lines: lsGeometries, texts: lsText };\n }\n private getDimInfo(lsGeometries: Printing2DLine[], lsText: Print2DText[], dim: Object3D, pos: Vector3, textRotation: Vector3, points: Vector3[]){\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && dim.userData.views && dim.userData.value) {\n let box = new Box3().setFromObject(dim.parent);\n let startEnd = this.utils.getStartEndPoint(box);\n let line = new Line3(startEnd[0], startEnd[1]);\n\n let projectPoint = new Vector3();\n line.closestPointToPoint(pos, true, projectPoint);\n let _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(10));\n\n if(dim.userData.position?.bottom){\n if(dim.userData.position?.overhang){\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(180));\n }\n else{\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(120));\n }\n }\n else{\n if(dim.userData.position?.overhang){\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(100));\n }\n }\n\n let p = new Vector3().applyMatrix4(dim.matrixWorld);\n\n lsText.push({\n value: dim.userData.value,\n position: p,\n rotation: textRotation,\n views: dim.userData.views\n });\n\n \n }\n else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_LINE) {\n // this.scene.add(new LineSegments(new Geometry().setFromPoints(points), new LineBasicMaterial({color: new Color('red')})));\n\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_CAP) {\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n else if (dim.userData.type == \"Arrow\") {\n let geo = ((dim as Line).geometry as Geometry).clone();\n geo.applyMatrix4(dim.matrixWorld);\n lsGeometries.push({\n vertices: geo.vertices,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n }\n public destroy(): void {\n this.unregisterEvent();\n this.unload();\n }\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldFrontOverhang,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sldExistingWallHeight,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch,\n\n\n this.APP.sldEaveWidth\n ];\n this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.controlsToRegisterEvent = undefined;\n }\n public uiChanged(preVal: number, curVal: number): void {\n this.draw();\n }\n private calulateBoundingBox(){\n this.APP.scene.remove(...this.APP.scene.children.filter(c => c.userData.type == 'BOX_HELPER_'));\n let patiosBox = this.MANAGER.boundingBox;\n \n let planRightBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosPlanRight);\n planRightBox.min.x = patiosBox.max.x;\n planRightBox.max.x = patiosBox.max.x + 500;\n planRightBox.max.y = 10000;\n \n let planLeftBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosPlanLeft);\n planLeftBox.min.x = patiosBox.min.x - 500;\n planLeftBox.max.x = patiosBox.min.x;\n planLeftBox.max.y = 10000;\n\n let planBottomBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosPlanBottom);\n let planBottomBoxWidth = planBottomBox.max.z - planBottomBox.min.z;\n planBottomBox.min.z = patiosBox.max.z;\n planBottomBox.max.z = patiosBox.max.z + planBottomBoxWidth;\n planBottomBox.max.y = 10000;\n \n let objs = [];\n\n objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && c.userData.position?.width1 || c.userData.position?.width2 || c.userData.position?.length2)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL)\n );\n\n // for(let e of objs){\n // let boxModelHelper = new BoxHelper(e);\n // boxModelHelper.userData = {type: 'BOX_HELPER_'};\n // this.scene.add(boxModelHelper);\n // }\n\n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(planRightBox.intersectsBox(objBox)){\n intersectBox = true;\n planRightBox.translate(new Vector3(100,0,0))\n }\n if(planLeftBox.intersectsBox(objBox)){\n intersectBox = true;\n planLeftBox.translate(new Vector3(-100,0,0))\n }\n if(planBottomBox.intersectsBox(objBox)){\n intersectBox = true;\n planBottomBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(planRightBox);\n // boxHelper.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper);\n\n // let boxHelper2 = new Box3Helper(planLeftBox);\n // boxHelper2.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper2);\n\n // let boxHelper3 = new Box3Helper(planBottomBox);\n // boxHelper3.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper3);\n \n return { left: planLeftBox.min.x, right: planRightBox.max.x, front: planBottomBox.max.z };\n }\n private repositionDimension(dimension, location, extraDistance = 0){\n \n this.APP.scene.remove(...this.APP.scene.children.filter(c => c.userData.type == location));\n\n let patiosBox = this.MANAGER.boundingBox;\n \n if(location == DIMENSION_LOCATION.FRONT_RIGHT){\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.max.x;\n dimBox.max.x = patiosBox.max.x + 500;\n dimBox.max.z = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && !c.userData.position.length1 && !c.userData.position.length2)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && !c.userData.position.length1 && !c.userData.position.length2)\n );\n\n if(this.APP.sldExistingWidth2.currentValue > 0){\n objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && !c.userData.position.length1)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && !c.userData.position.length1)\n );\n }\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(100,0,0))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n \n dimension.position.setX(dimBox.max.x + extraDistance);\n }\n else if(location == DIMENSION_LOCATION.PLAN_LEFT){\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.min.x - 500;\n dimBox.max.x = patiosBox.min.x;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF || c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(-100,0,0))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setX(dimBox.min.x + extraDistance);\n }\n else if(location == DIMENSION_LOCATION.PLAN_RIGHT){\n // patiosBox = this.APP.utils.getObjectsBoundingBox(\n // this.MANAGER.patiosGroup.children.filter(c => c.userData.type != GEOMETRY_TYPE.DIMENSION && c.userData.type != GEOMETRY_TYPE.ROOF_PATIOS)\n // );\n\n // let patiosBoxHelper = new Box3Helper(patiosBox);\n // patiosBoxHelper.userData = {type: location};\n // this.scene.add(patiosBoxHelper);\n\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.max.x;\n dimBox.max.x = patiosBox.max.x + 500;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL)\n );\n\n // for(let e of objs){\n // let boxModelHelper = new BoxHelper(e);\n // boxModelHelper.userData = {type: location};\n // this.scene.add(boxModelHelper);\n // }\n \n // for(let i = 0; i < 100; i++){\n // let intersectBox = false;\n // for(let o of objs){\n // let objBox = this.APP.utils.getObjectBoundingBox(o);\n // if(dimBox.intersectsBox(objBox)){\n // intersectBox = true;\n // dimBox.translate(new Vector3(100,0,0))\n // }\n // }\n \n // if(!intersectBox)\n // break;\n // }\n\n \n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n dimBox.translate(new Vector3(objBox.max.x - dimBox.min.x,0,0));\n }\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setX(dimBox.max.x + extraDistance);\n }\n else if(location == DIMENSION_LOCATION.PLAN_BOTTOM){\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL)\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setZ(dimBox.max.z + extraDistance);\n }\n else if(location == DIMENSION_LOCATION.LEFT_RIGHT){\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n dimBox.min.x = -10000;\n dimBox.max.x = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && c.userData.position?.left)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && c.userData.position?.left)\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setZ(dimBox.max.z);\n }\n else if(location == DIMENSION_LOCATION.RIGHT_LEFT){\n let dimBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosLeftRight);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n \n dimBox.min.x = -10000;\n dimBox.max.x = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && c.userData.position?.right)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && c.userData.position?.right)\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setZ(dimBox.max.z);\n }\n }\n}\n","import { PostAndBeamManager } from './post-and-beam.manager';\nimport { RoofManager } from './roof.manager';\nimport { HomeComponent as AppComponent } from '../../containers/home/home.component';\nimport { PatiosManager } from '../patios.manager';\nimport { Printing2DGeometry } from '../models';\nimport { Group, Box3, Box3Helper, BoxHelper, Vector3 } from 'three';\nimport { GEOMETRY_CATEGORY, CONFIG, GEOMETRY_TYPE, OFFSET_GUTTER_TO_WALL } from 'src/app/app.config';\nimport { DimensionManager } from './dimension.manager';\nimport { SliderInputComponent } from 'src/app/component/slider-input/slider-input.component';\nimport { CUTOUT_ENABLE, EXISTING_BUILDING_CONFIG, RAKECUT_TYPE } from 'src/app/app.constants';\nimport { environment } from 'src/environments/environment';\nimport { UI } from '../ui';\n\nexport class GableFBExistingBuildingManager implements PatiosManager{\n private APP: AppComponent;\n patiosGroup: Group;\n public boundingBox: Box3;\n private postAndBeamManager: PostAndBeamManager;\n private roofManager: RoofManager;\n public dimesionManager: DimensionManager;\n public ignoreBayEvent: boolean = false;\n \n private updateEventHandle: any;\n private controlsToRegisterEvent: Array;\n private deferHandle;\n private deferTimeout = EXISTING_BUILDING_CONFIG.CUTOUT_DEFFER_TIME_OUT;\n public get cutoutCondition(): boolean {\n return [\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldFrontOverhang\n ].map(x => x.currentValue).reduce((a, b) => a + b, 0) - this.APP.sldExistingWidth1.currentValue >= EXISTING_BUILDING_CONFIG.CUTOUT_ALLOW;\n };\n public get rakecutCondition(): boolean{\n let patiosWidth = this.APP.dialogEditBay.totalBaySize + this.APP.sldLeftOverhang.currentValue + this.APP.sldRightOverhang.currentValue;\n let patiosLength = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue;\n\n return false;\n }\n\n public patiosLength: number;\n public patiosWidth: number;\n public firstLoad = true;\n\n constructor(app: AppComponent) {\n this.APP = app;\n this.patiosGroup = new Group();\n this.patiosGroup.userData = { category: GEOMETRY_CATEGORY.PATIOS }\n app.scene.add(this.patiosGroup);\n \n this.postAndBeamManager = new PostAndBeamManager(app, this);\n this.roofManager = new RoofManager(app, this);\n this.dimesionManager = new DimensionManager(app, this);\n\n this.registerEvents();\n }\n\n load(): Promise {\n return Promise.all([\n this.postAndBeamManager.optimize(),\n this.roofManager.optimize(),\n this.dimesionManager.optimize()\n ])\n .then(() => {\n this.postAndBeamManager.load();\n this.roofManager.load();\n this.dimesionManager.load();\n });\n }\n loadBracket(bracketQuantity: number): void {\n \n }\n loadBracketCutout(bracketQuantity: number): void{\n \n }\n loadSideGableBracket(bracketQuantity: number): void{\n \n }\n public destroy(): void {\n this.postAndBeamManager.destroy();\n this.roofManager.destroy();\n this.dimesionManager.destroy();\n this.unRegisterEvent();\n }\n\n registerEvents(): void {\n this.updateEventHandle = this.updateDefer.bind(this);\n this.controlsToRegisterEvent = [\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sltCutOut,\n this.APP.sldFrontOverhang,\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltColourBarge,\n this.APP.sltColourGutter,\n this.APP.sltColourDownpipe,\n this.APP.sltColourRoof,\n this.APP.sldSpan,\n this.APP.sldExistingWallHeight,\n this.APP.sldEaveWidth,\n this.APP.sldFasciaDepth,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldFlyOverBracketHeight,\n this.APP.sltColourBeam,\n this.APP.sltColourPost,\n this.APP.sltColourBracket,\n this.APP.sltColourFasciaBracket,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n this.APP.sltLeftCutType,\n this.APP.sldLeftCutVertical,\n this.APP.sldLeftCutHorizontal,\n this.APP.sltRightCutType,\n this.APP.sldRightCutVertical,\n this.APP.sldRightCutHorizontal,\n this.APP.sldBuildingHeight,\n this.APP.sltBeamLayoutShow,\n this.APP.sltPanelDirection,\n this.APP.sltPanelDirectionShow,\n this.APP.btnTurnOnPanel,\n ];\n this.controlsToRegisterEvent.forEach(c => { c.addAction(this.updateEventHandle); });\n }\n unRegisterEvent(): void {\n this.controlsToRegisterEvent.forEach(c => c.removeAction(this.updateEventHandle));\n }\n updateDefer(previousValue: number, currentValue: number) {\n if(this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES || this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE || this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE){\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => { this.update(previousValue, currentValue) }, this.deferTimeout);\n }\n else{\n this.update(previousValue, currentValue);\n }\n }\n update(preVal: number, curVal: number) {\n let totalBaySize = this.APP.dialogEditBay.totalBaySize;\n \n let diff = this.APP.sldExistingLength.currentValue - UI.span;\n \n this.patiosLength = totalBaySize + UI.overhangFront;\n this.patiosWidth = UI.span + UI.overhangLeft + UI.overhangRight;\n \n //let cutoutCondition = this.cutoutCondition.map(x => x.currentValue).reduce((a,b) => a + b, 0) - this.APP.sldExistingWidth1.currentValue >= EXISTING_BUILDING_CONFIG.CUTOUT_ALLOW;\n if (this.APP.sltExistingType.currentValue == 1) {\n if(this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition){\n this.patiosGroup.position.setX(-diff / 2 + this.APP.sldLeftOverhang.currentValue - this.APP.sldExistingLength2.currentValue + OFFSET_GUTTER_TO_WALL);\n }\n else{\n this.patiosGroup.position.setX(-diff / 2 + this.APP.sldLeftOverhang.currentValue + OFFSET_GUTTER_TO_WALL);\n }\n }\n else if (this.APP.sltExistingType.currentValue == 2) {\n if(this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition){\n this.patiosGroup.position.setX(diff / 2 - this.APP.sldRightOverhang.currentValue + this.APP.sldExistingLength2.currentValue - OFFSET_GUTTER_TO_WALL);\n }\n else{\n this.patiosGroup.position.setX(diff / 2 - this.APP.sldRightOverhang.currentValue - OFFSET_GUTTER_TO_WALL);\n }\n }\n else {\n this.patiosGroup.position.setX(0);\n }\n\n Promise.all([\n this.roofManager.load(),\n this.postAndBeamManager.load()\n ]).then(() => {\n this.boundingBox = this.getPatiosBox();\n this.dimesionManager.draw();\n })\n }\n getOutlines(): Printing2DGeometry {\n let dimensionOutline = this.dimesionManager.getOutlines();\n return { \n lines: [\n ...this.postAndBeamManager.getSection().lines,\n ...this.roofManager.getOutLines().lines,\n ...dimensionOutline.lines\n ], \n texts: dimensionOutline.texts\n }\n }\n public getPatiosBox(): Box3{\n let left = - UI.span / 2 - UI.overhangLeft;\n let right = UI.span / 2 + UI.overhangRight;\n let front = this.APP.dialogEditBay.totalBaySize + this.APP.sldFrontOverhang.currentValue;\n let back = 0;\n let height = this.APP.sldBuildingHeight.currentValue;\n \n let box = new Box3();\n box = box.expandByPoint(new Vector3(left, 0, front));\n box = box.expandByPoint(new Vector3(right, height, back));\n \n if(this.APP.sltExistingType.currentValue == 1){\n let diff = (this.APP.sldExistingLength.currentValue - UI.span) / 2;\n box.translate(new Vector3(-diff, 0, 0));\n box.translate(new Vector3(0,0,-this.APP.sldExistingWidth1.currentValue/2));\n box.translate(new Vector3(this.APP.sldLeftOverhang.currentValue, 0, 0));\n\n if(this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition){\n box.translate(new Vector3(-this.APP.sldExistingLength2.currentValue, 0, 0));\n }\n }\n else if(this.APP.sltExistingType.currentValue == 2){\n let diff = (this.APP.sldExistingLength.currentValue - UI.span) / 2;\n box.translate(new Vector3(diff, 0, 0));\n box.translate(new Vector3(0,0,-this.APP.sldExistingWidth1.currentValue/2));\n box.translate(new Vector3(-this.APP.sldRightOverhang.currentValue, 0, 0));\n\n if(this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition){\n box.translate(new Vector3(this.APP.sldExistingLength2.currentValue, 0, 0));\n }\n }\n else if(this.APP.sltExistingType.currentValue == 3){\n box.translate(new Vector3(0,0,-this.APP.sldExistingWidth1.currentValue/2));\n }\n\n // if(!environment.production){\n // this.APP.scene.remove(...this.APP.scene.children.filter(o => o.userData.type == 'BOXHELPER'));\n // let boxHelper = new Box3Helper(box);\n // boxHelper.userData = { type: \"BOXHELPER\" };\n // this.APP.scene.add(boxHelper);\n // }\n \n return box;\n }\n}\n","import { HomeComponent as AppComponent } from \"../../containers/home/home.component\";\nimport {\n Scene,\n Material,\n Mesh,\n Vector3,\n BufferGeometry,\n BoxHelper,\n Geometry,\n LineSegments,\n BoxBufferGeometry,\n Group,\n Object3D,\n Matrix4,\n Line,\n Points,\n PointsMaterial,\n Box3,\n Box3Helper,\n Plane,\n} from \"three\";\nimport { Util, getRafterBeamEndCapCode } from \"../utils\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport {\n CONFIG as env,\n GEOMETRY_TYPE,\n GEOMETRY_CATEGORY,\n} from \"../../app.config\";\nimport {\n BUILDING_SIDE,\n EXISTING_BUILDING_CONFIG as CONST,\n EXISTING_BUILDING_CONFIG,\n RAKECUT_TYPE,\n} from \"../../app.constants\";\nimport {\n GeometryInfo,\n Printing2DGeometryType,\n Printing2DLine,\n Printing2DGeometry,\n Print2DView,\n ViewType,\n LineType,\n} from \"../models\";\nimport { GableFBExistingBuildingManager } from \".\";\nimport { group } from \"console\";\nimport { UI } from \"../ui\";\nimport _ from \"lodash\";\n\nexport class PostAndBeamManager {\n private scene: Group;\n private APP: AppComponent;\n private material: Material;\n private utils: Util;\n private geometryManager: GeometryManager;\n private postInfo: GeometryInfo;\n private beamInfo: GeometryInfo;\n private beamRakecutInfoLeft: GeometryInfo;\n private beamRakecutInfoRight: GeometryInfo;\n private geo_centerSuperiorPost: GeometryInfo;\n private geo_beamEndCap: GeometryInfo;\n private geo_groundBase: GeometryInfo;\n private geo_RafterBeam: GeometryInfo;\n private geo_rafterBeamEndCap: GeometryInfo;\n private eventHandleId: any;\n private roofWidth: number;\n private frontPostHeight: number;\n private totalBaySize: number;\n private downpipeGroupRight: Group;\n private downpipeGroupLeft: Group;\n private downpipeStepRakeCutGroupLeft: Group;\n private downpipeStepRakeCutGroupRight: Group;\n private geo_downPipe: GeometryInfo;\n private geo_downPipeL: GeometryInfo;\n private geo_roofBase: GeometryInfo;\n private objectSizeChangedHandle: any;\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n private MANAGER: GableFBExistingBuildingManager;\n private enableCutout: boolean;\n private deferHandle;\n private deferTimeout = EXISTING_BUILDING_CONFIG.CUTOUT_DEFFER_TIME_OUT;\n\n private geoBeamJoint: GeometryInfo;\n private geoHouseBeamJoint: GeometryInfo;\n\n private geo_beamStepRakecutLeft: GeometryInfo;\n private geo_beamStepRakecutRight: GeometryInfo;\n\n private beamLeftCutSizeInfo: any;\n private beamRightCutSizeInfo: any;\n\n constructor(\n app: AppComponent,\n existingManager: GableFBExistingBuildingManager\n ) {\n this.APP = app;\n this.MANAGER = existingManager;\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.scene = existingManager.patiosGroup;\n this.material = MaterialManager.Instance().DEFAULT.clone();\n this.registerEvent();\n }\n public destroy(): void {\n this.unregisterEvent();\n }\n public uiChanged(preVal: number, curVal: number): void {\n this.load();\n }\n uiCHangedDefer(previousValue: number, currentValue: number) {\n if (this.APP.sltCutOut.currentValue == 1) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => {\n this.load();\n }, this.deferTimeout);\n } else {\n this.load();\n }\n }\n private objectSizeChanged(pre: number, cur: number) {\n this.optimize().then(() => {\n this.load();\n });\n }\n private registerEvent(): void {\n this.eventHandleId = this.uiCHangedDefer.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldBuildingHeight,\n this.APP.sltRoofPitch,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldExistingWidth1,\n this.APP.sltExistingType,\n //this.APP.dialogEditBay,\n this.APP.sldFrontOverhang,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n this.APP.sltCutOut,\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sldExistingWidth1,\n ];\n //this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n this.controlsToRegisterEvent2 = [\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltColumnType,\n ];\n this.controlsToRegisterEvent2.forEach((c) =>\n c.addAction(this.objectSizeChangedHandle)\n );\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach((c) =>\n c.removeAction(this.objectSizeChangedHandle)\n );\n this.controlsToRegisterEvent2 = undefined;\n }\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n this.beamInfo = this.geometryManager.getBeam();\n this.beamInfo.geometry\n .rotateY(Math.PI / 2)\n .translate(this.beamInfo.length / 2, -this.beamInfo.height / 2, 0);\n //.scale(this.APP.sldBaySize.currentValue / this.beamInfo.length, 1, 1);\n\n this.geoBeamJoint = this.geometryManager.getBeamJoint();\n this.geoHouseBeamJoint = this.geometryManager.getHouseBeamJoint();\n\n this.beamRakecutInfoLeft = this.geometryManager.getBeam();\n this.beamRakecutInfoLeft.geometry.translate(\n this.beamInfo.width / 2,\n -this.beamInfo.height / 2,\n -this.beamInfo.length / 2\n );\n\n this.beamRakecutInfoRight = this.geometryManager.getBeam();\n this.beamRakecutInfoRight.geometry.translate(\n -this.beamInfo.width / 2,\n -this.beamInfo.height / 2,\n -this.beamInfo.length / 2\n );\n\n this.geo_beamStepRakecutLeft = this.geometryManager.getBeam();\n this.geo_beamStepRakecutLeft.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_beamStepRakecutLeft.length / 2,\n -this.geo_beamStepRakecutLeft.height / 2,\n -this.geo_beamStepRakecutLeft.width / 2\n );\n\n this.geo_beamStepRakecutRight = this.geometryManager.getBeam();\n this.geo_beamStepRakecutRight.geometry\n .rotateY(Math.PI / 2)\n .translate(\n -this.geo_beamStepRakecutRight.length / 2,\n -this.geo_beamStepRakecutRight.height / 2,\n -this.geo_beamStepRakecutRight.width / 2\n );\n\n this.geo_beamEndCap = this.geometryManager.getBeamEndCap();\n this.geo_beamEndCap.geometry.translate(\n 0,\n -this.geo_beamEndCap.height / 2,\n 0\n );\n\n this.postInfo = this.geometryManager.getPost();\n this.postInfo.geometry\n .rotateX(Math.PI / 2)\n .translate(0, this.postInfo.height / 2, 0);\n //.scale(1, env.height.default / this.postInfo.height, 1);\n\n this.geo_groundBase = new GeometryInfo();\n this.geo_groundBase.width = 1000;\n this.geo_groundBase.height = 1;\n this.geo_groundBase.length = 1000;\n this.geo_groundBase.geometry = new BoxBufferGeometry(\n this.geo_groundBase.width,\n this.geo_groundBase.height,\n this.geo_groundBase.length\n );\n this.geo_groundBase.geometry.translate(\n this.geo_groundBase.width / 2,\n 0,\n this.geo_groundBase.length / 2\n );\n\n this.geo_downPipe = this.geometryManager.getDownPipe();\n this.geo_downPipeL = this.geometryManager.getDownPipeL();\n this.geo_roofBase = this.geometryManager.getRoofBase();\n\n this.scene.remove(\n ...this.scene.children.filter(\n (c) => c.userData.type == GEOMETRY_TYPE.DOWNPIPE\n )\n );\n this.downpipeGroupRight = new Group();\n this.downpipeGroupRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.downpipeGroupRight.rotateY(Math.PI / 2);\n this.scene.add(this.downpipeGroupRight);\n\n this.downpipeGroupLeft = new Group();\n this.downpipeGroupLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.downpipeGroupLeft.rotateY(-Math.PI / 2);\n this.scene.add(this.downpipeGroupLeft);\n\n this.downpipeStepRakeCutGroupLeft = new Group();\n this.downpipeStepRakeCutGroupLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeStepRakeCutGroupLeft);\n\n this.downpipeStepRakeCutGroupRight = new Group();\n this.downpipeStepRakeCutGroupRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeStepRakeCutGroupRight);\n\n this.geo_centerSuperiorPost = this.geometryManager.getCenterPost();\n this.geo_centerSuperiorPost.geometry\n .rotateX(Math.PI / 2)\n .translate(\n this.geo_centerSuperiorPost.width / 2,\n this.geo_centerSuperiorPost.height / 2,\n this.geo_centerSuperiorPost.width / 2\n );\n\n this.geo_RafterBeam = this.geometryManager.getRafterBeam();\n this.geo_RafterBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_RafterBeam.length / 2,\n -this.geo_RafterBeam.height / 2,\n this.geo_RafterBeam.width / 2\n );\n\n this.geo_rafterBeamEndCap = this.geometryManager.getRafterBeamEndCap();\n this.geo_rafterBeamEndCap.geometry.translate(\n 0,\n -this.geo_rafterBeamEndCap.height / 2,\n this.geo_rafterBeamEndCap.length / 2\n );\n\n resolve();\n });\n }\n\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.SUPERIOR_POST\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.SUPERIOR_CENTER_POST\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === \"COLUMN_OUTLINE\"\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.GROUND_BASE\n )\n );\n this.downpipeGroupRight.children = [];\n this.downpipeGroupLeft.children = [];\n this.downpipeStepRakeCutGroupLeft.children = [];\n this.downpipeStepRakeCutGroupRight.children = [];\n\n this.beamLeftCutSizeInfo = this.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.LEFT\n );\n this.beamRightCutSizeInfo = this.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.RIGHT\n );\n\n this.totalBaySize = this.APP.dialogEditBay.totalBaySize;\n this.roofWidth =\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue +\n UI.span;\n this.enableCutout = this.MANAGER.cutoutCondition;\n\n let offsetZ = 0;\n let idx = 0;\n\n this.addGround();\n this.addCenterSuperiorBeam();\n\n this.addHorSuperiorBeam(-UI.span / 2 + this.beamInfo.width / 2, {\n left: true,\n first: true,\n last: false,\n });\n this.addHorSuperiorBeam(UI.span / 2 - this.beamInfo.width / 2, {\n right: true,\n first: false,\n last: true,\n });\n\n this.APP.dialogEditBay.listBay.forEach((m) => {\n offsetZ += m.value;\n\n this.addBeam(offsetZ, {\n back: idx + 1 == 0,\n center:\n !(idx + 1 == this.APP.dialogEditBay.listBay.length) &&\n !(idx + 1 == 0),\n front: idx + 1 == this.APP.dialogEditBay.listBay.length,\n });\n\n this.addCenterPost(offsetZ, {\n center:\n !(idx + 1 == this.APP.dialogEditBay.listBay.length) &&\n !(idx + 1 == 0),\n first: idx + 1 == 0,\n last: idx + 1 == this.APP.dialogEditBay.listBay.length,\n });\n\n this.addPost(offsetZ, {\n back: idx + 1 == 0,\n center:\n !(idx + 1 == this.APP.dialogEditBay.listBay.length) &&\n !(idx + 1 == 0),\n front: idx + 1 == this.APP.dialogEditBay.listBay.length,\n first: idx + 1 == 0,\n last: idx + 1 == this.APP.dialogEditBay.listBay.length,\n left: true,\n right: false,\n });\n this.addPost(offsetZ, {\n back: idx + 1 == 0,\n center:\n !(idx + 1 == this.APP.dialogEditBay.listBay.length) &&\n !(idx + 1 == 0),\n front: idx + 1 == this.APP.dialogEditBay.listBay.length,\n first: idx + 1 == 0,\n last: idx + 1 == this.APP.dialogEditBay.listBay.length,\n left: false,\n right: true,\n });\n\n let fitBeam = 0;\n if (idx + 1 > 0 && idx + 1 < this.APP.dialogEditBay.listBay.length) {\n fitBeam = this.geo_RafterBeam.width / 2;\n } else if (idx + 1 == this.APP.dialogEditBay.listBay.length) {\n fitBeam = this.geo_RafterBeam.width;\n }\n\n this.addRafterSuperiorBeam(offsetZ - fitBeam - UI.existingWidth1 / 2, {\n front: idx + 1 == this.APP.dialogEditBay.listBay.length,\n right: true,\n first: idx + 1 === 0,\n last: idx + 1 == this.APP.dialogEditBay.listBay.length,\n });\n this.addRafterSuperiorBeam(offsetZ - fitBeam - UI.existingWidth1 / 2, {\n back: idx + 1 == 0,\n left: true,\n first: idx + 1 === 0,\n last: idx + 1 == this.APP.dialogEditBay.listBay.length,\n });\n\n idx++;\n });\n\n this.addDownPipeRight();\n this.addDownPipeLeft();\n this.showBeamOutline();\n this.updateUI();\n resolve();\n });\n }\n public showBeamOutline() {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.BEAM_OUTLINE\n )\n );\n\n if (!UI.beamLayoutShow) return;\n\n const objs = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n const meshes = [];\n objs.forEach((el) => {\n if (el.type == \"Group\") {\n meshes.push(\n ...el.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n }\n });\n\n for (let o of meshes) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n o as Mesh,\n 10\n );\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n\n var line = new LineSegments(\n outlineGeo,\n MaterialManager.Instance().BEAM_OUTLINE\n );\n line.userData = { type: GEOMETRY_TYPE.BEAM_OUTLINE };\n this.APP.scene.add(line);\n }\n }\n private addDownPipeRight() {\n let offsetZ = this.totalBaySize - 50;\n let offsetX = UI.span / 2 + 100;\n\n if (this.APP.sltExistingType.currentValue != 0) {\n offsetZ -= this.APP.sldExistingWidth1.currentValue / 2;\n }\n\n let offsetY =\n this.utils.getHeightByAngle(\n UI.height,\n UI.overhangRight,\n UI.patiosPitch,\n -1\n ) +\n this.geo_roofBase.height +\n 90;\n\n if (this.APP.sltGutterType.currentValue == 0) {\n offsetY -= 80;\n } else {\n offsetY -= 60;\n }\n\n this.utils.createDownpipeGroup(\n this.APP,\n this.downpipeGroupRight,\n this.geo_downPipe,\n this.geo_downPipeL,\n offsetX,\n offsetY,\n offsetZ,\n 0,\n 0,\n UI.overhangRight,\n offsetY,\n true\n );\n }\n private addDownPipeLeft() {\n let offsetZ = this.totalBaySize - 50;\n let offsetX = -UI.span / 2 - 100;\n\n if (this.APP.sltExistingType.currentValue != 0) {\n offsetZ -= this.APP.sldExistingWidth1.currentValue / 2;\n }\n\n let offsetY =\n this.utils.getHeightByAngle(\n UI.height,\n UI.overhangLeft,\n UI.patiosPitch,\n -1\n ) +\n this.geo_roofBase.height +\n 90;\n\n if (this.APP.sltGutterType.currentValue == 0) {\n offsetY -= 80;\n } else {\n offsetY -= 60;\n }\n\n this.utils.createDownpipeGroup(\n this.APP,\n this.downpipeGroupLeft,\n this.geo_downPipe,\n this.geo_downPipeL,\n offsetX,\n offsetY,\n offsetZ,\n 0,\n 0,\n UI.overhangLeft,\n offsetY,\n true\n );\n }\n private updateUI() {\n this.APP.sldMinHeight.setValue(_.round(this.frontPostHeight, 0));\n }\n public getSection(): Printing2DGeometry {\n let objs = this.scene.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_POST ||\n o.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET ||\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_CENTER_POST\n );\n\n objs = [...objs];\n\n let lsGeometries: Printing2DLine[] = [];\n\n for (let o of objs) {\n let box = new BoxHelper(o);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n //this.scene.add(box);\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: outlineGeo.vertices,\n views: o.userData.views,\n });\n\n // var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"OUTLINE\"};\n // //line.position.set(o.position.x - 5000, o.position.y, o.position.z);\n // this.scene.add( line );\n }\n let beamGroups = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n for (let g of beamGroups) {\n for (let c of g.children) {\n c.updateMatrix();\n\n let objCloned = c.clone();\n objCloned.applyMatrix4(new Matrix4().getInverse(c.matrix));\n\n let box = new BoxHelper(objCloned);\n\n c.updateWorldMatrix(true, true);\n\n box.geometry.applyMatrix4(c.matrixWorld);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n //this.APP.scene.add(box);\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n const planView = _.find(\n g.userData.views,\n (el) => el.viewType == ViewType.PLAN\n );\n const anotherViews = _.filter(\n g.userData.views,\n (el) => el.viewType != ViewType.PLAN\n );\n if (anotherViews.length > 0) {\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo.vertices,\n views: anotherViews,\n });\n }\n if (planView) {\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo.vertices\n .slice(0, 8)\n .filter((el, index) => [0, 1, 4, 5].includes(index)),\n views: [planView],\n });\n }\n }\n }\n\n let rafterBeamGroups = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n );\n for (let o of rafterBeamGroups) {\n o.children.forEach((el) => {\n this.utils.getOutlineRafterBeam(el as Mesh, lsGeometries);\n });\n }\n\n return { lines: lsGeometries, texts: [] };\n }\n public simplifyGeo(geo: BufferGeometry): Geometry {\n let vertices = geo.getAttribute(\"position\").array;\n let lineGeo = new Geometry();\n for (let i = 0; i < vertices.length; i += 3) {\n lineGeo.vertices.push(\n new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2])\n );\n }\n\n //2-3\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n //3-7\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n //7-6\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n //6-2\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n\n //1-4\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n //4-8\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n //8-5\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n //5-1\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n\n return lineGeo;\n }\n private addGround() {\n let offsetX = -(UI.span / 2 + this.APP.sldLeftOverhang.currentValue);\n let offsetZ = -this.APP.sldExistingWidth1.currentValue / 2;\n let width = UI.span + UI.overhangLeft + UI.overhangRight;\n let length = this.totalBaySize + UI.overhangFront + UI.overhangBack;\n\n let base = new Mesh(\n this.geo_groundBase.geometry,\n MaterialManager.Instance().BASE\n );\n base.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GROUND_BASE,\n };\n base.position.set(offsetX, 0, offsetZ);\n base.scale.set(\n width / this.geo_groundBase.width,\n 1,\n length / this.geo_groundBase.length\n );\n\n this.scene.add(base);\n }\n public addHorSuperiorBeam(offsetX, userDataPos: any) {\n let offsetZ = 0;\n let offsetY = 0;\n\n let beamLength = this.totalBaySize + UI.overhangFront;\n\n let views: Print2DView[];\n offsetY = UI.height;\n offsetZ = this.totalBaySize + UI.overhangFront - UI.existingWidth1 / 2;\n\n if (userDataPos.left) {\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else {\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n this.cutStandardBeamByCutBeamWithinBayControl(\n this.beamInfo,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetX, offsetY, offsetZ),\n new Vector3(0, Math.PI / 2, 0),\n views,\n 1,\n userDataPos,\n 0,\n \"x\",\n \"EB\",\n this.geoBeamJoint\n );\n }\n private cutStandardBeamByCutBeamWithinBayControl(\n beamGeo: GeometryInfo,\n beamCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n userDataPos: any,\n beamGeoTranslationZ: number,\n beamDirection: string,\n beamName = \"\",\n jointGeo: GeometryInfo\n ) {\n // Map list cut beam here\n const beamStartZ = pos.z - length;\n const beamEndZ = pos.z;\n\n let endOfBayZ = -UI.existingWidth1 / 2;\n let startCutBeamZ = beamStartZ;\n let endCutBeamZ = beamStartZ;\n\n const beams = this.utils.getListSeperateBeamsByBaysForFbGable(\n endOfBayZ,\n beamStartZ,\n beamEndZ,\n endCutBeamZ,\n startCutBeamZ\n );\n\n for (let i = 0; i < beams.length; i++) {\n endCutBeamZ = beams[i][1];\n startCutBeamZ = beams[i][0];\n let beamGroup = this.utils.createBeamGroup2(\n beamGeo,\n beamCapGeo,\n endCutBeamZ - startCutBeamZ,\n new Vector3(pos.x, pos.y, endCutBeamZ),\n rot,\n views,\n directionOffset,\n userDataPos,\n beamGeoTranslationZ,\n beamDirection,\n UI.beamLayoutShow,\n {\n hasStartCap:\n UI.beamType == 0 &&\n (i == beams.length - 1 || (i == 0 && beams.length == 1)),\n hasEndCap: UI.beamType == 0 && i == 0,\n hasStartJoint: false,\n hasEndJoint: i !== 0,\n jointGeo: jointGeo,\n }\n );\n beamGroup.userData = {\n ...beamGroup.userData,\n name: beamName,\n };\n this.scene.add(beamGroup);\n }\n }\n public addPost(offsetZ: number, userDataPos: any) {\n const condition = offsetZ + this.APP.sldEaveWidth.currentValue;\n if (\n (UI.existingType === 1 || UI.existingType === 3) &&\n userDataPos.left &&\n (UI.existingWidth1 >= condition + UI.multiSpan ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition + UI.multiSpan &&\n UI.cutOutType == 1))\n ) {\n return;\n }\n if (\n (UI.existingType === 2 || UI.existingType === 3) &&\n userDataPos.right &&\n (UI.existingWidth1 >= condition + UI.multiSpan ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition + UI.multiSpan &&\n UI.cutOutType == 1))\n ) {\n return;\n }\n\n let views: Print2DView[] = [];\n if (userDataPos.back || userDataPos.center) {\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else {\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n const mesh = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n let posZ = offsetZ - UI.existingWidth1 / 2;\n if (userDataPos.back) {\n posZ = offsetZ + this.postInfo.width / 2 - UI.existingWidth1 / 2;\n } else if (userDataPos.front) {\n posZ = offsetZ - this.postInfo.width / 2 - UI.existingWidth1 / 2;\n }\n\n let scaleY = 0;\n let length = 0;\n\n if (userDataPos.isMultiSpan) {\n length = this.APP.sldBuildingHeight.currentValue;\n scaleY = length / this.postInfo.height;\n } else {\n length = this.APP.sldBuildingHeight.currentValue;\n scaleY = length / this.postInfo.height;\n }\n\n let offsetX = 0;\n if (userDataPos.left) {\n offsetX = -UI.span / 2 + this.postInfo.width / 2;\n } else if (userDataPos.right) {\n offsetX = UI.span / 2 - this.postInfo.width / 2;\n }\n\n mesh.position.set(offsetX, 0, posZ);\n mesh.scale.setY(scaleY);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n this.scene.add(mesh);\n }\n public addCenterSuperiorBeam() {\n let beamLength = this.totalBaySize + UI.overhangFront;\n\n let offsetY =\n UI.height +\n (UI.span / 2 - this.beamInfo.width / 2) * this.utils.tan(UI.patiosPitch);\n let offsetZ = this.totalBaySize + UI.overhangFront - UI.existingWidth1 / 2;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n this.cutStandardBeamByCutBeamWithinBayControl(\n this.beamInfo,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(0, offsetY, offsetZ),\n new Vector3(0, Math.PI / 2, 0),\n views,\n 1,\n { center: true },\n 0,\n \"x\",\n \"RB\",\n this.geoBeamJoint\n );\n }\n private addCenterPost(offsetZ, userDataPos) {\n let meshPost = new Mesh(\n this.geo_centerSuperiorPost.geometry,\n MaterialManager.Instance().BEAM\n );\n meshPost.userData = {\n ...userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_CENTER_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let scalePostY = 1;\n\n let views: Print2DView[];\n\n this.frontPostHeight = UI.height;\n\n scalePostY =\n ((UI.span / 2 - this.beamInfo.width / 2) *\n this.utils.tan(UI.patiosPitch) -\n this.beamInfo.height) /\n this.geo_centerSuperiorPost.height;\n\n if (userDataPos.last) {\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else {\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n let postOffsetX = -this.geo_centerSuperiorPost.width / 2;\n\n let postOffsetZ =\n offsetZ - this.geo_centerSuperiorPost.width / 2 - UI.existingWidth1 / 2;\n if (userDataPos.first) {\n postOffsetZ =\n offsetZ - this.geo_centerSuperiorPost.width / 2 - UI.existingWidth1 / 2;\n } else if (userDataPos.last) {\n postOffsetZ =\n offsetZ - this.geo_centerSuperiorPost.width - UI.existingWidth1 / 2;\n }\n\n meshPost.userData.views = views;\n meshPost.position.set(postOffsetX, UI.height, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n\n this.scene.add(meshPost);\n }\n public addRafterSuperiorBeam(offsetZ, userDataPos: any) {\n if (\n this.APP.sltWindClass.currentValue == 0 ||\n this.APP.sltWindClass.currentValue == 1\n ) {\n if (this.totalBaySize <= 6000 && this.APP.sldSpan.currentValue <= 7000) {\n return;\n }\n }\n if (\n this.APP.sltWindClass.currentValue == 3 ||\n this.APP.sltWindClass.currentValue == 4 ||\n this.APP.sltWindClass.currentValue == 5\n ) {\n return;\n }\n let mesh;\n\n let offsetXL = 0;\n let offsetXR =\n (UI.span / 2 - this.beamInfo.width / 2) / this.utils.cos(UI.patiosPitch);\n let offsetY = 0;\n\n let scaleX =\n (UI.span / 2 - this.beamInfo.width / 2) /\n this.utils.cos(UI.patiosPitch) /\n this.geo_RafterBeam.length;\n\n let views: Print2DView[];\n\n let fitZ = 0;\n\n if (userDataPos.left) {\n let material = MaterialManager.Instance().BEAM.clone();\n\n let nBottom = new Vector3(0, 1, 0).normalize();\n let pBottom = new Vector3(0, UI.height, 0);\n let planeBottom = new Plane().setFromNormalAndCoplanarPoint(\n nBottom,\n pBottom\n );\n\n let beamOffsetX = 0;\n\n let nVer = new Vector3(-1, 0, 0).normalize();\n let pVer = new Vector3(\n -this.beamInfo.width / 2 + beamOffsetX + this.scene.position.x + fitZ,\n 0,\n 0\n );\n let planeVer = new Plane().setFromNormalAndCoplanarPoint(nVer, pVer);\n\n material.clippingPlanes = [planeBottom, planeVer];\n\n mesh = new Mesh(this.geo_RafterBeam.geometry, material);\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.right) {\n let material = MaterialManager.Instance().BEAM.clone();\n\n let nBottom = new Vector3(0, 1, 0).normalize();\n let pBottom = new Vector3(0, UI.height, 0);\n let planeBottom = new Plane().setFromNormalAndCoplanarPoint(\n nBottom,\n pBottom\n );\n\n let beamOffsetX = 0;\n let nVer = new Vector3(1, 0, 0).normalize();\n let pVer = new Vector3(\n this.beamInfo.width / 2 + beamOffsetX + this.scene.position.x + fitZ,\n 0,\n 0\n );\n let planeVer = new Plane().setFromNormalAndCoplanarPoint(nVer, pVer);\n\n material.clippingPlanes = [planeBottom, planeVer];\n\n mesh = new Mesh(this.geo_RafterBeam.geometry, material);\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM,\n position: userDataPos,\n views: views,\n };\n mesh.position.set(offsetXL, 0, 0);\n mesh.scale.setX(scaleX);\n\n let checkExec = /\\w{1}\\d{1,3}x(\\d{1,3})/.exec(this.geo_RafterBeam.name);\n let beamSize = checkExec && checkExec.length == 2 ? checkExec[1] : \"\";\n let lowerBraketName = getRafterBeamEndCapCode(\n EXISTING_BUILDING_CONFIG.RAFTER_BEAM_SIZE,\n false\n );\n let higherBraketName = getRafterBeamEndCapCode(\n EXISTING_BUILDING_CONFIG.RAFTER_BEAM_SIZE,\n true\n );\n\n let capL;\n let capR;\n if (userDataPos.left) {\n let matEndCap = MaterialManager.Instance().BEAM.clone();\n\n let heightReal =\n UI.height + (this.utils.tan(UI.patiosPitch) * UI.span) / 2;\n let heightPlane = heightReal * this.utils.cos(UI.patiosPitch);\n let translateZ = this.utils.sin(UI.patiosPitch) * heightPlane;\n\n let planeTop = new Plane(new Vector3(0, -1, 0));\n let matrixTranslateTop = new Matrix4().makeTranslation(\n -translateZ / 2,\n heightPlane,\n 0\n );\n let matrixRotateTop = new Matrix4().makeRotationZ(\n this.utils.degreesToRadians(UI.patiosPitch)\n );\n let matrixTotalTop = matrixTranslateTop.multiply(matrixRotateTop);\n planeTop.applyMatrix4(matrixTotalTop);\n\n let heightRealBottom =\n UI.height -\n this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n (this.utils.tan(UI.patiosPitch) * UI.span) / 2;\n let heightPlaneBottom = heightRealBottom * this.utils.cos(UI.patiosPitch);\n let translateZBottom = this.utils.sin(UI.patiosPitch) * heightPlaneBottom;\n\n let planeBottom = new Plane(new Vector3(0, 1, 0));\n let matrixTranslateBottom = new Matrix4().makeTranslation(\n -translateZBottom / 2,\n heightPlaneBottom,\n 0\n );\n let matrixRotateBottom = new Matrix4().makeRotationZ(\n this.utils.degreesToRadians(UI.patiosPitch)\n );\n let matrixTotalBottom =\n matrixTranslateBottom.multiply(matrixRotateBottom);\n planeBottom.applyMatrix4(matrixTotalBottom);\n\n let beamOffsetX = this.scene.position.x;\n\n planeTop.translate(new Vector3(beamOffsetX, 0, 0));\n planeBottom.translate(new Vector3(beamOffsetX, 0, 0));\n\n matEndCap.clippingPlanes = [planeTop, planeBottom];\n\n capL = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capL.position.set(offsetXL - 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capL.scale.setY(\n (this.geo_RafterBeam.height / this.utils.sin(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length / this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capL.rotateY(Math.PI / 2);\n capL.rotateX(-Math.PI / 2 + this.utils.degreesToRadians(UI.patiosPitch));\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: lowerBraketName,\n };\n\n capR = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capR.position.set(offsetXR + 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capR.scale.setY(\n (this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length * this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capR.rotateY(-Math.PI / 2);\n capR.rotateX(-this.utils.degreesToRadians(UI.patiosPitch));\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: higherBraketName,\n };\n } else {\n let matEndCap = MaterialManager.Instance().BEAM.clone();\n\n let heightReal =\n UI.height + (this.utils.tan(UI.patiosPitch) * UI.span) / 2;\n let heightPlane = heightReal * this.utils.cos(UI.patiosPitch);\n let translateZ = this.utils.sin(UI.patiosPitch) * heightPlane;\n\n let planeTop = new Plane(new Vector3(0, -1, 0));\n let matrixTranslateTop = new Matrix4().makeTranslation(\n translateZ / 2,\n heightPlane,\n 0\n );\n let matrixRotateTop = new Matrix4().makeRotationZ(\n -this.utils.degreesToRadians(UI.patiosPitch)\n ); //tao voi z pitch do\n let matrixTotalTop = matrixTranslateTop.multiply(matrixRotateTop);\n planeTop.applyMatrix4(matrixTotalTop);\n\n let heightRealBottom =\n UI.height -\n this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n (this.utils.tan(UI.patiosPitch) * UI.span) / 2;\n let heightPlaneBottom = heightRealBottom * this.utils.cos(UI.patiosPitch);\n let translateZBottom = this.utils.sin(UI.patiosPitch) * heightPlaneBottom;\n\n let planeBottom = new Plane(new Vector3(0, 1, 0));\n let matrixTranslateBottom = new Matrix4().makeTranslation(\n translateZBottom / 2,\n heightPlaneBottom,\n 0\n );\n let matrixRotateBottom = new Matrix4().makeRotationZ(\n -this.utils.degreesToRadians(UI.patiosPitch)\n ); //tao voi z pitch do\n let matrixTotalBottom =\n matrixTranslateBottom.multiply(matrixRotateBottom);\n planeBottom.applyMatrix4(matrixTotalBottom);\n\n let beamOffsetX = this.scene.position.x;\n\n planeTop.translate(new Vector3(beamOffsetX, 0, 0));\n planeBottom.translate(new Vector3(beamOffsetX, 0, 0));\n\n matEndCap.clippingPlanes = [planeTop, planeBottom];\n\n capL = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capL.position.set(offsetXL - 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capL.scale.setY(\n (this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length * this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capL.rotateY(Math.PI / 2);\n capL.rotateX(-this.utils.degreesToRadians(UI.patiosPitch));\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: higherBraketName,\n };\n\n capR = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capR.position.set(offsetXR + 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capR.scale.setY(\n (this.geo_RafterBeam.height / this.utils.sin(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length / this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capR.rotateY(-Math.PI / 2);\n capR.rotateX(-Math.PI / 2 + this.utils.degreesToRadians(UI.patiosPitch));\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: lowerBraketName,\n };\n }\n\n let offsetX = 0;\n if (userDataPos.left) {\n offsetX = -UI.span / 2;\n offsetY = UI.height;\n } else if (userDataPos.right) {\n offsetX = this.geo_centerSuperiorPost.width / 2;\n offsetY =\n UI.height +\n (UI.span / 2 - this.beamInfo.width / 2) *\n this.utils.tan(UI.patiosPitch);\n }\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM,\n position: userDataPos,\n views: views,\n };\n beamGroup.position.set(offsetX, offsetY, offsetZ);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n\n if (userDataPos.left) {\n beamGroup.rotateZ(this.utils.degreesToRadians(UI.patiosPitch));\n } else if (userDataPos.right) {\n beamGroup.rotateZ(-this.utils.degreesToRadians(UI.patiosPitch));\n }\n\n this.scene.add(beamGroup);\n }\n public addBeam(offsetZ: number, userDataPos: any) {\n let offsetY = 0;\n\n let beamLength = UI.span - 2 * this.postInfo.width;\n if (userDataPos.back) {\n beamLength = UI.span - 2 * this.beamInfo.width;\n }\n\n let offsetX = -UI.span / 2 + this.postInfo.width;\n if (userDataPos.back) {\n offsetX = -UI.span / 2 + this.beamInfo.width;\n }\n\n let posZ = 0;\n let views: Print2DView[] = [];\n if (userDataPos.front) {\n offsetY = UI.height;\n posZ = offsetZ - this.beamInfo.width / 2 - UI.existingWidth1 / 2;\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.center) {\n offsetY = UI.height;\n posZ = offsetZ - UI.existingWidth1 / 2;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.back) {\n offsetY = UI.height;\n posZ = offsetZ + this.beamInfo.width / 2 - UI.existingWidth1 / 2;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n let beamGroup: Group;\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup = this.utils.createBeamGroup2(\n this.beamInfo,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetX, offsetY, posZ),\n new Vector3(),\n views,\n 1,\n userDataPos,\n 0,\n \"x\",\n false,\n {\n hasStartCap: UI.beamType == 0,\n hasEndCap: UI.beamType == 0,\n hasStartJoint: false,\n hasEndJoint: false,\n jointGeo: null,\n }\n );\n } else {\n beamGroup = this.utils.createBeamGroup2(\n this.beamInfo,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetX, offsetY, posZ),\n new Vector3(),\n views,\n 1,\n userDataPos,\n 0,\n \"x\",\n false,\n {\n hasStartCap: UI.beamType == 0,\n hasEndCap: UI.beamType == 0,\n hasStartJoint: false,\n hasEndJoint: false,\n jointGeo: null,\n }\n );\n }\n beamGroup.userData = {\n ...beamGroup.userData,\n name: \"GB\",\n };\n\n this.scene.add(beamGroup);\n }\n\n private getHeightByRoofPitch(isSpan: boolean): number {\n if (isSpan) {\n return (\n this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n this.APP.sldSpan.currentValue\n );\n } else {\n return (\n this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue)\n );\n }\n }\n}\n","import { Mesh, Vector3, Material, Plane, Geometry, BufferGeometry, Group, BoxBufferGeometry, MeshLambertMaterial, BoxHelper, Matrix4, PlaneHelper, Points, PointsMaterial, Color, PlaneBufferGeometry, DoubleSide, Object3D, LineSegments } from 'three';\nimport { Util } from '../utils';\nimport { CONFIG as env, GEOMETRY_TYPE, GEOMETRY_CATEGORY } from '../../app.config';\nimport { BUILDING_SIDE, CUTOUT_ENABLE, EXISTING_BUILDING_CONFIG as CONST, EXISTING_BUILDING_CONFIG, PANEL_DIRECTION, RAKECUT_TYPE } from '../../app.constants';\nimport { HomeComponent as AppComponent } from '../../containers/home/home.component';\nimport { GeometryManager } from '../geometry.manager';\nimport { MaterialManager } from '../material.manager';\nimport { GeometryInfo, Printing2DGeometry, Printing2DLine, Print2DView, ViewType, LineType } from '../models';\nimport { GableFBExistingBuildingManager } from '.';\nimport { CSG } from 'three-csg-ts';\nimport HighLightBox from 'src/app/models/HighlightBox';\nimport { UI } from '../ui';\nimport SelectionManager from '../selection.manager';\n\nexport class RoofManager {\n private scene: Group;\n private APP: AppComponent;\n private MANAGER: GableFBExistingBuildingManager;\n private material: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n public ridgeGeo: GeometryInfo;\n private roofInfo: GeometryInfo;\n private roofBaseInfo: GeometryInfo;\n private bargeLeftInfo: GeometryInfo;\n private bargeRightInfo: GeometryInfo;\n private receiverCutoutLeftHor: GeometryInfo;\n private receiverCutoutRightHor: GeometryInfo;\n private receiverCutoutRightVer: GeometryInfo;\n private receiverCutoutRightVer2: GeometryInfo;\n private receiverCutoutLeftVer: GeometryInfo;\n private receiverCutoutLeftVer2: GeometryInfo;\n private gutterInfo: GeometryInfo;\n private gutterRakecutLeftInfo: GeometryInfo;\n private gutterRakecutRightInfo: GeometryInfo;\n //private flashingInfo: GeometryInfo;\n private geo_receiverChanel: GeometryInfo;\n private zFlashingGeo: GeometryInfo;\n private zFlashingRakecutRightGeo: GeometryInfo;\n private geo_gutterCap: GeometryInfo;\n private roofGroupRight: Group;\n private roofGroupLeft: Group;\n\n private eventHandleId: any;\n\n // Var\n private roofLengthPlus: number;\n private roofWidth: number;\n private roofLength: number;\n private totalBaySize: number;\n\n private objectSizeChangedHandle: any;\n\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n\n private mesh_CutoutLeft: Mesh;\n private csg_cutoutLeft: CSG;\n private mesh_CutoutRight: Mesh;\n private csg_cutoutRight: CSG;\n private geo_cutoutLeft: BoxBufferGeometry;\n private geo_cutoutRight: BoxBufferGeometry;\n\n private geo_rakecutLeft: BoxBufferGeometry;\n private geo_rakecutRight: BoxBufferGeometry;\n private mesh_rakecutLeft: Mesh;\n private mesh_rakecutRight: Mesh;\n private csg_rakecutLeft: CSG;\n private csg_rakecutRight: CSG;\n\n private geoCutGutter: BoxBufferGeometry;\n private meshCutGutterLeft1: Mesh;\n private csgCutGutterLeft1: CSG;\n private meshCutGutterLeft2: Mesh;\n private csgCutGutterLeft2: CSG;\n\n private meshCutGutterRight1: Mesh;\n private csgCutGutterRight1: CSG;\n private meshCutGutterRight2: Mesh;\n private csgCutGutterRight2: CSG;\n\n private enableCutout: boolean;\n private deferHandle;\n private deferTimeout = EXISTING_BUILDING_CONFIG.CUTOUT_DEFFER_TIME_OUT;\n\n\n constructor(app: AppComponent, existingManager: GableFBExistingBuildingManager) {\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.APP = app;\n this.MANAGER = existingManager;\n this.scene = new Group();\n existingManager.patiosGroup.add(this.scene)\n this.material = MaterialManager.Instance().ROOF;\n this.registerEvent();\n }\n\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n this.roofInfo = this.geometryManager.getRoofSheetPanel();\n this.roofInfo.geometry\n .translate(-this.roofInfo.width / 2 + 10, -1, this.roofInfo.length / 2)\n .rotateY(Math.PI / 2);\n\n this.roofBaseInfo = this.geometryManager.getRoofBase();\n this.roofBaseInfo.geometry\n .translate(-this.roofBaseInfo.width / 2, this.roofBaseInfo.height / 2, this.roofBaseInfo.length / 2)\n .rotateY(Math.PI / 2);\n\n this.zFlashingGeo = this.geometryManager.getZFlashing();\n this.zFlashingGeo.geometry.translate(0, -3, 0).rotateY(Math.PI / 2);\n this.zFlashingRakecutRightGeo = this.geometryManager.getZFlashing();\n this.zFlashingRakecutRightGeo.geometry.translate(-this.zFlashingRakecutRightGeo.length, 0, 0);\n\n // Barge capping - left\n this.bargeLeftInfo = this.geometryManager.getBarge();\n this.bargeLeftInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.bargeLeftInfo.length / 2, this.bargeLeftInfo.height / 2 - (this.APP.sltDripBarge.currentValue ? 9 : 1), -this.bargeLeftInfo.width / 2 + 3);\n\n // Barge capping - right\n this.bargeRightInfo = this.geometryManager.getBarge();\n this.bargeRightInfo.geometry\n .rotateY(Math.PI / 2)\n .translate(this.bargeRightInfo.length / 2, this.bargeRightInfo.height / 2 - (this.APP.sltDripBarge.currentValue ? 9 : 1), this.bargeRightInfo.width / 2 - 3);\n\n //Barge cutout left\n this.receiverCutoutLeftHor = this.geometryManager.getReceiverChannel();\n this.receiverCutoutLeftHor.geometry\n .rotateY(Math.PI / 2)\n .translate(-this.receiverCutoutLeftHor.length / 2, this.receiverCutoutLeftHor.height / 2, this.receiverCutoutLeftHor.width / 2);\n\n //Barge cutout right\n this.receiverCutoutRightHor = this.geometryManager.getReceiverChannel();\n this.receiverCutoutRightHor.geometry\n .rotateY(Math.PI / 2)\n .translate(this.receiverCutoutRightHor.length / 2, this.receiverCutoutRightHor.height / 2, this.receiverCutoutRightHor.width / 2);\n\n \n //Vertical Barge cutout left 2\n this.receiverCutoutLeftVer2 = this.geometryManager.getReceiverChannel();\n this.receiverCutoutLeftVer2.geometry\n .rotateY(Math.PI)\n .translate(this.receiverCutoutLeftVer2.width / 2, this.receiverCutoutLeftVer2.height / 2, this.receiverCutoutLeftVer2.length / 2);\n\n //Vertical cutout right 2\n this.receiverCutoutRightVer2 = this.geometryManager.getReceiverChannel();\n this.receiverCutoutRightVer2.geometry\n .translate(-this.receiverCutoutRightVer2.width / 2, this.receiverCutoutRightVer2.height / 2, this.receiverCutoutRightVer2.length / 2);\n\n //Vertical Barge cutout left\n this.receiverCutoutLeftVer = this.geometryManager.getReceiverChannel();\n this.receiverCutoutLeftVer.geometry\n .rotateY(Math.PI)\n .translate(this.receiverCutoutLeftVer.width / 2, this.receiverCutoutLeftVer.height / 2, this.receiverCutoutLeftVer.length / 2);\n\n //Vertical cutout right\n this.receiverCutoutRightVer = this.geometryManager.getReceiverChannel();\n this.receiverCutoutRightVer.geometry\n .translate(-this.receiverCutoutRightVer.width / 2, this.receiverCutoutRightVer.height / 2, this.receiverCutoutRightVer.length / 2);\n\n //Receiver chanel - barge caping back\n this.geo_receiverChanel = this.geometryManager.getReceiverChannel();\n this.geo_receiverChanel.geometry\n .rotateY(Math.PI / 2)\n .translate(this.geo_receiverChanel.length / 2, this.geo_receiverChanel.height / 2, this.geo_receiverChanel.width / 2);\n\n // Gutter\n let gtExtraOffsetY = 0;\n if (this.APP.sltGutterType.currentValue == 1 || this.APP.sltGutterType.currentValue == 2) {\n gtExtraOffsetY = 20;\n }\n\n this.gutterInfo = this.geometryManager.getGutter();\n this.gutterInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.gutterInfo.length / 2, -20, this.gutterInfo.width / 2);\n\n this.gutterRakecutLeftInfo = this.geometryManager.getGutter();\n this.gutterRakecutLeftInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.gutterRakecutLeftInfo.length / 2, -20, this.gutterRakecutLeftInfo.width / 2);\n\n this.gutterRakecutRightInfo = this.geometryManager.getGutter();\n this.gutterRakecutRightInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(-this.gutterRakecutRightInfo.length / 2, -20, this.gutterRakecutRightInfo.width / 2);\n\n //Gutter cap\n this.geo_gutterCap = this.geometryManager.getGuterEndCap();\n this.geo_gutterCap.geometry\n .rotateY(-Math.PI / 2)\n .translate(0, -20, this.geo_gutterCap.length / 2);\n\n this.geo_cutoutLeft = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_cutoutLeft.translate(-500, 0, -500);\n\n this.geo_cutoutRight = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_cutoutRight.translate(500, 0, -500);\n\n this.geo_rakecutLeft = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_rakecutLeft.translate(-500, 500, 500);\n this.geo_rakecutRight = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_rakecutRight.translate(500, 500, 500);\n\n this.geoCutGutter = new BoxBufferGeometry(500, 10000, 500);\n this.geoCutGutter.translate(0, 0, -250);\n\n this.ridgeGeo = this.geometryManager.getRidge();\n this.ridgeGeo.geometry.translate(- this.ridgeGeo.width / 2, -this.ridgeGeo.height / 2, 0);\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(...this.scene.children.filter(x => x.userData.type === GEOMETRY_TYPE.ROOF_PANEL \n || x.userData.type === GEOMETRY_TYPE.ROOF_PANEL_BASE\n || x.userData.type === GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING\n || x.userData.type === GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n || x.userData.type === GEOMETRY_TYPE.GUTTER_PATIOS\n || x.userData.type === GEOMETRY_TYPE.ROOF_PATIOS\n || x.userData.type === GEOMETRY_TYPE.HIGHLIGHT_BOX));\n\n // this.scene.remove(...this.scene.children.filter(x => x.userData.type === GEOMETRY_TYPE.ROOF_PANEL_BASE));\n // this.scene.remove(...this.scene.children.filter(x => x.userData.type === this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING));\n // this.scene.remove(...this.scene.children.filter(x => x.userData.type === GEOMETRY_TYPE.GUTTER_PATIOS));\n // this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PATIOS));\n // this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PATIOS));\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.SHEET_OUTLINE));\n\n //test\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == 'HELPER'));\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == 'RAKECUT'));\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == 'CUTGUTTER'));\n\n //this.scene.remove(...this.scene.children.filter(x => x.userData.type === 'ROOF_OUTLINE'));\n\n this.totalBaySize = this.APP.dialogEditBay.totalBaySize;\n this.roofLength = UI.span / 2 + UI.overhangRight;\n this.roofLengthPlus = (UI.span / 2 + UI.overhangRight) / this.utils.cos(UI.patiosPitch);\n this.roofWidth = this.totalBaySize + UI.overhangFront;\n\n this.addRoofGroupRight();\n this.addRoofGroupLeft();\n this.addCutout();\n\n let roofPanelCount = Math.ceil(this.roofWidth / this.roofInfo.width);\n this.enableCutout = this.MANAGER.cutoutCondition;\n\n //clipping plane\n let offsetFront = this.totalBaySize + UI.overhangFront - UI.existingWidth1 / 2;\n let offsetBack = - UI.overhangBack - UI.existingWidth1 / 2;\n\n let clipingPlaneFront = new Plane(new Vector3(0, 0, -1), offsetFront);\n let clipingPlaneBack = new Plane(new Vector3(0, 0, 1), -offsetBack);\n \n this.material.clippingPlanes = [clipingPlaneFront, clipingPlaneBack];\n MaterialManager.Instance().ROOF_BASE.clippingPlanes = [clipingPlaneFront, clipingPlaneBack];\n\n //panel direction\n let offsetZ = 0;\n let panelDirectionOfset = 1;\n if(this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT){\n offsetZ = this.totalBaySize + UI.overhangFront - this.roofInfo.width;\n panelDirectionOfset = -1;\n }\n else if(this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.LEFT_TO_RIGHT){\n offsetZ = 0;\n }\n\n if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT && this.enableCutout) {\n let totalPanelLength = 0;\n let cuted = true;\n for (let index = 0; index < roofPanelCount; index++) {\n totalPanelLength += this.roofInfo.width;\n let isOver = totalPanelLength < this.APP.sldExistingLength2.currentValue;\n\n this.addRoofBaseRight(offsetZ, [this.csg_cutoutLeft] );\n this.addRoofRight(offsetZ, [this.csg_cutoutLeft]);\n\n this.addRoofBaseLeft(offsetZ, [this.csg_cutoutLeft] );\n this.addRoofLeft(offsetZ, [this.csg_cutoutLeft]);\n\n cuted = isOver;\n offsetZ += this.roofInfo.width * panelDirectionOfset;\n }\n }\n else if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT && this.enableCutout) {\n let totalPanelLength = 0;\n let cuted = false;\n for (let index = 0; index < roofPanelCount; index++) {\n totalPanelLength += this.roofInfo.width;\n let isOver = totalPanelLength >= this.roofWidth - this.APP.sldExistingLength2.currentValue + this.roofInfo.width;\n cuted = totalPanelLength >= this.roofWidth - this.APP.sldExistingLength2.currentValue && !isOver;\n this.addRoofBaseRight(offsetZ, [this.csg_cutoutRight] );\n this.addRoofRight(offsetZ, [this.csg_cutoutRight] );\n\n this.addRoofBaseLeft(offsetZ, [this.csg_cutoutRight] );\n this.addRoofLeft(offsetZ, [this.csg_cutoutRight]);\n\n offsetZ += this.roofInfo.width * panelDirectionOfset;\n }\n }\n else if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH && this.enableCutout) {\n let totalPanelLength = 0;\n let cuted = false;\n let cuted2 = false;\n for (let index = 0; index < roofPanelCount; index++) {\n totalPanelLength += this.roofInfo.width;\n let isOver = totalPanelLength < this.APP.sldExistingLength2.currentValue;\n let isOver2 = totalPanelLength >= this.roofWidth - this.APP.sldExistingLength2.currentValue + this.roofInfo.width;\n let flag = totalPanelLength >= this.roofWidth - this.APP.sldExistingLength2.currentValue;\n\n this.addRoofBaseRight(offsetZ, [this.csg_cutoutLeft, this.csg_cutoutRight]);\n this.addRoofRight(offsetZ, [this.csg_cutoutLeft, this.csg_cutoutRight]);\n\n this.addRoofBaseLeft(offsetZ, [this.csg_cutoutLeft, this.csg_cutoutRight] );\n this.addRoofLeft(offsetZ, [this.csg_cutoutLeft, this.csg_cutoutRight]);\n\n offsetZ += this.roofInfo.width * panelDirectionOfset;\n }\n }\n else {\n for (let index = 0; index < roofPanelCount; index++) {\n this.addRoofBaseRight(offsetZ, []);\n this.addRoofRight(offsetZ, []);\n\n this.addRoofBaseLeft(offsetZ, [] );\n this.addRoofLeft(offsetZ, []);\n\n offsetZ += this.roofInfo.width * panelDirectionOfset;\n }\n }\n\n this.addZFlashingRight();\n this.addZFlashingLeft();\n\n this.addBargeRight();\n this.addBargeLeft();\n\n this.addGutterRight();\n this.addGutterLeft();\n\n this.addRidgeCapping();\n\n this.showPanelOutline();\n\n this.scene.visible = UI.showRoof\n\n //this.getOutLines();\n resolve();\n });\n }\n private addCutout() {\n if (this.APP.sltCutOut.currentValue == 1) {\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == 'CUTOUT'));\n\n let offsetX = this.APP.sldExistingLength.currentValue / 2;\n let offsetY = 0;\n let offsetZ = this.APP.sldExistingWidth1.currentValue / 2;\n\n let scaleX = (this.APP.sldExistingLength2.currentValue + 5000) / 1000;\n if (scaleX == 0) scaleX = 1;\n let scaleY = (this.APP.sldExistingWallHeight.currentValue + 5000) / 1000;\n let scaleZ = (this.APP.sldExistingWidth1.currentValue + 5000) / 1000;\n if (scaleZ == 0) scaleZ = 1;\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT || this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n this.mesh_CutoutLeft = new Mesh(this.geo_cutoutLeft, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.mesh_CutoutLeft.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: 'CUTOUT' };\n\n this.mesh_CutoutLeft.position.set(-offsetX, offsetY, offsetZ);\n this.mesh_CutoutLeft.scale.set(scaleX, scaleY, scaleZ);\n\n //this.APP.scene.add(this.mesh_CutoutLeft);\n\n this.mesh_CutoutLeft.updateMatrix();\n this.csg_cutoutLeft = CSG.fromMesh(this.mesh_CutoutLeft);\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT || this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n this.mesh_CutoutRight = new Mesh(this.geo_cutoutRight, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.mesh_CutoutRight.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: 'CUTOUT' };\n\n this.mesh_CutoutRight.position.set(offsetX, offsetY, offsetZ);\n this.mesh_CutoutRight.scale.set(scaleX, scaleY, scaleZ);\n\n //this.APP.scene.add(this.mesh_CutoutRight);\n\n this.mesh_CutoutRight.updateMatrix();\n this.csg_cutoutRight = CSG.fromMesh(this.mesh_CutoutRight);\n }\n }\n }\n \n public addRoofGroupRight() {\n this.roofGroupRight = null;\n this.roofGroupRight = new Group();\n this.roofGroupRight.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PATIOS };\n\n //let offsetX = -this.APP.sldLeftOverhang.currentValue;\n let offsetY = this.getRoofOffsetY();\n let offsetZ = -UI.existingWidth1 / 2;\n\n this.roofGroupRight.position.set(0, offsetY, offsetZ);\n this.roofGroupRight.rotation.set(0, 0, -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue));\n\n this.scene.add(this.roofGroupRight);\n }\n public addRoofGroupLeft() {\n this.roofGroupLeft = null;\n this.roofGroupLeft = new Group();\n this.roofGroupLeft.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PATIOS };\n\n //let offsetX = -this.APP.sldLeftOverhang.currentValue;\n let offsetY = this.getRoofOffsetY();\n let offsetZ = -UI.existingWidth1 / 2;\n\n this.roofGroupLeft.position.set(0, offsetY, offsetZ);\n this.roofGroupLeft.rotation.set(0, 0, this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue));\n\n this.scene.add(this.roofGroupLeft);\n }\n public getOutLines(): Printing2DGeometry {\n\n let objs = this.roofGroupRight.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL\n || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ).concat(\n ...this.roofGroupLeft.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n )\n );\n\n let gutterGroupObjs = this.roofGroupRight.children.filter(o => o.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS).concat(\n ...this.roofGroupLeft.children.filter(o => o.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS)\n );\n let gutterObjs: Object3D[] = [];\n for(let group of gutterGroupObjs){\n gutterObjs.push(...group.children);\n }\n\n objs = [...objs, ...gutterObjs];\n\n let lsGeometries: Printing2DLine[] = [];\n\n let offsetFront = this.totalBaySize + UI.overhangFront - UI.existingWidth1 / 2;\n let offsetBack = - UI.overhangBack - UI.existingWidth1 / 2;\n\n let clipingPlaneFront = new Plane(new Vector3(0, 0, -1), offsetFront);\n let clipingPlaneBack = new Plane(new Vector3(0, 0, 1), -offsetBack);\n\n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale((o as Mesh), 60);\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n outlineGeo.translate(0, 5000, 0);\n\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL) {\n outlineGeo = this.utils.clipOutline(outlineGeo, clipingPlaneFront);\n outlineGeo = this.utils.clipOutline(outlineGeo, clipingPlaneBack);\n }\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE) {\n outlineGeo = this.utils.clipOutlineBasePanel(outlineGeo, clipingPlaneFront);\n outlineGeo = this.utils.clipOutlineBasePanel(outlineGeo, clipingPlaneBack);\n }\n\n let simplifiedGeo = this.simplifyGeo(outlineGeo);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: simplifiedGeo.vertices,\n views: o.userData.views\n });\n }\n\n let ridgeCapping = this.scene.children.find(el => el.userData.type === GEOMETRY_TYPE.RIDGE_CAPPING)\n if(ridgeCapping){\n ridgeCapping.children.forEach(el => {\n this.utils.createOutline(el as Mesh, lsGeometries);\n })\n }\n\n lsGeometries.push({\n objectType: GEOMETRY_TYPE.ROOF_COVER,\n vertices: this.makeRoofPolygon(),\n color: this.utils.convertHexColorToRgb(`#${new Color(UI.panelColor).getHexString()}`),\n views: [\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ]\n });\n\n return { lines: lsGeometries, texts: [] };\n }\n makeRoofPolygon() {\n const polygon = this.utils.getRoofCoverPolygonForFBRoof()\n this.MANAGER.patiosGroup.updateWorldMatrix(true, true)\n return polygon.map(el => (el as Vector3).applyMatrix4(this.MANAGER.patiosGroup.matrixWorld).add(new Vector3(0, 0, -UI.existingWidth1 / 2 - UI.overhangBack)))\n }\n public showPanelOutline(){\n if(this.APP.sltPanelDirectionShow.currentValue == false)\n return;\n\n let objs = this.roofGroupRight.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ).concat(\n ...this.roofGroupLeft.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n )\n );\n\n let offsetFront = this.totalBaySize + UI.overhangFront - UI.existingWidth1 / 2;\n let offsetBack = - UI.overhangBack - UI.existingWidth1 / 2;\n\n let clipingPlaneFront = new Plane(new Vector3(0, 0, -1), offsetFront);\n let clipingPlaneBack = new Plane(new Vector3(0, 0, 1), -offsetBack);\n\n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale((o as Mesh), 60);\n\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n //outlineGeo.translate(0, 5000, 0);\n\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE) {\n outlineGeo = this.utils.clipOutline(outlineGeo, clipingPlaneFront);\n outlineGeo = this.utils.clipOutline(outlineGeo, clipingPlaneBack);\n }\n\n var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n line.userData = {type: GEOMETRY_TYPE.SHEET_OUTLINE};\n this.APP.scene.add( line );\n }\n}\n public simplifyGeo(geo: BufferGeometry): Geometry {\n let simplifiedGeo = new Geometry();\n let vertices = geo.getAttribute('position').array;\n for (let i = 0; i < vertices.length; i += 3) {\n simplifiedGeo.vertices.push(new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2]));\n }\n return simplifiedGeo;\n }\n public addRoofRight(offsetZ: number, csgObjs: CSG[]) {\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n // { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n const mesh: Mesh = new Mesh(this.roofInfo.geometry, MaterialManager.Instance().ROOF);\n\n let offsetSheet = 0;\n if (this.APP.sltRoofSheetingType.currentValue == 0 || this.APP.sltRoofSheetingType.currentValue == 1) {\n offsetSheet = 13;\n }\n else {\n offsetSheet = 5;\n }\n\n const offsetPitch = this.roofBaseInfo.height * this.utils.tan(UI.patiosPitch)\n\n let scaleZ = ((UI.span / 2 + UI.overhangRight) / this.utils.cos(UI.patiosPitch) - offsetPitch) / this.roofInfo.length;\n const offsetY = this.roofBaseInfo.height - offsetSheet;\n let offsetX = 0;\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setX(scaleZ);\n mesh.userData = { \n category: GEOMETRY_CATEGORY.PATIOS, \n type: GEOMETRY_TYPE.ROOF_PANEL, \n views: views,\n dir: UI.panelDirection === PANEL_DIRECTION.RIGHT_TO_LEFT ? \"L-R\" : \"R-L\"\n };\n \n let cutoutCondition = this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue != BUILDING_SIDE.NONE && this.APP.sldExistingLength2.currentValue > 0;\n \n if (cutoutCondition) {\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n mesh.position.set(offsetX + this.MANAGER.patiosGroup.position.x, offsetY, offsetZ + this.roofGroupRight.position.z);\n\n mesh.updateMatrix();\n\n let meshResult = mesh.clone();\n\n if(cutoutCondition){\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n }\n }\n \n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix));\n meshResult.applyMatrix4(matrixBefore);\n\n this.roofGroupRight.add(meshResult);\n }\n else {\n this.roofGroupRight.add(mesh);\n }\n }\n public addRoofLeft(offsetZ: number, csgObjs: CSG[]) {\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n // { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n const mesh: Mesh = new Mesh(this.roofInfo.geometry, MaterialManager.Instance().ROOF);\n\n let offsetSheet = 0;\n if (this.APP.sltRoofSheetingType.currentValue == 0 || this.APP.sltRoofSheetingType.currentValue == 1) {\n offsetSheet = 13;\n }\n else {\n offsetSheet = 5;\n }\n\n const offsetPitch = this.roofBaseInfo.height * this.utils.tan(UI.patiosPitch)\n\n let scaleZ = ((UI.span / 2 + UI.overhangLeft) / this.utils.cos(UI.patiosPitch) - offsetPitch) / this.roofInfo.length;\n const offsetY = this.roofBaseInfo.height - offsetSheet;\n let offsetX = 0;\n mesh.position.set(offsetX - scaleZ * this.roofInfo.length, offsetY, offsetZ);\n mesh.scale.setX(scaleZ);\n mesh.userData = { \n category: GEOMETRY_CATEGORY.PATIOS, \n type: GEOMETRY_TYPE.ROOF_PANEL, \n views: views,\n dir: UI.panelDirection === PANEL_DIRECTION.LEFT_TO_RIGHT ? \"L-R\" : \"R-L\"\n };\n \n let cutoutCondition = this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue != BUILDING_SIDE.NONE && this.APP.sldExistingLength2.currentValue > 0;\n \n if (cutoutCondition) {\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n mesh.position.set(offsetX - scaleZ * this.roofInfo.length + this.MANAGER.patiosGroup.position.x, offsetY, offsetZ + this.roofGroupRight.position.z);\n\n mesh.updateMatrix();\n\n let meshResult = mesh.clone();\n\n if(cutoutCondition){\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n }\n }\n \n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix));\n meshResult.applyMatrix4(matrixBefore);\n\n this.roofGroupLeft.add(meshResult);\n }\n else {\n this.roofGroupLeft.add(mesh);\n }\n }\n public addRoofBaseRight(offsetZ: number, csgObjs: CSG[]) {\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n // { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n const mesh: Mesh = new Mesh(this.roofBaseInfo.geometry, MaterialManager.Instance().ROOF_BASE);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PANEL_BASE, views: views };\n\n const offsetPitch = this.roofBaseInfo.height * this.utils.tan(UI.patiosPitch)\n\n let scaleZ = ((UI.span / 2 + UI.overhangRight) / this.utils.cos(UI.patiosPitch) - offsetPitch - 60) / this.roofBaseInfo.length;\n const offsetY = 0;\n let offsetX = 0;\n\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setX(scaleZ);\n\n let cutoutCondition = this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue != BUILDING_SIDE.NONE && this.APP.sldExistingLength2.currentValue > 0;\n\n if (cutoutCondition) {\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n mesh.position.set(offsetX + this.MANAGER.patiosGroup.position.x, offsetY, offsetZ + this.roofGroupRight.position.z);\n mesh.updateMatrix();\n\n let meshResult = mesh.clone();\n \n if(cutoutCondition){\n //meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n }\n }\n \n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix));\n meshResult.applyMatrix4(matrixBefore);\n\n this.roofGroupRight.add(meshResult);\n }\n else {\n this.roofGroupRight.add(mesh);\n }\n }\n public addRoofBaseLeft(offsetZ: number, csgObjs: CSG[]) {\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n // { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n const mesh: Mesh = new Mesh(this.roofBaseInfo.geometry, MaterialManager.Instance().ROOF_BASE);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PANEL_BASE, views: views };\n\n const offsetPitch = this.roofBaseInfo.height * this.utils.tan(UI.patiosPitch)\n\n let scaleZ = ((UI.span / 2 + UI.overhangLeft) / this.utils.cos(UI.patiosPitch) - offsetPitch - 60) / this.roofBaseInfo.length;\n const offsetY = 0;\n let offsetX = 0;\n\n mesh.position.set(offsetX - scaleZ * this.roofBaseInfo.length, offsetY, offsetZ);\n mesh.scale.setX(scaleZ);\n\n let cutoutCondition = this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue != BUILDING_SIDE.NONE && this.APP.sldExistingLength2.currentValue > 0;\n\n if (cutoutCondition) {\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n mesh.position.set(offsetX + this.MANAGER.patiosGroup.position.x - scaleZ * this.roofBaseInfo.length, offsetY, offsetZ + this.roofGroupRight.position.z);\n mesh.updateMatrix();\n\n let meshResult = mesh.clone();\n \n if(cutoutCondition){\n //meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n }\n }\n \n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix));\n meshResult.applyMatrix4(matrixBefore);\n\n this.roofGroupLeft.add(meshResult);\n }\n else {\n this.roofGroupLeft.add(mesh);\n }\n }\n private addBargeRight() {\n let mesh: Mesh;\n let extraWallWidth = this.APP.existingWallManager.geo_existingWallW1.width + EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n let offsetXL2 = 0;\n\n let offsetXR2 = 0;\n\n let offsetZL = this.totalBaySize + UI.overhangFront;\n let offsetZR = 0;\n\n let offsetY = 0;\n let bargeLeftLength = UI.span / 2 + UI.overhangRight;\n let bargeRightLength = UI.span / 2 + UI.overhangRight;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n const offsetPitch = this.roofBaseInfo.height * this.utils.tan(UI.patiosPitch)\n\n let scaleZLeft = (this.utils.getHypotenuseByCos(bargeLeftLength, this.APP.sltRoofPitch.currentValue) - offsetPitch) / this.bargeLeftInfo.length;\n let scaleZRight = (this.utils.getHypotenuseByCos(bargeRightLength, this.APP.sltRoofPitch.currentValue) - offsetPitch) / this.bargeLeftInfo.length;\n\n let fitScale = this.bargeLeftInfo.height * this.utils.tan(UI.patiosPitch) / this.bargeLeftInfo.length;\n\n //left\n mesh = new Mesh(this.bargeLeftInfo.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXL2 - fitScale * this.bargeLeftInfo.length, offsetY, offsetZL);\n mesh.scale.setX(scaleZLeft + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupRight.add(mesh);\n \n // back\n fitScale = this.geo_receiverChanel.height * this.utils.tan(UI.patiosPitch) / this.geo_receiverChanel.length;\n mesh = new Mesh(this.geo_receiverChanel.geometry, MaterialManager.Instance().RECEIVER_CHANEL);\n mesh.position.set(- fitScale * this.bargeRightInfo.length, offsetY, 0);\n mesh.scale.setX(scaleZRight + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.RECEIVER_CHANEL, views: views };\n this.roofGroupRight.add(mesh);\n }\n private addBargeLeft() {\n let mesh: Mesh;\n let extraWallWidth = this.APP.existingWallManager.geo_existingWallW1.width + EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n let offsetXL2 = 0;\n\n let offsetXR2 = 0;\n\n let offsetZL = this.totalBaySize + UI.overhangFront;\n let offsetZR = 0;\n\n let offsetY = 0;\n let bargeLeftLength = UI.span / 2 + UI.overhangLeft;\n let bargeRightLength = UI.span / 2 + UI.overhangLeft;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n const offsetPitch = this.roofBaseInfo.height * this.utils.tan(UI.patiosPitch)\n let scaleZLeft = (this.utils.getHypotenuseByCos(bargeLeftLength, this.APP.sltRoofPitch.currentValue) - offsetPitch) / this.bargeLeftInfo.length;\n let scaleZRight = (this.utils.getHypotenuseByCos(bargeRightLength, this.APP.sltRoofPitch.currentValue) - offsetPitch) / this.bargeLeftInfo.length;\n\n let fitScale = this.bargeLeftInfo.height * this.utils.tan(UI.patiosPitch) / this.bargeLeftInfo.length;\n\n //left\n mesh = new Mesh(this.bargeLeftInfo.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXL2 - scaleZLeft * this.bargeLeftInfo.length, offsetY, offsetZL);\n mesh.scale.setX(scaleZLeft + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupLeft.add(mesh);\n \n // back\n fitScale = this.geo_receiverChanel.height * this.utils.tan(UI.patiosPitch) / this.geo_receiverChanel.length;\n mesh = new Mesh(this.geo_receiverChanel.geometry, MaterialManager.Instance().RECEIVER_CHANEL);\n mesh.position.set(- scaleZLeft * this.bargeRightInfo.length, offsetY, 0);\n mesh.scale.setX(scaleZRight + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.RECEIVER_CHANEL, views: views };\n this.roofGroupLeft.add(mesh);\n }\n public addGutterRight() {\n let offsetXL = (UI.span / 2 + UI.overhangRight - CONST.GUTTER_ROOF_OFFSET_Z) / this.utils.cos(UI.patiosPitch);\n let offsetY = this.roofBaseInfo.height - 25;\n let offsetZ = this.totalBaySize + UI.overhangFront;\n\n let gutterLength = this.roofWidth;\n let exLength = 300\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n // { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n let gutterGroup = this.utils.createGutterGroup(this.gutterInfo, this.geo_gutterCap,\n gutterLength, new Vector3(offsetXL, offsetY, offsetZ), new Vector3(0, Math.PI / 2, 0),\n views, 1, true, true);\n gutterGroup.rotateX(-this.utils.degreesToRadians(UI.patiosPitch))\n this.roofGroupRight.add(gutterGroup); \n }\n public addGutterLeft() {\n let offsetXL = (UI.span / 2 + UI.overhangLeft - CONST.GUTTER_ROOF_OFFSET_Z) / this.utils.cos(UI.patiosPitch);\n let offsetY = this.roofBaseInfo.height - 25;\n let offsetZ = 0;\n\n let gutterLength = this.roofWidth;\n let exLength = 300\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n // { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n let gutterGroup = this.utils.createGutterGroup(this.gutterInfo, this.geo_gutterCap,\n gutterLength, new Vector3(-offsetXL, offsetY, offsetZ), new Vector3(0, -Math.PI / 2, 0),\n views, 1, true, true);\n gutterGroup.rotateX(-this.utils.degreesToRadians(UI.patiosPitch))\n this.roofGroupLeft.add(gutterGroup); \n }\n public addZFlashingRight() {\n let offsetX = (UI.span / 2 + UI.overhangRight) / this.utils.cos(UI.patiosPitch);\n let offsetY = this.roofBaseInfo.height - 25;\n const offsetZ = this.totalBaySize + UI.overhangFront;\n let zFlashingLength = this.roofWidth;\n\n let scaleX = zFlashingLength / this.zFlashingGeo.length;\n \n let mesh = new Mesh(this.zFlashingGeo.geometry, MaterialManager.Instance().ZFLASHING);\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.set(1, 1, scaleX);\n\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ZFLASHING, scale: mesh.scale };\n this.roofGroupRight.add(mesh);\n }\n public addZFlashingLeft() {\n let offsetX = (UI.span / 2 + UI.overhangLeft) / this.utils.cos(UI.patiosPitch);\n let offsetY = this.roofBaseInfo.height - 25;\n const offsetZ = - UI.overhangBack;\n let zFlashingLength = this.roofWidth;\n\n let scaleX = zFlashingLength / this.zFlashingGeo.length;\n \n let mesh = new Mesh(this.zFlashingGeo.geometry, MaterialManager.Instance().ZFLASHING);\n mesh.position.set(-offsetX, offsetY, offsetZ);\n mesh.scale.set(1, 1, scaleX);\n mesh.rotateY(Math.PI)\n\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ZFLASHING, scale: mesh.scale };\n this.roofGroupLeft.add(mesh);\n }\n public addRidgeCapping(){\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.RIDGE_CAPPING));\n\n let ridgeFront = this.createRidgeCapping();\n\n const height = this.getRoofOffsetY() + \n this.roofBaseInfo.height / this.utils.cos(this.APP.sltRoofPitch.currentValue) + \n this.roofInfo.height / this.utils.cos(this.APP.sltRoofPitch.currentValue) - \n (this.APP.sltRoofSheetingType.currentValue == 0 || this.APP.sltRoofSheetingType.currentValue == 1 ? 20 : 10);\n \n let offsetX = 0\n \n const ridgeLength = this.totalBaySize + UI.overhangFront;\n ridgeFront.scale.setZ(ridgeLength / this.ridgeGeo.length);\n ridgeFront.position.set( offsetX, height, this.totalBaySize / 2 + UI.overhangFront / 2 - UI.existingWidth1 / 2);\n ridgeFront.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.RIDGE_CAPPING, length: ridgeLength, views: [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }]};\n this.scene.add(ridgeFront)\n }\n public createRidgeCapping(){\n let leftCap = new Mesh(this.ridgeGeo.geometry, MaterialManager.Instance().RIDGE_CAPPING);\n let rightCap = new Mesh(this.ridgeGeo.geometry, MaterialManager.Instance().RIDGE_CAPPING);\n\n rightCap.rotateY(Math.PI)\n\n leftCap.rotateZ(this.utils.degreesToRadians(UI.patiosPitch))\n rightCap.rotateZ(this.utils.degreesToRadians(UI.patiosPitch))\n\n leftCap.userData = {views: [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }]}\n rightCap.userData = {views: [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }]}\n\n return new Group().add(leftCap, rightCap)\n }\n public getRoofOffsetY() {\n return UI.height + this.utils.tan(UI.patiosPitch) * (UI.span / 2);\n }\n public destroy(): void {\n this.unregisterEvent();\n }\n uiCHangedDefer(previousValue: number, currentValue: number) {\n if (this.APP.sltCutOut.currentValue == 1) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => { this.load() }, this.deferTimeout);\n }\n else {\n this.load();\n }\n }\n public uiChanged(preVal: number, curVal: number): void {\n this.load();\n }\n private registerEvent(): void {\n this.eventHandleId = this.uiCHangedDefer.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldBuildingHeight,\n this.APP.sldFrontOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldLeftOverhang,\n this.APP.sltRoofPitch,\n //this.APP.dialogEditBay,\n //this.APP.sltCutOut,\n //this.APP.sldExistingLength2,\n this.APP.sldExistingWidth1,\n this.APP.sldEaveWidth\n ];\n //this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n this.controlsToRegisterEvent2 = [\n this.APP.sltRoofSheetingType,\n this.APP.sltRoofThickness,\n this.APP.sltBargeType,\n this.APP.sltDripBarge,\n this.APP.sltGutterType,\n this.APP.sltReceiverType,\n this.APP.sltRoofPitch\n ];\n this.controlsToRegisterEvent2.forEach(c => c.addAction(this.objectSizeChangedHandle));\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach(c => c.removeAction(this.objectSizeChangedHandle));\n this.controlsToRegisterEvent2 = undefined;\n }\n private objectSizeChanged(preVal: number, curVal: number) {\n this.optimize().then(() => { this.load() });\n }\n}\n\n","import {\n DIMENSION_LABEL_TYPE,\n DIMENSION_LOCATION,\n GEOMETRY_TYPE,\n} from \"src/app/app.config\";\nimport { PANEL_DIRECTION, RAKECUT_TYPE } from \"src/app/app.constants\";\nimport Dimension, { AddDimensionOptions } from \"src/app/models/Dimension\";\nimport { environment } from \"src/environments/environment\";\nimport {\n Box3,\n BoxBufferGeometry,\n FontLoader,\n Geometry,\n Group,\n Line,\n Line3,\n LineBasicMaterial,\n Material,\n Matrix4,\n Mesh,\n Object3D,\n Scene,\n TextBufferGeometry,\n Vector3,\n} from \"three\";\nimport { GableFBFasciaManager } from \".\";\nimport {\n HomeComponent as AppComponent,\n HomeComponent,\n} from \"../../containers/home/home.component\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport {\n GeometryInfo,\n IBay,\n LineType,\n Print2DText,\n Printing2DGeometry,\n Printing2DLine,\n ViewType,\n} from \"../models\";\nimport { UI } from \"../ui\";\nimport { Util } from \"../utils\";\n\nexport class DimensionManager {\n private scene: Scene;\n private APP: AppComponent;\n private MANAGER: GableFBFasciaManager;\n public listText: THREE.Object3D[] = [];\n private utils: Util;\n\n private eventHandleId: any;\n\n private material: Material;\n\n private materialManager: MaterialManager;\n\n private dimensionPatiosFrontBottom: Object3D;\n private dimensionPatiosFrontRight: Object3D;\n\n private dimensionPatiosRightBottom: Object3D;\n private dimensionPatiosRightLeft: Object3D;\n private dimensionPatiosRightRight: Object3D;\n\n private dimensionPatiosLeftBottom: Object3D;\n private dimensionPatiosLeftRight: Object3D;\n private dimensionPatiosLeftLeft: Object3D;\n\n private dimensionPatiosPlanRight: Object3D;\n private dimensionPatiosPlanBottom: Object3D;\n private dimensionPatiosPlanLeft: Object3D;\n\n private dimensionPlanMiddle: Object3D;\n private dimensionPlanMidleLeft: Object3D;\n\n private lineCapGeo: GeometryInfo;\n private lineGeo: GeometryInfo;\n private textGeo: TextBufferGeometry;\n\n private dimensionDistance = 1500;\n private dimensionDistance2 = 500;\n\n private textDistance = 5000;\n\n private totalBaySize: number;\n private box: Box3;\n\n private font: any;\n private textParameter: any;\n private isReady = false;\n private controlsToRegisterEvent: Array;\n private options: AddDimensionOptions;\n private startPos: Vector3;\n private startMatrix: Matrix4;\n private startBayLength: number;\n\n private geometryManager: GeometryManager;\n\n constructor(app: AppComponent, manager: GableFBFasciaManager) {\n this.utils = new Util();\n this.materialManager = MaterialManager.Instance();\n this.APP = app;\n this.MANAGER = manager;\n this.scene = this.APP.scene;\n this.material = MaterialManager.Instance().DIMENSION_TEXT;\n this.geometryManager = GeometryManager.Instance();\n //this.registerEvent();\n }\n\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n this.lineGeo = this.geometryManager.getDimensionLine();\n this.lineCapGeo = this.geometryManager.getDimensionCap();\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.unload();\n\n var loader = new FontLoader();\n\n this.dimensionPatiosFrontBottom = new Group();\n this.dimensionPatiosFrontBottom.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n // this.dimensionPatiosFrontBottom.rotation.set(0, Math.PI, 0);\n this.dimensionPatiosFrontBottom.visible = false;\n\n this.dimensionPatiosFrontRight = new Group();\n this.dimensionPatiosFrontRight.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosFrontRight.rotation.set(0, 0, -Math.PI / 2);\n this.dimensionPatiosFrontRight.visible = false;\n\n this.dimensionPatiosRightBottom = new Group();\n this.dimensionPatiosRightBottom.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosRightBottom.rotation.set(0, -Math.PI / 2, 0);\n this.dimensionPatiosRightBottom.visible = false;\n\n this.dimensionPatiosRightLeft = new Group();\n this.dimensionPatiosRightLeft.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosRightLeft.rotation.set(0, -Math.PI / 2, -Math.PI / 2);\n this.dimensionPatiosRightLeft.visible = false;\n\n this.dimensionPatiosRightRight = new Group();\n this.dimensionPatiosRightRight.rotation.set(\n 0,\n -Math.PI / 2,\n -Math.PI / 2\n );\n this.dimensionPatiosRightRight.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosRightRight.visible = false;\n\n this.dimensionPatiosLeftBottom = new Group();\n this.dimensionPatiosLeftBottom.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosLeftBottom.rotation.set(0, -Math.PI / 2, 0);\n this.dimensionPatiosLeftBottom.visible = false;\n\n this.dimensionPatiosLeftRight = new Group();\n this.dimensionPatiosLeftRight.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosLeftRight.rotation.set(Math.PI / 2, -Math.PI / 2, 0);\n this.dimensionPatiosLeftRight.visible = false;\n\n this.dimensionPatiosLeftLeft = new Group();\n this.dimensionPatiosLeftLeft.rotation.set(0, -Math.PI / 2, Math.PI / 2);\n this.dimensionPatiosLeftLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftLeft.visible = false;\n\n this.dimensionPatiosPlanRight = new Group();\n this.dimensionPatiosPlanRight.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosPlanRight.rotation.set(\n -Math.PI / 2,\n Math.PI,\n -Math.PI / 2\n );\n\n this.dimensionPatiosPlanBottom = new Group();\n this.dimensionPatiosPlanBottom.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosPlanBottom.rotation.set(-Math.PI / 2, 0, 0);\n\n this.dimensionPatiosPlanLeft = new Group();\n this.dimensionPatiosPlanLeft.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n position: { left: true },\n };\n this.dimensionPatiosPlanLeft.rotation.set(-Math.PI / 2, 0, -Math.PI / 2);\n\n this.dimensionPlanMiddle = new Group();\n this.dimensionPlanMidleLeft = new Group();\n\n //testing\n // [\n // this.dimensionPatiosFrontBottom,\n // this.dimensionPatiosFrontRight,\n // this.dimensionPatiosRightBottom,\n // this.dimensionPatiosRightLeft,\n // this.dimensionPatiosRightRight,\n // this.dimensionPatiosLeftBottom,\n // this.dimensionPatiosLeftRight,\n // this.dimensionPatiosLeftLeft,\n // ].forEach(g => { g.visible = true });\n\n this.scene.add(this.dimensionPatiosPlanRight);\n this.scene.add(this.dimensionPatiosPlanLeft);\n this.scene.add(this.dimensionPatiosFrontRight);\n this.APP.patiosManager.patiosGroup.add(\n this.dimensionPatiosFrontBottom,\n //this.dimensionPatiosFrontRight,\n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom,\n this.dimensionPatiosLeftRight,\n this.dimensionPatiosLeftLeft,\n this.dimensionPatiosPlanBottom,\n this.dimensionPlanMiddle,\n this.dimensionPlanMidleLeft\n );\n\n loader.load(\n environment.modelBaseUrl +\n \"/assets/fonts/helvetiker_regular.typeface.json\",\n (font) => {\n this.font = font;\n\n this.textParameter = {\n font: this.font,\n size: 200,\n height: 5,\n curveSegments: 10,\n };\n this.options = {\n container: HomeComponent.ins.scene,\n start: new Vector3(),\n end: new Vector3(),\n linePos: new Vector3(),\n views: [],\n allowDrag: true,\n textParameter: this.textParameter,\n textPos: new Vector3(),\n labelType: null,\n fitZ: 10,\n hasTextClone: false,\n axis: \"x\",\n lineLength: 0,\n subtype: null,\n textUserData: null,\n onDragCallback: this.onDimDrag.bind(this),\n onDragStartCallback: this.onDimDragStart.bind(this),\n };\n\n this.isReady = true;\n this.draw();\n resolve();\n }\n );\n });\n }\n\n public unload() {\n this.scene.remove(this.dimensionPatiosPlanRight);\n this.scene.remove(this.dimensionPatiosPlanLeft);\n this.scene.remove(this.dimensionPatiosFrontRight);\n if (this.APP.patiosManager && this.APP.patiosManager.patiosGroup) {\n this.APP.patiosManager.patiosGroup.remove(\n this.dimensionPatiosFrontBottom,\n //this.dimensionPatiosFrontRight,\n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom,\n this.dimensionPatiosLeftRight,\n this.dimensionPatiosLeftLeft,\n this.dimensionPatiosPlanBottom,\n this.dimensionPlanMiddle,\n this.dimensionPlanMidleLeft\n );\n }\n }\n\n public draw() {\n if (!this.isReady) {\n return;\n }\n // this.dimensionPatiosPlanBottom.children = [];\n // this.dimensionPatiosPlanRight.children = [];\n // this.dimensionPatiosPlanLeft.children = [];\n this.dimensionPatiosPlanBottom.children =\n this.dimensionPatiosPlanBottom.children.filter(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.LEFT_OVERHANG ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.RIGHT_OVERHANG\n );\n this.dimensionPatiosPlanRight.children =\n this.dimensionPatiosPlanRight.children.filter(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.FRONT_OVERHANG ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.BACK_OVERHANG ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY\n );\n this.dimensionPatiosPlanLeft.children =\n this.dimensionPatiosPlanLeft.children.filter(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL\n );\n this.dimensionPatiosFrontBottom.children = [];\n this.dimensionPatiosFrontRight.children = [];\n this.dimensionPatiosLeftBottom.children = [];\n this.dimensionPatiosLeftRight.children = [];\n this.dimensionPatiosLeftLeft.children = [];\n this.dimensionPatiosRightBottom.children = [];\n this.dimensionPatiosRightLeft.children = [];\n this.dimensionPatiosRightRight.children = [];\n this.dimensionPlanMiddle.children = [];\n this.dimensionPlanMidleLeft.children = [];\n\n //this.scene.remove(...this.scene.children.filter(o => o.userData.type == 'BOXHELPER'));\n\n this.totalBaySize = 0;\n for (let b of this.APP.dialogEditBay.listBay) {\n this.totalBaySize += b.value;\n }\n\n this.box = this.utils.getSceneBox();\n\n this.drawDimensionPatiosPlanBottom();\n this.drawDimensionPatiosPlanRight();\n // this.drawDimensionPatiosPlanLeft();\n\n this.drawDimensionPatiosFrontBottom();\n this.drawDimensionPatiosFrontRight();\n\n this.drawDimensionPatiosLeftBottom();\n this.drawDimensionPatiosLeftRight();\n this.drawDimensionPatiosLeftLeft();\n\n this.drawDimensionPatiosRightBottom();\n this.drawDimensionPatiosRightLeft();\n this.drawDimensionPatiosRightRight();\n\n this.drawDimensionMidle();\n this.drawDimensionMidleLeft();\n\n // var offset = this.calulateBoundingBox();\n // this.dimensionPatiosPlanRight.position.setX(offset.right);\n // this.dimensionPatiosPlanLeft.position.setX(offset.left);\n // this.dimensionPatiosPlanBottom.position.setZ(offset.front);\n\n // let existingHouseDimLeft = this.APP.scene.children.find(c => c.userData.type == GEOMETRY_TYPE.DIMENSION && c.userData.position?.planLeft);\n // if (existingHouseDimLeft && existingHouseDimLeft.position.x > offset.left) {\n // existingHouseDimLeft.position.setX(offset.left - 500);\n // }\n this.APP.dimensionManager.draw();\n }\n private drawDimensionMidleLeft() {\n let offsetX = 0;\n\n let dimLeft = this.utils.createArrowLine([{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }]);\n dimLeft.visible = false;\n dimLeft.position.setX(-300)\n let textLeft = this.utils.createText(\"Panel direction\", [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }], this.textParameter, new Vector3(-500, 0, 650));\n textLeft.userData.rotation = new Vector3(0, Math.PI / 2, 0)\n textLeft.visible = false;\n\n let dimRight = dimLeft.clone()\n dimRight.position.setX(300);\n let textRight = textLeft.clone();\n textRight.position.setX(500);\n \n this.dimensionPlanMidleLeft.add(dimLeft);\n this.dimensionPlanMidleLeft.add(textLeft);\n this.dimensionPlanMidleLeft.add(dimRight);\n this.dimensionPlanMidleLeft.add(textRight);\n\n\n if (this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT) {\n let offsetZ = this.totalBaySize + UI.overhangFront - UI.existingWidth1 / 2 + UI.eaveWidth + this.MANAGER.postAndBeamManager.geoBraket_2.height / 4;\n this.dimensionPlanMidleLeft.position.set(offsetX, 0, offsetZ);\n this.dimensionPlanMidleLeft.rotation.set(0, Math.PI, 0);\n }\n else {\n let offsetZ = - UI.overhangBack - UI.existingWidth1 / 2 + UI.eaveWidth + this.MANAGER.postAndBeamManager.geoBraket_2.height / 4;\n this.dimensionPlanMidleLeft.rotation.set(0, 0, 0);\n this.dimensionPlanMidleLeft.position.set(offsetX, 0, offsetZ);\n }\n }\n private drawDimensionMidle() {\n let offsetX = 0;\n\n let dimLeft = this.utils.createArrowLine([{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }]);\n dimLeft.visible = false;\n dimLeft.rotation.set(0, -Math.PI / 2, 0);\n\n let textLeft = this.utils.createText(`${UI.patiosPitch} degree`, [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }], this.textParameter, new Vector3(-500, 0, 200));\n textLeft.visible = false;\n\n let dimRight = dimLeft.clone()\n dimRight.rotation.set(0, Math.PI / 2, 0);\n\n let textRight = textLeft.clone();\n textRight.position.setX(500);\n \n this.dimensionPlanMiddle.add(dimLeft);\n this.dimensionPlanMiddle.add(textLeft);\n this.dimensionPlanMiddle.add(dimRight);\n this.dimensionPlanMiddle.add(textRight);\n\n let offsetZ = - UI.existingWidth1 / 2 + UI.eaveWidth + this.MANAGER.postAndBeamManager.geoBraket_2.height / 4 + this.totalBaySize / 2;\n this.dimensionPlanMiddle.rotation.set(0, 0, 0);\n this.dimensionPlanMiddle.position.set(offsetX, 0, offsetZ);\n }\n\n private drawDimensionPatiosPlanBottom() {\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n\n let _dimensionDistane = this.dimensionDistance2;\n if (\n this.APP.sltExistingType.currentValue == 2 ||\n this.APP.sltExistingType.currentValue == 3\n ) {\n if (this.APP.sldExistingWidth1.currentValue > 0) {\n _dimensionDistane = this.dimensionDistance;\n }\n }\n\n let textStr = this.utils.getDimensionValue(this.APP.sldSpan.currentValue);\n\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldSpan.currentValue,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.SPAN,\n hasTextClone: false,\n textUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n },\n textCloneUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n },\n textCloneRotation: new Vector3(0, 0, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, 0, 0),\n };\n let dimSpan = this.dimensionPatiosPlanBottom.children.find(\n (el) => el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN\n ) as Dimension;\n if (!dimSpan) {\n new Dimension(options);\n } else {\n dimSpan.update(options);\n }\n\n //Left over hang\n this.addOverhang(\n this.dimensionPatiosPlanBottom,\n UI.span / 2,\n UI.overhangLeft,\n views,\n \"Left\",\n 0,\n \"z\",\n DIMENSION_LABEL_TYPE.LEFT_OVERHANG\n );\n this.addOverhang(\n this.dimensionPatiosPlanBottom,\n UI.span / 2,\n UI.overhangRight,\n views,\n \"Right\",\n 0,\n \"z\",\n DIMENSION_LABEL_TYPE.RIGHT_OVERHANG\n );\n this.repositionDimension(\n this.dimensionPatiosPlanBottom,\n DIMENSION_LOCATION.PLAN_BOTTOM\n );\n }\n onDimDrag(event) {\n this.utils.handlerDimDragEvent(\n event,\n this.startPos,\n this.startMatrix,\n this.startBayLength\n );\n this.startPos = event.object.position.clone();\n }\n onDimDragStart(event) {\n this.startPos = event.object.position.clone();\n this.startMatrix = event.object.matrixWorld.clone();\n if (event.object.userData?.dimType === DIMENSION_LABEL_TYPE.BAY) {\n let bayNum = event.object.userData.bayNum;\n this.startBayLength = UI.listBay[+bayNum].value;\n }\n }\n private drawDimensionPatiosPlanRight() {\n let offsetDimensionZ =\n this.totalBaySize / 2 +\n this.APP.sldEaveWidth.currentValue -\n this.APP.sldExistingWidth1.currentValue / 2 +\n this.MANAGER.postAndBeamManager.geoBraket_2.height / 4;\n\n let _dimensionDistane = this.dimensionDistance2;\n if (\n this.APP.sltExistingType.currentValue == 2 ||\n this.APP.sltExistingType.currentValue == 3\n ) {\n if (this.APP.sldExistingWidth1.currentValue > 0) {\n _dimensionDistane = this.dimensionDistance;\n }\n }\n\n let offsetDimensionX = this.box.max.x + this.dimensionDistance2;\n if (this.APP.sltExistingType.currentValue == 1) {\n offsetDimensionX += this.APP.sldEaveWidth.currentValue;\n }\n\n this.dimensionPatiosPlanRight.position.set(\n offsetDimensionX,\n 0,\n offsetDimensionZ\n );\n\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n let offsetX = -this.totalBaySize / 2;\n this.dimensionPatiosPlanRight.children =\n this.dimensionPatiosPlanRight.children.filter(\n (el) =>\n el.userData?.groupType != DIMENSION_LABEL_TYPE.BAY ||\n (el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY &&\n el.userData?.bayNum <\n HomeComponent.ins.dialogEditBay.listBay.length)\n );\n\n for (let i = 0; i <= this.APP.dialogEditBay.listBay.length; i++) {\n let b: IBay = { index: 0, value: 0, isCut: false };\n if (i < this.APP.dialogEditBay.listBay.length) {\n b = this.APP.dialogEditBay.listBay[i];\n }\n\n if (i < this.APP.dialogEditBay.listBay.length) {\n let textStr = this.utils.getDimensionValue(b.value);\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: b.value,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(offsetX + b.value / 2, 0, 0),\n textPos: new Vector3(offsetX + b.value / 2, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.BAY,\n bayNum: i,\n textUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n position: { bottom: true },\n rotation: new Vector3(0, -Math.PI / 2, 0),\n },\n textRotation: new Vector3(0, -Math.PI, 0),\n fitZ: -10,\n };\n let dimBay = this.dimensionPatiosPlanRight.children.find(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY &&\n el.userData?.bayNum == i\n ) as Dimension;\n if (!dimBay) {\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n offsetX += b.value;\n }\n\n let offsetRight = this.totalBaySize / 2;\n let offsetLeft = this.totalBaySize / 2;\n\n this.addOverhang(\n this.dimensionPatiosPlanRight,\n offsetRight,\n UI.overhangFront,\n views,\n \"Right\",\n Math.PI,\n \"y\",\n DIMENSION_LABEL_TYPE.FRONT_OVERHANG\n );\n this.addOverhang(\n this.dimensionPatiosPlanRight,\n offsetLeft,\n UI.overhangBack,\n views,\n \"Left\",\n Math.PI,\n \"y\",\n DIMENSION_LABEL_TYPE.BACK_OVERHANG\n );\n\n this.repositionDimension(\n this.dimensionPatiosPlanRight,\n DIMENSION_LOCATION.PLAN_RIGHT\n );\n }\n private drawDimensionPatiosPlanLeft() {\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.NONE) {\n this.dimensionPatiosPlanLeft.children =\n this.dimensionPatiosPlanLeft.children.filter(\n (el) =>\n el.userData?.groupType !=\n DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL\n );\n return;\n }\n\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n\n let offsetDimensionZ =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldEaveWidth.currentValue -\n this.APP.sldExistingWidth1.currentValue / 2 -\n // - this.APP.existingWallManager.geo_existingWallL1.width\n // - this.APP.eaveManager.backOverhang\n this.APP.sldLeftCutVertical.currentValue / 2;\n\n let optionsRake: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldLeftCutVertical.currentValue,\n container: this.dimensionPatiosPlanLeft,\n views: views,\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL,\n };\n let dimRake = this.dimensionPatiosPlanLeft.children.find(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL\n ) as Dimension;\n if (!dimRake) {\n new Dimension(optionsRake);\n } else {\n dimRake.update(optionsRake);\n }\n\n //let offsetDimensionX = this.MANAGER.boundingBox.min.x - this.dimensionDistance2;\n this.dimensionPatiosPlanLeft.position.set(0, 0, offsetDimensionZ);\n this.repositionDimension(\n this.dimensionPatiosPlanLeft,\n DIMENSION_LOCATION.PLAN_LEFT\n );\n }\n private drawDimensionPatiosFrontBottom() {\n let dimOffsetY = -this.dimensionDistance2;\n this.dimensionPatiosFrontBottom.position.set(0, dimOffsetY, 0);\n\n let views = [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosPlanBottom.children.forEach((groupDim) => {\n groupDim.children\n .filter(\n (c) => c.userData.subtype != GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT\n )\n .forEach((e) => {\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.rotation.set(0, Math.PI, 0);\n dim.userData[\"rotation\"] = new Vector3(0, 0, 0);\n dim.userData[\"position\"] = { ...e.userData.position, bottom: true };\n }\n this.dimensionPatiosFrontBottom.add(dim);\n });\n });\n }\n private drawDimensionPatiosFrontRight() {\n let views = [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }];\n\n let _dimensionDistane = this.dimensionDistance2;\n if (\n this.APP.sltExistingType.currentValue == 2 ||\n this.APP.sltExistingType.currentValue == 3\n ) {\n if (this.APP.sldExistingWidth1.currentValue > 0) {\n _dimensionDistane = this.dimensionDistance;\n }\n }\n let height =\n this.APP.sldExistingWallHeight.currentValue +\n +UI.upstandBraketType +\n this.MANAGER.postAndBeamManager.beamInfo.height +\n (UI.span / 2) * this.utils.tan(UI.patiosPitch);\n let dimOffsetX =\n UI.span / 2 +\n this.APP.patiosManager.patiosGroup.position.x +\n _dimensionDistane;\n let dimOffsetY = height / 2;\n if (this.APP.sldExistingLength.currentValue / 2 > UI.span / 2) {\n dimOffsetX =\n this.APP.sldExistingLength.currentValue / 2 + _dimensionDistane;\n }\n\n if (\n this.APP.sltExistingType.currentValue == 2 ||\n this.APP.sltExistingType.currentValue == 3\n ) {\n dimOffsetX += this.APP.sldExistingLength2.currentValue;\n }\n\n this.dimensionPatiosFrontRight.position.set(dimOffsetX, dimOffsetY, 0);\n\n //--------\n\n let scaleLength = height / this.lineGeo.length;\n\n let cap1 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-dimOffsetY);\n\n let cap2 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(dimOffsetY);\n\n let line = new Mesh(\n this.lineGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(height);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(\n this.textGeo,\n MaterialManager.Instance().DIMENSION_TEXT\n );\n text.userData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, 0, -Math.PI / 2),\n };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosFrontRight.add(\n line,\n cap1,\n cap2,\n text,\n ...this.utils.addArrowForLine(line)\n );\n this.repositionDimension(\n this.dimensionPatiosFrontRight,\n DIMENSION_LOCATION.FRONT_RIGHT\n );\n }\n private drawDimensionPatiosLeftBottom() {\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z;\n\n this.dimensionPatiosLeftBottom.position.set(0, dimOffsetY, dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n this.dimensionPatiosPlanRight.children.forEach((groupDim) => {\n groupDim.children.forEach((e) => {\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n if (e.userData?.subType == GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT)\n return;\n dim.rotation.set(0, 0, 0);\n dim.userData[\"views\"] = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n ];\n dim.userData[\"rotation\"] = new Vector3(0, 0, 0);\n dim.userData[\"position\"] = { ...e.userData.position, bottom: true };\n }\n this.dimensionPatiosLeftBottom.add(dim);\n });\n });\n }\n private drawDimensionPatiosLeftRight() {\n let dimOffsetY =\n UI.eaveHeight +\n +UI.upstandBraketType +\n this.MANAGER.postAndBeamManager.beamInfo.height +\n (UI.span / 2) * this.utils.tan(UI.patiosPitch);\n\n let dimOffsetZ =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldEaveWidth.currentValue +\n this.dimensionDistance2 -\n this.APP.sldExistingWidth1.currentValue / 2;\n if (\n this.APP.sldExistingWidth1.currentValue +\n this.APP.sldExistingWidth2.currentValue >\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue\n ) {\n dimOffsetZ =\n this.APP.sldExistingWidth1.currentValue / 2 +\n this.APP.sldExistingWidth2.currentValue +\n this.dimensionDistance2 -\n 290;\n }\n if (this.APP.sldExistingLength2.currentValue > 0) {\n dimOffsetZ += 500;\n }\n\n this.dimensionPatiosLeftRight.position.set(0, dimOffsetY / 2, dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n let offsetLength = +dimOffsetY.toFixed(0);\n let scaleLength = offsetLength / this.lineGeo.length;\n\n let cap1 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength / 2);\n\n let cap2 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength / 2);\n\n let line = new Mesh(\n this.lineGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(\n this.textGeo,\n MaterialManager.Instance().DIMENSION_TEXT\n );\n text.userData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }],\n rotation: new Vector3(-Math.PI / 2, 0, 0),\n };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosLeftRight.add(\n line,\n cap1,\n cap2,\n text,\n ...this.utils.addArrowForLine(line)\n );\n this.repositionDimension(\n this.dimensionPatiosLeftRight,\n DIMENSION_LOCATION.LEFT_RIGHT\n );\n }\n private drawDimensionPatiosRightBottom() {\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z;\n\n this.dimensionPatiosRightBottom.position.set(0, dimOffsetY, dimOffsetZ);\n\n let views = [{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosPlanRight.children.forEach((groupDim) => {\n groupDim.children.forEach((e) => {\n if (e.userData?.subType == GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT) return;\n\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.userData[\"rotation\"] = new Vector3(0, 0, 0);\n dim.userData[\"position\"] = { ...e.userData.position, bottom: true };\n }\n this.dimensionPatiosRightBottom.add(dim);\n });\n });\n }\n private drawDimensionPatiosRightLeft() {\n let dimOffsetY =\n UI.eaveHeight +\n +UI.upstandBraketType +\n this.MANAGER.postAndBeamManager.beamInfo.height +\n (UI.span / 2) * this.utils.tan(UI.patiosPitch);\n let dimOffsetZ = this.dimensionPatiosLeftRight.position.z;\n\n this.dimensionPatiosRightLeft.position.set(0, dimOffsetY / 2, dimOffsetZ);\n let views = [{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosLeftRight.children.forEach((e) => {\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.userData[\"rotation\"] = new Vector3(Math.PI / 2, 0, 0);\n dim.rotation.set(0, Math.PI, 0);\n }\n this.dimensionPatiosRightLeft.add(dim);\n });\n this.repositionDimension(\n this.dimensionPatiosRightLeft,\n DIMENSION_LOCATION.RIGHT_LEFT\n );\n }\n private drawDimensionPatiosLeftLeft() {\n let dimOffsetY =\n this.APP.sldExistingWallHeight.currentValue +\n +UI.upstandBraketType +\n this.MANAGER.postAndBeamManager.beamInfo.height;\n let dimOffsetZ = this.APP.sldExistingWidth1.currentValue / 2 + 1800;\n\n this.dimensionPatiosLeftLeft.position.set(0, dimOffsetY / 2, -dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n ];\n\n let offsetLength = dimOffsetY;\n let scaleLength = offsetLength / this.lineGeo.length;\n\n let cap1 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength / 2);\n\n let cap2 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength / 2);\n\n let line = new Mesh(\n this.lineGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(\n this.textGeo,\n MaterialManager.Instance().DIMENSION_TEXT\n );\n text.userData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }],\n rotation: new Vector3(Math.PI / 2, 0, 0),\n };\n text.position.set(0, 200, 0);\n\n this.dimensionPatiosLeftLeft.add(\n line,\n cap1,\n cap2,\n text,\n ...this.utils.addArrowForLine(line)\n );\n }\n private drawDimensionPatiosRightRight() {\n let dimOffsetY =\n this.APP.sldExistingWallHeight.currentValue +\n +UI.upstandBraketType +\n this.MANAGER.postAndBeamManager.beamInfo.height;\n let dimOffsetZ = this.APP.sldExistingWidth1.currentValue / 2 + 1800;\n\n this.dimensionPatiosRightRight.position.set(0, dimOffsetY / 2, -dimOffsetZ);\n\n let views = [{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosLeftLeft.children.forEach((e) => {\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n dim.userData[\"rotation\"] = new Vector3(-Math.PI / 2, 0, 0);\n dim.rotation.set(0, Math.PI, 0);\n dim.position.set(dim.position.x, -dim.position.y, dim.position.z);\n this.dimensionPatiosRightRight.add(dim);\n }\n });\n }\n private addOverhang(\n groupDim: Object3D,\n offset: number,\n overhangValue: number,\n views: any,\n side: string,\n rotateText: number,\n axis: string,\n labelType?: string\n ) {\n if (overhangValue == 0) {\n let dim = groupDim.children.find(\n (el) => el.userData?.groupType == labelType\n ) as Dimension;\n if (dim) {\n groupDim.remove(dim);\n }\n return;\n }\n\n let textStr = this.utils.getDimensionValue(overhangValue);\n\n let textRotation = new Vector3();\n let textUserData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n position: { overhang: true },\n };\n if (axis === \"z\") {\n textRotation.setZ(rotateText);\n textUserData[\"rotation\"] = new Vector3(0, 0, -rotateText / 2);\n textUserData[\"position\"][\"bottom\"] = true;\n } else if (axis === \"y\") {\n textRotation.setY(rotateText);\n textUserData[\"rotation\"] = new Vector3(0, -rotateText / 2, 0);\n } else if (axis === \"x\") {\n textRotation.setX(rotateText);\n textUserData[\"rotation\"] = new Vector3(-rotateText / 2, 0, 0);\n }\n\n let linePos = new Vector3();\n if (side === \"Left\") {\n linePos.setX(-offset - overhangValue / 2);\n } else if (side === \"Right\") {\n linePos.setX(offset + overhangValue / 2);\n }\n let fitZ = 0;\n if (labelType) {\n if (axis === \"z\") {\n fitZ = 10;\n } else if (axis === \"y\") {\n fitZ = -10;\n }\n }\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: overhangValue,\n container: groupDim,\n views: views,\n linePos: linePos,\n textPos: linePos.clone().setY(linePos.y - 200),\n labelType: labelType ? labelType : null,\n fitZ: fitZ,\n textRotation: textRotation,\n textUserData: textUserData,\n };\n let dim = groupDim.children.find(\n (el) => el.userData?.groupType == labelType\n ) as Dimension;\n if (!dim) {\n new Dimension(options);\n } else {\n dim.update(options);\n }\n }\n private getTextCover(\n textGeo: TextBufferGeometry,\n labelType: string,\n pos: Vector3,\n fitZ = 0,\n bayNum?: number\n ) {\n let textSize = new Vector3();\n textGeo.boundingBox.getSize(textSize);\n\n let textCover = new Mesh(\n new BoxBufferGeometry(textSize.x, textSize.y, textSize.z)\n );\n textCover.position.set(pos.x, pos.y, pos.z + fitZ);\n textCover.userData = { type: GEOMETRY_TYPE.TEXT_COVER, labelType };\n if (bayNum !== undefined) {\n textCover.userData[\"bayNum\"] = bayNum;\n }\n textCover.material[\"opacity\"] = 0;\n textCover.material[\"transparent\"] = true;\n\n return textCover;\n }\n public getOutlines(): Printing2DGeometry {\n let lsGeometries: Printing2DLine[] = [];\n let lsText: Print2DText[] = [];\n\n for (let dim of [\n ...this.dimensionPatiosPlanBottom.children,\n ...this.dimensionPatiosPlanRight.children,\n ...this.dimensionPatiosPlanLeft.children,\n ...this.dimensionPatiosFrontBottom.children,\n ...this.dimensionPatiosFrontRight.children,\n ...this.dimensionPatiosLeftBottom.children,\n ...this.dimensionPatiosLeftRight.children,\n ...this.dimensionPatiosLeftLeft.children,\n ...this.dimensionPatiosRightBottom.children,\n ...this.dimensionPatiosRightLeft.children,\n ...this.dimensionPatiosRightRight.children,\n ...this.dimensionPlanMiddle.children,\n ...this.dimensionPlanMidleLeft.children,\n ]) {\n if (!dim.userData.views) {\n console.log(\"TEXT NO VIEW\", dim);\n continue;\n }\n\n if (dim.type == \"Group\") {\n dim.children.forEach((el) => {\n el.updateMatrix();\n let _clone = el.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(el.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n\n el.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(el.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(el.matrixWorld);\n\n let textRotation = el.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, el, pos, textRotation, points);\n });\n } else {\n dim.updateMatrix();\n let _clone = dim.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(dim.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n\n dim.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(dim.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(dim.matrixWorld);\n\n let textRotation = dim.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, dim, pos, textRotation, points);\n }\n }\n\n return { lines: lsGeometries, texts: lsText };\n }\n private getDimInfo(\n lsGeometries: Printing2DLine[],\n lsText: Print2DText[],\n dim: Object3D,\n pos: Vector3,\n textRotation: Vector3,\n points: Vector3[]\n ) {\n if (\n dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT &&\n dim.userData.views &&\n dim.userData.value\n ) {\n let box = new Box3().setFromObject(dim.parent);\n let startEnd = this.utils.getStartEndPoint(box);\n let line = new Line3(startEnd[0], startEnd[1]);\n\n let projectPoint = new Vector3();\n line.closestPointToPoint(pos, true, projectPoint);\n let _pos = new Vector3().addVectors(\n projectPoint,\n new Vector3()\n .subVectors(pos, projectPoint)\n .normalize()\n .multiplyScalar(10)\n );\n\n if (dim.userData.position?.bottom) {\n if (dim.userData.position?.overhang) {\n _pos = new Vector3().addVectors(\n projectPoint,\n new Vector3()\n .subVectors(pos, projectPoint)\n .normalize()\n .multiplyScalar(180)\n );\n } else {\n _pos = new Vector3().addVectors(\n projectPoint,\n new Vector3()\n .subVectors(pos, projectPoint)\n .normalize()\n .multiplyScalar(120)\n );\n }\n } else {\n if (dim.userData.position?.overhang) {\n _pos = new Vector3().addVectors(\n projectPoint,\n new Vector3()\n .subVectors(pos, projectPoint)\n .normalize()\n .multiplyScalar(100)\n );\n }\n }\n\n let p = new Vector3().applyMatrix4(dim.matrixWorld);\n\n lsText.push({\n value: dim.userData.value,\n position: p,\n rotation: textRotation,\n views: dim.userData.views,\n });\n } else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_LINE) {\n // this.scene.add(new LineSegments(new Geometry().setFromPoints(points), new LineBasicMaterial({color: new Color('red')})));\n\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views,\n });\n } else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_CAP) {\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views,\n });\n } else if (dim.userData.type == \"Arrow\") {\n let geo = ((dim as Line).geometry as Geometry).clone();\n geo.applyMatrix4(dim.matrixWorld);\n lsGeometries.push({\n vertices: geo.vertices,\n objectType: dim.userData.type,\n views: dim.userData.views,\n });\n }\n }\n public destroy(): void {\n this.unregisterEvent();\n this.unload();\n }\n\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldFrontOverhang,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sldExistingWallHeight,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch,\n ];\n this.controlsToRegisterEvent.forEach((c) =>\n c.addAction(this.eventHandleId)\n );\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.controlsToRegisterEvent = undefined;\n }\n\n public uiChanged(preVal: number, curVal: number): void {\n this.draw();\n }\n private calulateBoundingBox() {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter((c) => c.userData.type == \"BOX_HELPER_\")\n );\n let patiosBox = this.MANAGER.boundingBox;\n\n let planRightBox = this.APP.utils.getObjectBoundingBox(\n this.dimensionPatiosPlanRight\n );\n planRightBox.min.x = patiosBox.max.x;\n planRightBox.max.x = patiosBox.max.x + 500;\n planRightBox.max.y = 10000;\n\n let planLeftBox = this.APP.utils.getObjectBoundingBox(\n this.dimensionPatiosPlanLeft\n );\n planLeftBox.min.x = patiosBox.min.x - 500;\n planLeftBox.max.x = patiosBox.min.x;\n planLeftBox.max.y = 10000;\n\n let planBottomBox = this.APP.utils.getObjectBoundingBox(\n this.dimensionPatiosPlanBottom\n );\n let planBottomBoxWidth = planBottomBox.max.z - planBottomBox.min.z;\n planBottomBox.min.z = patiosBox.max.z;\n planBottomBox.max.z = patiosBox.max.z + planBottomBoxWidth;\n planBottomBox.max.y = 10000;\n\n let objs = [];\n\n objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n c.userData.position?.width1) ||\n c.userData.position?.width2 ||\n c.userData.position?.length2 ||\n c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n\n // for(let e of objs){\n // let boxModelHelper = new BoxHelper(e);\n // boxModelHelper.userData = {type: 'BOX_HELPER_'};\n // this.scene.add(boxModelHelper);\n // }\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (planRightBox.intersectsBox(objBox)) {\n intersectBox = true;\n planRightBox.translate(new Vector3(100, 0, 0));\n }\n if (planLeftBox.intersectsBox(objBox)) {\n intersectBox = true;\n planLeftBox.translate(new Vector3(-100, 0, 0));\n }\n if (planBottomBox.intersectsBox(objBox)) {\n intersectBox = true;\n planBottomBox.translate(new Vector3(0, 0, 100));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(planRightBox);\n // boxHelper.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper);\n\n // let boxHelper2 = new Box3Helper(planLeftBox);\n // boxHelper2.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper2);\n\n // let boxHelper3 = new Box3Helper(planBottomBox);\n // boxHelper3.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper3);\n\n return {\n left: planLeftBox.min.x,\n right: planRightBox.max.x,\n front: planBottomBox.max.z,\n };\n }\n private repositionDimension(dimension, location, extraDistance = 0) {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter((c) => c.userData.type == location)\n );\n\n let patiosBox = this.MANAGER.boundingBox;\n\n if (location == DIMENSION_LOCATION.FRONT_RIGHT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.max.x;\n dimBox.max.x = patiosBox.max.x + 500;\n dimBox.max.z = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n !c.userData.position.length1 &&\n !c.userData.position.length2) ||\n (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL &&\n !c.userData.position.length1 &&\n !c.userData.position.length2)\n );\n\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n !c.userData.position.length1) ||\n (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL &&\n !c.userData.position.length1)\n );\n }\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(100, 0, 0));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setX(dimBox.max.x + extraDistance);\n } else if (location == DIMENSION_LOCATION.PLAN_LEFT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.min.x - 500;\n dimBox.max.x = patiosBox.min.x;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF ||\n c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(-100, 0, 0));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setX(dimBox.min.x + extraDistance);\n } else if (location == DIMENSION_LOCATION.PLAN_RIGHT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.max.x;\n dimBox.max.x = patiosBox.max.x + 500;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF ||\n c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n\n // for(let e of objs){\n // let boxModelHelper = new BoxHelper(e);\n // boxModelHelper.userData = {type: location};\n // this.scene.add(boxModelHelper);\n // }\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(100, 0, 0));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setX(dimBox.max.x + extraDistance);\n } else if (location == DIMENSION_LOCATION.PLAN_BOTTOM) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF ||\n c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(0, 0, 100));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setZ(dimBox.max.z + extraDistance);\n } else if (location == DIMENSION_LOCATION.LEFT_RIGHT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n dimBox.min.x = -10000;\n dimBox.max.x = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n c.userData.position?.left) ||\n (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL &&\n c.userData.position?.left)\n );\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(0, 0, 100));\n }\n }\n\n if (!intersectBox) break;\n }\n\n dimension.position.setZ(dimBox.max.z + extraDistance);\n } else if (location == DIMENSION_LOCATION.RIGHT_LEFT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(\n this.dimensionPatiosLeftRight\n );\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n\n dimBox.min.x = -10000;\n dimBox.max.x = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n c.userData.position?.right) ||\n (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL &&\n c.userData.position?.right)\n );\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(0, 0, 100));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setZ(dimBox.max.z + extraDistance);\n }\n }\n}\n","import { PostAndBeamManager } from \"./post-and-beam.manager\";\nimport { RoofManager } from \"./roof.manager\";\nimport { HomeComponent as AppComponent } from \"../../containers/home/home.component\";\nimport { PatiosManager } from \"../patios.manager\";\nimport { Printing2DGeometry } from \"../models\";\nimport { Group, Box3, Vector3, Box3Helper } from \"three\";\nimport { GEOMETRY_CATEGORY, CONFIG, GEOMETRY_TYPE } from \"src/app/app.config\";\nimport { DimensionManager } from \"./dimension.manager\";\nimport { SliderInputComponent } from \"src/app/component/slider-input/slider-input.component\";\nimport {\n CUTOUT_ENABLE,\n EXISTING_BUILDING_CONFIG,\n FASCIA_BRACKET_FIT,\n RAKECUT_TYPE,\n} from \"../../app.constants\";\nimport { environment } from \"src/environments/environment\";\nimport { UI } from \"../ui\";\n\nexport class GableFBFasciaManager implements PatiosManager {\n public patiosGroup: Group;\n public boundingBox: Box3;\n private APP: AppComponent;\n public postAndBeamManager: PostAndBeamManager;\n public roofManager: RoofManager;\n public dimesionManager: DimensionManager;\n public ignoreBayEvent: boolean = false;\n\n private updateEventHandle: any;\n private deferHandle;\n private deferTimeout = EXISTING_BUILDING_CONFIG.CUTOUT_DEFFER_TIME_OUT;\n private controlsToRegisterEvent: Array;\n public patiosWidth: number;\n public patiosLength: number;\n public get cutoutCondition(): boolean {\n return (\n [\n this.APP.sldEaveWidth,\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldFrontOverhang,\n ]\n .map((x) => x.currentValue)\n .reduce((a, b) => a + b, 0) -\n this.APP.sldExistingWidth1.currentValue >=\n EXISTING_BUILDING_CONFIG.CUTOUT_ALLOW\n );\n }\n public get rakecutCondition(): boolean {\n let patiosWidth =\n this.APP.dialogEditBay.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n let patiosLength =\n this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue;\n\n return false;\n }\n\n public firstLoad = true;\n\n constructor(app: AppComponent) {\n this.APP = app;\n this.patiosGroup = new Group();\n this.patiosGroup.userData = { category: GEOMETRY_CATEGORY.PATIOS };\n app.scene.add(this.patiosGroup);\n\n this.postAndBeamManager = new PostAndBeamManager(app, this);\n this.roofManager = new RoofManager(app, this);\n this.dimesionManager = new DimensionManager(app, this);\n this.registerEvents();\n }\n\n load(): Promise {\n return Promise.all([\n this.postAndBeamManager.optimize(),\n this.roofManager.optimize(),\n this.dimesionManager.optimize(),\n ]).then(() => {\n this.postAndBeamManager.load();\n this.roofManager.load();\n this.dimesionManager.load();\n });\n }\n loadBracket(bracketQuantity: number): void {\n this.postAndBeamManager.numOfBraket = bracketQuantity;\n this.postAndBeamManager.addUpstandBraket();\n }\n loadBracketCutout(bracketQuantity: number): void {\n // this.postAndBeamManager.addUpstandBraketCutOut(bracketQuantity);\n }\n loadSideGableBracket(bracketQuantity: number): void{\n this.postAndBeamManager.numberOfBracketsSide = bracketQuantity\n this.postAndBeamManager.addBraketOrBeamSideRoof();\n }\n public destroy(): void {\n this.postAndBeamManager.destroy();\n this.roofManager.destroy();\n this.dimesionManager.destroy();\n this.unRegisterEvent();\n }\n registerEvents(): void {\n this.updateEventHandle = this.updateDefer.bind(this);\n this.controlsToRegisterEvent = [\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sltCutOut,\n this.APP.sldFrontOverhang,\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltColourBarge,\n this.APP.sltColourGutter,\n this.APP.sltColourDownpipe,\n this.APP.sltColourRoof,\n this.APP.sldSpan,\n this.APP.sldExistingWallHeight,\n this.APP.sldEaveWidth,\n this.APP.sldFasciaDepth,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldFlyOverBracketHeight,\n this.APP.sltColourBeam,\n this.APP.sltColourPost,\n this.APP.sltColourBracket,\n this.APP.sltColourFasciaBracket,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n this.APP.sltLeftCutType,\n this.APP.sldLeftCutVertical,\n this.APP.sldLeftCutHorizontal,\n this.APP.sltRightCutType,\n this.APP.sldRightCutVertical,\n this.APP.sldRightCutHorizontal,\n this.APP.sltPanelDirection,\n this.APP.sltPanelDirectionShow,\n this.APP.sltBeamLayoutShow,\n this.APP.sltFasciaUpstandBrackets,\n this.APP.sltUpFasciaUpstandBracket,\n this.APP.btnTurnOnPanel,\n ];\n this.controlsToRegisterEvent.forEach((c) => {\n c.addAction(this.updateEventHandle);\n });\n }\n unRegisterEvent(): void {\n this.controlsToRegisterEvent.forEach((c) =>\n c.removeAction(this.updateEventHandle)\n );\n }\n updateDefer(previousValue: number, currentValue: number) {\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES ||\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE ||\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE\n ) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => {\n this.update(previousValue, currentValue);\n }, this.deferTimeout);\n } else {\n this.update(previousValue, currentValue);\n }\n }\n update(preVal: number, curVal: number): void {\n let totalBaySize = this.APP.dialogEditBay.totalBaySize;\n let diff = this.APP.sldExistingLength.currentValue - UI.span;\n\n this.patiosLength = totalBaySize + UI.overhangFront;\n this.patiosWidth = UI.span + UI.overhangLeft + UI.overhangRight;\n\n if (this.APP.sltExistingType.currentValue == 1) {\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n this.patiosGroup.position.setX(\n -diff / 2 +\n this.APP.sldEaveWidth.currentValue -\n this.APP.sldExistingLength2.currentValue\n );\n } else {\n this.patiosGroup.position.setX(\n -diff / 2 + this.APP.sldEaveWidth.currentValue + FASCIA_BRACKET_FIT\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 2) {\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n this.patiosGroup.position.setX(\n diff / 2 -\n this.APP.sldEaveWidth.currentValue +\n this.APP.sldExistingLength2.currentValue\n );\n } else {\n this.patiosGroup.position.setX(\n diff / 2 - this.APP.sldEaveWidth.currentValue - FASCIA_BRACKET_FIT\n );\n }\n } else {\n this.patiosGroup.position.setX(0);\n }\n\n Promise.all([this.roofManager.load(), this.postAndBeamManager.load()]).then(\n () => {\n // this.boundingBox = this.APP.utils.getObjectsBoundingBox(\n // this.patiosGroup.children.filter(c => c.userData.type != GEOMETRY_TYPE.DIMENSION && c.userData.type != GEOMETRY_TYPE.ROOF_PATIOS)\n // );\n this.boundingBox = this.getPatiosBox();\n this.dimesionManager.draw();\n }\n );\n }\n getOutlines(): Printing2DGeometry {\n let dimensionOutline = this.dimesionManager.getOutlines();\n return {\n lines: [\n ...this.postAndBeamManager.getSection().lines,\n ...this.roofManager.getOutLines().lines,\n ...dimensionOutline.lines,\n ],\n texts: dimensionOutline.texts,\n };\n }\n public getPatiosBox(): Box3 {\n let left = -UI.span / 2 - UI.overhangLeft;\n let right = UI.span / 2 + UI.overhangRight;\n let front =\n this.APP.dialogEditBay.totalBaySize +\n this.APP.sldFrontOverhang.currentValue;\n let back = 0;\n let height = this.APP.sldBuildingHeight.currentValue;\n\n let box = new Box3();\n box = box.expandByPoint(new Vector3(left, 0, front));\n box = box.expandByPoint(new Vector3(right, height, back));\n box.translate(new Vector3(0, 0, this.APP.sldEaveWidth.currentValue));\n\n if (this.APP.sltExistingType.currentValue == 1) {\n let diff = (this.APP.sldExistingLength.currentValue - UI.span) / 2;\n box.translate(new Vector3(-diff, 0, 0));\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n box.translate(new Vector3(this.APP.sldLeftOverhang.currentValue, 0, 0));\n box.translate(new Vector3(this.APP.sldEaveWidth.currentValue, 0, 0));\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n box.translate(\n new Vector3(-this.APP.sldExistingLength2.currentValue, 0, 0)\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 2) {\n let diff = (this.APP.sldExistingLength.currentValue - UI.span) / 2;\n box.translate(new Vector3(diff, 0, 0));\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n box.translate(new Vector3(-this.APP.sldRightOverhang.currentValue, 0, 0));\n box.translate(new Vector3(-this.APP.sldEaveWidth.currentValue, 0, 0));\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n box.translate(\n new Vector3(this.APP.sldExistingLength2.currentValue, 0, 0)\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 3) {\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n }\n\n // if (!environment.production) {\n // this.APP.scene.remove(...this.APP.scene.children.filter(o => o.userData.type == 'BOXHELPER'));\n // let boxHelper = new Box3Helper(box);\n // boxHelper.userData = { type: \"BOXHELPER\" };\n // this.APP.scene.add(boxHelper);\n // }\n\n return box;\n }\n}\n","import _ from \"lodash\";\nimport Beam, { BeamOptions } from \"src/app/models/Beam.model\";\nimport UpstandBraket, {\n UpstandBraketOptions,\n} from \"src/app/models/UpstandBraket.model\";\nimport {\n Box3,\n BoxBufferGeometry,\n BoxHelper,\n BufferGeometry,\n Geometry,\n Group,\n LineSegments,\n Material,\n Matrix4,\n Mesh,\n Plane,\n Vector3,\n} from \"three\";\nimport { GableFBFasciaManager } from \".\";\nimport { GEOMETRY_CATEGORY, GEOMETRY_TYPE, INIT } from \"../../app.config\";\nimport {\n BUILDING_SIDE,\n EXISTING_BUILDING_CONFIG,\n FASCIA_BRACKET_FIT,\n RAKECUT_TYPE,\n} from \"../../app.constants\";\nimport {\n HomeComponent as AppComponent,\n HomeComponent,\n} from \"../../containers/home/home.component\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport {\n GeometryInfo,\n LineType,\n Print2DView,\n Printing2DGeometry,\n Printing2DLine,\n ViewType,\n} from \"../models\";\nimport { UI } from \"../ui\";\nimport { Util, getRafterBeamEndCapCode } from \"../utils\";\n\nexport class PostAndBeamManager {\n private scene: Group;\n private APP: AppComponent;\n private MANAGER: GableFBFasciaManager;\n private material: Material;\n private utils: Util;\n private geometryManager: GeometryManager;\n private postInfo: GeometryInfo;\n public beamInfo: GeometryInfo;\n private beamRakecutInfoLeft: GeometryInfo;\n private beamRakecutInfoRight: GeometryInfo;\n private geo_centerSuperiorPost: GeometryInfo;\n private geo_RafterBeam: GeometryInfo;\n private geo_rafterBeamEndCap: GeometryInfo;\n private geo_beamEndCap: GeometryInfo;\n private geo_groundBase: GeometryInfo;\n private eventHandleId: any;\n private roofWidth: number;\n private existingTypeLeftX: number;\n private existingTypeRightX: number;\n private existingType: number;\n private totalBaySize: number;\n private frontPostHeight: number;\n private downpipeGroupRight: Group;\n private downpipeGroupLeft: Group;\n private downpipeStepRakeCutGroupLeft: Group;\n private downpipeStepRakeCutGroupRight: Group;\n public geo_downPipe: GeometryInfo;\n private geo_downPipeL: GeometryInfo;\n private geo_roofBase: GeometryInfo;\n private geoBraketExtL_2: GeometryInfo;\n private geoBraketExtR_2: GeometryInfo;\n private objectSizeChangedHandle: any;\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n\n private geo_beamStepRakecutLeft: GeometryInfo;\n private geo_beamStepRakecutRight: GeometryInfo;\n\n private geoBeamJoint: GeometryInfo;\n private geoHouseBeamJoint: GeometryInfo;\n\n private beamLeftCutSizeInfo: any;\n private beamRightCutSizeInfo: any;\n\n private geoBraket_1: GeometryInfo;\n public geoBraket_2: GeometryInfo;\n private geoBeam: GeometryInfo;\n private geoBeamEndCap: GeometryInfo;\n\n private offsetYBraket = 0;\n public numberOfBracketsSide = INIT.DEFAULT_BRACKET_NUMBER;\n public numOfBraket = INIT.DEFAULT_BRACKET_NUMBER;\n\n k: number;\n k_: number;\n j: number;\n l: number;\n m: number;\n v: number;\n\n constructor(app: AppComponent, fasciaManager: GableFBFasciaManager) {\n this.APP = app;\n this.MANAGER = fasciaManager;\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.scene = fasciaManager.patiosGroup;\n this.material = MaterialManager.Instance().DEFAULT.clone();\n this.registerEvent();\n }\n public destroy(): void {\n this.unregisterEvent();\n }\n public uiChanged(preVal: number, curVal: number): void {\n this.load();\n }\n private objectSizeChanged(pre: number, cur: number) {\n this.optimize().then(() => {\n this.load();\n });\n }\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldExistingWallHeight,\n this.APP.sltRoofPitch,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldExistingWidth1,\n this.APP.sltExistingType,\n this.APP.dialogEditBay,\n this.APP.sldEaveWidth,\n this.APP.sldFrontOverhang,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n ];\n //this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n this.controlsToRegisterEvent2 = [\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltColumnType,\n ];\n this.controlsToRegisterEvent2.forEach((c) =>\n c.addAction(this.objectSizeChangedHandle)\n );\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach((c) =>\n c.removeAction(this.objectSizeChangedHandle)\n );\n this.controlsToRegisterEvent2 = undefined;\n }\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n this.beamInfo = this.geometryManager.getBeam();\n this.beamInfo.geometry\n .rotateY(Math.PI / 2)\n .translate(this.beamInfo.length / 2, -this.beamInfo.height / 2, 0);\n //.scale(this.APP.sldBaySize.currentValue / this.beamInfo.length, 1, 1);\n\n this.geoBeamJoint = this.geometryManager.getBeamJoint();\n this.geoHouseBeamJoint = this.geometryManager.getHouseBeamJoint();\n\n this.beamRakecutInfoLeft = this.geometryManager.getBeam();\n this.beamRakecutInfoLeft.geometry.translate(\n this.beamInfo.width / 2,\n -this.beamInfo.height / 2,\n -this.beamInfo.length / 2\n );\n\n this.beamRakecutInfoRight = this.geometryManager.getBeam();\n this.beamRakecutInfoRight.geometry.translate(\n -this.beamInfo.width / 2,\n -this.beamInfo.height / 2,\n -this.beamInfo.length / 2\n );\n\n this.geo_beamStepRakecutLeft = this.geometryManager.getBeam();\n this.geo_beamStepRakecutLeft.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_beamStepRakecutLeft.length / 2,\n -this.geo_beamStepRakecutLeft.height / 2,\n -this.geo_beamStepRakecutLeft.width / 2\n );\n\n this.geo_beamStepRakecutRight = this.geometryManager.getBeam();\n this.geo_beamStepRakecutRight.geometry\n .rotateY(Math.PI / 2)\n .translate(\n -this.geo_beamStepRakecutRight.length / 2,\n -this.geo_beamStepRakecutRight.height / 2,\n -this.geo_beamStepRakecutRight.width / 2\n );\n\n this.geo_beamEndCap = this.geometryManager.getBeamEndCap();\n this.geo_beamEndCap.geometry.translate(\n 0,\n -this.geo_beamEndCap.height / 2,\n 0\n );\n\n this.geo_RafterBeam = this.geometryManager.getRafterBeam();\n this.geo_RafterBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_RafterBeam.length / 2,\n -this.geo_RafterBeam.height / 2,\n this.geo_RafterBeam.width / 2\n );\n\n this.geo_rafterBeamEndCap = this.geometryManager.getRafterBeamEndCap();\n this.geo_rafterBeamEndCap.geometry.translate(\n 0,\n -this.geo_rafterBeamEndCap.height / 2,\n this.geo_rafterBeamEndCap.length / 2\n );\n\n this.postInfo = this.geometryManager.getPost();\n this.postInfo.geometry\n .rotateX(Math.PI / 2)\n .translate(0, this.postInfo.height / 2, 0);\n //.scale(1, scalePostHeight, 1);\n\n this.geo_centerSuperiorPost = this.geometryManager.getCenterPost();\n this.geo_centerSuperiorPost.geometry\n .rotateX(Math.PI / 2)\n .translate(\n this.geo_centerSuperiorPost.width / 2,\n this.geo_centerSuperiorPost.height / 2,\n this.geo_centerSuperiorPost.width / 2\n );\n\n this.geo_groundBase = new GeometryInfo();\n this.geo_groundBase.width = 1000;\n this.geo_groundBase.height = 1;\n this.geo_groundBase.length = 1000;\n this.geo_groundBase.geometry = new BoxBufferGeometry(\n this.geo_groundBase.width,\n this.geo_groundBase.height,\n this.geo_groundBase.length\n );\n this.geo_groundBase.geometry.translate(\n this.geo_groundBase.width / 2,\n 0,\n this.geo_groundBase.length / 2\n );\n\n this.geo_downPipe = this.geometryManager.getDownPipe();\n this.geo_downPipeL = this.geometryManager.getDownPipeL();\n this.geo_roofBase = this.geometryManager.getRoofBase();\n\n this.scene.remove(\n ...this.scene.children.filter(\n (c) => c.userData.type == GEOMETRY_TYPE.DOWNPIPE\n )\n );\n this.downpipeGroupRight = new Group();\n this.downpipeGroupRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.downpipeGroupRight.rotateY(Math.PI / 2);\n this.scene.add(this.downpipeGroupRight);\n\n this.downpipeGroupLeft = new Group();\n this.downpipeGroupLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.downpipeGroupLeft.rotateY(-Math.PI / 2);\n this.scene.add(this.downpipeGroupLeft);\n\n this.downpipeStepRakeCutGroupLeft = new Group();\n this.downpipeStepRakeCutGroupLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeStepRakeCutGroupLeft);\n\n this.downpipeStepRakeCutGroupRight = new Group();\n this.downpipeStepRakeCutGroupRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeStepRakeCutGroupRight);\n\n this.geoBraket_1 = this.geometryManager.getUpstandBraket(1);\n this.geoBraket_1.geometry.rotateX(Math.PI / 2);\n this.geoBraket_1.geometry.translate(0, this.geoBraket_1.length / 2, 0);\n this.geoBraket_2 = this.geometryManager.getUpstandBraket(2);\n this.geoBraket_2.geometry.rotateY(Math.PI);\n this.geoBraket_2.geometry.rotateX(Math.PI / 2);\n this.geoBraket_2.geometry.translate(\n 0,\n this.geoBraket_2.length / 2,\n -this.geoBraket_2.height / 4\n );\n\n this.geoBraketExtL_2 = this.geometryManager.getUpstandBraket(2);\n this.geoBraketExtL_2.geometry.rotateX(Math.PI / 2);\n this.geoBraketExtL_2.geometry.rotateY(-Math.PI / 2);\n this.geoBraketExtL_2.geometry.rotateZ(-Math.PI);\n this.geoBraketExtL_2.geometry.translate(\n -this.geoBraketExtL_2.height / 2,\n this.geoBraketExtL_2.length / 2,\n this.geoBraketExtL_2.height / 3 - this.geoBraket_1.width / 2\n );\n //Right\n this.geoBraketExtR_2 = this.geometryManager.getUpstandBraket(2);\n this.geoBraketExtR_2.geometry.rotateX(Math.PI / 2);\n this.geoBraketExtR_2.geometry.rotateY(Math.PI / 2);\n this.geoBraketExtR_2.geometry.rotateZ(-Math.PI);\n this.geoBraketExtR_2.geometry.translate(\n this.geoBraketExtR_2.height / 2,\n this.geoBraketExtR_2.length / 2,\n this.geoBraketExtR_2.height / 3 - this.geoBraket_1.width / 2\n );\n\n this.geoBeam = this.geometryManager.getBeam();\n this.geoBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(0, this.geoBeam.height / 2, 0);\n\n this.geoBeamEndCap = this.geometryManager.getBeamEndCap();\n this.geoBeamEndCap.geometry\n .translate(\n 0,\n this.geoBeamEndCap.height / 2,\n this.geoBeamEndCap.length / 2\n )\n .rotateY(Math.PI / 2);\n\n resolve();\n });\n }\n\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.SUPERIOR_POST\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.SUPERIOR_CENTER_POST\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.GROUND_BASE\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (o) => o.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET_EXT\n )\n );\n this.downpipeGroupRight.children = [];\n this.downpipeGroupLeft.children = [];\n this.downpipeStepRakeCutGroupLeft.children = [];\n this.downpipeStepRakeCutGroupRight.children = [];\n\n this.beamLeftCutSizeInfo = this.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.LEFT\n );\n this.beamRightCutSizeInfo = this.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.RIGHT\n );\n\n this.totalBaySize = this.APP.dialogEditBay.listBay.reduce(\n (total, val) => total + val.value,\n 0\n );\n this.roofWidth = UI.span;\n this.existingType = +this.APP.sltExistingType.currentValue;\n this.existingTypeLeftX = 0;\n this.existingTypeRightX = 0;\n if (this.existingType === 1 || this.existingType === 3) {\n this.existingTypeLeftX = this.APP.sldEaveWidth.currentValue;\n }\n if (this.existingType === 2 || this.existingType === 3) {\n this.existingTypeRightX = this.APP.sldEaveWidth.currentValue;\n }\n this.offsetYBraket = 0;\n if (UI.upstandBraketType == 150) {\n this.offsetYBraket =\n 150 +\n this.beamInfo.height +\n (this.geoBraket_2.height / 4 + this.geoBraket_1.width) *\n this.utils.tan(UI.patiosPitch);\n } else if (UI.upstandBraketType == 300) {\n this.offsetYBraket =\n 300 +\n this.beamInfo.height +\n (this.geoBraket_2.height / 4 + this.geoBraket_1.width) *\n this.utils.tan(UI.patiosPitch);\n } else if (UI.upstandBraketType == 450) {\n this.offsetYBraket =\n 450 +\n this.beamInfo.height +\n (this.geoBraket_2.height / 4 + this.geoBraket_1.width) *\n this.utils.tan(UI.patiosPitch);\n } else if (UI.upstandBraketType == 600) {\n this.offsetYBraket =\n 600 +\n this.beamInfo.height +\n (this.geoBraket_2.height / 4 + this.geoBraket_1.width) *\n this.utils.tan(UI.patiosPitch);\n }\n if (UI.isUpFasciaUpstandardBracket) {\n this.offsetYBraket -=\n (this.geoBraket_2.height / 4 + this.geoBraket_1.width) *\n this.utils.tan(UI.patiosPitch) +\n (this.geoBraket_2.height / 4) * this.utils.tan(UI.patiosPitch);\n }\n\n this.addCenterSuperiorBeam();\n this.addGround();\n let offsetZ = 0;\n let idx = 0;\n\n this.addHorSuperiorBeam(-UI.span / 2 + this.geoBeam.width / 2, {\n left: true,\n first: true,\n last: false,\n });\n this.addHorSuperiorBeam(UI.span / 2 - this.geoBeam.width / 2, {\n right: true,\n first: false,\n last: true,\n });\n\n this.addBeam(offsetZ, {\n back: idx == 0,\n center: !(idx == this.APP.dialogEditBay.listBay.length) && !(idx == 0),\n front: idx == this.APP.dialogEditBay.listBay.length,\n });\n\n this.addCenterPost(offsetZ, {\n center: !(idx == this.APP.dialogEditBay.listBay.length) && !(idx == 0),\n first: idx == 0,\n last: idx == this.APP.dialogEditBay.listBay.length,\n });\n\n this.addRafterSuperiorBeam(\n -UI.existingWidth1 / 2 + UI.eaveWidth + this.geoBraket_2.height / 4,\n {\n front: idx == this.APP.dialogEditBay.listBay.length,\n right: true,\n first: idx === 0,\n last: idx == this.APP.dialogEditBay.listBay.length,\n }\n );\n this.addRafterSuperiorBeam(\n -UI.existingWidth1 / 2 + UI.eaveWidth + this.geoBraket_2.height / 4,\n {\n back: idx == 0,\n left: true,\n first: idx === 0,\n last: idx == this.APP.dialogEditBay.listBay.length,\n }\n );\n\n this.APP.dialogEditBay.listBay.map((m) => {\n offsetZ += m.value;\n\n this.addBeam(offsetZ, {\n back: idx + 1 == 0,\n center:\n !(idx + 1 == this.APP.dialogEditBay.listBay.length) &&\n !(idx + 1 == 0),\n front: idx + 1 == this.APP.dialogEditBay.listBay.length,\n });\n\n this.addCenterPost(offsetZ, {\n center:\n !(idx + 1 == this.APP.dialogEditBay.listBay.length) &&\n !(idx + 1 == 0),\n first: idx + 1 == 0,\n last: idx + 1 == this.APP.dialogEditBay.listBay.length,\n });\n\n let fitBeam = 0;\n if (idx + 1 > 0 && idx + 1 < this.APP.dialogEditBay.listBay.length) {\n fitBeam = this.geo_RafterBeam.width / 2;\n } else if (idx + 1 == this.APP.dialogEditBay.listBay.length) {\n fitBeam = this.geo_RafterBeam.width;\n }\n\n this.addRafterSuperiorBeam(\n offsetZ -\n fitBeam -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4,\n {\n front: idx + 1 == this.APP.dialogEditBay.listBay.length,\n right: true,\n first: idx + 1 === 0,\n last: idx + 1 == this.APP.dialogEditBay.listBay.length,\n }\n );\n this.addRafterSuperiorBeam(\n offsetZ -\n fitBeam -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4,\n {\n back: idx + 1 == 0,\n left: true,\n first: idx + 1 === 0,\n last: idx + 1 == this.APP.dialogEditBay.listBay.length,\n }\n );\n\n idx++;\n });\n\n this.addBraketOrBeamSideRoof();\n this.showBeamOutline();\n this.addDownPipeRight();\n this.addDownPipeLeft();\n this.addUpstandBraket();\n\n this.updateUI();\n resolve();\n });\n }\n public showBeamOutline() {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.BEAM_OUTLINE\n )\n );\n\n if (!UI.beamLayoutShow) return;\n\n const objs = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n const meshes = [];\n objs.forEach((el) => {\n if (el.type == \"Group\") {\n meshes.push(\n ...el.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n }\n });\n\n for (let o of meshes) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n o as Mesh,\n 10\n );\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n\n var line = new LineSegments(\n outlineGeo,\n MaterialManager.Instance().BEAM_OUTLINE\n );\n line.userData = { type: GEOMETRY_TYPE.BEAM_OUTLINE };\n this.APP.scene.add(line);\n }\n }\n public addBraketOrBeamSideRoof() {\n this.scene.remove(\n ...this.scene.children.filter(\n (o) => o.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET_EXT\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.SUPERIOR_POST\n )\n );\n\n let offsetZ = 0;\n for (let i = 0; i <= UI.listBay.length; i++) {\n if (i == 0) {\n offsetZ += UI.listBay[i].value;\n continue;\n }\n this.addPost(offsetZ, {\n back: i + 1 == 0,\n center: !(i == this.APP.dialogEditBay.listBay.length) && !(i == 0),\n front: i == this.APP.dialogEditBay.listBay.length,\n first: i == 0,\n last: i == this.APP.dialogEditBay.listBay.length,\n left: true,\n right: false,\n });\n this.addPost(offsetZ, {\n back: i == 0,\n center: !(i == this.APP.dialogEditBay.listBay.length) && !(i == 0),\n front: i == this.APP.dialogEditBay.listBay.length,\n first: i == 0,\n last: i == this.APP.dialogEditBay.listBay.length,\n left: false,\n right: true,\n });\n\n if (i < UI.listBay.length) {\n offsetZ += UI.listBay[i].value;\n }\n }\n\n //LEFT SIDE\n if (\n UI.existingType == BUILDING_SIDE.LEFT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n offsetZ = 0;\n let numOfBrakets = this.numberOfBracketsSide + 1;\n let distance =\n (UI.existingWidth1 - UI.eaveWidth - this.geoBraket_2.height / 4 >\n UI.totalBayLength\n ? UI.totalBayLength\n : UI.existingWidth1 - UI.eaveWidth - this.geoBraket_2.height / 4) /\n (numOfBrakets - 1);\n for (let i = 0; i < numOfBrakets; i++) {\n this.addUpstandBraketExt(offsetZ, {\n back: i == 0,\n center: !(i + 1 == numOfBrakets) && !(i == 0),\n front: i + 1 == numOfBrakets,\n first: i == 0,\n last: i + 1 == numOfBrakets,\n left: true,\n right: false,\n });\n\n offsetZ += distance;\n }\n }\n\n //RIGHT SIDE\n if (\n UI.existingType == BUILDING_SIDE.RIGHT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n offsetZ = 0;\n let numOfBrakets = this.numberOfBracketsSide + 1;\n let distance =\n (UI.existingWidth1 - UI.eaveWidth - this.geoBraket_2.height / 4 >\n UI.totalBayLength\n ? UI.totalBayLength\n : UI.existingWidth1 - UI.eaveWidth - this.geoBraket_2.height / 4) /\n (numOfBrakets - 1);\n for (let i = 0; i < numOfBrakets; i++) {\n this.addUpstandBraketExt(offsetZ, {\n back: i == 0,\n center: !(i + 1 == numOfBrakets) && !(i == 0),\n front: i + 1 == numOfBrakets,\n first: i == 0,\n last: i + 1 == numOfBrakets,\n left: false,\n right: true,\n });\n\n offsetZ += distance;\n }\n }\n }\n public addUpstandBraket() {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.UPSTAND_BRAKET\n )\n );\n if (UI.upstandBraketType == 0 || UI.listBay.length == 0) {\n return;\n }\n let height = +UI.upstandBraketType;\n\n const _bracketOffsetXExt = this.geoBraket_2.height / 5;\n let distance = 1000;\n let offsetX = -UI.existingLength1 / 2;\n let spanLength = UI.span;\n\n if (!HomeComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n if (UI.existingType == 1 || UI.existingType == 2) {\n spanLength -= UI.existingLength2;\n }\n if (UI.existingType == 3) {\n spanLength -= 2 * UI.existingLength2;\n }\n }\n\n if (UI.existingType == 0) {\n let startX =\n -spanLength / 2 > -UI.existingLength1 / 2\n ? -spanLength / 2\n : -UI.existingLength1 / 2;\n let endX =\n spanLength / 2 < UI.existingLength1 / 2\n ? spanLength / 2\n : UI.existingLength1 / 2;\n distance = (endX - startX) / (this.numOfBraket - 1);\n offsetX = startX;\n } else if (UI.existingType == 1) {\n distance = (spanLength - _bracketOffsetXExt) / (this.numOfBraket - 1);\n offsetX = -spanLength / 2 + _bracketOffsetXExt;\n if (spanLength > UI.existingLength1 - UI.eaveWidth) {\n distance =\n (UI.existingLength1 - UI.eaveWidth - _bracketOffsetXExt) /\n (this.numOfBraket - 1);\n }\n if (!HomeComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n offsetX = -spanLength / 2 + UI.existingLength2 / 2 + _bracketOffsetXExt;\n }\n } else if (UI.existingType == 2) {\n offsetX = -spanLength / 2;\n distance = (spanLength - _bracketOffsetXExt) / (this.numOfBraket - 1);\n\n if (spanLength > UI.existingLength1 - UI.eaveWidth) {\n offsetX =\n -spanLength / 2 + (spanLength - UI.existingLength1 + UI.eaveWidth);\n distance =\n (UI.existingLength1 - _bracketOffsetXExt - UI.eaveWidth) /\n (this.numOfBraket - 1);\n }\n\n if (!HomeComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n offsetX -= UI.existingLength2 / 2;\n }\n } else if (UI.existingType == 3) {\n distance = (spanLength - _bracketOffsetXExt * 2) / (this.numOfBraket - 1);\n offsetX = -spanLength / 2 + _bracketOffsetXExt;\n }\n\n let optionBrakets: UpstandBraketOptions = {\n container: this.scene,\n position: new Vector3(),\n geoBraket_1: this.geoBraket_1,\n geoBraket_2: this.geoBraket_2,\n height: height,\n material: MaterialManager.Instance().FASCIA_BRACKET.clone(),\n };\n let views: Print2DView[] = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n let userData = {\n type: GEOMETRY_TYPE.UPSTAND_BRAKET,\n views: views,\n };\n for (let i = 0; i < this.numOfBraket; i++) {\n let posX = offsetX;\n if (i == 0) {\n posX = posX + this.geoBraket_1.width / 2;\n } else if (i == this.numOfBraket - 1) {\n posX = posX - this.geoBraket_1.width / 2;\n }\n if (\n (UI.existingType == BUILDING_SIDE.LEFT ||\n UI.existingType == BUILDING_SIDE.BOTH) &&\n i == 0\n ) {\n offsetX += distance;\n continue;\n }\n if (\n (UI.existingType == BUILDING_SIDE.RIGHT ||\n UI.existingType == BUILDING_SIDE.BOTH) &&\n i == this.numOfBraket - 1\n ) {\n offsetX += distance;\n continue;\n }\n\n new UpstandBraket({\n ...optionBrakets,\n position: new Vector3(\n posX,\n UI.existingWallHeight,\n UI.eaveWidth - UI.existingWidth1 / 2\n ),\n userData: userData,\n });\n offsetX += distance;\n }\n }\n private addDownPipeRight() {\n let offsetZ =\n this.totalBaySize - 50 + UI.eaveWidth + this.geoBraket_2.height / 4;\n let offsetX = UI.span / 2 + 100;\n\n if (this.APP.sltExistingType.currentValue != 0) {\n offsetZ -= this.APP.sldExistingWidth1.currentValue / 2;\n }\n\n let offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight + +UI.upstandBraketType,\n UI.overhangRight,\n UI.patiosPitch,\n -1\n ) +\n this.geo_roofBase.height +\n this.geoBeam.height +\n 90;\n\n if (this.APP.sltGutterType.currentValue == 0) {\n offsetY -= 80;\n } else {\n offsetY -= 60;\n }\n\n if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n let meshPipe = new Mesh(\n this.geo_downPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipe.userData = { type: GEOMETRY_TYPE.DOWNPIPE_NOZZLE };\n meshPipe.scale.setY(100 / this.geo_downPipe.height);\n meshPipe.position.set(\n 0,\n -190,\n UI.overhangRight / this.utils.cos(UI.patiosPitch) -\n this.geo_downPipe.width / 2 -\n 20\n );\n\n this.downpipeGroupRight.add(meshPipe);\n this.downpipeGroupRight.position.set(offsetX, offsetY, offsetZ);\n } else {\n this.utils.createDownpipeGroup(\n this.APP,\n this.downpipeGroupRight,\n this.geo_downPipe,\n this.geo_downPipeL,\n offsetX,\n offsetY,\n offsetZ,\n 0,\n 0,\n UI.overhangRight,\n offsetY,\n true\n );\n }\n }\n private addDownPipeLeft() {\n let offsetZ =\n this.totalBaySize - 50 + UI.eaveWidth + this.geoBraket_2.height / 4;\n let offsetX = -UI.span / 2 - 100;\n\n if (this.APP.sltExistingType.currentValue != 0) {\n offsetZ -= this.APP.sldExistingWidth1.currentValue / 2;\n }\n\n let offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight + +UI.upstandBraketType,\n UI.overhangLeft,\n UI.patiosPitch,\n -1\n ) +\n this.geo_roofBase.height +\n this.geoBeam.height +\n 90;\n\n if (this.APP.sltGutterType.currentValue == 0) {\n offsetY -= 80;\n } else {\n offsetY -= 60;\n }\n\n if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n let meshPipe = new Mesh(\n this.geo_downPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipe.userData = { type: GEOMETRY_TYPE.DOWNPIPE_NOZZLE };\n meshPipe.scale.setY(100 / this.geo_downPipe.height);\n meshPipe.position.set(\n 0,\n -190,\n UI.overhangLeft / this.utils.cos(UI.patiosPitch) -\n this.geo_downPipe.width / 2 -\n 20\n );\n\n this.downpipeGroupLeft.add(meshPipe);\n this.downpipeGroupLeft.position.set(offsetX, offsetY, offsetZ);\n } else {\n this.utils.createDownpipeGroup(\n this.APP,\n this.downpipeGroupLeft,\n this.geo_downPipe,\n this.geo_downPipeL,\n offsetX,\n offsetY,\n offsetZ,\n 0,\n 0,\n UI.overhangLeft,\n offsetY,\n true\n );\n }\n }\n private addGround() {\n let offsetX = -(UI.span / 2 + UI.overhangLeft);\n let offsetZ =\n -this.APP.sldExistingWidth1.currentValue / 2 - UI.overhangBack;\n let width = UI.span + UI.overhangLeft + UI.overhangRight;\n let length =\n this.totalBaySize +\n UI.overhangFront +\n UI.overhangBack +\n this.APP.sldEaveWidth.currentValue +\n this.geoBraket_2.height / 4;\n\n let base = new Mesh(\n this.geo_groundBase.geometry,\n MaterialManager.Instance().BASE\n );\n base.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GROUND_BASE,\n };\n base.position.set(offsetX, 0, offsetZ);\n base.scale.set(\n width / this.geo_groundBase.width,\n 1,\n length / this.geo_groundBase.length\n );\n\n this.scene.add(base);\n }\n private getRoofHeight() {\n const _height = this.utils.getHeightByAngle(\n this.APP.sldExistingWallHeight.currentValue,\n UI.span / 2,\n this.APP.sltRoofPitch.currentValue,\n 1\n );\n return this.APP.sldExistingWallHeight.currentValue - _height;\n }\n private updateUI() {\n this.APP.roofHeight = this.getRoofHeight();\n this.APP.sldMinHeight.setValue(_.round(this.frontPostHeight, 0));\n }\n public getSection(): Printing2DGeometry {\n let objs = this.scene.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_POST ||\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_CENTER_POST\n );\n\n objs = [...objs];\n\n let lsGeometries: Printing2DLine[] = [];\n\n for (let o of objs) {\n let box = new BoxHelper(o);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n //this.scene.add(box);\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: outlineGeo.vertices,\n views: o.userData.views,\n });\n\n // var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"OUTLINE\"};\n // //line.position.set(o.position.x - 5000, o.position.y, o.position.z);\n // this.scene.add( line );\n }\n let beamGroups = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n for (let g of beamGroups) {\n for (let c of g.children) {\n c.updateMatrix();\n\n let objCloned = c.clone();\n objCloned.applyMatrix4(new Matrix4().getInverse(c.matrix));\n\n let box = new BoxHelper(objCloned);\n\n c.updateWorldMatrix(true, true);\n\n box.geometry.applyMatrix4(c.matrixWorld);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n const planView = _.find(\n g.userData.views,\n (el) => el.viewType == ViewType.PLAN\n );\n const anotherViews = _.filter(\n g.userData.views,\n (el) => el.viewType != ViewType.PLAN\n );\n if (anotherViews.length > 0) {\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo.vertices,\n views: anotherViews,\n });\n }\n if (planView) {\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo.vertices\n .slice(0, 8)\n .filter((el, index) => [0, 1, 4, 5].includes(index)),\n views: [planView],\n });\n }\n }\n }\n\n let braketGroup = this.scene.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.UPSTAND_BRAKET ||\n o.userData.type == GEOMETRY_TYPE.UPSTAND_BRAKET_CUTOUT ||\n o.userData.type == GEOMETRY_TYPE.UPSTAND_BRAKET_EXT\n );\n\n for (let g of braketGroup) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n g.children[1] as Mesh,\n 60\n );\n g.children[1].updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(g.children[1].matrixWorld);\n outlineGeo.translate(0, 5000, 0);\n\n let simplifiedGeo = this.simplifyGeo(outlineGeo);\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: simplifiedGeo.vertices,\n views: g.userData.views,\n });\n\n g.children[0].updateMatrix();\n let objCloned = g.children[0].clone();\n objCloned.applyMatrix4(new Matrix4().getInverse(g.children[0].matrix));\n\n let box = new BoxHelper(objCloned);\n\n g.children[0].updateWorldMatrix(true, true);\n\n box.geometry.applyMatrix4(g.children[0].matrixWorld);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n //this.APP.scene.add(box);\n\n let outlineGeo1 = this.simplifyGeo(box.geometry as BufferGeometry);\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo1.vertices,\n views: g.userData.views,\n });\n }\n\n let rafterBeamGroups = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n );\n for (let o of rafterBeamGroups) {\n o.children.forEach((el) => {\n this.utils.getOutlineRafterBeam(el as Mesh, lsGeometries);\n });\n }\n\n return { lines: lsGeometries, texts: [] };\n }\n public simplifyGeo(geo: BufferGeometry): Geometry {\n let vertices = geo.getAttribute(\"position\").array;\n let lineGeo = new Geometry();\n for (let i = 0; i < vertices.length; i += 3) {\n lineGeo.vertices.push(\n new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2])\n );\n }\n\n //2-3\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n //3-7\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n //7-6\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n //6-2\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n\n //1-4\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n //4-8\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n //8-5\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n //5-1\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n\n return lineGeo;\n }\n private addCenterPost(offsetZ, userDataPos) {\n let meshPost = new Mesh(\n this.geo_centerSuperiorPost.geometry,\n MaterialManager.Instance().BEAM\n );\n meshPost.userData = {\n ...userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_CENTER_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let scalePostY = 1;\n\n let views: Print2DView[];\n\n this.frontPostHeight = UI.existingWallHeight + +UI.upstandBraketType;\n\n scalePostY =\n ((UI.span / 2 - this.geoBeam.width / 2) * this.utils.tan(UI.patiosPitch) -\n this.geoBeam.height) /\n this.geo_centerSuperiorPost.height;\n\n if (userDataPos.last) {\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else {\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n let postOffsetX = -this.geo_centerSuperiorPost.width / 2;\n\n let postOffsetZ =\n offsetZ -\n this.geo_centerSuperiorPost.width / 2 -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4;\n if (userDataPos.first) {\n postOffsetZ =\n offsetZ -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4;\n } else if (userDataPos.last) {\n postOffsetZ =\n offsetZ -\n this.geo_centerSuperiorPost.width -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4;\n }\n\n meshPost.userData.views = views;\n meshPost.position.set(\n postOffsetX,\n UI.existingWallHeight + +UI.upstandBraketType + this.geoBeam.height,\n postOffsetZ\n );\n meshPost.scale.setY(scalePostY);\n\n this.scene.add(meshPost);\n }\n public addPost(offsetZ: number, userDataPos: any) {\n const condition = offsetZ + this.APP.sldEaveWidth.currentValue;\n if (\n (this.existingType === 1 || this.existingType === 3) &&\n userDataPos.left &&\n (UI.existingWidth1 >= condition + UI.multiSpan ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition + UI.multiSpan &&\n UI.cutOutType == 1))\n ) {\n return;\n }\n if (\n (this.existingType === 2 || this.existingType === 3) &&\n userDataPos.right &&\n (UI.existingWidth1 >= condition + UI.multiSpan ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition + UI.multiSpan &&\n UI.cutOutType == 1))\n ) {\n return;\n }\n\n let views: Print2DView[] = [];\n if (userDataPos.back || userDataPos.center) {\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else {\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n const mesh = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n let posZ =\n offsetZ -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4;\n if (userDataPos.back) {\n posZ =\n offsetZ +\n this.postInfo.width / 2 -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4;\n } else if (userDataPos.front) {\n posZ =\n offsetZ -\n this.postInfo.width / 2 -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4;\n }\n\n let length =\n UI.existingWallHeight + +UI.upstandBraketType + this.geoBeam.height;\n let scaleY = length / this.postInfo.height;\n\n let offsetX = 0;\n if (userDataPos.left) {\n offsetX = -UI.span / 2 + this.postInfo.width / 2;\n } else if (userDataPos.right) {\n offsetX = UI.span / 2 - this.postInfo.width / 2;\n }\n\n mesh.position.set(offsetX, 0, posZ);\n mesh.scale.setY(scaleY);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n this.scene.add(mesh);\n }\n\n private addUpstandBraketExt(offsetZ: number, userDataPos: any) {\n if (\n UI.upstandBraketType == 0 ||\n UI.listBay.length == 0 ||\n UI.existingType == 0\n ) {\n return;\n }\n if (\n (this.existingType == 1 && userDataPos.right) ||\n (this.existingType == 2 && userDataPos.left)\n ) {\n return;\n }\n let _flag = false;\n\n const condition = offsetZ + this.APP.sldEaveWidth.currentValue;\n if (!userDataPos.isMultiSpan && !_flag) {\n if (\n (this.existingType === 1 || this.existingType === 3) &&\n userDataPos.left &&\n (UI.existingWidth1 >= condition ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition &&\n UI.cutOutType == 1))\n ) {\n _flag = true;\n // return;\n }\n if (\n (this.existingType === 2 || this.existingType === 3) &&\n userDataPos.right &&\n (UI.existingWidth1 >= condition ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition &&\n UI.cutOutType == 1))\n ) {\n _flag = true;\n // return;\n }\n } else if (!_flag) {\n if (\n (this.existingType === 1 || this.existingType === 3) &&\n userDataPos.left &&\n (UI.existingWidth1 >= condition + UI.multiSpan ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition + UI.multiSpan &&\n UI.cutOutType == 1))\n ) {\n _flag = true;\n // return;\n }\n if (\n (this.existingType === 2 || this.existingType === 3) &&\n userDataPos.right &&\n (UI.existingWidth1 >= condition + UI.multiSpan ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition + UI.multiSpan &&\n UI.cutOutType == 1))\n ) {\n _flag = true;\n // return;\n }\n }\n if (!_flag) {\n return;\n }\n\n const _bracketOffsetXExt = this.geoBraket_2.height / 5; // + this.geoBraket_1.width / 4;\n let height = 0;\n let offsetX = -UI.existingLength1 / 2;\n let spanLength = UI.span;\n\n if (!AppComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n if (UI.existingType == 1 || UI.existingType == 2) {\n spanLength -= UI.existingLength2;\n }\n if (UI.existingType == 3) {\n spanLength -= 2 * UI.existingLength2;\n }\n }\n\n const _cond1 =\n UI.existingWidth1 < condition &&\n UI.existingWidth1 + UI.existingWidth2 > condition;\n const _cond2 =\n userDataPos.isMultiSpan &&\n UI.existingWidth1 < condition + UI.multiSpan &&\n UI.existingWidth1 + UI.existingWidth2 > condition + UI.multiSpan;\n\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n offsetX = -spanLength / 2 + this.geoBraket_1.width - FASCIA_BRACKET_FIT;\n if (!AppComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n offsetX = -spanLength / 2 + UI.existingLength2 / 2;\n }\n offsetX += _bracketOffsetXExt;\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n offsetX = spanLength / 2 - this.geoBraket_1.width + FASCIA_BRACKET_FIT;\n if (!AppComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n offsetX -= UI.existingLength2 / 2;\n }\n offsetX -= _bracketOffsetXExt;\n } else if (UI.existingType == 3) {\n offsetX =\n (-spanLength / 2) * (userDataPos.left ? 1 : -1) +\n (userDataPos.left ? this.geoBraket_1.width - FASCIA_BRACKET_FIT : 0) -\n (userDataPos.right ? this.geoBraket_1.width - FASCIA_BRACKET_FIT : 0);\n if ((!userDataPos.isMultiSpan && _cond1) || _cond2) {\n offsetX -=\n UI.existingLength2 * (userDataPos.left ? 1 : -1) +\n (userDataPos.right ? this.geoBraket_1.width : 0);\n }\n offsetX += _bracketOffsetXExt * (userDataPos.left ? 1 : -1);\n }\n\n let posZ =\n offsetZ -\n this.geoBraket_1.width / 2 -\n UI.existingWidth1 / 2 +\n UI.eaveWidth;\n if (userDataPos.front) {\n posZ =\n offsetZ - this.geoBraket_1.width - UI.existingWidth1 / 2 + UI.eaveWidth;\n }\n if (userDataPos.back) {\n posZ =\n offsetZ +\n this.geoBraket_1.width / 2 -\n UI.existingWidth1 / 2 +\n UI.eaveWidth;\n }\n\n height = +UI.upstandBraketType;\n\n let optionBrakets: UpstandBraketOptions = {\n container: this.scene,\n position: new Vector3(),\n geoBraket_1: this.geoBraket_1,\n geoBraket_2:\n UI.existingType == 2 ? this.geoBraketExtR_2 : this.geoBraketExtL_2,\n height: height,\n material: MaterialManager.Instance().FASCIA_BRACKET.clone(),\n };\n if (UI.existingType == 1) {\n optionBrakets = { ...optionBrakets, geoBraket_2: this.geoBraketExtL_2 };\n } else if (UI.existingType == 2) {\n optionBrakets = { ...optionBrakets, geoBraket_2: this.geoBraketExtR_2 };\n } else {\n optionBrakets = {\n ...optionBrakets,\n geoBraket_2: userDataPos.right\n ? this.geoBraketExtR_2\n : this.geoBraketExtL_2,\n };\n }\n let views: Print2DView[] = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n if (userDataPos.right) {\n views = [\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n new UpstandBraket({\n ...optionBrakets,\n position: new Vector3(offsetX, UI.existingWallHeight, posZ),\n userData: { type: GEOMETRY_TYPE.UPSTAND_BRAKET_EXT, views },\n });\n }\n\n public addBeam(offsetZ: number, userDataPos: any) {\n let offsetY = 0;\n let offsetX = -UI.span / 2 + this.postInfo.width;\n if (userDataPos.back) {\n offsetX = -UI.span / 2 + this.geoBeam.width;\n }\n\n let beamLength = UI.span - 2 * this.postInfo.width;\n if (userDataPos.back) {\n beamLength = UI.span - 2 * this.geoBeam.width;\n }\n\n let posZ = 0;\n let views: Print2DView[] = [];\n if (userDataPos.front) {\n offsetY =\n UI.existingWallHeight + +UI.upstandBraketType + this.geoBeam.height;\n posZ =\n offsetZ -\n this.geoBeam.width / 2 -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4;\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.center) {\n offsetY =\n UI.existingWallHeight + +UI.upstandBraketType + this.geoBeam.height;\n posZ =\n offsetZ -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.back) {\n offsetY =\n UI.existingWallHeight + +UI.upstandBraketType + this.geoBeam.height;\n posZ =\n offsetZ +\n this.geoBeam.width / 2 -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n let beamGroup: Group;\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup = this.utils.createBeamGroup2(\n this.beamInfo,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetX, offsetY, posZ),\n new Vector3(),\n views,\n 1,\n userDataPos,\n 0,\n \"x\",\n false,\n {\n hasStartCap: UI.beamType == 0,\n hasEndCap: UI.beamType == 0,\n hasStartJoint: false,\n hasEndJoint: false,\n jointGeo: null,\n }\n );\n } else {\n beamGroup = this.utils.createBeamGroup2(\n this.beamInfo,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetX, offsetY, posZ),\n new Vector3(),\n views,\n 1,\n userDataPos,\n 0,\n \"x\",\n false,\n {\n hasStartCap: UI.beamType == 0,\n hasEndCap: UI.beamType == 0,\n hasStartJoint: false,\n hasEndJoint: false,\n jointGeo: null,\n }\n );\n }\n\n beamGroup.userData = {\n ...beamGroup.userData,\n name: \"GB\",\n };\n\n this.scene.add(beamGroup);\n }\n public addHorSuperiorBeam(offsetX, userDataPos: any) {\n let offsetZ = 0;\n let offsetY = 0;\n\n let beamLength = this.totalBaySize + UI.overhangBack + UI.overhangFront;\n\n let views: Print2DView[];\n\n offsetY = UI.existingWallHeight + +UI.upstandBraketType;\n offsetZ =\n this.totalBaySize +\n UI.overhangFront -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4;\n\n if (userDataPos.left) {\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else {\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n this.cutStandardBeamByCutBeamWithinBayControl(\n this.beamInfo,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetX, offsetY + this.beamInfo.height, offsetZ),\n new Vector3(0, Math.PI / 2, 0),\n views,\n 1,\n userDataPos,\n 0,\n \"x\",\n \"EB\",\n this.geoBeamJoint\n );\n }\n private cutStandardBeamByCutBeamWithinBayControl(\n beamGeo: GeometryInfo,\n beamCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n userDataPos: any,\n beamGeoTranslationZ: number,\n beamDirection: string,\n beamName = \"\",\n jointGeo: GeometryInfo\n ) {\n // Map list cut beam here\n const beamStartZ = pos.z - length;\n const beamEndZ = pos.z;\n\n let endOfBayZ =\n -UI.existingWidth1 / 2 + UI.eaveWidth + this.geoBraket_2.height / 4;\n let startCutBeamZ = beamStartZ;\n let endCutBeamZ = beamStartZ;\n\n const beams = this.utils.getListSeperateBeamsByBaysForFbGable(\n endOfBayZ,\n beamStartZ,\n beamEndZ,\n endCutBeamZ,\n startCutBeamZ\n );\n\n for (let i = 0; i < beams.length; i++) {\n endCutBeamZ = beams[i][1];\n startCutBeamZ = beams[i][0];\n let beamGroup = this.utils.createBeamGroup2(\n beamGeo,\n beamCapGeo,\n endCutBeamZ - startCutBeamZ,\n new Vector3(pos.x, pos.y, endCutBeamZ),\n rot,\n views,\n directionOffset,\n userDataPos,\n beamGeoTranslationZ,\n beamDirection,\n UI.beamLayoutShow,\n {\n hasStartCap:\n UI.beamType == 0 &&\n (i == beams.length - 1 || (i == 0 && beams.length == 1)),\n hasEndCap: UI.beamType == 0 && i == 0,\n hasStartJoint: false,\n hasEndJoint: i !== 0,\n jointGeo: jointGeo,\n }\n );\n beamGroup.userData = {\n ...beamGroup.userData,\n name: beamName,\n };\n this.scene.add(beamGroup);\n }\n }\n public addRafterSuperiorBeam(offsetZ, userDataPos: any) {\n if (\n this.APP.sltWindClass.currentValue == 0 ||\n this.APP.sltWindClass.currentValue == 1\n ) {\n if (this.totalBaySize <= 6000 && this.APP.sldSpan.currentValue <= 7000) {\n return;\n }\n }\n if (\n this.APP.sltWindClass.currentValue == 3 ||\n this.APP.sltWindClass.currentValue == 4 ||\n this.APP.sltWindClass.currentValue == 5\n ) {\n return;\n }\n let mesh;\n\n let offsetXL = 0;\n let offsetXR =\n (UI.span / 2 - this.geoBeam.width / 2) / this.utils.cos(UI.patiosPitch);\n let offsetY = 0;\n\n let scaleX =\n (UI.span / 2 - this.geoBeam.width / 2) /\n this.utils.cos(UI.patiosPitch) /\n this.geo_RafterBeam.length;\n\n let views: Print2DView[];\n\n let fitZ = 0;\n\n if (userDataPos.left) {\n let material = MaterialManager.Instance().BEAM.clone();\n\n let nBottom = new Vector3(0, 1, 0).normalize();\n let pBottom = new Vector3(\n 0,\n UI.existingWallHeight + +UI.upstandBraketType + this.geoBeam.height,\n 0\n );\n let planeBottom = new Plane().setFromNormalAndCoplanarPoint(\n nBottom,\n pBottom\n );\n\n let beamOffsetX = 0;\n\n let nVer = new Vector3(-1, 0, 0).normalize();\n let pVer = new Vector3(\n -this.geoBeam.width / 2 + beamOffsetX + this.scene.position.x + fitZ,\n 0,\n 0\n );\n let planeVer = new Plane().setFromNormalAndCoplanarPoint(nVer, pVer);\n\n material.clippingPlanes = [planeBottom, planeVer];\n\n mesh = new Mesh(this.geo_RafterBeam.geometry, material);\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.right) {\n let material = MaterialManager.Instance().BEAM.clone();\n\n let nBottom = new Vector3(0, 1, 0).normalize();\n let pBottom = new Vector3(\n 0,\n UI.existingWallHeight + +UI.upstandBraketType + this.geoBeam.height,\n 0\n );\n let planeBottom = new Plane().setFromNormalAndCoplanarPoint(\n nBottom,\n pBottom\n );\n\n let beamOffsetX = 0;\n let nVer = new Vector3(1, 0, 0).normalize();\n let pVer = new Vector3(\n this.geoBeam.width / 2 + beamOffsetX + this.scene.position.x + fitZ,\n 0,\n 0\n );\n let planeVer = new Plane().setFromNormalAndCoplanarPoint(nVer, pVer);\n\n material.clippingPlanes = [planeBottom, planeVer];\n\n mesh = new Mesh(this.geo_RafterBeam.geometry, material);\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM,\n position: userDataPos,\n views: views,\n };\n mesh.position.set(offsetXL, 0, 0);\n mesh.scale.setX(scaleX);\n\n let checkExec = /\\w{1}\\d{1,3}x(\\d{1,3})/.exec(this.geo_RafterBeam.name);\n let beamSize = checkExec && checkExec.length == 2 ? checkExec[1] : \"\";\n let lowerBraketName = getRafterBeamEndCapCode(\n EXISTING_BUILDING_CONFIG.RAFTER_BEAM_SIZE,\n false\n );\n let higherBraketName = getRafterBeamEndCapCode(\n EXISTING_BUILDING_CONFIG.RAFTER_BEAM_SIZE,\n true\n );\n\n let capL;\n let capR;\n if (userDataPos.left) {\n let matEndCap = MaterialManager.Instance().BEAM.clone();\n\n let heightReal =\n UI.existingWallHeight +\n +UI.upstandBraketType +\n this.geoBeam.height +\n (this.utils.tan(UI.patiosPitch) * UI.span) / 2;\n let heightPlane = heightReal * this.utils.cos(UI.patiosPitch);\n let translateZ = this.utils.sin(UI.patiosPitch) * heightPlane;\n\n let planeTop = new Plane(new Vector3(0, -1, 0));\n let matrixTranslateTop = new Matrix4().makeTranslation(\n -translateZ / 2,\n heightPlane,\n 0\n );\n let matrixRotateTop = new Matrix4().makeRotationZ(\n this.utils.degreesToRadians(UI.patiosPitch)\n );\n let matrixTotalTop = matrixTranslateTop.multiply(matrixRotateTop);\n planeTop.applyMatrix4(matrixTotalTop);\n\n let heightRealBottom =\n UI.existingWallHeight +\n +UI.upstandBraketType +\n this.geoBeam.height -\n this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n (this.utils.tan(UI.patiosPitch) * UI.span) / 2;\n let heightPlaneBottom = heightRealBottom * this.utils.cos(UI.patiosPitch);\n let translateZBottom = this.utils.sin(UI.patiosPitch) * heightPlaneBottom;\n\n let planeBottom = new Plane(new Vector3(0, 1, 0));\n let matrixTranslateBottom = new Matrix4().makeTranslation(\n -translateZBottom / 2,\n heightPlaneBottom,\n 0\n );\n let matrixRotateBottom = new Matrix4().makeRotationZ(\n this.utils.degreesToRadians(UI.patiosPitch)\n );\n let matrixTotalBottom =\n matrixTranslateBottom.multiply(matrixRotateBottom);\n planeBottom.applyMatrix4(matrixTotalBottom);\n\n let beamOffsetX = 0;\n\n planeTop.translate(\n new Vector3(beamOffsetX + this.scene.position.x, 0, 0)\n );\n planeBottom.translate(\n new Vector3(beamOffsetX + this.scene.position.x, 0, 0)\n );\n\n matEndCap.clippingPlanes = [planeTop, planeBottom];\n\n capL = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capL.position.set(offsetXL - 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capL.scale.setY(\n (this.geo_RafterBeam.height / this.utils.sin(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length / this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capL.rotateY(Math.PI / 2);\n capL.rotateX(-Math.PI / 2 + this.utils.degreesToRadians(UI.patiosPitch));\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: lowerBraketName,\n };\n\n capR = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capR.position.set(offsetXR + 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capR.scale.setY(\n (this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length * this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capR.rotateY(-Math.PI / 2);\n capR.rotateX(-this.utils.degreesToRadians(UI.patiosPitch));\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: higherBraketName,\n };\n } else {\n let matEndCap = MaterialManager.Instance().BEAM.clone();\n\n let heightReal =\n UI.existingWallHeight +\n +UI.upstandBraketType +\n this.geoBeam.height +\n (this.utils.tan(UI.patiosPitch) * UI.span) / 2;\n let heightPlane = heightReal * this.utils.cos(UI.patiosPitch);\n let translateZ = this.utils.sin(UI.patiosPitch) * heightPlane;\n\n let planeTop = new Plane(new Vector3(0, -1, 0));\n let matrixTranslateTop = new Matrix4().makeTranslation(\n translateZ / 2,\n heightPlane,\n 0\n );\n let matrixRotateTop = new Matrix4().makeRotationZ(\n -this.utils.degreesToRadians(UI.patiosPitch)\n ); //tao voi z pitch do\n let matrixTotalTop = matrixTranslateTop.multiply(matrixRotateTop);\n planeTop.applyMatrix4(matrixTotalTop);\n\n let heightRealBottom =\n UI.existingWallHeight +\n +UI.upstandBraketType +\n this.geoBeam.height -\n this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n (this.utils.tan(UI.patiosPitch) * UI.span) / 2;\n let heightPlaneBottom = heightRealBottom * this.utils.cos(UI.patiosPitch);\n let translateZBottom = this.utils.sin(UI.patiosPitch) * heightPlaneBottom;\n\n let planeBottom = new Plane(new Vector3(0, 1, 0));\n let matrixTranslateBottom = new Matrix4().makeTranslation(\n translateZBottom / 2,\n heightPlaneBottom,\n 0\n );\n let matrixRotateBottom = new Matrix4().makeRotationZ(\n -this.utils.degreesToRadians(UI.patiosPitch)\n ); //tao voi z pitch do\n let matrixTotalBottom =\n matrixTranslateBottom.multiply(matrixRotateBottom);\n planeBottom.applyMatrix4(matrixTotalBottom);\n\n let beamOffsetX = 0;\n\n planeTop.translate(\n new Vector3(beamOffsetX + this.scene.position.x, 0, 0)\n );\n planeBottom.translate(\n new Vector3(beamOffsetX + this.scene.position.x, 0, 0)\n );\n\n matEndCap.clippingPlanes = [planeTop, planeBottom];\n\n capL = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capL.position.set(offsetXL - 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capL.scale.setY(\n (this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length * this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capL.rotateY(Math.PI / 2);\n capL.rotateX(-this.utils.degreesToRadians(UI.patiosPitch));\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: higherBraketName,\n };\n\n capR = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capR.position.set(offsetXR + 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capR.scale.setY(\n (this.geo_RafterBeam.height / this.utils.sin(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length / this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capR.rotateY(-Math.PI / 2);\n capR.rotateX(-Math.PI / 2 + this.utils.degreesToRadians(UI.patiosPitch));\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: lowerBraketName,\n };\n }\n\n let offsetX = 0;\n if (userDataPos.left) {\n offsetX = -UI.span / 2;\n offsetY =\n UI.existingWallHeight + +UI.upstandBraketType + this.geoBeam.height;\n } else if (userDataPos.right) {\n offsetX = this.geo_centerSuperiorPost.width / 2;\n offsetY =\n UI.existingWallHeight +\n +UI.upstandBraketType +\n this.geoBeam.height +\n (UI.span / 2 - this.geoBeam.width / 2) * this.utils.tan(UI.patiosPitch);\n }\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM,\n position: userDataPos,\n views: views,\n };\n beamGroup.position.set(offsetX, offsetY, offsetZ);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n\n if (userDataPos.left) {\n beamGroup.rotateZ(this.utils.degreesToRadians(UI.patiosPitch));\n } else if (userDataPos.right) {\n beamGroup.rotateZ(-this.utils.degreesToRadians(UI.patiosPitch));\n }\n\n this.scene.add(beamGroup);\n }\n public addCenterSuperiorBeam() {\n let beamLength = this.totalBaySize + UI.overhangBack + UI.overhangFront;\n\n let views: Print2DView[];\n\n let offsetY =\n UI.existingWallHeight +\n +UI.upstandBraketType +\n (UI.span / 2 - this.geoBeam.width / 2) * this.utils.tan(UI.patiosPitch);\n let offsetZ =\n this.totalBaySize +\n UI.overhangFront -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4;\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n this.cutStandardBeamByCutBeamWithinBayControl(\n this.beamInfo,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(0, offsetY + this.beamInfo.height, offsetZ),\n new Vector3(0, Math.PI / 2, 0),\n views,\n 1,\n { center: true },\n 0,\n \"x\",\n \"RB\",\n this.geoBeamJoint\n );\n }\n private getHeightByRoofPitch(isSpan: boolean): number {\n if (isSpan) {\n if (UI.isUpFasciaUpstandardBracket) {\n return (\n -this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n this.APP.sldSpan.currentValue\n );\n } else {\n return (\n this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n this.APP.sldSpan.currentValue\n );\n }\n } else {\n if (UI.isUpFasciaUpstandardBracket) {\n return (\n -this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue)\n );\n } else {\n return (\n this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue)\n );\n }\n }\n }\n}\n","import { BoxBufferGeometry, BufferGeometry, Color, Geometry, Group, LineSegments, Material, Matrix4, Mesh, MeshLambertMaterial, Object3D, Plane, Vector3 } from 'three';\nimport { GEOMETRY_CATEGORY, GEOMETRY_TYPE } from '../../app.config';\nimport { BUILDING_SIDE, CUTOUT_ENABLE, EXISTING_BUILDING_CONFIG as CONST, EXISTING_BUILDING_CONFIG, PANEL_DIRECTION, RAKECUT_TYPE } from '../../app.constants';\nimport { Util } from '../utils';\n// import { AppComponent } from '../../app.component';\nimport HighLightBox from 'src/app/models/HighlightBox';\nimport { CSG } from 'three-csg-ts';\nimport { GableFBFasciaManager } from '.';\nimport { HomeComponent as AppComponent } from '../../containers/home/home.component';\nimport { GeometryManager } from '../geometry.manager';\nimport { MaterialManager } from '../material.manager';\nimport { GeometryInfo, LineType, Print2DView, Printing2DGeometry, Printing2DLine, ViewType } from '../models';\nimport { UI } from '../ui';\n\nexport class RoofManager {\n private scene: Group;\n private APP: AppComponent;\n private MANAGER: GableFBFasciaManager;\n private material: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n public ridgeGeo: GeometryInfo;\n private roofInfo: GeometryInfo;\n private roofBaseInfo: GeometryInfo;\n private zFlashingGeo: GeometryInfo\n private zFlashingRakecutRightGeo: GeometryInfo;\n private bargeLeftInfo: GeometryInfo;\n private bargeRightInfo: GeometryInfo;\n private bargeFrontInfo: GeometryInfo;\n private bargeBackInfo: GeometryInfo;\n private geo_bargeCutoutLeftHor: GeometryInfo;\n private geo_bargeCutoutRightHor: GeometryInfo;\n private geo_bargeRakecutLeft: GeometryInfo;\n private geo_bargeRakecutRight: GeometryInfo;\n private receiverCutoutLeftHor: GeometryInfo;\n private receiverCutoutLeftVer: GeometryInfo;\n private receiverCutoutRightHor: GeometryInfo;\n private receiverCutoutRightVer: GeometryInfo;\n private gutterInfo: GeometryInfo;\n private gutterRakecutLeftInfo: GeometryInfo;\n private gutterRakecutRightInfo: GeometryInfo;\n //private flashingInfo: GeometryInfo;\n private geo_receiverChanel: GeometryInfo;\n private geo_gutterCap: GeometryInfo;\n public geoBraket_1: GeometryInfo;\n public geoBraket_2: GeometryInfo;\n private geoBeam: GeometryInfo;\n private geoBeamEndCap: GeometryInfo;\n private eventHandleId: any;\n // Var\n private roofLength: number;\n private roofLengthPlus: number;\n private roofWidth: number;\n //private existingTypeLeftX: number;\n //private existingTypeRightX: number;\n private existingType: number;\n private totalBaySize: number;\n private objectSizeChangedHandle: any;\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n\n private mesh_CutoutLeft: Mesh;\n private csg_cutoutLeft: CSG;\n private mesh_CutoutRight: Mesh;\n private csg_cutoutRight: CSG;\n private geo_cutoutLeft: BoxBufferGeometry;\n private geo_cutoutRight: BoxBufferGeometry;\n\n private geo_rakecutLeft: BoxBufferGeometry;\n private geo_rakecutRight: BoxBufferGeometry;\n private mesh_rakecutLeft: Mesh;\n private mesh_rakecutRight: Mesh;\n private csg_rakecutLeft: CSG;\n private csg_rakecutRight: CSG;\n\n private geoCutGutter: BoxBufferGeometry;\n private meshCutGutterLeft1: Mesh;\n private csgCutGutterLeft1: CSG;\n private meshCutGutterLeft2: Mesh;\n private csgCutGutterLeft2: CSG;\n\n private meshCutGutterRight1: Mesh;\n private csgCutGutterRight1: CSG;\n private meshCutGutterRight2: Mesh;\n private csgCutGutterRight2: CSG;\n\n private roofGroupRight: Group;\n private roofGroupLeft: Group;\n private cutoutExistingBothLength: number;\n\n constructor(app: AppComponent, fasciaManager: GableFBFasciaManager) {\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.APP = app;\n this.MANAGER = fasciaManager;\n this.scene = new Group();\n fasciaManager.patiosGroup.add(this.scene)\n this.material = MaterialManager.Instance().ROOF;\n this.registerEvent();\n }\n public destroy(): void {\n this.unregisterEvent();\n }\n public uiChanged(preVal: number, curVal: number): void {\n this.load();\n }\n private objectSizeChanged(preVal: number, curVal: number) {\n this.optimize().then(() => { this.load() });\n }\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldBaySize,\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldExistingWallHeight,\n this.APP.sldFrontOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldLeftOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldExistingWidth1,\n this.APP.sldNoOfBay,\n this.APP.dialogEditBay,\n this.APP.sldEaveWidth,\n this.APP.sltExistingType,\n this.APP.sltColourDownpipe,\n ];\n //this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n this.controlsToRegisterEvent2 = [\n this.APP.sltRoofSheetingType,\n this.APP.sltRoofThickness,\n this.APP.sltBargeType,\n this.APP.sltDripBarge,\n this.APP.sltGutterType,\n this.APP.sltRoofPitch\n ];\n this.controlsToRegisterEvent2.forEach(c => c.addAction(this.objectSizeChangedHandle));\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach(c => c.removeAction(this.objectSizeChangedHandle));\n this.controlsToRegisterEvent2 = undefined;\n }\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n this.roofInfo = this.geometryManager.getRoofSheetPanel();\n this.roofInfo.geometry\n .translate(-this.roofInfo.width / 2 + 10, -1, this.roofInfo.length / 2)\n .rotateY(Math.PI / 2);;\n\n this.roofBaseInfo = this.geometryManager.getRoofBase();\n this.roofBaseInfo.geometry\n .translate(-this.roofBaseInfo.width / 2, this.roofBaseInfo.height / 2, this.roofBaseInfo.length / 2)\n .rotateY(Math.PI / 2);;\n\n this.zFlashingGeo = this.geometryManager.getZFlashing();\n this.zFlashingGeo.geometry.translate(0, -3, 0).rotateY(Math.PI / 2);\n this.zFlashingRakecutRightGeo = this.geometryManager.getZFlashing();\n this.zFlashingRakecutRightGeo.geometry.translate(-this.zFlashingRakecutRightGeo.length, 0, 0);\n\n // Barge capping\n this.bargeLeftInfo = this.geometryManager.getBarge();\n this.bargeLeftInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.bargeLeftInfo.length / 2, this.bargeLeftInfo.height / 2 - (this.APP.sltDripBarge.currentValue ? 9 : 1), -this.bargeLeftInfo.width / 2 + 3);\n\n this.bargeRightInfo = this.geometryManager.getBarge();\n this.bargeRightInfo.geometry\n .rotateY(Math.PI / 2)\n .translate(this.bargeRightInfo.length / 2, this.bargeRightInfo.height / 2 - (this.APP.sltDripBarge.currentValue ? 9 : 1), this.bargeRightInfo.width / 2 - 3);\n\n //Barge cutout left\n this.receiverCutoutLeftHor = this.geometryManager.getReceiverChannel();\n this.receiverCutoutLeftHor.geometry\n .rotateY(Math.PI / 2)\n .translate(-this.receiverCutoutLeftHor.length / 2, this.receiverCutoutLeftHor.height / 2, this.receiverCutoutLeftHor.width / 2);\n\n //Barge cutout right\n this.receiverCutoutRightHor = this.geometryManager.getReceiverChannel();\n this.receiverCutoutRightHor.geometry\n .rotateY(Math.PI / 2)\n .translate(this.receiverCutoutLeftHor.length / 2, this.receiverCutoutLeftHor.height / 2, this.receiverCutoutLeftHor.width / 2);\n\n //Vertical Barge cutout left\n this.receiverCutoutLeftVer = this.geometryManager.getReceiverChannel();\n this.receiverCutoutLeftVer.geometry\n .rotateY(Math.PI)\n .translate(this.receiverCutoutLeftVer.width / 2, this.receiverCutoutLeftVer.height / 2, this.receiverCutoutLeftVer.length / 2);\n\n //Vertical cutout right\n this.receiverCutoutRightVer = this.geometryManager.getReceiverChannel();\n this.receiverCutoutRightVer.geometry\n .translate(-this.receiverCutoutRightVer.width / 2, this.receiverCutoutRightVer.height / 2, this.receiverCutoutRightVer.length / 2);\n\n //Receiver chanel - barge caping back\n this.geo_receiverChanel = this.geometryManager.getReceiverChannel();\n this.geo_receiverChanel.geometry\n .rotateY(Math.PI / 2)\n .translate(this.geo_receiverChanel.length / 2, this.geo_receiverChanel.height / 2 + 2, this.geo_receiverChanel.width / 2);\n\n // Gutter\n this.gutterInfo = this.geometryManager.getGutter();\n this.gutterInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.gutterInfo.length / 2, -20, this.gutterInfo.width / 2);\n\n this.gutterRakecutLeftInfo = this.geometryManager.getGutter();\n this.gutterRakecutLeftInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.gutterRakecutLeftInfo.length / 2, -20, this.gutterRakecutLeftInfo.width / 2);\n\n this.gutterRakecutRightInfo = this.geometryManager.getGutter();\n this.gutterRakecutRightInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(-this.gutterRakecutRightInfo.length / 2, -20, this.gutterRakecutRightInfo.width / 2);\n\n //Gutter cap\n this.geo_gutterCap = this.geometryManager.getGuterEndCap();\n this.geo_gutterCap.geometry\n .rotateY(-Math.PI / 2)\n .translate(0, -20, this.geo_gutterCap.length / 2);\n\n\n this.geo_cutoutLeft = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_cutoutLeft.translate(-500, 0, -500);\n\n this.geo_cutoutRight = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_cutoutRight.translate(500, 0, -500);\n\n this.geo_rakecutLeft = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_rakecutLeft.translate(-500, 500, 500);\n this.geo_rakecutRight = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_rakecutRight.translate(500, 500, 500);\n\n this.geoCutGutter = new BoxBufferGeometry(800, 10000, 500);\n this.geoCutGutter.translate(0, 0, -250);\n\n this.geoBraket_1 = this.geometryManager.getUpstandBraket(1);\n this.geoBraket_1.geometry.rotateX(Math.PI / 2);\n this.geoBraket_1.geometry.translate(0, this.geoBraket_1.length / 2, 0);\n\n this.geoBraket_2 = this.geometryManager.getUpstandBraket(2);\n this.geoBraket_2.geometry.rotateY(Math.PI);\n this.geoBraket_2.geometry.rotateX(Math.PI / 2);\n this.geoBraket_2.geometry.translate(0, this.geoBraket_2.length / 2, - this.geoBraket_2.height / 4);\n\n this.geoBeam = this.geometryManager.getBeam();\n this.geoBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(0, this.geoBeam.height / 2, 0);\n\n this.geoBeamEndCap = this.geometryManager.getBeamEndCap();\n this.geoBeamEndCap.geometry\n .translate(0, this.geoBeamEndCap.height / 2, this.geoBeamEndCap.length / 2)\n .rotateY(Math.PI / 2);\n\n this.bargeFrontInfo = this.geometryManager.getBarge();\n this.bargeFrontInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.bargeFrontInfo.length / 2, this.bargeFrontInfo.height / 2 - (this.APP.sltDripBarge.currentValue ? 9 : 1), -this.bargeFrontInfo.width / 2);\n\n this.bargeBackInfo = this.geometryManager.getBarge();\n this.bargeBackInfo.geometry\n .rotateY(Math.PI / 2)\n .translate(this.bargeBackInfo.length / 2, this.bargeBackInfo.height / 2 - (this.APP.sltDripBarge.currentValue ? 9 : 1), this.bargeBackInfo.width / 2 - 3);\n\n this.geo_bargeRakecutLeft = this.geometryManager.getBarge();\n this.geo_bargeRakecutLeft.geometry\n .rotateY(Math.PI)\n .translate(this.geo_bargeRakecutLeft.width / 2, this.geo_bargeRakecutLeft.height / 2 - (this.APP.sltDripBarge.currentValue ? 9 : 1), -this.geo_bargeRakecutLeft.length / 2);\n\n this.geo_bargeRakecutRight = this.geometryManager.getBarge();\n this.geo_bargeRakecutRight.geometry\n .translate(-this.geo_bargeRakecutRight.width / 2, this.geo_bargeRakecutRight.height / 2 - (this.APP.sltDripBarge.currentValue ? 9 : 1), -this.geo_bargeRakecutRight.length / 2);\n\n this.geo_bargeRakecutLeft = this.geometryManager.getBarge();\n this.geo_bargeRakecutLeft.geometry\n .rotateY(Math.PI)\n .translate(this.geo_bargeRakecutLeft.width / 2, this.geo_bargeRakecutLeft.height / 2 - (this.APP.sltDripBarge.currentValue ? 9 : 1), -this.geo_bargeRakecutLeft.length / 2);\n\n this.geo_bargeRakecutRight = this.geometryManager.getBarge();\n this.geo_bargeRakecutRight.geometry\n .translate(-this.geo_bargeRakecutRight.width / 2, this.geo_bargeRakecutRight.height / 2 - (this.APP.sltDripBarge.currentValue ? 9 : 1), -this.geo_bargeRakecutRight.length / 2);\n\n //Barge cutout left\n this.geo_bargeCutoutLeftHor = this.geometryManager.getBarge();\n this.geo_bargeCutoutLeftHor.geometry\n .rotateY(Math.PI / 2)\n .translate(-this.geo_bargeCutoutLeftHor.length / 2, this.geo_bargeCutoutLeftHor.height / 2 - (this.APP.sltDripBarge.currentValue ? 9 : 1), this.geo_bargeCutoutLeftHor.width / 2);\n\n //Barge cutout right\n this.geo_bargeCutoutRightHor = this.geometryManager.getBarge();\n this.geo_bargeCutoutRightHor.geometry\n .rotateY(Math.PI / 2)\n .translate(this.geo_bargeCutoutRightHor.length / 2, this.geo_bargeCutoutRightHor.height / 2 - (this.APP.sltDripBarge.currentValue ? 9 : 1), this.geo_bargeCutoutRightHor.width / 2);\n\n this.ridgeGeo = this.geometryManager.getRidge();\n this.ridgeGeo.geometry.translate(- this.ridgeGeo.width / 2, -this.ridgeGeo.height / 2, 0);\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(...this.scene.children.filter(x => x.userData.type === GEOMETRY_TYPE.ROOF_PANEL));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type === GEOMETRY_TYPE.ROOF_PANEL_BASE));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type === GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type === GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type === GEOMETRY_TYPE.GUTTER_PATIOS));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PATIOS));\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.SHEET_OUTLINE));\n //test\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == 'RAKECUT'));\n\n this.totalBaySize = this.APP.dialogEditBay.listBay.reduce((total, val) => total + val.value, 0);\n this.roofLength = UI.span / 2 + UI.overhangRight;\n this.roofLengthPlus = (UI.span / 2 + UI.overhangRight) / this.utils.cos(UI.patiosPitch);\n\n this.roofWidth = this.totalBaySize + UI.overhangBack + UI.overhangFront;\n this.cutoutExistingBothLength = (this.totalBaySize - (this.APP.sldExistingLength.currentValue + this.APP.existingWallManager.geo_existingWallW1.width * 2)) / 2;\n\n this.addRoofGroupRight();\n this.addRoofGroupLeft();\n this.addCutout();\n\n this.existingType = +this.APP.sltExistingType.currentValue;\n\n let offsetFront = this.totalBaySize + UI.overhangFront - UI.existingWidth1 / 2 + UI.eaveWidth + this.geoBraket_2.height / 4;\n let offsetBack = - UI.overhangBack - UI.existingWidth1 / 2 + UI.eaveWidth + this.geoBraket_2.height / 4;\n\n let clipingPlaneFront = new Plane(new Vector3(0, 0, -1), offsetFront);\n let clipingPlaneBack = new Plane(new Vector3(0, 0, 1), -offsetBack);\n \n this.material.clippingPlanes = [clipingPlaneFront, clipingPlaneBack];\n MaterialManager.Instance().ROOF_BASE.clippingPlanes = [clipingPlaneFront, clipingPlaneBack];\n\n const roofPanelCount = Math.ceil(this.roofWidth / this.roofInfo.width);\n let offsetZ = - UI.overhangBack;\n\n //panel direction\n let panelDirectionOfset = 1;\n if (this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT) {\n offsetZ = this.totalBaySize + UI.overhangFront - this.roofInfo.width;\n panelDirectionOfset = -1;\n }\n else if (this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.LEFT_TO_RIGHT) {\n offsetZ = - UI.overhangBack;\n }\n\n if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT && this.MANAGER.cutoutCondition) {\n let totalPanelLength = 0;\n let cuted = true;\n\n for (let index = 0; index < roofPanelCount; index++) {\n totalPanelLength += this.roofInfo.width;\n let isOver = totalPanelLength < this.APP.sldExistingLength2.currentValue;\n\n this.addRoofBaseRight(offsetZ, [this.csg_cutoutLeft]);\n this.addRoofRight(offsetZ, [this.csg_cutoutLeft]);\n\n this.addRoofBaseLeft(offsetZ, [this.csg_cutoutLeft]);\n this.addRoofLeft(offsetZ, [this.csg_cutoutLeft]);\n cuted = isOver;\n\n offsetZ += this.roofInfo.width * panelDirectionOfset;\n }\n }\n else if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT && this.MANAGER.cutoutCondition) {\n let totalPanelLength = 0;\n let cuted = false;\n for (let index = 0; index < roofPanelCount; index++) {\n totalPanelLength += this.roofInfo.width;\n let isOver = totalPanelLength >= this.roofWidth - this.APP.sldExistingLength2.currentValue + this.roofInfo.width;\n cuted = totalPanelLength >= this.roofWidth - this.APP.sldExistingLength2.currentValue && !isOver;\n\n this.addRoofBaseRight(offsetZ, [this.csg_cutoutRight]);\n this.addRoofRight(offsetZ, [this.csg_cutoutRight]);\n\n this.addRoofBaseLeft(offsetZ, [this.csg_cutoutRight]);\n this.addRoofLeft(offsetZ, [this.csg_cutoutRight]);\n offsetZ += this.roofInfo.width * panelDirectionOfset;\n }\n }\n else if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH && this.MANAGER.cutoutCondition) {\n let totalPanelLength = 0;\n let cuted = false;\n let cuted2 = false;\n for (let index = 0; index < roofPanelCount; index++) {\n totalPanelLength += this.roofInfo.width;\n let isOver = totalPanelLength < this.APP.sldExistingLength2.currentValue;\n let isOver2 = totalPanelLength >= this.roofWidth - this.APP.sldExistingLength2.currentValue + this.roofInfo.width;\n let flag = totalPanelLength >= this.roofWidth - this.APP.sldExistingLength2.currentValue;\n\n this.addRoofBaseRight(offsetZ, [this.csg_cutoutLeft, this.csg_cutoutRight]);\n this.addRoofRight(offsetZ, [this.csg_cutoutLeft, this.csg_cutoutRight]);\n\n this.addRoofBaseLeft(offsetZ, [this.csg_cutoutLeft, this.csg_cutoutRight]);\n this.addRoofLeft(offsetZ, [this.csg_cutoutLeft, this.csg_cutoutRight]);\n\n offsetZ += this.roofInfo.width * panelDirectionOfset;\n }\n }\n else {\n for (let index = 0; index < roofPanelCount; index++) {\n this.addRoofBaseRight(offsetZ, []);\n this.addRoofRight(offsetZ, []);\n\n this.addRoofBaseLeft(offsetZ, []);\n this.addRoofLeft(offsetZ, []);\n offsetZ += this.roofInfo.width * panelDirectionOfset;\n }\n }\n\n this.addZFlashingRight();\n this.addZFlashingLeft();\n\n this.addBargeCappingRight();\n this.addBargeCappingLeft();\n\n this.addGutterRight();\n this.addGutterLeft();\n\n this.addRidgeCapping();\n\n this.showPanelOutline();\n\n this.scene.visible = UI.showRoof\n\n resolve();\n });\n }\n\n private addCutout() {\n if (this.APP.sltCutOut.currentValue == 1) {\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == 'CUTOUT'));\n\n let offsetX = this.APP.sldExistingLength.currentValue / 2 - this.APP.sldEaveWidth.currentValue;\n let offsetY = 0;\n const eaveThickness = 50;\n let offsetZ = this.APP.sldExistingWidth1.currentValue / 2 + UI.eaveWidth + eaveThickness - UI.overhangBack;\n\n //extra length to prevent lack when cut\n let extra = 5000;\n\n let scaleX = (this.APP.sldExistingLength2.currentValue + extra) / 1000;\n if (scaleX == 0) scaleX = 1;\n let scaleY = (this.APP.sldExistingWallHeight.currentValue + extra) / 1000;\n let scaleZ = (this.APP.sldExistingWidth1.currentValue + UI.overhangBack + extra) / 1000;\n if (scaleZ == 0) scaleZ = 1;\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT || this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n this.mesh_CutoutLeft = new Mesh(this.geo_cutoutLeft, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.mesh_CutoutLeft.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: 'CUTOUT' };\n\n this.mesh_CutoutLeft.position.set(-offsetX - this.APP.sldLeftOverhang.currentValue, offsetY, offsetZ);\n this.mesh_CutoutLeft.scale.set(scaleX, scaleY, scaleZ);\n\n //this.APP.scene.add(this.mesh_CutoutLeft);\n\n this.mesh_CutoutLeft.updateMatrix();\n this.csg_cutoutLeft = CSG.fromMesh(this.mesh_CutoutLeft);\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT || this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n this.mesh_CutoutRight = new Mesh(this.geo_cutoutRight, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.mesh_CutoutRight.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: 'CUTOUT' };\n\n this.mesh_CutoutRight.position.set(offsetX + this.APP.sldRightOverhang.currentValue, offsetY, offsetZ);\n this.mesh_CutoutRight.scale.set(scaleX, scaleY, scaleZ);\n\n //this.APP.scene.add(this.mesh_CutoutRight);\n\n this.mesh_CutoutRight.updateMatrix();\n this.csg_cutoutRight = CSG.fromMesh(this.mesh_CutoutRight);\n }\n }\n }\n public addZFlashingRight() {\n let offsetX = (UI.span / 2 + UI.overhangRight) / this.utils.cos(UI.patiosPitch);\n let offsetY = this.roofBaseInfo.height - 25;\n const offsetZ = this.totalBaySize + UI.overhangFront;\n let zFlashingLength = this.roofWidth;\n\n let scaleX = zFlashingLength / this.zFlashingGeo.length;\n \n let mesh = new Mesh(this.zFlashingGeo.geometry, MaterialManager.Instance().ZFLASHING);\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.set(1, 1, scaleX);\n\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ZFLASHING, scale: mesh.scale };\n this.roofGroupRight.add(mesh);\n }\n public addZFlashingLeft() {\n let offsetX = (UI.span / 2 + UI.overhangLeft) / this.utils.cos(UI.patiosPitch);\n let offsetY = this.roofBaseInfo.height - 25;\n const offsetZ = - UI.overhangBack;\n let zFlashingLength = this.roofWidth;\n\n let scaleX = zFlashingLength / this.zFlashingGeo.length;\n \n let mesh = new Mesh(this.zFlashingGeo.geometry, MaterialManager.Instance().ZFLASHING);\n mesh.position.set(-offsetX, offsetY, offsetZ);\n mesh.scale.set(1, 1, scaleX);\n mesh.rotateY(Math.PI)\n\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ZFLASHING, scale: mesh.scale };\n this.roofGroupLeft.add(mesh);\n }\n public addRoofGroupRight() {\n this.roofGroupRight = null;\n this.roofGroupRight = new Group();\n this.roofGroupRight.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PATIOS };\n\n let offsetY = this.getRoofOffsetY();\n let offsetZ = - UI.existingWidth1 / 2 + UI.eaveWidth + this.geoBraket_2.height / 4;\n\n this.roofGroupRight.position.setY(offsetY);\n this.roofGroupRight.position.setZ(offsetZ);\n this.roofGroupRight.rotateZ(-this.utils.degreesToRadians(UI.patiosPitch));\n\n this.scene.add(this.roofGroupRight);\n }\n public addRoofGroupLeft() {\n this.roofGroupLeft = null;\n this.roofGroupLeft = new Group();\n this.roofGroupLeft.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PATIOS };\n\n let offsetY = this.getRoofOffsetY();\n let offsetZ = - UI.existingWidth1 / 2 + UI.eaveWidth + this.geoBraket_2.height / 4;\n\n this.roofGroupLeft.position.setY(offsetY);\n this.roofGroupLeft.position.setZ(offsetZ);\n this.roofGroupLeft.rotateZ(this.utils.degreesToRadians(UI.patiosPitch));\n\n this.scene.add(this.roofGroupLeft);\n }\n public getOutLines(): Printing2DGeometry {\n\n let objs = this.roofGroupRight.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL\n || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ).concat(\n ...this.roofGroupLeft.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n )\n );;\n\n let gutterGroupObjs = this.roofGroupRight.children.filter(o => o.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS)\n .concat(\n ...this.roofGroupLeft.children.filter(o => o.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS)\n );;\n let gutterObjs: Object3D[] = [];\n for (let group of gutterGroupObjs) {\n gutterObjs.push(...group.children);\n }\n\n objs = [...objs, ...gutterObjs];\n\n\n let lsGeometries: Printing2DLine[] = [];\n\n let offsetFront = this.totalBaySize + UI.overhangFront - UI.existingWidth1 / 2 + UI.eaveWidth + this.geoBraket_2.height / 4;\n let offsetBack = - UI.overhangBack - UI.existingWidth1 / 2 + UI.eaveWidth + this.geoBraket_2.height / 4;\n\n let clipingPlaneFront = new Plane(new Vector3(0, 0, -1), offsetFront);\n let clipingPlaneBack = new Plane(new Vector3(0, 0, 1), -offsetBack);\n\n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale((o as Mesh), 60);\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n outlineGeo.translate(0, 5000, 0);\n\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL) {\n outlineGeo = this.utils.clipOutline(outlineGeo, clipingPlaneFront);\n outlineGeo = this.utils.clipOutline(outlineGeo, clipingPlaneBack);\n }\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE) {\n outlineGeo = this.utils.clipOutlineBasePanel(outlineGeo, clipingPlaneFront);\n outlineGeo = this.utils.clipOutlineBasePanel(outlineGeo, clipingPlaneBack);\n }\n\n\n // var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"ROOF_OUTLINE\"};\n // this.APP.scene.add( line );\n\n let simplifiedGeo = this.simplifyGeo(outlineGeo);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: simplifiedGeo.vertices,\n views: o.userData.views\n });\n\n let ridgeCapping = this.scene.children.find(el => el.userData.type === GEOMETRY_TYPE.RIDGE_CAPPING)\n if(ridgeCapping){\n ridgeCapping.children.forEach(el => {\n this.utils.createOutline(el as Mesh, lsGeometries);\n })\n }\n }\n\n lsGeometries.push({\n objectType: GEOMETRY_TYPE.ROOF_COVER,\n vertices: this.makeRoofPolygon(),\n color: this.utils.convertHexColorToRgb(`#${new Color(UI.panelColor).getHexString()}`),\n views: [\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ]\n });\n\n return { lines: lsGeometries, texts: [] };\n }\n makeRoofPolygon() {\n const polygon = this.utils.getRoofCoverPolygonForFBRoof()\n this.MANAGER.patiosGroup.updateWorldMatrix(true, true)\n return polygon.map(el => (el as Vector3).applyMatrix4(this.MANAGER.patiosGroup.matrixWorld).add(new Vector3(0, 0, - UI.existingWidth1 / 2 + UI.eaveWidth + this.geoBraket_2.height / 4 - UI.overhangBack)))\n }\n public showPanelOutline() {\n if (this.APP.sltPanelDirectionShow.currentValue == false)\n return;\n\n let objs = this.roofGroupRight.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ).concat(\n ...this.roofGroupLeft.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n )\n );\n\n let offsetFront = this.totalBaySize + UI.overhangFront - UI.existingWidth1 / 2 + UI.eaveWidth + this.geoBraket_2.height / 4;\n let offsetBack = - UI.overhangBack - UI.existingWidth1 / 2 + UI.eaveWidth + this.geoBraket_2.height / 4;\n\n let clipingPlaneFront = new Plane(new Vector3(0, 0, -1), offsetFront);\n let clipingPlaneBack = new Plane(new Vector3(0, 0, 1), -offsetBack);\n\n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale((o as Mesh), 60);\n\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n //outlineGeo.translate(0, 5000, 0);\n\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE) {\n outlineGeo = this.utils.clipOutline(outlineGeo, clipingPlaneFront);\n outlineGeo = this.utils.clipOutline(outlineGeo, clipingPlaneBack);\n }\n\n var line = new LineSegments(outlineGeo, MaterialManager.Instance().MESH_OUTLINE);\n line.userData = { type: GEOMETRY_TYPE.SHEET_OUTLINE };\n this.APP.scene.add(line);\n }\n }\n public simplifyGeo(geo: BufferGeometry): Geometry {\n let simplifiedGeo = new Geometry();\n let vertices = geo.getAttribute('position').array;\n for (let i = 0; i < vertices.length; i += 3) {\n simplifiedGeo.vertices.push(new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2]));\n }\n return simplifiedGeo;\n }\n public addRoofRight(offsetZ: number, csgObjs: CSG[]) {\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n // { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n const mesh: Mesh = new Mesh(this.roofInfo.geometry, MaterialManager.Instance().ROOF);\n\n let offsetSheet = 0;\n if (this.APP.sltRoofSheetingType.currentValue == 0 || this.APP.sltRoofSheetingType.currentValue == 1) {\n offsetSheet = 13;\n }\n else {\n offsetSheet = 5;\n }\n\n const offsetPitch = this.roofBaseInfo.height * this.utils.tan(UI.patiosPitch)\n\n let scaleZ = (this.roofLengthPlus - offsetPitch) / this.roofInfo.length;\n const offsetY = this.roofBaseInfo.height - offsetSheet;\n let offsetX = 0;\n\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setX(scaleZ);\n mesh.userData = { \n category: GEOMETRY_CATEGORY.PATIOS, \n type: GEOMETRY_TYPE.ROOF_PANEL, \n views: views, length: scaleZ,\n dir: UI.panelDirection === PANEL_DIRECTION.RIGHT_TO_LEFT ? \"L-R\" : \"R-L\"\n };\n\n let cutoutCondition = this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue != BUILDING_SIDE.NONE && this.APP.sldExistingLength2.currentValue > 0;\n\n if (cutoutCondition) {\n\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n //cho no cung he toa do\n mesh.position.set(offsetX + this.MANAGER.patiosGroup.position.x, offsetY, offsetZ + this.roofGroupRight.position.z);\n mesh.updateMatrix();\n\n let meshResult = mesh.clone();\n\n if (cutoutCondition) {\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n }\n }\n \n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix)); //=> tra ve goc toa do\n meshResult.applyMatrix4(matrixBefore);\n this.roofGroupRight.add(meshResult);\n }\n else {\n this.roofGroupRight.add(mesh);\n }\n }\n public addRoofLeft(offsetZ: number, csgObjs: CSG[]) {\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n // { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n const mesh: Mesh = new Mesh(this.roofInfo.geometry, MaterialManager.Instance().ROOF);\n\n let offsetSheet = 0;\n if (this.APP.sltRoofSheetingType.currentValue == 0 || this.APP.sltRoofSheetingType.currentValue == 1) {\n offsetSheet = 13;\n }\n else {\n offsetSheet = 5;\n }\n\n const offsetPitch = this.roofBaseInfo.height * this.utils.tan(UI.patiosPitch)\n\n let scaleZ = ((UI.span / 2 + UI.overhangLeft) / this.utils.cos(UI.patiosPitch) - offsetPitch) / this.roofInfo.length;\n const offsetY = this.roofBaseInfo.height - offsetSheet;\n let offsetX = - scaleZ * this.roofInfo.length;\n\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setX(scaleZ);\n mesh.userData = { \n category: GEOMETRY_CATEGORY.PATIOS, \n type: GEOMETRY_TYPE.ROOF_PANEL, \n views: views, \n length: scaleZ,\n dir: UI.panelDirection === PANEL_DIRECTION.LEFT_TO_RIGHT ? \"L-R\" : \"R-L\"\n };\n\n let cutoutCondition = this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue != BUILDING_SIDE.NONE && this.APP.sldExistingLength2.currentValue > 0;\n\n if (cutoutCondition) {\n\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n //cho no cung he toa do\n mesh.position.set(offsetX + this.MANAGER.patiosGroup.position.x, offsetY, offsetZ + this.roofGroupRight.position.z);\n mesh.updateMatrix();\n\n let meshResult = mesh.clone();\n\n if (cutoutCondition) {\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n }\n }\n \n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix)); //=> tra ve goc toa do\n meshResult.applyMatrix4(matrixBefore);\n this.roofGroupLeft.add(meshResult);\n }\n else {\n this.roofGroupLeft.add(mesh);\n }\n }\n public addRoofBaseRight(offsetZ: number, csgObjs: CSG[]) {\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n const offsetPitch = this.roofBaseInfo.height * this.utils.tan(UI.patiosPitch)\n\n const mesh: Mesh = new Mesh(this.roofBaseInfo.geometry, MaterialManager.Instance().ROOF_BASE);\n let scaleZ = ((UI.span / 2 + UI.overhangRight) / this.utils.cos(UI.patiosPitch) - offsetPitch - 60) / this.roofBaseInfo.length;\n let offsetY = 0;\n let offsetX = 0;\n\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setX(scaleZ);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PANEL_BASE, views: views };\n\n let cutoutCondition = this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue != BUILDING_SIDE.NONE && this.APP.sldExistingLength2.currentValue > 0;\n\n if (cutoutCondition) {\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n mesh.position.set(offsetX + this.MANAGER.patiosGroup.position.x, offsetY, offsetZ + this.roofGroupRight.position.z);\n mesh.updateMatrix();\n\n let meshResult = mesh.clone();\n\n if (cutoutCondition) {\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n }\n }\n\n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix));\n meshResult.applyMatrix4(matrixBefore);\n\n this.roofGroupRight.add(meshResult);\n }\n else {\n this.roofGroupRight.add(mesh);\n }\n }\n private addRoofBaseLeft(offsetZ: number, csgObjs: CSG[]) {\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n // { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n const offsetPitch = this.roofBaseInfo.height * this.utils.tan(UI.patiosPitch)\n\n const mesh: Mesh = new Mesh(this.roofBaseInfo.geometry, MaterialManager.Instance().ROOF_BASE);\n let scaleZ = ((UI.span / 2 + UI.overhangLeft) / this.utils.cos(UI.patiosPitch) - offsetPitch - 60) / this.roofBaseInfo.length;\n let offsetY = 0;\n let offsetX = - scaleZ * this.roofBaseInfo.length ;\n\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setX(scaleZ);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PANEL_BASE, views: views };\n\n let cutoutCondition = this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue != BUILDING_SIDE.NONE && this.APP.sldExistingLength2.currentValue > 0;\n\n if (cutoutCondition) {\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n mesh.position.set(offsetX + this.MANAGER.patiosGroup.position.x, offsetY, offsetZ + this.roofGroupLeft.position.z);\n mesh.updateMatrix();\n\n let meshResult = mesh.clone();\n\n if (cutoutCondition) {\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n }\n }\n\n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix));\n meshResult.applyMatrix4(matrixBefore);\n\n this.roofGroupLeft.add(meshResult);\n }\n else {\n this.roofGroupLeft.add(mesh);\n }\n }\n private addBargeCappingRight() {\n let mesh: Mesh;\n let extraWallWidth = this.APP.existingWallManager.geo_existingWallW1.width + EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n let offsetXL2 = 0;\n\n let offsetXR2 = 0;\n\n let offsetZL = this.totalBaySize + UI.overhangFront;\n let offsetZR = - UI.overhangBack;\n\n let offsetY = 0;\n let bargeLeftLength = this.roofLength;\n let bargeRightLength = this.roofLength;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n const offsetPitch = this.roofBaseInfo.height * this.utils.tan(UI.patiosPitch)\n\n let scaleZLeft = (this.utils.getHypotenuseByCos(bargeLeftLength, this.APP.sltRoofPitch.currentValue) - offsetPitch) / this.bargeLeftInfo.length;\n let scaleZRight = (this.utils.getHypotenuseByCos(bargeRightLength, this.APP.sltRoofPitch.currentValue) - offsetPitch) / this.bargeLeftInfo.length;\n\n let fitScale = this.bargeLeftInfo.height * this.utils.tan(UI.patiosPitch) / this.bargeLeftInfo.length;\n\n //left\n mesh = new Mesh(this.bargeLeftInfo.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXL2 - fitScale * this.bargeLeftInfo.length, offsetY, offsetZL);\n mesh.scale.setX(scaleZLeft + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupRight.add(mesh);\n\n //right\n mesh = new Mesh(this.bargeRightInfo.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXR2 - fitScale * this.bargeRightInfo.length, offsetY, offsetZR);\n mesh.scale.setX(scaleZRight + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupRight.add(mesh);\n }\n private addBargeCappingLeft() {\n let mesh: Mesh;\n\n let extraWallWidth = this.APP.existingWallManager.geo_existingWallW1.width + EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n\n let offsetXB = -this.totalBaySize / 2 - this.APP.sldLeftOverhang.currentValue;\n let offsetXL1 = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue) + this.APP.sldExistingLength2.currentValue - extraWallWidth;\n let offsetXL2 = 0;\n\n let offsetXR1 = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue - this.APP.sldExistingLength2.currentValue + extraWallWidth;\n let offsetXR2 = 0;\n\n let offsetZL = this.totalBaySize + UI.overhangFront;\n let offsetZR = - UI.overhangBack;\n\n let bargeBackLength = this.roofWidth;\n let scaleCutoutVer = this.utils.getHypotenuseByCos(this.APP.sldExistingWidth1.currentValue + this.bargeLeftInfo.width, this.APP.sltRoofPitch.currentValue) / this.bargeLeftInfo.length;\n\n let offsetY = 0;\n let bargeLeftLength = UI.span / 2 + UI.overhangLeft;\n let bargeRightLength = UI.span / 2 + UI.overhangLeft;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n const offsetPitch = this.roofBaseInfo.height * this.utils.tan(UI.patiosPitch)\n\n let scaleZLeft = (this.utils.getHypotenuseByCos(bargeLeftLength, this.APP.sltRoofPitch.currentValue) - offsetPitch) / this.bargeLeftInfo.length;\n let scaleZRight = (this.utils.getHypotenuseByCos(bargeRightLength, this.APP.sltRoofPitch.currentValue) - offsetPitch) / this.bargeLeftInfo.length;\n\n let fitScale = this.bargeLeftInfo.height * this.utils.tan(UI.patiosPitch) / this.bargeLeftInfo.length;\n\n //left\n mesh = new Mesh(this.bargeLeftInfo.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXL2 - scaleZLeft * this.bargeLeftInfo.length, offsetY, offsetZL);\n mesh.scale.setX(scaleZLeft + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupLeft.add(mesh);\n\n //right\n mesh = new Mesh(this.bargeRightInfo.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXR2 - scaleZRight * this.bargeRightInfo.length, offsetY, offsetZR);\n mesh.scale.setX(scaleZRight + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupLeft.add(mesh);\n }\n public addGutterRight() {\n let offsetXL = (UI.span / 2 + UI.overhangRight - CONST.GUTTER_ROOF_OFFSET_Z) / this.utils.cos(UI.patiosPitch);\n let offsetY = this.roofBaseInfo.height - 25;\n let offsetZ = this.totalBaySize + UI.overhangFront;\n\n let gutterLength = this.roofWidth;\n let exLength = 300\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n let gutterGroup = this.utils.createGutterGroup(this.gutterInfo, this.geo_gutterCap,\n gutterLength, new Vector3(offsetXL, offsetY, offsetZ), new Vector3(0, Math.PI / 2, 0),\n views, 1, true, true);\n gutterGroup.rotateX(-this.utils.degreesToRadians(UI.patiosPitch))\n this.roofGroupRight.add(gutterGroup); \n }\n public addGutterLeft() {\n let offsetXL = (UI.span / 2 + UI.overhangLeft - CONST.GUTTER_ROOF_OFFSET_Z) / this.utils.cos(UI.patiosPitch);\n let offsetY = this.roofBaseInfo.height - 25;\n let offsetZ = - UI.overhangBack;\n\n let gutterLength = this.roofWidth;\n let exLength = 300\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n let gutterGroup = this.utils.createGutterGroup(this.gutterInfo, this.geo_gutterCap,\n gutterLength, new Vector3(-offsetXL, offsetY, offsetZ), new Vector3(0, -Math.PI / 2, 0),\n views, 1, true, true);\n gutterGroup.rotateX(-this.utils.degreesToRadians(UI.patiosPitch))\n this.roofGroupLeft.add(gutterGroup); \n }\n public addRidgeCapping(){\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.RIDGE_CAPPING));\n\n let ridgeFront = this.createRidgeCapping();\n\n const height = this.getRoofOffsetY() + \n this.roofBaseInfo.height / this.utils.cos(this.APP.sltRoofPitch.currentValue) + \n this.roofInfo.height / this.utils.cos(this.APP.sltRoofPitch.currentValue) - \n (this.APP.sltRoofSheetingType.currentValue == 0 || this.APP.sltRoofSheetingType.currentValue == 1 ? 20 : 10);\n \n let offsetX = 0\n \n const ridgeLength = this.totalBaySize + UI.overhangBack + UI.overhangFront;\n ridgeFront.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.RIDGE_CAPPING, length: ridgeLength, views: [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }]};\n ridgeFront.scale.setZ(ridgeLength / this.ridgeGeo.length);\n ridgeFront.position.set( offsetX, height, this.totalBaySize / 2 + (UI.overhangFront - UI.overhangBack) / 2 + this.geoBraket_2.height / 4 - UI.existingWidth1 / 2 + UI.eaveWidth);\n this.scene.add(ridgeFront)\n }\n public createRidgeCapping(){\n let leftCap = new Mesh(this.ridgeGeo.geometry, MaterialManager.Instance().RIDGE_CAPPING);\n let rightCap = new Mesh(this.ridgeGeo.geometry, MaterialManager.Instance().RIDGE_CAPPING);\n\n rightCap.rotateY(Math.PI)\n\n leftCap.rotateZ(this.utils.degreesToRadians(UI.patiosPitch))\n rightCap.rotateZ(this.utils.degreesToRadians(UI.patiosPitch))\n\n leftCap.userData = {views: [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }]}\n rightCap.userData = {views: [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }]}\n\n return new Group().add(leftCap, rightCap)\n }\n\n public getRoofOffsetY() {\n return UI.existingWallHeight\n + +UI.upstandBraketType\n + this.geometryManager.getBeam().height\n + this.utils.tan(UI.patiosPitch) * (UI.span / 2);\n }\n}\n\n","import {\n BUILDING_SIDE,\n EXISTING_BUILDING_CONFIG as CONST,\n CUTOUT_ENABLE,\n EXISTING_BUILDING_CONFIG,\n FIT_FLYOVER_BRAKET_ON_ROOF,\n} from \"src/app/app.constants\";\nimport {\n Box3,\n BoxBufferGeometry,\n BoxHelper,\n BufferGeometry,\n Geometry,\n Group,\n LineSegments,\n Material,\n Matrix4,\n Mesh,\n Plane,\n Vector3,\n} from \"three\";\nimport { PatiosGableFBFlyOverManager } from \".\";\nimport { GEOMETRY_CATEGORY, GEOMETRY_TYPE, INIT } from \"../../app.config\";\nimport { HomeComponent as AppComponent } from \"../../containers/home/home.component\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport {\n GeometryInfo,\n LineType,\n Print2DView,\n Printing2DGeometry,\n Printing2DLine,\n ViewType,\n} from \"../models\";\nimport { UI } from \"../ui\";\nimport { Util, getRafterBeamEndCapCode } from \"../utils\";\nimport _ from \"lodash\";\n\nexport class ColumnAndBeamManager {\n private scene: Group;\n private APP: AppComponent;\n private MANAGER: PatiosGableFBFlyOverManager;\n private material: Material;\n //private beamMaterial: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private geo_RafterBeam: GeometryInfo;\n private geo_rafterBeamEndCap: GeometryInfo;\n\n private geo_superiorPost: GeometryInfo;\n private geo_centerSuperiorPost: GeometryInfo;\n public geo_superiorBeam: GeometryInfo;\n private geo_beamRakecutLeft: GeometryInfo;\n private geo_beamRakecutRight: GeometryInfo;\n private geo_beamStepRakecutLeft: GeometryInfo;\n private geo_beamStepRakecutRight: GeometryInfo;\n private geo_beamEndCap: GeometryInfo;\n public geo_bracket: GeometryInfo;\n private geo_groundBase: GeometryInfo;\n private geo_downPipe: GeometryInfo;\n private geo_downPipeL: GeometryInfo;\n private geo_roofBase: GeometryInfo;\n private downpipeGroupRight: Group;\n private downpipeGroupLeft: Group;\n private downpipeStepRakeCutGroupLeft: Group;\n private downpipeStepRakeCutGroupRight: Group;\n private eventHandleId: any;\n private objectSizeChangedHandle: any;\n private totalBaySize: number;\n private extraOffsetZ: number;\n private geoBeamJoint: GeometryInfo;\n\n private frontPostHeight: number;\n //private extraBracketHeight = 250;\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n\n private deferHandle;\n private deferTimeout = CONST.CUTOUT_DEFFER_TIME_OUT;\n\n public numberOfBracketsBack = INIT.DEFAULT_BRACKET_NUMBER;\n public numberOfBracketCutout = INIT.DEFAULT_BRACKET_CUTOUT_NUMBER;\n public numberOfBracketsSide = INIT.DEFAULT_BRACKET_NUMBER;\n private cutoutExistingBothLength: number;\n private beamLeftCutSizeInfo: any;\n private beamRightCutSizeInfo: any;\n\n constructor(app: AppComponent, flyOverManager: PatiosGableFBFlyOverManager) {\n this.APP = app;\n this.MANAGER = flyOverManager;\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n\n this.scene = flyOverManager.patiosGroup;\n this.material = MaterialManager.Instance().DEFAULT.clone();\n //this.beamMaterial = MaterialManager.Instance().DEFAULT.clone();\n\n this.registerEvent();\n }\n\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n let bracketHeight =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height / 2;\n let bracketWidth = this.geometryManager.FLY_OVER_BRACKET.S65x3.width;\n\n this.geo_bracket = new GeometryInfo();\n this.geo_bracket.geometry =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.geometry\n .clone()\n .rotateX(Math.PI / 2)\n .translate(bracketWidth / 2, bracketHeight, bracketWidth / 2);\n this.geo_bracket.width =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.width;\n this.geo_bracket.length =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.length;\n this.geo_bracket.height =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n this.geo_superiorBeam = this.geometryManager.getBeam();\n this.geo_superiorBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_superiorBeam.length / 2,\n this.geo_superiorBeam.height / 2,\n this.geo_superiorBeam.width / 2\n );\n\n this.geoBeamJoint = this.geometryManager.getBeamJoint();\n this.geoBeamJoint.geometry.translate(0, this.geoBeamJoint.height, 0);\n\n this.geo_beamRakecutLeft = this.geometryManager.getBeam();\n this.geo_beamRakecutLeft.geometry.translate(\n this.geo_beamRakecutLeft.width / 2,\n this.geo_beamRakecutLeft.height / 2,\n -this.geo_beamRakecutLeft.length / 2\n );\n\n this.geo_beamRakecutRight = this.geometryManager.getBeam();\n this.geo_beamRakecutRight.geometry.translate(\n -this.geo_beamRakecutRight.width / 2,\n this.geo_beamRakecutRight.height / 2,\n -this.geo_beamRakecutRight.length / 2\n );\n\n this.geo_beamStepRakecutLeft = this.geometryManager.getBeam();\n this.geo_beamStepRakecutLeft.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_beamStepRakecutLeft.length / 2,\n this.geo_beamStepRakecutLeft.height / 2,\n -this.geo_beamStepRakecutLeft.width / 2\n );\n\n this.geo_beamStepRakecutRight = this.geometryManager.getBeam();\n this.geo_beamStepRakecutRight.geometry\n .rotateY(Math.PI / 2)\n .translate(\n -this.geo_beamStepRakecutRight.length / 2,\n this.geo_beamStepRakecutRight.height / 2,\n -this.geo_beamStepRakecutRight.width / 2\n );\n\n this.geo_beamEndCap = this.geometryManager.getBeamEndCap();\n this.geo_beamEndCap.geometry.translate(\n 0,\n this.geo_beamEndCap.height / 2,\n 0\n );\n\n this.geo_superiorPost = this.geometryManager.getPost();\n this.geo_superiorPost.geometry\n .rotateX(Math.PI / 2)\n .translate(\n this.geo_superiorPost.width / 2,\n this.geo_superiorPost.height / 2,\n this.geo_superiorPost.width / 2\n );\n\n this.geo_centerSuperiorPost = this.geometryManager.getCenterPost();\n this.geo_centerSuperiorPost.geometry\n .rotateX(Math.PI / 2)\n .translate(\n this.geo_centerSuperiorPost.width / 2,\n this.geo_centerSuperiorPost.height / 2,\n this.geo_centerSuperiorPost.width / 2\n );\n\n this.geo_RafterBeam = this.geometryManager.getRafterBeam();\n this.geo_RafterBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_RafterBeam.length / 2,\n -this.geo_RafterBeam.height / 2,\n this.geo_RafterBeam.width / 2\n );\n\n this.geo_rafterBeamEndCap = this.geometryManager.getRafterBeamEndCap();\n this.geo_rafterBeamEndCap.geometry.translate(\n 0,\n -this.geo_rafterBeamEndCap.height / 2,\n this.geo_rafterBeamEndCap.length / 2\n );\n\n this.geo_groundBase = new GeometryInfo();\n this.geo_groundBase.width = 1000;\n this.geo_groundBase.height = 1;\n this.geo_groundBase.length = 1000;\n this.geo_groundBase.geometry = new BoxBufferGeometry(\n this.geo_groundBase.width,\n this.geo_groundBase.height,\n this.geo_groundBase.length\n );\n this.geo_groundBase.geometry.translate(\n 0,\n 0,\n this.geo_groundBase.length / 2\n );\n\n this.geo_downPipe = this.geometryManager.getDownPipe();\n this.geo_downPipeL = this.geometryManager.getDownPipeL();\n this.geo_roofBase = this.geometryManager.getRoofBase();\n\n this.scene.remove(\n ...this.scene.children.filter(\n (c) => c.userData.type == GEOMETRY_TYPE.DOWNPIPE\n )\n );\n\n this.downpipeGroupRight = new Group();\n this.downpipeGroupRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.downpipeGroupRight.rotateY(Math.PI / 2);\n this.scene.add(this.downpipeGroupRight);\n\n this.downpipeGroupLeft = new Group();\n this.downpipeGroupLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.downpipeGroupLeft.rotateY(-Math.PI / 2);\n this.scene.add(this.downpipeGroupLeft);\n this.downpipeStepRakeCutGroupLeft = new Group();\n this.downpipeStepRakeCutGroupLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeStepRakeCutGroupLeft);\n\n this.downpipeStepRakeCutGroupRight = new Group();\n this.downpipeStepRakeCutGroupRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeStepRakeCutGroupRight);\n resolve();\n });\n }\n\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SUPERIOR_CENTER_POST\n )\n );\n this.scene.remove(\n ...this.scene.children.filter((x) => x.userData.type == \"BOXHELPER\")\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.GROUND_BASE\n )\n );\n this.APP.scene.remove(\n ...this.APP.scene.children.filter(\n (o) =>\n o.userData.type == \"OUTLINE\" || o.userData.type == \"COLUMN_OUTLINE\"\n )\n );\n\n this.beamLeftCutSizeInfo = this.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.LEFT\n );\n this.beamRightCutSizeInfo = this.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.RIGHT\n );\n this.downpipeGroupRight.children = [];\n this.downpipeGroupLeft.children = [];\n this.downpipeStepRakeCutGroupLeft.children = [];\n this.downpipeStepRakeCutGroupRight.children = [];\n\n this.extraOffsetZ =\n this.APP.existingWallManager.geo_existingWallL1.width +\n this.APP.eaveManager.backOverhang;\n this.totalBaySize = this.APP.dialogEditBay.totalBaySize;\n this.cutoutExistingBothLength =\n (this.totalBaySize - this.APP.sldExistingLength.currentValue) / 2;\n\n this.addCenterSuperiorBeam();\n this.addGround();\n\n let offsetZ = 0;\n let first = true;\n let last = false;\n\n this.addHorSuperiorBeam(-UI.span / 2, {\n left: true,\n first: true,\n last: false,\n });\n this.addHorSuperiorBeam(UI.span / 2 - this.geo_superiorBeam.width, {\n right: true,\n first: false,\n last: true,\n });\n\n for (let i = 0; i <= this.APP.dialogEditBay.listBay.length; i++) {\n if (i == this.APP.dialogEditBay.listBay.length) {\n last = true;\n }\n\n this.addSuperiorBeam(offsetZ, {\n back: i == 0,\n center: !(i == this.APP.dialogEditBay.listBay.length) && !(i == 0),\n front: i == this.APP.dialogEditBay.listBay.length,\n });\n\n this.addCenterPost(offsetZ, {\n center: !(i == this.APP.dialogEditBay.listBay.length) && !(i == 0),\n first: i == 0,\n last: i == this.APP.dialogEditBay.listBay.length,\n });\n\n let fitBeam = 0;\n if (i > 0 && i < this.APP.dialogEditBay.listBay.length) {\n fitBeam = this.geo_RafterBeam.width / 2;\n } else if (i == this.APP.dialogEditBay.listBay.length) {\n fitBeam = this.geo_RafterBeam.width;\n }\n\n this.addRafterSuperiorBeam(\n offsetZ - fitBeam - UI.existingWidth1 / 2 - this.extraOffsetZ,\n {\n front: i == this.APP.dialogEditBay.listBay.length,\n right: true,\n first,\n last,\n }\n );\n this.addRafterSuperiorBeam(\n offsetZ - fitBeam - UI.existingWidth1 / 2 - this.extraOffsetZ,\n { back: i == 0, left: true, first, last }\n );\n\n if (i < this.APP.dialogEditBay.listBay.length) {\n let b = this.APP.dialogEditBay.listBay[i];\n offsetZ += b.value;\n }\n first = false;\n }\n first = true;\n last = false;\n\n this.addBraketOrBeamSideRoof();\n\n this.addPostOrBracketBack();\n this.addPostOrBracketBackCutout();\n\n this.addDownPipeRight();\n this.addDownPipeLeft();\n this.showBeamOutline();\n this.updateUI();\n resolve();\n });\n }\n public showBeamOutline() {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.BEAM_OUTLINE\n )\n );\n\n if (!UI.beamLayoutShow) return;\n\n const objs = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n const meshes = [];\n objs.forEach((el) => {\n if (el.type == \"Group\") {\n meshes.push(\n ...el.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n }\n });\n\n for (let o of meshes) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n o as Mesh,\n 10\n );\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n\n var line = new LineSegments(\n outlineGeo,\n MaterialManager.Instance().BEAM_OUTLINE\n );\n line.userData = { type: GEOMETRY_TYPE.BEAM_OUTLINE };\n this.APP.scene.add(line);\n }\n }\n private totalHeightFromEaveHeightToTopOfExistingRoof() {\n const height =\n this.geometryManager.EAVE.EAVE.height +\n UI.fasciaDepth +\n UI.eaveWidth * this.utils.tan(UI.existingRoofPitch) +\n this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.height /\n this.utils.cos(UI.existingRoofPitch);\n\n return height;\n }\n private totalHeightFromEaveHeightToTopOfFlyoverBraket() {\n const height =\n this.totalHeightFromEaveHeightToTopOfExistingRoof() +\n UI.braketHeight -\n FIT_FLYOVER_BRAKET_ON_ROOF;\n\n return height;\n }\n public addBraketOrBeamSideRoof() {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET &&\n !x.userData?.position?.back\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.SUPERIOR_POST &&\n !x.userData?.position?.back\n )\n );\n\n // LEFT SIDE\n let numOfBrakets = this.numberOfBracketsSide;\n let first = true;\n let last = false;\n\n let offsetZ = 0;\n for (let i = 0; i <= UI.listBay.length; i++) {\n if (i == UI.listBay.length) {\n last = true;\n }\n if (\n i !== 0 &&\n (offsetZ - 2 * this.geo_superiorPost.width > UI.existingWidth1 ||\n (UI.existingType != BUILDING_SIDE.LEFT &&\n UI.existingType != BUILDING_SIDE.BOTH))\n ) {\n this.addPostOrBracket(offsetZ, {\n back: i == 0,\n center: !(i == UI.listBay.length) && !(i == 0),\n front: i == UI.listBay.length,\n first: i == 0,\n last: i == UI.listBay.length,\n left: true,\n right: false,\n });\n }\n\n if (i < UI.listBay.length) {\n offsetZ += UI.listBay[i].value;\n }\n first = false;\n }\n if (\n UI.existingType == BUILDING_SIDE.LEFT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n offsetZ = 0;\n numOfBrakets = this.numberOfBracketsSide;\n let distance =\n (UI.existingWidth1 > UI.totalBayLength\n ? UI.totalBayLength\n : UI.existingWidth1) / numOfBrakets;\n for (let i = 0; i <= numOfBrakets; i++) {\n if (i == numOfBrakets) {\n last = true;\n }\n if (i !== 0) {\n this.addPostOrBracket(offsetZ, {\n back: i == 0,\n center: !(i == numOfBrakets) && !(i == 0),\n front: i == numOfBrakets,\n first: i == 0,\n last: i == numOfBrakets,\n left: true,\n right: false,\n });\n }\n\n offsetZ += distance;\n first = false;\n }\n }\n\n //RIGHT SIDE\n offsetZ = 0;\n for (let i = 0; i <= UI.listBay.length; i++) {\n if (i == UI.listBay.length) {\n last = true;\n }\n if (\n i !== 0 &&\n (offsetZ - 2 * this.geo_superiorPost.width > UI.existingWidth1 ||\n (UI.existingType != BUILDING_SIDE.RIGHT &&\n UI.existingType != BUILDING_SIDE.BOTH))\n ) {\n this.addPostOrBracket(offsetZ, {\n back: i == 0,\n center: !(i == UI.listBay.length) && !(i == 0),\n front: i == UI.listBay.length,\n first: i == 0,\n last: i == UI.listBay.length,\n left: false,\n right: true,\n });\n }\n\n if (i < UI.listBay.length) {\n offsetZ += UI.listBay[i].value;\n }\n first = false;\n }\n if (\n UI.existingType == BUILDING_SIDE.RIGHT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n offsetZ = 0;\n numOfBrakets = this.numberOfBracketsSide;\n let distance =\n (UI.existingWidth1 > UI.totalBayLength\n ? UI.totalBayLength\n : UI.existingWidth1) / numOfBrakets;\n for (let i = 0; i <= numOfBrakets; i++) {\n if (i == numOfBrakets) {\n last = true;\n }\n if (i !== 0) {\n this.addPostOrBracket(offsetZ, {\n back: i == 0,\n center: !(i == numOfBrakets) && !(i == 0),\n front: i == numOfBrakets,\n first: i == 0,\n last: i == numOfBrakets,\n left: false,\n right: true,\n });\n }\n\n offsetZ += distance;\n first = false;\n }\n }\n }\n private addDownPipeRight() {\n let offsetZ = this.totalBaySize - this.extraOffsetZ - 50;\n let offsetX = UI.span / 2 + 100;\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let offsetXExtra =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetX -= offsetXExtra;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let offsetXExtra =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetX += offsetXExtra;\n }\n\n if (this.APP.sltExistingType.currentValue != 0) {\n offsetZ -= this.APP.sldExistingWidth1.currentValue / 2;\n }\n\n let offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.overhangRight,\n UI.patiosPitch,\n -1\n ) +\n this.geo_roofBase.height +\n this.geo_superiorBeam.height +\n 90;\n\n if (this.APP.sltGutterType.currentValue == 0) {\n offsetY -= 80;\n } else {\n offsetY -= 60;\n }\n\n if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n let meshPipe = new Mesh(\n this.geo_downPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipe.userData = { type: GEOMETRY_TYPE.DOWNPIPE_NOZZLE };\n meshPipe.scale.setY(100 / this.geo_downPipe.height);\n meshPipe.position.set(\n 0,\n -190,\n UI.overhangRight / this.utils.cos(UI.patiosPitch) -\n this.geo_downPipe.width / 2 -\n 20\n );\n\n this.downpipeGroupRight.add(meshPipe);\n this.downpipeGroupRight.position.set(offsetX, offsetY, offsetZ);\n } else {\n this.utils.createDownpipeGroup(\n this.APP,\n this.downpipeGroupRight,\n this.geo_downPipe,\n this.geo_downPipeL,\n offsetX,\n offsetY,\n offsetZ,\n 0,\n 0,\n UI.overhangRight,\n offsetY,\n true\n );\n }\n }\n private addDownPipeLeft() {\n let offsetZ = this.totalBaySize - this.extraOffsetZ - 50;\n let offsetX = -UI.span / 2 - 100;\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let offsetXExtra =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetX -= offsetXExtra;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let offsetXExtra =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetX += offsetXExtra;\n }\n\n if (this.APP.sltExistingType.currentValue != 0) {\n offsetZ -= this.APP.sldExistingWidth1.currentValue / 2;\n }\n\n let offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.overhangLeft,\n UI.patiosPitch,\n -1\n ) +\n this.geo_roofBase.height +\n this.geo_superiorBeam.height +\n 90;\n\n if (this.APP.sltGutterType.currentValue == 0) {\n offsetY -= 80;\n } else {\n offsetY -= 60;\n }\n\n if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n let meshPipe = new Mesh(\n this.geo_downPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipe.userData = { type: GEOMETRY_TYPE.DOWNPIPE_NOZZLE };\n meshPipe.scale.setY(100 / this.geo_downPipe.height);\n meshPipe.position.set(\n 0,\n -190,\n UI.overhangLeft / this.utils.cos(UI.patiosPitch) -\n this.geo_downPipe.width / 2 -\n 20\n );\n\n this.downpipeGroupLeft.add(meshPipe);\n this.downpipeGroupLeft.position.set(offsetX, offsetY, offsetZ);\n } else {\n this.utils.createDownpipeGroup(\n this.APP,\n this.downpipeGroupLeft,\n this.geo_downPipe,\n this.geo_downPipeL,\n offsetX,\n offsetY,\n offsetZ,\n 0,\n 0,\n UI.overhangLeft,\n offsetY,\n true\n );\n }\n }\n private updateUI() {\n this.APP.sldMinHeight.setValue(_.round(this.frontPostHeight, 0));\n }\n public getSection(): Printing2DGeometry {\n let objs = this.scene.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_POST ||\n o.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET ||\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_CENTER_POST\n );\n\n objs = [...objs];\n\n let lsGeometries: Printing2DLine[] = [];\n\n for (let o of objs) {\n let box = new BoxHelper(o);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n //this.scene.add(box);\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: outlineGeo.vertices,\n views: o.userData.views,\n });\n\n // var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"OUTLINE\"};\n // //line.position.set(o.position.x - 5000, o.position.y, o.position.z);\n // this.scene.add( line );\n }\n let beamGroups = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n for (let g of beamGroups) {\n for (let c of g.children) {\n c.updateMatrix();\n\n let objCloned = c.clone();\n objCloned.applyMatrix4(new Matrix4().getInverse(c.matrix));\n\n let box = new BoxHelper(objCloned);\n\n c.updateWorldMatrix(true, true);\n\n box.geometry.applyMatrix4(c.matrixWorld);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n //this.APP.scene.add(box);\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n const planView = _.find(\n g.userData.views,\n (el) => el.viewType == ViewType.PLAN\n );\n const anotherViews = _.filter(\n g.userData.views,\n (el) => el.viewType != ViewType.PLAN\n );\n if (anotherViews.length > 0) {\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo.vertices,\n views: anotherViews,\n });\n }\n if (planView) {\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo.vertices\n .slice(0, 8)\n .filter((el, index) => [0, 1, 4, 5].includes(index)),\n views: [planView],\n });\n }\n }\n }\n\n let rafterBeamGroups = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n );\n for (let o of rafterBeamGroups) {\n o.children.forEach((el) => {\n this.utils.getOutlineRafterBeam(el as Mesh, lsGeometries);\n });\n }\n\n return { lines: lsGeometries, texts: [] };\n }\n public simplifyGeo(geo: BufferGeometry): Geometry {\n //let simplifiedGeo = new Geometry();\n let vertices = geo.getAttribute(\"position\").array;\n let lineGeo = new Geometry();\n for (let i = 0; i < vertices.length; i += 3) {\n //simplifiedGeo.vertices.push();\n\n lineGeo.vertices.push(\n new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2])\n );\n //lineGeo.vertices.push(new Vector3(vertices[i+3], vertices[i+4], vertices[i+5]));\n\n //if(i == 18) break;\n }\n\n //2-3\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n //3-7\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n //7-6\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n //6-2\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n\n //1-4\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n //4-8\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n //8-5\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n //5-1\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n\n //let line = new LineSegments(lineGeo, new LineBasicMaterial({color: new Color('red')}));\n //this.scene.add(line);\n return lineGeo;\n }\n\n private addGround() {\n let offsetZ = -(\n this.APP.sldExistingWidth1.currentValue / 2 +\n this.extraOffsetZ +\n UI.overhangBack\n );\n let width = UI.span + UI.overhangLeft + UI.overhangRight;\n let length = this.totalBaySize + UI.overhangBack + UI.overhangFront;\n\n let base = new Mesh(\n this.geo_groundBase.geometry,\n MaterialManager.Instance().BASE\n );\n base.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GROUND_BASE,\n };\n base.position.set((UI.overhangRight - UI.overhangLeft) / 2, 0, offsetZ);\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2;\n if (this.APP.sltExistingType.currentValue == 1) {\n base.position.setX(offsetX);\n }\n if (this.APP.sltExistingType.currentValue == 2) {\n base.position.setX(-offsetX);\n }\n base.scale.set(\n width / this.geo_groundBase.width,\n 1,\n length / this.geo_groundBase.length\n );\n\n this.scene.add(base);\n }\n private addPostOrBracket(offsetZ: number, userDataPos: any): void {\n let meshPost = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n meshPost.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let meshBracket = new Mesh(\n this.geo_bracket.geometry,\n MaterialManager.Instance().BRACKET\n );\n meshBracket.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let offsetY =\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfExistingRoof() -\n FIT_FLYOVER_BRAKET_ON_ROOF;\n let postOffsetZ = 0;\n let bracketOffsetZ = 0;\n let scalePostY =\n (UI.existingWallHeight +\n +this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height) /\n this.geo_superiorPost.height;\n let scaleBracketY = 1;\n\n let views: Print2DView[];\n if (userDataPos.front) {\n postOffsetZ =\n offsetZ -\n this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ;\n bracketOffsetZ =\n offsetZ -\n this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ;\n scaleBracketY = UI.braketHeight / this.geo_bracket.height;\n\n postOffsetZ -= this.geo_superiorPost.width;\n bracketOffsetZ -= this.geometryManager.FLY_OVER_BRACKET.S65x3.width;\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n if (userDataPos.back) {\n postOffsetZ =\n offsetZ -\n this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ;\n bracketOffsetZ =\n offsetZ -\n this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ;\n\n scaleBracketY = UI.braketHeight / this.geo_bracket.height;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n if (userDataPos.center) {\n postOffsetZ =\n offsetZ -\n this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ;\n bracketOffsetZ =\n offsetZ -\n this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ;\n\n postOffsetZ -= this.geo_superiorPost.width / 2;\n bracketOffsetZ -= this.geometryManager.FLY_OVER_BRACKET.S65x3.width / 2;\n\n scaleBracketY = UI.braketHeight / this.geo_bracket.height;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n meshPost.userData.views = views;\n meshBracket.userData.views = views;\n\n let offsetX = -UI.span / 2;\n if (userDataPos.right) {\n offsetX = UI.span / 2;\n }\n\n let bracketOffsetX = offsetX;\n let postOffsetX = offsetX;\n if (userDataPos.left) {\n } else if (userDataPos.right) {\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n }\n\n let exceedMoveBackLimit = false;\n\n //post can not go behind existing wall\n if (exceedMoveBackLimit) {\n return;\n }\n\n meshPost.position.set(postOffsetX, 0, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n\n meshBracket.position.set(bracketOffsetX, offsetY, bracketOffsetZ);\n meshBracket.scale.setY(scaleBracketY);\n\n let boxPost = new Box3().setFromObject(meshPost);\n // let boxPostHelper = new Box3Helper(boxPost);\n // this.APP.scene.add(boxPostHelper);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n if (isIntersect) {\n if (this.APP.sltExistingType.currentValue != 3) {\n if (meshBracket.userData.position.left) {\n meshBracket.translateX(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n );\n } else if (meshBracket.userData.position.right) {\n meshBracket.translateX(\n -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n )\n );\n }\n }\n this.scene.add(meshBracket);\n } else {\n if (this.APP.sltExistingType.currentValue == 1) {\n meshPost.translateX(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n );\n } else if (this.APP.sltExistingType.currentValue == 2) {\n meshPost.translateX(\n -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n )\n );\n }\n this.scene.add(meshPost);\n }\n }\n\n public addPostOrBracketBack() {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET &&\n x.userData?.position?.back\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.SUPERIOR_POST &&\n x.userData?.position?.back\n )\n );\n\n let first = true;\n let last = false;\n let offsetX = -UI.span / 2;\n let userDataPos = { back: true };\n\n let bracketDistance = UI.span / (this.numberOfBracketsBack - 1);\n\n for (let i = 0; i < this.numberOfBracketsBack; i++) {\n if (i == this.numberOfBracketsBack - 1) {\n last = true;\n }\n let meshPost = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n meshPost.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let meshBracket = new Mesh(\n this.geo_bracket.geometry,\n MaterialManager.Instance().BRACKET\n );\n meshBracket.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let bracketOffsetY =\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfExistingRoof() -\n FIT_FLYOVER_BRAKET_ON_ROOF;\n let postOffsetZ = 0;\n let bracketOffsetZ = 0;\n\n let scalePostY = 1;\n let scaleBracketY = 1;\n\n let views: Print2DView[];\n\n postOffsetZ =\n -this.APP.sldExistingWidth1.currentValue / 2 - this.extraOffsetZ;\n bracketOffsetZ =\n -this.APP.sldExistingWidth1.currentValue / 2 - this.extraOffsetZ;\n scalePostY =\n (this.APP.sldExistingWallHeight.currentValue +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket()) /\n this.geo_superiorPost.height;\n scaleBracketY =\n UI.braketHeight / this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n meshPost.userData.views = views;\n meshBracket.userData.views = views;\n\n let bracketOffsetX = offsetX;\n let postOffsetX = offsetX;\n\n if (first) {\n } else if (last) {\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n } else {\n bracketOffsetX -= this.geo_bracket.width / 2;\n postOffsetX -= this.geo_superiorPost.width / 2;\n }\n\n meshPost.position.set(postOffsetX, 0, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n meshBracket.position.set(bracketOffsetX, bracketOffsetY, bracketOffsetZ);\n meshBracket.scale.setY(scaleBracketY);\n\n //Check intersect eave\n let boxPost = new Box3().setFromObject(meshPost);\n boxPost.translate(this.scene.position);\n\n let isIntersect = false;\n //let isCutoutInterset = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n }\n }\n\n if (isIntersect) {\n if (this.APP.sltExistingType.currentValue == 1) {\n meshBracket.translateX(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n );\n } else if (this.APP.sltExistingType.currentValue == 2) {\n meshBracket.translateX(\n -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n )\n );\n }\n\n this.scene.add(meshBracket);\n } else {\n if (this.APP.sltExistingType.currentValue == 1) {\n meshPost.translateX(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n );\n } else if (this.APP.sltExistingType.currentValue == 2) {\n meshPost.translateX(\n -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n )\n );\n }\n this.scene.add(meshPost);\n }\n\n if (i < this.numberOfBracketsBack) {\n offsetX += bracketDistance;\n }\n first = false;\n }\n }\n public addPostOrBracketBackCutout(): void {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET &&\n x.userData?.position?.back &&\n x.userData?.position?.cutout\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.SUPERIOR_POST &&\n x.userData?.position?.back &&\n x.userData?.position?.cutout\n )\n );\n\n if (\n this.APP.sltCutOut.currentValue != CUTOUT_ENABLE.YES ||\n !this.MANAGER.cutoutCondition\n )\n return;\n\n let first = true;\n let last = false;\n let offsetXL = -UI.span / 2;\n let offsetXR = UI.span / 2;\n\n let userDataPos = { back: true, cutout: true };\n\n let extraWalWidth =\n this.APP.existingWallManager.geo_existingWallL1.width +\n CONST.EAVE_OFFSET_BACK;\n let bracketDistance =\n (this.APP.sldExistingLength2.currentValue - extraWalWidth) /\n (this.numberOfBracketCutout - 1);\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n bracketDistance =\n this.APP.sldExistingLength2.currentValue /\n (this.numberOfBracketCutout - 1);\n }\n\n if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n for (let i = 0; i < this.numberOfBracketCutout; i++) {\n if (i == this.numberOfBracketCutout - 1) {\n last = true;\n }\n\n let meshPost = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n meshPost.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let meshBracket = new Mesh(\n this.geo_bracket.geometry,\n MaterialManager.Instance().BRACKET\n );\n meshBracket.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n //let offsetX = 0;\n let offsetY = this.APP.sldExistingWallHeight.currentValue;\n\n let postOffsetZ =\n -this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ +\n this.APP.sldExistingWidth1.currentValue;\n let bracketOffsetZ =\n -this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ +\n this.APP.sldExistingWidth1.currentValue;\n\n let views: Print2DView[];\n\n let scalePostY =\n this.utils.getHeightByAngle(\n this.APP.sldExistingWallHeight.currentValue +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.existingWidth1 > (UI.span + UI.multiSpan) / 2\n ? Math.abs(UI.span + UI.multiSpan - UI.existingWidth1)\n : UI.existingWidth1,\n UI.patiosPitch,\n 1\n ) / this.geo_superiorPost.height;\n\n let scaleBracketY =\n this.utils.getHeightByAngle(\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.existingWidth1 > (UI.span + UI.multiSpan) / 2\n ? Math.abs(UI.span + UI.multiSpan - UI.existingWidth1)\n : UI.existingWidth1,\n UI.patiosPitch,\n 1\n ) / this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n meshPost.userData.views = views;\n meshBracket.userData.views = views;\n\n let bracketOffsetX = offsetXL;\n let postOffsetX = offsetXL;\n if (first) {\n } else if (last) {\n } else {\n bracketOffsetX -= this.geo_bracket.width / 2;\n postOffsetX -= this.geo_superiorPost.width / 2;\n }\n\n meshPost.position.set(postOffsetX, 0, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n\n meshBracket.position.set(bracketOffsetX, offsetY, bracketOffsetZ);\n meshBracket.scale.setY(scaleBracketY);\n\n //Check intersect eave\n let boxPost = new Box3().setFromObject(meshPost);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n if (isIntersect) {\n if (this.APP.sltExistingType.currentValue == 1) {\n meshBracket.translateX(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n );\n }\n this.scene.add(meshBracket);\n } else {\n this.scene.add(meshPost);\n }\n\n if (i < this.numberOfBracketCutout) {\n offsetXL += bracketDistance;\n }\n first = false;\n }\n }\n\n if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n first = true;\n\n for (let i = 0; i < this.numberOfBracketCutout; i++) {\n if (i == this.numberOfBracketCutout - 1) {\n last = true;\n }\n\n let meshPost = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n meshPost.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let meshBracket = new Mesh(\n this.geo_bracket.geometry,\n MaterialManager.Instance().BRACKET\n );\n meshBracket.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let offsetY = this.APP.sldExistingWallHeight.currentValue;\n\n let postOffsetZ =\n -this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ +\n this.APP.sldExistingWidth1.currentValue;\n let bracketOffsetZ =\n -this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ +\n this.APP.sldExistingWidth1.currentValue;\n\n let views: Print2DView[];\n\n let scalePostY =\n this.utils.getHeightByAngle(\n this.APP.sldExistingWallHeight.currentValue +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.existingWidth1 > (UI.span + UI.multiSpan) / 2\n ? Math.abs(UI.span + UI.multiSpan - UI.existingWidth1)\n : UI.existingWidth1,\n UI.patiosPitch,\n 1\n ) / this.geo_superiorPost.height;\n\n let scaleBracketY =\n this.utils.getHeightByAngle(\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.existingWidth1 > (UI.span + UI.multiSpan) / 2\n ? Math.abs(UI.span + UI.multiSpan - UI.existingWidth1)\n : UI.existingWidth1,\n UI.patiosPitch,\n 1\n ) / this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n views = [\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n meshPost.userData.views = views;\n meshBracket.userData.views = views;\n\n let bracketOffsetX = offsetXR;\n let postOffsetX = offsetXR;\n if (first) {\n if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n }\n } else if (last) {\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n } else {\n bracketOffsetX -= this.geo_bracket.width / 2;\n postOffsetX -= this.geo_superiorPost.width / 2;\n }\n\n meshPost.position.set(postOffsetX, 0, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n\n meshBracket.position.set(bracketOffsetX, offsetY, bracketOffsetZ);\n meshBracket.scale.setY(scaleBracketY);\n\n //Check intersect eave\n let boxPost = new Box3().setFromObject(meshPost);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n if (isIntersect) {\n if (this.APP.sltExistingType.currentValue == 2) {\n meshBracket.translateX(\n -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n )\n );\n }\n\n this.scene.add(meshBracket);\n } else {\n this.scene.add(meshPost);\n }\n\n if (i < this.numberOfBracketCutout) {\n offsetXR -= bracketDistance;\n }\n first = false;\n }\n }\n }\n public addCenterSuperiorBeam() {\n let offsetXL = -(this.totalBaySize / 2 + UI.overhangFront);\n let offsetXR = this.totalBaySize / 2 + UI.overhangBack;\n let offsetZ = 0;\n let offsetY = 0;\n\n let beamLength = this.totalBaySize + UI.overhangBack + UI.overhangFront;\n\n let views: Print2DView[];\n\n offsetY =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n (UI.span / 2 - this.geo_superiorBeam.width / 2) *\n this.utils.tan(UI.patiosPitch);\n offsetZ =\n this.totalBaySize +\n UI.overhangFront -\n UI.existingWidth1 / 2 -\n this.extraOffsetZ;\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n const fixX = this.getContainerOffsetXToFitBraketToExistingWall();\n this.cutStandardBeamByCutBeamWithinBayControl(\n this.geo_superiorBeam,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(fixX - this.geo_superiorBeam.width / 2, offsetY, offsetZ),\n new Vector3(0, Math.PI / 2, 0),\n views,\n 1,\n { center: true },\n this.geo_beamEndCap.width / 2,\n \"x\",\n \"RB\",\n this.geoBeamJoint\n );\n }\n public addHorSuperiorBeam(offsetX, userDataPos: any) {\n let offsetXL = 0;\n let offsetXR = this.totalBaySize + UI.overhangBack + UI.overhangFront;\n let offsetZ = 0;\n let offsetY = 0;\n\n let beamLength = this.totalBaySize + UI.overhangBack + UI.overhangFront;\n\n let views: Print2DView[];\n\n offsetY =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket();\n offsetZ =\n this.totalBaySize +\n UI.overhangFront -\n UI.existingWidth1 / 2 -\n this.extraOffsetZ;\n\n if (userDataPos.left) {\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else {\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n const fixX = this.getContainerOffsetXToFitBraketToExistingWall();\n this.cutStandardBeamByCutBeamWithinBayControl(\n this.geo_superiorBeam,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetX + fixX, offsetY, offsetZ),\n new Vector3(0, Math.PI / 2, 0),\n views,\n 1,\n userDataPos,\n this.geo_beamEndCap.width / 2,\n \"x\",\n \"EB\",\n this.geoBeamJoint\n );\n }\n private getContainerOffsetXToFitBraketToExistingWall() {\n let fitX = 0;\n if (UI.existingType == BUILDING_SIDE.RIGHT) {\n fitX = -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0)\n );\n }\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n fitX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n }\n\n return fitX;\n }\n private cutStandardBeamByCutBeamWithinBayControl(\n beamGeo: GeometryInfo,\n beamCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n userDataPos: any,\n beamGeoTranslationZ: number,\n beamDirection: string,\n beamName = \"\",\n jointGeo: GeometryInfo\n ) {\n // Map list cut beam here\n const beamStartZ = pos.z - length;\n const beamEndZ = pos.z;\n\n let endOfBayZ = -UI.existingWidth1 / 2 - this.extraOffsetZ;\n let startCutBeamZ = beamStartZ;\n let endCutBeamZ = beamStartZ;\n\n const beams = this.utils.getListSeperateBeamsByBaysForFbGable(\n endOfBayZ,\n beamStartZ,\n beamEndZ,\n endCutBeamZ,\n startCutBeamZ\n );\n\n for (let i = 0; i < beams.length; i++) {\n endCutBeamZ = beams[i][1];\n startCutBeamZ = beams[i][0];\n let beamGroup = this.utils.createBeamGroup2(\n beamGeo,\n beamCapGeo,\n endCutBeamZ - startCutBeamZ,\n new Vector3(pos.x, pos.y, endCutBeamZ),\n rot,\n views,\n directionOffset,\n userDataPos,\n beamGeoTranslationZ,\n beamDirection,\n UI.beamLayoutShow,\n {\n hasStartCap:\n UI.beamType == 0 &&\n (i == beams.length - 1 || (i == 0 && beams.length == 1)),\n hasEndCap: UI.beamType == 0 && i == 0,\n hasStartJoint: false,\n hasEndJoint: i !== 0,\n jointGeo: jointGeo,\n }\n );\n beamGroup.userData = {\n ...beamGroup.userData,\n name: beamName,\n };\n this.scene.add(beamGroup);\n }\n }\n private addCenterPost(offsetZ, userDataPos) {\n let meshPost = new Mesh(\n this.geo_centerSuperiorPost.geometry,\n MaterialManager.Instance().BEAM\n );\n meshPost.userData = {\n ...userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_CENTER_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let scalePostY = 1;\n\n let views: Print2DView[];\n\n this.frontPostHeight =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket();\n\n scalePostY =\n ((UI.span / 2 - this.geo_superiorBeam.width / 2) *\n this.utils.tan(UI.patiosPitch) -\n this.geo_superiorBeam.height) /\n this.geo_centerSuperiorPost.height;\n\n if (userDataPos.last) {\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else {\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n let postOffsetX = -this.geo_centerSuperiorPost.width / 2;\n\n let postOffsetZ =\n offsetZ -\n this.geo_centerSuperiorPost.width / 2 -\n UI.existingWidth1 / 2 -\n this.extraOffsetZ;\n if (userDataPos.first) {\n postOffsetZ = offsetZ - UI.existingWidth1 / 2 - this.extraOffsetZ;\n } else if (userDataPos.last) {\n postOffsetZ =\n offsetZ -\n this.geo_centerSuperiorPost.width -\n UI.existingWidth1 / 2 -\n this.extraOffsetZ;\n }\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n postOffsetX -= offsetX;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n postOffsetX += offsetX;\n }\n\n meshPost.userData.views = views;\n meshPost.position.set(\n postOffsetX,\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height,\n postOffsetZ\n );\n meshPost.scale.setY(scalePostY);\n\n this.scene.add(meshPost);\n }\n public addRafterSuperiorBeam(offsetZ, userDataPos: any) {\n if (\n this.APP.sltWindClass.currentValue == 0 ||\n this.APP.sltWindClass.currentValue == 1\n ) {\n if (this.totalBaySize <= 6000 && this.APP.sldSpan.currentValue <= 7000) {\n return;\n }\n }\n if (\n this.APP.sltWindClass.currentValue == 3 ||\n this.APP.sltWindClass.currentValue == 4 ||\n this.APP.sltWindClass.currentValue == 5\n ) {\n return;\n }\n let mesh;\n\n let offsetXL = 0;\n let offsetXR =\n (UI.span / 2 - this.geo_superiorBeam.width / 2) /\n this.utils.cos(UI.patiosPitch);\n let offsetY = 0;\n\n let scaleX =\n (UI.span / 2 - this.geo_superiorBeam.width / 2) /\n this.utils.cos(UI.patiosPitch) /\n this.geo_RafterBeam.length;\n\n let views: Print2DView[];\n\n let fitZ = 0;\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n fitZ = -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0) -\n this.geo_superiorBeam.width / 2\n );\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0) -\n this.geo_superiorBeam.width / 2;\n }\n\n if (userDataPos.left) {\n let material = MaterialManager.Instance().BEAM.clone();\n\n let nBottom = new Vector3(0, 1, 0).normalize();\n let pBottom = new Vector3(\n 0,\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height,\n 0\n );\n let planeBottom = new Plane().setFromNormalAndCoplanarPoint(\n nBottom,\n pBottom\n );\n\n let beamOffsetX = 0;\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n beamOffsetX -=\n this.MANAGER.columnAndBeamManager.geo_bracket?.width / 2 || 0;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n beamOffsetX +=\n this.MANAGER.columnAndBeamManager.geo_bracket?.width / 2 || 0;\n }\n\n let nVer = new Vector3(-1, 0, 0).normalize();\n let pVer = new Vector3(\n -this.geo_superiorBeam.width / 2 +\n beamOffsetX +\n this.scene.position.x +\n fitZ,\n 0,\n 0\n );\n let planeVer = new Plane().setFromNormalAndCoplanarPoint(nVer, pVer);\n\n material.clippingPlanes = [planeBottom, planeVer];\n\n mesh = new Mesh(this.geo_RafterBeam.geometry, material);\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.right) {\n let material = MaterialManager.Instance().BEAM.clone();\n\n let nBottom = new Vector3(0, 1, 0).normalize();\n let pBottom = new Vector3(\n 0,\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height,\n 0\n );\n let planeBottom = new Plane().setFromNormalAndCoplanarPoint(\n nBottom,\n pBottom\n );\n\n let beamOffsetX = 0;\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n beamOffsetX -=\n this.MANAGER.columnAndBeamManager.geo_bracket?.width / 2 || 0;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n beamOffsetX +=\n this.MANAGER.columnAndBeamManager.geo_bracket?.width / 2 || 0;\n }\n let nVer = new Vector3(1, 0, 0).normalize();\n let pVer = new Vector3(\n this.geo_superiorBeam.width / 2 +\n beamOffsetX +\n this.scene.position.x +\n fitZ,\n 0,\n 0\n );\n let planeVer = new Plane().setFromNormalAndCoplanarPoint(nVer, pVer);\n\n material.clippingPlanes = [planeBottom, planeVer];\n\n mesh = new Mesh(this.geo_RafterBeam.geometry, material);\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM,\n position: userDataPos,\n views: views,\n };\n mesh.position.set(offsetXL, 0, 0);\n mesh.scale.setX(scaleX);\n\n let checkExec = /\\w{1}\\d{1,3}x(\\d{1,3})/.exec(this.geo_RafterBeam.name);\n let beamSize = checkExec && checkExec.length == 2 ? checkExec[1] : \"\";\n let lowerBraketName = getRafterBeamEndCapCode(\n EXISTING_BUILDING_CONFIG.RAFTER_BEAM_SIZE,\n false\n );\n let higherBraketName = getRafterBeamEndCapCode(\n EXISTING_BUILDING_CONFIG.RAFTER_BEAM_SIZE,\n true\n );\n\n let capL;\n let capR;\n if (userDataPos.left) {\n let matEndCap = MaterialManager.Instance().BEAM.clone();\n\n let heightReal =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height +\n (this.utils.tan(UI.patiosPitch) * UI.span) / 2;\n let heightPlane = heightReal * this.utils.cos(UI.patiosPitch);\n let translateZ = this.utils.sin(UI.patiosPitch) * heightPlane;\n\n let planeTop = new Plane(new Vector3(0, -1, 0));\n let matrixTranslateTop = new Matrix4().makeTranslation(\n -translateZ / 2,\n heightPlane,\n 0\n );\n let matrixRotateTop = new Matrix4().makeRotationZ(\n this.utils.degreesToRadians(UI.patiosPitch)\n );\n let matrixTotalTop = matrixTranslateTop.multiply(matrixRotateTop);\n planeTop.applyMatrix4(matrixTotalTop);\n\n let heightRealBottom =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height -\n this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n (this.utils.tan(UI.patiosPitch) * UI.span) / 2;\n let heightPlaneBottom = heightRealBottom * this.utils.cos(UI.patiosPitch);\n let translateZBottom = this.utils.sin(UI.patiosPitch) * heightPlaneBottom;\n\n let planeBottom = new Plane(new Vector3(0, 1, 0));\n let matrixTranslateBottom = new Matrix4().makeTranslation(\n -translateZBottom / 2,\n heightPlaneBottom,\n 0\n );\n let matrixRotateBottom = new Matrix4().makeRotationZ(\n this.utils.degreesToRadians(UI.patiosPitch)\n );\n let matrixTotalBottom =\n matrixTranslateBottom.multiply(matrixRotateBottom);\n planeBottom.applyMatrix4(matrixTotalBottom);\n\n let beamOffsetX = 0;\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n beamOffsetX -=\n this.MANAGER.columnAndBeamManager.geo_bracket?.width / 2 || 0;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n beamOffsetX +=\n this.MANAGER.columnAndBeamManager.geo_bracket?.width / 2 || 0;\n }\n\n planeTop.translate(\n new Vector3(beamOffsetX + this.scene.position.x + fitZ, 0, 0)\n );\n planeBottom.translate(\n new Vector3(beamOffsetX + this.scene.position.x + fitZ, 0, 0)\n );\n\n matEndCap.clippingPlanes = [planeTop, planeBottom];\n\n capL = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capL.position.set(offsetXL - 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capL.scale.setY(\n (this.geo_RafterBeam.height / this.utils.sin(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length / this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capL.rotateY(Math.PI / 2);\n capL.rotateX(-Math.PI / 2 + this.utils.degreesToRadians(UI.patiosPitch));\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: lowerBraketName,\n };\n\n capR = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capR.position.set(offsetXR + 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capR.scale.setY(\n (this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length * this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capR.rotateY(-Math.PI / 2);\n capR.rotateX(-this.utils.degreesToRadians(UI.patiosPitch));\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: higherBraketName,\n };\n } else {\n let matEndCap = MaterialManager.Instance().BEAM.clone();\n\n let heightReal =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height +\n (this.utils.tan(UI.patiosPitch) * UI.span) / 2;\n let heightPlane = heightReal * this.utils.cos(UI.patiosPitch);\n let translateZ = this.utils.sin(UI.patiosPitch) * heightPlane;\n\n let planeTop = new Plane(new Vector3(0, -1, 0));\n let matrixTranslateTop = new Matrix4().makeTranslation(\n translateZ / 2,\n heightPlane,\n 0\n );\n let matrixRotateTop = new Matrix4().makeRotationZ(\n -this.utils.degreesToRadians(UI.patiosPitch)\n ); //tao voi z pitch do\n let matrixTotalTop = matrixTranslateTop.multiply(matrixRotateTop);\n planeTop.applyMatrix4(matrixTotalTop);\n\n let heightRealBottom =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height -\n this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n (this.utils.tan(UI.patiosPitch) * UI.span) / 2;\n let heightPlaneBottom = heightRealBottom * this.utils.cos(UI.patiosPitch);\n let translateZBottom = this.utils.sin(UI.patiosPitch) * heightPlaneBottom;\n\n let planeBottom = new Plane(new Vector3(0, 1, 0));\n let matrixTranslateBottom = new Matrix4().makeTranslation(\n translateZBottom / 2,\n heightPlaneBottom,\n 0\n );\n let matrixRotateBottom = new Matrix4().makeRotationZ(\n -this.utils.degreesToRadians(UI.patiosPitch)\n ); //tao voi z pitch do\n let matrixTotalBottom =\n matrixTranslateBottom.multiply(matrixRotateBottom);\n planeBottom.applyMatrix4(matrixTotalBottom);\n\n let beamOffsetX = 0;\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n beamOffsetX -=\n this.MANAGER.columnAndBeamManager.geo_bracket?.width / 2 || 0;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n beamOffsetX +=\n this.MANAGER.columnAndBeamManager.geo_bracket?.width / 2 || 0;\n }\n\n planeTop.translate(\n new Vector3(beamOffsetX + this.scene.position.x + fitZ, 0, 0)\n );\n planeBottom.translate(\n new Vector3(beamOffsetX + this.scene.position.x + fitZ, 0, 0)\n );\n\n matEndCap.clippingPlanes = [planeTop, planeBottom];\n\n capL = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capL.position.set(offsetXL - 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capL.scale.setY(\n (this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length * this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capL.rotateY(Math.PI / 2);\n capL.rotateX(-this.utils.degreesToRadians(UI.patiosPitch));\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: higherBraketName,\n };\n\n capR = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capR.position.set(offsetXR + 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capR.scale.setY(\n (this.geo_RafterBeam.height / this.utils.sin(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length / this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capR.rotateY(-Math.PI / 2);\n capR.rotateX(-Math.PI / 2 + this.utils.degreesToRadians(UI.patiosPitch));\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: lowerBraketName,\n };\n }\n\n let offsetX = 0;\n if (userDataPos.left) {\n offsetX = -UI.span / 2;\n offsetY =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height;\n } else if (userDataPos.right) {\n offsetX = this.geo_centerSuperiorPost.width / 2;\n offsetY =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height +\n (UI.span / 2 - this.geo_superiorBeam.width / 2) *\n this.utils.tan(UI.patiosPitch);\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetX -= fitZ;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetX += fitZ;\n }\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM,\n position: userDataPos,\n views: views,\n };\n beamGroup.position.set(offsetX, offsetY, offsetZ);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n\n if (userDataPos.left) {\n beamGroup.rotateZ(this.utils.degreesToRadians(UI.patiosPitch));\n } else if (userDataPos.right) {\n beamGroup.rotateZ(-this.utils.degreesToRadians(UI.patiosPitch));\n }\n\n this.scene.add(beamGroup);\n }\n\n public addSuperiorBeam(offsetZ: number, userDataPos: any) {\n let offsetX = -UI.span / 2 + this.geo_superiorPost.width;\n if (userDataPos.back) {\n offsetX = -UI.span / 2 + this.geo_superiorBeam.width;\n }\n let offsetY = 0;\n\n let beamLength = UI.span - 2 * this.geo_superiorPost.width;\n if (userDataPos.back) {\n beamLength = UI.span - 2 * this.geo_superiorBeam.width;\n }\n if (\n offsetZ - this.geo_bracket.width - this.geo_superiorPost.width / 2 <\n UI.existingWidth1 &&\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n beamLength = UI.span - 2 * this.geo_superiorBeam.width;\n offsetX = -UI.span / 2 + this.geo_superiorBeam.width;\n }\n let extraWallWidth =\n this.APP.existingWallManager.geo_existingWallW1.width +\n CONST.EAVE_OFFSET_BACK;\n let views: Print2DView[];\n let posZ = offsetZ;\n\n if (userDataPos.front) {\n offsetY =\n this.APP.sldExistingWallHeight.currentValue +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket();\n posZ =\n offsetZ -\n this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ -\n this.geo_superiorBeam.width;\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.center) {\n offsetY =\n this.APP.sldExistingWallHeight.currentValue +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket();\n posZ =\n offsetZ -\n this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ -\n this.geo_superiorBeam.width / 2;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.back) {\n offsetY =\n this.APP.sldExistingWallHeight.currentValue +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket();\n posZ =\n offsetZ -\n (this.APP.sldExistingWidth1.currentValue / 2 + this.extraOffsetZ);\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetX -= fitZ;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetX += fitZ;\n }\n let beamGroup = this.utils.createBeamGroup(\n this.geo_superiorBeam,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetX, offsetY, posZ),\n new Vector3(),\n views,\n 1,\n userDataPos\n );\n beamGroup.userData = {\n ...beamGroup.userData,\n name: \"GB\",\n };\n this.scene.add(beamGroup);\n\n //Add one more beam cutout right\n if (userDataPos.cutout && this.APP.sltExistingType.currentValue == 3) {\n offsetX =\n UI.span / 2 -\n (UI.span - this.APP.sldExistingLength.currentValue) / 2 +\n this.APP.existingWallManager.geo_existingWallW1.width +\n CONST.EAVE_OFFSET_BACK -\n this.geo_superiorBeam.width -\n (this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2);\n let beamGroup = this.utils.createBeamGroup(\n this.geo_superiorBeam,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetX, offsetY, posZ),\n new Vector3(),\n views,\n 1,\n userDataPos\n );\n beamGroup.userData = {\n ...beamGroup.userData,\n name: \"GB\",\n };\n this.scene.add(beamGroup);\n }\n }\n public getBracketHeight(offset): number {\n let angle = UI.patiosPitch;\n return this.utils.tan(angle) * offset;\n }\n\n public destroy(): void {\n this.unregisterEvent();\n }\n\n private registerEvent(): void {\n this.eventHandleId = this.uiChangedDefer.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldExistingWallHeight,\n this.APP.sldEaveWidth,\n this.APP.sldFasciaDepth,\n\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n\n this.APP.sltExistingType,\n this.APP.dialogEditBay,\n\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldFrontOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldFlyOverBracketHeight,\n\n this.APP.sltColourBeam,\n this.APP.sltColourPost,\n this.APP.sltColourBracket,\n this.APP.sltColourFasciaBracket,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n ];\n //this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n\n this.controlsToRegisterEvent2 = [\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltColumnType,\n ];\n this.controlsToRegisterEvent2.forEach((c) =>\n c.addAction(this.objectSizeChangedHandle)\n );\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach((c) =>\n c.removeAction(this.objectSizeChangedHandle)\n );\n this.controlsToRegisterEvent2 = undefined;\n }\n private objectSizeChanged(pre: number, cur: number) {\n this.optimize().then(() => {\n this.load();\n });\n }\n uiChangedDefer(previousValue: number, currentValue: number) {\n if (this.APP.sltCutOut.currentValue == 1) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => {\n this.load();\n }, this.deferTimeout);\n } else {\n this.load();\n }\n }\n}\n","import { Scene, Mesh, Object3D, Material, Group, FontLoader, TextBufferGeometry, PlaneBufferGeometry, Vector3, BoxHelper, Box3Helper, Matrix4, Box3, Geometry, LineSegments, LineBasicMaterial, Color, BoxBufferGeometry, ArrowHelper, BufferGeometry, Line, Line3 } from \"three\";\nimport { HomeComponent as AppComponent, HomeComponent } from '../../containers/home/home.component';\nimport { Util } from '../utils';\nimport { MaterialManager } from '../material.manager';\nimport { GeometryInfo, ViewType, LineType, IBay, Printing2DGeometry, Printing2DLine, Print2DText, Printing2DGeometryType } from '../models';\nimport { GEOMETRY_TYPE, DIMENSION_LOCATION, DIMENSION_LABEL_TYPE } from 'src/app/app.config';\nimport { environment } from 'src/environments/environment';\nimport { PatiosGableFBFlyOverManager } from '.';\nimport { GeometryManager } from '../geometry.manager';\nimport { BUILDING_SIDE, PANEL_DIRECTION, RAKECUT_TYPE } from 'src/app/app.constants';\nimport Dimension, { AddDimensionOptions } from \"src/app/models/Dimension\";\nimport {CONFIG as conf} from '../../app.config'\nimport { UI } from \"../ui\";\n\nexport class DimensionManager {\n private scene: Scene;\n private APP: AppComponent;\n private MANAGER: PatiosGableFBFlyOverManager;\n public listText: THREE.Object3D[] = [];\n private utils: Util;\n\n\n private eventHandleId: any;\n\n private material: Material;\n\n private materialManager: MaterialManager;\n\n private dimensionPatiosFrontBottom: Object3D;\n private dimensionPatiosFrontRight: Object3D;\n \n private dimensionPatiosRightBottom: Object3D;\n private dimensionPatiosRightLeft: Object3D;\n private dimensionPatiosRightRight: Object3D;\n\n private dimensionPatiosLeftBottom: Object3D;\n private dimensionPatiosLeftRight: Object3D;\n private dimensionPatiosLeftLeft: Object3D;\n\n private dimensionPatiosPlanRight: Object3D;\n private dimensionPatiosPlanBottom: Object3D;\n private dimensionPatiosPlanLeft: Object3D;\n private dimensionPlanMiddle: Object3D;\n private dimensionPlanMidleLeft: Object3D;\n private dimensionPatiosPlanLeftOverHang: Object3D;\n\n private lineCapGeo: GeometryInfo;\n private lineGeo: GeometryInfo;\n private textGeo: TextBufferGeometry;\n\n private dimensionDistance = 1500;\n private dimensionDistance2 = 500;\n private dimensionDistance3 = 300;\n\n private textDistance = 5000;\n\n private totalBaySize: number;\n private box: Box3;\n\n private font: any\n private textParameter: any;\n private isReady = false;\n\n private controlsToRegisterEvent: Array;\n private geometryManager: GeometryManager;\n\n private options : AddDimensionOptions;\n private startPos: Vector3;\n private startMatrix: Matrix4;\n private startBayLength: number;\n\n constructor(app: AppComponent, flyOverManager: PatiosGableFBFlyOverManager) {\n this.utils = new Util();\n this.materialManager = MaterialManager.Instance();\n this.APP = app;\n this.MANAGER = flyOverManager;\n this.scene = this.APP.scene;\n this.material = MaterialManager.Instance().DIMENSION_TEXT;\n this.geometryManager = GeometryManager.Instance();\n //this.registerEvent();\n }\n\n \n public optimize() : Promise{\n return new Promise((resolve, reject) => {\n this.lineGeo = this.geometryManager.getDimensionLine();\n this.lineCapGeo = this.geometryManager.getDimensionCap();\n\n resolve();\n });\n }\n public load(): Promise { \n return new Promise((resolve, reject) => {\n this.unload();\n \n var loader = new FontLoader();\n \n this.dimensionPatiosFrontBottom = new Group();\n this.dimensionPatiosFrontBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n // this.dimensionPatiosFrontBottom.rotation.set(0,Math.PI,0);\n this.dimensionPatiosFrontBottom.visible = false;\n\n this.dimensionPatiosFrontRight = new Group();\n this.dimensionPatiosFrontRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosFrontRight.rotation.set(0,0,-Math.PI/2);\n this.dimensionPatiosFrontRight.visible = false;\n \n this.dimensionPatiosRightBottom = new Group();\n this.dimensionPatiosRightBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightBottom.rotation.set(0,-Math.PI/2,0);\n this.dimensionPatiosRightBottom.visible = false;\n\n this.dimensionPatiosRightLeft = new Group();\n this.dimensionPatiosRightLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightLeft.rotation.set(0,-Math.PI/2,-Math.PI/2);\n this.dimensionPatiosRightLeft.visible = false;\n\n this.dimensionPatiosRightRight = new Group();\n this.dimensionPatiosRightRight.rotation.set(0,-Math.PI/2,-Math.PI/2);\n this.dimensionPatiosRightRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightRight.visible = false;\n \n\n this.dimensionPatiosLeftBottom = new Group();\n this.dimensionPatiosLeftBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftBottom.rotation.set(0,-Math.PI/2,0);\n this.dimensionPatiosLeftBottom.visible = false;\n\n this.dimensionPatiosLeftRight = new Group();\n this.dimensionPatiosLeftRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftRight.rotation.set(Math.PI/2,-Math.PI/2,0);\n this.dimensionPatiosLeftRight.visible = false;\n\n this.dimensionPatiosLeftLeft = new Group();\n this.dimensionPatiosLeftLeft.rotation.set(0, -Math.PI / 2, Math.PI / 2);\n this.dimensionPatiosLeftLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftLeft.visible = false;\n \n\n\n this.dimensionPatiosPlanRight = new Group();\n this.dimensionPatiosPlanRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosPlanRight.rotation.set(-Math.PI/2, Math.PI, -Math.PI/2);\n\n this.dimensionPatiosPlanBottom = new Group();\n this.dimensionPatiosPlanBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosPlanBottom.rotation.set(-Math.PI / 2, 0, 0);\n\n this.dimensionPatiosPlanLeft = new Group();\n this.dimensionPatiosPlanLeft.userData = { type: GEOMETRY_TYPE.DIMENSION , position: { left: true } };\n this.dimensionPatiosPlanLeft.rotation.set(-Math.PI / 2, 0, -Math.PI / 2);\n\n this.dimensionPlanMiddle = new Group();\n this.dimensionPlanMiddle.userData = { type: GEOMETRY_TYPE.DIMENSION };\n //this.dimensionPlanMiddle.rotation.set(-Math.PI / 2, 0, 0);\n this.dimensionPlanMidleLeft = new Group();\n\n this.dimensionPatiosPlanLeftOverHang = new Group();\n\n this.scene.add(this.dimensionPatiosPlanRight);\n this.scene.add(this.dimensionPatiosPlanLeft);\n this.scene.add(this.dimensionPatiosFrontRight);\n this.APP.patiosManager.patiosGroup.add(\n this.dimensionPatiosFrontBottom, \n //this.dimensionPatiosFrontRight, \n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom, \n this.dimensionPatiosLeftRight, \n this.dimensionPatiosPlanBottom,\n this.dimensionPlanMiddle,\n this.dimensionPatiosPlanLeftOverHang,\n this.dimensionPatiosLeftLeft,\n this.dimensionPlanMidleLeft\n );\n\n\n\n loader.load( environment.modelBaseUrl + '/assets/fonts/helvetiker_regular.typeface.json', (font) => {\n this.font = font;\n\n this.textParameter = {\n font: this.font,\n size: 200,\n height: 5,\n curveSegments: 10\n };\n this.options = {\n container: HomeComponent.ins.scene,\n start: new Vector3(),\n end: new Vector3(),\n linePos: new Vector3(),\n views: [],\n allowDrag: true,\n textParameter: this.textParameter,\n textPos: new Vector3(),\n labelType: null,\n fitZ: 10,\n hasTextClone: false,\n axis: 'x',\n lineLength: 0,\n subtype: null,\n textUserData: null,\n onDragCallback: this.onDimDrag.bind(this),\n onDragStartCallback: this.onDimDragStart.bind(this),\n }\n\n this.isReady = true;\n this.draw();\n \n resolve();\n })\n });\n }\n\n public unload(){\n this.scene.remove(this.dimensionPatiosPlanRight);\n this.scene.remove(this.dimensionPatiosPlanLeft);\n this.scene.remove(this.dimensionPatiosFrontRight);\n if(this.APP.patiosManager && this.APP.patiosManager.patiosGroup){\n this.APP.patiosManager.patiosGroup.remove(\n this.dimensionPatiosFrontBottom, \n //this.dimensionPatiosFrontRight, \n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom, \n this.dimensionPatiosLeftRight,\n this.dimensionPatiosLeftLeft,\n this.dimensionPatiosPlanBottom,\n this.dimensionPlanMiddle,\n this.dimensionPlanMidleLeft,\n this.dimensionPatiosPlanLeftOverHang\n );\n }\n }\n \n public draw() {\n if (!this.isReady) {\n return;\n }\n // this.dimensionPatiosPlanBottom.children = [];\n // this.dimensionPatiosPlanRight.children = [];\n // this.dimensionPatiosPlanLeft.children = [];\n this.dimensionPatiosPlanBottom.children = this.dimensionPatiosPlanBottom.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.LEFT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.RIGHT_OVERHANG\n );\n this.dimensionPatiosPlanRight.children = this.dimensionPatiosPlanRight.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.FRONT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.BACK_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY\n );\n this.dimensionPatiosPlanLeft.children = this.dimensionPatiosPlanLeft.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL \n )\n this.dimensionPatiosFrontBottom.children = [];\n this.dimensionPatiosFrontRight.children = [];\n this.dimensionPatiosLeftBottom.children = [];\n this.dimensionPatiosLeftRight.children = [];\n this.dimensionPatiosRightBottom.children = [];\n this.dimensionPatiosRightLeft.children = [];\n this.dimensionPatiosRightRight.children = [];\n this.dimensionPlanMiddle.children = [];\n this.dimensionPatiosPlanLeftOverHang.children = [];\n this.dimensionPatiosLeftLeft.children = [];\n this.dimensionPlanMidleLeft.children = [];\n \n this.totalBaySize = 0;\n for(let b of this.APP.dialogEditBay.listBay){\n this.totalBaySize += b.value;\n }\n\n this.box = this.utils.getSceneBox();\n\n this.drawDimensionPatiosPlanBottom();\n this.drawDimensionPatiosPlanRight();\n // this.drawDimensionPatiosPlanLeft();\n\n this.drawDimensionPatiosFrontBottom();\n this.drawDimensionPatiosFrontRight();\n\n this.drawDimensionPatiosLeftBottom();\n this.drawDimensionPatiosLeftRight();\n this.drawDimensionPatiosLeftLeft();\n\n this.drawDimensionPatiosRightBottom();\n this.drawDimensionPatiosRightLeft();\n this.drawDimensionPatiosRightRight();\n\n //testing\n // [\n // this.dimensionPatiosFrontBottom,\n // this.dimensionPatiosFrontRight,\n // this.dimensionPatiosRightBottom,\n // this.dimensionPatiosRightLeft,\n // this.dimensionPatiosRightRight,\n // this.dimensionPatiosLeftBottom,\n // this.dimensionPatiosLeftRight,\n // this.dimensionPatiosLeftLeft,\n // ].forEach(g => { g.visible = true });\n\n this.drawDimensionMidle();\n this.drawDimensionMidleLeft();\n\n this.APP.dimensionManager.draw();\n }\n\n private drawDimensionMidleLeft() {\n let offsetX = 0;\n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT){\n offsetX = -this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width - 100 + ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n }\n\n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT){\n offsetX = this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n }\n\n let dimLeft = this.utils.createArrowLine([{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }]);\n dimLeft.visible = false;\n dimLeft.position.setX(-300)\n let textLeft = this.utils.createText(\"Panel direction\", [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }], this.textParameter, new Vector3(-500, 0, 650));\n textLeft.userData.rotation = new Vector3(0, Math.PI / 2, 0)\n textLeft.visible = false;\n\n let dimRight = dimLeft.clone()\n dimRight.position.setX(300);\n let textRight = textLeft.clone();\n textRight.position.setX(500);\n \n this.dimensionPlanMidleLeft.add(dimLeft);\n this.dimensionPlanMidleLeft.add(textLeft);\n this.dimensionPlanMidleLeft.add(dimRight);\n this.dimensionPlanMidleLeft.add(textRight);\n\n\n if (this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT) {\n let offsetZ = this.totalBaySize + UI.overhangFront - UI.existingWidth1 / 2 - this.MANAGER.patiosGroup.position.z - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n this.dimensionPlanMidleLeft.position.set(offsetX, 0, offsetZ);\n this.dimensionPlanMidleLeft.rotation.set(0, Math.PI, 0);\n }\n else {\n let offsetZ = - UI.overhangBack - UI.existingWidth1 / 2 - this.MANAGER.patiosGroup.position.z - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n this.dimensionPlanMidleLeft.rotation.set(0, 0, 0);\n this.dimensionPlanMidleLeft.position.set(offsetX, 0, offsetZ);\n }\n }\n private drawDimensionMidle() {\n let offsetX = 0;\n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT){\n offsetX = -this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width - 100 + ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n }\n\n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT){\n offsetX = this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n }\n\n let dimLeft = this.utils.createArrowLine([{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }]);\n dimLeft.visible = false;\n dimLeft.rotation.set(0, -Math.PI / 2, 0);\n\n let textLeft = this.utils.createText(`${UI.patiosPitch} degree`, [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }], this.textParameter, new Vector3(-500, 0, 200));\n textLeft.visible = false;\n\n let dimRight = dimLeft.clone()\n dimRight.rotation.set(0, Math.PI / 2, 0);\n\n let textRight = textLeft.clone();\n textRight.position.setX(500);\n \n this.dimensionPlanMiddle.add(dimLeft);\n this.dimensionPlanMiddle.add(textLeft);\n this.dimensionPlanMiddle.add(dimRight);\n this.dimensionPlanMiddle.add(textRight);\n\n let offsetZ = - UI.existingWidth1 / 2 - this.MANAGER.patiosGroup.position.z - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0) + this.totalBaySize / 2;\n this.dimensionPlanMiddle.rotation.set(0, 0, 0);\n this.dimensionPlanMiddle.position.set(offsetX, 0, offsetZ);\n }\n\n private drawDimensionPatiosPlanBottom(){\n let views = [ { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS } ];\n\n let _dimensionDistane = this.dimensionDistance2;\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n if(this.APP.sldExistingWidth1.currentValue > 0){\n _dimensionDistane = this.dimensionDistance;\n }\n }\n\n let textStr = this.utils.getDimensionValue(this.APP.sldSpan.currentValue);\n\n let options : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldSpan.currentValue,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.SPAN,\n hasTextClone: false,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views },\n textCloneUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views },\n textCloneRotation: new Vector3(0, 0, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, 0, 0)\n }\n let dimSpan = this.dimensionPatiosPlanBottom.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN) as Dimension;\n if(!dimSpan){\n new Dimension(options);\n } else {\n dimSpan.update(options);\n }\n\n //Left over hang\n this.addOverhang(this.dimensionPatiosPlanBottom, UI.span / 2, UI.overhangLeft, views, \"Left\", 0, \"z\", DIMENSION_LABEL_TYPE.LEFT_OVERHANG);\n this.addOverhang(this.dimensionPatiosPlanBottom, UI.span / 2, UI.overhangRight, views, \"Right\", 0, \"z\", DIMENSION_LABEL_TYPE.RIGHT_OVERHANG);\n this.repositionDimension(this.dimensionPatiosPlanBottom, DIMENSION_LOCATION.PLAN_BOTTOM);\n }\n onDimDrag(event){\n this.utils.handlerDimDragEvent(event, this.startPos, this.startMatrix, this.startBayLength);\n this.startPos = event.object.position.clone();\n }\n onDimDragStart(event){\n this.startPos = event.object.position.clone();\n this.startMatrix = event.object.matrixWorld.clone();\n if(event.object.userData?.dimType === DIMENSION_LABEL_TYPE.BAY){\n let bayNum = event.object.userData.bayNum;\n this.startBayLength = UI.listBay[+bayNum].value;\n }\n }\n private drawDimensionPatiosPlanRight(){\n let views = [ { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS } ];\n\n let offsetX = -this.totalBaySize / 2;\n this.dimensionPatiosPlanRight.children = this.dimensionPatiosPlanRight.children.filter(el => \n el.userData?.groupType != DIMENSION_LABEL_TYPE.BAY\n || (el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY && el.userData?.bayNum < HomeComponent.ins.dialogEditBay.listBay.length)\n );\n \n for(let i = 0; i <= this.APP.dialogEditBay.listBay.length; i++){\n let b: IBay = {index: 0, value: 0, isCut: false};\n if(i < this.APP.dialogEditBay.listBay.length){\n b = this.APP.dialogEditBay.listBay[i];\n }\n\n if(i < this.APP.dialogEditBay.listBay.length){\n let textStr = this.utils.getDimensionValue(b.value);\n let options : AddDimensionOptions = {... this.options,\n lineLength: b.value,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(offsetX + b.value / 2, 0, 0),\n textPos: new Vector3(offsetX + b.value / 2, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.BAY,\n bayNum: i,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, position: { bottom: true }, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textRotation: new Vector3(0, - Math.PI, 0),\n fitZ: -10\n }\n let dimBay = this.dimensionPatiosPlanRight.children.find(el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY \n && el.userData?.bayNum == i\n ) as Dimension;\n if(!dimBay){\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n offsetX += b.value;\n }\n \n let offsetRight = this.totalBaySize / 2 ;\n let offsetLeft = this.totalBaySize / 2;\n\n this.addOverhang(this.dimensionPatiosPlanRight, offsetRight, UI.overhangFront, views, \"Right\", Math.PI,\"y\", DIMENSION_LABEL_TYPE.FRONT_OVERHANG);\n this.addOverhang(this.dimensionPatiosPlanRight, offsetLeft, UI.overhangBack, views, \"Left\", Math.PI, \"y\", DIMENSION_LABEL_TYPE.BACK_OVERHANG);\n\n this.repositionDimension(this.dimensionPatiosPlanRight, DIMENSION_LOCATION.PLAN_RIGHT);\n }\n private drawDimensionPatiosPlanLeft(){\n if(this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.NONE){\n this.dimensionPatiosPlanLeft.children = this.dimensionPatiosPlanLeft.children.filter(el => el.userData?.groupType != DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL)\n return;\n }\n\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n\n let offsetDimensionZ = this.APP.sldSpan.currentValue\n + this.APP.sldMultiSpan.currentValue\n + this.APP.sldFrontOverhang.currentValue\n - this.APP.sldExistingWidth1.currentValue / 2\n - this.APP.existingWallManager.geo_existingWallL1.width\n - this.APP.eaveManager.backOverhang\n - this.APP.sldLeftCutVertical.currentValue/2;\n\n let optionsRake : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldLeftCutVertical.currentValue,\n container: this.dimensionPatiosPlanLeft,\n views: views,\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL,\n }\n let dimRake = this.dimensionPatiosPlanLeft.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL) as Dimension;\n if(!dimRake){\n new Dimension(optionsRake);\n } else {\n dimRake.update(optionsRake);\n }\n\n //let offsetDimensionX = this.MANAGER.boundingBox.min.x - this.dimensionDistance2;\n this.dimensionPatiosPlanLeft.position.set(0, 0, offsetDimensionZ);\n this.repositionDimension(this.dimensionPatiosPlanLeft, DIMENSION_LOCATION.PLAN_LEFT);\n }\n private drawDimensionPatiosFrontBottom(){\n let dimOffsetY = -this.dimensionDistance2;\n this.dimensionPatiosFrontBottom.position.set(0,dimOffsetY,0);\n\n let views = [ { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosPlanBottom.children.forEach( groupDim => {\n groupDim.children.filter(c => c.userData.subtype != GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT).forEach(e => {\n let dim = e.clone();\n dim.userData['views'] = views;\n if(dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n dim.rotation.set(0,Math.PI,0);\n dim.userData['rotation'] = new Vector3(0,0,0);\n dim.userData['position'] = { ...e.userData.position, bottom: true };\n }\n this.dimensionPatiosFrontBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosFrontRight(){\n let views = [ { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS } ];\n\n let _dimensionDistane = this.dimensionDistance2;\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n if(this.APP.sldExistingWidth1.currentValue > 0){\n _dimensionDistane = this.dimensionDistance;\n }\n }\n \n \n let dimOffsetX = this.totalBaySize/2 + this.APP.patiosManager.patiosGroup.position.x + _dimensionDistane;\n let height = this.utils.getHeightByAngle(UI.eaveHeight + UI.braketHeight + this.geometryManager.getBeam().height, UI.span / 2, this.APP.sltRoofPitch.currentValue, 1);\n let dimOffsetY = height/2;\n\n let scaleLength = height/this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-dimOffsetY);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(dimOffsetY);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(height);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0,0,-Math.PI/2) };\n text.position.set(0,200,0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosFrontRight.add(line, cap1, cap2, text, ...this.utils.addArrowForLine(line));\n this.repositionDimension(this.dimensionPatiosFrontRight, DIMENSION_LOCATION.FRONT_RIGHT);\n }\n private drawDimensionPatiosLeftBottom(){\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z - (this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + this.APP.eaveManager.backOverhang - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0));\n \n this.dimensionPatiosLeftBottom.position.set(0,dimOffsetY,dimOffsetZ);\n\n let views = [ \n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n this.dimensionPatiosPlanRight.children.forEach( groupDim => {\n groupDim.children.forEach(e => {\n if(e.userData?.subType == GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT)\n return;\n \n let dim = e.clone();\n dim.userData['views'] = views;\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.rotation.set(0, 0, 0);\n dim.userData['views'] = [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }];\n dim.userData['rotation'] = new Vector3(0, 0, 0);\n dim.userData['position'] = {...e.userData.position, bottom: true}; \n }\n this.dimensionPatiosLeftBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosLeftRight() {\n let dimOffsetY = this.utils.getHeightByAngle(UI.eaveHeight + UI.braketHeight + this.geometryManager.getBeam().height, UI.span / 2, this.APP.sltRoofPitch.currentValue, 1);\n\n let views = [ \n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n let offsetLength = dimOffsetY;\n let scaleLength = offsetLength / this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength/2);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength/2);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }], rotation: new Vector3(-Math.PI / 2, 0, 0) };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosLeftRight.add(line, cap1, cap2, text, ...this.utils.addArrowForLine(line));\n\n this.repositionDimension(this.dimensionPatiosLeftRight, DIMENSION_LOCATION.LEFT_RIGHT);\n }\n private drawDimensionPatiosRightBottom(){\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z - (this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + this.APP.eaveManager.backOverhang - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0));\n \n this.dimensionPatiosRightBottom.position.set(0,dimOffsetY,dimOffsetZ);\n\n let views = [ { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosPlanRight.children.forEach(groupDim => {\n groupDim.children.forEach(e => {\n if(e.userData?.subType == GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT)\n return;\n \n let dim = e.clone();\n dim.userData['views'] = views;\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.userData['rotation'] = new Vector3(0, 0, 0);\n dim.userData['position'] = {...e.userData.position, bottom: true};\n }\n this.dimensionPatiosRightBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosRightLeft(){\n this.dimensionPatiosRightLeft.position.set(0,this.dimensionPatiosLeftRight.position.y,this.dimensionPatiosLeftRight.position.z);\n\n let views = [ { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosLeftRight.children.forEach(e => {\n let dim = e.clone();\n dim.userData['views'] = views;\n if(e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n dim.userData['rotation'] = new Vector3(Math.PI/2,0,0);\n dim.rotation.set(0,Math.PI,0);\n }\n this.dimensionPatiosRightLeft.add(dim);\n });\n\n this.repositionDimension(this.dimensionPatiosRightLeft, DIMENSION_LOCATION.RIGHT_LEFT);\n }\n private drawDimensionPatiosLeftLeft() { \n let dimOffsetY = this.APP.sldBuildingHeight.currentValue;\n let dimOffsetZ = this.APP.sldExistingWidth1.currentValue / 2 + 1800;\n\n this.dimensionPatiosLeftLeft.position.set(0, dimOffsetY / 2, -dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n let offsetLength = dimOffsetY;\n let scaleLength = offsetLength / this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength / 2);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength / 2);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }], rotation: new Vector3(Math.PI / 2, 0, 0) };\n text.position.set(0, 200, 0);\n\n this.dimensionPatiosLeftLeft.add(line, cap1, cap2, text, ...this.utils.addArrowForLine(line));\n }\n private drawDimensionPatiosRightRight(){\n let dimOffsetY = this.APP.sldBuildingHeight.currentValue;\n let dimOffsetZ = this.APP.sldExistingWidth1.currentValue / 2 + 1800;\n \n this.dimensionPatiosRightRight.position.set(0,dimOffsetY/2,-dimOffsetZ);\n\n let views = [ { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosLeftLeft.children.forEach(e => {\n if(e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n let dim = e.clone();\n dim.userData['views'] = views;\n dim.userData['rotation'] = new Vector3(-Math.PI/2,0,0);\n dim.rotation.set(0,Math.PI,0);\n dim.position.set(dim.position.x, -dim.position.y, dim.position.z);\n this.dimensionPatiosRightRight.add(dim);\n }\n });\n }\n\n private addOverhang(groupDim: Object3D, offset: number, overhangValue: number, views: any, side: string, rotateText: number, axis: string, labelType?: string) {\n if (overhangValue == 0){\n let dim = groupDim.children.find(el => el.userData?.groupType == labelType) as Dimension;\n if(dim){\n groupDim.remove(dim)\n }\n return;\n }\n\n let textStr = this.utils.getDimensionValue(overhangValue);\n\n let textRotation = new Vector3();\n let textUserData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, position: { overhang: true }};\n if (axis === \"z\") {\n textRotation.setZ(rotateText);\n textUserData['rotation'] = new Vector3(0, 0, -rotateText / 2);\n textUserData['position']['bottom'] = true;\n }\n else if (axis === \"y\") {\n textRotation.setY(rotateText);\n textUserData['rotation'] = new Vector3(0, -rotateText / 2, 0);\n }\n else if (axis === \"x\") {\n textRotation.setX(rotateText);\n textUserData['rotation'] = new Vector3(-rotateText / 2, 0, 0);\n }\n\n let linePos = new Vector3();\n if (side === \"Left\") {\n linePos.setX(-offset - overhangValue / 2);\n }\n else if (side === \"Right\") {\n linePos.setX(offset + overhangValue / 2);\n }\n let fitZ = 0;\n if(labelType){\n if(axis === 'z'){\n fitZ = 10;\n } else if(axis === 'y'){\n fitZ = -10;\n }\n }\n let options : AddDimensionOptions = {... this.options,\n lineLength: overhangValue,\n container: groupDim,\n views: views,\n linePos: linePos,\n textPos: linePos.clone().setY(linePos.y - 200),\n labelType: labelType ? labelType : null,\n fitZ: fitZ,\n textRotation: textRotation,\n textUserData: textUserData\n }\n let dim = groupDim.children.find(el => el.userData?.groupType == labelType) as Dimension;\n if(!dim){\n new Dimension(options);\n } else {\n dim.update(options)\n }\n }\n private getTextCover(textGeo: TextBufferGeometry, labelType: string, pos: Vector3, fitZ = 0, bayNum?: number){\n let textSize = new Vector3();\n textGeo.boundingBox.getSize(textSize)\n\n let textCover = new Mesh(new BoxBufferGeometry(textSize.x, textSize.y, textSize.z + fitZ))\n textCover.position.set(pos.x , pos.y, pos.z);\n textCover.userData = { type: GEOMETRY_TYPE.TEXT_COVER, labelType };\n if(bayNum !== undefined){\n textCover.userData['bayNum'] = bayNum;\n }\n textCover.material['opacity'] = 0;\n textCover.material['transparent'] = true;\n\n return textCover\n }\n\n public getOutlines(): Printing2DGeometry{\n let lsGeometries: Printing2DLine[] = [];\n let lsText: Print2DText[] = [];\n \n for(let dim of [\n ...this.dimensionPatiosPlanBottom.children,\n ...this.dimensionPatiosPlanRight.children,\n ...this.dimensionPatiosPlanLeft.children,\n ...this.dimensionPatiosFrontBottom.children,\n ...this.dimensionPatiosFrontRight.children,\n ...this.dimensionPatiosLeftBottom.children,\n ...this.dimensionPatiosLeftRight.children,\n ...this.dimensionPatiosRightBottom.children,\n ...this.dimensionPatiosRightLeft.children,\n ...this.dimensionPlanMiddle.children,\n ...this.dimensionPatiosPlanLeftOverHang.children,\n ...this.dimensionPatiosLeftLeft.children,\n ...this.dimensionPatiosRightRight.children,\n ...this.dimensionPlanMidleLeft.children\n\n ]){\n if(!dim.userData.views){\n // console.log(\"TEXT NO VIEW\", dim);\n continue;\n }\n\n if(dim.type == 'Group'){\n dim.children.forEach(el => {\n el.updateMatrix();\n let _clone = el.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(el.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n \n el.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(el.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(el.matrixWorld);\n\n let textRotation = el.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, el, pos, textRotation, points)\n })\n } else{\n dim.updateMatrix();\n let _clone = dim.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(dim.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n \n dim.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(dim.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(dim.matrixWorld);\n\n let textRotation = dim.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, dim, pos, textRotation, points)\n }\n }\n \n return { lines: lsGeometries, texts: lsText };\n }\n private getDimInfo(lsGeometries: Printing2DLine[], lsText: Print2DText[], dim: Object3D, pos: Vector3, textRotation: Vector3, points: Vector3[]){\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && dim.userData.views && dim.userData.value) {\n let box = new Box3().setFromObject(dim.parent);\n let startEnd = this.utils.getStartEndPoint(box);\n let line = new Line3(startEnd[0], startEnd[1]);\n\n let projectPoint = new Vector3();\n line.closestPointToPoint(pos, true, projectPoint);\n let _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(10));\n\n if(dim.userData.position?.bottom){\n if(dim.userData.position?.overhang){\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(180));\n }\n else{\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(120));\n }\n }\n else{\n if(dim.userData.position?.overhang){\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(100));\n }\n }\n\n let p = new Vector3().applyMatrix4(dim.matrixWorld);\n\n lsText.push({\n value: dim.userData.value,\n position: p,\n rotation: textRotation,\n views: dim.userData.views\n });\n\n \n }\n else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_LINE) {\n // this.scene.add(new LineSegments(new Geometry().setFromPoints(points), new LineBasicMaterial({color: new Color('red')})));\n\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_CAP) {\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n else if (dim.userData.type == \"Arrow\") {\n let geo = ((dim as Line).geometry as Geometry).clone();\n geo.applyMatrix4(dim.matrixWorld);\n lsGeometries.push({\n vertices: geo.vertices,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n }\n\n private getGeometryFromBufferGeometry(bufferGeo: BufferGeometry) {\n let points: Vector3[] = [];\n let verties = bufferGeo.getAttribute('position').array;\n for (let i = 0; i < verties.length; i += 3) {\n points.push(new Vector3(verties[i], verties[i + 1], verties[i+2]));\n }\n\n return new Geometry().setFromPoints(points);\n }\n public destroy(): void {\n this.unregisterEvent();\n this.unload();\n }\n\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldFrontOverhang,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sldExistingWallHeight,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sldFlyOverBracketHeight,\n this.APP.sltRoofPitch\n ];\n\n this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n \n //this.APP.sldSpan.addAction(this.eventHandleId);\n //this.APP.sldMultiSpan.addAction(this.eventHandleId);\n //this.APP.sldFrontOverhang.addAction(this.eventHandleId);\n //this.APP.sldExistingWidth1.addAction(this.eventHandleId);\n //this.APP.sldExistingWidth2.addAction(this.eventHandleId);\n //this.APP.sldExistingLength.addAction(this.eventHandleId);\n //this.APP.sldExistingLength2.addAction(this.eventHandleId);\n //this.APP.sltExistingType.addAction(this.eventHandleId);\n //this.APP.sldExistingWallHeight.addAction(this.eventHandleId);\n //this.APP.dialogEditBay.addAction(this.eventHandleId);\n\n //this.APP.sldLeftOverhang.addAction(this.eventHandleId);\n //this.APP.sldRightOverhang.addAction(this.eventHandleId);\n //this.APP.sldBackOverhang.addAction(this.eventHandleId);\n\n //this.APP.sldFlyOverBracketHeight.addAction(this.eventHandleId);\n //this.APP.sltRoofPitch.addAction(this.eventHandleId);\n }\n private unregisterEvent(): void{\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.APP.sldSpan.removeAction(this.eventHandleId);\n //this.APP.sldMultiSpan.removeAction(this.eventHandleId);\n //this.APP.sldFrontOverhang.removeAction(this.eventHandleId);\n //this.APP.sldExistingWidth1.removeAction(this.eventHandleId);\n //this.APP.sldExistingWidth2.removeAction(this.eventHandleId);\n //this.APP.sldExistingLength.removeAction(this.eventHandleId);\n //this.APP.sldExistingLength2.removeAction(this.eventHandleId);\n //this.APP.sltExistingType.removeAction(this.eventHandleId);\n //this.APP.sldExistingWallHeight.removeAction(this.eventHandleId);\n //this.APP.dialogEditBay.removeAction(this.eventHandleId);\n\n //this.APP.sldLeftOverhang.removeAction(this.eventHandleId);\n //this.APP.sldRightOverhang.removeAction(this.eventHandleId);\n //this.APP.sldBackOverhang.removeAction(this.eventHandleId);\n\n //this.APP.sldFlyOverBracketHeight.removeAction(this.eventHandleId);\n //this.APP.sltRoofPitch.removeAction(this.eventHandleId);\n }\n\n\n public uiChanged(preVal: number, curVal: number): void {\n this.draw();\n }\n private calulateBoundingBox(){\n this.APP.scene.remove(...this.APP.scene.children.filter(c => c.userData.type == 'BOX_HELPER_'));\n let patiosBox = this.MANAGER.boundingBox;\n \n let planRightBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosPlanRight);\n planRightBox.min.x = patiosBox.max.x;\n planRightBox.max.x = patiosBox.max.x + 500;\n planRightBox.max.y = 10000;\n \n let planLeftBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosPlanLeft);\n planLeftBox.min.x = patiosBox.min.x - 500;\n planLeftBox.max.x = patiosBox.min.x;\n planLeftBox.max.y = 10000;\n\n let planBottomBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosPlanBottom);\n let planBottomBoxWidth = planBottomBox.max.z - planBottomBox.min.z;\n planBottomBox.min.z = patiosBox.max.z;\n planBottomBox.max.z = patiosBox.max.z + planBottomBoxWidth;\n planBottomBox.max.y = 10000;\n \n let objs = [];\n\n objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && c.userData.position?.width1 || c.userData.position?.width2 || c.userData.position?.length2)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL)\n );\n\n // for(let e of objs){\n // let boxModelHelper = new BoxHelper(e);\n // boxModelHelper.userData = {type: 'BOX_HELPER_'};\n // this.scene.add(boxModelHelper);\n // }\n\n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(planRightBox.intersectsBox(objBox)){\n intersectBox = true;\n planRightBox.translate(new Vector3(100,0,0))\n }\n if(planLeftBox.intersectsBox(objBox)){\n intersectBox = true;\n planLeftBox.translate(new Vector3(-100,0,0))\n }\n if(planBottomBox.intersectsBox(objBox)){\n intersectBox = true;\n planBottomBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(planRightBox);\n // boxHelper.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper);\n\n // let boxHelper2 = new Box3Helper(planLeftBox);\n // boxHelper2.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper2);\n\n // let boxHelper3 = new Box3Helper(planBottomBox);\n // boxHelper3.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper3);\n \n return { left: planLeftBox.min.x, right: planRightBox.max.x, front: planBottomBox.max.z };\n }\n private repositionDimension(dimension, location, extraDistance = 0){\n this.APP.scene.remove(...this.APP.scene.children.filter(c => c.userData.type == location));\n this.APP.scene.remove(...this.APP.scene.children.filter(c => c.userData.type == location));\n\n let patiosBox = this.MANAGER.boundingBox;\n \n if(location == DIMENSION_LOCATION.FRONT_RIGHT){\n let height = this.utils.getHeightByAngle(UI.eaveHeight + UI.braketHeight + this.geometryManager.getBeam().height, UI.span / 2, this.APP.sltRoofPitch.currentValue, 1);\n let dimOffsetY = height/2;\n dimension.position.setY(dimOffsetY);\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.max.x;\n dimBox.max.x = patiosBox.max.x + 500;\n dimBox.max.z = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && !c.userData.position.length1 && !c.userData.position.length2)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && !c.userData.position.length1 && !c.userData.position.length2)\n );\n\n if(this.APP.sldExistingWidth2.currentValue > 0){\n objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && !c.userData.position.length1)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && !c.userData.position.length1)\n );\n }\n \n // for(let e of objs){\n // let boxModelHelper = new BoxHelper(e);\n // boxModelHelper.userData = {type: 'BOX_HELPER_'};\n // this.scene.add(boxModelHelper);\n // }\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(100,0,0))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n //let dimOffsetY = this.APP.sldBuildingHeight.currentValue / 2;\n dimension.position.setX(dimBox.max.x + extraDistance);\n }\n else if(location == DIMENSION_LOCATION.PLAN_LEFT){\n // let offsetDimensionZ = this.APP.sldSpan.currentValue\n // + this.APP.sldMultiSpan.currentValue\n // + this.APP.sldFrontOverhang.currentValue\n // - this.APP.sldExistingWidth1.currentValue / 2\n // - this.APP.existingWallManager.geo_existingWallL1.width\n // - this.APP.eaveManager.backOverhang;\n // dimension.position.setZ(offsetDimensionZ);\n\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.min.x - 500;\n dimBox.max.x = patiosBox.min.x;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF || c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(-100,0,0))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setX(dimBox.min.x + extraDistance);\n dimension.translateX(this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + this.APP.eaveManager.backOverhang - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0));\n }\n else if(location == DIMENSION_LOCATION.PLAN_RIGHT){\n let offsetDimensionZ = this.totalBaySize / 2\n - this.APP.sldExistingWidth1.currentValue / 2\n - this.APP.existingWallManager.geo_existingWallL1.width\n - this.APP.eaveManager.backOverhang;\n dimension.position.setZ(offsetDimensionZ);\n\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.max.x;\n dimBox.max.x = patiosBox.max.x + 500;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL)\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(100,0,0))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setX(dimBox.max.x + extraDistance);\n dimension.translateX(this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + this.APP.eaveManager.backOverhang - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0));\n }\n else if(location == DIMENSION_LOCATION.PLAN_BOTTOM){\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL)\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setZ(dimBox.max.z + extraDistance);\n\n if (this.APP.sltExistingType.currentValue == 1) {\n dimension.position.setX(this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0)/2)\n } else if(this.APP.sltExistingType.currentValue == 2) {\n dimension.position.setX( -(this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0)/2))\n } else {\n dimension.position.setX(0)\n }\n }\n else if(location == DIMENSION_LOCATION.LEFT_RIGHT){\n let dimOffsetY = this.utils.getHeightByAngle(UI.eaveHeight + UI.braketHeight + this.geometryManager.getBeam().height, UI.span / 2, this.APP.sltRoofPitch.currentValue, 1);\n dimension.position.setY(dimOffsetY / 2);\n\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n dimBox.min.x = -10000;\n dimBox.max.x = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && c.userData.position?.left)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && c.userData.position?.left)\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setZ(dimBox.max.z + extraDistance);\n }\n else if(location == DIMENSION_LOCATION.RIGHT_LEFT){\n let dimOffsetY = this.utils.getHeightByAngle(UI.eaveHeight + UI.braketHeight + this.geometryManager.getBeam().height, UI.span / 2, this.APP.sltRoofPitch.currentValue, 1);\n dimension.position.setY(dimOffsetY / 2);\n\n let dimBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosLeftRight);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n \n dimBox.min.x = -10000;\n dimBox.max.x = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && c.userData.position?.right)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && c.userData.position?.right)\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setZ(dimBox.max.z + extraDistance);\n }\n }\n}\n","import { HomeComponent as AppComponent } from \"../../containers/home/home.component\";\nimport { ColumnAndBeamManager } from \"./column-and-beam.manager\";\nimport { RoofManager } from \"./roof.manager\";\nimport { Group, Box3, Vector3, Box3Helper } from \"three\";\nimport { GEOMETRY_CATEGORY, CONFIG, GEOMETRY_TYPE } from \"src/app/app.config\";\nimport { PatiosManager } from \"../patios.manager\";\nimport { Printing2DGeometry } from \"../models\";\nimport { DimensionManager } from \"./dimension.manager\";\nimport {\n EXISTING_BUILDING_CONFIG,\n CUTOUT_ENABLE,\n RAKECUT_TYPE,\n BUILDING_SIDE,\n} from \"src/app/app.constants\";\nimport { environment } from \"src/environments/environment\";\nimport { UI } from \"../ui\";\n// import { environment } from 'src/environments/environment';\n\nexport class PatiosGableFBFlyOverManager implements PatiosManager {\n public columnAndBeamManager: ColumnAndBeamManager;\n public roofManager: RoofManager;\n private APP: AppComponent;\n public patiosGroup: Group;\n public boundingBox: Box3;\n private updateEventHandle: any;\n public dimensionManager: DimensionManager;\n private controlsToRegisterEvent: Array;\n public ignoreBayEvent: boolean = false;\n private deferHandle;\n private deferTimeout = EXISTING_BUILDING_CONFIG.CUTOUT_DEFFER_TIME_OUT;\n public patiosWidth: number;\n public patiosLength: number;\n public get cutoutCondition(): boolean {\n return (\n [this.APP.sldSpan, this.APP.sldMultiSpan, this.APP.sldFrontOverhang]\n .map((x) => x.currentValue)\n .reduce((a, b) => a + b, 0) -\n this.APP.sldExistingWidth1.currentValue >=\n EXISTING_BUILDING_CONFIG.CUTOUT_ALLOW\n );\n }\n public get rakecutCondition(): boolean {\n this.patiosWidth =\n this.APP.dialogEditBay.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n this.patiosLength =\n this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue;\n\n return false;\n }\n\n public firstLoad = true;\n\n constructor(app: AppComponent) {\n this.APP = app;\n\n this.patiosGroup = new Group();\n this.patiosGroup.userData = {\n isGroup: true,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n app.scene.add(this.patiosGroup);\n\n this.roofManager = new RoofManager(app, this);\n this.columnAndBeamManager = new ColumnAndBeamManager(app, this);\n this.dimensionManager = new DimensionManager(app, this);\n\n this.registerEvents();\n }\n\n load(): Promise {\n return Promise.all([\n this.roofManager.optimize(),\n this.columnAndBeamManager.optimize(),\n this.dimensionManager.optimize(),\n ]).then(() => {\n this.roofManager.load();\n this.columnAndBeamManager.load();\n this.dimensionManager.load();\n });\n }\n loadBracket(bracketQuantity: number): void {\n this.columnAndBeamManager.numberOfBracketsBack = bracketQuantity;\n this.columnAndBeamManager.addPostOrBracketBack();\n }\n loadBracketCutout(bracketQuantity: number): void {\n this.columnAndBeamManager.numberOfBracketCutout = bracketQuantity;\n this.columnAndBeamManager.addPostOrBracketBackCutout();\n }\n loadSideGableBracket(bracketQuantity: number): void {\n this.columnAndBeamManager.numberOfBracketsSide = bracketQuantity;\n this.columnAndBeamManager.addBraketOrBeamSideRoof();\n }\n getOutlines(): Printing2DGeometry {\n let dimensionOutline = this.dimensionManager.getOutlines();\n return {\n lines: [\n ...this.columnAndBeamManager.getSection().lines,\n ...this.roofManager.getOutLines().lines,\n ...dimensionOutline.lines,\n ],\n texts: dimensionOutline.texts,\n };\n }\n public destroy(): void {\n this.columnAndBeamManager.destroy();\n this.roofManager.destroy();\n this.dimensionManager.destroy();\n this.unRegisterEvent();\n }\n registerEvents() {\n this.updateEventHandle = this.updateDefer.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sltCutOut,\n this.APP.sldFrontOverhang,\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltColourBarge,\n this.APP.sltColourGutter,\n this.APP.sltColourDownpipe,\n this.APP.sltColourRoof,\n this.APP.sldSpan,\n this.APP.sldExistingWallHeight,\n this.APP.sldEaveWidth,\n this.APP.sldFasciaDepth,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldFlyOverBracketHeight,\n this.APP.sltColourBeam,\n this.APP.sltColourPost,\n this.APP.sltColourBracket,\n this.APP.sltColourFasciaBracket,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n this.APP.sltLeftCutType,\n this.APP.sldLeftCutVertical,\n this.APP.sldLeftCutHorizontal,\n this.APP.sltRightCutType,\n this.APP.sldRightCutVertical,\n this.APP.sldRightCutHorizontal,\n this.APP.sltBeamLayoutShow,\n this.APP.sltPanelDirection,\n this.APP.sltPanelDirectionShow,\n this.APP.sltExistingRoofPitch,\n this.APP.btnTurnOnPanel,\n ];\n this.controlsToRegisterEvent.forEach((c) => {\n c.addAction(this.updateEventHandle);\n });\n }\n unRegisterEvent() {\n this.controlsToRegisterEvent.forEach((c) =>\n c.removeAction(this.updateEventHandle)\n );\n }\n\n updateDefer(previousValue: number, currentValue: number) {\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES ||\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE ||\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE\n ) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => {\n this.update(previousValue, currentValue);\n }, this.deferTimeout);\n } else {\n this.update(previousValue, currentValue);\n }\n }\n\n update(preVal: number, curVal: number) {\n let totalBaySize = this.APP.dialogEditBay.totalBaySize;\n this.patiosLength = totalBaySize + UI.overhangFront;\n this.patiosWidth = UI.span + UI.overhangLeft + UI.overhangRight;\n\n let diff = this.APP.sldExistingLength.currentValue - UI.span;\n\n let extraWallWidth =\n this.APP.existingWallManager.geo_existingWallW1.width +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n this.patiosGroup.position.setX(\n -diff / 2 -\n this.APP.sldExistingLength2.currentValue -\n extraWallWidth\n );\n } else {\n this.patiosGroup.position.setX(\n -diff / 2 - this.APP.sldExistingLength2.currentValue\n );\n }\n } else {\n this.patiosGroup.position.setX(-diff / 2 - extraWallWidth);\n }\n } else if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n this.patiosGroup.position.setX(\n diff / 2 + this.APP.sldExistingLength2.currentValue + extraWallWidth\n );\n } else {\n this.patiosGroup.position.setX(\n diff / 2 + this.APP.sldExistingLength2.currentValue\n );\n }\n } else {\n this.patiosGroup.position.setX(diff / 2 + extraWallWidth);\n }\n } else {\n this.patiosGroup.position.setX(0);\n }\n\n this.patiosGroup.position.setZ(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n this.APP.eaveManager.backOverhang -\n (this.columnAndBeamManager.geo_bracket?.width || 0)\n );\n\n Promise.all([\n this.roofManager.load(),\n this.columnAndBeamManager.load(),\n ]).then(() => {\n this.boundingBox = this.getPatiosBox();\n this.dimensionManager.draw();\n });\n }\n public getPatiosBox(): Box3 {\n let left = -UI.span / 2 - UI.overhangLeft;\n let right = UI.span / 2 + UI.overhangRight;\n let front =\n this.APP.dialogEditBay.totalBaySize + UI.overhangFront + UI.overhangBack;\n let back = 0;\n let height = this.APP.sldBuildingHeight.currentValue;\n let extraOffsetZ =\n this.APP.existingWallManager.geo_existingWallL1.width +\n this.APP.eaveManager.backOverhang;\n\n let box = new Box3();\n box = box.expandByPoint(new Vector3(left, 0, front));\n box = box.expandByPoint(new Vector3(right, height, back));\n box.translate(new Vector3(0, 0, -extraOffsetZ));\n\n if (this.APP.sltExistingType.currentValue == 1) {\n let diff = (this.APP.sldExistingLength.currentValue - UI.span) / 2;\n box.translate(new Vector3(-diff, 0, 0));\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n box.translate(new Vector3(this.APP.sldLeftOverhang.currentValue, 0, 0));\n\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n box.translate(\n new Vector3(-this.APP.sldExistingLength2.currentValue, 0, 0)\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 2) {\n let diff = (this.APP.sldExistingLength.currentValue - UI.span) / 2;\n box.translate(new Vector3(diff, 0, 0));\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n box.translate(new Vector3(-this.APP.sldRightOverhang.currentValue, 0, 0));\n\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n box.translate(\n new Vector3(this.APP.sldExistingLength2.currentValue, 0, 0)\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 3) {\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n }\n\n // if (!environment.production) {\n // this.APP.scene.remove(...this.APP.scene.children.filter(o => o.userData.type == 'BOXHELPER'));\n // let boxHelper = new Box3Helper(box);\n // boxHelper.userData = { type: \"BOXHELPER\" };\n // this.APP.scene.add(boxHelper);\n // }\n\n return box;\n }\n}\n","\nimport { Mesh, Vector3, Material, Plane, Group, BufferGeometry, Geometry, BoxBufferGeometry, MeshLambertMaterial, Matrix4, Object3D, LineSegments, LineBasicMaterial, Box3, Box3Helper, Color } from \"three\";\nimport { Util } from \"../utils\";\nimport { GEOMETRY_TYPE, GEOMETRY_CATEGORY } from '../../app.config';\n// import { AppComponent } from \"../../app.component\";\nimport { HomeComponent as AppComponent } from '../../containers/home/home.component';\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport { GeometryInfo, Print2DView, ViewType, LineType, Printing2DLine, Printing2DGeometry } from '../models';\nimport { PatiosGableFBFlyOverManager } from '.';\nimport { CSG } from 'three-csg-ts';\nimport { EXISTING_BUILDING_CONFIG, RAKECUT_TYPE, EXISTING_BUILDING_CONFIG as CONST, BUILDING_SIDE, CUTOUT_ENABLE, PANEL_DIRECTION, FIT_FLYOVER_BRAKET_ON_ROOF } from 'src/app/app.constants';\nimport { UI } from \"../ui\";\nimport HighLightBox from \"src/app/models/HighlightBox\";\n\nexport class RoofManager {\n private scene: Group;\n private APP: AppComponent;\n private MANAGER: PatiosGableFBFlyOverManager;\n private material: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private geo_RoofPanel: GeometryInfo;\n private geo_roofPanelBase: GeometryInfo;\n private gutterRakecutLeftInfo: GeometryInfo;\n private gutterRakecutRightInfo: GeometryInfo;\n private geo_roofPanelBargeCappingLeft: GeometryInfo;\n private geo_roofPanelBargeCappingRight: GeometryInfo;\n private geo_roofPanelBargeCappingBack: GeometryInfo;\n private geo_bargeCutoutLeftHor: GeometryInfo;\n private geo_bargeCutoutRightHor: GeometryInfo;\n private geo_gutterBack: GeometryInfo;\n private zFlashingGeo: GeometryInfo;\n private zFlashingRakecutRightGeo: GeometryInfo;\n private geo_gutterCap: GeometryInfo;\n public ridgeGeo: GeometryInfo;\n\n private geo_rakecutLeft: BoxBufferGeometry;\n private geo_rakecutRight: BoxBufferGeometry;\n private mesh_rakecutLeft: Mesh;\n private mesh_rakecutRight: Mesh;\n private csg_rakecutLeft: CSG;\n private csg_rakecutRight: CSG;\n\n private roofGroupRight: Group;\n private roofGroupLeft: Group;\n\n private objectSizeChangedHandle: any;\n\n private totalBaySize: number;\n private extraOffsetZ: number;\n\n private controlsToRegisterEvent2: Array;\n\n private mesh_CutoutLeft: Mesh;\n private csg_cutoutLeft: CSG;\n private mesh_CutoutRight: Mesh;\n private csg_cutoutRight: CSG;\n private geo_cutoutLeft: BoxBufferGeometry;\n private geo_cutoutRight: BoxBufferGeometry;\n\n private geoCutGutter: BoxBufferGeometry;\n private meshCutGutterLeft1: Mesh;\n private csgCutGutterLeft1: CSG;\n private meshCutGutterLeft2: Mesh;\n private csgCutGutterLeft2: CSG;\n\n private meshCutGutterRight1: Mesh;\n private csgCutGutterRight1: CSG;\n private meshCutGutterRight2: Mesh;\n private csgCutGutterRight2: CSG\n \n private roofWidth: number;\n private roofLength: number;\n\n private deferHandle;\n private deferTimeout = EXISTING_BUILDING_CONFIG.CUTOUT_DEFFER_TIME_OUT;\n\n constructor(app: AppComponent, flyOverManager: PatiosGableFBFlyOverManager) {\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.APP = app;\n this.MANAGER = flyOverManager;\n this.scene = new Group();\n flyOverManager.patiosGroup.add(this.scene)\n this.material = MaterialManager.Instance().ROOF;\n\n this.registerEvent();\n }\n\n\n public optimize(): Promise {\n return new Promise((resolve) => {\n\n this.geo_RoofPanel = this.geometryManager.getRoofSheetPanel();\n this.geo_RoofPanel.geometry\n .translate(-this.geo_RoofPanel.width / 2 + 10, this.geo_RoofPanel.height / 2 -1, this.geo_RoofPanel.length / 2)\n .rotateY(Math.PI / 2);\n\n this.geo_roofPanelBase = this.geometryManager.getRoofBase();\n this.geo_roofPanelBase.geometry\n .translate(-this.geo_roofPanelBase.width / 2,\n this.geo_roofPanelBase.height / 2,\n this.geo_roofPanelBase.length / 2)\n .rotateY(Math.PI / 2);\n\n this.zFlashingGeo = this.geometryManager.getZFlashing();\n this.zFlashingGeo.geometry.translate(0, -3, 0).rotateY(Math.PI / 2);\n\n this.zFlashingRakecutRightGeo = this.geometryManager.getZFlashing();\n this.zFlashingRakecutRightGeo.geometry.translate(-this.zFlashingRakecutRightGeo.length, -3, 0);\n\n //Barge capping\n\n this.geo_roofPanelBargeCappingLeft = this.geometryManager.getBarge();\n this.geo_roofPanelBargeCappingLeft.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.geo_roofPanelBargeCappingLeft.length / 2, this.geo_roofPanelBargeCappingLeft.height / 2 - (this.APP.sltDripBarge.currentValue ? 9 : 1), -this.geo_roofPanelBargeCappingLeft.width / 2 + 3);\n\n this.geo_roofPanelBargeCappingRight = this.geometryManager.getBarge();\n this.geo_roofPanelBargeCappingRight.geometry\n .rotateY(Math.PI / 2)\n .translate(this.geo_roofPanelBargeCappingRight.length / 2, this.geo_roofPanelBargeCappingRight.height / 2 - (this.APP.sltDripBarge.currentValue ? 9 : 1), this.geo_roofPanelBargeCappingRight.width / 2 - 3);\n\n this.geo_roofPanelBargeCappingBack = this.geometryManager.getBarge();\n this.geo_roofPanelBargeCappingBack.geometry\n .rotateY(Math.PI)\n .translate(this.geo_roofPanelBargeCappingBack.length / 2, this.geo_roofPanelBargeCappingBack.height / 2 - (this.APP.sltDripBarge.currentValue ? 9 : 1), this.geo_roofPanelBargeCappingBack.width / 2 - 3);\n\n //Gutter\n this.geo_gutterBack = this.geometryManager.getGutter();\n this.geo_gutterBack.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.geo_gutterBack.length / 2, -20, this.geo_gutterBack.width / 2);\n\n this.gutterRakecutLeftInfo = this.geometryManager.getGutter();\n this.gutterRakecutLeftInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.gutterRakecutLeftInfo.length / 2, -20, this.gutterRakecutLeftInfo.width / 2);\n \n this.gutterRakecutRightInfo = this.geometryManager.getGutter();\n this.gutterRakecutRightInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(-this.gutterRakecutRightInfo.length / 2, -20, this.gutterRakecutRightInfo.width / 2);\n\n //Gutter cap\n this.geo_gutterCap = this.geometryManager.getGuterEndCap();\n this.geo_gutterCap.geometry\n .rotateY(-Math.PI / 2)\n .translate(0, -20, this.geo_gutterCap.length / 2);\n\n this.geo_cutoutLeft = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_cutoutLeft.translate(-500, 500, -500);\n this.geo_cutoutRight = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_cutoutRight.translate(500, 500, -500);\n\n this.geo_rakecutLeft = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_rakecutLeft.translate(-500, 500, 500);\n this.geo_rakecutRight = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_rakecutRight.translate(500, 500, 500);\n\n this.geoCutGutter = new BoxBufferGeometry(500, 10000, 500);\n this.geoCutGutter.translate(0, 0, -250);\n //Barge cutout left\n this.geo_bargeCutoutLeftHor = this.geometryManager.getBarge();\n this.geo_bargeCutoutLeftHor.geometry\n .rotateY(Math.PI / 2)\n .translate(-this.geo_bargeCutoutLeftHor.length / 2, this.geo_bargeCutoutLeftHor.height / 2 - (this.APP.sltDripBarge.currentValue ? 9 : 1), this.geo_bargeCutoutLeftHor.width / 2);\n\n //Barge cutout right\n this.geo_bargeCutoutRightHor = this.geometryManager.getBarge();\n this.geo_bargeCutoutRightHor.geometry\n .rotateY(Math.PI / 2)\n .translate(this.geo_bargeCutoutRightHor.length / 2, this.geo_bargeCutoutRightHor.height / 2 - (this.APP.sltDripBarge.currentValue ? 9 : 1), this.geo_bargeCutoutRightHor.width / 2);\n\n this.ridgeGeo = this.geometryManager.getRidge();\n this.ridgeGeo.geometry.translate(- this.ridgeGeo.width / 2, -this.ridgeGeo.height / 2, 0);\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve) => {\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PATIOS));\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.SHEET_OUTLINE));\n\n //test\n //this.scene.remove(...this.scene.children.filter(x => x.userData.type == 'HELPER'));\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == 'RAKECUT'));\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == 'CUTGUTTER'));\n this.extraOffsetZ = this.APP.existingWallManager.geo_existingWallL1.width + this.APP.eaveManager.backOverhang;\n this.totalBaySize = this.APP.dialogEditBay.totalBaySize;\n\n this.addRoofLeft();\n this.addRoofRight();\n this.addCutout();\n\n let offsetFront = this.totalBaySize + UI.overhangFront - UI.existingWidth1 / 2 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n let offsetBack = - UI.overhangBack - UI.existingWidth1 / 2 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n\n let clipingPlaneFront = new Plane(new Vector3(0, 0, -1), offsetFront);\n let clipingPlaneBack = new Plane(new Vector3(0, 0, 1), -offsetBack);\n \n\n this.material.clippingPlanes = [clipingPlaneFront, clipingPlaneBack];\n MaterialManager.Instance().ROOF_BASE.clippingPlanes = [clipingPlaneFront, clipingPlaneBack];\n let width = this.totalBaySize + UI.overhangBack + UI.overhangFront;\n this.roofWidth = width;\n this.roofLength = UI.span / 2 + UI.overhangRight;\n let roofSheetingCount = Math.ceil(width / this.geo_RoofPanel.width);\n let offsetZ = - UI.overhangBack;\n\n let panelDirectionOfset = 1;\n if(this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT){\n offsetZ = this.totalBaySize + UI.overhangFront - this.geo_RoofPanel.width;\n panelDirectionOfset = -1;\n }\n else if(this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.LEFT_TO_RIGHT){\n offsetZ = - UI.overhangBack;\n }\n\n if (this.APP.sltCutOut.currentValue == 1 && this.APP.sltExistingType.currentValue == 1 && this.MANAGER.cutoutCondition) {\n for (let index = 0; index < roofSheetingCount; index++) {\n let last = index == roofSheetingCount - 1;\n\n this.addRoofSheetingRight(offsetZ, [this.csg_cutoutLeft]);\n this.addRoofSheetingBaseRight(offsetZ, last, [this.csg_cutoutLeft]);\n\n this.addRoofSheetingLeft(offsetZ, [this.csg_cutoutLeft]);\n this.addRoofSheetingBaseLeft(offsetZ, last, [this.csg_cutoutLeft]);\n\n offsetZ += this.geo_RoofPanel.width * panelDirectionOfset;\n }\n }\n else if (this.APP.sltCutOut.currentValue == 1 && this.APP.sltExistingType.currentValue == 2 && this.MANAGER.cutoutCondition) {\n for (let index = 0; index < roofSheetingCount; index++) {\n let last = index == roofSheetingCount - 1;\n\n this.addRoofSheetingRight(offsetZ, [this.csg_cutoutRight]);\n this.addRoofSheetingBaseRight(offsetZ, last, [this.csg_cutoutRight]);\n\n this.addRoofSheetingLeft(offsetZ, [this.csg_cutoutRight]);\n this.addRoofSheetingBaseLeft(offsetZ, last, [this.csg_cutoutRight]);\n\n offsetZ += this.geo_RoofPanel.width * panelDirectionOfset;\n }\n }\n else if (this.APP.sltCutOut.currentValue == 1 && this.APP.sltExistingType.currentValue == 3 && this.MANAGER.cutoutCondition) {\n for (let index = 0; index < roofSheetingCount; index++) {\n let last = index == roofSheetingCount - 1;\n\n\n this.addRoofSheetingRight(offsetZ, [this.csg_cutoutLeft, this.csg_cutoutRight]);\n this.addRoofSheetingBaseRight(offsetZ, last, [this.csg_cutoutLeft, this.csg_cutoutRight]);\n\n this.addRoofSheetingLeft(offsetZ, [this.csg_cutoutLeft, this.csg_cutoutRight]);\n this.addRoofSheetingBaseLeft(offsetZ, last, [this.csg_cutoutLeft, this.csg_cutoutRight]);\n\n offsetZ += this.geo_RoofPanel.width * panelDirectionOfset;\n }\n }\n else {\n for (let index = 0; index < roofSheetingCount; index++) {\n let last = index == roofSheetingCount - 1;\n\n this.addRoofSheetingRight(offsetZ, null);\n this.addRoofSheetingBaseRight(offsetZ, last, []);\n\n this.addRoofSheetingLeft(offsetZ, null);\n this.addRoofSheetingBaseLeft(offsetZ, last, []);\n\n offsetZ += this.geo_RoofPanel.width * panelDirectionOfset;\n }\n }\n\n this.addZFlashingRight();\n this.addZFlashingLeft();\n\n this.addBargeCappingRight();\n this.addBargeCappingLeft();\n\n this.addGutterRight();\n this.addGutterLeft();\n\n this.addRidgeCapping();\n\n this.showPanelOutline();\n\n this.scene.visible = UI.showRoof\n\n resolve();\n });\n }\n private totalHeightFromEaveHeightToTopOfExistingRoof(){\n const height = \n this.geometryManager.EAVE.EAVE.height \n + UI.fasciaDepth \n + UI.eaveWidth * this.utils.tan(UI.existingRoofPitch) \n + this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.height / this.utils.cos(UI.existingRoofPitch)\n \n return height\n }\n private totalHeightFromEaveHeightToTopOfFlyoverBraket(){\n const height = this.totalHeightFromEaveHeightToTopOfExistingRoof() + UI.braketHeight - FIT_FLYOVER_BRAKET_ON_ROOF;\n\n return height\n }\n private addCutout() {\n if (this.APP.sltCutOut.currentValue == 1) {\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == 'CUTOUT'));\n\n let offsetX = this.APP.sldExistingLength.currentValue / 2 + this.APP.existingWallManager.geo_existingWallL2.width + 100;\n let offsetY = 0;\n let offsetZ = this.APP.sldExistingWidth1.currentValue / 2 - this.APP.existingWallManager.geo_existingWallL2.width - this.APP.sldBackOverhang.currentValue;\n\n let scaleX = (this.APP.sldExistingLength2.currentValue + 5000) / 1000;\n if (scaleX == 0) scaleX = 1;\n let scaleY = (this.APP.sldExistingWallHeight.currentValue + 5000) / 1000;\n let scaleZ = (this.APP.sldExistingWidth1.currentValue + this.APP.sldBackOverhang.currentValue + 5000) / 1000;\n if (scaleZ == 0) scaleZ = 1;\n\n if (this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3) {\n this.mesh_CutoutLeft = new Mesh(this.geo_cutoutLeft, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.mesh_CutoutLeft.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: 'CUTOUT' };\n\n this.mesh_CutoutLeft.position.set(-offsetX, offsetY, offsetZ);\n this.mesh_CutoutLeft.scale.set(scaleX, scaleY, scaleZ);\n\n // this.APP.scene.add(this.mesh_CutoutLeft);\n\n this.mesh_CutoutLeft.updateMatrix();\n this.csg_cutoutLeft = CSG.fromMesh(this.mesh_CutoutLeft);\n }\n if (this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3) {\n this.mesh_CutoutRight = new Mesh(this.geo_cutoutRight, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.mesh_CutoutRight.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: 'CUTOUT' };\n\n this.mesh_CutoutRight.position.set(offsetX, offsetY, offsetZ);\n this.mesh_CutoutRight.scale.set(scaleX, scaleY, scaleZ);\n\n // this.APP.scene.add(this.mesh_CutoutRight);\n\n this.mesh_CutoutRight.updateMatrix();\n this.csg_cutoutRight = CSG.fromMesh(this.mesh_CutoutRight);\n }\n }\n }\n public getOutLines(): Printing2DGeometry {\n\n let objs = this.roofGroupRight.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL\n || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ).concat(...this.roofGroupLeft.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ));\n\n let gutterGroupObjs = this.roofGroupRight.children.filter(o => o.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS)\n .concat(...this.roofGroupLeft.children.filter(o => o.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS));\n let gutterObjs: Object3D[] = [];\n for(let group of gutterGroupObjs){\n gutterObjs.push(...group.children);\n }\n objs = [...objs, ...gutterObjs];\n\n let lsGeometries: Printing2DLine[] = [];\n\n let offsetFront = this.totalBaySize + UI.overhangFront - UI.existingWidth1 / 2 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n let offsetBack = - UI.overhangBack - UI.existingWidth1 / 2 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n\n let roofClipingPlaneLeft = new Plane(new Vector3(0, 0, -1), offsetFront);\n let roofClipingPlaneRight = new Plane(new Vector3(0, 0, 1), -offsetBack);\n\n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale((o as Mesh), 60);\n\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n outlineGeo.translate(0, 5000, 0);\n\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL) {\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneRight);\n }\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE) {\n outlineGeo = this.utils.clipOutlineBasePanel(outlineGeo, roofClipingPlaneLeft);\n outlineGeo = this.utils.clipOutlineBasePanel(outlineGeo, roofClipingPlaneRight);\n }\n\n let simplifiedGeo = this.simplifyGeo(outlineGeo);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: simplifiedGeo.vertices,\n views: o.userData.views\n });\n }\n\n let ridgeCapping = this.scene.children.find(el => el.userData.type === GEOMETRY_TYPE.RIDGE_CAPPING)\n if(ridgeCapping){\n ridgeCapping.children.forEach(el => {\n this.utils.createOutline(el as Mesh, lsGeometries);\n })\n }\n\n lsGeometries.push({\n objectType: GEOMETRY_TYPE.ROOF_COVER,\n vertices: this.makeRoofPolygon(),\n color: this.utils.convertHexColorToRgb(`#${new Color(UI.panelColor).getHexString()}`),\n views: [\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ]\n });\n\n return { lines: lsGeometries, texts: [] };\n }\n makeRoofPolygon() {\n const polygon = this.utils.getRoofCoverPolygonForFBRoof()\n this.MANAGER.patiosGroup.updateWorldMatrix(true, true)\n return polygon.map(el => (el as Vector3).applyMatrix4(this.MANAGER.patiosGroup.matrixWorld).add(new Vector3(this.roofGroupLeft.position.x, 0, -(UI.existingWidth1 / 2 + this.extraOffsetZ) - UI.overhangBack)))\n }\n public showPanelOutline(){\n if(this.APP.sltPanelDirectionShow.currentValue == false)\n return;\n\n let objs = this.roofGroupRight.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ).concat(...this.roofGroupLeft.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ));\n\n let offsetFront = this.totalBaySize + UI.overhangFront - UI.existingWidth1 / 2 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n let offsetBack = - UI.overhangBack - UI.existingWidth1 / 2 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n\n let roofClipingPlaneLeft = new Plane(new Vector3(0, 0, -1), offsetFront);\n let roofClipingPlaneRight = new Plane(new Vector3(0, 0, 1), -offsetBack);\n \n\n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale((o as Mesh), 60);\n\n //let outlineBox = new Box3().setFromBufferAttribute(outlineGeo.getAttribute('position') as Buffer);\n\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n //outlineGeo.translate(0, 1000, 0);\n\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE) {\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneRight);\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n }\n\n var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n line.userData = {type: GEOMETRY_TYPE.SHEET_OUTLINE};\n this.APP.scene.add( line );\n }\n }\n public simplifyGeo(geo: BufferGeometry): Geometry {\n let simplifiedGeo = new Geometry();\n let vertices = geo.getAttribute('position').array;\n for (let i = 0; i < vertices.length; i += 3) {\n simplifiedGeo.vertices.push(new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2]));\n }\n return simplifiedGeo;\n }\n //private getBracketHeight(offset): number{\n // let angle = this.APP.sltRoofPitch.currentValue;\n // return (this.APP.sldFlyOverBracketHeight.currentValue) - this.utils.tan(angle) * offset;\n //}\n public addRidgeCapping(){\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.RIDGE_CAPPING));\n\n let ridgeFront = this.createRidgeCapping();\n\n const height = this.getRoofOffsetY() + \n this.geo_roofPanelBase.height / this.utils.cos(this.APP.sltRoofPitch.currentValue) + \n this.geo_RoofPanel.height / this.utils.cos(this.APP.sltRoofPitch.currentValue) - \n (this.APP.sltRoofSheetingType.currentValue == 0 || this.APP.sltRoofSheetingType.currentValue == 1 ? 20 : 10);\n \n let offsetX = 0\n if(UI.existingType == BUILDING_SIDE.RIGHT){\n offsetX = - this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width - 100 + ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n }\n if(UI.existingType == BUILDING_SIDE.LEFT){\n offsetX = this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n }\n \n const ridgeLength = this.totalBaySize + UI.overhangBack + UI.overhangFront;\n ridgeFront.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.RIDGE_CAPPING, length: ridgeLength, views: [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }]};\n ridgeFront.scale.setZ(ridgeLength / this.ridgeGeo.length);\n ridgeFront.position.set( offsetX, height, this.totalBaySize / 2 + (UI.overhangFront - UI.overhangBack) / 2 - UI.existingWidth1 / 2 - this.extraOffsetZ);\n this.scene.add(ridgeFront)\n }\n\n public createRidgeCapping(){\n let leftCap = new Mesh(this.ridgeGeo.geometry, MaterialManager.Instance().RIDGE_CAPPING);\n let rightCap = new Mesh(this.ridgeGeo.geometry, MaterialManager.Instance().RIDGE_CAPPING);\n \n rightCap.rotateY(Math.PI)\n \n leftCap.rotateZ(this.utils.degreesToRadians(UI.patiosPitch))\n rightCap.rotateZ(this.utils.degreesToRadians(UI.patiosPitch))\n \n leftCap.userData = {views: [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }]}\n rightCap.userData = {views: [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }]}\n \n return new Group().add(leftCap, rightCap)\n }\n\n public addRoofRight() {\n this.roofGroupRight = null;\n this.roofGroupRight = new Group();\n this.roofGroupRight.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PATIOS };\n\n let offsetY = this.getRoofOffsetY();\n // 0\n let offsetZ = -(UI.existingWidth1 / 2 + this.extraOffsetZ);\n\n this.roofGroupRight.position.setY(offsetY);\n this.roofGroupRight.position.setZ(offsetZ);\n this.roofGroupRight.rotateZ(-this.utils.degreesToRadians(UI.patiosPitch));\n\n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT){\n let offsetX = this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n this.roofGroupRight.position.setX(- offsetX)\n }\n\n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT){\n let offsetX = this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n this.roofGroupRight.position.setX(offsetX)\n }\n\n this.scene.add(this.roofGroupRight);\n }\n public addRoofLeft() {\n this.roofGroupLeft = null;\n this.roofGroupLeft = new Group();\n this.roofGroupLeft.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PATIOS };\n\n let offsetY = this.getRoofOffsetY();\n // 0\n let offsetZ = -(UI.existingWidth1 / 2 + this.extraOffsetZ);\n\n this.roofGroupLeft.position.setY(offsetY);\n this.roofGroupLeft.position.setZ(offsetZ);\n this.roofGroupLeft.rotateZ(this.utils.degreesToRadians(UI.patiosPitch));\n\n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT){\n let offsetX = this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n this.roofGroupLeft.position.setX(- offsetX)\n }\n\n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT){\n let offsetX = this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n this.roofGroupLeft.position.setX(offsetX)\n }\n\n this.scene.add(this.roofGroupLeft);\n }\n public addRoofSheetingRight(offsetZ: number, csgObjs: CSG[]) {\n let mesh = new Mesh(this.geo_RoofPanel.geometry, this.material);\n\n let offsetSheet = 0;\n if (this.APP.sltRoofSheetingType.currentValue == 0 || this.APP.sltRoofSheetingType.currentValue == 1) {\n offsetSheet = 30;\n }\n else {\n offsetSheet = 12;\n }\n\n const offsetPitch = this.geo_roofPanelBase.height * this.utils.tan(UI.patiosPitch)\n\n let scaleZ = ((UI.span / 2 + UI.overhangRight) / this.utils.cos(UI.patiosPitch) - offsetPitch) / this.geo_RoofPanel.length;\n\n let offsetY = this.geo_roofPanelBase.height - offsetSheet;\n let offsetX = 0;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setX(scaleZ);\n mesh.userData = { \n category: GEOMETRY_CATEGORY.PATIOS, \n type: GEOMETRY_TYPE.ROOF_PANEL, \n views: views,\n dir: UI.panelDirection === PANEL_DIRECTION.RIGHT_TO_LEFT ? \"L-R\" : \"R-L\"\n };\n\n let cutoutCondition = this.APP.sltCutOut.currentValue == 1 && this.APP.sltExistingType.currentValue != 0 && this.APP.sldExistingLength2.currentValue > 0;\n if (cutoutCondition) {\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n mesh.position.set(offsetX + this.MANAGER.patiosGroup.position.x, offsetY, offsetZ + this.roofGroupRight.position.z);\n mesh.updateMatrix();\n let meshResult = mesh.clone();\n\n if (cutoutCondition) {\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n }\n }\n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix));\n meshResult.applyMatrix4(matrixBefore);\n\n this.roofGroupRight.add(meshResult);\n }\n else {\n this.roofGroupRight.add(mesh);\n }\n }\n public addRoofSheetingLeft(offsetZ: number, csgObjs: CSG[]) {\n let mesh = new Mesh(this.geo_RoofPanel.geometry, this.material);\n\n let offsetSheet = 0;\n if (this.APP.sltRoofSheetingType.currentValue == 0 || this.APP.sltRoofSheetingType.currentValue == 1) {\n offsetSheet = 30;\n }\n else {\n offsetSheet = 12;\n }\n\n const offsetPitch = this.geo_roofPanelBase.height * this.utils.tan(UI.patiosPitch)\n\n let scaleZ = ((UI.span / 2 + UI.overhangLeft) / this.utils.cos(UI.patiosPitch) - offsetPitch) / this.geo_RoofPanel.length;\n\n let offsetY = this.geo_roofPanelBase.height - offsetSheet;\n let offsetX = -scaleZ * this.geo_RoofPanel.length;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setX(scaleZ);\n mesh.userData = { \n category: GEOMETRY_CATEGORY.PATIOS, \n type: GEOMETRY_TYPE.ROOF_PANEL, \n views: views,\n dir: UI.panelDirection === PANEL_DIRECTION.LEFT_TO_RIGHT ? \"L-R\" : \"R-L\"\n };\n\n let cutoutCondition = this.APP.sltCutOut.currentValue == 1 && this.APP.sltExistingType.currentValue != 0 && this.APP.sldExistingLength2.currentValue > 0;\n if (cutoutCondition) {\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n mesh.position.set(offsetX + this.MANAGER.patiosGroup.position.x, offsetY, offsetZ + this.roofGroupLeft.position.z);\n mesh.updateMatrix();\n let meshResult = mesh.clone();\n\n if (cutoutCondition) {\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n }\n }\n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix));\n meshResult.applyMatrix4(matrixBefore);\n\n this.roofGroupLeft.add(meshResult);\n }\n else {\n this.roofGroupLeft.add(mesh);\n }\n }\n public addRoofSheetingBaseRight(offsetZ: number, isLast: boolean, csgObjs: CSG[]) {\n let mesh: Mesh = new Mesh(this.geo_roofPanelBase.geometry, MaterialManager.Instance().ROOF_BASE);\n let offsetX = 0;\n const offsetPitch = this.geo_roofPanelBase.height * this.utils.tan(UI.patiosPitch)\n let scaleZ = ((UI.span / 2 + UI.overhangRight) / this.utils.cos(UI.patiosPitch) - offsetPitch - 60) / this.geo_roofPanelBase.length;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n mesh.position.set(offsetX, 0, offsetZ);\n mesh.scale.setX(scaleZ);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PANEL_BASE, views: views };\n if (isLast) {\n mesh.userData.last = true;\n }\n\n\n let cutoutCondition = this.APP.sltCutOut.currentValue == 1 && this.APP.sltExistingType.currentValue != 0 && this.APP.sldExistingLength2.currentValue > 0;\n if (cutoutCondition) {\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n mesh.position.set(offsetX+ this.MANAGER.patiosGroup.position.x, 0, offsetZ + this.roofGroupRight.position.z);\n mesh.updateMatrix();\n\n let meshResult = mesh.clone(); \n\n if (cutoutCondition) {\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n }\n }\n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix));\n meshResult.applyMatrix4(matrixBefore);\n\n this.roofGroupRight.add(meshResult);\n }\n else {\n this.roofGroupRight.add(mesh);\n }\n }\n public addRoofSheetingBaseLeft(offsetZ: number, isLast: boolean, csgObjs: CSG[]) {\n let mesh: Mesh = new Mesh(this.geo_roofPanelBase.geometry, MaterialManager.Instance().ROOF_BASE);\n const offsetPitch = this.geo_roofPanelBase.height * this.utils.tan(UI.patiosPitch)\n let scaleZ = ((UI.span / 2 + UI.overhangLeft) / this.utils.cos(UI.patiosPitch) - offsetPitch - 60) / this.geo_roofPanelBase.length;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n let offsetX = - scaleZ * this.geo_roofPanelBase.length;\n\n mesh.position.set(offsetX, 0, offsetZ);\n mesh.scale.setX(scaleZ);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PANEL_BASE, views: views };\n if (isLast) {\n mesh.userData.last = true;\n }\n\n let cutoutCondition = this.APP.sltCutOut.currentValue == 1 && this.APP.sltExistingType.currentValue != 0 && this.APP.sldExistingLength2.currentValue > 0;\n if (cutoutCondition) {\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n mesh.position.set(offsetX+ this.MANAGER.patiosGroup.position.x, 0, offsetZ + this.roofGroupLeft.position.z);\n mesh.updateMatrix();\n\n let meshResult = mesh.clone(); \n\n if (cutoutCondition) {\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n }\n }\n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix));\n meshResult.applyMatrix4(matrixBefore);\n\n this.roofGroupLeft.add(meshResult);\n }\n else {\n this.roofGroupLeft.add(mesh);\n }\n }\n private addBargeCappingRight() {\n let mesh: Mesh;\n\n let extraWallWidth = this.APP.existingWallManager.geo_existingWallW1.width + EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n\n let offsetXB = -this.totalBaySize / 2 - this.APP.sldLeftOverhang.currentValue;\n let offsetXL1 = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue) + this.APP.sldExistingLength2.currentValue - extraWallWidth;\n let offsetXL2 = 0;\n\n let offsetXR1 = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue - this.APP.sldExistingLength2.currentValue + extraWallWidth;\n let offsetXR2 = 0;\n\n let offsetZL = this.totalBaySize + UI.overhangFront;\n let offsetZR = - UI.overhangBack;\n\n let bargeBackLength = this.roofWidth;\n let scaleCutoutVer = this.utils.getHypotenuseByCos(this.APP.sldExistingWidth1.currentValue + this.geo_roofPanelBargeCappingLeft.width, this.APP.sltRoofPitch.currentValue) / this.geo_roofPanelBargeCappingLeft.length;\n let scaleZLeft = this.utils.getHypotenuseByCos(this.roofLength, this.APP.sltRoofPitch.currentValue) / this.geo_roofPanelBargeCappingLeft.length;\n let scaleZRight = this.utils.getHypotenuseByCos(this.roofLength, this.APP.sltRoofPitch.currentValue) / this.geo_roofPanelBargeCappingLeft.length;\n\n let offsetY = 0;\n let bargeLeftLength = this.roofLength;\n let bargeRightLength = this.roofLength;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n const offsetPitch = this.geo_roofPanelBase.height * this.utils.tan(UI.patiosPitch)\n\n scaleZLeft = (this.utils.getHypotenuseByCos(bargeLeftLength, this.APP.sltRoofPitch.currentValue) - offsetPitch) / this.geo_roofPanelBargeCappingLeft.length;\n scaleZRight = (this.utils.getHypotenuseByCos(bargeRightLength, this.APP.sltRoofPitch.currentValue) - offsetPitch) / this.geo_roofPanelBargeCappingLeft.length;\n\n let fitScale = this.geo_roofPanelBargeCappingLeft.height * this.utils.tan(UI.patiosPitch) / this.geo_roofPanelBargeCappingLeft.length;\n\n //left\n mesh = new Mesh(this.geo_roofPanelBargeCappingLeft.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXL2 - fitScale * this.geo_roofPanelBargeCappingLeft.length, offsetY, offsetZL);\n mesh.scale.setX(scaleZLeft + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupRight.add(mesh);\n\n //right\n mesh = new Mesh(this.geo_roofPanelBargeCappingRight.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXR2 - fitScale * this.geo_roofPanelBargeCappingLeft.length, offsetY, offsetZR);\n mesh.scale.setX(scaleZRight + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupRight.add(mesh);\n }\n private addBargeCappingLeft() {\n let mesh: Mesh;\n\n let extraWallWidth = this.APP.existingWallManager.geo_existingWallW1.width + EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n\n let offsetXB = -this.totalBaySize / 2 - this.APP.sldLeftOverhang.currentValue;\n let offsetXL1 = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue) + this.APP.sldExistingLength2.currentValue - extraWallWidth;\n let offsetXL2 = 0;\n\n let offsetXR1 = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue - this.APP.sldExistingLength2.currentValue + extraWallWidth;\n let offsetXR2 = 0;\n\n let offsetZL = this.totalBaySize + UI.overhangFront;\n let offsetZR = - UI.overhangBack;\n\n let offsetY = 0;\n let bargeLeftLength = UI.span / 2 + UI.overhangLeft;\n let bargeRightLength = UI.span / 2 + UI.overhangLeft;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n const offsetPitch = this.geo_roofPanelBase.height * this.utils.tan(UI.patiosPitch)\n\n let scaleZLeft = (this.utils.getHypotenuseByCos(bargeLeftLength, this.APP.sltRoofPitch.currentValue) - offsetPitch) / this.geo_roofPanelBargeCappingLeft.length;\n let scaleZRight = (this.utils.getHypotenuseByCos(bargeRightLength, this.APP.sltRoofPitch.currentValue) - offsetPitch) / this.geo_roofPanelBargeCappingLeft.length;\n\n let fitScale = this.geo_roofPanelBargeCappingLeft.height * this.utils.tan(UI.patiosPitch) / this.geo_roofPanelBargeCappingLeft.length;\n\n //left\n mesh = new Mesh(this.geo_roofPanelBargeCappingLeft.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXL2 - scaleZLeft * this.geo_roofPanelBargeCappingLeft.length, offsetY, offsetZL);\n mesh.scale.setX(scaleZLeft + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupLeft.add(mesh);\n\n //right\n mesh = new Mesh(this.geo_roofPanelBargeCappingRight.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXR2 - scaleZRight * this.geo_roofPanelBargeCappingLeft.length, offsetY, offsetZR);\n mesh.scale.setX(scaleZRight + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupLeft.add(mesh);\n }\n public addGutterRight() {\n let offsetXL = (UI.span / 2 + UI.overhangRight - CONST.GUTTER_ROOF_OFFSET_Z) / this.utils.cos(UI.patiosPitch);\n let offsetY = this.geo_roofPanelBase.height - 25;\n let offsetZ = this.totalBaySize + UI.overhangFront;\n\n let gutterLength = this.roofWidth;\n let exLength = 300//Math.tan(extraAngle) * this.gutterInfo.width;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n\n let gutterGroup = this.utils.createGutterGroup(this.geo_gutterBack, this.geo_gutterCap,\n gutterLength, new Vector3(offsetXL, offsetY, offsetZ), new Vector3(0, Math.PI / 2, 0),\n views, 1, true, true);\n gutterGroup.rotateX(-this.utils.degreesToRadians(UI.patiosPitch))\n this.roofGroupRight.add(gutterGroup); \n }\n public addGutterLeft() {\n let offsetXL = (UI.span / 2 + UI.overhangLeft - CONST.GUTTER_ROOF_OFFSET_Z) / this.utils.cos(UI.patiosPitch);\n let offsetY = this.geo_roofPanelBase.height - 25;\n let offsetZ = - UI.overhangBack;\n\n let gutterLength = this.roofWidth;\n let exLength = 300//Math.tan(extraAngle) * this.gutterInfo.width;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n\n let gutterGroup = this.utils.createGutterGroup(this.geo_gutterBack, this.geo_gutterCap,\n gutterLength, new Vector3(-offsetXL, offsetY, offsetZ), new Vector3(0, -Math.PI / 2, 0),\n views, 1, true, true);\n gutterGroup.rotateX(-this.utils.degreesToRadians(UI.patiosPitch))\n this.roofGroupLeft.add(gutterGroup); \n }\n public addZFlashingRight() {\n let offsetX = (UI.span / 2 + UI.overhangRight) / this.utils.cos(UI.patiosPitch);\n let offsetY = this.geo_roofPanelBase.height - 25;\n const offsetZ = this.totalBaySize + UI.overhangFront;\n let zFlashingLength = this.roofWidth;\n\n let scaleX = zFlashingLength / this.zFlashingGeo.length;\n \n let mesh = new Mesh(this.zFlashingGeo.geometry, MaterialManager.Instance().ZFLASHING);\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.set(1, 1, scaleX);\n\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ZFLASHING, scale: mesh.scale };\n this.roofGroupRight.add(mesh);\n }\n public addZFlashingLeft() {\n let offsetX = (UI.span / 2 + UI.overhangLeft) / this.utils.cos(UI.patiosPitch);\n let offsetY = this.geo_roofPanelBase.height - 25;\n const offsetZ = - UI.overhangBack;\n let zFlashingLength = this.roofWidth;\n\n let scaleX = zFlashingLength / this.zFlashingGeo.length;\n \n let mesh = new Mesh(this.zFlashingGeo.geometry, MaterialManager.Instance().ZFLASHING);\n mesh.position.set(-offsetX, offsetY, offsetZ);\n mesh.scale.set(1, 1, scaleX);\n mesh.rotateY(Math.PI)\n\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ZFLASHING, scale: mesh.scale };\n this.roofGroupLeft.add(mesh);\n }\n public getRoofOffsetY() {\n return UI.eaveHeight\n + this.totalHeightFromEaveHeightToTopOfFlyoverBraket()\n + this.geometryManager.getBeam().height\n + this.utils.tan(UI.patiosPitch) * (UI.span / 2);\n }\n public destroy(): void {\n this.unregisterEvent();\n }\n private registerEvent(): void {\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n //this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n\n this.controlsToRegisterEvent2 = [\n this.APP.sltRoofSheetingType,\n this.APP.sltRoofThickness,\n this.APP.sltBargeType,\n this.APP.sltDripBarge,\n this.APP.sltGutterType,\n this.APP.sltRoofPitch\n ];\n this.controlsToRegisterEvent2.forEach(c => c.addAction(this.objectSizeChangedHandle));\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach(c => c.removeAction(this.objectSizeChangedHandle));\n this.controlsToRegisterEvent2 = undefined;\n }\n private objectSizeChanged() {\n this.optimize().then(() => { this.load() });\n }\n public uiChanged(): void {\n this.load();\n }\n uiCHangedDefer() {\n if (this.APP.sltCutOut.currentValue == 1) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => { this.load() }, this.deferTimeout);\n }\n else {\n this.load();\n }\n }\n}\n","import {\n HomeComponent as AppComponent,\n HomeComponent,\n} from \"../../containers/home/home.component\";\nimport {\n Scene,\n Material,\n Mesh,\n BufferGeometry,\n Box3,\n Group,\n LineSegments,\n LineBasicMaterial,\n Plane,\n Vector3,\n BoxHelper,\n Geometry,\n BoxBufferGeometry,\n Object3D,\n Matrix4,\n} from \"three\";\nimport { Util, getBeamEndCapCode, getRafterBeamEndCapCode } from \"../utils\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport {\n CONFIG as env,\n GEOMETRY_TYPE,\n GEOMETRY_CATEGORY,\n} from \"../../app.config\";\nimport {\n GeometryInfo,\n Printing2DGeometry,\n Printing2DLine,\n Printing2DGeometryType,\n Print2DView,\n ViewType,\n LineType,\n} from \"../models\";\nimport { PatiosGableFreeStandingManager } from \".\";\nimport { UI } from \"../ui\";\nimport { EXISTING_BUILDING_CONFIG } from \"src/app/app.constants\";\nimport _ from \"lodash\";\n\nexport class ColumnAndPurlinManager {\n private scene: Group;\n private APP: AppComponent;\n private material: Material;\n //private beamMaterial: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private geo_superiorPost: GeometryInfo;\n private geo_centerSuperiorPost: GeometryInfo;\n public geo_superiorBeam: GeometryInfo;\n private geo_beamEndCap: GeometryInfo;\n private geo_rafterBeamEndCap: GeometryInfo;\n private geo_bracket: GeometryInfo;\n private geo_groundBase: GeometryInfo;\n\n private eventHandleId: any;\n private totalBaySize: number;\n private frontPostHeight: number;\n\n private geo_RafterBeam: GeometryInfo;\n private geo_downPipe: GeometryInfo;\n private geo_downPipeL: GeometryInfo;\n private downpipeGroup: Group;\n private downpipeGroupBack: Group;\n private objectSizeChangedHandle: any;\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n private geoBeamJoint: GeometryInfo;\n private geoHouseBeamJoint: GeometryInfo;\n\n private FIT_SHEETING: number = 0;\n private FIT_SHEETING_BASE: number = -60;\n\n constructor(app: AppComponent, manager: PatiosGableFreeStandingManager) {\n this.APP = app;\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n\n this.scene = manager.patiosGroup;\n this.material = MaterialManager.Instance().DEFAULT.clone();\n //this.beamMaterial = MaterialManager.Instance().DEFAULT.clone();\n\n this.registerEvent();\n }\n\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n let bracketHeight =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height / 2;\n let bracketWidth = this.geometryManager.FLY_OVER_BRACKET.S65x3.width;\n\n this.geo_bracket = new GeometryInfo();\n this.geo_bracket.geometry =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.geometry\n .clone()\n .rotateX(Math.PI / 2)\n .translate(bracketWidth / 2, bracketHeight, bracketWidth / 2);\n this.geo_bracket.width =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.width;\n this.geo_bracket.length =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.length;\n this.geo_bracket.height =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n this.geo_superiorBeam = this.geometryManager.getBeam();\n this.geo_superiorBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_superiorBeam.length / 2,\n this.geo_superiorBeam.height / 2,\n this.geo_superiorBeam.width / 2\n );\n\n this.geoBeamJoint = this.geometryManager.getBeamJoint();\n this.geoHouseBeamJoint = this.geometryManager.getHouseBeamJoint();\n\n this.geo_RafterBeam = this.geometryManager.getRafterBeam();\n this.geo_RafterBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_RafterBeam.length / 2,\n -this.geo_RafterBeam.height / 2,\n this.geo_RafterBeam.width / 2\n );\n\n this.geo_beamEndCap = this.geometryManager.getBeamEndCap();\n this.geo_beamEndCap.geometry.translate(\n 0,\n this.geo_beamEndCap.height / 2,\n 0\n );\n\n this.geo_rafterBeamEndCap = this.geometryManager.getRafterBeamEndCap();\n this.geo_rafterBeamEndCap.geometry.translate(\n 0,\n -this.geo_rafterBeamEndCap.height / 2,\n this.geo_rafterBeamEndCap.length / 2\n );\n\n this.geo_superiorPost = this.geometryManager.getPost();\n this.geo_superiorPost.geometry\n .rotateX(Math.PI / 2)\n .translate(\n this.geo_superiorPost.width / 2,\n this.geo_superiorPost.height / 2,\n this.geo_superiorPost.width / 2\n );\n\n this.geo_centerSuperiorPost = this.geometryManager.getCenterPost();\n this.geo_centerSuperiorPost.geometry\n .rotateX(Math.PI / 2)\n .translate(\n this.geo_centerSuperiorPost.width / 2,\n this.geo_centerSuperiorPost.height / 2,\n this.geo_centerSuperiorPost.width / 2\n );\n\n this.geo_groundBase = new GeometryInfo();\n this.geo_groundBase.width = 1000;\n this.geo_groundBase.height = 1;\n this.geo_groundBase.length = 1000;\n this.geo_groundBase.geometry = new BoxBufferGeometry(\n this.geo_groundBase.width,\n this.geo_groundBase.height,\n this.geo_groundBase.length\n );\n this.geo_groundBase.geometry.translate(\n 0,\n 0,\n this.geo_groundBase.length / 2\n );\n\n this.geo_downPipe = this.geometryManager.getDownPipe();\n this.geo_downPipeL = this.geometryManager.getDownPipeL();\n\n this.scene.remove(\n ...this.scene.children.filter(\n (c) => c.userData.type == GEOMETRY_TYPE.DOWNPIPE\n )\n );\n this.downpipeGroup = new Group();\n this.downpipeGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeGroup);\n\n this.downpipeGroupBack = new Group();\n this.downpipeGroupBack.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeGroupBack);\n\n resolve();\n });\n }\n\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SUPERIOR_POST\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SUPERIOR_CENTER_POST\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.MESH_OUTLINE\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == \"COLUMN_OUTLINE\"\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.GROUND_BASE\n )\n );\n this.downpipeGroup.children = [];\n this.downpipeGroupBack.children = [];\n\n // this.outlineGroup = new Group();\n // this.outlineGroup.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.MESH_OUTLINE };\n // this.scene.add(this.outlineGroup);\n\n this.totalBaySize = 0;\n for (let b of this.APP.dialogEditBay.listBay) {\n this.totalBaySize += b.value;\n }\n\n this.addSuperiorBeam({ front: true });\n this.addSuperiorBeam({ back: true });\n if (this.APP.sldMultiSpan.currentValue > 0) {\n this.addSuperiorBeam({ multiSpan: true });\n }\n\n this.addCenterSuperiorBeam();\n\n this.addGround();\n\n let offsetX = -this.totalBaySize / 2;\n let first = true;\n let last = false;\n for (let i = 0; i <= this.APP.dialogEditBay.listBay.length; i++) {\n if (i == this.APP.dialogEditBay.listBay.length) {\n last = true;\n }\n this.addPost(offsetX, { back: true, first, last });\n this.addPost(offsetX, { front: true, first, last });\n\n this.addCenterPost(offsetX, { center: true, first, last });\n\n let fitBeam = 0;\n\n if (i !== 0) {\n if (i == this.APP.dialogEditBay.listBay.length) {\n fitBeam = this.geo_superiorBeam.width;\n } else {\n fitBeam = this.geo_superiorBeam.width / 2;\n }\n }\n\n this.addHorSuperiorBeam(offsetX - fitBeam, {\n front: true,\n first,\n last,\n });\n this.addRafterSuperiorBeam(offsetX - fitBeam, {\n front: true,\n first,\n last,\n });\n this.addRafterSuperiorBeam(offsetX - fitBeam, {\n back: true,\n first,\n last,\n });\n\n if (this.APP.sldMultiSpan.currentValue > 0) {\n this.addPost(offsetX, { multiSpan: true, first, last });\n }\n if (i < this.APP.dialogEditBay.listBay.length) {\n let b = this.APP.dialogEditBay.listBay[i];\n offsetX += b.value;\n }\n first = false;\n }\n\n this.addDownPipeFront();\n this.addDownPipeBack();\n this.showBeamOutline();\n this.updateUI();\n resolve();\n });\n }\n public showBeamOutline() {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.BEAM_OUTLINE\n )\n );\n\n if (!UI.beamLayoutShow) return;\n\n const objs = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n const meshes = [];\n objs.forEach((el) => {\n if (el.type == \"Group\") {\n meshes.push(\n ...el.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n }\n });\n\n for (let o of meshes) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n o as Mesh,\n 10\n );\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n\n var line = new LineSegments(\n outlineGeo,\n MaterialManager.Instance().BEAM_OUTLINE\n );\n line.userData = { type: GEOMETRY_TYPE.BEAM_OUTLINE };\n this.APP.scene.add(line);\n }\n }\n private updateUI() {\n this.APP.sldMinHeight.setValue(_.round(this.frontPostHeight, 0));\n }\n private addDownPipeFront() {\n let offsetZ =\n this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + 100;\n let offsetX = -this.totalBaySize / 2 + 50;\n\n this.downpipeGroup.position.set(offsetX, 0, offsetZ);\n let offsetY =\n this.APP.sldBuildingHeight.currentValue -\n this.APP.sldFrontOverhang.currentValue *\n this.utils.tan(this.APP.sltRoofPitch.currentValue);\n\n if (this.APP.sltGutterType.currentValue == 0) {\n offsetY -= 80;\n } else {\n offsetY -= 60;\n }\n\n let userData = { type: GEOMETRY_TYPE.DOWNPIPE };\n\n offsetY -= 160;\n\n let meshLBottom = new Mesh(\n this.geo_downPipeL.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshLBottom.userData = userData;\n meshLBottom.position.set(0, offsetY, 20);\n meshLBottom.rotateY(Math.PI / 2);\n\n let meshLTop = new Mesh(\n this.geo_downPipeL.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshLTop.userData = userData;\n meshLTop.rotation.set(Math.PI, Math.PI / 2, 0);\n meshLTop.position.set(\n 0,\n offsetY + 230,\n this.APP.sldFrontOverhang.currentValue + this.FIT_SHEETING - 100\n );\n\n let meshPipeConnect = new Mesh(\n this.geo_downPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipeConnect.userData = userData;\n meshPipeConnect.rotation.set(Math.PI / 2, 0, 0);\n meshPipeConnect.position.set(0, offsetY + 115, 50);\n meshPipeConnect.scale.set(\n 1,\n (this.APP.sldFrontOverhang.currentValue + this.FIT_SHEETING - 140) /\n this.geo_downPipe.height,\n 1\n );\n\n this.downpipeGroup.add(meshLBottom, meshLTop, meshPipeConnect);\n\n let scaleY = offsetY / this.geo_downPipe.height;\n\n let meshPipe = new Mesh(\n this.geo_downPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipe.userData = userData;\n meshPipe.scale.setY(scaleY);\n\n this.downpipeGroup.add(meshPipe);\n }\n private addDownPipeBack() {\n let offsetZ = -100;\n let offsetX = -this.totalBaySize / 2 + 50;\n\n this.downpipeGroupBack.position.set(offsetX, 0, offsetZ);\n let offsetY =\n this.APP.sldBuildingHeight.currentValue -\n this.APP.sldBackOverhang.currentValue *\n this.utils.tan(this.APP.sltRoofPitch.currentValue);\n\n if (this.APP.sltGutterType.currentValue == 0) {\n offsetY -= 80;\n } else {\n offsetY -= 60;\n }\n\n let userData = { type: GEOMETRY_TYPE.DOWNPIPE };\n\n offsetY -= 160;\n\n let meshLBottom = new Mesh(\n this.geo_downPipeL.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshLBottom.userData = userData;\n meshLBottom.position.set(0, offsetY, 20);\n meshLBottom.rotateY(Math.PI / 2);\n\n let meshLTop = new Mesh(\n this.geo_downPipeL.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshLTop.userData = userData;\n meshLTop.rotation.set(Math.PI, Math.PI / 2, 0);\n meshLTop.position.set(\n 0,\n offsetY + 230,\n this.APP.sldBackOverhang.currentValue + this.FIT_SHEETING - 100\n );\n\n let meshPipeConnect = new Mesh(\n this.geo_downPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipeConnect.userData = userData;\n meshPipeConnect.rotation.set(Math.PI / 2, 0, 0);\n meshPipeConnect.position.set(0, offsetY + 115, 50);\n meshPipeConnect.scale.set(\n 1,\n (this.APP.sldBackOverhang.currentValue + this.FIT_SHEETING - 140) /\n this.geo_downPipe.height,\n 1\n );\n\n this.downpipeGroupBack.add(meshLBottom, meshLTop, meshPipeConnect);\n\n let scaleY = offsetY / this.geo_downPipe.height;\n\n let meshPipe = new Mesh(\n this.geo_downPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipe.userData = userData;\n meshPipe.scale.setY(scaleY);\n\n this.downpipeGroupBack.rotation.set(0, Math.PI, 0);\n this.downpipeGroupBack.add(meshPipe);\n }\n private addGround() {\n let offsetZ = -this.APP.sldBackOverhang.currentValue;\n let width =\n this.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n let length =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldBackOverhang.currentValue;\n let offsetX =\n (this.APP.sldRightOverhang.currentValue -\n this.APP.sldLeftOverhang.currentValue) /\n 2;\n\n let base = new Mesh(\n this.geo_groundBase.geometry,\n MaterialManager.Instance().BASE\n );\n base.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GROUND_BASE,\n };\n base.position.set(offsetX, 0, offsetZ);\n base.scale.set(\n width / this.geo_groundBase.width,\n 1,\n length / this.geo_groundBase.length\n );\n\n this.scene.add(base);\n }\n private addCenterPost(offsetX, userDataPos) {\n let meshPost = new Mesh(\n this.geo_centerSuperiorPost.geometry,\n MaterialManager.Instance().BEAM\n );\n meshPost.userData = {\n ...userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_CENTER_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let postOffsetZ = 0;\n\n let scalePostY = 1;\n\n let views: Print2DView[];\n\n postOffsetZ =\n (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2 -\n this.geo_centerSuperiorPost.width / 2;\n\n this.frontPostHeight =\n this.APP.sldBuildingHeight.currentValue - this.geo_superiorBeam.height;\n\n scalePostY =\n (((this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) /\n 2 -\n this.geo_superiorBeam.width / 2) *\n this.utils.tan(this.APP.sltRoofPitch.currentValue) -\n this.geo_superiorBeam.height) /\n this.geo_centerSuperiorPost.height;\n views = [\n // { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n let postOffsetX = offsetX - this.geo_centerSuperiorPost.width / 2;\n\n if (userDataPos.first) {\n postOffsetX += this.geo_centerSuperiorPost.width / 2;\n } else if (userDataPos.last) {\n postOffsetX -= this.geo_centerSuperiorPost.width / 2;\n } else {\n // postOffsetX -= this.geo_superiorPost.width / 2\n }\n\n meshPost.userData.views = views;\n meshPost.position.set(\n postOffsetX,\n this.APP.sldBuildingHeight.currentValue,\n postOffsetZ\n );\n meshPost.scale.setY(scalePostY);\n\n this.scene.add(meshPost);\n }\n private addPost(offsetX: number, userDataPos: any): void {\n let meshPost = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n meshPost.userData = {\n ...userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let postOffsetZ = 0;\n\n let scalePostY = 1;\n\n let views: Print2DView[];\n\n if (userDataPos.front) {\n postOffsetZ = this.APP.sldSpan.currentValue;\n this.frontPostHeight =\n this.APP.sldBuildingHeight.currentValue - this.geo_superiorBeam.height;\n\n scalePostY =\n this.APP.sldBuildingHeight.currentValue / this.geo_superiorPost.height;\n\n if (this.APP.sldMultiSpan.currentValue > 0) {\n postOffsetZ -= this.geo_superiorPost.width / 2;\n } else {\n postOffsetZ -= this.geo_superiorPost.width;\n }\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n if (userDataPos.back) {\n postOffsetZ = 0;\n scalePostY =\n this.APP.sldBuildingHeight.currentValue / this.geo_superiorPost.height;\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n if (userDataPos.multiSpan) {\n postOffsetZ =\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue -\n this.geo_superiorPost.width;\n // scalePostY = this.utils.getHeightByAngle(this.APP.sldBuildingHeight.currentValue - this.geo_superiorBeam.height,\n // this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue,\n // this.APP.sltRoofPitch.currentValue, -1)/this.geo_superiorPost.height;\n\n scalePostY =\n this.APP.sldBuildingHeight.currentValue / this.geo_superiorPost.height;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n meshPost.userData.views = views;\n\n let postOffsetX = offsetX;\n if (userDataPos.first) {\n } else if (userDataPos.last) {\n postOffsetX -= this.geo_superiorPost.width;\n } else {\n postOffsetX -= this.geo_superiorPost.width / 2;\n }\n\n meshPost.position.set(postOffsetX, 0, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n\n this.scene.add(meshPost);\n }\n\n public addSuperiorBeam(userDataPos: any) {\n let offsetXL = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n let offsetZ = 0;\n let offsetY = 0;\n\n let beamLength =\n this.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n\n let views: Print2DView[];\n\n if (userDataPos.front) {\n offsetY =\n this.APP.sldBuildingHeight.currentValue - this.geo_superiorBeam.height;\n\n //this.APP.sldBuildingHeight.currentValue + this.getBracketHeight(this.APP.sldSpan.currentValue);\n offsetZ = this.APP.sldSpan.currentValue;\n if (this.APP.sldMultiSpan.currentValue > 0) {\n offsetZ -= this.geo_superiorBeam.width / 2;\n } else {\n offsetZ -= this.geo_superiorBeam.width;\n }\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.back) {\n offsetY =\n this.APP.sldBuildingHeight.currentValue - this.geo_superiorBeam.height;\n offsetZ = 0;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.multiSpan) {\n offsetY =\n this.APP.sldBuildingHeight.currentValue - this.geo_superiorBeam.height;\n offsetZ =\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue -\n this.geo_superiorBeam.width;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n this.cutStandardBeamByCutBeamWithinBayControl(\n this.geo_superiorBeam,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetXL, offsetY, offsetZ),\n new Vector3(),\n views,\n 1,\n userDataPos,\n \"EB\",\n this.geoBeamJoint\n );\n }\n\n public addCenterSuperiorBeam() {\n let offsetXL = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n let offsetZ = 0;\n let offsetY = 0;\n\n let beamLength =\n this.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n\n offsetY =\n this.APP.sldBuildingHeight.currentValue +\n ((this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) /\n 2 -\n this.geo_superiorBeam.width / 2) *\n this.utils.tan(this.APP.sltRoofPitch.currentValue) -\n this.geo_superiorBeam.height;\n\n offsetZ =\n (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2 -\n this.geo_superiorBeam.width / 2;\n\n let views: Print2DView[] = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n this.cutStandardBeamByCutBeamWithinBayControl(\n this.geo_superiorBeam,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetXL, offsetY, offsetZ),\n new Vector3(),\n views,\n 1,\n { center: true },\n \"RB\",\n this.geoBeamJoint\n );\n }\n private cutStandardBeamByCutBeamWithinBayControl(\n beamGeo: GeometryInfo,\n beamCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n userDataPos: any,\n beamName = \"\",\n jointGeo: GeometryInfo\n ) {\n // Map list cut beam here\n const beamStartX = pos.x;\n const beamEndX = pos.x + length;\n\n let endOfBayX = -UI.totalBayLength / 2;\n let startCutBeamX = beamStartX;\n let endCutBeamX = beamStartX;\n\n const beams = this.utils.getListSeperateBeamsByBays(\n endOfBayX,\n beamStartX,\n beamEndX,\n endCutBeamX,\n startCutBeamX\n );\n\n for (let i = 0; i < beams.length; i++) {\n endCutBeamX = beams[i][1];\n startCutBeamX = beams[i][0];\n let beamGroup = this.utils.createBeamGroup(\n beamGeo,\n beamCapGeo,\n endCutBeamX - startCutBeamX,\n new Vector3(startCutBeamX, pos.y, pos.z),\n rot,\n views,\n directionOffset,\n userDataPos,\n UI.beamLayoutShow,\n {\n hasStartCap: UI.beamType == 0 && i == 0,\n hasEndCap:\n UI.beamType == 0 &&\n (i == beams.length - 1 || (i == 0 && beams.length == 1)),\n hasStartJoint: i !== 0,\n hasEndJoint: false,\n jointGeo: jointGeo,\n }\n );\n beamGroup.userData = {\n ...beamGroup.userData,\n name: beamName,\n };\n this.scene.add(beamGroup);\n }\n }\n\n public addRafterSuperiorBeam(offsetX, userDataPos: any) {\n if (\n this.APP.sltWindClass.currentValue == 0 ||\n this.APP.sltWindClass.currentValue == 1\n ) {\n if (this.totalBaySize <= 6000 && this.APP.sldSpan.currentValue <= 7000) {\n return;\n }\n }\n if (\n this.APP.sltWindClass.currentValue == 3 ||\n this.APP.sltWindClass.currentValue == 4 ||\n this.APP.sltWindClass.currentValue == 5\n ) {\n return;\n }\n let mesh;\n\n let offsetXL = 0;\n let offsetXR =\n ((this.APP.sldMultiSpan.currentValue + this.APP.sldSpan.currentValue) /\n 2 -\n this.geo_superiorBeam.width / 2) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue);\n let offsetZ = 0;\n let offsetY = 0;\n\n let scaleX =\n ((this.APP.sldMultiSpan.currentValue + this.APP.sldSpan.currentValue) /\n 2 -\n this.geo_superiorBeam.width / 2) /\n this.utils.cos(this.APP.sltRoofPitch.currentValue) /\n this.geo_RafterBeam.length;\n\n let views: Print2DView[];\n\n if (userDataPos.front) {\n let material = MaterialManager.Instance().BEAM.clone();\n\n let nBottom = new Vector3(0, 1, 0).normalize();\n let pBottom = new Vector3(0, this.APP.sldBuildingHeight.currentValue, 0);\n let planeBottom = new Plane().setFromNormalAndCoplanarPoint(\n nBottom,\n pBottom\n );\n\n let nVer = new Vector3(0, 0, 1).normalize();\n let pVer = new Vector3(0, 0, this.geo_superiorBeam.width / 2);\n let planeVer = new Plane().setFromNormalAndCoplanarPoint(nVer, pVer);\n\n material.clippingPlanes = [planeBottom, planeVer];\n\n mesh = new Mesh(this.geo_RafterBeam.geometry, material);\n\n offsetY = this.APP.sldBuildingHeight.currentValue;\n offsetZ =\n this.APP.sldMultiSpan.currentValue + this.APP.sldSpan.currentValue;\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.back) {\n let material = MaterialManager.Instance().BEAM.clone();\n\n let nBottom = new Vector3(0, 1, 0).normalize();\n let pBottom = new Vector3(0, this.APP.sldBuildingHeight.currentValue, 0);\n let planeBottom = new Plane().setFromNormalAndCoplanarPoint(\n nBottom,\n pBottom\n );\n\n let nVer = new Vector3(0, 0, -1).normalize();\n let pVer = new Vector3(0, 0, -this.geo_superiorBeam.width / 2);\n let planeVer = new Plane().setFromNormalAndCoplanarPoint(nVer, pVer);\n\n material.clippingPlanes = [planeBottom, planeVer];\n\n mesh = new Mesh(this.geo_RafterBeam.geometry, material);\n\n offsetY =\n this.APP.sldBuildingHeight.currentValue +\n ((this.APP.sldMultiSpan.currentValue + this.APP.sldSpan.currentValue) /\n 2 -\n this.geo_superiorBeam.width / 2) *\n this.utils.tan(this.APP.sltRoofPitch.currentValue);\n offsetZ =\n (this.APP.sldMultiSpan.currentValue + this.APP.sldSpan.currentValue) /\n 2 -\n this.geo_superiorBeam.width / 2;\n\n views = [\n // { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM,\n position: userDataPos,\n views: views,\n };\n mesh.position.set(offsetXL, 0, 0);\n mesh.scale.setX(scaleX);\n\n let checkExec = /\\w{1}\\d{1,3}x(\\d{1,3})/.exec(this.geo_RafterBeam.name);\n let beamSize = checkExec && checkExec.length == 2 ? checkExec[1] : \"\";\n let lowerBraketName = getRafterBeamEndCapCode(\n EXISTING_BUILDING_CONFIG.RAFTER_BEAM_SIZE,\n false\n );\n let higherBraketName = getRafterBeamEndCapCode(\n EXISTING_BUILDING_CONFIG.RAFTER_BEAM_SIZE,\n true\n );\n\n let capL;\n let capR;\n if (userDataPos.front) {\n let matEndCap = MaterialManager.Instance().BEAM.clone();\n\n let heightReal =\n this.APP.sldBuildingHeight.currentValue +\n (this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n (this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue)) /\n 2;\n let heightPlane =\n heightReal * this.utils.cos(this.APP.sltRoofPitch.currentValue);\n let translateZ =\n this.utils.sin(this.APP.sltRoofPitch.currentValue) * heightPlane;\n\n let planeTop = new Plane(new Vector3(0, -1, 0));\n let matrixTranslateTop = new Matrix4().makeTranslation(\n 0,\n heightPlane,\n translateZ / 2\n );\n let matrixRotateTop = new Matrix4().makeRotationX(\n this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue)\n ); //tao voi z pitch do\n let matrixTotalTop = matrixTranslateTop.multiply(matrixRotateTop);\n planeTop.applyMatrix4(matrixTotalTop);\n\n let heightRealBottom =\n this.APP.sldBuildingHeight.currentValue -\n this.geo_RafterBeam.height /\n this.utils.cos(this.APP.sltRoofPitch.currentValue) +\n (this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n (this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue)) /\n 2;\n let heightPlaneBottom =\n heightRealBottom * this.utils.cos(this.APP.sltRoofPitch.currentValue);\n let translateZBottom =\n this.utils.sin(this.APP.sltRoofPitch.currentValue) * heightPlaneBottom;\n\n let planeBottom = new Plane(new Vector3(0, 1, 0));\n let matrixTranslateBottom = new Matrix4().makeTranslation(\n 0,\n heightPlaneBottom,\n translateZBottom / 2\n );\n let matrixRotateBottom = new Matrix4().makeRotationX(\n this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue)\n ); //tao voi z pitch do\n let matrixTotalBottom =\n matrixTranslateBottom.multiply(matrixRotateBottom);\n planeBottom.applyMatrix4(matrixTotalBottom);\n\n matEndCap.clippingPlanes = [planeTop, planeBottom];\n\n capL = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capL.position.set(offsetXL - 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capL.scale.setY(\n (this.geo_RafterBeam.height /\n this.utils.sin(this.APP.sltRoofPitch.currentValue) +\n this.geo_rafterBeamEndCap.length /\n this.utils.tan(this.APP.sltRoofPitch.currentValue)) /\n this.geo_rafterBeamEndCap.height\n );\n capL.rotateY(Math.PI / 2);\n capL.rotateX(\n -Math.PI / 2 +\n this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue)\n );\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: lowerBraketName,\n };\n\n capR = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capR.position.set(offsetXR + 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capR.scale.setY(\n (this.geo_RafterBeam.height /\n this.utils.cos(this.APP.sltRoofPitch.currentValue) +\n this.geo_rafterBeamEndCap.length *\n this.utils.tan(this.APP.sltRoofPitch.currentValue)) /\n this.geo_rafterBeamEndCap.height\n );\n capR.rotateY(-Math.PI / 2);\n capR.rotateX(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue)\n );\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: higherBraketName,\n };\n } else {\n let matEndCap = MaterialManager.Instance().BEAM.clone();\n\n let heightReal =\n this.APP.sldBuildingHeight.currentValue +\n (this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n (this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue)) /\n 2;\n let heightPlane =\n heightReal * this.utils.cos(this.APP.sltRoofPitch.currentValue);\n let translateZ =\n this.utils.sin(this.APP.sltRoofPitch.currentValue) * heightPlane;\n\n let planeTop = new Plane(new Vector3(0, -1, 0));\n let matrixTranslateTop = new Matrix4().makeTranslation(\n 0,\n heightPlane,\n -translateZ / 2\n );\n let matrixRotateTop = new Matrix4().makeRotationX(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue)\n ); //tao voi z pitch do\n let matrixTotalTop = matrixTranslateTop.multiply(matrixRotateTop);\n planeTop.applyMatrix4(matrixTotalTop);\n\n let heightRealBottom =\n this.APP.sldBuildingHeight.currentValue -\n this.geo_RafterBeam.height /\n this.utils.cos(this.APP.sltRoofPitch.currentValue) +\n (this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n (this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue)) /\n 2;\n let heightPlaneBottom =\n heightRealBottom * this.utils.cos(this.APP.sltRoofPitch.currentValue);\n let translateZBottom =\n this.utils.sin(this.APP.sltRoofPitch.currentValue) * heightPlaneBottom;\n\n let planeBottom = new Plane(new Vector3(0, 1, 0));\n let matrixTranslateBottom = new Matrix4().makeTranslation(\n 0,\n heightPlaneBottom,\n -translateZBottom / 2\n );\n let matrixRotateBottom = new Matrix4().makeRotationX(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue)\n ); //tao voi z pitch do\n let matrixTotalBottom =\n matrixTranslateBottom.multiply(matrixRotateBottom);\n planeBottom.applyMatrix4(matrixTotalBottom);\n\n matEndCap.clippingPlanes = [planeTop, planeBottom];\n\n capL = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capL.position.set(offsetXL - 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capL.scale.setY(\n (this.geo_RafterBeam.height /\n this.utils.cos(this.APP.sltRoofPitch.currentValue) +\n this.geo_rafterBeamEndCap.length *\n this.utils.tan(this.APP.sltRoofPitch.currentValue)) /\n this.geo_rafterBeamEndCap.height\n );\n capL.rotateY(Math.PI / 2);\n capL.rotateX(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue)\n );\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: higherBraketName,\n };\n\n capR = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capR.position.set(offsetXR + 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capR.scale.setY(\n (this.geo_RafterBeam.height /\n this.utils.sin(this.APP.sltRoofPitch.currentValue) +\n this.geo_rafterBeamEndCap.length /\n this.utils.tan(this.APP.sltRoofPitch.currentValue)) /\n this.geo_rafterBeamEndCap.height\n );\n capR.rotateY(-Math.PI / 2);\n capR.rotateX(\n -Math.PI / 2 +\n this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue)\n );\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: lowerBraketName,\n };\n }\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM,\n position: userDataPos,\n views: views,\n };\n beamGroup.position.set(offsetX, offsetY, offsetZ);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n\n beamGroup.rotateY(Math.PI / 2);\n\n if (userDataPos.front) {\n beamGroup.rotateZ(\n this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue)\n );\n } else if (userDataPos.back) {\n beamGroup.rotateZ(\n -this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue)\n );\n }\n\n this.scene.add(beamGroup);\n }\n\n public addHorSuperiorBeam(offsetX, userDataPos: any) {\n let mesh = new Mesh(\n this.geo_superiorBeam.geometry,\n MaterialManager.Instance().BEAM\n );\n\n let offsetXL = 0;\n let offsetXR =\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue -\n 2 * this.geo_superiorBeam.width;\n let offsetZ = 0;\n let offsetY = 0;\n\n let scaleX =\n (this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue -\n 2 * this.geo_superiorPost.width) /\n this.geo_superiorBeam.length;\n\n let views: Print2DView[];\n\n if (userDataPos.front) {\n offsetY =\n this.APP.sldBuildingHeight.currentValue - this.geo_superiorBeam.height;\n offsetZ =\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue -\n this.geo_superiorPost.width;\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n position: userDataPos,\n views: views,\n };\n mesh.position.set(offsetXL, 0, 0);\n mesh.scale.setX(scaleX);\n\n let capL = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capL.position.set(\n offsetXL + this.geo_beamEndCap.length / 2 - 2,\n 0,\n this.geo_beamEndCap.width / 2\n );\n capL.rotateY(Math.PI / 2);\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n let capR = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capR.position.set(\n offsetXR - this.geo_beamEndCap.length / 2 + 2,\n 0,\n this.geo_beamEndCap.width / 2\n );\n capR.rotateY(-Math.PI / 2);\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n position: userDataPos,\n views: views,\n name: \"GB\",\n };\n beamGroup.position.set(offsetX, offsetY, offsetZ);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n\n beamGroup.rotateY(Math.PI / 2);\n\n this.scene.add(beamGroup);\n }\n\n public getSection(): Printing2DGeometry {\n let objs = this.scene.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_POST ||\n o.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET ||\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_CENTER_POST\n );\n let beamGroups = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n let beamObjs: Object3D[] = [];\n for (let g of beamGroups) {\n beamObjs = beamObjs.concat(g.children);\n }\n\n objs = [...objs, ...beamObjs];\n let lsGeometries: Printing2DLine[] = [];\n\n for (let o of objs) {\n let box = new BoxHelper(o);\n box.geometry.translate(0, 5000, 0);\n // box.userData = {type: \"COLUMN_OUTLINE\"};\n // this.scene.add(box);\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n const planView = _.find(\n o.userData.views,\n (el) => el.viewType == ViewType.PLAN\n );\n const anotherViews = _.filter(\n o.userData.views,\n (el) => el.viewType != ViewType.PLAN\n );\n if (anotherViews.length > 0) {\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: outlineGeo.vertices,\n views: anotherViews,\n });\n }\n if (planView) {\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: outlineGeo.vertices\n .slice(0, 8)\n .filter((el, index) => [0, 1, 4, 5].includes(index)),\n views: [planView],\n });\n }\n }\n\n let rafterBeamGroups = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n );\n for (let o of rafterBeamGroups) {\n o.children.forEach((el) => {\n this.utils.getOutlineRafterBeam(el as Mesh, lsGeometries);\n });\n }\n return { lines: lsGeometries, texts: [] };\n }\n public simplifyGeo(geo: BufferGeometry): Geometry {\n let vertices = geo.getAttribute(\"position\").array;\n let lineGeo = new Geometry();\n for (let i = 0; i < vertices.length; i += 3) {\n lineGeo.vertices.push(\n new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2])\n );\n }\n\n //2-3\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n //3-7\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n //7-6\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n //6-2\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n\n //1-4\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n //4-8\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n //8-5\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n //5-1\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n return lineGeo;\n }\n\n private getBracketHeight(offset): number {\n let angle = this.APP.sltRoofPitch.currentValue;\n return (\n this.APP.sldFlyOverBracketHeight.currentValue -\n this.utils.tan(angle) * offset\n );\n }\n\n public destroy(): void {\n this.unregisterEvent();\n }\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldBuildingHeight,\n this.APP.sltExistingType,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldFlyOverBracketHeight,\n this.APP.sldBackOverhang,\n this.APP.sldFrontOverhang,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n ];\n //this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n\n this.controlsToRegisterEvent2 = [\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltColumnType,\n this.APP.sltRoofPitch,\n this.APP.sltWindClass,\n ];\n this.controlsToRegisterEvent2.forEach((c) =>\n c.addAction(this.objectSizeChangedHandle)\n );\n }\n private unregisterEvent(): void {\n // this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n // this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach((c) =>\n c.removeAction(this.objectSizeChangedHandle)\n );\n this.controlsToRegisterEvent2 = undefined;\n }\n public uiChanged(preVal: number, curVal: number): void {\n this.load();\n }\n private objectSizeChanged(pre: number, cur: number) {\n this.optimize().then(() => {\n this.load();\n });\n }\n}\n","import { Scene, Mesh, Object3D, Material, Group, FontLoader, TextBufferGeometry, PlaneBufferGeometry, Vector3, BoxHelper, Box3Helper, Matrix4, Box3, Geometry, LineSegments, LineBasicMaterial, Color, BoxBufferGeometry, Line, Line3 } from \"three\";\nimport { HomeComponent as AppComponent, HomeComponent } from '../../containers/home/home.component';\nimport { Util } from '../utils';\nimport { MaterialManager } from '../material.manager';\nimport { GeometryInfo, ViewType, LineType, IBay, Printing2DGeometry, Printing2DLine, Print2DText, Printing2DGeometryType } from '../models';\nimport { DIMENSION_LABEL_TYPE, GEOMETRY_TYPE } from 'src/app/app.config';\nimport { environment } from 'src/environments/environment';\nimport Dimension, { AddDimensionOptions } from \"src/app/models/Dimension\";\nimport {CONFIG as conf} from '../../app.config'\nimport { UI } from \"../ui\";\nimport { PatiosGableFreeStandingManager } from \".\";\nimport { FIT_DIMENSION, FIT_DIMENSION_MEDIUM, PANEL_DIRECTION } from \"src/app/app.constants\";\n\nexport class DimensionManager {\n private scene: Group;\n private APP: AppComponent;\n public listText: THREE.Object3D[] = [];\n private utils: Util;\n private MANAGER: PatiosGableFreeStandingManager;\n\n private eventHandleId: any;\n\n private material: Material;\n\n private materialManager: MaterialManager;\n\n private dimensionPatiosFrontBottom: Object3D;\n private dimensionPatiosFrontRight: Object3D;\n \n private dimensionPatiosRightBottom: Object3D;\n private dimensionPatiosRightLeft: Object3D;\n private dimensionPatiosRightRight: Object3D;\n\n private dimensionPatiosLeftBottom: Object3D;\n private dimensionPatiosLeftRight: Object3D;\n private dimensionPatiosLeftLeft: Object3D;\n\n private dimensionPatiosPlanRight: Object3D;\n private dimensionPatiosPlanBottom: Object3D;\n private dimensionPlanMiddle: Object3D;\n private dimensionPlanMidleLeft: Object3D;\n\n private dimensionPatiosLowerHeightDim: Object3D;\n private dimensionPatiosHigherHeightDim: Object3D;\n\n private lineCapGeo: GeometryInfo;\n private lineGeo: GeometryInfo;\n private textGeo: TextBufferGeometry;\n\n private dimensionDistance = 1500;\n private dimensionDistance2 = 500;\n\n private textDistance = 5000;\n\n private totalBaySize: number;\n\n private font: any\n private textParameter: any;\n private isReady = false;\n\n private controlsToRegisterEvent: Array;\n private options : AddDimensionOptions;\n private startPos: Vector3;\n private startMatrix: Matrix4;\n private startBayLength: number;\n\n constructor(app: AppComponent, freeStandingManager: PatiosGableFreeStandingManager) {\n this.utils = new Util();\n this.materialManager = MaterialManager.Instance();\n this.APP = app;\n this.scene = freeStandingManager.patiosGroup;\n this.material = MaterialManager.Instance().DIMENSION_TEXT;\n this.MANAGER = freeStandingManager;\n\n this.registerEvent();\n }\n\n \n public optimize() : Promise{\n return new Promise((resolve, reject) => {\n this.lineGeo = new GeometryInfo();\n this.lineGeo.geometry = new PlaneBufferGeometry(1000, 50);\n this.lineGeo.width = 50;\n this.lineGeo.length = 1000;\n\n this.lineCapGeo = new GeometryInfo();\n this.lineCapGeo.geometry = new PlaneBufferGeometry(50, 200);\n this.lineCapGeo.width = 50;\n this.lineCapGeo.length = 200;\n\n resolve();\n });\n }\n public load(): Promise { \n return new Promise((resolve, reject) => {\n this.unload();\n var loader = new FontLoader();\n \n this.dimensionPatiosFrontBottom = new Group();\n this.dimensionPatiosFrontBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n // this.dimensionPatiosFrontBottom.rotation.set(0,Math.PI,0);\n this.dimensionPatiosFrontBottom.visible = false;\n\n this.dimensionPatiosFrontRight = new Group();\n this.dimensionPatiosFrontRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosFrontRight.rotation.set(0,0,-Math.PI/2);\n this.dimensionPatiosFrontRight.visible = false;\n \n this.dimensionPatiosRightBottom = new Group();\n this.dimensionPatiosRightBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightBottom.rotation.set(0,-Math.PI/2,0);\n this.dimensionPatiosRightBottom.visible = false;\n\n this.dimensionPatiosRightLeft = new Group();\n this.dimensionPatiosRightLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightLeft.rotation.set(0,-Math.PI/2,-Math.PI/2);\n this.dimensionPatiosRightLeft.visible = false;\n\n this.dimensionPatiosRightRight = new Group();\n this.dimensionPatiosRightRight.rotation.set(0,-Math.PI/2,-Math.PI/2);\n this.dimensionPatiosRightRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightRight.visible = false;\n\n this.dimensionPatiosLeftBottom = new Group();\n this.dimensionPatiosLeftBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftBottom.rotation.set(0,-Math.PI/2,0);\n this.dimensionPatiosLeftBottom.visible = false;\n\n this.dimensionPatiosLeftRight = new Group();\n this.dimensionPatiosLeftRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftRight.rotation.set(Math.PI/2,-Math.PI/2,0);\n this.dimensionPatiosLeftRight.visible = false;\n\n this.dimensionPatiosLeftLeft = new Group();\n this.dimensionPatiosLeftLeft.rotation.set(0, -Math.PI / 2, Math.PI / 2);\n this.dimensionPatiosLeftLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftLeft.visible = false;\n\n this.dimensionPatiosPlanRight = new Group();\n this.dimensionPatiosPlanRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosPlanRight.rotation.set(-Math.PI/2, Math.PI, -Math.PI/2);\n\n this.dimensionPatiosPlanBottom = new Group();\n this.dimensionPatiosPlanBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosPlanBottom.rotation.set(-Math.PI / 2, 0, 0);\n\n this.dimensionPatiosLowerHeightDim = new Group();\n this.dimensionPatiosLowerHeightDim.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLowerHeightDim.rotation.set(0, 0, Math.PI / 2);\n \n this.dimensionPatiosHigherHeightDim = new Group();\n this.dimensionPatiosHigherHeightDim.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosHigherHeightDim.rotation.set(0, Math.PI / 2, Math.PI / 2);\n\n this.dimensionPlanMiddle = new Group();\n this.dimensionPlanMidleLeft = new Group();\n\n this.scene.add(\n this.dimensionPatiosPlanRight,\n this.dimensionPatiosFrontBottom, \n this.dimensionPatiosFrontRight, \n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom, \n this.dimensionPatiosLeftRight, \n this.dimensionPatiosLeftLeft, \n this.dimensionPatiosPlanBottom,\n this.dimensionPlanMiddle,\n this.dimensionPlanMidleLeft,\n this.dimensionPatiosLowerHeightDim,\n this.dimensionPatiosHigherHeightDim,\n );\n\n loader.load( environment.modelBaseUrl + '/../assets/fonts/helvetiker_regular.typeface.json', (font) => {\n this.font = font;\n\n this.textParameter = {\n font: this.font,\n size: 200,\n height: 5,\n curveSegments: 10\n };\n this.options = {\n container: HomeComponent.ins.scene,\n start: new Vector3(),\n end: new Vector3(),\n linePos: new Vector3(),\n views: [],\n allowDrag: true,\n textParameter: this.textParameter,\n textPos: new Vector3(),\n labelType: null,\n fitZ: 10,\n hasTextClone: false,\n axis: 'x',\n lineLength: 0,\n subtype: null,\n textUserData: null,\n onDragCallback: this.onDimDrag.bind(this),\n onDragStartCallback: this.onDimDragStart.bind(this),\n }\n\n this.isReady = true;\n this.draw();\n\n resolve();\n })\n });\n }\n\n public unload(){\n this.scene.remove(\n this.dimensionPatiosPlanRight,\n this.dimensionPatiosFrontBottom, \n this.dimensionPatiosFrontRight, \n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom, \n this.dimensionPatiosLeftRight,\n this.dimensionPatiosLeftLeft, \n this.dimensionPatiosPlanBottom,\n this.dimensionPlanMiddle,\n this.dimensionPlanMidleLeft,\n this.dimensionPatiosLowerHeightDim,\n this.dimensionPatiosHigherHeightDim,\n );\n }\n \n public draw(){\n if (!this.isReady) {\n return;\n }\n // this.dimensionPatiosPlanBottom.children = [];\n // this.dimensionPatiosPlanRight.children = [];\n this.dimensionPatiosLowerHeightDim.children = this.dimensionPatiosLowerHeightDim.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.LOWER_HEIGHT_DIM\n );\n this.dimensionPatiosHigherHeightDim.children = this.dimensionPatiosHigherHeightDim.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.BRAKET_HEIGHT_DIM\n );\n this.dimensionPatiosPlanBottom.children = this.dimensionPatiosPlanBottom.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.LEFT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.RIGHT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY\n );\n this.dimensionPatiosPlanRight.children = this.dimensionPatiosPlanRight.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.MULTI_SPAN\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.FRONT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.BACK_OVERHANG\n );\n this.dimensionPatiosFrontBottom.children = [];\n this.dimensionPatiosFrontRight.children = [];\n this.dimensionPatiosLeftBottom.children = [];\n this.dimensionPatiosLeftRight.children = [];\n this.dimensionPatiosLeftLeft.children = [];\n this.dimensionPatiosRightBottom.children = [];\n this.dimensionPatiosRightLeft.children = [];\n this.dimensionPatiosRightRight.children = [];\n this.dimensionPlanMiddle.children = [];\n this.dimensionPlanMidleLeft.children = [];\n \n this.totalBaySize = 0;\n for(let b of this.APP.dialogEditBay.listBay){\n this.totalBaySize += b.value;\n }\n\n this.drawDimensionLowerHeightDim();\n this.drawDimensionHigherHeightDim();\n\n this.drawDimensionPatiosPlanBottom();\n this.drawDimensionPatiosPlanRight();\n\n this.drawDimensionPatiosFrontBottom();\n this.drawDimensionPatiosFrontRight();\n\n this.drawDimensionPatiosLeftBottom();\n this.drawDimensionPatiosLeftRight();\n this.drawDimensionPatiosLeftLeft();\n\n this.drawDimensionPatiosRightBottom();\n this.drawDimensionPatiosRightLeft();\n this.drawDimensionPatiosRightRight();\n\n this.drawDimensionMidle();\n this.drawDimensionMidleLeft();\n\n this.APP.dimensionManager.draw();\n }\n\n private drawDimensionLowerHeightDim(){\n const height = UI.height - this.MANAGER.columnAndPurlinManager.geo_superiorBeam.height\n const offsetZ = UI.span + UI.multiSpan + FIT_DIMENSION;\n\n this.dimensionPatiosLowerHeightDim.position.set(0, height / 2, offsetZ);\n\n let textStr = this.utils.getDimensionValue(height);\n let options : AddDimensionOptions = {\n ... this.options,\n lineLength: height,\n container: this.dimensionPatiosLowerHeightDim,\n views: [],\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, 200, 0),\n labelType: DIMENSION_LABEL_TYPE.LOWER_HEIGHT_DIM,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [] },\n allowDrag: false\n }\n let dimBay = this.dimensionPatiosLowerHeightDim.children.find(el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.LOWER_HEIGHT_DIM\n ) as Dimension;\n if(!dimBay){\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n\n private drawDimensionHigherHeightDim(){\n const height = UI.height + ( UI.span + UI.multiSpan) / 2 * this.utils.tan(UI.patiosPitch)\n const offsetZ = - UI.overhangBack - FIT_DIMENSION_MEDIUM;\n const offsetX = UI.totalBayLength / 2 + FIT_DIMENSION_MEDIUM + UI.overhangRight;\n\n this.dimensionPatiosHigherHeightDim.position.set(offsetX, height / 2, offsetZ);\n\n let textStr = this.utils.getDimensionValue(height);\n let options : AddDimensionOptions = {\n ... this.options,\n lineLength: height,\n container: this.dimensionPatiosHigherHeightDim,\n views: [],\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.HIGHER_HEIGHT_DIM,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [] },\n allowDrag: false\n }\n let dimBay = this.dimensionPatiosHigherHeightDim.children.find(el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.HIGHER_HEIGHT_DIM\n ) as Dimension;\n if(!dimBay){\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n\n private drawDimensionMidleLeft() {\n let dimLeft = this.utils.createArrowLine([{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }]);\n dimLeft.visible = false;\n dimLeft.position.setX(-300)\n let textLeft = this.utils.createText(\"Panel direction\", [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }], this.textParameter, new Vector3(-500, 0, 650));\n textLeft.visible = false;\n\n let dimRight = dimLeft.clone()\n dimRight.position.setX(300);\n let textRight = textLeft.clone();\n textRight.position.setX(500);\n \n this.dimensionPlanMidleLeft.add(dimLeft);\n this.dimensionPlanMidleLeft.add(textLeft);\n this.dimensionPlanMidleLeft.add(dimRight);\n this.dimensionPlanMidleLeft.add(textRight);\n\n let offsetZ = UI.span / 2 - UI.existingWidth1 / 2;\n if (this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT) {\n let offsetX = this.totalBaySize / 2 + UI.overhangRight;\n this.dimensionPlanMidleLeft.position.set(offsetX, 0, offsetZ);\n this.dimensionPlanMidleLeft.rotation.set(0, -Math.PI / 2, 0);\n }\n else {\n let offsetX = - this.totalBaySize / 2 - UI.overhangLeft;\n this.dimensionPlanMidleLeft.rotation.set(0, Math.PI / 2, 0);\n this.dimensionPlanMidleLeft.position.set(offsetX, 0, offsetZ);\n }\n }\n private drawDimensionMidle() {\n let offsetX = 0;\n\n let dimLeft = this.utils.createArrowLine([{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }]);\n dimLeft.rotation.set(0, -Math.PI / 2, 0);\n dimLeft.visible = false;\n\n let textLeft = this.utils.createText(`${UI.patiosPitch} degree`, [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }], this.textParameter, new Vector3(-500, 0, 200));\n textLeft.userData.rotation = new Vector3(0, Math.PI / 2, 0)\n textLeft.visible = false;\n\n let dimRight = dimLeft.clone()\n dimRight.rotation.set(0, Math.PI / 2, 0);\n\n let textRight = textLeft.clone();\n textRight.position.setX(500);\n \n this.dimensionPlanMiddle.add(dimLeft);\n this.dimensionPlanMiddle.add(textLeft);\n this.dimensionPlanMiddle.add(dimRight);\n this.dimensionPlanMiddle.add(textRight);\n\n let offsetZ = UI.span / 2 - UI.existingWidth1 / 2;\n this.dimensionPlanMiddle.rotation.set(0, Math.PI / 2, 0);\n this.dimensionPlanMiddle.position.set(offsetX, 0, offsetZ);\n }\n\n private drawDimensionPatiosPlanBottom(){\n let offsetX = -this.totalBaySize/2;\n let offsetZ = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance2;\n\n let views = [ { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosPlanBottom.position.setZ(offsetZ);\n\n this.dimensionPatiosPlanBottom.children = this.dimensionPatiosPlanBottom.children.filter(el => \n el.userData?.groupType != DIMENSION_LABEL_TYPE.BAY\n || (el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY && el.userData?.bayNum < HomeComponent.ins.dialogEditBay.listBay.length)\n );\n \n for(let i = 0; i <= this.APP.dialogEditBay.listBay.length; i++){\n let b: IBay = {index: 0, value: 0, isCut: false};\n if(i < this.APP.dialogEditBay.listBay.length){\n b = this.APP.dialogEditBay.listBay[i];\n }\n\n if(i < this.APP.dialogEditBay.listBay.length){\n let textStr = this.utils.getDimensionValue(b.value);\n let options : AddDimensionOptions = {... this.options,\n lineLength: b.value,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(offsetX + b.value / 2, 0, 0),\n textPos: new Vector3(offsetX + b.value / 2, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.BAY,\n bayNum: i,\n }\n let dimBay = this.dimensionPatiosPlanBottom.children.find(el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY \n && el.userData?.bayNum == i\n ) as Dimension;\n if(!dimBay){\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n offsetX += b.value;\n }\n\n //Left over hang\n this.addOverhang(this.dimensionPatiosPlanBottom, offsetX, this.APP.sldLeftOverhang.currentValue, views, \"Left\", 0, \"z\", DIMENSION_LABEL_TYPE.LEFT_OVERHANG);\n this.addOverhang(this.dimensionPatiosPlanBottom, offsetX, this.APP.sldRightOverhang.currentValue, views, \"Right\", 0, \"z\", DIMENSION_LABEL_TYPE.RIGHT_OVERHANG);\n }\n onDimDrag(event){\n this.utils.handlerDimDragEvent(event, this.startPos, this.startMatrix, this.startBayLength);\n this.startPos = event.object.position.clone();\n }\n onDimDragStart(event){\n this.startPos = event.object.position.clone();\n this.startMatrix = event.object.matrixWorld.clone();\n if(event.object.userData?.dimType === DIMENSION_LABEL_TYPE.BAY){\n let bayNum = event.object.userData.bayNum;\n this.startBayLength = UI.listBay[+bayNum].value;\n }\n }\n private drawDimensionPatiosPlanRight(){\n \n let views = [ { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS } ];\n let offsetDimensionZ = this.APP.sldSpan.currentValue/2;\n \n\n let _dimensionDistane = this.dimensionDistance2;\n // if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n // if(this.APP.sldExistingWidth1.currentValue > 0){\n // _dimensionDistane = this.dimensionDistance;\n // }\n // }\n\n let offsetDimensionX = this.totalBaySize/2 + this.APP.sldRightOverhang.currentValue + this.APP.patiosManager.patiosGroup.position.x + _dimensionDistane;\n // if(this.APP.sldExistingLength.currentValue/2 > this.totalBaySize/2){\n // offsetDimensionX = this.APP.sldExistingLength.currentValue/2 + _dimensionDistane;\n // }\n \n // if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n // offsetDimensionX += this.APP.sldExistingLength2.currentValue;\n // }\n\n this.dimensionPatiosPlanRight.position.set(offsetDimensionX, 0, offsetDimensionZ);\n\n let textStr = this.utils.getDimensionValue(this.APP.sldSpan.currentValue);\n\n let options : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldSpan.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.SPAN,\n hasTextClone: false,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneRotation: new Vector3(0, Math.PI, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, -Math.PI, 0),\n fitZ: -10\n }\n let dimSpan = this.dimensionPatiosPlanRight.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN) as Dimension;\n if(!dimSpan){\n new Dimension(options);\n } else {\n dimSpan.update(options);\n }\n\n if(this.APP.sldMultiSpan.currentValue > 0){\n let offsetX = this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue;\n // - this.APP.existingWallManager.geo_existingWallL1.width \n // - this.APP.eaveManager.backOverhang;\n\n let optionsMul : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldMultiSpan.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue / 2, 0, 0),\n textPos: new Vector3(this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue / 2, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.MULTI_SPAN,\n hasTextClone: false,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneRotation: new Vector3(0, Math.PI, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, -Math.PI, 0),\n fitZ: -10\n }\n let dimMul = this.dimensionPatiosPlanRight.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.MULTI_SPAN) as Dimension;\n if(!dimMul){\n new Dimension(optionsMul);\n } else {\n dimMul.update(optionsMul);\n }\n } else {\n this.dimensionPatiosPlanRight.children = this.dimensionPatiosPlanRight.children.filter(el => el.userData?.groupType != DIMENSION_LABEL_TYPE.MULTI_SPAN)\n }\n\n let offsetRight = this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue;\n let offsetLeft = this.APP.sldSpan.currentValue / 2;// + this.APP.sldMultiSpan.currentValue;\n\n this.addOverhang(this.dimensionPatiosPlanRight, offsetRight, this.APP.sldFrontOverhang.currentValue, views, \"Right\", Math.PI, \"y\", DIMENSION_LABEL_TYPE.FRONT_OVERHANG);\n this.addOverhang(this.dimensionPatiosPlanRight, offsetLeft, this.APP.sldBackOverhang.currentValue, views, \"Left\", Math.PI, \"y\", DIMENSION_LABEL_TYPE.BACK_OVERHANG);\n\n }\n private drawDimensionPatiosFrontBottom(){\n let dimOffsetY = -this.dimensionDistance2;\n this.dimensionPatiosFrontBottom.position.set(0,dimOffsetY,0);\n\n let views = [ { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosPlanBottom.children.forEach( groupDim => {\n groupDim.children.filter(c => c.userData.subtype != GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT).forEach(e => {\n let dim = e.clone();\n dim.userData['views'] = views;\n if(dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n dim.rotation.set(0,Math.PI,0);\n dim.userData['rotation'] = new Vector3(0,0,0);\n }\n this.dimensionPatiosFrontBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosFrontRight(){\n let views = [ { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS } ];\n\n let _dimensionDistane = this.dimensionDistance2;\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n if(this.APP.sldExistingWidth1.currentValue > 0){\n _dimensionDistane = this.dimensionDistance;\n }\n }\n let height = Math.ceil(this.APP.sldBuildingHeight.currentValue + (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2 * this.utils.tan(this.APP.sltRoofPitch.currentValue))\n \n let dimOffsetX = this.totalBaySize/2 + this.APP.patiosManager.patiosGroup.position.x + _dimensionDistane;\n let dimOffsetY = height/2;\n\n // if(this.APP.sldExistingLength.currentValue/2 > this.totalBaySize/2){\n // dimOffsetX = this.APP.sldExistingLength.currentValue/2 + _dimensionDistane;\n // }\n \n // if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n // dimOffsetX += this.APP.sldExistingLength2.currentValue;\n // }\n\n this.dimensionPatiosFrontRight.position.set(dimOffsetX,dimOffsetY,0);\n \n let scaleLength = height/this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-dimOffsetY);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(dimOffsetY);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(height);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0,0,-Math.PI/2) };\n text.position.set(0,200,0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosFrontRight.add(line, cap1, cap2, text);\n }\n private drawDimensionPatiosLeftBottom(){\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z;\n \n this.dimensionPatiosLeftBottom.position.set(0,dimOffsetY,dimOffsetZ);\n\n let views = [ \n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n this.dimensionPatiosPlanRight.children.forEach( groupDim => {\n groupDim.children.forEach(e => {\n let dim = e.clone();\n dim.userData['views'] = views;\n if(dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n dim.rotation.set(0,0,0);\n dim.userData['views'] = [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }];\n dim.userData['rotation'] = new Vector3(0,0,0);\n }\n this.dimensionPatiosLeftBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosLeftRight(){\n let dimOffsetY = Math.ceil(this.APP.sldBuildingHeight.currentValue + (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2 * this.utils.tan(this.APP.sltRoofPitch.currentValue));\n let dimOffsetZ = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance2;\n \n\n this.dimensionPatiosLeftRight.position.set(0,dimOffsetY/2,dimOffsetZ);\n\n let views = [ \n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n \n let scaleLength = dimOffsetY / this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-dimOffsetY/2);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(dimOffsetY/2);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(dimOffsetY);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }], rotation: new Vector3(-Math.PI / 2, 0, 0) };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosLeftRight.add(line, cap1, cap2, text);\n }\n private drawDimensionPatiosLeftLeft() {\n let dimOffsetY = this.APP.sldBuildingHeight.currentValue;\n let dimOffsetZ = this.APP.sldBackOverhang.currentValue + 500;\n\n this.dimensionPatiosLeftLeft.position.set(0, dimOffsetY / 2, -dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n let offsetLength = dimOffsetY;\n let scaleLength = offsetLength / this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength / 2);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength / 2);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }], rotation: new Vector3(Math.PI / 2, 0, 0) };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosLeftLeft.add(line, cap1, cap2, text);\n\n //this.dimensionPatiosFrontRight.children.forEach(e => {\n // let dim = e.clone();\n // dim.userData['views'] = views;\n // if(dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n // dim.userData['views'] = [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }];\n // dim.userData['rotation'] = new Vector3(-Math.PI/2,0,0);\n // }\n // this.dimensionPatiosLeftRight.add(dim);\n //});\n }\n private drawDimensionPatiosRightBottom(){\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z;\n \n this.dimensionPatiosRightBottom.position.set(0,dimOffsetY,dimOffsetZ);\n\n let views = [ { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosPlanRight.children.forEach(groupDim => {\n groupDim.children.forEach(e => {\n if(e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n let dim = e.clone();\n dim.userData['views'] = views;\n dim.userData['rotation'] = new Vector3(0,0,0);\n \n this.dimensionPatiosRightBottom.add(dim);\n }\n });\n })\n }\n private drawDimensionPatiosRightLeft(){\n let dimOffsetY = Math.ceil(this.APP.sldBuildingHeight.currentValue + (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2 * this.utils.tan(this.APP.sltRoofPitch.currentValue));\n let dimOffsetZ = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance2;\n\n this.dimensionPatiosRightLeft.position.set(0,dimOffsetY/2,dimOffsetZ);\n\n let views = [ { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosLeftRight.children.forEach(e => {\n if(e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n let dim = e.clone();\n dim.userData['views'] = views;\n dim.userData['rotation'] = new Vector3(Math.PI/2,0,0);\n dim.rotation.set(0,Math.PI,0);\n this.dimensionPatiosRightLeft.add(dim);\n }\n });\n }\n private drawDimensionPatiosRightRight(){\n let dimOffsetY = this.APP.sldBuildingHeight.currentValue;\n let dimOffsetZ = this.APP.sldBackOverhang.currentValue + 500;\n \n this.dimensionPatiosRightRight.position.set(0,dimOffsetY/2,-dimOffsetZ);\n\n let views = [ { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosLeftLeft.children.forEach(e => {\n if(e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){ \n let dim = e.clone();\n dim.userData['views'] = views;\n dim.userData['rotation'] = new Vector3(-Math.PI/2,0,0);\n dim.rotation.set(0,Math.PI,0);\n dim.position.set(dim.position.x, -dim.position.y, dim.position.z);\n this.dimensionPatiosRightRight.add(dim);\n }\n });\n }\n \n \n private addOverhang(groupDim: Object3D, offset: number, overhangValue: number, views: any, side: string, rotateText: number, axis: string, labelType?: string) {\n if (overhangValue == 0){\n let dim = groupDim.children.find(el => el.userData?.groupType == labelType) as Dimension;\n if(dim){\n groupDim.remove(dim)\n }\n return;\n }\n\n let textStr = this.utils.getDimensionValue(overhangValue);\n\n let textRotation = new Vector3();\n let textUserData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, position: { overhang: true }};\n if (axis === \"z\") {\n textRotation.setZ(rotateText);\n textUserData['rotation'] = new Vector3(0, 0, -rotateText / 2);\n textUserData['position']['bottom'] = true;\n }\n else if (axis === \"y\") {\n textRotation.setY(rotateText);\n textUserData['rotation'] = new Vector3(0, -rotateText / 2, 0);\n }\n else if (axis === \"x\") {\n textRotation.setX(rotateText);\n textUserData['rotation'] = new Vector3(-rotateText / 2, 0, 0);\n }\n\n let linePos = new Vector3();\n if (side === \"Left\") {\n linePos.setX(-offset - overhangValue / 2);\n }\n else if (side === \"Right\") {\n linePos.setX(offset + overhangValue / 2);\n }\n let fitZ = 0;\n if(labelType){\n if(axis === 'z'){\n fitZ = 10;\n } else if(axis === 'y'){\n fitZ = -10;\n }\n }\n let options : AddDimensionOptions = {... this.options,\n lineLength: overhangValue,\n container: groupDim,\n views: views,\n linePos: linePos,\n textPos: linePos.clone().setY(linePos.y - 200),\n labelType: labelType ? labelType : null,\n fitZ: fitZ,\n textRotation: textRotation,\n textUserData: textUserData\n }\n let dim = groupDim.children.find(el => el.userData?.groupType == labelType) as Dimension;\n if(!dim){\n new Dimension(options);\n } else {\n dim.update(options)\n }\n }\n private getTextCover(textGeo: TextBufferGeometry, labelType: string, pos: Vector3, fitZ = 0, bayNum?: number){\n let textSize = new Vector3();\n textGeo.boundingBox.getSize(textSize)\n\n let textCover = new Mesh(new BoxBufferGeometry(textSize.x, textSize.y, textSize.z))\n textCover.position.set(pos.x , pos.y, pos.z + fitZ);\n textCover.userData = { type: GEOMETRY_TYPE.TEXT_COVER, labelType };\n if(bayNum !== undefined){\n textCover.userData['bayNum'] = bayNum;\n }\n textCover.material['opacity'] = 0;\n textCover.material['transparent'] = true;\n\n return textCover\n }\n\n public getOutlines(): Printing2DGeometry{\n let lsGeometries: Printing2DLine[] = [];\n let lsText: Print2DText[] = [];\n \n for(let dim of [\n ...this.dimensionPatiosPlanBottom.children,\n ...this.dimensionPatiosPlanRight.children,\n ...this.dimensionPatiosFrontBottom.children,\n ...this.dimensionPatiosFrontRight.children,\n ...this.dimensionPatiosLeftBottom.children,\n ...this.dimensionPatiosLeftRight.children,\n ...this.dimensionPatiosLeftLeft.children,\n ...this.dimensionPatiosRightBottom.children,\n ...this.dimensionPatiosRightLeft.children,\n ...this.dimensionPatiosRightRight.children,\n ...this.dimensionPlanMiddle.children,\n ...this.dimensionPlanMidleLeft.children\n ]){\n if(!dim.userData.views){\n console.log(\"TEXT NO VIEW\", dim);\n continue;\n }\n \n if(dim.type == 'Group'){\n dim.children.forEach(el => {\n el.updateMatrix();\n let _clone = el.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(el.matrix));\n let _box = new Box3().setFromObject(_clone);\n \n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n \n el.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(el.matrixWorld);\n \n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(el.matrixWorld);\n \n let textRotation = el.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, el, pos, textRotation, points)\n })\n } else{\n dim.updateMatrix();\n let _clone = dim.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(dim.matrix));\n let _box = new Box3().setFromObject(_clone);\n \n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n \n dim.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(dim.matrixWorld);\n \n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(dim.matrixWorld);\n \n let textRotation = dim.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, dim, pos, textRotation, points)\n }\n }\n \n return { lines: lsGeometries, texts: lsText };\n }\n private getDimInfo(lsGeometries: Printing2DLine[], lsText: Print2DText[], dim: Object3D, pos: Vector3, textRotation: Vector3, points: Vector3[]){\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && dim.userData.views && dim.userData.value) {\n let box = new Box3().setFromObject(dim.parent);\n let startEnd = this.utils.getStartEndPoint(box);\n let line = new Line3(startEnd[0], startEnd[1]);\n \n let projectPoint = new Vector3();\n line.closestPointToPoint(pos, true, projectPoint);\n let _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(10));\n \n if(dim.userData.position?.bottom){\n if(dim.userData.position?.overhang){\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(180));\n }\n else{\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(120));\n }\n }\n else{\n if(dim.userData.position?.overhang){\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(100));\n }\n }\n \n let p = new Vector3().applyMatrix4(dim.matrixWorld);\n \n lsText.push({\n value: dim.userData.value,\n position: p,\n rotation: textRotation,\n views: dim.userData.views\n });\n \n \n }\n else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_LINE) {\n // this.scene.add(new LineSegments(new Geometry().setFromPoints(points), new LineBasicMaterial({color: new Color('red')})));\n \n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_CAP) {\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n else if (dim.userData.type == \"Arrow\") {\n let geo = ((dim as Line).geometry as Geometry).clone();\n geo.applyMatrix4(dim.matrixWorld);\n lsGeometries.push({\n vertices: geo.vertices,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n }\n public destroy(): void {\n this.unregisterEvent();\n this.unload();\n }\n\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldFrontOverhang,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sldExistingWallHeight,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch\n ];\n this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId)); \n }\n private unregisterEvent(): void{\n this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n this.controlsToRegisterEvent = undefined;\n }\n\n\n public uiChanged(preVal: number, curVal: number): void {\n this.draw();\n }\n}\n","import { HomeComponent as AppComponent } from '../../containers/home/home.component';\nimport { ColumnAndPurlinManager } from './column-and-purlin.manager';\nimport { RoofManager } from './roof.manager';\nimport { PatiosManager } from '../patios.manager';\nimport { Printing2DGeometry } from '../models';\nimport { Group, Box3 } from 'three';\nimport { GEOMETRY_CATEGORY } from 'src/app/app.config';\nimport { DimensionManager } from './dimension.manager';\nimport { SliderInputComponent } from 'src/app/component/slider-input/slider-input.component';\n\nexport class PatiosGableFreeStandingManager implements PatiosManager{\n patiosGroup: Group;\n public boundingBox: Box3;\n public columnAndPurlinManager: ColumnAndPurlinManager;\n public roofManager: RoofManager;\n public dimesionManager: DimensionManager;\n public cutoutCondition: boolean;\n public get rakecutCondition(): boolean{\n return true;\n }\n public ignoreBayEvent: boolean = false;\n public patiosWidth: number;\n public patiosLength: number;\n public firstLoad = true;\n private controlsToRegisterEvent: Array;\n private APP: AppComponent;\n private updateEventHandle: any;\n\n constructor(app: AppComponent){\n this.APP = app;\n this.patiosGroup = new Group();\n this.patiosGroup.userData = { category: GEOMETRY_CATEGORY.PATIOS }\n app.scene.add(this.patiosGroup);\n\n this.roofManager = new RoofManager(app, this);\n this.columnAndPurlinManager = new ColumnAndPurlinManager(app, this);\n this.dimesionManager = new DimensionManager(app, this);\n\n this.registerEvents();\n }\n\n load(): Promise {\n return Promise.all([\n this.roofManager.optimize(),\n this.columnAndPurlinManager.optimize(),\n this.dimesionManager.optimize()\n ])\n .then(() => {\n this.roofManager.load();\n this.columnAndPurlinManager.load();\n this.dimesionManager.load();\n });\n }\n loadBracket(bracketQuantity: number): void {\n \n }\n loadBracketCutout(bracketQuantity: number): void{\n \n }\n loadSideGableBracket(bracketQuantity: number): void{\n \n }\n enableCutout(enable: boolean){\n \n }\n changeToExistingTypeBoth(){\n \n }\n getOutlines(): Printing2DGeometry {\n let dimensionOutline = this.dimesionManager.getOutlines();\n return { \n lines: [\n ...this.columnAndPurlinManager.getSection().lines,\n ...this.roofManager.getOutLines().lines,\n ...dimensionOutline.lines\n ], \n texts: dimensionOutline.texts\n }\n }\n public destroy(): void {\n this.columnAndPurlinManager.destroy();\n this.roofManager.destroy();\n this.dimesionManager.destroy();\n this.unRegisterEvent();\n }\n registerEvents(): void {\n this.updateEventHandle = this.update.bind(this);\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldBuildingHeight,\n this.APP.sltExistingType,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldFlyOverBracketHeight,\n this.APP.sldBackOverhang,\n this.APP.sldFrontOverhang,\n this.APP.sltRoofThickness, \n this.APP.sltGutterType,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sldExistingWallHeight,\n this.APP.sltBeamLayoutShow,\n this.APP.sltPanelDirection,\n this.APP.sltPanelDirectionShow,\n this.APP.sltColourBeam,\n this.APP.btnTurnOnPanel,\n ];\n this.controlsToRegisterEvent.forEach(c => { c.addAction(this.updateEventHandle); });\n }\n unRegisterEvent(): void {\n this.controlsToRegisterEvent.forEach(c => c.removeAction(this.updateEventHandle));\n }\n update(preVal: number, curVal: number): void {\n this.patiosGroup.position.setX(0);\n this.patiosGroup.position.setZ(- (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2);\n Promise.all([\n this.roofManager.load(),\n this.columnAndPurlinManager.load()\n ]).then(() => {\n // this.boundingBox = this.APP.utils.getObjectsBoundingBox(\n // this.patiosGroup.children.filter(c => c.userData.type != GEOMETRY_TYPE.DIMENSION && c.userData.type != GEOMETRY_TYPE.ROOF_PATIOS)\n // );\n //this.boundingBox = this.getPatiosBox();\n this.dimesionManager.draw();\n })\n }\n}\n","import { Scene, Mesh, Vector3, Material, Plane, Group, PlaneHelper, BufferGeometry, Geometry, LineSegments, Color } from \"three\";\nimport { Util } from \"../utils\";\nimport { CONFIG as env, GEOMETRY_TYPE, GEOMETRY_CATEGORY } from '../../app.config';\nimport { HomeComponent as AppComponent } from '../../containers/home/home.component';\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport { GeometryInfo, Printing2DGeometry, Printing2DLine, Printing2DGeometryType, Print2DView, ViewType, LineType } from '../models';\nimport { PatiosGableFreeStandingManager } from '.';\nimport { PANEL_DIRECTION } from 'src/app/app.constants';\nimport { UI } from \"../ui\";\n\nexport class RoofManager {\n private scene: Group;\n private APP: AppComponent;\n private MANAGER: PatiosGableFreeStandingManager;\n private material: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private geo_RoofPanel: GeometryInfo;\n private geo_roofPanelBase: GeometryInfo;\n private geo_roofPanelBargeCappingLeft: GeometryInfo;\n private geo_roofPanelBargeCappingRight: GeometryInfo;\n private geo_roofPanelBargeCappingBack: GeometryInfo;\n private geo_gutterBack: GeometryInfo;\n private zFlashingGeo: GeometryInfo;\n private geo_gutterCap: GeometryInfo;\n public ridgeGeo: GeometryInfo;\n\n private roofGroupFront: Group;\n private roofGroupBack: Group;\n\n private eventHandleId: any;\n\n private totalBaySize: number;\n\n private objectSizeChangedHandle: any;\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n private FIT_SHEETING: number = 0;\n private FIT_SHEETING_BASE: number = -60;\n\n\n constructor(app: AppComponent, freeStandingManager: PatiosGableFreeStandingManager) {\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.APP = app;\n this.MANAGER = freeStandingManager;\n this.scene = new Group();\n freeStandingManager.patiosGroup.add(this.scene)\n this.material = MaterialManager.Instance().ROOF;\n\n this.registerEvent();\n }\n \n \n public optimize() : Promise{\n return new Promise((resolve, reject) => {\n this.geo_RoofPanel = this.geometryManager.getRoofSheetPanel();\n this.geo_RoofPanel.geometry\n .translate(this.geo_RoofPanel.width/2+2,this.geo_RoofPanel.height/2 -1,this.geo_RoofPanel.length/2);\n \n this.geo_roofPanelBase = this.geometryManager.getRoofBase();\n this.geo_roofPanelBase.geometry\n .translate(this.geo_roofPanelBase.width/2,\n this.geo_roofPanelBase.height/2,\n this.geo_roofPanelBase.length / 2);\n\n this.zFlashingGeo = this.geometryManager.getZFlashing();\n this.zFlashingGeo.geometry.translate(0, -3, 0);\n \n //Barge capping\n this.geo_roofPanelBargeCappingLeft = this.geometryManager.getBarge();\n this.geo_roofPanelBargeCappingLeft.geometry\n .rotateY(Math.PI)\n .translate(this.geo_roofPanelBargeCappingLeft.width/2 - 3,this.geo_roofPanelBargeCappingLeft.height/2 - (this.APP.sltDripBarge.currentValue ? 9 : 1),this.geo_roofPanelBargeCappingLeft.length/2);\n\n this.geo_roofPanelBargeCappingRight = this.geometryManager.getBarge();\n this.geo_roofPanelBargeCappingRight.geometry\n .translate(-this.geo_roofPanelBargeCappingRight.width/2 + 3,this.geo_roofPanelBargeCappingRight.height/2 - (this.APP.sltDripBarge.currentValue ? 9 : 1),this.geo_roofPanelBargeCappingRight.length/2);\n\n this.geo_roofPanelBargeCappingBack = this.geometryManager.getBarge();\n this.geo_roofPanelBargeCappingBack.geometry\n .rotateY(Math.PI/2)\n .translate(this.geo_roofPanelBargeCappingBack.length/2,this.geo_roofPanelBargeCappingBack.height/2 - (this.APP.sltDripBarge.currentValue ? 9 : 1),this.geo_roofPanelBargeCappingBack.width/2 - 3);\n\n //Gutter\n this.geo_gutterBack = this.geometryManager.getGutter();\n this.geo_gutterBack.geometry\n .rotateY(-Math.PI/2)\n .translate(this.geo_gutterBack.length / 2, -20, this.geo_gutterBack.width / 2);\n\n //Gutter cap\n this.geo_gutterCap = this.geometryManager.getGuterEndCap();\n this.geo_gutterCap.geometry\n .rotateY(-Math.PI / 2)\n .translate(0, -20, this.geo_gutterCap.length / 2);\n\n this.ridgeGeo = this.geometryManager.getRidge();\n this.ridgeGeo.geometry.translate(- this.ridgeGeo.width / 2, -this.ridgeGeo.height / 2, 0);\n // this.ridgeGeo.geometry.rotateY(Math.PI / 2)\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PATIOS));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.RIDGE_CAPPING));\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.SHEET_OUTLINE));\n\n //test\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == 'HELPER'));\n \n this.totalBaySize = 0;\n for(let b of this.APP.dialogEditBay.listBay){\n this.totalBaySize += b.value;\n }\n \n this.addRoofFront();\n this.addRoofBack();\n\n let offsetLeft = this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue - this.MANAGER.patiosGroup.position.x;\n let offsetRight = this.totalBaySize/2 + this.APP.sldRightOverhang.currentValue + this.MANAGER.patiosGroup.position.x;\n let clipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let clipingPlaneRight = new Plane( new Vector3( -1, 0, 0 ), offsetRight );\n \n this.material.clippingPlanes = [clipingPlaneLeft, clipingPlaneRight];\n MaterialManager.Instance().ROOF_BASE.clippingPlanes = [clipingPlaneLeft, clipingPlaneRight];\n\n // this.material.clippingPlanes = [];\n // MaterialManager.Instance().ROOF_BASE.clippingPlanes = [];\n\n let width = this.totalBaySize + this.APP.sldLeftOverhang.currentValue + this.APP.sldRightOverhang.currentValue;\n let roofSheetingCount = Math.ceil(width/this.geo_RoofPanel.width);\n let offsetX = -(this.totalBaySize/2 + this.APP.sldLeftOverhang.currentValue);\n\n //panel direction\n let panelDirectionOfset = 1;\n if(this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT){\n offsetX = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue - this.geo_RoofPanel.width;\n panelDirectionOfset = -1;\n }\n else if(this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.LEFT_TO_RIGHT){\n offsetX = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n }\n\n // let helper = new PlaneHelper(clipingPlaneRight, 10000, 0xffff00);\n // helper.userData = { type: 'HELPER' };\n // this.APP.scene.add(helper);\n\n const OFFSET_TOLE_AND_BASE = 10\n\n for (let index = 0; index < roofSheetingCount; index++) {\n let last = index == roofSheetingCount - 1;\n \n this.addRoofSheetingFront(offsetX + OFFSET_TOLE_AND_BASE);\n this.addRoofSheetingBack(offsetX + OFFSET_TOLE_AND_BASE);\n\n this.addRoofSheetingBaseFront(offsetX, last);\n this.addRoofSheetingBaseBack(offsetX, last);\n\n offsetX += this.geo_RoofPanel.width * panelDirectionOfset;\n }\n\n this.addZFlashingFront();\n this.addZFlashingBack();\n\n this.addBargeCappingFront();\n this.addBargeCappingBack();\n \n this.addGutterFront();\n this.addGutterBack();\n\n this.addRidgeCapping();\n\n this.showPanelOutline();\n\n this.scene.visible = UI.showRoof\n\n resolve();\n });\n }\n public getOutLines(): Printing2DGeometry{\n \n let objs = this.roofGroupFront.children.filter(o => \n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL \n || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE \n ).concat(...this.roofGroupBack.children.filter(o => \n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL \n || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE \n ));\n\n let gutterObjs = this.roofGroupFront.children.find(o => o.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS).children.concat(...this.roofGroupBack.children.find(o => o.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS).children);\n objs = [...objs, ...gutterObjs];\n\n let lsGeometries: Printing2DLine[] = [];\n\n let offsetLeft = this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue - this.MANAGER.patiosGroup.position.x;\n let offsetRight = this.totalBaySize/2 + this.APP.sldRightOverhang.currentValue + this.MANAGER.patiosGroup.position.x;\n let roofClipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let roofClipingPlane = new Plane( new Vector3( -1, 0, 0 ), offsetRight );\n\n for(let o of objs){ \n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale((o as Mesh), 60);\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n outlineGeo.translate(0,5000,0); \n\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL) {\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlane);\n }\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE) {\n outlineGeo = this.utils.clipOutlineBasePanel(outlineGeo, roofClipingPlaneLeft);\n outlineGeo = this.utils.clipOutlineBasePanel(outlineGeo, roofClipingPlane);\n }\n \n // var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"SHEETING_OUTLINE\"};\n // this.APP.scene.add( line );\n\n let simplifiedGeo = this.simplifyGeo(outlineGeo);\n lsGeometries.push({ \n objectType: o.userData.type,\n vertices: simplifiedGeo.vertices, \n views: o.userData.views\n });\n\n // var line = new LineSegments( simplifiedGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"SHEETING_OUTLINE\"};\n // this.APP.scene.add( line );\n }\n\n let ridgeCapping = this.scene.children.find(el => el.userData.type === GEOMETRY_TYPE.RIDGE_CAPPING)\n if(ridgeCapping){\n ridgeCapping.children.forEach(el => {\n this.utils.createOutline(el as Mesh, lsGeometries);\n })\n }\n\n lsGeometries.push({\n objectType: GEOMETRY_TYPE.ROOF_COVER,\n vertices: this.makeRoofPolygon(),\n color: this.utils.convertHexColorToRgb(`#${new Color(UI.panelColor).getHexString()}`),\n views: [\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ]\n });\n\n return { lines: lsGeometries, texts: [] };\n }\n makeRoofPolygon() {\n const polygon = this.utils.getRoofCoverPolygonForLRRoof()\n this.MANAGER.patiosGroup.updateWorldMatrix(true, true)\n return polygon.map(el => (el as Vector3).applyMatrix4(this.MANAGER.patiosGroup.matrixWorld).add(new Vector3(0, 0, - UI.overhangBack)))\n }\n public showPanelOutline(){\n if(this.APP.sltPanelDirectionShow.currentValue == false)\n return;\n \n let objs = this.roofGroupFront.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ).concat(...this.roofGroupBack.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ));\n \n let offsetLeft = this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue - this.MANAGER.patiosGroup.position.x;\n let offsetRight = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue + this.MANAGER.patiosGroup.position.x;\n let roofClipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let roofClipingPlaneRight = new Plane(new Vector3(-1, 0, 0), offsetRight);\n \n \n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale((o as Mesh), 60);\n \n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n //outlineGeo.translate(0, 5000, 0);\n \n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE) {\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneRight);\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n }\n \n var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n line.userData = {type: GEOMETRY_TYPE.SHEET_OUTLINE};\n this.APP.scene.add( line );\n }\n }\n public simplifyGeo(geo: BufferGeometry): Geometry{\n let simplifiedGeo = new Geometry();\n let vertices = geo.getAttribute('position').array;\n for(let i = 0; i < vertices.length; i+=3){\n simplifiedGeo.vertices.push(new Vector3(vertices[i], vertices[i+1] - 5000, vertices[i+2]));\n }\n return simplifiedGeo;\n } \n public addRoofFront(){\n this.roofGroupFront = null;\n this.roofGroupFront = new Group();\n this.roofGroupFront.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PATIOS };\n\n let offsetY = this.getRoofOffsetY();\n let offsetZ = (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2;\n\n this.roofGroupFront.position.setY(offsetY);\n this.roofGroupFront.position.setZ(offsetZ);\n this.roofGroupFront.rotateX(this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue));\n\n this.scene.add(this.roofGroupFront);\n }\n public addRoofBack(){\n this.roofGroupBack = null;\n this.roofGroupBack = new Group();\n this.roofGroupBack.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PATIOS };\n\n let offsetY = this.getRoofOffsetY();\n let offsetZ = (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2;\n\n this.roofGroupBack.position.setY(offsetY);\n this.roofGroupBack.position.setZ(offsetZ);\n this.roofGroupBack.rotateX(-this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue));\n\n this.scene.add(this.roofGroupBack);\n }\n public addRoofSheetingFront(offsetX: number){\n let mesh = new Mesh(this.geo_RoofPanel.geometry, this.material);\n\n let offsetSheet = 0;\n if(this.APP.sltRoofSheetingType.currentValue == 0 || this.APP.sltRoofSheetingType.currentValue == 1){\n offsetSheet = 30;\n }\n else{\n offsetSheet = 12;\n }\n \n const offsetPitch = this.geo_roofPanelBase.height * this.utils.tan(UI.patiosPitch)\n let scaleZ =( ((this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2\n + this.APP.sldFrontOverhang.currentValue)/this.utils.cos(this.APP.sltRoofPitch.currentValue) - offsetPitch)/this.geo_RoofPanel.length;\n \n let offsetY = this.geo_roofPanelBase.height - offsetSheet;\n let offsetZ = 0;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setZ(scaleZ);\n mesh.userData = { \n category: GEOMETRY_CATEGORY.PATIOS, \n type: GEOMETRY_TYPE.ROOF_PANEL, \n views: views,\n dir: UI.panelDirection === PANEL_DIRECTION.LEFT_TO_RIGHT ? \"L-R\" : \"R-L\"\n };\n \n this.roofGroupFront.add(mesh);\n }\n public addRoofSheetingBack(offsetX: number){\n let mesh = new Mesh(this.geo_RoofPanel.geometry, this.material);\n\n let offsetSheet = 0;\n if(this.APP.sltRoofSheetingType.currentValue == 0 || this.APP.sltRoofSheetingType.currentValue == 1){\n offsetSheet = 30;\n }\n else{\n offsetSheet = 12;\n }\n \n const offsetPitch = this.geo_roofPanelBase.height * this.utils.tan(UI.patiosPitch)\n let scaleZ = (((this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2\n + this.APP.sldBackOverhang.currentValue)/this.utils.cos(this.APP.sltRoofPitch.currentValue) - offsetPitch)/this.geo_RoofPanel.length;\n \n let offsetY = this.geo_roofPanelBase.height - offsetSheet;\n let offsetZ = - scaleZ * this.geo_RoofPanel.length;\n\n let views: Print2DView[] = [\n // { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setZ(scaleZ);\n mesh.userData = { \n category: GEOMETRY_CATEGORY.PATIOS, \n type: GEOMETRY_TYPE.ROOF_PANEL, \n views: views,\n dir: UI.panelDirection === PANEL_DIRECTION.RIGHT_TO_LEFT ? \"L-R\" : \"R-L\"\n };\n \n this.roofGroupBack.add(mesh);\n }\n public addRoofSheetingBaseFront(offsetX: number, isLast: boolean){\n let mesh: Mesh = new Mesh(this.geo_roofPanelBase.geometry, MaterialManager.Instance().ROOF_BASE);\n const offsetPitch = this.geo_roofPanelBase.height * this.utils.tan(UI.patiosPitch)\n let scaleZ = (((this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2\n + this.APP.sldFrontOverhang.currentValue\n )/this.utils.cos(this.APP.sltRoofPitch.currentValue) - offsetPitch + this.FIT_SHEETING_BASE)/this.geo_roofPanelBase.length;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n mesh.position.set(offsetX + 10, 0, 0);\n mesh.scale.setZ(scaleZ);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PANEL_BASE, views: views };\n if(isLast){\n mesh.userData.last = true;\n }\n this.roofGroupFront.add(mesh);\n }\n public addRoofSheetingBaseBack(offsetX: number, isLast: boolean){\n let mesh: Mesh = new Mesh(this.geo_roofPanelBase.geometry, MaterialManager.Instance().ROOF_BASE);\n const offsetPitch = this.geo_roofPanelBase.height * this.utils.tan(UI.patiosPitch)\n let scaleZ = (((this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2\n + this.APP.sldBackOverhang.currentValue\n )/this.utils.cos(this.APP.sltRoofPitch.currentValue) - offsetPitch + this.FIT_SHEETING_BASE)/this.geo_roofPanelBase.length;\n\n let views: Print2DView[] = [\n // { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n mesh.position.set(offsetX + 10, 0, - scaleZ * this.geo_roofPanelBase.length);\n mesh.scale.setZ(scaleZ);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PANEL_BASE, views: views };\n if(isLast){\n mesh.userData.last = true;\n }\n this.roofGroupBack.add(mesh);\n }\n private addBargeCappingFront(){\n let mesh: Mesh;\n\n let offsetLeft = this.totalBaySize/2 + this.APP.sldLeftOverhang.currentValue;\n let offsetRight = this.totalBaySize/2 + this.APP.sldRightOverhang.currentValue;\n\n let scaleX = (this.APP.sldLeftOverhang.currentValue \n + this.totalBaySize \n + this.APP.sldRightOverhang.currentValue)/this.geo_roofPanelBargeCappingBack.length;\n \n let fitZ = this.geo_roofPanelBargeCappingLeft.height * this.utils.tan(this.APP.sltRoofPitch.currentValue)\n\n const offsetPitch = this.geo_roofPanelBase.height * this.utils.tan(UI.patiosPitch)\n let scaleZ = (((this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2\n + this.APP.sldFrontOverhang.currentValue + fitZ)/this.utils.cos(this.APP.sltRoofPitch.currentValue) - offsetPitch)/this.geo_roofPanelBargeCappingLeft.length;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n //left\n mesh = new Mesh(this.geo_roofPanelBargeCappingLeft.geometry, MaterialManager.Instance().BARGE);\n mesh.position.setX(-offsetLeft);\n mesh.position.setZ(-fitZ)\n mesh.scale.setZ(scaleZ);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupFront.add(mesh);\n\n //right\n mesh = new Mesh(this.geo_roofPanelBargeCappingRight.geometry, MaterialManager.Instance().BARGE);\n mesh.position.setX(offsetRight);\n mesh.position.setZ(-fitZ)\n mesh.scale.setZ(scaleZ);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupFront.add(mesh);\n }\n\n private addBargeCappingBack(){\n let mesh: Mesh;\n\n let offsetLeft = this.totalBaySize/2 + this.APP.sldLeftOverhang.currentValue;\n let offsetRight = this.totalBaySize/2 + this.APP.sldRightOverhang.currentValue;\n\n let scaleX = (this.APP.sldLeftOverhang.currentValue \n + this.totalBaySize \n + this.APP.sldRightOverhang.currentValue)/this.geo_roofPanelBargeCappingBack.length;\n\n let fitZ = this.geo_roofPanelBargeCappingLeft.height * this.utils.tan(this.APP.sltRoofPitch.currentValue);\n\n const offsetPitch = this.geo_roofPanelBase.height * this.utils.tan(UI.patiosPitch)\n let scaleZ = (((this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2\n + this.APP.sldBackOverhang.currentValue + fitZ)/this.utils.cos(this.APP.sltRoofPitch.currentValue) - offsetPitch)/this.geo_roofPanelBargeCappingLeft.length;\n\n let views: Print2DView[] = [\n // { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n //left\n mesh = new Mesh(this.geo_roofPanelBargeCappingLeft.geometry, MaterialManager.Instance().BARGE);\n mesh.position.setX(-offsetLeft);\n mesh.position.setZ(- scaleZ * this.geo_roofPanelBargeCappingLeft.length + fitZ);\n mesh.scale.setZ(scaleZ);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupBack.add(mesh);\n\n //right\n mesh = new Mesh(this.geo_roofPanelBargeCappingRight.geometry, MaterialManager.Instance().BARGE);\n mesh.position.setX(offsetRight);\n mesh.position.setZ(- scaleZ * this.geo_roofPanelBargeCappingLeft.length + fitZ);\n mesh.scale.setZ(scaleZ);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupBack.add(mesh);\n }\n\n public addGutterFront(){\n let mesh: Mesh;\n \n let offsetXL = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n let offsetXR = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n let offsetY = this.geo_roofPanelBase.height - 25;\n let offsetZ = (this.APP.sldFrontOverhang.currentValue \n + (this.APP.sldMultiSpan.currentValue + this.APP.sldSpan.currentValue) / 2\n + this.FIT_SHEETING - 50)/this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n let scaleX = (this.totalBaySize + this.APP.sldLeftOverhang.currentValue + this.APP.sldRightOverhang.currentValue)/this.geo_gutterBack.length;\n \n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n mesh = new Mesh(this.geo_gutterBack.geometry, MaterialManager.Instance().GUTTER);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.GUTTER_PATIOS, views: views };\n mesh.position.set(offsetXL, 0, 0);\n mesh.scale.setX(scaleX);\n \n let endCapMesh = new Mesh(this.geo_gutterCap.geometry, MaterialManager.Instance().GUTTER);\n endCapMesh.position.set(offsetXL, 0, 0);\n\n let endCapMesh2 = new Mesh(this.geo_gutterCap.geometry, MaterialManager.Instance().GUTTER);\n endCapMesh2.position.set(offsetXR, 0, 0);\n\n let gutterGroup = new Group();\n gutterGroup.add(mesh, endCapMesh, endCapMesh2);\n gutterGroup.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.GUTTER_PATIOS, views: views};\n gutterGroup.position.set(0, offsetY, offsetZ);\n gutterGroup.rotation.set(-this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue), 0, 0);\n this.roofGroupFront.add(gutterGroup);\n }\n\n public addRidgeCapping(){\n let ridgeFront = this.createRidgeCapping();\n const height = this.getRoofOffsetY() + \n this.geo_roofPanelBase.height / this.utils.cos(this.APP.sltRoofPitch.currentValue) + \n this.geo_RoofPanel.height / this.utils.cos(this.APP.sltRoofPitch.currentValue) - \n (this.APP.sltRoofSheetingType.currentValue == 0 || this.APP.sltRoofSheetingType.currentValue == 1 ? 20 : 10);\n const ridgeLength = this.totalBaySize + this.APP.sldLeftOverhang.currentValue + this.APP.sldRightOverhang.currentValue;\n ridgeFront.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.RIDGE_CAPPING, length: ridgeLength, views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }]};\n ridgeFront.scale.setZ(ridgeLength / this.ridgeGeo.length);\n ridgeFront.rotation.set(0, Math.PI / 2, 0)\n ridgeFront.position.set((this.APP.sldRightOverhang.currentValue - this.APP.sldLeftOverhang.currentValue) / 2, height, (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2);\n this.scene.add(ridgeFront)\n }\n\n public createRidgeCapping(){\n let leftCap = new Mesh(this.ridgeGeo.geometry, MaterialManager.Instance().RIDGE_CAPPING);\n let rightCap = new Mesh(this.ridgeGeo.geometry, MaterialManager.Instance().RIDGE_CAPPING);\n \n rightCap.rotateY(Math.PI)\n \n leftCap.rotateZ(this.utils.degreesToRadians(UI.patiosPitch))\n rightCap.rotateZ(this.utils.degreesToRadians(UI.patiosPitch))\n \n leftCap.userData = {views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }]}\n rightCap.userData = {views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }]}\n \n return new Group().add(leftCap, rightCap)\n }\n\n public addGutterBack(){\n let mesh: Mesh;\n \n let offsetXL = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n let offsetXR = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n let offsetY = this.geo_roofPanelBase.height - 25;\n let offsetZ = -(this.APP.sldBackOverhang.currentValue \n + (this.APP.sldMultiSpan.currentValue + this.APP.sldSpan.currentValue) / 2\n + this.FIT_SHEETING - 50)/this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n let scaleX = (this.totalBaySize + this.APP.sldLeftOverhang.currentValue + this.APP.sldRightOverhang.currentValue)/this.geo_gutterBack.length;\n \n let views: Print2DView[] = [\n // { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n mesh = new Mesh(this.geo_gutterBack.geometry, MaterialManager.Instance().GUTTER);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.GUTTER_PATIOS, views: views };\n mesh.position.set(offsetXL, 0, 0);\n mesh.scale.setX(scaleX);\n \n let endCapMesh = new Mesh(this.geo_gutterCap.geometry, MaterialManager.Instance().GUTTER);\n endCapMesh.position.set(offsetXL, 0, 0);\n\n let endCapMesh2 = new Mesh(this.geo_gutterCap.geometry, MaterialManager.Instance().GUTTER);\n endCapMesh2.position.set(offsetXR, 0, 0);\n\n let gutterGroup = new Group();\n gutterGroup.add(mesh, endCapMesh, endCapMesh2);\n gutterGroup.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.GUTTER_PATIOS, views: views};\n gutterGroup.position.set(-(this.APP.sldLeftOverhang.currentValue - this.APP.sldRightOverhang.currentValue), offsetY, offsetZ);\n gutterGroup.rotation.set(this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue), Math.PI, 0);\n this.roofGroupBack.add(gutterGroup);\n }\n\n public addZFlashingFront() {\n let offsetX = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n let offsetY = this.geo_roofPanelBase.height - 25;\n const offsetZ = (this.APP.sldFrontOverhang.currentValue\n + (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2\n ) / this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n const scaleX = (this.totalBaySize + this.APP.sldLeftOverhang.currentValue + this.APP.sldRightOverhang.currentValue) / this.zFlashingGeo.length;\n\n let mesh = new Mesh(this.zFlashingGeo.geometry, MaterialManager.Instance().ZFLASHING);\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.set(scaleX, 1, 1);\n\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ZFLASHING, scale: mesh.scale };\n this.roofGroupFront.add(mesh);\n }\n public addZFlashingBack() {\n let offsetX = (this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue);\n let offsetY = this.geo_roofPanelBase.height - 25;\n const offsetZ = (this.APP.sldBackOverhang.currentValue\n + (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2\n ) / this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n const scaleX = (this.totalBaySize + this.APP.sldLeftOverhang.currentValue + this.APP.sldRightOverhang.currentValue) / this.zFlashingGeo.length;\n\n let mesh = new Mesh(this.zFlashingGeo.geometry, MaterialManager.Instance().ZFLASHING);\n mesh.position.set(offsetX, offsetY, - offsetZ);\n mesh.scale.set(scaleX, 1, 1);\n mesh.rotateY(Math.PI)\n\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ZFLASHING, scale: mesh.scale };\n this.roofGroupBack.add(mesh);\n }\n public getRoofOffsetY() {\n return this.APP.sldBuildingHeight.currentValue + this.utils.tan(this.APP.sltRoofPitch.currentValue) * (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) / 2\n }\n public destroy(): void {\n this.unregisterEvent();\n }\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldFrontOverhang,\n this.APP.sldBackOverhang,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldBuildingHeight,\n this.APP.dialogEditBay,\n this.APP.sldFrontOverhang,\n this.APP.sldBackOverhang\n ];\n //this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n\n this.controlsToRegisterEvent2 = [\n this.APP.sltRoofSheetingType,\n this.APP.sltRoofThickness,\n this.APP.sltBargeType,\n this.APP.sltDripBarge,\n this.APP.sltGutterType,\n this.APP.sltRoofPitch\n ];\n this.controlsToRegisterEvent2.forEach(c => c.addAction(this.objectSizeChangedHandle));\n }\n private unregisterEvent(): void{\n // this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n // this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach(c => c.removeAction(this.objectSizeChangedHandle));\n this.controlsToRegisterEvent2 = undefined;\n }\n public uiChanged(preVal: number, curVal: number): void {\n this.load();\n }\n private objectSizeChanged(pre: number, cur: number){\n this.optimize().then(() => { this.load() });\n }\n}\n","import {\n DIMENSION_LABEL_TYPE,\n DIMENSION_LOCATION,\n GEOMETRY_TYPE,\n} from \"src/app/app.config\";\nimport { PANEL_DIRECTION, RAKECUT_TYPE } from \"src/app/app.constants\";\nimport Dimension, { AddDimensionOptions } from \"src/app/models/Dimension\";\nimport { environment } from \"src/environments/environment\";\nimport {\n Box3,\n BoxBufferGeometry,\n FontLoader,\n Geometry,\n Group,\n Line,\n Line3,\n LineBasicMaterial,\n Material,\n Matrix4,\n Mesh,\n Object3D,\n Scene,\n TextBufferGeometry,\n Vector3,\n} from \"three\";\nimport { GableLRFasciaManager } from \".\";\nimport {\n HomeComponent as AppComponent,\n HomeComponent,\n} from \"../../containers/home/home.component\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport {\n GeometryInfo,\n IBay,\n LineType,\n Print2DText,\n Printing2DGeometry,\n Printing2DLine,\n ViewType,\n} from \"../models\";\nimport { UI } from \"../ui\";\nimport { Util } from \"../utils\";\n\nexport class DimensionManager {\n private scene: Scene;\n private APP: AppComponent;\n private MANAGER: GableLRFasciaManager;\n public listText: THREE.Object3D[] = [];\n private utils: Util;\n\n private eventHandleId: any;\n\n private material: Material;\n\n private materialManager: MaterialManager;\n\n private dimensionPatiosFrontBottom: Object3D;\n private dimensionPatiosFrontRight: Object3D;\n\n private dimensionPatiosRightBottom: Object3D;\n private dimensionPatiosRightLeft: Object3D;\n private dimensionPatiosRightRight: Object3D;\n\n private dimensionPatiosLeftBottom: Object3D;\n private dimensionPatiosLeftRight: Object3D;\n private dimensionPatiosLeftLeft: Object3D;\n\n private dimensionPatiosPlanRight: Object3D;\n private dimensionPatiosPlanBottom: Object3D;\n private dimensionPatiosPlanLeft: Object3D;\n\n private dimensionPlanMiddle: Object3D;\n private dimensionPlanMidleLeft: Object3D;\n\n private lineCapGeo: GeometryInfo;\n private lineGeo: GeometryInfo;\n private textGeo: TextBufferGeometry;\n\n private dimensionDistance = 1500;\n private dimensionDistance2 = 500;\n\n private textDistance = 5000;\n\n private totalBaySize: number;\n private box: Box3;\n\n private font: any;\n private textParameter: any;\n private isReady = false;\n private controlsToRegisterEvent: Array;\n private options: AddDimensionOptions;\n private startPos: Vector3;\n private startMatrix: Matrix4;\n private startBayLength: number;\n\n private geometryManager: GeometryManager;\n\n constructor(app: AppComponent, manager: GableLRFasciaManager) {\n this.utils = new Util();\n this.materialManager = MaterialManager.Instance();\n this.APP = app;\n this.MANAGER = manager;\n this.scene = this.APP.scene;\n this.material = MaterialManager.Instance().DIMENSION_TEXT;\n this.geometryManager = GeometryManager.Instance();\n //this.registerEvent();\n }\n\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n this.lineGeo = this.geometryManager.getDimensionLine();\n this.lineCapGeo = this.geometryManager.getDimensionCap();\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.unload();\n\n var loader = new FontLoader();\n\n this.dimensionPatiosFrontBottom = new Group();\n this.dimensionPatiosFrontBottom.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n // this.dimensionPatiosFrontBottom.rotation.set(0, Math.PI, 0);\n this.dimensionPatiosFrontBottom.visible = false;\n\n this.dimensionPatiosFrontRight = new Group();\n this.dimensionPatiosFrontRight.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosFrontRight.rotation.set(0, 0, -Math.PI / 2);\n this.dimensionPatiosFrontRight.visible = false;\n\n this.dimensionPatiosRightBottom = new Group();\n this.dimensionPatiosRightBottom.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosRightBottom.rotation.set(0, -Math.PI / 2, 0);\n this.dimensionPatiosRightBottom.visible = false;\n\n this.dimensionPatiosRightLeft = new Group();\n this.dimensionPatiosRightLeft.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosRightLeft.rotation.set(0, -Math.PI / 2, -Math.PI / 2);\n this.dimensionPatiosRightLeft.visible = false;\n\n this.dimensionPatiosRightRight = new Group();\n this.dimensionPatiosRightRight.rotation.set(\n 0,\n -Math.PI / 2,\n -Math.PI / 2\n );\n this.dimensionPatiosRightRight.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosRightRight.visible = false;\n\n this.dimensionPatiosLeftBottom = new Group();\n this.dimensionPatiosLeftBottom.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosLeftBottom.rotation.set(0, -Math.PI / 2, 0);\n this.dimensionPatiosLeftBottom.visible = false;\n\n this.dimensionPatiosLeftRight = new Group();\n this.dimensionPatiosLeftRight.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosLeftRight.rotation.set(Math.PI / 2, -Math.PI / 2, 0);\n this.dimensionPatiosLeftRight.visible = false;\n\n this.dimensionPatiosLeftLeft = new Group();\n this.dimensionPatiosLeftLeft.rotation.set(0, -Math.PI / 2, Math.PI / 2);\n this.dimensionPatiosLeftLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftLeft.visible = false;\n\n this.dimensionPatiosPlanRight = new Group();\n this.dimensionPatiosPlanRight.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosPlanRight.rotation.set(\n -Math.PI / 2,\n Math.PI,\n -Math.PI / 2\n );\n\n this.dimensionPatiosPlanBottom = new Group();\n this.dimensionPatiosPlanBottom.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n };\n this.dimensionPatiosPlanBottom.rotation.set(-Math.PI / 2, 0, 0);\n\n this.dimensionPatiosPlanLeft = new Group();\n this.dimensionPatiosPlanLeft.userData = {\n type: GEOMETRY_TYPE.DIMENSION,\n position: { left: true },\n };\n this.dimensionPatiosPlanLeft.rotation.set(-Math.PI / 2, 0, -Math.PI / 2);\n\n this.dimensionPlanMiddle = new Group();\n this.dimensionPlanMidleLeft = new Group();\n\n //testing\n // [\n // this.dimensionPatiosFrontBottom,\n // this.dimensionPatiosFrontRight,\n // this.dimensionPatiosRightBottom,\n // this.dimensionPatiosRightLeft,\n // this.dimensionPatiosRightRight,\n // this.dimensionPatiosLeftBottom,\n // this.dimensionPatiosLeftRight,\n // this.dimensionPatiosLeftLeft,\n // ].forEach(g => { g.visible = true });\n\n this.scene.add(this.dimensionPatiosPlanRight);\n this.scene.add(this.dimensionPatiosPlanLeft);\n this.scene.add(this.dimensionPatiosFrontRight);\n this.APP.patiosManager.patiosGroup.add(\n this.dimensionPatiosFrontBottom,\n //this.dimensionPatiosFrontRight,\n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom,\n this.dimensionPatiosLeftRight,\n this.dimensionPatiosLeftLeft,\n this.dimensionPatiosPlanBottom,\n this.dimensionPlanMiddle,\n this.dimensionPlanMidleLeft\n );\n\n loader.load(\n environment.modelBaseUrl +\n \"/assets/fonts/helvetiker_regular.typeface.json\",\n (font) => {\n this.font = font;\n\n this.textParameter = {\n font: this.font,\n size: 200,\n height: 5,\n curveSegments: 10,\n };\n this.options = {\n container: HomeComponent.ins.scene,\n start: new Vector3(),\n end: new Vector3(),\n linePos: new Vector3(),\n views: [],\n allowDrag: true,\n textParameter: this.textParameter,\n textPos: new Vector3(),\n labelType: null,\n fitZ: 10,\n hasTextClone: false,\n axis: \"x\",\n lineLength: 0,\n subtype: null,\n textUserData: null,\n onDragCallback: this.onDimDrag.bind(this),\n onDragStartCallback: this.onDimDragStart.bind(this),\n };\n\n this.isReady = true;\n this.draw();\n resolve();\n }\n );\n });\n }\n\n public unload() {\n this.scene.remove(this.dimensionPatiosPlanRight);\n this.scene.remove(this.dimensionPatiosPlanLeft);\n this.scene.remove(this.dimensionPatiosFrontRight);\n if (this.APP.patiosManager && this.APP.patiosManager.patiosGroup) {\n this.APP.patiosManager.patiosGroup.remove(\n this.dimensionPatiosFrontBottom,\n //this.dimensionPatiosFrontRight,\n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom,\n this.dimensionPatiosLeftRight,\n this.dimensionPatiosLeftLeft,\n this.dimensionPatiosPlanBottom,\n this.dimensionPlanMiddle,\n this.dimensionPlanMidleLeft\n );\n }\n }\n\n public draw() {\n if (!this.isReady) {\n return;\n }\n // this.dimensionPatiosPlanBottom.children = [];\n // this.dimensionPatiosPlanRight.children = [];\n // this.dimensionPatiosPlanLeft.children = [];\n this.dimensionPatiosPlanBottom.children =\n this.dimensionPatiosPlanBottom.children.filter(\n (el) =>\n el.userData?.groupType ==\n DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL ||\n el.userData?.groupType ==\n DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.LEFT_OVERHANG ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.RIGHT_OVERHANG ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY\n );\n this.dimensionPatiosPlanRight.children =\n this.dimensionPatiosPlanRight.children.filter(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.MULTI_SPAN ||\n el.userData?.groupType ==\n DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.FRONT_OVERHANG ||\n el.userData?.groupType == DIMENSION_LABEL_TYPE.BACK_OVERHANG\n );\n this.dimensionPatiosPlanLeft.children =\n this.dimensionPatiosPlanLeft.children.filter(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL\n );\n this.dimensionPatiosFrontBottom.children = [];\n this.dimensionPatiosFrontRight.children = [];\n this.dimensionPatiosLeftBottom.children = [];\n this.dimensionPatiosLeftRight.children = [];\n this.dimensionPatiosLeftLeft.children = [];\n this.dimensionPatiosRightBottom.children = [];\n this.dimensionPatiosRightLeft.children = [];\n this.dimensionPatiosRightRight.children = [];\n this.dimensionPlanMiddle.children = [];\n this.dimensionPlanMidleLeft.children = [];\n\n //this.scene.remove(...this.scene.children.filter(o => o.userData.type == 'BOXHELPER'));\n\n this.totalBaySize = 0;\n for (let b of this.APP.dialogEditBay.listBay) {\n this.totalBaySize += b.value;\n }\n\n this.box = this.utils.getSceneBox();\n\n this.drawDimensionPatiosPlanBottom();\n this.drawDimensionPatiosPlanRight();\n this.drawDimensionPatiosPlanLeft();\n\n this.drawDimensionPatiosFrontBottom();\n this.drawDimensionPatiosFrontRight();\n\n this.drawDimensionPatiosLeftBottom();\n this.drawDimensionPatiosLeftRight();\n this.drawDimensionPatiosLeftLeft();\n\n this.drawDimensionPatiosRightBottom();\n this.drawDimensionPatiosRightLeft();\n this.drawDimensionPatiosRightRight();\n\n this.drawDimensionMidle();\n this.drawDimensionMidleLeft();\n\n // var offset = this.calulateBoundingBox();\n // this.dimensionPatiosPlanRight.position.setX(offset.right);\n // this.dimensionPatiosPlanLeft.position.setX(offset.left);\n // this.dimensionPatiosPlanBottom.position.setZ(offset.front);\n\n // let existingHouseDimLeft = this.APP.scene.children.find(c => c.userData.type == GEOMETRY_TYPE.DIMENSION && c.userData.position?.planLeft);\n // if (existingHouseDimLeft && existingHouseDimLeft.position.x > offset.left) {\n // existingHouseDimLeft.position.setX(offset.left - 500);\n // }\n this.APP.dimensionManager.draw();\n }\n private drawDimensionMidleLeft() {\n let dimLeft = this.utils.createArrowLine([{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }]);\n dimLeft.visible = false;\n dimLeft.position.setX(-300)\n let textLeft = this.utils.createText(\"Panel direction\", [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }], this.textParameter, new Vector3(-500, 0, 650));\n textLeft.visible = false;\n\n let dimRight = dimLeft.clone()\n dimRight.position.setX(300);\n let textRight = textLeft.clone();\n textRight.position.setX(500);\n \n this.dimensionPlanMidleLeft.add(dimLeft);\n this.dimensionPlanMidleLeft.add(textLeft);\n this.dimensionPlanMidleLeft.add(dimRight);\n this.dimensionPlanMidleLeft.add(textRight);\n\n let offsetZ =UI.span / 2 - UI.existingWidth1 / 2 + UI.eaveWidth + this.MANAGER.postAndBeamManager.geoBraket_2.height / 4;\n if (this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT) {\n let offsetX = this.totalBaySize / 2 + UI.overhangRight;\n this.dimensionPlanMidleLeft.position.set(offsetX, 0, offsetZ);\n this.dimensionPlanMidleLeft.rotation.set(0, -Math.PI / 2, 0);\n }\n else {\n let offsetX = - this.totalBaySize / 2 - UI.overhangLeft;\n this.dimensionPlanMidleLeft.rotation.set(0, Math.PI / 2, 0);\n this.dimensionPlanMidleLeft.position.set(offsetX, 0, offsetZ);\n }\n }\n private drawDimensionMidle() {\n let offsetX = 0;\n\n let dimLeft = this.utils.createArrowLine([{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }]);\n dimLeft.rotation.set(0, -Math.PI / 2, 0);\n dimLeft.visible = false;\n\n let textLeft = this.utils.createText(`${UI.patiosPitch} degree`, [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }], this.textParameter, new Vector3(-500, 0, 200));\n textLeft.userData.rotation = new Vector3(0, Math.PI / 2, 0)\n textLeft.visible = false;\n\n let dimRight = dimLeft.clone()\n dimRight.rotation.set(0, Math.PI / 2, 0);\n\n let textRight = textLeft.clone();\n textRight.position.setX(500);\n \n this.dimensionPlanMiddle.add(dimLeft);\n this.dimensionPlanMiddle.add(textLeft);\n this.dimensionPlanMiddle.add(dimRight);\n this.dimensionPlanMiddle.add(textRight);\n\n let offsetZ = - UI.existingWidth1 / 2 + UI.eaveWidth + this.MANAGER.postAndBeamManager.geoBraket_2.height / 4 + UI.span / 2;\n this.dimensionPlanMiddle.rotation.set(0, Math.PI / 2, 0);\n this.dimensionPlanMiddle.position.set(offsetX, 0, offsetZ);\n }\n\n private drawDimensionPatiosPlanBottom() {\n let offsetX = -this.totalBaySize / 2;\n //let offsetZ = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance2 + this.APP.sldEaveWidth.currentValue - this.APP.sldExistingWidth1.currentValue / 2;\n //if (this.APP.sldExistingWidth1.currentValue > this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) {\n // offsetZ = this.APP.sldExistingWidth1.currentValue / 2 + this.dimensionDistance2;\n //}\n\n let offsetZ =\n this.box.max.z +\n this.dimensionDistance2 +\n this.APP.sldEaveWidth.currentValue;\n\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosPlanBottom.position.setZ(offsetZ);\n\n this.dimensionPatiosPlanBottom.children =\n this.dimensionPatiosPlanBottom.children.filter(\n (el) =>\n el.userData?.groupType != DIMENSION_LABEL_TYPE.BAY ||\n (el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY &&\n el.userData?.bayNum <\n HomeComponent.ins.dialogEditBay.listBay.length)\n );\n\n for (let i = 0; i <= this.APP.dialogEditBay.listBay.length; i++) {\n let b: IBay = { index: 0, value: 0, isCut: false };\n if (i < this.APP.dialogEditBay.listBay.length) {\n b = this.APP.dialogEditBay.listBay[i];\n }\n\n if (i < this.APP.dialogEditBay.listBay.length) {\n let textStr = this.utils.getDimensionValue(b.value);\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: b.value,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(offsetX + b.value / 2, 0, 0),\n textPos: new Vector3(offsetX + b.value / 2, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.BAY,\n bayNum: i,\n textUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n position: { bottom: true },\n },\n };\n let dimBay = this.dimensionPatiosPlanBottom.children.find(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY &&\n el.userData?.bayNum == i\n ) as Dimension;\n if (!dimBay) {\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n\n offsetX += b.value;\n }\n\n //rakecut\n if (this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE) {\n let _offsetX =\n -this.APP.dialogEditBay.totalBaySize / 2 +\n this.APP.sldLeftCutHorizontal.currentValue / 2 -\n this.APP.sldLeftOverhang.currentValue;\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldLeftCutHorizontal.currentValue,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(_offsetX, 500, 0),\n textPos: new Vector3(_offsetX, 300, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL,\n subtype: GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT,\n };\n let dimRake = this.dimensionPatiosPlanBottom.children.find(\n (el) =>\n el.userData?.groupType ==\n DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL\n ) as Dimension;\n if (!dimRake) {\n new Dimension(options);\n } else {\n dimRake.update(options);\n }\n } else {\n this.dimensionPatiosPlanBottom.children =\n this.dimensionPatiosPlanBottom.children.filter(\n (el) =>\n el.userData?.groupType !=\n DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL\n );\n }\n if (this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE) {\n let _offsetX =\n this.APP.dialogEditBay.totalBaySize / 2 -\n this.APP.sldRightCutHorizontal.currentValue / 2 +\n this.APP.sldRightOverhang.currentValue;\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldRightCutHorizontal.currentValue,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(_offsetX, 500, 0),\n textPos: new Vector3(_offsetX, 500 - 200, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL,\n subtype: GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT,\n };\n let dimRake = this.dimensionPatiosPlanBottom.children.find(\n (el) =>\n el.userData?.groupType ==\n DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL\n ) as Dimension;\n if (!dimRake) {\n new Dimension(options);\n } else {\n dimRake.update(options);\n }\n } else {\n this.dimensionPatiosPlanBottom.children =\n this.dimensionPatiosPlanBottom.children.filter(\n (el) =>\n el.userData?.groupType !=\n DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL\n );\n }\n //End rakecut\n\n //Left over hang\n this.addOverhang(\n this.dimensionPatiosPlanBottom,\n offsetX,\n this.APP.sldLeftOverhang.currentValue,\n views,\n \"Left\",\n 0,\n \"z\",\n DIMENSION_LABEL_TYPE.LEFT_OVERHANG\n );\n this.addOverhang(\n this.dimensionPatiosPlanBottom,\n offsetX,\n this.APP.sldRightOverhang.currentValue,\n views,\n \"Right\",\n 0,\n \"z\",\n DIMENSION_LABEL_TYPE.RIGHT_OVERHANG\n );\n this.repositionDimension(\n this.dimensionPatiosPlanBottom,\n DIMENSION_LOCATION.PLAN_BOTTOM\n );\n }\n onDimDrag(event) {\n this.utils.handlerDimDragEvent(\n event,\n this.startPos,\n this.startMatrix,\n this.startBayLength\n );\n this.startPos = event.object.position.clone();\n }\n onDimDragStart(event) {\n this.startPos = event.object.position.clone();\n this.startMatrix = event.object.matrixWorld.clone();\n if (event.object.userData?.dimType === DIMENSION_LABEL_TYPE.BAY) {\n let bayNum = event.object.userData.bayNum;\n this.startBayLength = UI.listBay[+bayNum].value;\n }\n }\n private drawDimensionPatiosPlanRight() {\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n let offsetDimensionZ =\n this.APP.sldSpan.currentValue / 2 +\n this.APP.sldEaveWidth.currentValue -\n this.APP.sldExistingWidth1.currentValue / 2 +\n this.MANAGER.postAndBeamManager.geoBraket_2.height / 4;\n\n let _dimensionDistane = this.dimensionDistance2;\n if (\n this.APP.sltExistingType.currentValue == 2 ||\n this.APP.sltExistingType.currentValue == 3\n ) {\n if (this.APP.sldExistingWidth1.currentValue > 0) {\n _dimensionDistane = this.dimensionDistance;\n }\n }\n\n let offsetDimensionX = this.box.max.x + this.dimensionDistance2;\n if (this.APP.sltExistingType.currentValue == 1) {\n offsetDimensionX += this.APP.sldEaveWidth.currentValue;\n }\n //let offsetDimensionX = this.totalBaySize / 2 + this.APP.patiosManager.patiosGroup.position.x + _dimensionDistane;\n //if (this.APP.sldExistingLength.currentValue / 2 > this.totalBaySize / 2) {\n // offsetDimensionX = this.APP.sldExistingLength.currentValue / 2 + _dimensionDistane;\n //}\n\n //if (this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3) {\n // offsetDimensionX += this.APP.sldExistingLength2.currentValue;\n //}\n\n this.dimensionPatiosPlanRight.position.set(\n offsetDimensionX,\n 0,\n offsetDimensionZ\n );\n let dimLength = this.APP.sldSpan.currentValue;\n\n let textStr = this.utils.getDimensionValue(this.APP.sldSpan.currentValue);\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldSpan.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.SPAN,\n hasTextClone: false,\n textUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, -Math.PI / 2, 0),\n },\n textCloneUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, -Math.PI / 2, 0),\n },\n textCloneRotation: new Vector3(0, Math.PI, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, -Math.PI, 0),\n fitZ: -10,\n };\n let dimSpan = this.dimensionPatiosPlanRight.children.find(\n (el) => el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN\n ) as Dimension;\n if (!dimSpan) {\n new Dimension(options);\n } else {\n dimSpan.update(options);\n }\n\n if (this.APP.sldMultiSpan.currentValue > 0) {\n // let offsetX = this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue;\n // - this.APP.sldExistingWidth1.currentValue/2\n // - this.APP.existingWallManager.geo_existingWallL1.width\n // - this.APP.eaveManager.backOverhang;\n\n // let scaleLength = this.APP.sldMultiSpan.currentValue / this.lineGeo.length;\n dimLength += this.APP.sldMultiSpan.currentValue;\n let textStr = this.utils.getDimensionValue(\n this.APP.sldMultiSpan.currentValue\n );\n let optionsMul: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldMultiSpan.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(\n this.APP.sldSpan.currentValue / 2 +\n this.APP.sldMultiSpan.currentValue / 2,\n 0,\n 0\n ),\n textPos: new Vector3(\n this.APP.sldSpan.currentValue / 2 +\n this.APP.sldMultiSpan.currentValue / 2,\n -200,\n 0\n ),\n labelType: DIMENSION_LABEL_TYPE.MULTI_SPAN,\n hasTextClone: false,\n textUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, -Math.PI / 2, 0),\n },\n textCloneUserData: {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, -Math.PI / 2, 0),\n },\n textCloneRotation: new Vector3(0, Math.PI, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, -Math.PI, 0),\n fitZ: -10,\n };\n let dimMul = this.dimensionPatiosPlanRight.children.find(\n (el) => el.userData?.groupType == DIMENSION_LABEL_TYPE.MULTI_SPAN\n ) as Dimension;\n if (!dimMul) {\n new Dimension(optionsMul);\n } else {\n dimMul.update(optionsMul);\n }\n } else {\n this.dimensionPatiosPlanRight.children =\n this.dimensionPatiosPlanRight.children.filter(\n (el) => el.userData?.groupType != DIMENSION_LABEL_TYPE.MULTI_SPAN\n );\n }\n\n let extraDistance = 0;\n\n //----Rake cut\n if (this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE) {\n extraDistance = 500;\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n\n let offsetZ =\n dimLength / 2 +\n UI.multiSpan / 2 +\n this.APP.sldFrontOverhang.currentValue -\n this.APP.sldRightCutVertical.currentValue / 2;\n\n let optionsRake: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldRightCutVertical.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(offsetZ, 500, 0),\n textPos: new Vector3(offsetZ, 300, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL,\n textRotation: new Vector3(0, Math.PI, 0),\n fitZ: -10,\n subtype: GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT,\n };\n let dimRake = this.dimensionPatiosPlanRight.children.find(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL\n ) as Dimension;\n if (!dimRake) {\n new Dimension(optionsRake);\n } else {\n dimRake.update(optionsRake);\n }\n } else {\n this.dimensionPatiosPlanRight.children =\n this.dimensionPatiosPlanRight.children.filter(\n (el) =>\n el.userData?.groupType !=\n DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL\n );\n }\n //----End rake cut\n\n let offsetRight =\n this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue;\n let offsetLeft = this.APP.sldSpan.currentValue / 2; // + this.APP.sldMultiSpan.currentValue;\n\n this.addOverhang(\n this.dimensionPatiosPlanRight,\n offsetRight,\n this.APP.sldFrontOverhang.currentValue,\n views,\n \"Right\",\n Math.PI,\n \"y\",\n DIMENSION_LABEL_TYPE.FRONT_OVERHANG\n );\n this.addOverhang(\n this.dimensionPatiosPlanRight,\n offsetLeft,\n this.APP.sldBackOverhang.currentValue,\n views,\n \"Left\",\n Math.PI,\n \"y\",\n DIMENSION_LABEL_TYPE.BACK_OVERHANG\n );\n this.repositionDimension(\n this.dimensionPatiosPlanRight,\n DIMENSION_LOCATION.PLAN_RIGHT,\n extraDistance\n );\n }\n private drawDimensionPatiosPlanLeft() {\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.NONE) {\n this.dimensionPatiosPlanLeft.children =\n this.dimensionPatiosPlanLeft.children.filter(\n (el) =>\n el.userData?.groupType !=\n DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL\n );\n return;\n }\n\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n\n let offsetDimensionZ =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldEaveWidth.currentValue -\n this.APP.sldExistingWidth1.currentValue / 2 -\n // - this.APP.existingWallManager.geo_existingWallL1.width\n // - this.APP.eaveManager.backOverhang\n this.APP.sldLeftCutVertical.currentValue / 2;\n\n let optionsRake: AddDimensionOptions = {\n ...this.options,\n lineLength: HomeComponent.ins.sldLeftCutVertical.currentValue,\n container: this.dimensionPatiosPlanLeft,\n views: views,\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL,\n };\n let dimRake = this.dimensionPatiosPlanLeft.children.find(\n (el) =>\n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL\n ) as Dimension;\n if (!dimRake) {\n new Dimension(optionsRake);\n } else {\n dimRake.update(optionsRake);\n }\n\n //let offsetDimensionX = this.MANAGER.boundingBox.min.x - this.dimensionDistance2;\n this.dimensionPatiosPlanLeft.position.set(0, 0, offsetDimensionZ);\n this.repositionDimension(\n this.dimensionPatiosPlanLeft,\n DIMENSION_LOCATION.PLAN_LEFT\n );\n }\n private drawDimensionPatiosFrontBottom() {\n let dimOffsetY = -this.dimensionDistance2;\n this.dimensionPatiosFrontBottom.position.set(0, dimOffsetY, 0);\n\n let views = [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosPlanBottom.children.forEach((groupDim) => {\n groupDim.children\n .filter(\n (c) => c.userData.subtype != GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT\n )\n .forEach((e) => {\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.rotation.set(0, Math.PI, 0);\n dim.userData[\"rotation\"] = new Vector3(0, 0, 0);\n dim.userData[\"position\"] = { ...e.userData.position, bottom: true };\n }\n this.dimensionPatiosFrontBottom.add(dim);\n });\n });\n }\n private drawDimensionPatiosFrontRight() {\n let views = [{ viewType: ViewType.FRONT, lineType: LineType.CONTINOUS }];\n\n let _dimensionDistane = this.dimensionDistance2;\n if (\n this.APP.sltExistingType.currentValue == 2 ||\n this.APP.sltExistingType.currentValue == 3\n ) {\n if (this.APP.sldExistingWidth1.currentValue > 0) {\n _dimensionDistane = this.dimensionDistance;\n }\n }\n let height = UI.existingWallHeight + +UI.upstandBraketType + this.MANAGER.postAndBeamManager.beamInfo.height + (UI.span / 2) * this.utils.tan(UI.patiosPitch);\n\n let dimOffsetX =\n this.totalBaySize / 2 +\n this.APP.patiosManager.patiosGroup.position.x +\n _dimensionDistane;\n let dimOffsetY = height / 2;\n if (this.APP.sldExistingLength.currentValue / 2 > this.totalBaySize / 2) {\n dimOffsetX =\n this.APP.sldExistingLength.currentValue / 2 + _dimensionDistane;\n }\n\n if (\n this.APP.sltExistingType.currentValue == 2 ||\n this.APP.sltExistingType.currentValue == 3\n ) {\n dimOffsetX += this.APP.sldExistingLength2.currentValue;\n }\n\n this.dimensionPatiosFrontRight.position.set(dimOffsetX, dimOffsetY, 0);\n\n //--------\n\n let scaleLength = height / this.lineGeo.length;\n\n let cap1 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-dimOffsetY);\n\n let cap2 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(dimOffsetY);\n\n let line = new Mesh(\n this.lineGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(height);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(\n this.textGeo,\n MaterialManager.Instance().DIMENSION_TEXT\n );\n text.userData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, 0, -Math.PI / 2),\n };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosFrontRight.add(\n line,\n cap1,\n cap2,\n text,\n ...this.utils.addArrowForLine(line)\n );\n this.repositionDimension(\n this.dimensionPatiosFrontRight,\n DIMENSION_LOCATION.FRONT_RIGHT\n );\n }\n private drawDimensionPatiosLeftBottom() {\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z;\n\n this.dimensionPatiosLeftBottom.position.set(0, dimOffsetY, dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n this.dimensionPatiosPlanRight.children.forEach((groupDim) => {\n groupDim.children.forEach((e) => {\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n if (e.userData?.subType == GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT)\n return;\n dim.rotation.set(0, 0, 0);\n dim.userData[\"views\"] = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n ];\n dim.userData[\"rotation\"] = new Vector3(0, 0, 0);\n dim.userData[\"position\"] = { ...e.userData.position, bottom: true };\n }\n this.dimensionPatiosLeftBottom.add(dim);\n });\n });\n }\n private drawDimensionPatiosLeftRight() {\n let dimOffsetY = UI.existingWallHeight + +UI.upstandBraketType + this.MANAGER.postAndBeamManager.beamInfo.height + (UI.span / 2) * this.utils.tan(UI.patiosPitch);\n\n let dimOffsetZ =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldEaveWidth.currentValue +\n this.dimensionDistance2 -\n this.APP.sldExistingWidth1.currentValue / 2;\n if (\n this.APP.sldExistingWidth1.currentValue +\n this.APP.sldExistingWidth2.currentValue >\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue\n ) {\n dimOffsetZ =\n this.APP.sldExistingWidth1.currentValue / 2 +\n this.APP.sldExistingWidth2.currentValue +\n this.dimensionDistance2 -\n 290;\n }\n if (this.APP.sldExistingLength2.currentValue > 0) {\n dimOffsetZ += 500;\n }\n\n this.dimensionPatiosLeftRight.position.set(0, dimOffsetY / 2, dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n let offsetLength = +dimOffsetY.toFixed(0);\n let scaleLength = offsetLength / this.lineGeo.length;\n\n let cap1 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength / 2);\n\n let cap2 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength / 2);\n\n let line = new Mesh(\n this.lineGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(\n this.textGeo,\n MaterialManager.Instance().DIMENSION_TEXT\n );\n text.userData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }],\n rotation: new Vector3(-Math.PI / 2, 0, 0),\n };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosLeftRight.add(\n line,\n cap1,\n cap2,\n text,\n ...this.utils.addArrowForLine(line)\n );\n this.repositionDimension(\n this.dimensionPatiosLeftRight,\n DIMENSION_LOCATION.LEFT_RIGHT\n );\n }\n private drawDimensionPatiosRightBottom() {\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z;\n\n this.dimensionPatiosRightBottom.position.set(0, dimOffsetY, dimOffsetZ);\n\n let views = [{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosPlanRight.children.forEach((groupDim) => {\n groupDim.children.forEach((e) => {\n if (e.userData?.subType == GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT) return;\n\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.userData[\"rotation\"] = new Vector3(0, 0, 0);\n dim.userData[\"position\"] = { ...e.userData.position, bottom: true };\n }\n this.dimensionPatiosRightBottom.add(dim);\n });\n });\n }\n private drawDimensionPatiosRightLeft() {\n let dimOffsetY = UI.existingWallHeight + +UI.upstandBraketType + this.MANAGER.postAndBeamManager.beamInfo.height + (UI.span / 2) * this.utils.tan(UI.patiosPitch);\n let dimOffsetZ = this.dimensionPatiosLeftRight.position.z;\n\n this.dimensionPatiosRightLeft.position.set(0, dimOffsetY / 2, dimOffsetZ);\n let views = [{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosLeftRight.children.forEach((e) => {\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.userData[\"rotation\"] = new Vector3(Math.PI / 2, 0, 0);\n dim.rotation.set(0, Math.PI, 0);\n }\n this.dimensionPatiosRightLeft.add(dim);\n });\n this.repositionDimension(\n this.dimensionPatiosRightLeft,\n DIMENSION_LOCATION.RIGHT_LEFT\n );\n }\n private drawDimensionPatiosLeftLeft() {\n let dimOffsetY =\n this.APP.sldExistingWallHeight.currentValue +\n +UI.upstandBraketType +\n this.MANAGER.postAndBeamManager.beamInfo.height;\n let dimOffsetZ = this.APP.sldExistingWidth1.currentValue / 2 + 1800;\n\n this.dimensionPatiosLeftLeft.position.set(0, dimOffsetY / 2, -dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n ];\n\n let offsetLength = dimOffsetY;\n let scaleLength = offsetLength / this.lineGeo.length;\n\n let cap1 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength / 2);\n\n let cap2 = new Mesh(\n this.lineCapGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength / 2);\n\n let line = new Mesh(\n this.lineGeo.geometry,\n this.materialManager.DIMENSION_TEXT\n );\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(\n this.textGeo,\n MaterialManager.Instance().DIMENSION_TEXT\n );\n text.userData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }],\n rotation: new Vector3(Math.PI / 2, 0, 0),\n };\n text.position.set(0, 200, 0);\n\n this.dimensionPatiosLeftLeft.add(\n line,\n cap1,\n cap2,\n text,\n ...this.utils.addArrowForLine(line)\n );\n }\n private drawDimensionPatiosRightRight() {\n let dimOffsetY =\n this.APP.sldExistingWallHeight.currentValue +\n +UI.upstandBraketType +\n this.MANAGER.postAndBeamManager.beamInfo.height;\n let dimOffsetZ = this.APP.sldExistingWidth1.currentValue / 2 + 1800;\n\n this.dimensionPatiosRightRight.position.set(0, dimOffsetY / 2, -dimOffsetZ);\n\n let views = [{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }];\n\n this.dimensionPatiosLeftLeft.children.forEach((e) => {\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n let dim = e.clone();\n dim.userData[\"views\"] = views;\n dim.userData[\"rotation\"] = new Vector3(-Math.PI / 2, 0, 0);\n dim.rotation.set(0, Math.PI, 0);\n dim.position.set(dim.position.x, -dim.position.y, dim.position.z);\n this.dimensionPatiosRightRight.add(dim);\n }\n });\n }\n private addOverhang(\n groupDim: Object3D,\n offset: number,\n overhangValue: number,\n views: any,\n side: string,\n rotateText: number,\n axis: string,\n labelType?: string\n ) {\n if (overhangValue == 0) {\n let dim = groupDim.children.find(\n (el) => el.userData?.groupType == labelType\n ) as Dimension;\n if (dim) {\n groupDim.remove(dim);\n }\n return;\n }\n\n let textStr = this.utils.getDimensionValue(overhangValue);\n\n let textRotation = new Vector3();\n let textUserData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n position: { overhang: true },\n };\n if (axis === \"z\") {\n textRotation.setZ(rotateText);\n textUserData[\"rotation\"] = new Vector3(0, 0, -rotateText / 2);\n textUserData[\"position\"][\"bottom\"] = true;\n } else if (axis === \"y\") {\n textRotation.setY(rotateText);\n textUserData[\"rotation\"] = new Vector3(0, -rotateText / 2, 0);\n } else if (axis === \"x\") {\n textRotation.setX(rotateText);\n textUserData[\"rotation\"] = new Vector3(-rotateText / 2, 0, 0);\n }\n\n let linePos = new Vector3();\n if (side === \"Left\") {\n linePos.setX(-offset - overhangValue / 2);\n } else if (side === \"Right\") {\n linePos.setX(offset + overhangValue / 2);\n }\n let fitZ = 0;\n if (labelType) {\n if (axis === \"z\") {\n fitZ = 10;\n } else if (axis === \"y\") {\n fitZ = -10;\n }\n }\n let options: AddDimensionOptions = {\n ...this.options,\n lineLength: overhangValue,\n container: groupDim,\n views: views,\n linePos: linePos,\n textPos: linePos.clone().setY(linePos.y - 200),\n labelType: labelType ? labelType : null,\n fitZ: fitZ,\n textRotation: textRotation,\n textUserData: textUserData,\n };\n let dim = groupDim.children.find(\n (el) => el.userData?.groupType == labelType\n ) as Dimension;\n if (!dim) {\n new Dimension(options);\n } else {\n dim.update(options);\n }\n }\n private getTextCover(\n textGeo: TextBufferGeometry,\n labelType: string,\n pos: Vector3,\n fitZ = 0,\n bayNum?: number\n ) {\n let textSize = new Vector3();\n textGeo.boundingBox.getSize(textSize);\n\n let textCover = new Mesh(\n new BoxBufferGeometry(textSize.x, textSize.y, textSize.z)\n );\n textCover.position.set(pos.x, pos.y, pos.z + fitZ);\n textCover.userData = { type: GEOMETRY_TYPE.TEXT_COVER, labelType };\n if (bayNum !== undefined) {\n textCover.userData[\"bayNum\"] = bayNum;\n }\n textCover.material[\"opacity\"] = 0;\n textCover.material[\"transparent\"] = true;\n\n return textCover;\n }\n public getOutlines(): Printing2DGeometry {\n let lsGeometries: Printing2DLine[] = [];\n let lsText: Print2DText[] = [];\n\n for (let dim of [\n ...this.dimensionPatiosPlanBottom.children,\n ...this.dimensionPatiosPlanRight.children,\n ...this.dimensionPatiosPlanLeft.children,\n ...this.dimensionPatiosFrontBottom.children,\n ...this.dimensionPatiosFrontRight.children,\n ...this.dimensionPatiosLeftBottom.children,\n ...this.dimensionPatiosLeftRight.children,\n ...this.dimensionPatiosLeftLeft.children,\n ...this.dimensionPatiosRightBottom.children,\n ...this.dimensionPatiosRightLeft.children,\n ...this.dimensionPatiosRightRight.children,\n ...this.dimensionPlanMiddle.children,\n ...this.dimensionPlanMidleLeft.children,\n ]) {\n if (!dim.userData.views) {\n console.log(\"TEXT NO VIEW\", dim);\n continue;\n }\n\n if (dim.type == \"Group\") {\n dim.children.forEach((el) => {\n el.updateMatrix();\n let _clone = el.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(el.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n\n el.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(el.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(el.matrixWorld);\n\n let textRotation = el.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, el, pos, textRotation, points);\n });\n } else {\n dim.updateMatrix();\n let _clone = dim.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(dim.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n\n dim.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(dim.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(dim.matrixWorld);\n\n let textRotation = dim.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, dim, pos, textRotation, points);\n }\n }\n\n return { lines: lsGeometries, texts: lsText };\n }\n private getDimInfo(\n lsGeometries: Printing2DLine[],\n lsText: Print2DText[],\n dim: Object3D,\n pos: Vector3,\n textRotation: Vector3,\n points: Vector3[]\n ) {\n if (\n dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT &&\n dim.userData.views &&\n dim.userData.value\n ) {\n let box = new Box3().setFromObject(dim.parent);\n let startEnd = this.utils.getStartEndPoint(box);\n let line = new Line3(startEnd[0], startEnd[1]);\n\n let projectPoint = new Vector3();\n line.closestPointToPoint(pos, true, projectPoint);\n let _pos = new Vector3().addVectors(\n projectPoint,\n new Vector3()\n .subVectors(pos, projectPoint)\n .normalize()\n .multiplyScalar(10)\n );\n\n if (dim.userData.position?.bottom) {\n if (dim.userData.position?.overhang) {\n _pos = new Vector3().addVectors(\n projectPoint,\n new Vector3()\n .subVectors(pos, projectPoint)\n .normalize()\n .multiplyScalar(180)\n );\n } else {\n _pos = new Vector3().addVectors(\n projectPoint,\n new Vector3()\n .subVectors(pos, projectPoint)\n .normalize()\n .multiplyScalar(120)\n );\n }\n } else {\n if (dim.userData.position?.overhang) {\n _pos = new Vector3().addVectors(\n projectPoint,\n new Vector3()\n .subVectors(pos, projectPoint)\n .normalize()\n .multiplyScalar(100)\n );\n }\n }\n\n let p = new Vector3().applyMatrix4(dim.matrixWorld);\n\n lsText.push({\n value: dim.userData.value,\n position: p,\n rotation: textRotation,\n views: dim.userData.views,\n });\n } else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_LINE) {\n // this.scene.add(new LineSegments(new Geometry().setFromPoints(points), new LineBasicMaterial({color: new Color('red')})));\n\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views,\n });\n } else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_CAP) {\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views,\n });\n } else if (dim.userData.type == \"Arrow\") {\n let geo = ((dim as Line).geometry as Geometry).clone();\n geo.applyMatrix4(dim.matrixWorld);\n lsGeometries.push({\n vertices: geo.vertices,\n objectType: dim.userData.type,\n views: dim.userData.views,\n });\n }\n }\n public destroy(): void {\n this.unregisterEvent();\n this.unload();\n }\n\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldFrontOverhang,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sldExistingWallHeight,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch,\n ];\n this.controlsToRegisterEvent.forEach((c) =>\n c.addAction(this.eventHandleId)\n );\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.controlsToRegisterEvent = undefined;\n }\n\n public uiChanged(preVal: number, curVal: number): void {\n this.draw();\n }\n private calulateBoundingBox() {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter((c) => c.userData.type == \"BOX_HELPER_\")\n );\n let patiosBox = this.MANAGER.boundingBox;\n\n let planRightBox = this.APP.utils.getObjectBoundingBox(\n this.dimensionPatiosPlanRight\n );\n planRightBox.min.x = patiosBox.max.x;\n planRightBox.max.x = patiosBox.max.x + 500;\n planRightBox.max.y = 10000;\n\n let planLeftBox = this.APP.utils.getObjectBoundingBox(\n this.dimensionPatiosPlanLeft\n );\n planLeftBox.min.x = patiosBox.min.x - 500;\n planLeftBox.max.x = patiosBox.min.x;\n planLeftBox.max.y = 10000;\n\n let planBottomBox = this.APP.utils.getObjectBoundingBox(\n this.dimensionPatiosPlanBottom\n );\n let planBottomBoxWidth = planBottomBox.max.z - planBottomBox.min.z;\n planBottomBox.min.z = patiosBox.max.z;\n planBottomBox.max.z = patiosBox.max.z + planBottomBoxWidth;\n planBottomBox.max.y = 10000;\n\n let objs = [];\n\n objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n c.userData.position?.width1) ||\n c.userData.position?.width2 ||\n c.userData.position?.length2 ||\n c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n\n // for(let e of objs){\n // let boxModelHelper = new BoxHelper(e);\n // boxModelHelper.userData = {type: 'BOX_HELPER_'};\n // this.scene.add(boxModelHelper);\n // }\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (planRightBox.intersectsBox(objBox)) {\n intersectBox = true;\n planRightBox.translate(new Vector3(100, 0, 0));\n }\n if (planLeftBox.intersectsBox(objBox)) {\n intersectBox = true;\n planLeftBox.translate(new Vector3(-100, 0, 0));\n }\n if (planBottomBox.intersectsBox(objBox)) {\n intersectBox = true;\n planBottomBox.translate(new Vector3(0, 0, 100));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(planRightBox);\n // boxHelper.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper);\n\n // let boxHelper2 = new Box3Helper(planLeftBox);\n // boxHelper2.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper2);\n\n // let boxHelper3 = new Box3Helper(planBottomBox);\n // boxHelper3.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper3);\n\n return {\n left: planLeftBox.min.x,\n right: planRightBox.max.x,\n front: planBottomBox.max.z,\n };\n }\n private repositionDimension(dimension, location, extraDistance = 0) {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter((c) => c.userData.type == location)\n );\n\n let patiosBox = this.MANAGER.boundingBox;\n\n if (location == DIMENSION_LOCATION.FRONT_RIGHT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.max.x;\n dimBox.max.x = patiosBox.max.x + 500;\n dimBox.max.z = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n !c.userData.position.length1 &&\n !c.userData.position.length2) ||\n (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL &&\n !c.userData.position.length1 &&\n !c.userData.position.length2)\n );\n\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n !c.userData.position.length1) ||\n (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL &&\n !c.userData.position.length1)\n );\n }\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(100, 0, 0));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setX(dimBox.max.x + extraDistance);\n } else if (location == DIMENSION_LOCATION.PLAN_LEFT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.min.x - 500;\n dimBox.max.x = patiosBox.min.x;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF ||\n c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(-100, 0, 0));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setX(dimBox.min.x + extraDistance);\n } else if (location == DIMENSION_LOCATION.PLAN_RIGHT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.max.x;\n dimBox.max.x = patiosBox.max.x + 500;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF ||\n c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n\n // for(let e of objs){\n // let boxModelHelper = new BoxHelper(e);\n // boxModelHelper.userData = {type: location};\n // this.scene.add(boxModelHelper);\n // }\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(100, 0, 0));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setX(dimBox.max.x + extraDistance);\n } else if (location == DIMENSION_LOCATION.PLAN_BOTTOM) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF ||\n c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(0, 0, 100));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setZ(dimBox.max.z + extraDistance);\n } else if (location == DIMENSION_LOCATION.LEFT_RIGHT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n dimBox.min.x = -10000;\n dimBox.max.x = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n c.userData.position?.left) ||\n (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL &&\n c.userData.position?.left)\n );\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(0, 0, 100));\n }\n }\n\n if (!intersectBox) break;\n }\n\n dimension.position.setZ(dimBox.max.z + extraDistance);\n } else if (location == DIMENSION_LOCATION.RIGHT_LEFT) {\n let dimBox = this.APP.utils.getObjectBoundingBox(\n this.dimensionPatiosLeftRight\n );\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n\n dimBox.min.x = -10000;\n dimBox.max.x = 10000;\n\n let objs = this.APP.scene.children.filter(\n (c) =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF &&\n c.userData.position?.right) ||\n (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL &&\n c.userData.position?.right)\n );\n\n for (let i = 0; i < 100; i++) {\n let intersectBox = false;\n for (let o of objs) {\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if (dimBox.intersectsBox(objBox)) {\n intersectBox = true;\n dimBox.translate(new Vector3(0, 0, 100));\n }\n }\n\n if (!intersectBox) break;\n }\n\n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n dimension.position.setZ(dimBox.max.z + extraDistance);\n }\n }\n}\n","import { PostAndBeamManager } from \"./post-and-beam.manager\";\nimport { RoofManager } from \"./roof.manager\";\nimport { HomeComponent as AppComponent } from \"../../containers/home/home.component\";\nimport { PatiosManager } from \"../patios.manager\";\nimport { Printing2DGeometry } from \"../models\";\nimport { Group, Box3, Vector3, Box3Helper } from \"three\";\nimport { GEOMETRY_CATEGORY, CONFIG, GEOMETRY_TYPE } from \"src/app/app.config\";\nimport { DimensionManager } from \"./dimension.manager\";\nimport { SliderInputComponent } from \"src/app/component/slider-input/slider-input.component\";\nimport {\n CUTOUT_ENABLE,\n EXISTING_BUILDING_CONFIG,\n RAKECUT_TYPE,\n} from \"../../app.constants\";\nimport { environment } from \"src/environments/environment\";\n\nexport class GableLRFasciaManager implements PatiosManager {\n public patiosGroup: Group;\n public boundingBox: Box3;\n private APP: AppComponent;\n public postAndBeamManager: PostAndBeamManager;\n public roofManager: RoofManager;\n public dimesionManager: DimensionManager;\n public ignoreBayEvent: boolean = false;\n\n private updateEventHandle: any;\n private deferHandle;\n private deferTimeout = EXISTING_BUILDING_CONFIG.CUTOUT_DEFFER_TIME_OUT;\n private controlsToRegisterEvent: Array;\n public patiosWidth: number;\n public patiosLength: number;\n public get cutoutCondition(): boolean {\n return (\n [\n this.APP.sldEaveWidth,\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldFrontOverhang,\n ]\n .map((x) => x.currentValue)\n .reduce((a, b) => a + b, 0) -\n this.APP.sldExistingWidth1.currentValue >=\n EXISTING_BUILDING_CONFIG.CUTOUT_ALLOW\n );\n }\n public get rakecutCondition(): boolean {\n let patiosWidth =\n this.APP.dialogEditBay.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n let patiosLength =\n this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue;\n\n return false;\n }\n\n public firstLoad = true;\n\n constructor(app: AppComponent) {\n this.APP = app;\n this.patiosGroup = new Group();\n this.patiosGroup.userData = { category: GEOMETRY_CATEGORY.PATIOS };\n app.scene.add(this.patiosGroup);\n\n this.postAndBeamManager = new PostAndBeamManager(app, this);\n this.roofManager = new RoofManager(app, this);\n this.dimesionManager = new DimensionManager(app, this);\n this.registerEvents();\n }\n\n load(): Promise {\n return Promise.all([\n this.postAndBeamManager.optimize(),\n this.roofManager.optimize(),\n this.dimesionManager.optimize(),\n ]).then(() => {\n this.postAndBeamManager.load();\n this.roofManager.load();\n this.dimesionManager.load();\n });\n }\n loadBracket(bracketQuantity: number): void {\n this.postAndBeamManager.addUpstandBraket(bracketQuantity);\n }\n loadBracketCutout(bracketQuantity: number): void {\n this.postAndBeamManager.addUpstandBraketCutOut(bracketQuantity);\n }\n loadSideGableBracket(bracketQuantity: number): void{\n \n }\n public destroy(): void {\n this.postAndBeamManager.destroy();\n this.roofManager.destroy();\n this.dimesionManager.destroy();\n this.unRegisterEvent();\n }\n registerEvents(): void {\n this.updateEventHandle = this.updateDefer.bind(this);\n this.controlsToRegisterEvent = [\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sltCutOut,\n this.APP.sldFrontOverhang,\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltColourBarge,\n this.APP.sltColourGutter,\n this.APP.sltColourDownpipe,\n this.APP.sltColourRoof,\n this.APP.sldSpan,\n this.APP.sldExistingWallHeight,\n this.APP.sldEaveWidth,\n this.APP.sldFasciaDepth,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldFlyOverBracketHeight,\n this.APP.sltColourBeam,\n this.APP.sltColourPost,\n this.APP.sltColourBracket,\n this.APP.sltColourFasciaBracket,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n this.APP.sltLeftCutType,\n this.APP.sldLeftCutVertical,\n this.APP.sldLeftCutHorizontal,\n this.APP.sltRightCutType,\n this.APP.sldRightCutVertical,\n this.APP.sldRightCutHorizontal,\n this.APP.sltPanelDirection,\n this.APP.sltBeamLayoutShow,\n this.APP.sltPanelDirectionShow,\n this.APP.sltFasciaUpstandBrackets,\n this.APP.sltUpFasciaUpstandBracket,\n this.APP.btnTurnOnPanel,\n ];\n this.controlsToRegisterEvent.forEach((c) => {\n c.addAction(this.updateEventHandle);\n });\n }\n unRegisterEvent(): void {\n this.controlsToRegisterEvent.forEach((c) =>\n c.removeAction(this.updateEventHandle)\n );\n }\n updateDefer(previousValue: number, currentValue: number) {\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES ||\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE ||\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE\n ) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => {\n this.update(previousValue, currentValue);\n }, this.deferTimeout);\n } else {\n this.update(previousValue, currentValue);\n }\n }\n update(preVal: number, curVal: number): void {\n let totalBaySize = this.APP.dialogEditBay.totalBaySize;\n let diff = this.APP.sldExistingLength.currentValue - totalBaySize;\n\n this.patiosWidth =\n totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n this.patiosLength =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue;\n\n //let cutoutCondition = this.cutoutCondition.map(x => x.currentValue).reduce((a, b) => a + b, 0) - this.APP.sldExistingWidth1.currentValue >= EXISTING_BUILDING_CONFIG.CUTOUT_ALLOW;\n if (this.APP.sltExistingType.currentValue == 1) {\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n // this.patiosGroup.position.setX(-diff / 2 + this.APP.sldLeftOverhang.currentValue + this.APP.sldEaveWidth.currentValue - this.APP.sldExistingLength2.currentValue);\n this.patiosGroup.position.setX(\n -diff / 2 +\n this.APP.sldEaveWidth.currentValue -\n this.APP.sldExistingLength2.currentValue\n );\n } else {\n // this.patiosGroup.position.setX(-diff / 2 + this.APP.sldLeftOverhang.currentValue + this.APP.sldEaveWidth.currentValue);\n this.patiosGroup.position.setX(\n -diff / 2 + this.APP.sldEaveWidth.currentValue\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 2) {\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n // this.patiosGroup.position.setX(diff / 2 - this.APP.sldRightOverhang.currentValue - this.APP.sldEaveWidth.currentValue + this.APP.sldExistingLength2.currentValue);\n this.patiosGroup.position.setX(\n diff / 2 -\n this.APP.sldEaveWidth.currentValue +\n this.APP.sldExistingLength2.currentValue\n );\n } else {\n // this.patiosGroup.position.setX(diff / 2 - this.APP.sldRightOverhang.currentValue - this.APP.sldEaveWidth.currentValue);\n this.patiosGroup.position.setX(\n diff / 2 - this.APP.sldEaveWidth.currentValue\n );\n }\n } else {\n this.patiosGroup.position.setX(0);\n }\n\n Promise.all([this.roofManager.load(), this.postAndBeamManager.load()]).then(\n () => {\n // this.boundingBox = this.APP.utils.getObjectsBoundingBox(\n // this.patiosGroup.children.filter(c => c.userData.type != GEOMETRY_TYPE.DIMENSION && c.userData.type != GEOMETRY_TYPE.ROOF_PATIOS)\n // );\n this.boundingBox = this.getPatiosBox();\n this.dimesionManager.draw();\n }\n );\n }\n getOutlines(): Printing2DGeometry {\n let dimensionOutline = this.dimesionManager.getOutlines();\n return {\n lines: [\n ...this.postAndBeamManager.getSection().lines,\n ...this.roofManager.getOutLines().lines,\n ...dimensionOutline.lines,\n ],\n texts: dimensionOutline.texts,\n };\n }\n public getPatiosBox(): Box3 {\n let left =\n -this.APP.dialogEditBay.totalBaySize / 2 -\n this.APP.sldLeftOverhang.currentValue;\n let right =\n this.APP.dialogEditBay.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue;\n let front =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue;\n let back = 0;\n let height = this.APP.sldBuildingHeight.currentValue;\n\n let box = new Box3();\n box = box.expandByPoint(new Vector3(left, 0, front));\n box = box.expandByPoint(new Vector3(right, height, back));\n box.translate(new Vector3(0, 0, this.APP.sldEaveWidth.currentValue));\n\n if (this.APP.sltExistingType.currentValue == 1) {\n let diff =\n (this.APP.sldExistingLength.currentValue -\n this.APP.dialogEditBay.totalBaySize) /\n 2;\n box.translate(new Vector3(-diff, 0, 0));\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n box.translate(new Vector3(this.APP.sldLeftOverhang.currentValue, 0, 0));\n box.translate(new Vector3(this.APP.sldEaveWidth.currentValue, 0, 0));\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n box.translate(\n new Vector3(-this.APP.sldExistingLength2.currentValue, 0, 0)\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 2) {\n let diff =\n (this.APP.sldExistingLength.currentValue -\n this.APP.dialogEditBay.totalBaySize) /\n 2;\n box.translate(new Vector3(diff, 0, 0));\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n box.translate(new Vector3(-this.APP.sldRightOverhang.currentValue, 0, 0));\n box.translate(new Vector3(-this.APP.sldEaveWidth.currentValue, 0, 0));\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n box.translate(\n new Vector3(this.APP.sldExistingLength2.currentValue, 0, 0)\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 3) {\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n }\n\n // if (!environment.production) {\n // this.APP.scene.remove(...this.APP.scene.children.filter(o => o.userData.type == 'BOXHELPER'));\n // let boxHelper = new Box3Helper(box);\n // boxHelper.userData = { type: \"BOXHELPER\" };\n // this.APP.scene.add(boxHelper);\n // }\n\n return box;\n }\n}\n","import _ from \"lodash\";\nimport Beam, { BeamOptions } from \"src/app/models/Beam.model\";\nimport UpstandBraket, {\n UpstandBraketOptions,\n} from \"src/app/models/UpstandBraket.model\";\nimport {\n Box3,\n BoxBufferGeometry,\n BoxHelper,\n BufferGeometry,\n Geometry,\n Group,\n LineSegments,\n Material,\n Matrix4,\n Mesh,\n Plane,\n PlaneHelper,\n Vector3,\n} from \"three\";\nimport { GableLRFasciaManager } from \".\";\nimport { GEOMETRY_CATEGORY, GEOMETRY_TYPE } from \"../../app.config\";\nimport {\n BUILDING_SIDE,\n EXISTING_BUILDING_CONFIG,\n RAKECUT_TYPE,\n} from \"../../app.constants\";\nimport {\n HomeComponent as AppComponent,\n HomeComponent,\n} from \"../../containers/home/home.component\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport {\n GeometryInfo,\n LineType,\n Print2DView,\n Printing2DGeometry,\n Printing2DLine,\n ViewType,\n} from \"../models\";\nimport { UI } from \"../ui\";\nimport { Util, getBeamEndCapCode, getRafterBeamEndCapCode } from \"../utils\";\n\nexport class PostAndBeamManager {\n private scene: Group;\n private APP: AppComponent;\n private MANAGER: GableLRFasciaManager;\n private material: Material;\n private utils: Util;\n private geometryManager: GeometryManager;\n private postInfo: GeometryInfo;\n public beamInfo: GeometryInfo;\n private beamRakecutInfoLeft: GeometryInfo;\n private beamRakecutInfoRight: GeometryInfo;\n private geo_centerSuperiorPost: GeometryInfo;\n private geo_RafterBeam: GeometryInfo;\n private geo_rafterBeamEndCap: GeometryInfo;\n private geo_beamEndCap: GeometryInfo;\n private geo_groundBase: GeometryInfo;\n private eventHandleId: any;\n private roofWidth: number;\n private existingTypeLeftX: number;\n private existingTypeRightX: number;\n private existingType: number;\n private totalBaySize: number;\n private frontPostHeight: number;\n private downpipeGroup: Group;\n private downpipeStepRakeCutGroupLeft: Group;\n private downpipeStepRakeCutGroupRight: Group;\n public geo_downPipe: GeometryInfo;\n private geo_downPipeL: GeometryInfo;\n private geo_roofBase: GeometryInfo;\n private geoBraketExtL_2: GeometryInfo;\n private geoBraketExtR_2: GeometryInfo;\n private objectSizeChangedHandle: any;\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n\n private geo_beamStepRakecutLeft: GeometryInfo;\n private geo_beamStepRakecutRight: GeometryInfo;\n\n private geoBeamJoint: GeometryInfo;\n\n private beamLeftCutSizeInfo: any;\n private beamRightCutSizeInfo: any;\n\n private geoBraket_1: GeometryInfo;\n public geoBraket_2: GeometryInfo;\n private geoBeam: GeometryInfo;\n private geoBeamEndCap: GeometryInfo;\n\n private offsetYBraket = 0;\n\n k: number;\n k_: number;\n j: number;\n l: number;\n m: number;\n v: number;\n\n constructor(app: AppComponent, fasciaManager: GableLRFasciaManager) {\n this.APP = app;\n this.MANAGER = fasciaManager;\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.scene = fasciaManager.patiosGroup;\n this.material = MaterialManager.Instance().DEFAULT.clone();\n this.registerEvent();\n }\n public destroy(): void {\n this.unregisterEvent();\n }\n public uiChanged(preVal: number, curVal: number): void {\n this.load();\n }\n private objectSizeChanged(pre: number, cur: number) {\n this.optimize().then(() => {\n this.load();\n });\n }\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldExistingWallHeight,\n this.APP.sltRoofPitch,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldExistingWidth1,\n this.APP.sltExistingType,\n this.APP.dialogEditBay,\n this.APP.sldEaveWidth,\n this.APP.sldFrontOverhang,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n ];\n //this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n this.controlsToRegisterEvent2 = [\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltColumnType,\n ];\n this.controlsToRegisterEvent2.forEach((c) =>\n c.addAction(this.objectSizeChangedHandle)\n );\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach((c) =>\n c.removeAction(this.objectSizeChangedHandle)\n );\n this.controlsToRegisterEvent2 = undefined;\n }\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n this.beamInfo = this.geometryManager.getBeam();\n this.beamInfo.geometry\n .rotateY(Math.PI / 2)\n .translate(this.beamInfo.length / 2, -this.beamInfo.height / 2, 0);\n //.scale(this.APP.sldBaySize.currentValue / this.beamInfo.length, 1, 1);\n\n this.geoBeamJoint = this.geometryManager.getBeamJoint();\n\n this.beamRakecutInfoLeft = this.geometryManager.getBeam();\n this.beamRakecutInfoLeft.geometry.translate(\n this.beamInfo.width / 2,\n -this.beamInfo.height / 2,\n -this.beamInfo.length / 2\n );\n\n this.beamRakecutInfoRight = this.geometryManager.getBeam();\n this.beamRakecutInfoRight.geometry.translate(\n -this.beamInfo.width / 2,\n -this.beamInfo.height / 2,\n -this.beamInfo.length / 2\n );\n\n this.geo_beamStepRakecutLeft = this.geometryManager.getBeam();\n this.geo_beamStepRakecutLeft.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_beamStepRakecutLeft.length / 2,\n -this.geo_beamStepRakecutLeft.height / 2,\n -this.geo_beamStepRakecutLeft.width / 2\n );\n\n this.geo_beamStepRakecutRight = this.geometryManager.getBeam();\n this.geo_beamStepRakecutRight.geometry\n .rotateY(Math.PI / 2)\n .translate(\n -this.geo_beamStepRakecutRight.length / 2,\n -this.geo_beamStepRakecutRight.height / 2,\n -this.geo_beamStepRakecutRight.width / 2\n );\n\n this.geo_beamEndCap = this.geometryManager.getBeamEndCap();\n this.geo_beamEndCap.geometry.translate(\n 0,\n -this.geo_beamEndCap.height / 2,\n 0\n );\n\n this.geo_RafterBeam = this.geometryManager.getRafterBeam();\n this.geo_RafterBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_RafterBeam.length / 2,\n -this.geo_RafterBeam.height / 2,\n this.geo_RafterBeam.width / 2\n );\n\n this.geo_rafterBeamEndCap = this.geometryManager.getRafterBeamEndCap();\n this.geo_rafterBeamEndCap.geometry.translate(\n 0,\n -this.geo_rafterBeamEndCap.height / 2,\n this.geo_rafterBeamEndCap.length / 2\n );\n\n this.postInfo = this.geometryManager.getPost();\n this.postInfo.geometry\n .rotateX(Math.PI / 2)\n .translate(0, this.postInfo.height / 2, 0);\n //.scale(1, scalePostHeight, 1);\n\n this.geo_centerSuperiorPost = this.geometryManager.getCenterPost();\n this.geo_centerSuperiorPost.geometry\n .rotateX(Math.PI / 2)\n .translate(\n this.geo_centerSuperiorPost.width / 2,\n this.geo_centerSuperiorPost.height / 2,\n this.geo_centerSuperiorPost.width / 2\n );\n\n this.geo_groundBase = new GeometryInfo();\n this.geo_groundBase.width = 1000;\n this.geo_groundBase.height = 1;\n this.geo_groundBase.length = 1000;\n this.geo_groundBase.geometry = new BoxBufferGeometry(\n this.geo_groundBase.width,\n this.geo_groundBase.height,\n this.geo_groundBase.length\n );\n this.geo_groundBase.geometry.translate(\n this.geo_groundBase.width / 2,\n 0,\n this.geo_groundBase.length / 2\n );\n\n this.geo_downPipe = this.geometryManager.getDownPipe();\n this.geo_downPipeL = this.geometryManager.getDownPipeL();\n this.geo_roofBase = this.geometryManager.getRoofBase();\n\n this.scene.remove(\n ...this.scene.children.filter(\n (c) => c.userData.type == GEOMETRY_TYPE.DOWNPIPE\n )\n );\n this.downpipeGroup = new Group();\n this.downpipeGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeGroup);\n\n this.downpipeStepRakeCutGroupLeft = new Group();\n this.downpipeStepRakeCutGroupLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeStepRakeCutGroupLeft);\n\n this.downpipeStepRakeCutGroupRight = new Group();\n this.downpipeStepRakeCutGroupRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeStepRakeCutGroupRight);\n\n this.geoBraket_1 = this.geometryManager.getUpstandBraket(1);\n this.geoBraket_1.geometry.rotateX(Math.PI / 2);\n this.geoBraket_1.geometry.translate(0, this.geoBraket_1.length / 2, 0);\n this.geoBraket_2 = this.geometryManager.getUpstandBraket(2);\n this.geoBraket_2.geometry.rotateY(Math.PI);\n this.geoBraket_2.geometry.rotateX(Math.PI / 2);\n this.geoBraket_2.geometry.translate(\n 0,\n this.geoBraket_2.length / 2,\n -this.geoBraket_2.height / 4\n );\n\n this.geoBraketExtL_2 = this.geometryManager.getUpstandBraket(2);\n this.geoBraketExtL_2.geometry.rotateX(Math.PI / 2);\n this.geoBraketExtL_2.geometry.rotateY(-Math.PI / 2);\n this.geoBraketExtL_2.geometry.rotateZ(-Math.PI);\n this.geoBraketExtL_2.geometry.translate(\n -this.geoBraketExtL_2.height / 2,\n this.geoBraketExtL_2.length / 2,\n this.geoBraketExtL_2.height / 3 - this.geoBraket_1.width / 2\n );\n //Right\n this.geoBraketExtR_2 = this.geometryManager.getUpstandBraket(2);\n this.geoBraketExtR_2.geometry.rotateX(Math.PI / 2);\n this.geoBraketExtR_2.geometry.rotateY(Math.PI / 2);\n this.geoBraketExtR_2.geometry.rotateZ(-Math.PI);\n this.geoBraketExtR_2.geometry.translate(\n this.geoBraketExtR_2.height / 2,\n this.geoBraketExtR_2.length / 2,\n this.geoBraketExtR_2.height / 3 - this.geoBraket_1.width / 2\n );\n\n this.geoBeam = this.geometryManager.getBeam();\n this.geoBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(0, this.geoBeam.height / 2, 0);\n\n this.geoBeamEndCap = this.geometryManager.getBeamEndCap();\n this.geoBeamEndCap.geometry\n .translate(\n 0,\n this.geoBeamEndCap.height / 2,\n this.geoBeamEndCap.length / 2\n )\n .rotateY(Math.PI / 2);\n\n resolve();\n });\n }\n\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.SUPERIOR_POST\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.SUPERIOR_CENTER_POST\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.GROUND_BASE\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (o) => o.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET_EXT\n )\n );\n this.downpipeGroup.children = [];\n this.downpipeStepRakeCutGroupLeft.children = [];\n this.downpipeStepRakeCutGroupRight.children = [];\n\n this.beamLeftCutSizeInfo = this.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.LEFT\n );\n this.beamRightCutSizeInfo = this.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.RIGHT\n );\n\n this.totalBaySize = this.APP.dialogEditBay.listBay.reduce(\n (total, val) => total + val.value,\n 0\n );\n this.roofWidth = this.totalBaySize;\n this.existingType = +this.APP.sltExistingType.currentValue;\n this.existingTypeLeftX = 0;\n this.existingTypeRightX = 0;\n if (this.existingType === 1 || this.existingType === 3) {\n this.existingTypeLeftX = this.APP.sldEaveWidth.currentValue;\n }\n if (this.existingType === 2 || this.existingType === 3) {\n this.existingTypeRightX = this.APP.sldEaveWidth.currentValue;\n }\n this.offsetYBraket = 0;\n if (UI.upstandBraketType == 150) {\n this.offsetYBraket =\n 150 +\n this.beamInfo.height +\n (this.geoBraket_2.height / 4 + this.geoBraket_1.width) *\n this.utils.tan(UI.patiosPitch);\n } else if (UI.upstandBraketType == 300) {\n this.offsetYBraket =\n 300 +\n this.beamInfo.height +\n (this.geoBraket_2.height / 4 + this.geoBraket_1.width) *\n this.utils.tan(UI.patiosPitch);\n } else if (UI.upstandBraketType == 450) {\n this.offsetYBraket =\n 450 +\n this.beamInfo.height +\n (this.geoBraket_2.height / 4 + this.geoBraket_1.width) *\n this.utils.tan(UI.patiosPitch);\n } else if (UI.upstandBraketType == 600) {\n this.offsetYBraket =\n 600 +\n this.beamInfo.height +\n (this.geoBraket_2.height / 4 + this.geoBraket_1.width) *\n this.utils.tan(UI.patiosPitch);\n }\n if (UI.isUpFasciaUpstandardBracket) {\n this.offsetYBraket -=\n (this.geoBraket_2.height / 4 + this.geoBraket_1.width) *\n this.utils.tan(UI.patiosPitch) +\n (this.geoBraket_2.height / 4) * this.utils.tan(UI.patiosPitch);\n }\n\n this.addBeam({ isMultiSpan: false });\n this.addBeam({ isMultiSpan: true });\n\n this.addGround();\n let offsetX = -(this.totalBaySize / 2) + this.postInfo.width / 2;\n let offsetXOrigin = -(this.totalBaySize / 2) + this.postInfo.width / 2;\n let idx = 0;\n\n this.addPost(offsetX, { isMultiSpan: false, left: true });\n this.addUpstandBraketExt({ isMultiSpan: false, left: true });\n\n this.addPost(offsetX, { isMultiSpan: true, left: true });\n this.addUpstandBraketExt({ isMultiSpan: true, left: true });\n\n this.addCenterSuperiorBeam();\n\n this.addHorSuperiorBeam(offsetX, {\n front: true,\n first: true,\n last: false,\n });\n this.addCenterPost(offsetX, { center: true, first: true, last: false });\n\n this.addRafterSuperiorBeam(offsetX - this.beamInfo.width / 2, {\n front: true,\n first: true,\n last: false,\n });\n this.addRafterSuperiorBeam(offsetX - this.beamInfo.width / 2, {\n back: true,\n first: true,\n last: false,\n });\n\n this.APP.dialogEditBay.listBay.map((m) => {\n offsetX += m.value;\n this.addHorSuperiorBeam(\n offsetX -\n (idx === this.APP.dialogEditBay.listBay.length - 1\n ? this.geoBeam.width\n : this.geoBeam.width / 2),\n {\n front: true,\n first: false,\n last: idx === this.APP.dialogEditBay.listBay.length - 1,\n }\n );\n\n this.addCenterPost(offsetX, {\n center: true,\n first: false,\n last: idx === this.APP.dialogEditBay.listBay.length - 1,\n });\n\n this.addRafterSuperiorBeam(\n offsetX -\n (idx === this.APP.dialogEditBay.listBay.length - 1\n ? this.beamInfo.width * 1.5\n : this.beamInfo.width),\n {\n front: true,\n first: false,\n last: idx === this.APP.dialogEditBay.listBay.length - 1,\n }\n );\n this.addRafterSuperiorBeam(\n offsetX -\n (idx === this.APP.dialogEditBay.listBay.length - 1\n ? this.beamInfo.width * 1.5\n : this.beamInfo.width),\n {\n back: true,\n first: false,\n last: idx === this.APP.dialogEditBay.listBay.length - 1,\n }\n );\n\n if (idx === this.APP.dialogEditBay.listBay.length - 1) {\n offsetX -= this.postInfo.width;\n this.addPost(offsetX, { isMultiSpan: false, right: true });\n this.addPost(offsetX, { isMultiSpan: true, right: true });\n } else {\n this.addPost(offsetX - this.postInfo.width / 2, {\n isMultiSpan: false,\n });\n this.addPost(offsetX - this.postInfo.width / 2, {\n isMultiSpan: true,\n });\n }\n idx++;\n });\n\n this.addUpstandBraketExt({ isMultiSpan: false, right: true });\n this.addUpstandBraketExt({ isMultiSpan: true, right: true });\n\n this.addDownPipe();\n\n this.addUpstandBeam();\n\n this.addUpstandBraket();\n this.addUpstandBraketCutOut();\n this.showBeamOutline();\n this.updateUI();\n resolve();\n });\n }\n public showBeamOutline() {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.BEAM_OUTLINE\n )\n );\n\n if (!UI.beamLayoutShow) return;\n\n const objs = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n const meshes = [];\n objs.forEach((el) => {\n if (el.type == \"Group\") {\n meshes.push(\n ...el.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n }\n });\n\n for (let o of meshes) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n o as Mesh,\n 10\n );\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n\n var line = new LineSegments(\n outlineGeo,\n MaterialManager.Instance().BEAM_OUTLINE\n );\n line.userData = { type: GEOMETRY_TYPE.BEAM_OUTLINE };\n this.APP.scene.add(line);\n }\n }\n public addUpstandBeam() {\n if (UI.upstandBraketType == 0 || UI.listBay.length == 0) {\n return;\n }\n let height = +UI.upstandBraketType + this.beamInfo.height;\n let pos = new Vector3(\n -UI.totalBayLength / 2 - UI.overhangLeft,\n UI.existingWallHeight + height,\n UI.eaveWidth +\n this.geoBraket_2.height / 4 +\n this.geoBraket_1.width / 2 -\n UI.existingWidth1 / 2\n );\n let totalLength = UI.totalBayLength + UI.overhangLeft + UI.overhangRight;\n if (!HomeComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n if (\n UI.existingType == BUILDING_SIDE.LEFT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n totalLength -= UI.existingLength2;\n pos.setX(pos.x + UI.existingLength2);\n }\n if (\n UI.existingType == BUILDING_SIDE.RIGHT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n totalLength -= UI.existingLength2;\n }\n }\n let views: Print2DView[] = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n this.cutStandardBeamToEqualLengthBeam(\n this.beamInfo,\n this.geo_beamEndCap,\n totalLength,\n pos,\n new Vector3(),\n views,\n 1,\n { back: true },\n 0,\n \"x\",\n \"EB\",\n this.geoBeamJoint\n );\n // Beam cutout\n if (!HomeComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n let offsetHeightCutout = +UI.upstandBraketType + this.beamInfo.height;\n if (UI.isUpFasciaUpstandardBracket) {\n offsetHeightCutout +=\n (UI.existingWidth1 + this.geoBraket_2.height / 4) *\n this.utils.tan(UI.patiosPitch);\n } else {\n offsetHeightCutout -=\n (UI.existingWidth1 + this.geoBraket_2.height / 4) *\n this.utils.tan(UI.patiosPitch);\n }\n\n if (offsetHeightCutout < 0) {\n return;\n }\n if (UI.existingType == 1 || UI.existingType == 3) {\n this.cutStandardBeamToEqualLengthBeam(\n this.beamInfo,\n this.geo_beamEndCap,\n UI.existingLength2,\n new Vector3(\n -UI.totalBayLength / 2 - UI.overhangLeft,\n UI.existingWallHeight + offsetHeightCutout,\n UI.eaveWidth +\n this.geoBraket_2.height / 4 +\n this.geoBraket_1.width / 2 +\n UI.existingWidth1 / 2\n ),\n new Vector3(),\n views,\n 1,\n { back: true },\n 0,\n \"x\",\n \"EB\",\n this.geoBeamJoint\n );\n }\n if (UI.existingType == 2 || UI.existingType == 3) {\n this.cutStandardBeamToEqualLengthBeam(\n this.beamInfo,\n this.geo_beamEndCap,\n UI.existingLength2,\n new Vector3(\n UI.totalBayLength / 2 - UI.existingLength2 + UI.overhangRight,\n UI.existingWallHeight + offsetHeightCutout,\n UI.eaveWidth +\n this.geoBraket_2.height / 4 +\n this.geoBraket_1.width / 2 +\n UI.existingWidth1 / 2\n ),\n new Vector3(),\n views,\n 1,\n { back: true },\n 0,\n \"x\",\n \"EB\",\n this.geoBeamJoint\n );\n }\n }\n }\n public addUpstandBraket(numOfBraket = 2) {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.UPSTAND_BRAKET\n )\n );\n if (UI.upstandBraketType == 0 || UI.listBay.length == 0) {\n return;\n }\n let height = +UI.upstandBraketType;\n\n const _bracketOffsetXExt = this.geoBraket_2.height / 5;\n let distance = 1000;\n let offsetX = -UI.existingLength1 / 2;\n let bayMainLength = UI.totalBayLength;\n\n if (!HomeComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n if (UI.existingType == 1 || UI.existingType == 2) {\n bayMainLength -= UI.existingLength2;\n }\n if (UI.existingType == 3) {\n bayMainLength -= 2 * UI.existingLength2;\n }\n }\n\n if (UI.existingType == 0) {\n let startX =\n -bayMainLength / 2 > -UI.existingLength1 / 2\n ? -bayMainLength / 2\n : -UI.existingLength1 / 2;\n let endX =\n bayMainLength / 2 < UI.existingLength1 / 2\n ? bayMainLength / 2\n : UI.existingLength1 / 2;\n distance = (endX - startX) / (numOfBraket - 1);\n offsetX = startX;\n } else if (UI.existingType == 1) {\n distance = (bayMainLength - _bracketOffsetXExt) / (numOfBraket - 1);\n offsetX = -bayMainLength / 2 + _bracketOffsetXExt;\n if (bayMainLength > UI.existingLength1 - UI.eaveWidth) {\n distance =\n (UI.existingLength1 - UI.eaveWidth - _bracketOffsetXExt) /\n (numOfBraket - 1);\n }\n if (!HomeComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n offsetX =\n -bayMainLength / 2 + UI.existingLength2 / 2 + _bracketOffsetXExt;\n }\n } else if (UI.existingType == 2) {\n offsetX = -bayMainLength / 2;\n distance = (bayMainLength - _bracketOffsetXExt) / (numOfBraket - 1);\n\n if (bayMainLength > UI.existingLength1 - UI.eaveWidth) {\n offsetX =\n -bayMainLength / 2 +\n (bayMainLength - UI.existingLength1 + UI.eaveWidth);\n distance =\n (UI.existingLength1 - _bracketOffsetXExt - UI.eaveWidth) /\n (numOfBraket - 1);\n }\n\n if (!HomeComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n offsetX -= UI.existingLength2 / 2;\n }\n } else if (UI.existingType == 3) {\n distance = (bayMainLength - _bracketOffsetXExt * 2) / (numOfBraket - 1);\n offsetX = -bayMainLength / 2 + _bracketOffsetXExt;\n }\n\n let optionBrakets: UpstandBraketOptions = {\n container: this.scene,\n position: new Vector3(),\n geoBraket_1: this.geoBraket_1,\n geoBraket_2: this.geoBraket_2,\n height: height,\n material: MaterialManager.Instance().FASCIA_BRACKET.clone(),\n };\n let views: Print2DView[] = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n let userData = {\n type: GEOMETRY_TYPE.UPSTAND_BRAKET,\n views: views,\n };\n for (let i = 0; i < numOfBraket; i++) {\n let posX = offsetX;\n if (i == 0) {\n posX = posX + this.geoBraket_1.width / 2;\n } else if (i == numOfBraket - 1) {\n posX = posX - this.geoBraket_1.width / 2;\n }\n new UpstandBraket({\n ...optionBrakets,\n position: new Vector3(\n posX,\n UI.existingWallHeight,\n UI.eaveWidth - UI.existingWidth1 / 2\n ),\n userData: userData,\n });\n offsetX += distance;\n }\n }\n\n public addUpstandBraketCutOut(numOfBraket = 2) {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.UPSTAND_BRAKET_CUTOUT\n )\n );\n if (HomeComponent.ins.sltCutOut._isDisable || UI.cutOutType == 0) {\n return;\n }\n if (UI.upstandBraketType == 0 || UI.listBay.length == 0) {\n return;\n }\n let height = +UI.upstandBraketType;\n // if (UI.isUpFasciaUpstandardBracket) {\n // height += (UI.existingWidth1 + this.geoBraket_2.height / 4) * this.utils.tan(UI.patiosPitch);\n // } else {\n // height -= (UI.existingWidth1 + this.geoBraket_2.height / 4) * this.utils.tan(UI.patiosPitch);\n // }\n\n if (height < 0) {\n return;\n }\n const _bracketOffsetXExt = this.geoBraket_2.height / 5;\n if (UI.existingType == 1 || UI.existingType == 3) {\n let _offsetZ = UI.existingWidth2 > 0 ? UI.overhangLeft : 0;\n let distance =\n (UI.existingLength2 - UI.eaveWidth - UI.overhangLeft + _offsetZ) /\n (numOfBraket - 1);\n let offsetZ = -UI.totalBayLength / 2 - _offsetZ + _bracketOffsetXExt;\n\n let optionBrakets: UpstandBraketOptions = {\n container: this.scene,\n position: new Vector3(),\n geoBraket_1: this.geoBraket_1,\n geoBraket_2: this.geoBraket_2,\n height: height,\n material: MaterialManager.Instance().FASCIA_BRACKET.clone(),\n };\n let views: Print2DView[] = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n let userData = {\n type: GEOMETRY_TYPE.UPSTAND_BRAKET_CUTOUT,\n views: views,\n };\n for (let i = 0; i < numOfBraket; i++) {\n let posX = offsetZ;\n if (i == 0) {\n posX = posX + this.geoBraket_1.width / 2;\n } else if (i == numOfBraket - 1) {\n posX = posX - this.geoBraket_1.width / 2;\n }\n new UpstandBraket({\n ...optionBrakets,\n position: new Vector3(\n posX,\n UI.existingWallHeight,\n UI.eaveWidth + UI.existingWidth1 / 2\n ),\n userData: userData,\n });\n offsetZ += distance;\n }\n }\n if (UI.existingType == 2 || UI.existingType == 3) {\n let _offsetZ = UI.existingWidth2 > 0 ? UI.overhangRight : 0;\n let distance =\n (UI.existingLength2 - (UI.overhangRight + UI.eaveWidth) + _offsetZ) /\n (numOfBraket - 1);\n let offsetZ =\n UI.totalBayLength / 2 -\n UI.existingLength2 +\n UI.eaveWidth +\n UI.overhangRight -\n _bracketOffsetXExt;\n let optionBrakets: UpstandBraketOptions = {\n container: this.scene,\n position: new Vector3(),\n geoBraket_1: this.geoBraket_1,\n geoBraket_2: this.geoBraket_2,\n height: height,\n material: MaterialManager.Instance().FASCIA_BRACKET.clone(),\n };\n let views: Print2DView[] = [\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n let userData = {\n type: GEOMETRY_TYPE.UPSTAND_BRAKET_CUTOUT,\n views: views,\n };\n for (let i = 0; i < numOfBraket; i++) {\n let posX = offsetZ;\n if (i == 0) {\n posX = posX + this.geoBraket_1.width / 2;\n } else if (i == numOfBraket - 1) {\n posX = posX - this.geoBraket_1.width / 2;\n }\n new UpstandBraket({\n ...optionBrakets,\n position: new Vector3(\n posX,\n UI.existingWallHeight,\n UI.eaveWidth + UI.existingWidth1 / 2\n ),\n userData: userData,\n });\n offsetZ += distance;\n }\n }\n }\n private addDownPipe() {\n let offsetZ =\n UI.span +\n UI.multiSpan +\n UI.eaveWidth +\n 100 -\n UI.existingWidth1 / 2 +\n this.geoBraket_2.height / 4;\n let offsetX = -this.totalBaySize / 2 + 50;\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n offsetX = this.totalBaySize / 2 - 50;\n }\n\n this.downpipeGroup.position.set(offsetX, 0, offsetZ);\n\n let offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight + +UI.upstandBraketType + this.geoBeam.height,\n UI.overhangFront,\n this.APP.sltRoofPitch.currentValue,\n -1\n ) + this.geo_roofBase.height;\n\n this.downpipeGroup = this.utils.createDownpipeGroup(\n this.APP,\n this.downpipeGroup,\n this.geo_downPipe,\n this.geo_downPipeL,\n offsetX,\n 0,\n offsetZ,\n offsetZ,\n 0,\n this.APP.sldFrontOverhang.currentValue,\n offsetY,\n true\n );\n }\n private addGround() {\n let offsetX = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n let offsetZ =\n -this.APP.sldExistingWidth1.currentValue / 2 - UI.overhangBack;\n let width =\n this.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n let length =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldBackOverhang.currentValue +\n this.APP.sldEaveWidth.currentValue +\n this.geoBraket_2.height / 4;\n\n let base = new Mesh(\n this.geo_groundBase.geometry,\n MaterialManager.Instance().BASE\n );\n base.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GROUND_BASE,\n };\n base.position.set(offsetX, 0, offsetZ);\n base.scale.set(\n width / this.geo_groundBase.width,\n 1,\n length / this.geo_groundBase.length\n );\n\n this.scene.add(base);\n }\n private getRoofHeight() {\n const _height = this.utils.getHeightByAngle(\n this.APP.sldExistingWallHeight.currentValue,\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue,\n this.APP.sltRoofPitch.currentValue,\n -1\n );\n return this.APP.sldExistingWallHeight.currentValue - _height;\n }\n private updateUI() {\n this.APP.roofHeight = this.getRoofHeight();\n this.APP.sldMinHeight.setValue(_.round(this.frontPostHeight, 0));\n }\n public getSection(): Printing2DGeometry {\n let objs = this.scene.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_POST ||\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_CENTER_POST\n );\n\n objs = [...objs];\n\n let lsGeometries: Printing2DLine[] = [];\n\n for (let o of objs) {\n let box = new BoxHelper(o);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n //this.scene.add(box);\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: outlineGeo.vertices,\n views: o.userData.views,\n });\n }\n let beamGroups = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n for (let g of beamGroups) {\n for (let c of g.children) {\n c.updateMatrix();\n\n let objCloned = c.clone();\n objCloned.applyMatrix4(new Matrix4().getInverse(c.matrix));\n\n let box = new BoxHelper(objCloned);\n\n c.updateWorldMatrix(true, true);\n\n box.geometry.applyMatrix4(c.matrixWorld);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n //this.APP.scene.add(box);\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n const planView = _.find(\n g.userData.views,\n (el) => el.viewType == ViewType.PLAN\n );\n const anotherViews = _.filter(\n g.userData.views,\n (el) => el.viewType != ViewType.PLAN\n );\n if (anotherViews.length > 0) {\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo.vertices,\n views: anotherViews,\n });\n }\n if (planView) {\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo.vertices\n .slice(0, 8)\n .filter((el, index) => [0, 1, 4, 5].includes(index)),\n views: [planView],\n });\n }\n }\n }\n\n let braketGroup = this.scene.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.UPSTAND_BRAKET ||\n o.userData.type == GEOMETRY_TYPE.UPSTAND_BRAKET_CUTOUT\n );\n\n for (let g of braketGroup) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n g.children[1] as Mesh,\n 60\n );\n g.children[1].updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(g.children[1].matrixWorld);\n outlineGeo.translate(0, 5000, 0);\n\n let simplifiedGeo = this.simplifyGeo(outlineGeo);\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: simplifiedGeo.vertices,\n views: g.userData.views,\n });\n\n g.children[0].updateMatrix();\n let objCloned = g.children[0].clone();\n objCloned.applyMatrix4(new Matrix4().getInverse(g.children[0].matrix));\n\n let box = new BoxHelper(objCloned);\n\n g.children[0].updateWorldMatrix(true, true);\n\n box.geometry.applyMatrix4(g.children[0].matrixWorld);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n //this.APP.scene.add(box);\n\n let outlineGeo1 = this.simplifyGeo(box.geometry as BufferGeometry);\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo1.vertices,\n views: g.userData.views,\n });\n }\n\n let rafterBeamGroups = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n );\n for (let o of rafterBeamGroups) {\n o.children.forEach((el) => {\n this.utils.getOutlineRafterBeam(el as Mesh, lsGeometries);\n });\n }\n\n return { lines: lsGeometries, texts: [] };\n }\n public simplifyGeo(geo: BufferGeometry): Geometry {\n let vertices = geo.getAttribute(\"position\").array;\n let lineGeo = new Geometry();\n for (let i = 0; i < vertices.length; i += 3) {\n lineGeo.vertices.push(\n new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2])\n );\n }\n\n //2-3\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n //3-7\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n //7-6\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n //6-2\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n\n //1-4\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n //4-8\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n //8-5\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n //5-1\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n\n return lineGeo;\n }\n private addCenterPost(offsetX, userDataPos) {\n let meshPost = new Mesh(\n this.geo_centerSuperiorPost.geometry,\n MaterialManager.Instance().BEAM\n );\n meshPost.userData = {\n ...userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_CENTER_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let scalePostY = 1;\n\n let views: Print2DView[];\n\n let postOffsetZ =\n (UI.span + UI.multiSpan) / 2 -\n this.geo_centerSuperiorPost.width / 2 -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4;\n\n this.frontPostHeight =\n UI.existingWallHeight + +UI.upstandBraketType + this.geoBeam.height;\n\n scalePostY =\n (((UI.span + UI.multiSpan) / 2 - this.geoBeam.width / 2) *\n this.utils.tan(UI.patiosPitch) -\n this.geoBeam.height) /\n this.geo_centerSuperiorPost.height;\n views = [\n // { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n let postOffsetX = offsetX - this.geo_centerSuperiorPost.width;\n\n if (userDataPos.first) {\n postOffsetX += this.geo_centerSuperiorPost.width / 2;\n } else if (userDataPos.last) {\n postOffsetX -= this.geo_centerSuperiorPost.width / 2;\n } else {\n }\n\n // if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT){\n // let offsetX = this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n // postOffsetX -= offsetX\n // }\n // if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT){\n // let offsetX = this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n // postOffsetX += offsetX\n // }\n\n meshPost.userData.views = views;\n meshPost.position.set(\n postOffsetX,\n UI.existingWallHeight + +UI.upstandBraketType + this.geoBeam.height,\n postOffsetZ\n );\n meshPost.scale.setY(scalePostY);\n\n this.scene.add(meshPost);\n }\n public addPost(offsetX: number, userDataPos: any) {\n if (userDataPos.isMultiSpan && this.APP.sldMultiSpan.currentValue === 0) {\n return;\n }\n // // let _flag = false;\n // if (userDataPos.left && this.APP.sldLeftOverhang.currentValue > 0 && this.APP.sltExistingType.currentValue == 1) {\n // // _flag = true;\n // return;\n // } else if (userDataPos.right && this.APP.sldRightOverhang.currentValue > 0 && this.APP.sltExistingType.currentValue == 2) {\n // // _flag = true;\n // return;\n // }\n const condition =\n this.APP.sldSpan.currentValue + this.APP.sldEaveWidth.currentValue;\n if (!userDataPos.isMultiSpan) {\n if (\n (this.existingType === 1 || this.existingType === 3) &&\n userDataPos.left &&\n (UI.existingWidth1 >= condition ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition &&\n UI.cutOutType == 1))\n ) {\n return;\n }\n if (\n (this.existingType === 2 || this.existingType === 3) &&\n userDataPos.right &&\n (UI.existingWidth1 >= condition ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition &&\n UI.cutOutType == 1))\n ) {\n return;\n }\n } else {\n if (\n (this.existingType === 1 || this.existingType === 3) &&\n userDataPos.left &&\n (UI.existingWidth1 >= condition + UI.multiSpan ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition + UI.multiSpan &&\n UI.cutOutType == 1))\n ) {\n return;\n }\n if (\n (this.existingType === 2 || this.existingType === 3) &&\n userDataPos.right &&\n (UI.existingWidth1 >= condition + UI.multiSpan ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition + UI.multiSpan &&\n UI.cutOutType == 1))\n ) {\n return;\n }\n }\n let views: Print2DView[] = [];\n if (userDataPos.isMultiSpan) {\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else {\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n const mesh = new Mesh(\n this.postInfo.geometry,\n MaterialManager.Instance().POST\n );\n let offsetZ =\n -this.APP.sldExistingWidth1.currentValue / 2 +\n this.APP.sldEaveWidth.currentValue +\n this.geoBraket_2.height / 4;\n if (userDataPos.isMultiSpan) {\n offsetZ +=\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue -\n this.beamInfo.width / 2;\n } else {\n offsetZ +=\n this.APP.sldSpan.currentValue -\n (this.APP.sldMultiSpan.currentValue > 0 ? 0 : this.beamInfo.width / 2);\n }\n let scaleY = 0;\n let length = 0;\n\n if (userDataPos.isMultiSpan) {\n length = UI.existingWallHeight + +UI.upstandBraketType;\n scaleY = length / this.postInfo.height;\n } else {\n length = UI.existingWallHeight + +UI.upstandBraketType;\n scaleY = length / this.postInfo.height;\n }\n\n //in case of multi span & apply to back post only\n if (\n !userDataPos.isMultiSpan &&\n this.APP.sltCutOut.currentValue == 1 &&\n this.MANAGER.cutoutCondition\n ) {\n if (\n this.APP.sldSpan.currentValue + this.APP.sldEaveWidth.currentValue >\n this.APP.sldExistingWidth1.currentValue &&\n this.APP.sldSpan.currentValue + this.APP.sldEaveWidth.currentValue <\n this.APP.sldExistingWidth1.currentValue +\n this.APP.sldEaveWidth.currentValue\n ) {\n if (this.APP.sltExistingType.currentValue == 1 && userDataPos.left) {\n offsetX += this.APP.sldExistingLength2.currentValue;\n } else if (\n this.APP.sltExistingType.currentValue == 2 &&\n userDataPos.right\n ) {\n offsetX -= this.APP.sldExistingLength2.currentValue;\n } else if (this.APP.sltExistingType.currentValue == 3) {\n if (userDataPos.left) {\n offsetX += this.APP.sldExistingLength2.currentValue;\n }\n if (userDataPos.right) {\n offsetX -= this.APP.sldExistingLength2.currentValue;\n }\n }\n }\n }\n\n let exceedMoveBackLimit = false;\n\n mesh.position.set(offsetX, 0, offsetZ);\n mesh.scale.setY(scaleY);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n position: userDataPos,\n views: views,\n };\n this.scene.add(mesh);\n }\n\n private addUpstandBraketExt(userDataPos: any) {\n if (\n UI.upstandBraketType == 0 ||\n UI.listBay.length == 0 ||\n UI.existingType == 0 ||\n (userDataPos.isMultiSpan && UI.multiSpan == 0)\n ) {\n return;\n }\n if (\n (this.existingType == 1 && userDataPos.right) ||\n (this.existingType == 2 && userDataPos.left)\n ) {\n return;\n }\n let _flag = false;\n\n const condition =\n this.APP.sldSpan.currentValue + this.APP.sldEaveWidth.currentValue;\n if (!userDataPos.isMultiSpan && !_flag) {\n if (\n (this.existingType === 1 || this.existingType === 3) &&\n userDataPos.left &&\n (UI.existingWidth1 >= condition ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition &&\n UI.cutOutType == 1))\n ) {\n _flag = true;\n // return;\n }\n if (\n (this.existingType === 2 || this.existingType === 3) &&\n userDataPos.right &&\n (UI.existingWidth1 >= condition ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition &&\n UI.cutOutType == 1))\n ) {\n _flag = true;\n // return;\n }\n } else if (!_flag) {\n if (\n (this.existingType === 1 || this.existingType === 3) &&\n userDataPos.left &&\n (UI.existingWidth1 >= condition + UI.multiSpan ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition + UI.multiSpan &&\n UI.cutOutType == 1))\n ) {\n _flag = true;\n // return;\n }\n if (\n (this.existingType === 2 || this.existingType === 3) &&\n userDataPos.right &&\n (UI.existingWidth1 >= condition + UI.multiSpan ||\n (UI.existingWidth1 + UI.existingWidth2 >= condition + UI.multiSpan &&\n UI.cutOutType == 1))\n ) {\n _flag = true;\n // return;\n }\n }\n if (!_flag) {\n return;\n }\n // if (userDataPos.left && UI.overhangLeft > 0 || userDataPos.right && UI.overhangRight > 0)\n // return;\n\n const _bracketOffsetXExt = this.geoBraket_2.height / 5; // + this.geoBraket_1.width / 4;\n let height = 0;\n let offsetX = -UI.existingLength1 / 2;\n let bayMainLength = UI.totalBayLength;\n if (!AppComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n if (UI.existingType == 1 || UI.existingType == 2) {\n bayMainLength -= UI.existingLength2;\n }\n if (UI.existingType == 3) {\n bayMainLength -= 2 * UI.existingLength2;\n }\n }\n const _cond1 =\n UI.existingWidth1 < condition &&\n UI.existingWidth1 + UI.existingWidth2 > condition;\n const _cond2 =\n userDataPos.isMultiSpan &&\n UI.existingWidth1 < condition + UI.multiSpan &&\n UI.existingWidth1 + UI.existingWidth2 > condition + UI.multiSpan;\n\n if (UI.existingType == 1) {\n offsetX = -bayMainLength / 2;\n if (!AppComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n offsetX = -bayMainLength / 2 + UI.existingLength2 / 2;\n }\n if (\n UI.existingWidth1 < condition ||\n (userDataPos.isMultiSpan &&\n UI.existingWidth1 + UI.existingWidth2 >= condition + UI.multiSpan)\n ) {\n offsetX -= UI.existingLength2;\n }\n offsetX += _bracketOffsetXExt;\n } else if (UI.existingType == 2) {\n offsetX = bayMainLength / 2 - this.geoBraket_1.width;\n if (!AppComponent.ins.sltCutOut._isDisable && UI.cutOutType == 1) {\n offsetX -= UI.existingLength2 / 2;\n }\n if (\n UI.existingWidth1 < condition ||\n (userDataPos.isMultiSpan &&\n UI.existingWidth1 + UI.existingWidth2 >= condition + UI.multiSpan)\n ) {\n offsetX += UI.existingLength2;\n }\n offsetX -= _bracketOffsetXExt;\n } else if (UI.existingType == 3) {\n offsetX =\n (-bayMainLength / 2) * (userDataPos.left ? 1 : -1) -\n (userDataPos.right ? this.geoBraket_1.width : 0);\n if ((!userDataPos.isMultiSpan && _cond1) || _cond2) {\n offsetX -=\n UI.existingLength2 * (userDataPos.left ? 1 : -1) +\n (userDataPos.right ? this.geoBraket_1.width : 0);\n }\n offsetX += _bracketOffsetXExt * (userDataPos.left ? 1 : -1);\n }\n let offsetZ =\n -this.APP.sldExistingWidth1.currentValue / 2 +\n this.APP.sldEaveWidth.currentValue -\n this.geoBraket_1.width / 2;\n if (userDataPos.isMultiSpan) {\n offsetZ += UI.span + UI.multiSpan - this.beamInfo.width / 2;\n } else {\n offsetZ += UI.span - (UI.multiSpan > 0 ? 0 : this.beamInfo.width / 2);\n }\n if (userDataPos.isMultiSpan) {\n height = +UI.upstandBraketType;\n } else {\n height = +UI.upstandBraketType;\n }\n let optionBrakets: UpstandBraketOptions = {\n container: this.scene,\n position: new Vector3(),\n geoBraket_1: this.geoBraket_1,\n geoBraket_2:\n UI.existingType == 2 ? this.geoBraketExtR_2 : this.geoBraketExtL_2,\n height: height,\n material: MaterialManager.Instance().FASCIA_BRACKET.clone(),\n };\n if (UI.existingType == 1) {\n optionBrakets = { ...optionBrakets, geoBraket_2: this.geoBraketExtL_2 };\n } else if (UI.existingType == 2) {\n optionBrakets = { ...optionBrakets, geoBraket_2: this.geoBraketExtR_2 };\n } else {\n optionBrakets = {\n ...optionBrakets,\n geoBraket_2: userDataPos.right\n ? this.geoBraketExtR_2\n : this.geoBraketExtL_2,\n };\n }\n new UpstandBraket({\n ...optionBrakets,\n position: new Vector3(offsetX, UI.existingWallHeight, offsetZ),\n userData: { type: GEOMETRY_TYPE.UPSTAND_BRAKET_EXT },\n });\n }\n\n public addBeam(userDataPos: any) {\n if (userDataPos.isMultiSpan && this.APP.sldMultiSpan.currentValue === 0) {\n return;\n }\n\n let offsetY = 0;\n let offsetZ =\n -UI.existingWidth1 / 2 + UI.eaveWidth + this.geoBraket_2.height / 4;\n let offsetXL = -(this.totalBaySize / 2 + UI.overhangLeft);\n let offsetXR = this.totalBaySize / 2;\n\n let beamLength = this.roofWidth + UI.overhangLeft + UI.overhangRight;\n\n const condition = UI.span + UI.eaveWidth;\n let _flag = false;\n if (\n (userDataPos.isMultiSpan &&\n this.APP.sldExistingWidth1.currentValue >=\n condition + this.APP.sldMultiSpan.currentValue) ||\n (!userDataPos.isMultiSpan &&\n this.APP.sldExistingWidth1.currentValue >= condition)\n ) {\n _flag = true;\n }\n if (userDataPos.isMultiSpan) {\n offsetY =\n UI.existingWallHeight + +UI.upstandBraketType + this.geoBeam.height;\n offsetZ +=\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue -\n this.beamInfo.width / 2;\n } else {\n offsetY =\n UI.existingWallHeight + +UI.upstandBraketType + this.geoBeam.height;\n offsetZ +=\n this.APP.sldSpan.currentValue -\n (this.APP.sldMultiSpan.currentValue > 0 ? 0 : this.beamInfo.width / 2);\n }\n\n let views: Print2DView[] = [];\n if (userDataPos.isMultiSpan) {\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else {\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n //Cutout\n if (\n !userDataPos.isMultiSpan &&\n this.APP.sltCutOut.currentValue == 1 &&\n this.MANAGER.cutoutCondition\n ) {\n if (\n this.APP.sldSpan.currentValue + this.APP.sldEaveWidth.currentValue <=\n this.APP.sldExistingWidth1.currentValue\n ) {\n if (this.APP.sltExistingType.currentValue == 1) {\n offsetXL += this.APP.sldExistingLength2.currentValue;\n beamLength =\n this.roofWidth - this.APP.sldExistingLength2.currentValue; // + this.APP.sldEaveWidth.currentValue;\n } else if (this.APP.sltExistingType.currentValue == 2) {\n offsetXR -= this.APP.sldExistingLength2.currentValue;\n beamLength =\n this.roofWidth - this.APP.sldExistingLength2.currentValue; // + this.APP.sldEaveWidth.currentValue;\n } else if (this.APP.sltExistingType.currentValue == 3) {\n offsetXL += this.APP.sldExistingLength2.currentValue;\n offsetXR -= this.APP.sldExistingLength2.currentValue;\n beamLength =\n this.roofWidth - this.APP.sldExistingLength2.currentValue * 2; // + this.APP.sldEaveWidth.currentValue;\n }\n } else if (\n this.APP.sldSpan.currentValue + this.APP.sldEaveWidth.currentValue >\n this.APP.sldExistingWidth1.currentValue &&\n this.APP.sldSpan.currentValue + this.APP.sldEaveWidth.currentValue <\n this.APP.sldExistingWidth1.currentValue +\n this.APP.sldEaveWidth.currentValue\n ) {\n if (this.APP.sltExistingType.currentValue == 1) {\n offsetXL += this.APP.sldExistingLength2.currentValue;\n beamLength =\n this.roofWidth - this.APP.sldExistingLength2.currentValue;\n } else if (this.APP.sltExistingType.currentValue == 2) {\n offsetXR -= this.APP.sldExistingLength2.currentValue;\n beamLength =\n this.roofWidth - this.APP.sldExistingLength2.currentValue;\n } else if (this.APP.sltExistingType.currentValue == 3) {\n offsetXL += this.APP.sldExistingLength2.currentValue;\n offsetXR -= this.APP.sldExistingLength2.currentValue;\n beamLength =\n this.roofWidth - this.APP.sldExistingLength2.currentValue * 2;\n }\n }\n }\n\n this.cutStandardBeamByCutBeamWithinBayControl(\n this.beamInfo,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetXL, offsetY, offsetZ),\n new Vector3(),\n views,\n 1,\n userDataPos,\n 0,\n \"x\",\n \"EB\",\n this.geoBeamJoint\n );\n }\n private cutStandardBeamToEqualLengthBeam(\n beamGeo: GeometryInfo,\n beamCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n userDataPos: any,\n beamGeoTranslationZ: number,\n beamDirection: string,\n beamName = \"\",\n jointGeo: GeometryInfo\n ) {\n const beamStartX = pos.x;\n const beamEndX = pos.x + length;\n\n const numOfBeam = Math.ceil(\n length / EXISTING_BUILDING_CONFIG.MAXIMUM_LENGTH_PER_BEAM\n );\n const lengthPerBeam = Math.abs(beamEndX - beamStartX) / numOfBeam;\n for (let i = 0; i < numOfBeam; i++) {\n let beamGroup = this.utils.createBeamGroup2(\n beamGeo,\n beamCapGeo,\n lengthPerBeam,\n new Vector3(beamStartX + lengthPerBeam * i, pos.y, pos.z),\n rot,\n views,\n directionOffset,\n userDataPos,\n beamGeoTranslationZ,\n beamDirection,\n UI.beamLayoutShow,\n {\n hasStartCap: UI.beamType == 0 && i == 0,\n hasEndCap:\n UI.beamType == 0 &&\n (i == numOfBeam - 1 || (i == 0 && numOfBeam == 1)),\n hasStartJoint: i !== 0,\n hasEndJoint: false,\n jointGeo: jointGeo,\n }\n );\n beamGroup.userData = {\n ...beamGroup.userData,\n name: beamName,\n };\n this.scene.add(beamGroup);\n }\n }\n private cutStandardBeamByCutBeamWithinBayControl(\n beamGeo: GeometryInfo,\n beamCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n userDataPos: any,\n beamGeoTranslationZ: number,\n beamDirection: string,\n beamName = \"\",\n jointGeo: GeometryInfo\n ) {\n // Map list cut beam here\n const beamStartX = pos.x;\n const beamEndX = pos.x + length;\n\n let endOfBayX = -UI.totalBayLength / 2;\n let startCutBeamX = beamStartX;\n let endCutBeamX = beamStartX;\n\n const beams = this.utils.getListSeperateBeamsByBays(\n endOfBayX,\n beamStartX,\n beamEndX,\n endCutBeamX,\n startCutBeamX\n );\n\n for (let i = 0; i < beams.length; i++) {\n endCutBeamX = beams[i][1];\n startCutBeamX = beams[i][0];\n let beamGroup = this.utils.createBeamGroup2(\n beamGeo,\n beamCapGeo,\n endCutBeamX - startCutBeamX,\n new Vector3(startCutBeamX, pos.y, pos.z),\n rot,\n views,\n directionOffset,\n userDataPos,\n beamGeoTranslationZ,\n beamDirection,\n UI.beamLayoutShow,\n {\n hasStartCap: UI.beamType == 0 && i == 0,\n hasEndCap:\n UI.beamType == 0 &&\n (i == beams.length - 1 || (i == 0 && beams.length == 1)),\n hasStartJoint: i !== 0,\n hasEndJoint: false,\n jointGeo: jointGeo,\n }\n );\n beamGroup.userData = {\n ...beamGroup.userData,\n name: beamName,\n };\n this.scene.add(beamGroup);\n }\n }\n public addHorSuperiorBeam(offsetX, userDataPos: any) {\n let mesh = new Mesh(this.geoBeam.geometry, MaterialManager.Instance().BEAM);\n\n let offsetXL = 0;\n let offsetXR = UI.span + UI.multiSpan - this.geoBeam.width * 2;\n let offsetZ = 0;\n let offsetY = 0;\n\n let scaleX =\n (UI.span + UI.multiSpan - this.geoBeam.width * 2) / this.geoBeam.length;\n\n let views: Print2DView[];\n\n if (userDataPos.front) {\n offsetY = UI.existingWallHeight + +UI.upstandBraketType;\n offsetZ =\n UI.span +\n UI.multiSpan -\n this.geoBeam.width -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4;\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n position: userDataPos,\n views: views,\n };\n mesh.position.set(offsetXL, 0, 0);\n mesh.scale.setX(scaleX);\n\n let capL = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capL.position.set(\n offsetXL +\n this.geo_beamEndCap.length / 2 -\n 2 -\n (scaleX * this.geoBeam.length) / 2,\n this.geo_beamEndCap.height,\n 0\n );\n capL.rotateY(Math.PI / 2);\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n let capR = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capR.position.set(\n offsetXR -\n this.geo_beamEndCap.length / 2 +\n 2 -\n (scaleX * this.geoBeam.length) / 2,\n this.geo_beamEndCap.height,\n 0\n );\n capR.rotateY(-Math.PI / 2);\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let beamOffsetX = offsetX;\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n position: userDataPos,\n views: views,\n name: \"GB\",\n };\n beamGroup.position.set(\n beamOffsetX,\n offsetY,\n offsetZ - (scaleX * this.geoBeam.length) / 2\n );\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n\n beamGroup.rotateY(Math.PI / 2);\n\n this.scene.add(beamGroup);\n }\n public addRafterSuperiorBeam(offsetX, userDataPos: any) {\n if (\n this.APP.sltWindClass.currentValue == 0 ||\n this.APP.sltWindClass.currentValue == 1\n ) {\n if (this.totalBaySize <= 6000 && this.APP.sldSpan.currentValue <= 7000) {\n return;\n }\n }\n if (\n this.APP.sltWindClass.currentValue == 3 ||\n this.APP.sltWindClass.currentValue == 4 ||\n this.APP.sltWindClass.currentValue == 5\n ) {\n return;\n }\n let mesh;\n\n let offsetXL = 0;\n let offsetXR =\n ((UI.span + UI.multiSpan) / 2 - this.beamInfo.width / 2) /\n this.utils.cos(UI.patiosPitch);\n let offsetZ = 0;\n let offsetY = 0;\n\n let scaleX =\n ((UI.span + UI.multiSpan) / 2 - this.beamInfo.width / 2) /\n this.utils.cos(UI.patiosPitch) /\n this.geo_RafterBeam.length;\n\n let views: Print2DView[];\n\n if (userDataPos.front) {\n let material = MaterialManager.Instance().BEAM.clone();\n\n let nBottom = new Vector3(0, 1, 0).normalize();\n let pBottom = new Vector3(\n 0,\n UI.existingWallHeight + +UI.upstandBraketType + this.beamInfo.height,\n 0\n );\n let planeBottom = new Plane().setFromNormalAndCoplanarPoint(\n nBottom,\n pBottom\n );\n\n let nVer = new Vector3(0, 0, 1).normalize();\n let pVer = new Vector3(\n 0,\n 0,\n (UI.span + UI.multiSpan) / 2 +\n this.beamInfo.width / 2 -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4\n );\n let planeVer = new Plane().setFromNormalAndCoplanarPoint(nVer, pVer);\n\n material.clippingPlanes = [planeBottom, planeVer];\n\n mesh = new Mesh(this.geo_RafterBeam.geometry, material);\n\n offsetY =\n UI.existingWallHeight + +UI.upstandBraketType + this.beamInfo.height;\n offsetZ =\n UI.span +\n UI.multiSpan -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4;\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.back) {\n let material = MaterialManager.Instance().BEAM.clone();\n\n let nBottom = new Vector3(0, 1, 0).normalize();\n let pBottom = new Vector3(\n 0,\n UI.existingWallHeight + +UI.upstandBraketType + this.beamInfo.height,\n 0\n );\n let planeBottom = new Plane().setFromNormalAndCoplanarPoint(\n nBottom,\n pBottom\n );\n\n let nVer = new Vector3(0, 0, -1).normalize();\n let pVer = new Vector3(\n 0,\n 0,\n (UI.span + UI.multiSpan) / 2 -\n this.beamInfo.width / 2 -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4\n );\n let planeVer = new Plane().setFromNormalAndCoplanarPoint(nVer, pVer);\n\n material.clippingPlanes = [planeBottom, planeVer];\n\n mesh = new Mesh(this.geo_RafterBeam.geometry, material);\n\n offsetY =\n UI.existingWallHeight +\n +UI.upstandBraketType +\n this.beamInfo.height +\n ((UI.span + UI.multiSpan) / 2 - this.beamInfo.width / 2) *\n this.utils.tan(UI.patiosPitch);\n offsetZ =\n (UI.span + UI.multiSpan) / 2 -\n this.beamInfo.width / 2 -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4;\n\n views = [\n // { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM,\n position: userDataPos,\n views: views,\n };\n mesh.position.set(offsetXL, 0, 0);\n mesh.scale.setX(scaleX);\n\n let checkExec = /\\w{1}\\d{1,3}x(\\d{1,3})/.exec(this.geo_RafterBeam.name);\n let beamSize = checkExec && checkExec.length == 2 ? checkExec[1] : \"\";\n let lowerBraketName = getRafterBeamEndCapCode(\n EXISTING_BUILDING_CONFIG.RAFTER_BEAM_SIZE,\n false\n );\n let higherBraketName = getRafterBeamEndCapCode(\n EXISTING_BUILDING_CONFIG.RAFTER_BEAM_SIZE,\n true\n );\n\n let capL;\n let capR;\n if (userDataPos.front) {\n let matEndCap = MaterialManager.Instance().BEAM.clone();\n\n let heightReal =\n UI.existingWallHeight +\n +UI.upstandBraketType +\n this.beamInfo.height +\n (this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan)) / 2;\n let heightPlane = heightReal * this.utils.cos(UI.patiosPitch);\n let translateZ = this.utils.sin(UI.patiosPitch) * heightPlane;\n\n let planeTop = new Plane(new Vector3(0, -1, 0));\n let matrixTranslateTop = new Matrix4().makeTranslation(\n 0,\n heightPlane,\n translateZ / 2\n );\n let matrixRotateTop = new Matrix4().makeRotationX(\n this.utils.degreesToRadians(UI.patiosPitch)\n ); //tao voi z pitch do\n let matrixTotalTop = matrixTranslateTop.multiply(matrixRotateTop);\n planeTop.applyMatrix4(matrixTotalTop);\n\n let heightRealBottom =\n UI.existingWallHeight +\n +UI.upstandBraketType +\n this.beamInfo.height -\n this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n (this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan)) / 2;\n let heightPlaneBottom = heightRealBottom * this.utils.cos(UI.patiosPitch);\n let translateZBottom = this.utils.sin(UI.patiosPitch) * heightPlaneBottom;\n\n let planeBottom = new Plane(new Vector3(0, 1, 0));\n let matrixTranslateBottom = new Matrix4().makeTranslation(\n 0,\n heightPlaneBottom,\n translateZBottom / 2\n );\n let matrixRotateBottom = new Matrix4().makeRotationX(\n this.utils.degreesToRadians(UI.patiosPitch)\n ); //tao voi z pitch do\n let matrixTotalBottom =\n matrixTranslateBottom.multiply(matrixRotateBottom);\n planeBottom.applyMatrix4(matrixTotalBottom);\n\n planeTop.translate(\n new Vector3(\n 0,\n 0,\n (UI.span + UI.multiSpan) / 2 -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4 +\n this.scene.position.z\n )\n );\n planeBottom.translate(\n new Vector3(\n 0,\n 0,\n (UI.span + UI.multiSpan) / 2 -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4 +\n this.scene.position.z\n )\n );\n\n matEndCap.clippingPlanes = [planeTop, planeBottom];\n\n capL = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capL.position.set(offsetXL - 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capL.scale.setY(\n (this.geo_RafterBeam.height / this.utils.sin(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length / this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capL.rotateY(Math.PI / 2);\n capL.rotateX(-Math.PI / 2 + this.utils.degreesToRadians(UI.patiosPitch));\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: lowerBraketName,\n };\n\n capR = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capR.position.set(offsetXR + 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capR.scale.setY(\n (this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length * this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capR.rotateY(-Math.PI / 2);\n capR.rotateX(-this.utils.degreesToRadians(UI.patiosPitch));\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: higherBraketName,\n };\n } else {\n let matEndCap = MaterialManager.Instance().BEAM.clone();\n\n let heightReal =\n UI.existingWallHeight +\n +UI.upstandBraketType +\n this.beamInfo.height +\n (this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan)) / 2;\n let heightPlane = heightReal * this.utils.cos(UI.patiosPitch);\n let translateZ = this.utils.sin(UI.patiosPitch) * heightPlane;\n\n let planeTop = new Plane(new Vector3(0, -1, 0));\n let matrixTranslateTop = new Matrix4().makeTranslation(\n 0,\n heightPlane,\n -translateZ / 2\n );\n let matrixRotateTop = new Matrix4().makeRotationX(\n -this.utils.degreesToRadians(UI.patiosPitch)\n ); //tao voi z pitch do\n let matrixTotalTop = matrixTranslateTop.multiply(matrixRotateTop);\n planeTop.applyMatrix4(matrixTotalTop);\n\n let heightRealBottom =\n UI.existingWallHeight +\n +UI.upstandBraketType +\n this.beamInfo.height -\n this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n (this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan)) / 2;\n let heightPlaneBottom = heightRealBottom * this.utils.cos(UI.patiosPitch);\n let translateZBottom = this.utils.sin(UI.patiosPitch) * heightPlaneBottom;\n\n let planeBottom = new Plane(new Vector3(0, 1, 0));\n let matrixTranslateBottom = new Matrix4().makeTranslation(\n 0,\n heightPlaneBottom,\n -translateZBottom / 2\n );\n let matrixRotateBottom = new Matrix4().makeRotationX(\n -this.utils.degreesToRadians(UI.patiosPitch)\n ); //tao voi z pitch do\n let matrixTotalBottom =\n matrixTranslateBottom.multiply(matrixRotateBottom);\n planeBottom.applyMatrix4(matrixTotalBottom);\n\n planeTop.translate(\n new Vector3(\n 0,\n 0,\n (UI.span + UI.multiSpan) / 2 -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4 +\n this.scene.position.z\n )\n );\n planeBottom.translate(\n new Vector3(\n 0,\n 0,\n (UI.span + UI.multiSpan) / 2 -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4 +\n this.scene.position.z\n )\n );\n\n matEndCap.clippingPlanes = [planeTop, planeBottom];\n\n capL = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capL.position.set(offsetXL - 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capL.scale.setY(\n (this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length * this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capL.rotateY(Math.PI / 2);\n capL.rotateX(-this.utils.degreesToRadians(UI.patiosPitch));\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: higherBraketName,\n };\n\n capR = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capR.position.set(offsetXR + 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capR.scale.setY(\n (this.geo_RafterBeam.height / this.utils.sin(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length / this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capR.rotateY(-Math.PI / 2);\n capR.rotateX(-Math.PI / 2 + this.utils.degreesToRadians(UI.patiosPitch));\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: lowerBraketName,\n };\n }\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM,\n position: userDataPos,\n views: views,\n };\n beamGroup.position.set(offsetX, offsetY, offsetZ);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n\n beamGroup.rotateY(Math.PI / 2);\n\n if (userDataPos.front) {\n beamGroup.rotateZ(this.utils.degreesToRadians(UI.patiosPitch));\n } else if (userDataPos.back) {\n beamGroup.rotateZ(-this.utils.degreesToRadians(UI.patiosPitch));\n }\n\n this.scene.add(beamGroup);\n }\n public addCenterSuperiorBeam() {\n let offsetXL = -(this.totalBaySize / 2 + UI.overhangLeft);\n let offsetZ = 0;\n let offsetY = 0;\n\n let beamLength = this.totalBaySize + UI.overhangLeft + UI.overhangRight;\n\n let views: Print2DView[];\n\n offsetY =\n UI.existingWallHeight +\n +UI.upstandBraketType +\n this.beamInfo.height +\n ((UI.span + UI.multiSpan) / 2 - this.geoBeam.width / 2) *\n this.utils.tan(UI.patiosPitch);\n offsetZ =\n (UI.span + UI.multiSpan) / 2 -\n UI.existingWidth1 / 2 +\n UI.eaveWidth +\n this.geoBraket_2.height / 4;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n this.cutStandardBeamByCutBeamWithinBayControl(\n this.beamInfo,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetXL, offsetY, offsetZ),\n new Vector3(),\n views,\n 1,\n { center: true },\n 0,\n \"x\",\n \"RB\",\n this.geoBeamJoint\n );\n }\n private getHeightByRoofPitch(isSpan: boolean): number {\n if (isSpan) {\n if (UI.isUpFasciaUpstandardBracket) {\n return (\n -this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n this.APP.sldSpan.currentValue\n );\n } else {\n return (\n this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n this.APP.sldSpan.currentValue\n );\n }\n } else {\n if (UI.isUpFasciaUpstandardBracket) {\n return (\n -this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue)\n );\n } else {\n return (\n this.utils.tan(this.APP.sltRoofPitch.currentValue) *\n (this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue)\n );\n }\n }\n }\n}\n","import { BoxBufferGeometry, BufferGeometry, Color, Geometry, Group, LineSegments, Material, Matrix4, Mesh, MeshLambertMaterial, Object3D, Plane, Vector3 } from 'three';\nimport { GEOMETRY_CATEGORY, GEOMETRY_TYPE } from '../../app.config';\nimport { BUILDING_SIDE, CUTOUT_ENABLE, EXISTING_BUILDING_CONFIG as CONST, EXISTING_BUILDING_CONFIG, PANEL_DIRECTION, RAKECUT_TYPE } from '../../app.constants';\nimport { Util } from '../utils';\n// import { AppComponent } from '../../app.component';\nimport HighLightBox from 'src/app/models/HighlightBox';\nimport { CSG } from 'three-csg-ts';\nimport { GableLRFasciaManager } from '.';\nimport { HomeComponent as AppComponent } from '../../containers/home/home.component';\nimport { GeometryManager } from '../geometry.manager';\nimport { MaterialManager } from '../material.manager';\nimport { GeometryInfo, LineType, Print2DView, Printing2DGeometry, Printing2DLine, ViewType } from '../models';\nimport { UI } from '../ui';\n\nexport class RoofManager {\n private scene: Group;\n private APP: AppComponent;\n private MANAGER: GableLRFasciaManager;\n private material: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private roofInfo: GeometryInfo;\n private roofBaseInfo: GeometryInfo;\n private zFlashingGeo: GeometryInfo\n private zFlashingRakecutRightGeo: GeometryInfo;\n private bargeLeftInfo: GeometryInfo;\n private bargeRightInfo: GeometryInfo;\n private bargeFrontInfo: GeometryInfo;\n private bargeBackInfo: GeometryInfo;\n private geo_bargeCutoutLeftHor: GeometryInfo;\n private geo_bargeCutoutRightHor: GeometryInfo;\n private geo_bargeRakecutLeft: GeometryInfo;\n private geo_bargeRakecutRight: GeometryInfo;\n private receiverCutoutLeftHor: GeometryInfo;\n private receiverCutoutLeftVer: GeometryInfo;\n private receiverCutoutRightHor: GeometryInfo;\n private receiverCutoutRightVer: GeometryInfo;\n private gutterInfo: GeometryInfo;\n private gutterRakecutLeftInfo: GeometryInfo;\n private gutterRakecutRightInfo: GeometryInfo;\n public ridgeGeo: GeometryInfo;\n //private flashingInfo: GeometryInfo;\n private geo_receiverChanel: GeometryInfo;\n private geo_gutterCap: GeometryInfo;\n public geoBraket_1: GeometryInfo;\n public geoBraket_2: GeometryInfo;\n private geoBeam: GeometryInfo;\n private geoBeamEndCap: GeometryInfo;\n private eventHandleId: any;\n // Var\n private roofLength: number;\n private roofLengthPlus: number;\n private roofWidth: number;\n //private existingTypeLeftX: number;\n //private existingTypeRightX: number;\n private existingType: number;\n private totalBaySize: number;\n private objectSizeChangedHandle: any;\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n\n private mesh_CutoutLeft: Mesh;\n private csg_cutoutLeft: CSG;\n private mesh_CutoutRight: Mesh;\n private csg_cutoutRight: CSG;\n private geo_cutoutLeft: BoxBufferGeometry;\n private geo_cutoutRight: BoxBufferGeometry;\n\n private geo_rakecutLeft: BoxBufferGeometry;\n private geo_rakecutRight: BoxBufferGeometry;\n private mesh_rakecutLeft: Mesh;\n private mesh_rakecutRight: Mesh;\n private csg_rakecutLeft: CSG;\n private csg_rakecutRight: CSG;\n\n private geoCutGutter: BoxBufferGeometry;\n private meshCutGutterLeft1: Mesh;\n private csgCutGutterLeft1: CSG;\n private meshCutGutterLeft2: Mesh;\n private csgCutGutterLeft2: CSG;\n\n private meshCutGutterRight1: Mesh;\n private csgCutGutterRight1: CSG;\n private meshCutGutterRight2: Mesh;\n private csgCutGutterRight2: CSG;\n\n private roofGroupFront: Group;\n private roofGroupBack: Group;\n private cutoutExistingBothLength: number;\n\n constructor(app: AppComponent, fasciaManager: GableLRFasciaManager) {\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.APP = app;\n this.MANAGER = fasciaManager;\n this.scene = new Group();\n fasciaManager.patiosGroup.add(this.scene)\n this.material = MaterialManager.Instance().ROOF;\n this.registerEvent();\n }\n public destroy(): void {\n this.unregisterEvent();\n }\n public uiChanged(preVal: number, curVal: number): void {\n this.load();\n }\n private objectSizeChanged(preVal: number, curVal: number) {\n this.optimize().then(() => { this.load() });\n }\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldBaySize,\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldExistingWallHeight,\n this.APP.sldFrontOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldLeftOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldExistingWidth1,\n this.APP.sldNoOfBay,\n this.APP.dialogEditBay,\n this.APP.sldEaveWidth,\n this.APP.sltExistingType,\n this.APP.sltColourDownpipe,\n ];\n //this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n this.controlsToRegisterEvent2 = [\n this.APP.sltRoofSheetingType,\n this.APP.sltRoofThickness,\n this.APP.sltBargeType,\n this.APP.sltDripBarge,\n this.APP.sltGutterType,\n this.APP.sltRoofPitch\n ];\n this.controlsToRegisterEvent2.forEach(c => c.addAction(this.objectSizeChangedHandle));\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach(c => c.removeAction(this.objectSizeChangedHandle));\n this.controlsToRegisterEvent2 = undefined;\n }\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n this.roofInfo = this.geometryManager.getRoofSheetPanel();\n this.roofInfo.geometry\n .translate(this.roofInfo.width / 2 + 3, -1, this.roofInfo.length / 2);\n\n this.roofBaseInfo = this.geometryManager.getRoofBase();\n this.roofBaseInfo.geometry\n .translate(this.roofBaseInfo.width / 2, this.roofBaseInfo.height / 2, this.roofBaseInfo.length / 2);\n\n this.zFlashingGeo = this.geometryManager.getZFlashing();\n this.zFlashingRakecutRightGeo = this.geometryManager.getZFlashing();\n this.zFlashingRakecutRightGeo.geometry.translate(-this.zFlashingRakecutRightGeo.length, 0, 0);\n\n // Barge capping\n this.bargeLeftInfo = this.geometryManager.getBarge();\n this.bargeLeftInfo.geometry\n .rotateY(Math.PI)\n .translate(this.bargeLeftInfo.width / 2 - 3, this.bargeLeftInfo.height / 2 - (this.APP.sltDripBarge.currentValue ? 9 : 1), this.bargeLeftInfo.length / 2);\n\n this.bargeRightInfo = this.geometryManager.getBarge();\n this.bargeRightInfo.geometry\n .translate(-this.bargeRightInfo.width / 2 + 3, this.bargeRightInfo.height / 2 - (this.APP.sltDripBarge.currentValue ? 9 : 1), this.bargeRightInfo.length / 2);\n\n //Barge cutout left\n this.receiverCutoutLeftHor = this.geometryManager.getReceiverChannel();\n this.receiverCutoutLeftHor.geometry\n .rotateY(Math.PI / 2)\n .translate(-this.receiverCutoutLeftHor.length / 2, this.receiverCutoutLeftHor.height / 2, this.receiverCutoutLeftHor.width / 2);\n\n //Barge cutout right\n this.receiverCutoutRightHor = this.geometryManager.getReceiverChannel();\n this.receiverCutoutRightHor.geometry\n .rotateY(Math.PI / 2)\n .translate(this.receiverCutoutLeftHor.length / 2, this.receiverCutoutLeftHor.height / 2, this.receiverCutoutLeftHor.width / 2);\n\n //Vertical Barge cutout left\n this.receiverCutoutLeftVer = this.geometryManager.getReceiverChannel();\n this.receiverCutoutLeftVer.geometry\n .rotateY(Math.PI)\n .translate(this.receiverCutoutLeftVer.width / 2, this.receiverCutoutLeftVer.height / 2, this.receiverCutoutLeftVer.length / 2);\n\n //Vertical cutout right\n this.receiverCutoutRightVer = this.geometryManager.getReceiverChannel();\n this.receiverCutoutRightVer.geometry\n .translate(-this.receiverCutoutRightVer.width / 2, this.receiverCutoutRightVer.height / 2, this.receiverCutoutRightVer.length / 2);\n\n //Receiver chanel - barge caping back\n this.geo_receiverChanel = this.geometryManager.getReceiverChannel();\n this.geo_receiverChanel.geometry\n .rotateY(Math.PI / 2)\n .translate(this.geo_receiverChanel.length / 2, this.geo_receiverChanel.height / 2 + 2, this.geo_receiverChanel.width / 2);\n\n // Gutter\n this.gutterInfo = this.geometryManager.getGutter();\n this.gutterInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.gutterInfo.length / 2, -20, this.gutterInfo.width / 2);\n\n this.gutterRakecutLeftInfo = this.geometryManager.getGutter();\n this.gutterRakecutLeftInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.gutterRakecutLeftInfo.length / 2, -20, this.gutterRakecutLeftInfo.width / 2);\n\n this.gutterRakecutRightInfo = this.geometryManager.getGutter();\n this.gutterRakecutRightInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(-this.gutterRakecutRightInfo.length / 2, -20, this.gutterRakecutRightInfo.width / 2);\n\n //Gutter cap\n this.geo_gutterCap = this.geometryManager.getGuterEndCap();\n this.geo_gutterCap.geometry\n .rotateY(-Math.PI / 2)\n .translate(0, -20, this.geo_gutterCap.length / 2);\n\n\n this.geo_cutoutLeft = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_cutoutLeft.translate(-500, 0, -500);\n\n this.geo_cutoutRight = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_cutoutRight.translate(500, 0, -500);\n\n this.geo_rakecutLeft = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_rakecutLeft.translate(-500, 500, 500);\n this.geo_rakecutRight = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_rakecutRight.translate(500, 500, 500);\n\n this.geoCutGutter = new BoxBufferGeometry(800, 10000, 500);\n this.geoCutGutter.translate(0, 0, -250);\n\n this.geoBraket_1 = this.geometryManager.getUpstandBraket(1);\n this.geoBraket_1.geometry.rotateX(Math.PI / 2);\n this.geoBraket_1.geometry.translate(0, this.geoBraket_1.length / 2, 0);\n\n this.geoBraket_2 = this.geometryManager.getUpstandBraket(2);\n this.geoBraket_2.geometry.rotateY(Math.PI);\n this.geoBraket_2.geometry.rotateX(Math.PI / 2);\n this.geoBraket_2.geometry.translate(0, this.geoBraket_2.length / 2, - this.geoBraket_2.height / 4);\n\n this.geoBeam = this.geometryManager.getBeam();\n this.geoBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(0, this.geoBeam.height / 2, 0);\n\n this.geoBeamEndCap = this.geometryManager.getBeamEndCap();\n this.geoBeamEndCap.geometry\n .translate(0, this.geoBeamEndCap.height / 2, this.geoBeamEndCap.length / 2)\n .rotateY(Math.PI / 2);\n\n this.bargeFrontInfo = this.geometryManager.getBarge();\n this.bargeFrontInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.bargeFrontInfo.length / 2, this.bargeFrontInfo.height / 2 - (this.APP.sltDripBarge.currentValue ? 9 : 1), -this.bargeFrontInfo.width / 2);\n\n this.bargeBackInfo = this.geometryManager.getBarge();\n this.bargeBackInfo.geometry\n .rotateY(Math.PI / 2)\n .translate(this.bargeBackInfo.length / 2, this.bargeBackInfo.height / 2 - (this.APP.sltDripBarge.currentValue ? 9 : 1), this.bargeBackInfo.width / 2 - 3);\n\n this.geo_bargeRakecutLeft = this.geometryManager.getBarge();\n this.geo_bargeRakecutLeft.geometry\n .rotateY(Math.PI)\n .translate(this.geo_bargeRakecutLeft.width / 2, this.geo_bargeRakecutLeft.height / 2 - (this.APP.sltDripBarge.currentValue ? 9 : 1), -this.geo_bargeRakecutLeft.length / 2);\n\n this.geo_bargeRakecutRight = this.geometryManager.getBarge();\n this.geo_bargeRakecutRight.geometry\n .translate(-this.geo_bargeRakecutRight.width / 2, this.geo_bargeRakecutRight.height / 2 - (this.APP.sltDripBarge.currentValue ? 9 : 1), -this.geo_bargeRakecutRight.length / 2);\n\n this.geo_bargeRakecutLeft = this.geometryManager.getBarge();\n this.geo_bargeRakecutLeft.geometry\n .rotateY(Math.PI)\n .translate(this.geo_bargeRakecutLeft.width / 2, this.geo_bargeRakecutLeft.height / 2 - (this.APP.sltDripBarge.currentValue ? 9 : 1), -this.geo_bargeRakecutLeft.length / 2);\n\n this.geo_bargeRakecutRight = this.geometryManager.getBarge();\n this.geo_bargeRakecutRight.geometry\n .translate(-this.geo_bargeRakecutRight.width / 2, this.geo_bargeRakecutRight.height / 2 - (this.APP.sltDripBarge.currentValue ? 9 : 1), -this.geo_bargeRakecutRight.length / 2);\n\n //Barge cutout left\n this.geo_bargeCutoutLeftHor = this.geometryManager.getBarge();\n this.geo_bargeCutoutLeftHor.geometry\n .rotateY(Math.PI / 2)\n .translate(-this.geo_bargeCutoutLeftHor.length / 2, this.geo_bargeCutoutLeftHor.height / 2 - (this.APP.sltDripBarge.currentValue ? 9 : 1), this.geo_bargeCutoutLeftHor.width / 2);\n\n //Barge cutout right\n this.geo_bargeCutoutRightHor = this.geometryManager.getBarge();\n this.geo_bargeCutoutRightHor.geometry\n .rotateY(Math.PI / 2)\n .translate(this.geo_bargeCutoutRightHor.length / 2, this.geo_bargeCutoutRightHor.height / 2 - (this.APP.sltDripBarge.currentValue ? 9 : 1), this.geo_bargeCutoutRightHor.width / 2);\n\n this.ridgeGeo = this.geometryManager.getRidge();\n this.ridgeGeo.geometry.translate(- this.ridgeGeo.width / 2, - this.ridgeGeo.height / 2, 0);\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(...this.scene.children.filter(x => x.userData.type === GEOMETRY_TYPE.ROOF_PANEL));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type === GEOMETRY_TYPE.ROOF_PANEL_BASE));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type === GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type === GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type === GEOMETRY_TYPE.GUTTER_PATIOS));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PATIOS));\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.SHEET_OUTLINE));\n //test\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == 'RAKECUT'));\n\n this.totalBaySize = this.APP.dialogEditBay.listBay.reduce((total, val) => total + val.value, 0);\n this.roofLength = (UI.span + UI.multiSpan) / 2 + UI.overhangFront;\n this.roofLengthPlus = this.roofLength / this.utils.cos(UI.patiosPitch);\n this.roofWidth = this.totalBaySize + this.APP.sldLeftOverhang.currentValue + this.APP.sldRightOverhang.currentValue;\n this.cutoutExistingBothLength = (this.totalBaySize - (this.APP.sldExistingLength.currentValue + this.APP.existingWallManager.geo_existingWallW1.width * 2)) / 2;\n\n this.addRoofGroupFront();\n this.addRoofGroupBack();\n this.addCutout();\n\n this.existingType = +this.APP.sltExistingType.currentValue;\n\n\n let offsetXR = this.totalBaySize / 2 + this.MANAGER.patiosGroup.position.x + this.APP.sldRightOverhang.currentValue;\n\n let offsetLeft = this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue - this.MANAGER.patiosGroup.position.x;\n let clipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n const clipingPlane = new Plane(new Vector3(-1, 0, 0), offsetXR); // (this.APP.sldBaySize.currentValue / 2) + this.APP.sldRightOverhang.currentValue );\n this.material.clippingPlanes = [clipingPlaneLeft, clipingPlane];\n MaterialManager.Instance().ROOF_BASE.clippingPlanes = [clipingPlaneLeft, clipingPlane];\n const roofPanelCount = Math.ceil(this.roofWidth / this.roofInfo.width);\n let offsetXL = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n\n //panel direction\n let panelDirectionOfset = 1;\n if (this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT) {\n offsetXL = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue - this.roofInfo.width;\n panelDirectionOfset = -1;\n }\n else if (this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.LEFT_TO_RIGHT) {\n offsetXL = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n }\n\n\n if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT && this.MANAGER.cutoutCondition) {\n let totalPanelLength = 0;\n let cuted = true;\n\n for (let index = 0; index < roofPanelCount; index++) {\n totalPanelLength += this.roofInfo.width;\n let isOver = totalPanelLength < this.APP.sldExistingLength2.currentValue;\n\n this.addRoofFrontBaseFront(offsetXL, [this.csg_cutoutLeft]);\n this.addRoofFront(offsetXL, [this.csg_cutoutLeft]);\n\n this.addRoofFrontBaseBack(offsetXL, [this.csg_cutoutLeft]);\n this.addRoofBack(offsetXL, [this.csg_cutoutLeft]);\n cuted = isOver;\n\n offsetXL += this.roofInfo.width * panelDirectionOfset;\n }\n }\n else if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT && this.MANAGER.cutoutCondition) {\n let totalPanelLength = 0;\n let cuted = false;\n for (let index = 0; index < roofPanelCount; index++) {\n totalPanelLength += this.roofInfo.width;\n let isOver = totalPanelLength >= this.roofWidth - this.APP.sldExistingLength2.currentValue + this.roofInfo.width;\n cuted = totalPanelLength >= this.roofWidth - this.APP.sldExistingLength2.currentValue && !isOver;\n\n this.addRoofFrontBaseFront(offsetXL, [this.csg_cutoutRight]);\n this.addRoofFront(offsetXL, [this.csg_cutoutRight]);\n\n this.addRoofFrontBaseBack(offsetXL, [this.csg_cutoutRight]);\n this.addRoofBack(offsetXL, [this.csg_cutoutRight]);\n offsetXL += this.roofInfo.width * panelDirectionOfset;\n }\n }\n else if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH && this.MANAGER.cutoutCondition) {\n let totalPanelLength = 0;\n let cuted = false;\n let cuted2 = false;\n for (let index = 0; index < roofPanelCount; index++) {\n totalPanelLength += this.roofInfo.width;\n let isOver = totalPanelLength < this.APP.sldExistingLength2.currentValue;\n let isOver2 = totalPanelLength >= this.roofWidth - this.APP.sldExistingLength2.currentValue + this.roofInfo.width;\n let flag = totalPanelLength >= this.roofWidth - this.APP.sldExistingLength2.currentValue;\n\n this.addRoofFrontBaseFront(offsetXL, [this.csg_cutoutLeft, this.csg_cutoutRight]);\n this.addRoofFront(offsetXL, [this.csg_cutoutLeft, this.csg_cutoutRight]);\n\n this.addRoofFrontBaseBack(offsetXL, [this.csg_cutoutLeft, this.csg_cutoutRight]);\n this.addRoofBack(offsetXL, [this.csg_cutoutLeft, this.csg_cutoutRight]);\n\n offsetXL += this.roofInfo.width * panelDirectionOfset;\n }\n }\n else {\n for (let index = 0; index < roofPanelCount; index++) {\n this.addRoofFrontBaseFront(offsetXL, []);\n this.addRoofFront(offsetXL, []);\n\n this.addRoofFrontBaseBack(offsetXL, []);\n this.addRoofBack(offsetXL, []);\n offsetXL += this.roofInfo.width * panelDirectionOfset;\n }\n }\n\n this.addZFlashingFront();\n this.addZFlashingBack();\n\n this.addBargeFront();\n this.addBargeBack();\n\n this.addGutterFront();\n this.addGutterBack();\n\n this.addRidgeCapping();\n\n this.showPanelOutline();\n\n this.scene.visible = UI.showRoof\n\n resolve();\n });\n }\n\n public addRidgeCapping(){\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.RIDGE_CAPPING));\n\n let ridgeFront = this.createRidgeCapping();\n ridgeFront.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.RIDGE_CAPPING};\n const height = this.getRoofOffsetY() + \n this.roofBaseInfo.height / this.utils.cos(this.APP.sltRoofPitch.currentValue) + \n this.roofInfo.height / this.utils.cos(this.APP.sltRoofPitch.currentValue) - \n (this.APP.sltRoofSheetingType.currentValue == 0 || this.APP.sltRoofSheetingType.currentValue == 1 ? 20 : 10);\n \n let offsetX = (UI.overhangRight - UI.overhangLeft) / 2\n \n const ridgeLength = this.totalBaySize + this.APP.sldLeftOverhang.currentValue + this.APP.sldRightOverhang.currentValue;\n ridgeFront.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.RIDGE_CAPPING, length: ridgeLength, views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }]};\n ridgeFront.scale.setZ(ridgeLength / this.ridgeGeo.length);\n ridgeFront.rotation.set(0, Math.PI / 2, 0)\n ridgeFront.position.set( offsetX, height, ( UI.span + UI.multiSpan ) / 2 - UI.existingWidth1 / 2 + UI.eaveWidth + this.geoBraket_2.height / 4);\n this.scene.add(ridgeFront)\n }\n\n public createRidgeCapping(){\n let leftCap = new Mesh(this.ridgeGeo.geometry, MaterialManager.Instance().RIDGE_CAPPING);\n let rightCap = new Mesh(this.ridgeGeo.geometry, MaterialManager.Instance().RIDGE_CAPPING);\n\n rightCap.rotateY(Math.PI)\n\n leftCap.rotateZ(this.utils.degreesToRadians(UI.patiosPitch))\n rightCap.rotateZ(this.utils.degreesToRadians(UI.patiosPitch))\n\n leftCap.userData = {views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }]}\n rightCap.userData = {views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }]}\n\n return new Group().add(leftCap, rightCap)\n }\n\n private addCutout() {\n if (this.APP.sltCutOut.currentValue == 1) {\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == 'CUTOUT'));\n\n let offsetX = this.APP.sldExistingLength.currentValue / 2 - this.APP.sldEaveWidth.currentValue;\n let offsetY = 0;\n const eaveThickness = 50;\n let offsetZ = this.APP.sldExistingWidth1.currentValue / 2 + UI.eaveWidth + eaveThickness - UI.overhangBack;\n\n //extra length to prevent lack when cut\n let extra = 5000;\n\n let scaleX = (this.APP.sldExistingLength2.currentValue + extra) / 1000;\n if (scaleX == 0) scaleX = 1;\n let scaleY = (this.APP.sldExistingWallHeight.currentValue + extra) / 1000;\n let scaleZ = (this.APP.sldExistingWidth1.currentValue + UI.overhangBack + extra) / 1000;\n if (scaleZ == 0) scaleZ = 1;\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT || this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n this.mesh_CutoutLeft = new Mesh(this.geo_cutoutLeft, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.mesh_CutoutLeft.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: 'CUTOUT' };\n\n this.mesh_CutoutLeft.position.set(-offsetX - this.APP.sldLeftOverhang.currentValue, offsetY, offsetZ);\n this.mesh_CutoutLeft.scale.set(scaleX, scaleY, scaleZ);\n\n //this.APP.scene.add(this.mesh_CutoutLeft);\n\n this.mesh_CutoutLeft.updateMatrix();\n this.csg_cutoutLeft = CSG.fromMesh(this.mesh_CutoutLeft);\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT || this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n this.mesh_CutoutRight = new Mesh(this.geo_cutoutRight, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.mesh_CutoutRight.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: 'CUTOUT' };\n\n this.mesh_CutoutRight.position.set(offsetX + this.APP.sldRightOverhang.currentValue, offsetY, offsetZ);\n this.mesh_CutoutRight.scale.set(scaleX, scaleY, scaleZ);\n\n //this.APP.scene.add(this.mesh_CutoutRight);\n\n this.mesh_CutoutRight.updateMatrix();\n this.csg_cutoutRight = CSG.fromMesh(this.mesh_CutoutRight);\n }\n }\n }\n\n public addZFlashingFront() {\n let offsetX = -(this.totalBaySize / 2 + UI.overhangLeft);\n let offsetY = this.roofBaseInfo.height - 25;\n const offsetZ = ((UI.span + UI.multiSpan) / 2 + UI.overhangFront) / this.utils.cos(UI.patiosPitch);\n\n let flashingLength = this.roofWidth;\n\n let scaleX = flashingLength / this.zFlashingGeo.length;\n\n\n let mesh = new Mesh(this.zFlashingGeo.geometry, MaterialManager.Instance().ZFLASHING);\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.set(scaleX, 1, 1);\n\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ZFLASHING, scale: mesh.scale };\n this.roofGroupFront.add(mesh);\n }\n public addZFlashingBack() {\n let offsetY = this.roofBaseInfo.height - 25;\n const offsetZ = -((UI.span + UI.multiSpan) / 2 + UI.overhangBack) / this.utils.cos(UI.patiosPitch);\n let offsetX = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n let scaleX = (this.totalBaySize + this.APP.sldLeftOverhang.currentValue + this.APP.sldRightOverhang.currentValue) / this.zFlashingGeo.length;\n let flashingLength = UI.totalBayLength + UI.overhangLeft + UI.overhangRight;\n // let extraWallWidth = this.APP.existingWallManager.geo_existingWallW1.width + EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.MANAGER.cutoutCondition) {\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n if (UI.existingWidth2 > 0) {\n offsetX += UI.existingLength2;\n flashingLength -= UI.existingLength2;\n }\n else {\n offsetX += UI.existingLength2;\n flashingLength -= UI.existingLength2;\n }\n\n offsetX += UI.overhangLeft;\n flashingLength -= UI.overhangLeft;\n }\n else if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n if (UI.existingWidth2 > 0) {\n flashingLength -= UI.existingLength2;\n }\n else {\n flashingLength -= UI.existingLength2;\n }\n flashingLength -= UI.overhangRight;\n }\n else if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n offsetX += UI.existingLength2;\n flashingLength = UI.existingLength1 - UI.eaveWidth * 2;\n }\n }\n\n scaleX = flashingLength / this.zFlashingGeo.length;\n let mesh = new Mesh(this.zFlashingGeo.geometry, MaterialManager.Instance().ZFLASHING);\n mesh.position.set(offsetX + flashingLength, offsetY, offsetZ);\n mesh.rotateY(Math.PI);\n mesh.scale.set(scaleX, 1, 1);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ZFLASHING, scale: mesh.scale };\n\n this.roofGroupBack.add(mesh);\n }\n public addRoofGroupFront() {\n this.roofGroupFront = null;\n this.roofGroupFront = new Group();\n this.roofGroupFront.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PATIOS };\n\n let offsetX = 0;\n let offsetY = this.getRoofOffsetY();\n\n let offsetZ = (UI.span + UI.multiSpan) / 2 - UI.existingWidth1 / 2 + UI.eaveWidth + this.geoBraket_2.height / 4;\n this.roofGroupFront.position.set(offsetX, offsetY, offsetZ);\n \n this.roofGroupFront.rotation.set(this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue), 0, 0);\n\n this.scene.add(this.roofGroupFront);\n }\n public addRoofGroupBack() {\n this.roofGroupBack = null;\n this.roofGroupBack = new Group();\n this.roofGroupBack.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PATIOS };\n\n let offsetX = 0;\n let offsetY = this.getRoofOffsetY();\n\n let offsetZ = (UI.span + UI.multiSpan) / 2 - UI.existingWidth1 / 2 + UI.eaveWidth + this.geoBraket_2.height / 4;\n this.roofGroupBack.position.set(offsetX, offsetY, offsetZ);\n \n this.roofGroupBack.rotation.set(-this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue), 0, 0);\n\n this.scene.add(this.roofGroupBack);\n }\n public getOutLines(): Printing2DGeometry {\n\n let objs = this.roofGroupFront.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL\n || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ).concat(\n ...this.roofGroupBack.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n )\n );\n\n let gutterGroupObjs = this.roofGroupFront.children.filter(o => o.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS).concat(\n ...this.roofGroupBack.children.filter(o => o.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS)\n );\n let gutterObjs: Object3D[] = [];\n for (let group of gutterGroupObjs) {\n gutterObjs.push(...group.children);\n }\n\n objs = [...objs, ...gutterObjs];\n\n\n let lsGeometries: Printing2DLine[] = [];\n\n let offsetLeft = this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue - this.MANAGER.patiosGroup.position.x;\n let offsetRight = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue + this.MANAGER.patiosGroup.position.x;\n let roofClipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let roofClipingPlane = new Plane(new Vector3(-1, 0, 0), offsetRight);\n\n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale((o as Mesh), 60);\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n outlineGeo.translate(0, 5000, 0);\n\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL) {\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlane);\n }\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE) {\n outlineGeo = this.utils.clipOutlineBasePanel(outlineGeo, roofClipingPlaneLeft);\n outlineGeo = this.utils.clipOutlineBasePanel(outlineGeo, roofClipingPlane);\n }\n\n\n // var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n // line.userData = {type: \"ROOF_OUTLINE\"};\n // this.APP.scene.add( line );\n\n let simplifiedGeo = this.simplifyGeo(outlineGeo);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: simplifiedGeo.vertices,\n views: o.userData.views\n });\n\n let ridgeCapping = this.scene.children.find(el => el.userData.type === GEOMETRY_TYPE.RIDGE_CAPPING)\n if(ridgeCapping){\n ridgeCapping.children.forEach(el => {\n this.utils.createOutline(el as Mesh, lsGeometries);\n })\n }\n }\n\n lsGeometries.push({\n objectType: GEOMETRY_TYPE.ROOF_COVER,\n vertices: this.makeRoofPolygon(),\n color: this.utils.convertHexColorToRgb(`#${new Color(UI.panelColor).getHexString()}`),\n views: [\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ]\n });\n\n return { lines: lsGeometries, texts: [] };\n }\n makeRoofPolygon() {\n const polygon = this.utils.getRoofCoverPolygonForLRRoof()\n this.MANAGER.patiosGroup.updateWorldMatrix(true, true)\n return polygon.map(el => (el as Vector3).applyMatrix4(this.MANAGER.patiosGroup.matrixWorld).add(new Vector3(0, 0, - UI.existingWidth1 / 2 - UI.overhangBack + UI.eaveWidth + this.geoBraket_2.height / 4)))\n }\n public showPanelOutline() {\n if (this.APP.sltPanelDirectionShow.currentValue == false)\n return;\n\n let objs = this.roofGroupFront.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ).concat(\n ...this.roofGroupBack.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n )\n );\n\n let offsetLeft = this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue - this.MANAGER.patiosGroup.position.x;\n let offsetRight = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue + this.MANAGER.patiosGroup.position.x;\n let roofClipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let roofClipingPlaneRight = new Plane(new Vector3(-1, 0, 0), offsetRight);\n\n\n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale((o as Mesh), 60);\n\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n //outlineGeo.translate(0, 5000, 0);\n\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE) {\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneRight);\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n }\n\n var line = new LineSegments(outlineGeo, MaterialManager.Instance().MESH_OUTLINE);\n line.userData = { type: GEOMETRY_TYPE.SHEET_OUTLINE };\n this.APP.scene.add(line);\n }\n }\n public simplifyGeo(geo: BufferGeometry): Geometry {\n let simplifiedGeo = new Geometry();\n let vertices = geo.getAttribute('position').array;\n for (let i = 0; i < vertices.length; i += 3) {\n simplifiedGeo.vertices.push(new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2]));\n }\n return simplifiedGeo;\n }\n public addRoofFront(offsetX: number, csgObjs: CSG[]) {\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n const mesh: Mesh = new Mesh(this.roofInfo.geometry, MaterialManager.Instance().ROOF);\n\n let offsetSheet = 0;\n if (this.APP.sltRoofSheetingType.currentValue == 0 || this.APP.sltRoofSheetingType.currentValue == 1) {\n offsetSheet = 13;\n }\n else {\n offsetSheet = 5;\n }\n\n //if ((this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3) && this.APP.sldExistingWidth1.currentValue > this.APP.sldEaveWidth.currentValue) {\n // offsetX += this.APP.sldEaveWidth.currentValue;\n //}\n const offsetPitch = this.roofBaseInfo.height * this.utils.tan(UI.patiosPitch)\n let scaleZ = (this.roofLengthPlus - offsetPitch) / this.roofInfo.length;\n const offsetY = this.roofBaseInfo.height - offsetSheet;\n let offsetZ = 0;\n\n // if (this.APP.sltCutOut.currentValue == 1 && this.APP.sltExistingType.currentValue != 0 && over && this.APP.sldExistingLength2.currentValue > 0) {\n // scaleZ = (this.roofLengthPlus - this.APP.sldExistingWidth1.currentValue) / this.roofInfo.length;\n // offsetZ += this.APP.sldExistingWidth1.currentValue;\n // }\n\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setZ(scaleZ);\n mesh.userData = { \n category: GEOMETRY_CATEGORY.PATIOS, \n type: GEOMETRY_TYPE.ROOF_PANEL, \n views: views, \n length: scaleZ,\n dir: UI.panelDirection === PANEL_DIRECTION.LEFT_TO_RIGHT ? \"L-R\" : \"R-L\"\n };\n\n let cutoutCondition = this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue != BUILDING_SIDE.NONE && this.APP.sldExistingLength2.currentValue > 0;\n let rakeCutCondition = this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE || this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE;\n\n if (cutoutCondition || rakeCutCondition) {\n\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n //cho no cung he toa do\n mesh.position.set(offsetX + this.MANAGER.patiosGroup.position.x, offsetY, offsetZ + this.roofGroupFront.position.z);\n mesh.updateMatrix();\n\n // let meshResult = new Mesh();\n // let meshTemp = mesh;\n\n // for (let csgObj of csgObjs) {\n // meshResult = CSG.toMesh(CSG.fromMesh(meshTemp).subtract(csgObj), mesh.matrix);\n // meshTemp = meshResult;\n // }\n\n let meshResult = mesh.clone();\n\n if (cutoutCondition) {\n //meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n }\n }\n if (rakeCutCondition) {\n if (this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(this.csg_rakecutLeft), mesh.matrix);\n }\n if (this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(this.csg_rakecutRight), mesh.matrix);\n }\n }\n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix)); //=> tra ve goc toa do\n meshResult.applyMatrix4(matrixBefore);\n this.roofGroupFront.add(meshResult);\n }\n else {\n this.roofGroupFront.add(mesh);\n }\n }\n public addRoofBack(offsetX: number, csgObjs: CSG[]) {\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n const mesh: Mesh = new Mesh(this.roofInfo.geometry, MaterialManager.Instance().ROOF);\n\n let offsetSheet = 0;\n if (this.APP.sltRoofSheetingType.currentValue == 0 || this.APP.sltRoofSheetingType.currentValue == 1) {\n offsetSheet = 13;\n }\n else {\n offsetSheet = 5;\n }\n\n const offsetPitch = this.roofBaseInfo.height * this.utils.tan(UI.patiosPitch)\n\n let scaleZ = (((UI.span + UI.multiSpan) / 2 + UI.overhangBack) / this.utils.cos(UI.patiosPitch) - offsetPitch) / this.roofInfo.length;\n const offsetY = this.roofBaseInfo.height - offsetSheet;\n let offsetZ = 0;\n\n mesh.position.set(offsetX, offsetY, offsetZ - scaleZ * this.roofInfo.length);\n mesh.scale.setZ(scaleZ);\n mesh.userData = { \n category: GEOMETRY_CATEGORY.PATIOS, \n type: GEOMETRY_TYPE.ROOF_PANEL, \n views: views, \n length: scaleZ,\n dir: UI.panelDirection === PANEL_DIRECTION.RIGHT_TO_LEFT ? \"L-R\" : \"R-L\"\n };\n\n let cutoutCondition = this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue != BUILDING_SIDE.NONE && this.APP.sldExistingLength2.currentValue > 0;\n let rakeCutCondition = this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE || this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE;\n\n if (cutoutCondition || rakeCutCondition) {\n\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n //cho no cung he toa do\n mesh.position.set(offsetX + this.MANAGER.patiosGroup.position.x, offsetY, offsetZ + this.roofGroupBack.position.z);\n mesh.updateMatrix();\n\n let meshResult = mesh.clone();\n\n if (cutoutCondition) {\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n }\n }\n if (rakeCutCondition) {\n if (this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(this.csg_rakecutLeft), mesh.matrix);\n }\n if (this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(this.csg_rakecutRight), mesh.matrix);\n }\n }\n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix)); //=> tra ve goc toa do\n meshResult.applyMatrix4(matrixBefore);\n this.roofGroupBack.add(meshResult);\n }\n else {\n this.roofGroupBack.add(mesh);\n }\n }\n public addRoofFrontBaseFront(offsetX: number, csgObjs: CSG[]) {\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n const mesh: Mesh = new Mesh(this.roofBaseInfo.geometry, MaterialManager.Instance().ROOF_BASE);\n const offsetPitch = this.roofBaseInfo.height * this.utils.tan(UI.patiosPitch)\n let scaleZ = (this.roofLengthPlus - CONST.ROOF_BASE_SUBTRACT - offsetPitch) / this.roofBaseInfo.length;\n let offsetY = 0\n let offsetZ = 0\n\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setZ(scaleZ);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PANEL_BASE, views: views };\n\n let cutoutCondition = this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue != BUILDING_SIDE.NONE && this.APP.sldExistingLength2.currentValue > 0;\n\n if (cutoutCondition) {\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n mesh.position.set(offsetX + this.MANAGER.patiosGroup.position.x, offsetY, offsetZ + this.roofGroupFront.position.z);\n mesh.updateMatrix();\n\n let meshResult = mesh.clone();\n\n if (cutoutCondition) {\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n }\n }\n\n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix));\n meshResult.applyMatrix4(matrixBefore);\n\n this.roofGroupFront.add(meshResult);\n }\n else {\n this.roofGroupFront.add(mesh);\n }\n }\n public addRoofFrontBaseBack(offsetX: number, csgObjs: CSG[]) {\n let views: Print2DView[] = [\n // { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n const mesh: Mesh = new Mesh(this.roofBaseInfo.geometry, MaterialManager.Instance().ROOF_BASE);\n const offsetPitch = this.roofBaseInfo.height * this.utils.tan(UI.patiosPitch)\n let scaleZ = ((((UI.span + UI.multiSpan) / 2 + UI.overhangBack) / this.utils.cos(UI.patiosPitch)) - offsetPitch - CONST.ROOF_BASE_SUBTRACT) / this.roofBaseInfo.length;\n let offsetY = 0\n let offsetZ = 0\n\n mesh.position.set(offsetX, offsetY, offsetZ - scaleZ * this.roofBaseInfo.length);\n mesh.scale.setZ(scaleZ);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PANEL_BASE, views: views };\n\n let cutoutCondition = this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.APP.sltExistingType.currentValue != BUILDING_SIDE.NONE && this.APP.sldExistingLength2.currentValue > 0;\n\n if (cutoutCondition) {\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n mesh.position.set(offsetX + this.MANAGER.patiosGroup.position.x, offsetY, offsetZ + this.roofGroupBack.position.z);\n mesh.updateMatrix();\n\n let meshResult = mesh.clone();\n\n if (cutoutCondition) {\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n }\n }\n\n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix));\n meshResult.applyMatrix4(matrixBefore);\n\n this.roofGroupBack.add(meshResult);\n }\n else {\n this.roofGroupBack.add(mesh);\n }\n }\n private addBargeFront() {\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n let mesh: Mesh;\n let offsetXL2 = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n\n let offsetXR2 = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n\n let offsetZL = 0;\n let offsetZR = 0;\n\n const offsetY = 0;\n\n let scaleZLeft = this.roofLengthPlus / this.bargeLeftInfo.length;\n let bargeLeftLength = this.roofLengthPlus;\n let scaleZRight = this.roofLengthPlus / this.bargeRightInfo.length;\n let bargeRightLength = this.roofLengthPlus;\n\n const offsetPitch = this.roofBaseInfo.height * this.utils.tan(UI.patiosPitch)\n\n scaleZLeft = (bargeLeftLength - offsetPitch) / this.bargeLeftInfo.length;\n scaleZRight = (bargeRightLength - offsetPitch) / this.bargeRightInfo.length;\n\n let fitScale = this.bargeLeftInfo.height * this.utils.tan(UI.patiosPitch) / this.bargeLeftInfo.length;\n\n // left\n mesh = new Mesh(this.bargeLeftInfo.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXL2, offsetY, offsetZL - fitScale * this.bargeLeftInfo.length);\n mesh.scale.setZ(scaleZLeft + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupFront.add(mesh);\n\n // right\n mesh = new Mesh(this.bargeRightInfo.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXR2, offsetY, offsetZR - fitScale * this.bargeLeftInfo.length);\n mesh.scale.setZ(scaleZRight + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupFront.add(mesh);\n }\n private addBargeBack() {\n let views: Print2DView[] = [\n // { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n let mesh: Mesh;\n let offsetXL2 = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n\n let offsetXR2 = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n\n let offsetZL = 0;\n let offsetZR = 0;\n\n const offsetY = 0;\n\n const offsetPitch = this.roofBaseInfo.height * this.utils.tan(UI.patiosPitch)\n\n let bargeLeftLength = ((UI.span + UI.multiSpan) / 2 + UI.overhangBack) / this.utils.cos(UI.patiosPitch);\n let bargeRightLength = ((UI.span + UI.multiSpan) / 2 + UI.overhangBack) / this.utils.cos(UI.patiosPitch);\n\n const scaleZLeft = (bargeLeftLength - offsetPitch) / this.bargeLeftInfo.length;\n const scaleZRight = (bargeRightLength - offsetPitch) / this.bargeRightInfo.length;\n\n let fitScale = this.bargeLeftInfo.height * this.utils.tan(UI.patiosPitch) / this.bargeLeftInfo.length;\n\n // left\n mesh = new Mesh(this.bargeLeftInfo.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXL2, offsetY, offsetZL - scaleZLeft * this.bargeLeftInfo.length);\n mesh.scale.setZ(scaleZLeft + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupBack.add(mesh);\n\n // right\n mesh = new Mesh(this.bargeRightInfo.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXR2, offsetY, offsetZR - scaleZRight * this.bargeLeftInfo.length);\n mesh.scale.setZ(scaleZRight + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupBack.add(mesh);\n }\n public addGutterFront() {\n let offsetXL = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n const offsetZ = ((UI.span + UI.multiSpan) / 2 + UI.overhangFront - CONST.GUTTER_ROOF_OFFSET_Z) / this.utils.cos(UI.patiosPitch);\n const offsetY = this.roofBaseInfo.height - 25;\n\n let gutterLength = this.roofWidth;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n let gutterGroup = this.utils.createGutterGroup(this.gutterInfo, this.geo_gutterCap,\n gutterLength, new Vector3(offsetXL, offsetY, offsetZ), new Vector3(-this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue), 0, 0),\n views, 1, true, true);\n this.roofGroupFront.add(gutterGroup);\n }\n public addGutterBack() {\n let offsetX = UI.totalBayLength / 2 + UI.overhangRight;\n let offsetZ = -((UI.span + UI.multiSpan) / 2 + UI.overhangBack - CONST.GUTTER_ROOF_OFFSET_Z) / this.utils.cos(UI.patiosPitch);\n let offsetY = this.roofBaseInfo.height - 25;\n let gutterLength = UI.totalBayLength + UI.overhangLeft + UI.overhangRight;\n //cutout\n if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.MANAGER.cutoutCondition) {\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n gutterLength = UI.totalBayLength + UI.overhangLeft + UI.overhangRight - UI.existingLength2;\n }\n else if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n gutterLength = UI.totalBayLength + UI.overhangLeft + UI.overhangRight - UI.existingLength2;\n offsetX = UI.totalBayLength / 2 + UI.overhangRight - UI.existingLength2;\n }\n else if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n offsetX = UI.existingLength1 / 2 - UI.eaveWidth;\n gutterLength = UI.existingLength1 - 2 * UI.eaveWidth;\n }\n }\n\n let views: Print2DView[] = [\n // { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n //Add gutter back\n let gutterGroup = this.utils.createGutterGroup(this.gutterInfo, this.geo_gutterCap, gutterLength,\n new Vector3(offsetX, offsetY, offsetZ), new Vector3(this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue), Math.PI, 0), views, 1, true, true);\n this.roofGroupBack.add(gutterGroup);\n this.addDownPipe(gutterGroup, gutterLength);\n }\n private addDownPipe(gutterGroup: Group, gutterLength: number) {\n let meshPipe = new Mesh(this.MANAGER.postAndBeamManager.geo_downPipe.geometry, MaterialManager.Instance().DOWNPIPE);\n meshPipe.userData = { type: GEOMETRY_TYPE.DOWNPIPE_NOZZLE };\n meshPipe.scale.setY(100 / this.MANAGER.postAndBeamManager.geo_downPipe.height);\n meshPipe.position.set(gutterLength - 100, -190, this.MANAGER.postAndBeamManager.geo_downPipe.width / 2 + 20);\n\n gutterGroup.add(meshPipe);\n }\n public getRoofOffsetY() {\n return UI.existingWallHeight\n + +UI.upstandBraketType\n + this.geometryManager.getBeam().height\n + this.utils.tan(UI.patiosPitch) * ((UI.span + UI.multiSpan) / 2);\n }\n}\n\n","import {\n HomeComponent as AppComponent,\n HomeComponent,\n} from \"../../containers/home/home.component\";\nimport {\n Scene,\n Material,\n Mesh,\n BufferGeometry,\n Box3,\n Group,\n LineSegments,\n LineBasicMaterial,\n Plane,\n Vector3,\n BoxGeometry,\n Object3D,\n Geometry,\n EdgesGeometry,\n Line,\n Color,\n BoxHelper,\n Box3Helper,\n BoxBufferGeometry,\n Matrix4,\n PlaneHelper,\n} from \"three\";\nimport { Util, getBeamEndCapCode, getRafterBeamEndCapCode } from \"../utils\";\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport {\n CONFIG as env,\n GEOMETRY_TYPE,\n GEOMETRY_CATEGORY,\n INIT,\n} from \"../../app.config\";\nimport {\n GeometryInfo,\n Printing2DLine,\n ViewType,\n LineType,\n Print2DView,\n Printing2DGeometry,\n Printing2DGeometryType,\n} from \"../models\";\nimport { PatiosGableLRFlyOverManager } from \".\";\nimport {\n EXISTING_BUILDING_CONFIG as CONST,\n BUILDING_SIDE,\n RAKECUT_TYPE,\n CUTOUT_ENABLE,\n FIT_FLYOVER_BRAKET_ON_ROOF,\n EXISTING_BUILDING_CONFIG,\n} from \"src/app/app.constants\";\nimport { UI } from \"../ui\";\nimport _ from \"lodash\";\n\nexport class ColumnAndBeamManager {\n private scene: Group;\n private APP: AppComponent;\n private MANAGER: PatiosGableLRFlyOverManager;\n private material: Material;\n //private beamMaterial: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private geo_RafterBeam: GeometryInfo;\n private geo_rafterBeamEndCap: GeometryInfo;\n\n private geo_superiorPost: GeometryInfo;\n private geo_centerSuperiorPost: GeometryInfo;\n public geo_superiorBeam: GeometryInfo;\n private geo_beamRakecutLeft: GeometryInfo;\n private geo_beamRakecutRight: GeometryInfo;\n private geo_beamStepRakecutLeft: GeometryInfo;\n private geo_beamStepRakecutRight: GeometryInfo;\n private geo_beamEndCap: GeometryInfo;\n public geo_bracket: GeometryInfo;\n private geo_groundBase: GeometryInfo;\n private geo_downPipe: GeometryInfo;\n private geo_downPipeL: GeometryInfo;\n private geo_roofBase: GeometryInfo;\n private downpipeGroup: Group;\n private downpipeStepRakeCutGroupLeft: Group;\n private downpipeStepRakeCutGroupRight: Group;\n private eventHandleId: any;\n private objectSizeChangedHandle: any;\n private totalBaySize: number;\n private extraOffsetZ: number;\n private geoBeamJoint: GeometryInfo;\n\n private frontPostHeight: number;\n //private extraBracketHeight = 250;\n private controlsToRegisterEvent: Array;\n private controlsToRegisterEvent2: Array;\n\n private deferHandle;\n private deferTimeout = CONST.CUTOUT_DEFFER_TIME_OUT;\n\n public numberOfBracketsBack = INIT.DEFAULT_BRACKET_NUMBER;\n public numberOfBracketCutout = INIT.DEFAULT_BRACKET_CUTOUT_NUMBER;\n private cutoutExistingBothLength: number;\n private beamLeftCutSizeInfo: any;\n private beamRightCutSizeInfo: any;\n\n constructor(app: AppComponent, flyOverManager: PatiosGableLRFlyOverManager) {\n this.APP = app;\n this.MANAGER = flyOverManager;\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n\n this.scene = flyOverManager.patiosGroup;\n this.material = MaterialManager.Instance().DEFAULT.clone();\n //this.beamMaterial = MaterialManager.Instance().DEFAULT.clone();\n\n this.registerEvent();\n }\n\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n let bracketHeight =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height / 2;\n let bracketWidth = this.geometryManager.FLY_OVER_BRACKET.S65x3.width;\n\n this.geo_bracket = new GeometryInfo();\n this.geo_bracket.geometry =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.geometry\n .clone()\n .rotateX(Math.PI / 2)\n .translate(bracketWidth / 2, bracketHeight, bracketWidth / 2);\n this.geo_bracket.width =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.width;\n this.geo_bracket.length =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.length;\n this.geo_bracket.height =\n this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n this.geo_superiorBeam = this.geometryManager.getBeam();\n this.geo_superiorBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_superiorBeam.length / 2,\n this.geo_superiorBeam.height / 2,\n this.geo_superiorBeam.width / 2\n );\n\n this.geoBeamJoint = this.geometryManager.getBeamJoint();\n\n this.geo_beamRakecutLeft = this.geometryManager.getBeam();\n this.geo_beamRakecutLeft.geometry.translate(\n this.geo_beamRakecutLeft.width / 2,\n this.geo_beamRakecutLeft.height / 2,\n -this.geo_beamRakecutLeft.length / 2\n );\n\n this.geo_beamRakecutRight = this.geometryManager.getBeam();\n this.geo_beamRakecutRight.geometry.translate(\n -this.geo_beamRakecutRight.width / 2,\n this.geo_beamRakecutRight.height / 2,\n -this.geo_beamRakecutRight.length / 2\n );\n\n this.geo_beamStepRakecutLeft = this.geometryManager.getBeam();\n this.geo_beamStepRakecutLeft.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_beamStepRakecutLeft.length / 2,\n this.geo_beamStepRakecutLeft.height / 2,\n -this.geo_beamStepRakecutLeft.width / 2\n );\n\n this.geo_beamStepRakecutRight = this.geometryManager.getBeam();\n this.geo_beamStepRakecutRight.geometry\n .rotateY(Math.PI / 2)\n .translate(\n -this.geo_beamStepRakecutRight.length / 2,\n this.geo_beamStepRakecutRight.height / 2,\n -this.geo_beamStepRakecutRight.width / 2\n );\n\n this.geo_beamEndCap = this.geometryManager.getBeamEndCap();\n this.geo_beamEndCap.geometry.translate(\n 0,\n this.geo_beamEndCap.height / 2,\n 0\n );\n\n this.geo_superiorPost = this.geometryManager.getPost();\n this.geo_superiorPost.geometry\n .rotateX(Math.PI / 2)\n .translate(\n this.geo_superiorPost.width / 2,\n this.geo_superiorPost.height / 2,\n this.geo_superiorPost.width / 2\n );\n\n this.geo_centerSuperiorPost = this.geometryManager.getCenterPost();\n this.geo_centerSuperiorPost.geometry\n .rotateX(Math.PI / 2)\n .translate(\n this.geo_centerSuperiorPost.width / 2,\n this.geo_centerSuperiorPost.height / 2,\n this.geo_centerSuperiorPost.width / 2\n );\n\n this.geo_RafterBeam = this.geometryManager.getRafterBeam();\n this.geo_RafterBeam.geometry\n .rotateY(Math.PI / 2)\n .translate(\n this.geo_RafterBeam.length / 2,\n -this.geo_RafterBeam.height / 2,\n this.geo_RafterBeam.width / 2\n );\n\n this.geo_rafterBeamEndCap = this.geometryManager.getRafterBeamEndCap();\n this.geo_rafterBeamEndCap.geometry.translate(\n 0,\n -this.geo_rafterBeamEndCap.height / 2,\n this.geo_rafterBeamEndCap.length / 2\n );\n\n this.geo_groundBase = new GeometryInfo();\n this.geo_groundBase.width = 1000;\n this.geo_groundBase.height = 1;\n this.geo_groundBase.length = 1000;\n this.geo_groundBase.geometry = new BoxBufferGeometry(\n this.geo_groundBase.width,\n this.geo_groundBase.height,\n this.geo_groundBase.length\n );\n this.geo_groundBase.geometry.translate(\n 0,\n 0,\n this.geo_groundBase.length / 2\n );\n\n this.geo_downPipe = this.geometryManager.getDownPipe();\n this.geo_downPipeL = this.geometryManager.getDownPipeL();\n this.geo_roofBase = this.geometryManager.getRoofBase();\n\n this.scene.remove(\n ...this.scene.children.filter(\n (c) => c.userData.type == GEOMETRY_TYPE.DOWNPIPE\n )\n );\n this.downpipeGroup = new Group();\n this.downpipeGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeGroup);\n this.downpipeStepRakeCutGroupLeft = new Group();\n this.downpipeStepRakeCutGroupLeft.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeStepRakeCutGroupLeft);\n\n this.downpipeStepRakeCutGroupRight = new Group();\n this.downpipeStepRakeCutGroupRight.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.DOWNPIPE,\n };\n this.scene.add(this.downpipeStepRakeCutGroupRight);\n resolve();\n });\n }\n\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET &&\n !x.userData?.position?.back\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SUPERIOR_CENTER_POST\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.SUPERIOR_POST &&\n !x.userData?.position?.back\n )\n );\n // this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.MESH_OUTLINE));\n this.scene.remove(\n ...this.scene.children.filter((x) => x.userData.type == \"BOXHELPER\")\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.GROUND_BASE\n )\n );\n this.APP.scene.remove(\n ...this.APP.scene.children.filter(\n (o) =>\n o.userData.type == \"OUTLINE\" || o.userData.type == \"COLUMN_OUTLINE\"\n )\n );\n\n this.beamLeftCutSizeInfo = this.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.LEFT\n );\n this.beamRightCutSizeInfo = this.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.RIGHT\n );\n this.downpipeGroup.children = [];\n this.downpipeStepRakeCutGroupLeft.children = [];\n this.downpipeStepRakeCutGroupRight.children = [];\n\n this.extraOffsetZ =\n this.APP.existingWallManager.geo_existingWallL1.width +\n this.APP.eaveManager.backOverhang;\n this.totalBaySize = this.APP.dialogEditBay.totalBaySize;\n this.cutoutExistingBothLength =\n (this.totalBaySize - this.APP.sldExistingLength.currentValue) / 2;\n\n this.addSuperiorBeam({ front: true });\n this.addSuperiorBeam({ back: true });\n\n if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.MANAGER.cutoutCondition\n ) {\n this.addSuperiorBeam({ cutout: true });\n }\n if (this.APP.sldMultiSpan.currentValue > 0) {\n this.addSuperiorBeam({ multiSpan: true });\n }\n\n this.addCenterSuperiorBeam();\n this.addGround();\n\n let offsetX = -this.totalBaySize / 2;\n let first = true;\n let last = false;\n for (let i = 0; i <= this.APP.dialogEditBay.listBay.length; i++) {\n if (i == this.APP.dialogEditBay.listBay.length) {\n last = true;\n }\n\n this.addCenterPost(offsetX, { center: true, first, last });\n\n let fitBeam = 0;\n if (i !== 0) {\n if (i == this.APP.dialogEditBay.listBay.length) {\n fitBeam = this.geo_superiorBeam.width;\n } else {\n fitBeam = this.geo_superiorBeam.width / 2;\n }\n }\n\n this.addHorSuperiorBeam(offsetX - fitBeam, {\n front: true,\n first,\n last,\n });\n this.addRafterSuperiorBeam(offsetX - fitBeam, {\n front: true,\n first,\n last,\n });\n this.addRafterSuperiorBeam(offsetX - fitBeam, {\n back: true,\n first,\n last,\n });\n\n this.addPostOrBracket(offsetX, {\n front: true,\n first,\n last,\n left: first,\n right: last,\n });\n\n if (this.APP.sldMultiSpan.currentValue > 0) {\n this.addPostOrBracket(offsetX, {\n multiSpan: true,\n first,\n last,\n left: first,\n right: last,\n });\n }\n if (i < this.APP.dialogEditBay.listBay.length) {\n let b = this.APP.dialogEditBay.listBay[i];\n offsetX += b.value;\n }\n first = false;\n }\n\n offsetX = -this.totalBaySize / 2;\n first = true;\n last = false;\n\n this.addPostOrBracketBack();\n this.addPostOrBracketBackCutout();\n this.showBeamOutline();\n this.addDownPipe();\n this.updateUI();\n resolve();\n });\n }\n public showBeamOutline() {\n this.APP.scene.remove(\n ...this.APP.scene.children.filter(\n (x) => x.userData.type == GEOMETRY_TYPE.BEAM_OUTLINE\n )\n );\n\n if (!UI.beamLayoutShow) return;\n\n const objs = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n const meshes = [];\n objs.forEach((el) => {\n if (el.type == \"Group\") {\n meshes.push(\n ...el.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n )\n );\n }\n });\n\n for (let o of meshes) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale(\n o as Mesh,\n 10\n );\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n\n var line = new LineSegments(\n outlineGeo,\n MaterialManager.Instance().BEAM_OUTLINE\n );\n line.userData = { type: GEOMETRY_TYPE.BEAM_OUTLINE };\n this.APP.scene.add(line);\n }\n }\n private totalHeightFromEaveHeightToTopOfExistingRoof() {\n const height =\n this.geometryManager.EAVE.EAVE.height +\n UI.fasciaDepth +\n UI.eaveWidth * this.utils.tan(UI.existingRoofPitch) +\n this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.height /\n this.utils.cos(UI.existingRoofPitch);\n\n return height;\n }\n private totalHeightFromEaveHeightToTopOfFlyoverBraket() {\n const height =\n this.totalHeightFromEaveHeightToTopOfExistingRoof() +\n UI.braketHeight -\n FIT_FLYOVER_BRAKET_ON_ROOF;\n\n return height;\n }\n private addDownPipe() {\n let offsetZ =\n this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue - 170;\n let offsetX = -this.totalBaySize / 2 + 50;\n if (this.APP.sltExistingType.currentValue == 1) {\n offsetX = this.totalBaySize / 2 - 50;\n }\n if (this.APP.sltExistingType.currentValue != 0) {\n offsetZ -= this.APP.sldExistingWidth1.currentValue / 2;\n }\n\n let offsetY =\n this.utils.getHeightByAngle(\n UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.overhangFront,\n UI.patiosPitch,\n -1\n ) +\n this.geo_roofBase.height +\n this.geo_superiorBeam.height +\n 90;\n\n if (this.APP.sltGutterType.currentValue == 0) {\n offsetY -= 80;\n } else {\n offsetY -= 60;\n }\n\n this.utils.createDownpipeGroup(\n this.APP,\n this.downpipeGroup,\n this.geo_downPipe,\n this.geo_downPipeL,\n offsetX,\n offsetY,\n offsetZ,\n offsetZ +\n this.APP.sldFrontOverhang.currentValue -\n this.APP.sldFrontOverhang.currentValue,\n 0,\n this.APP.sldFrontOverhang.currentValue,\n offsetY,\n true\n );\n }\n private updateUI() {\n this.APP.sldMinHeight.setValue(_.round(this.frontPostHeight, 0));\n }\n public getSection(): Printing2DGeometry {\n let objs = this.scene.children.filter(\n (o) =>\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_POST ||\n o.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET ||\n o.userData.type == GEOMETRY_TYPE.SUPERIOR_CENTER_POST\n );\n\n objs = [...objs];\n\n let lsGeometries: Printing2DLine[] = [];\n\n for (let o of objs) {\n let box = new BoxHelper(o);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n //this.scene.add(box);\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: outlineGeo.vertices,\n views: o.userData.views,\n });\n }\n let beamGroups = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM\n );\n for (let g of beamGroups) {\n for (let c of g.children) {\n c.updateMatrix();\n\n let objCloned = c.clone();\n objCloned.applyMatrix4(new Matrix4().getInverse(c.matrix));\n\n let box = new BoxHelper(objCloned);\n\n c.updateWorldMatrix(true, true);\n\n box.geometry.applyMatrix4(c.matrixWorld);\n box.geometry.translate(0, 5000, 0);\n box.userData = { type: \"COLUMN_OUTLINE\" };\n\n let outlineGeo = this.simplifyGeo(box.geometry as BufferGeometry);\n const planView = _.find(\n g.userData.views,\n (el) => el.viewType == ViewType.PLAN\n );\n const anotherViews = _.filter(\n g.userData.views,\n (el) => el.viewType != ViewType.PLAN\n );\n if (anotherViews.length > 0) {\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo.vertices,\n views: anotherViews,\n });\n }\n if (planView) {\n lsGeometries.push({\n objectType: g.userData.type,\n vertices: outlineGeo.vertices\n .slice(0, 8)\n .filter((el, index) => [0, 1, 4, 5].includes(index)),\n views: [planView],\n });\n }\n }\n }\n\n let rafterBeamGroups = this.scene.children.filter(\n (o) => o.userData.type == GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n );\n for (let o of rafterBeamGroups) {\n o.children.forEach((el) => {\n this.utils.getOutlineRafterBeam(el as Mesh, lsGeometries);\n });\n }\n\n return { lines: lsGeometries, texts: [] };\n }\n public simplifyGeo(geo: BufferGeometry): Geometry {\n //let simplifiedGeo = new Geometry();\n let vertices = geo.getAttribute(\"position\").array;\n let lineGeo = new Geometry();\n for (let i = 0; i < vertices.length; i += 3) {\n //simplifiedGeo.vertices.push();\n\n lineGeo.vertices.push(\n new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2])\n );\n //lineGeo.vertices.push(new Vector3(vertices[i+3], vertices[i+4], vertices[i+5]));\n\n //if(i == 18) break;\n }\n\n //2-3\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n //3-7\n lineGeo.vertices.push(\n new Vector3(vertices[6], vertices[7] - 5000, vertices[8])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n //7-6\n lineGeo.vertices.push(\n new Vector3(vertices[18], vertices[19] - 5000, vertices[20])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n //6-2\n lineGeo.vertices.push(\n new Vector3(vertices[15], vertices[16] - 5000, vertices[17])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[3], vertices[4] - 5000, vertices[5])\n );\n\n //1-4\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n //4-8\n lineGeo.vertices.push(\n new Vector3(vertices[9], vertices[10] - 5000, vertices[11])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n //8-5\n lineGeo.vertices.push(\n new Vector3(vertices[21], vertices[22] - 5000, vertices[23])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n //5-1\n lineGeo.vertices.push(\n new Vector3(vertices[12], vertices[13] - 5000, vertices[14])\n );\n lineGeo.vertices.push(\n new Vector3(vertices[0], vertices[1] - 5000, vertices[2])\n );\n\n //let line = new LineSegments(lineGeo, new LineBasicMaterial({color: new Color('red')}));\n //this.scene.add(line);\n return lineGeo;\n }\n\n private addGround() {\n let offsetZ = -(\n this.APP.sldExistingWidth1.currentValue / 2 +\n this.extraOffsetZ +\n this.APP.sldBackOverhang.currentValue\n );\n let width =\n this.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n let length =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldBackOverhang.currentValue;\n\n let base = new Mesh(\n this.geo_groundBase.geometry,\n MaterialManager.Instance().BASE\n );\n base.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GROUND_BASE,\n };\n base.position.set((UI.overhangRight - UI.overhangLeft) / 2, 0, offsetZ);\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2;\n if (this.APP.sltExistingType.currentValue == 1) {\n base.position.setX(base.position.x + offsetX);\n }\n if (this.APP.sltExistingType.currentValue == 2) {\n base.position.setX(base.position.x - offsetX);\n }\n base.scale.set(\n width / this.geo_groundBase.width,\n 1,\n length / this.geo_groundBase.length\n );\n\n this.scene.add(base);\n }\n private addPostOrBracket(offsetX: number, userDataPos: any): void {\n let meshPost = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n meshPost.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let meshBracket = new Mesh(\n this.geo_bracket.geometry,\n MaterialManager.Instance().BRACKET\n );\n meshBracket.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let offsetY =\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfExistingRoof() -\n FIT_FLYOVER_BRAKET_ON_ROOF;\n let postOffsetZ = 0;\n let bracketOffsetZ = 0;\n let scalePostY = 1;\n let scaleBracketY = 1;\n\n let views: Print2DView[];\n if (userDataPos.front) {\n postOffsetZ =\n this.APP.sldSpan.currentValue -\n this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ;\n bracketOffsetZ =\n this.APP.sldSpan.currentValue -\n this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ;\n scalePostY =\n (this.APP.sldExistingWallHeight.currentValue +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket()) /\n this.geo_superiorPost.height;\n scaleBracketY = UI.braketHeight / this.geo_bracket.height;\n\n if (this.APP.sldMultiSpan.currentValue > 0) {\n postOffsetZ -= this.geo_superiorPost.width / 2;\n bracketOffsetZ -= this.geometryManager.FLY_OVER_BRACKET.S65x3.width / 2;\n } else {\n postOffsetZ -= this.geo_superiorPost.width;\n bracketOffsetZ -= this.geometryManager.FLY_OVER_BRACKET.S65x3.width;\n }\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n if (userDataPos.back) {\n postOffsetZ =\n -this.APP.sldExistingWidth1.currentValue / 2 - this.extraOffsetZ;\n bracketOffsetZ =\n -this.APP.sldExistingWidth1.currentValue / 2 - this.extraOffsetZ;\n scalePostY =\n (this.APP.sldExistingWallHeight.currentValue +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket()) /\n this.geo_superiorPost.height;\n scaleBracketY = UI.braketHeight / this.geo_bracket.height;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n if (userDataPos.multiSpan) {\n postOffsetZ =\n UI.span +\n UI.multiSpan -\n this.APP.sldExistingWidth1.currentValue / 2 -\n this.geo_superiorPost.width -\n this.extraOffsetZ;\n bracketOffsetZ =\n UI.span +\n UI.multiSpan -\n this.APP.sldExistingWidth1.currentValue / 2 -\n this.geometryManager.FLY_OVER_BRACKET.S65x3.width -\n this.extraOffsetZ;\n scalePostY =\n (this.APP.sldExistingWallHeight.currentValue +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket()) /\n this.geo_superiorPost.height;\n scaleBracketY = UI.braketHeight / this.geo_bracket.height;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n meshPost.userData.views = views;\n meshBracket.userData.views = views;\n\n let bracketOffsetX = offsetX;\n let postOffsetX = offsetX;\n if (userDataPos.first) {\n } else if (userDataPos.last) {\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n } else {\n bracketOffsetX -= this.geo_bracket.width / 2;\n postOffsetX -= this.geo_superiorPost.width / 2;\n }\n\n let exceedMoveBackLimit = false;\n\n //post can not go behind existing wall\n if (exceedMoveBackLimit) {\n return;\n }\n\n meshPost.position.set(postOffsetX, 0, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n meshBracket.position.set(bracketOffsetX, offsetY, bracketOffsetZ);\n meshBracket.scale.setY(scaleBracketY);\n let boxPost = new Box3().setFromObject(meshPost);\n // let boxPostHelper = new Box3Helper(boxPost);\n // this.APP.scene.add(boxPostHelper);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n if (isIntersect) {\n if (this.APP.sltExistingType.currentValue != 3) {\n if (meshBracket.userData.position.left) {\n meshBracket.translateX(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n );\n } else if (meshBracket.userData.position.right) {\n meshBracket.translateX(\n -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n )\n );\n }\n }\n this.scene.add(meshBracket);\n } else {\n if (this.APP.sltExistingType.currentValue == 1) {\n meshPost.translateX(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n );\n } else if (this.APP.sltExistingType.currentValue == 2) {\n meshPost.translateX(\n -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n )\n );\n }\n this.scene.add(meshPost);\n }\n }\n public addPostOrBracketBack() {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET &&\n x.userData?.position?.back\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.SUPERIOR_POST &&\n x.userData?.position?.back\n )\n );\n\n let first = true;\n let last = false;\n let offsetX = -this.totalBaySize / 2;\n let userDataPos = { back: true };\n\n let bracketDistance = this.totalBaySize / (this.numberOfBracketsBack - 1);\n let cutoutLengthInExistingBoth =\n (this.totalBaySize - this.APP.sldExistingLength.currentValue) / 2;\n let extraWalWidth =\n this.APP.existingWallManager.geo_existingWallL1.width +\n CONST.EAVE_OFFSET_BACK;\n\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES &&\n this.MANAGER.cutoutCondition\n ) {\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n offsetX += this.APP.sldExistingLength2.currentValue;\n bracketDistance =\n (this.totalBaySize - this.APP.sldExistingLength2.currentValue) /\n (this.numberOfBracketsBack - 1);\n } else {\n offsetX +=\n this.APP.sldExistingLength2.currentValue -\n (this.APP.existingWallManager.geo_existingWallW1.width +\n CONST.EAVE_OFFSET_BACK);\n bracketDistance =\n (this.totalBaySize -\n this.APP.sldExistingLength2.currentValue +\n extraWalWidth) /\n (this.numberOfBracketsBack - 1);\n }\n } else if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n bracketDistance =\n (this.totalBaySize - this.APP.sldExistingLength2.currentValue) /\n (this.numberOfBracketsBack - 1);\n } else {\n bracketDistance =\n (this.totalBaySize -\n this.APP.sldExistingLength2.currentValue +\n extraWalWidth) /\n (this.numberOfBracketsBack - 1);\n }\n } else if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n offsetX += cutoutLengthInExistingBoth - extraWalWidth;\n bracketDistance =\n (this.APP.sldExistingLength.currentValue + extraWalWidth * 2) /\n (this.numberOfBracketsBack - 1);\n }\n }\n\n for (let i = 0; i < this.numberOfBracketsBack; i++) {\n if (i == this.numberOfBracketsBack - 1) {\n last = true;\n }\n let meshPost = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n meshPost.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let meshBracket = new Mesh(\n this.geo_bracket.geometry,\n MaterialManager.Instance().BRACKET\n );\n meshBracket.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let bracketOffsetY =\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfExistingRoof() -\n FIT_FLYOVER_BRAKET_ON_ROOF;\n let postOffsetZ = 0;\n let bracketOffsetZ = 0;\n\n let scalePostY = 1;\n let scaleBracketY = 1;\n\n let views: Print2DView[];\n\n postOffsetZ =\n -this.APP.sldExistingWidth1.currentValue / 2 - this.extraOffsetZ;\n bracketOffsetZ =\n -this.APP.sldExistingWidth1.currentValue / 2 - this.extraOffsetZ;\n scalePostY =\n (this.APP.sldExistingWallHeight.currentValue +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket()) /\n this.geo_superiorPost.height;\n scaleBracketY =\n UI.braketHeight / this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n meshPost.userData.views = views;\n meshBracket.userData.views = views;\n\n let bracketOffsetX = offsetX;\n let postOffsetX = offsetX;\n\n if (first) {\n } else if (last) {\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n } else {\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n }\n\n meshPost.position.set(postOffsetX, 0, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n meshBracket.position.set(bracketOffsetX, bracketOffsetY, bracketOffsetZ);\n meshBracket.scale.setY(scaleBracketY);\n\n //Check intersect eave\n let boxPost = new Box3().setFromObject(meshPost);\n boxPost.translate(this.scene.position);\n\n let isIntersect = false;\n //let isCutoutInterset = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n }\n }\n\n if (isIntersect) {\n if (\n i == 0 &&\n (this.APP.sltExistingType.currentValue == 1 ||\n this.APP.sltExistingType.currentValue == 3)\n ) {\n meshBracket.translateX(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n );\n } else if (\n last &&\n (this.APP.sltExistingType.currentValue == 2 ||\n this.APP.sltExistingType.currentValue == 3)\n ) {\n meshBracket.translateX(\n -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n )\n );\n }\n\n this.scene.add(meshBracket);\n } else {\n this.scene.add(meshPost);\n }\n\n if (i < this.numberOfBracketsBack) {\n offsetX += bracketDistance;\n }\n first = false;\n }\n }\n public addPostOrBracketBackCutout(): void {\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.FLY_OVER_BRACKET &&\n x.userData?.position?.back &&\n x.userData?.position?.cutout\n )\n );\n this.scene.remove(\n ...this.scene.children.filter(\n (x) =>\n x.userData.type == GEOMETRY_TYPE.SUPERIOR_POST &&\n x.userData?.position?.back &&\n x.userData?.position?.cutout\n )\n );\n\n if (\n this.APP.sltCutOut.currentValue != CUTOUT_ENABLE.YES ||\n !this.MANAGER.cutoutCondition\n )\n return;\n\n let first = true;\n let last = false;\n let offsetXL = -this.totalBaySize / 2;\n let offsetXR = this.totalBaySize / 2;\n\n let userDataPos = { back: true, cutout: true };\n\n let extraWalWidth =\n this.APP.existingWallManager.geo_existingWallL1.width +\n CONST.EAVE_OFFSET_BACK;\n let bracketDistance =\n (this.APP.sldExistingLength2.currentValue - extraWalWidth) /\n (this.numberOfBracketCutout - 1);\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n bracketDistance =\n this.APP.sldExistingLength2.currentValue /\n (this.numberOfBracketCutout - 1);\n }\n\n if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n for (let i = 0; i < this.numberOfBracketCutout; i++) {\n if (i == this.numberOfBracketCutout - 1) {\n last = true;\n }\n\n let meshPost = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n meshPost.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let meshBracket = new Mesh(\n this.geo_bracket.geometry,\n MaterialManager.Instance().BRACKET\n );\n meshBracket.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n //let offsetX = 0;\n let offsetY = this.APP.sldExistingWallHeight.currentValue;\n\n let postOffsetZ =\n -this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ +\n this.APP.sldExistingWidth1.currentValue;\n let bracketOffsetZ =\n -this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ +\n this.APP.sldExistingWidth1.currentValue;\n\n let views: Print2DView[];\n\n let scalePostY =\n this.utils.getHeightByAngle(\n this.APP.sldExistingWallHeight.currentValue +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.existingWidth1 > (UI.span + UI.multiSpan) / 2\n ? Math.abs(UI.span + UI.multiSpan - UI.existingWidth1)\n : UI.existingWidth1,\n UI.patiosPitch,\n 1\n ) / this.geo_superiorPost.height;\n\n let scaleBracketY =\n this.utils.getHeightByAngle(\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.existingWidth1 > (UI.span + UI.multiSpan) / 2\n ? Math.abs(UI.span + UI.multiSpan - UI.existingWidth1)\n : UI.existingWidth1,\n UI.patiosPitch,\n 1\n ) / this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n meshPost.userData.views = views;\n meshBracket.userData.views = views;\n\n let bracketOffsetX = offsetXL;\n let postOffsetX = offsetXL;\n if (first) {\n } else if (last) {\n } else {\n bracketOffsetX -= this.geo_bracket.width / 2;\n postOffsetX -= this.geo_superiorPost.width / 2;\n }\n\n meshPost.position.set(postOffsetX, 0, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n\n meshBracket.position.set(bracketOffsetX, offsetY, bracketOffsetZ);\n meshBracket.scale.setY(scaleBracketY);\n\n //Check intersect eave\n let boxPost = new Box3().setFromObject(meshPost);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n if (isIntersect) {\n if (this.APP.sltExistingType.currentValue == 1) {\n meshBracket.translateX(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n );\n }\n this.scene.add(meshBracket);\n } else {\n this.scene.add(meshPost);\n }\n\n if (i < this.numberOfBracketCutout) {\n offsetXL += bracketDistance;\n }\n first = false;\n }\n }\n\n if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n first = true;\n\n for (let i = 0; i < this.numberOfBracketCutout; i++) {\n if (i == this.numberOfBracketCutout - 1) {\n last = true;\n }\n\n let meshPost = new Mesh(\n this.geo_superiorPost.geometry,\n MaterialManager.Instance().POST\n );\n meshPost.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let meshBracket = new Mesh(\n this.geo_bracket.geometry,\n MaterialManager.Instance().BRACKET\n );\n meshBracket.userData = {\n position: userDataPos,\n type: GEOMETRY_TYPE.FLY_OVER_BRACKET,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let offsetY = this.APP.sldExistingWallHeight.currentValue;\n\n let postOffsetZ =\n -this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ +\n this.APP.sldExistingWidth1.currentValue;\n let bracketOffsetZ =\n -this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ +\n this.APP.sldExistingWidth1.currentValue;\n\n let views: Print2DView[];\n\n let scalePostY =\n this.utils.getHeightByAngle(\n this.APP.sldExistingWallHeight.currentValue +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.existingWidth1 > (UI.span + UI.multiSpan) / 2\n ? Math.abs(UI.span + UI.multiSpan - UI.existingWidth1)\n : UI.existingWidth1,\n UI.patiosPitch,\n 1\n ) / this.geo_superiorPost.height;\n\n let scaleBracketY =\n this.utils.getHeightByAngle(\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket(),\n UI.existingWidth1 > (UI.span + UI.multiSpan) / 2\n ? Math.abs(UI.span + UI.multiSpan - UI.existingWidth1)\n : UI.existingWidth1,\n UI.patiosPitch,\n 1\n ) / this.geometryManager.FLY_OVER_BRACKET.S65x3.height;\n\n views = [\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n meshPost.userData.views = views;\n meshBracket.userData.views = views;\n\n let bracketOffsetX = offsetXR;\n let postOffsetX = offsetXR;\n if (first) {\n if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n }\n } else if (last) {\n bracketOffsetX -= this.geo_bracket.width;\n postOffsetX -= this.geo_superiorPost.width;\n } else {\n bracketOffsetX -= this.geo_bracket.width / 2;\n postOffsetX -= this.geo_superiorPost.width / 2;\n }\n\n meshPost.position.set(postOffsetX, 0, postOffsetZ);\n meshPost.scale.setY(scalePostY);\n\n meshBracket.position.set(bracketOffsetX, offsetY, bracketOffsetZ);\n meshBracket.scale.setY(scaleBracketY);\n\n //Check intersect eave\n let boxPost = new Box3().setFromObject(meshPost);\n boxPost.translate(this.scene.position);\n let isIntersect = false;\n for (let eave of this.APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n if (boxPost.intersectsBox(boxEave)) {\n isIntersect = true;\n break;\n }\n }\n\n if (isIntersect) {\n if (this.APP.sltExistingType.currentValue == 2) {\n meshBracket.translateX(\n -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2\n )\n );\n }\n\n this.scene.add(meshBracket);\n } else {\n this.scene.add(meshPost);\n }\n\n if (i < this.numberOfBracketCutout) {\n offsetXR -= bracketDistance;\n }\n first = false;\n }\n }\n }\n\n public addCenterSuperiorBeam() {\n let offsetXL = -(\n this.totalBaySize / 2 +\n this.APP.sldLeftOverhang.currentValue\n );\n let offsetZ = 0;\n let offsetY = 0;\n\n let beamLength =\n this.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n\n let views: Print2DView[];\n\n offsetY =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n ((UI.span + UI.multiSpan) / 2 - this.geo_superiorBeam.width / 2) *\n this.utils.tan(UI.patiosPitch);\n offsetZ =\n (UI.span + UI.multiSpan) / 2 -\n this.geo_superiorBeam.width / 2 -\n UI.existingWidth1 / 2 -\n this.extraOffsetZ;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n const fitX = this.getContainerOffsetXToFitBraketToExistingWall();\n\n this.cutStandardBeamByCutBeamWithinBayControl(\n this.geo_superiorBeam,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetXL + fitX, offsetY, offsetZ),\n new Vector3(),\n views,\n 1,\n { center: true },\n \"RB\",\n this.geoBeamJoint\n );\n }\n\n private addCenterPost(offsetX, userDataPos) {\n let meshPost = new Mesh(\n this.geo_centerSuperiorPost.geometry,\n MaterialManager.Instance().BEAM\n );\n meshPost.userData = {\n ...userDataPos,\n type: GEOMETRY_TYPE.SUPERIOR_CENTER_POST,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n\n let scalePostY = 1;\n\n let views: Print2DView[];\n\n let postOffsetZ =\n (UI.span + UI.multiSpan) / 2 -\n this.geo_centerSuperiorPost.width / 2 -\n UI.existingWidth1 / 2 -\n this.extraOffsetZ;\n\n this.frontPostHeight =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket();\n\n scalePostY =\n (((UI.span + UI.multiSpan) / 2 - this.geo_superiorBeam.width / 2) *\n this.utils.tan(UI.patiosPitch) -\n this.geo_superiorBeam.height) /\n this.geo_centerSuperiorPost.height;\n views = [\n // { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n let postOffsetX = offsetX - this.geo_centerSuperiorPost.width / 2;\n\n if (userDataPos.first) {\n postOffsetX += this.geo_centerSuperiorPost.width / 2;\n } else if (userDataPos.last) {\n postOffsetX -= this.geo_centerSuperiorPost.width / 2;\n } else {\n }\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n postOffsetX -= offsetX;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n postOffsetX += offsetX;\n }\n\n meshPost.userData.views = views;\n meshPost.position.set(\n postOffsetX,\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height,\n postOffsetZ\n );\n meshPost.scale.setY(scalePostY);\n\n this.scene.add(meshPost);\n }\n\n public addHorSuperiorBeam(offsetX, userDataPos: any) {\n let mesh = new Mesh(\n this.geo_superiorBeam.geometry,\n MaterialManager.Instance().BEAM\n );\n\n let offsetXL = 0;\n let offsetXR = UI.span + UI.multiSpan - 2 * this.geo_superiorBeam.width;\n let offsetZ = 0;\n let offsetY = 0;\n\n let scaleX =\n (UI.span + UI.multiSpan - 2 * this.geo_superiorBeam.width) /\n this.geo_superiorBeam.length;\n\n let views: Print2DView[];\n\n if (userDataPos.front) {\n offsetY =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket();\n offsetZ =\n UI.span +\n UI.multiSpan -\n this.geo_superiorBeam.width -\n UI.existingWidth1 / 2 -\n this.extraOffsetZ;\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n position: userDataPos,\n views: views,\n };\n mesh.position.set(offsetXL, 0, 0);\n mesh.scale.setX(scaleX);\n\n let capL = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capL.position.set(\n offsetXL + this.geo_beamEndCap.length / 2 - 2,\n 0,\n this.geo_beamEndCap.width / 2\n );\n capL.rotateY(Math.PI / 2);\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let capR = new Mesh(\n this.geo_beamEndCap.geometry,\n MaterialManager.Instance().BEAM\n );\n capR.position.set(\n offsetXR - this.geo_beamEndCap.length / 2 + 2,\n 0,\n this.geo_beamEndCap.width / 2\n );\n capR.rotateY(-Math.PI / 2);\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n this.geo_beamEndCap.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n\n let beamOffsetX = offsetX;\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n beamOffsetX -= offsetX;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n beamOffsetX += offsetX;\n }\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n position: userDataPos,\n views: views,\n name: \"GB\",\n };\n beamGroup.position.set(beamOffsetX, offsetY, offsetZ);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n\n beamGroup.rotateY(Math.PI / 2);\n\n this.scene.add(beamGroup);\n }\n\n public addRafterSuperiorBeam(offsetX, userDataPos: any) {\n if (\n this.APP.sltWindClass.currentValue == 0 ||\n this.APP.sltWindClass.currentValue == 1\n ) {\n if (this.totalBaySize <= 6000 && this.APP.sldSpan.currentValue <= 7000) {\n return;\n }\n }\n if (\n this.APP.sltWindClass.currentValue == 3 ||\n this.APP.sltWindClass.currentValue == 4 ||\n this.APP.sltWindClass.currentValue == 5\n ) {\n return;\n }\n let mesh;\n const beamWidth = this.geo_superiorBeam.width;\n const braketWidth = this.geo_bracket.width;\n let offsetXL = 0;\n let offsetXR =\n ((UI.span + UI.multiSpan) / 2 - beamWidth / 2) /\n this.utils.cos(UI.patiosPitch);\n let offsetZ = 0;\n let offsetY = 0;\n\n let scaleX =\n ((UI.span + UI.multiSpan) / 2 - beamWidth / 2) /\n this.utils.cos(UI.patiosPitch) /\n this.geo_RafterBeam.length;\n\n let views: Print2DView[];\n\n if (userDataPos.front) {\n let material = MaterialManager.Instance().BEAM.clone();\n\n let nBottom = new Vector3(0, 1, 0).normalize();\n let pBottom = new Vector3(\n 0,\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height,\n 0\n );\n let planeBottom = new Plane().setFromNormalAndCoplanarPoint(\n nBottom,\n pBottom\n );\n\n let nVer = new Vector3(0, 0, 1).normalize();\n let pVer = new Vector3(\n 0,\n 0,\n (UI.span + UI.multiSpan) / 2 -\n braketWidth +\n beamWidth / 2 -\n UI.existingWidth1 / 2\n );\n let planeVer = new Plane().setFromNormalAndCoplanarPoint(nVer, pVer);\n\n material.clippingPlanes = [planeBottom, planeVer];\n\n mesh = new Mesh(this.geo_RafterBeam.geometry, material);\n\n offsetY =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height;\n offsetZ =\n UI.span + UI.multiSpan - UI.existingWidth1 / 2 - this.extraOffsetZ;\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.back) {\n let material = MaterialManager.Instance().BEAM.clone();\n\n let nBottom = new Vector3(0, 1, 0).normalize();\n let pBottom = new Vector3(\n 0,\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height,\n 0\n );\n let planeBottom = new Plane().setFromNormalAndCoplanarPoint(\n nBottom,\n pBottom\n );\n\n let nVer = new Vector3(0, 0, -1).normalize();\n let pVer = new Vector3(\n 0,\n 0,\n (UI.span + UI.multiSpan) / 2 -\n braketWidth -\n this.geo_superiorBeam.width * 0.5 -\n UI.existingWidth1 / 2\n );\n let planeVer = new Plane().setFromNormalAndCoplanarPoint(nVer, pVer);\n\n material.clippingPlanes = [planeBottom, planeVer];\n\n mesh = new Mesh(this.geo_RafterBeam.geometry, material);\n\n offsetY =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height +\n ((UI.span + UI.multiSpan) / 2 - this.geo_superiorBeam.width / 2) *\n this.utils.tan(UI.patiosPitch);\n offsetZ =\n (UI.span + UI.multiSpan) / 2 -\n this.geo_superiorBeam.width / 2 -\n UI.existingWidth1 / 2 -\n this.extraOffsetZ;\n\n views = [\n // { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n }\n\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM,\n position: userDataPos,\n views: views,\n };\n mesh.position.set(offsetXL, 0, 0);\n mesh.scale.setX(scaleX);\n\n let checkExec = /\\w{1}\\d{1,3}x(\\d{1,3})/.exec(this.geo_RafterBeam.name);\n let beamSize = checkExec && checkExec.length == 2 ? checkExec[1] : \"\";\n let lowerBraketName = getRafterBeamEndCapCode(\n EXISTING_BUILDING_CONFIG.RAFTER_BEAM_SIZE,\n false\n );\n let higherBraketName = getRafterBeamEndCapCode(\n EXISTING_BUILDING_CONFIG.RAFTER_BEAM_SIZE,\n true\n );\n\n let capL;\n let capR;\n if (userDataPos.front) {\n let matEndCap = MaterialManager.Instance().BEAM.clone();\n\n let heightReal =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height +\n (this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan)) / 2;\n let heightPlane = heightReal * this.utils.cos(UI.patiosPitch);\n let translateZ = this.utils.sin(UI.patiosPitch) * heightPlane;\n\n let planeTop = new Plane(new Vector3(0, -1, 0));\n let matrixTranslateTop = new Matrix4().makeTranslation(\n 0,\n heightPlane,\n translateZ / 2\n );\n let matrixRotateTop = new Matrix4().makeRotationX(\n this.utils.degreesToRadians(UI.patiosPitch)\n ); //tao voi z pitch do\n let matrixTotalTop = matrixTranslateTop.multiply(matrixRotateTop);\n planeTop.applyMatrix4(matrixTotalTop);\n\n let heightRealBottom =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height -\n this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n (this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan)) / 2;\n let heightPlaneBottom = heightRealBottom * this.utils.cos(UI.patiosPitch);\n let translateZBottom = this.utils.sin(UI.patiosPitch) * heightPlaneBottom;\n\n let planeBottom = new Plane(new Vector3(0, 1, 0));\n let matrixTranslateBottom = new Matrix4().makeTranslation(\n 0,\n heightPlaneBottom,\n translateZBottom / 2\n );\n let matrixRotateBottom = new Matrix4().makeRotationX(\n this.utils.degreesToRadians(UI.patiosPitch)\n ); //tao voi z pitch do\n let matrixTotalBottom =\n matrixTranslateBottom.multiply(matrixRotateBottom);\n planeBottom.applyMatrix4(matrixTotalBottom);\n\n planeTop.translate(\n new Vector3(\n 0,\n 0,\n (UI.span + UI.multiSpan) / 2 -\n UI.existingWidth1 / 2 -\n this.extraOffsetZ +\n this.scene.position.z\n )\n );\n planeBottom.translate(\n new Vector3(\n 0,\n 0,\n (UI.span + UI.multiSpan) / 2 -\n UI.existingWidth1 / 2 -\n this.extraOffsetZ +\n this.scene.position.z\n )\n );\n\n matEndCap.clippingPlanes = [planeTop, planeBottom];\n\n capL = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capL.position.set(offsetXL - 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capL.scale.setY(\n (this.geo_RafterBeam.height / this.utils.sin(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length / this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capL.rotateY(Math.PI / 2);\n capL.rotateX(-Math.PI / 2 + this.utils.degreesToRadians(UI.patiosPitch));\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: lowerBraketName,\n };\n\n capR = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capR.position.set(offsetXR + 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capR.scale.setY(\n (this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length * this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capR.rotateY(-Math.PI / 2);\n capR.rotateX(-this.utils.degreesToRadians(UI.patiosPitch));\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: higherBraketName,\n };\n } else {\n let matEndCap = MaterialManager.Instance().BEAM.clone();\n\n let heightReal =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height +\n (this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan)) / 2;\n let heightPlane = heightReal * this.utils.cos(UI.patiosPitch);\n let translateZ = this.utils.sin(UI.patiosPitch) * heightPlane;\n\n let planeTop = new Plane(new Vector3(0, -1, 0));\n let matrixTranslateTop = new Matrix4().makeTranslation(\n 0,\n heightPlane,\n -translateZ / 2\n );\n let matrixRotateTop = new Matrix4().makeRotationX(\n -this.utils.degreesToRadians(UI.patiosPitch)\n ); //tao voi z pitch do\n let matrixTotalTop = matrixTranslateTop.multiply(matrixRotateTop);\n planeTop.applyMatrix4(matrixTotalTop);\n\n let heightRealBottom =\n UI.existingWallHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.geo_superiorBeam.height -\n this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n (this.utils.tan(UI.patiosPitch) * (UI.span + UI.multiSpan)) / 2;\n let heightPlaneBottom = heightRealBottom * this.utils.cos(UI.patiosPitch);\n let translateZBottom = this.utils.sin(UI.patiosPitch) * heightPlaneBottom;\n\n let planeBottom = new Plane(new Vector3(0, 1, 0));\n let matrixTranslateBottom = new Matrix4().makeTranslation(\n 0,\n heightPlaneBottom,\n -translateZBottom / 2\n );\n let matrixRotateBottom = new Matrix4().makeRotationX(\n -this.utils.degreesToRadians(UI.patiosPitch)\n ); //tao voi z pitch do\n let matrixTotalBottom =\n matrixTranslateBottom.multiply(matrixRotateBottom);\n planeBottom.applyMatrix4(matrixTotalBottom);\n\n planeTop.translate(\n new Vector3(\n 0,\n 0,\n (UI.span + UI.multiSpan) / 2 -\n UI.existingWidth1 / 2 -\n this.extraOffsetZ +\n this.scene.position.z\n )\n );\n planeBottom.translate(\n new Vector3(\n 0,\n 0,\n (UI.span + UI.multiSpan) / 2 -\n UI.existingWidth1 / 2 -\n this.extraOffsetZ +\n this.scene.position.z\n )\n );\n\n matEndCap.clippingPlanes = [planeTop, planeBottom];\n\n capL = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capL.position.set(offsetXL - 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capL.scale.setY(\n (this.geo_RafterBeam.height / this.utils.cos(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length * this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capL.rotateY(Math.PI / 2);\n capL.rotateX(-this.utils.degreesToRadians(UI.patiosPitch));\n capL.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: higherBraketName,\n };\n\n capR = new Mesh(this.geo_rafterBeamEndCap.geometry, matEndCap);\n capR.position.set(offsetXR + 2, 0, this.geo_rafterBeamEndCap.width / 2);\n capR.scale.setY(\n (this.geo_RafterBeam.height / this.utils.sin(UI.patiosPitch) +\n this.geo_rafterBeamEndCap.length / this.utils.tan(UI.patiosPitch)) /\n this.geo_rafterBeamEndCap.height\n );\n capR.rotateY(-Math.PI / 2);\n capR.rotateX(-Math.PI / 2 + this.utils.degreesToRadians(UI.patiosPitch));\n capR.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP,\n name: lowerBraketName,\n };\n }\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetX -= fitZ;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetX += fitZ;\n }\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM,\n position: userDataPos,\n views: views,\n };\n beamGroup.position.set(offsetX, offsetY, offsetZ);\n if (this.APP.sltBeamType.currentValue == 0) {\n beamGroup.add(mesh, capL, capR);\n } else {\n beamGroup.add(mesh);\n }\n\n beamGroup.rotateY(Math.PI / 2);\n\n if (userDataPos.front) {\n beamGroup.rotateZ(this.utils.degreesToRadians(UI.patiosPitch));\n } else if (userDataPos.back) {\n beamGroup.rotateZ(-this.utils.degreesToRadians(UI.patiosPitch));\n }\n\n this.scene.add(beamGroup);\n }\n\n public addSuperiorBeam(userDataPos: any) {\n let offsetX =\n -this.totalBaySize / 2 - this.APP.sldLeftOverhang.currentValue;\n let offsetZ = 0;\n let offsetY = 0;\n\n let beamLength =\n this.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n let extraWallWidth =\n this.APP.existingWallManager.geo_existingWallW1.width +\n CONST.EAVE_OFFSET_BACK;\n let views: Print2DView[];\n\n if (userDataPos.front) {\n offsetY =\n this.APP.sldExistingWallHeight.currentValue +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket();\n offsetZ =\n this.APP.sldSpan.currentValue -\n this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ;\n if (this.APP.sldMultiSpan.currentValue > 0) {\n offsetZ -= this.geo_superiorBeam.width / 2;\n } else {\n offsetZ -= this.geo_superiorBeam.width;\n }\n\n views = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.back) {\n offsetY =\n this.APP.sldExistingWallHeight.currentValue +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket();\n offsetZ = -(\n this.APP.sldExistingWidth1.currentValue / 2 +\n this.extraOffsetZ\n );\n\n if (\n this.APP.sltCutOut.currentValue == 1 &&\n this.MANAGER.cutoutCondition\n ) {\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n offsetX += this.APP.sldExistingLength2.currentValue;\n beamLength =\n this.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue -\n this.APP.sldExistingLength2.currentValue;\n } else {\n offsetX +=\n this.APP.sldExistingLength2.currentValue - extraWallWidth;\n beamLength =\n this.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue -\n this.APP.sldExistingLength2.currentValue +\n extraWallWidth;\n }\n\n offsetX += this.APP.sldLeftOverhang.currentValue;\n beamLength -= this.APP.sldLeftOverhang.currentValue;\n } else if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT\n ) {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n beamLength =\n this.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue -\n this.APP.sldExistingLength2.currentValue;\n } else {\n beamLength =\n this.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue -\n this.APP.sldExistingLength2.currentValue +\n extraWallWidth;\n }\n\n beamLength -= this.APP.sldRightOverhang.currentValue;\n } else if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n offsetX +=\n (this.totalBaySize -\n (this.APP.sldExistingLength.currentValue +\n this.APP.existingWallManager.geo_existingWallW1.width * 2)) /\n 2 -\n CONST.EAVE_OFFSET_BACK;\n beamLength =\n this.APP.sldExistingLength.currentValue +\n this.APP.existingWallManager.geo_existingWallW1.width * 2 +\n CONST.EAVE_OFFSET_BACK * 2;\n }\n }\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.multiSpan) {\n offsetY =\n this.APP.sldExistingWallHeight.currentValue +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket();\n offsetZ =\n UI.span +\n UI.multiSpan -\n this.APP.sldExistingWidth1.currentValue / 2 -\n this.geo_superiorBeam.width -\n this.extraOffsetZ;\n\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n } else if (userDataPos.cutout) {\n offsetY =\n UI.eaveHeight +\n this.totalHeightFromEaveHeightToTopOfFlyoverBraket() +\n this.getBracketHeight(\n UI.existingWidth1 > (UI.span + UI.multiSpan) / 2\n ? Math.abs(UI.span + UI.multiSpan - UI.existingWidth1)\n : UI.existingWidth1\n );\n\n offsetZ =\n this.APP.sldExistingWidth1.currentValue -\n this.APP.sldExistingWidth1.currentValue / 2 -\n this.extraOffsetZ;\n beamLength =\n this.APP.sldExistingLength2.currentValue -\n this.APP.existingWallManager.geo_existingWallW1.width;\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n beamLength += extraWallWidth;\n }\n\n beamLength +=\n this.APP.sldLeftOverhang.currentValue +\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n views = [\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.DASHED },\n ];\n\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n beamLength += extraWallWidth;\n offsetX =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue -\n this.APP.sldExistingLength2.currentValue -\n CONST.EAVE_OFFSET_BACK;\n } else {\n offsetX =\n this.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue -\n this.APP.sldExistingLength2.currentValue +\n this.APP.existingWallManager.geo_existingWallW1.width;\n }\n\n offsetX -=\n this.APP.sldRightOverhang.currentValue +\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2;\n beamLength +=\n this.APP.sldRightOverhang.currentValue +\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2;\n } else if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n beamLength =\n (this.totalBaySize - this.APP.sldExistingLength.currentValue) / 2 -\n this.APP.existingWallManager.geo_existingWallW1.width -\n CONST.EAVE_OFFSET_BACK +\n this.geo_bracket.width +\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2;\n }\n }\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetX -= fitZ;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let fitZ =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetX += fitZ;\n }\n\n if (userDataPos.front || userDataPos.multiSpan) {\n this.cutStandardBeamByCutBeamWithinBayControl(\n this.geo_superiorBeam,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetX, offsetY, offsetZ),\n new Vector3(),\n views,\n 1,\n userDataPos,\n \"EB\",\n this.geoBeamJoint\n );\n } else {\n this.cutStandardBeamToEqualLengthBeam(\n this.geo_superiorBeam,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetX, offsetY, offsetZ),\n new Vector3(),\n views,\n 1,\n userDataPos,\n \"EB\",\n this.geoBeamJoint\n );\n }\n\n //Add one more beam cutout right\n if (userDataPos.cutout && this.APP.sltExistingType.currentValue == 3) {\n offsetX =\n this.totalBaySize / 2 -\n (this.totalBaySize - this.APP.sldExistingLength.currentValue) / 2 +\n this.APP.existingWallManager.geo_existingWallW1.width +\n CONST.EAVE_OFFSET_BACK -\n this.geo_superiorBeam.width -\n (this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n (this.geo_bracket?.width || 0) / 2);\n\n this.cutStandardBeamToEqualLengthBeam(\n this.geo_superiorBeam,\n this.geo_beamEndCap,\n beamLength,\n new Vector3(offsetX, offsetY, offsetZ),\n new Vector3(),\n views,\n 1,\n userDataPos,\n \"EB\",\n this.geoBeamJoint\n );\n }\n }\n private cutStandardBeamToEqualLengthBeam(\n beamGeo: GeometryInfo,\n beamCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n userDataPos: any,\n beamName = \"\",\n jointGeo: GeometryInfo\n ) {\n const beamStartX = pos.x;\n const beamEndX = pos.x + length;\n\n const numOfBeam = Math.ceil(\n length / EXISTING_BUILDING_CONFIG.MAXIMUM_LENGTH_PER_BEAM\n );\n const lengthPerBeam = Math.abs(beamEndX - beamStartX) / numOfBeam;\n for (let i = 0; i < numOfBeam; i++) {\n let beamGroup = this.utils.createBeamGroup(\n beamGeo,\n beamCapGeo,\n lengthPerBeam,\n new Vector3(beamStartX + lengthPerBeam * i, pos.y, pos.z),\n rot,\n views,\n directionOffset,\n userDataPos,\n UI.beamLayoutShow,\n {\n hasStartCap: UI.beamType == 0 && i == 0,\n hasEndCap:\n UI.beamType == 0 &&\n (i == numOfBeam - 1 || (i == 0 && numOfBeam == 1)),\n hasStartJoint: i !== 0,\n hasEndJoint: false,\n jointGeo: jointGeo,\n }\n );\n beamGroup.userData = {\n ...beamGroup.userData,\n name: beamName,\n };\n this.scene.add(beamGroup);\n }\n }\n private cutStandardBeamByCutBeamWithinBayControl(\n beamGeo: GeometryInfo,\n beamCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n userDataPos: any,\n beamName = \"\",\n jointGeo: GeometryInfo\n ) {\n const fitX = this.getContainerOffsetXToFitBraketToExistingWall();\n // Map list cut beam here\n const beamStartX = pos.x;\n const beamEndX = pos.x + length;\n\n let endOfBayX = -UI.totalBayLength / 2 + fitX;\n let startCutBeamX = beamStartX;\n let endCutBeamX = beamStartX;\n\n const beams = this.utils.getListSeperateBeamsByBays(\n endOfBayX,\n beamStartX,\n beamEndX,\n endCutBeamX,\n startCutBeamX\n );\n\n for (let i = 0; i < beams.length; i++) {\n endCutBeamX = beams[i][1];\n startCutBeamX = beams[i][0];\n let beamGroup = this.utils.createBeamGroup(\n beamGeo,\n beamCapGeo,\n endCutBeamX - startCutBeamX,\n new Vector3(startCutBeamX, pos.y, pos.z),\n rot,\n views,\n directionOffset,\n userDataPos,\n UI.beamLayoutShow,\n {\n hasStartCap: UI.beamType == 0 && i == 0,\n hasEndCap:\n UI.beamType == 0 &&\n (i == beams.length - 1 || (i == 0 && beams.length == 1)),\n hasStartJoint: i !== 0,\n hasEndJoint: false,\n jointGeo: jointGeo,\n }\n );\n beamGroup.userData = {\n ...beamGroup.userData,\n name: beamName,\n };\n this.scene.add(beamGroup);\n }\n }\n private getContainerOffsetXToFitBraketToExistingWall() {\n let fitX = 0;\n if (UI.existingType == BUILDING_SIDE.RIGHT) {\n fitX = -(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0)\n );\n }\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n fitX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n }\n\n return fitX;\n }\n public getBracketHeight(offset): number {\n let angle = UI.patiosPitch;\n return this.utils.tan(angle) * offset;\n }\n\n public destroy(): void {\n this.unregisterEvent();\n }\n\n private registerEvent(): void {\n this.eventHandleId = this.uiChangedDefer.bind(this);\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldExistingWallHeight,\n this.APP.sldEaveWidth,\n this.APP.sldFasciaDepth,\n\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n\n this.APP.sltExistingType,\n this.APP.dialogEditBay,\n\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldFrontOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldFlyOverBracketHeight,\n\n this.APP.sltColourBeam,\n this.APP.sltColourPost,\n this.APP.sltColourBracket,\n this.APP.sltColourFasciaBracket,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n ];\n //this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n\n this.controlsToRegisterEvent2 = [\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltColumnType,\n ];\n this.controlsToRegisterEvent2.forEach((c) =>\n c.addAction(this.objectSizeChangedHandle)\n );\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach((c) =>\n c.removeAction(this.objectSizeChangedHandle)\n );\n this.controlsToRegisterEvent2 = undefined;\n }\n private objectSizeChanged(pre: number, cur: number) {\n this.optimize().then(() => {\n this.load();\n });\n }\n uiChangedDefer(previousValue: number, currentValue: number) {\n if (this.APP.sltCutOut.currentValue == 1) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => {\n this.load();\n }, this.deferTimeout);\n } else {\n this.load();\n }\n }\n}\n","import { Scene, Mesh, Object3D, Material, Group, FontLoader, TextBufferGeometry, PlaneBufferGeometry, Vector3, BoxHelper, Box3Helper, Matrix4, Box3, Geometry, LineSegments, LineBasicMaterial, Color, BoxBufferGeometry, ArrowHelper, BufferGeometry, Line, Line3 } from \"three\";\nimport { HomeComponent as AppComponent, HomeComponent } from '../../containers/home/home.component';\nimport { Util } from '../utils';\nimport { MaterialManager } from '../material.manager';\nimport { GeometryInfo, ViewType, LineType, IBay, Printing2DGeometry, Printing2DLine, Print2DText, Printing2DGeometryType } from '../models';\nimport { GEOMETRY_TYPE, DIMENSION_LOCATION, DIMENSION_LABEL_TYPE } from 'src/app/app.config';\nimport { environment } from 'src/environments/environment';\nimport { PatiosGableLRFlyOverManager } from '.';\nimport { GeometryManager } from '../geometry.manager';\nimport { BUILDING_SIDE, FIT_FLYOVER_BRAKET_ON_ROOF, PANEL_DIRECTION, RAKECUT_TYPE } from 'src/app/app.constants';\nimport Dimension, { AddDimensionOptions } from \"src/app/models/Dimension\";\nimport {CONFIG as conf} from '../../app.config'\nimport { UI } from \"../ui\";\n\nexport class DimensionManager {\n private scene: Scene;\n private APP: AppComponent;\n private MANAGER: PatiosGableLRFlyOverManager;\n public listText: THREE.Object3D[] = [];\n private utils: Util;\n\n\n private eventHandleId: any;\n\n private material: Material;\n\n private materialManager: MaterialManager;\n\n private dimensionPatiosFrontBottom: Object3D;\n private dimensionPatiosFrontRight: Object3D;\n \n private dimensionPatiosRightBottom: Object3D;\n private dimensionPatiosRightLeft: Object3D;\n private dimensionPatiosRightRight: Object3D;\n\n private dimensionPatiosLeftBottom: Object3D;\n private dimensionPatiosLeftRight: Object3D;\n private dimensionPatiosLeftLeft: Object3D;\n\n private dimensionPatiosPlanRight: Object3D;\n private dimensionPatiosPlanBottom: Object3D;\n private dimensionPatiosPlanLeft: Object3D;\n private dimensionPlanMiddle: Object3D;\n private dimensionPlanMidleLeft: Object3D;\n private dimensionPatiosPlanLeftOverHang: Object3D;\n\n private lineCapGeo: GeometryInfo;\n private lineGeo: GeometryInfo;\n private textGeo: TextBufferGeometry;\n\n private dimensionDistance = 1500;\n private dimensionDistance2 = 500;\n private dimensionDistance3 = 300;\n\n private textDistance = 5000;\n\n private totalBaySize: number;\n private box: Box3;\n\n private font: any\n private textParameter: any;\n private isReady = false;\n\n private controlsToRegisterEvent: Array;\n private geometryManager: GeometryManager;\n\n private options : AddDimensionOptions;\n private startPos: Vector3;\n private startMatrix: Matrix4;\n private startBayLength: number;\n\n constructor(app: AppComponent, flyOverManager: PatiosGableLRFlyOverManager) {\n this.utils = new Util();\n this.materialManager = MaterialManager.Instance();\n this.APP = app;\n this.MANAGER = flyOverManager;\n this.scene = this.APP.scene;\n this.material = MaterialManager.Instance().DIMENSION_TEXT;\n this.geometryManager = GeometryManager.Instance();\n //this.registerEvent();\n }\n\n \n public optimize() : Promise{\n return new Promise((resolve, reject) => {\n this.lineGeo = this.geometryManager.getDimensionLine();\n this.lineCapGeo = this.geometryManager.getDimensionCap();\n\n resolve();\n });\n }\n public load(): Promise { \n return new Promise((resolve, reject) => {\n this.unload();\n \n var loader = new FontLoader();\n \n this.dimensionPatiosFrontBottom = new Group();\n this.dimensionPatiosFrontBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n // this.dimensionPatiosFrontBottom.rotation.set(0,Math.PI,0);\n this.dimensionPatiosFrontBottom.visible = false;\n\n this.dimensionPatiosFrontRight = new Group();\n this.dimensionPatiosFrontRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosFrontRight.rotation.set(0,0,-Math.PI/2);\n this.dimensionPatiosFrontRight.visible = false;\n \n this.dimensionPatiosRightBottom = new Group();\n this.dimensionPatiosRightBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightBottom.rotation.set(0,-Math.PI/2,0);\n this.dimensionPatiosRightBottom.visible = false;\n\n this.dimensionPatiosRightLeft = new Group();\n this.dimensionPatiosRightLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightLeft.rotation.set(0,-Math.PI/2,-Math.PI/2);\n this.dimensionPatiosRightLeft.visible = false;\n\n this.dimensionPatiosRightRight = new Group();\n this.dimensionPatiosRightRight.rotation.set(0,-Math.PI/2,-Math.PI/2);\n this.dimensionPatiosRightRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosRightRight.visible = false;\n \n\n this.dimensionPatiosLeftBottom = new Group();\n this.dimensionPatiosLeftBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftBottom.rotation.set(0,-Math.PI/2,0);\n this.dimensionPatiosLeftBottom.visible = false;\n\n this.dimensionPatiosLeftRight = new Group();\n this.dimensionPatiosLeftRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftRight.rotation.set(Math.PI/2,-Math.PI/2,0);\n this.dimensionPatiosLeftRight.visible = false;\n\n this.dimensionPatiosLeftLeft = new Group();\n this.dimensionPatiosLeftLeft.rotation.set(0, -Math.PI / 2, Math.PI / 2);\n this.dimensionPatiosLeftLeft.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosLeftLeft.visible = false;\n \n\n\n this.dimensionPatiosPlanRight = new Group();\n this.dimensionPatiosPlanRight.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosPlanRight.rotation.set(-Math.PI/2, Math.PI, -Math.PI/2);\n\n this.dimensionPatiosPlanBottom = new Group();\n this.dimensionPatiosPlanBottom.userData = { type: GEOMETRY_TYPE.DIMENSION };\n this.dimensionPatiosPlanBottom.rotation.set(-Math.PI / 2, 0, 0);\n\n this.dimensionPatiosPlanLeft = new Group();\n this.dimensionPatiosPlanLeft.userData = { type: GEOMETRY_TYPE.DIMENSION , position: { left: true } };\n this.dimensionPatiosPlanLeft.rotation.set(-Math.PI / 2, 0, -Math.PI / 2);\n\n this.dimensionPlanMiddle = new Group();\n this.dimensionPlanMiddle.userData = { type: GEOMETRY_TYPE.DIMENSION };\n //this.dimensionPlanMiddle.rotation.set(-Math.PI / 2, 0, 0);\n this.dimensionPlanMidleLeft = new Group();\n\n this.dimensionPatiosPlanLeftOverHang = new Group();\n\n this.scene.add(this.dimensionPatiosPlanRight);\n this.scene.add(this.dimensionPatiosPlanLeft);\n this.scene.add(this.dimensionPatiosFrontRight);\n this.APP.patiosManager.patiosGroup.add(\n this.dimensionPatiosFrontBottom, \n //this.dimensionPatiosFrontRight, \n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom, \n this.dimensionPatiosLeftRight, \n this.dimensionPatiosPlanBottom,\n this.dimensionPlanMiddle,\n this.dimensionPatiosPlanLeftOverHang,\n this.dimensionPatiosLeftLeft,\n this.dimensionPlanMidleLeft\n );\n\n\n\n loader.load( environment.modelBaseUrl + '/assets/fonts/helvetiker_regular.typeface.json', (font) => {\n this.font = font;\n\n this.textParameter = {\n font: this.font,\n size: 200,\n height: 5,\n curveSegments: 10\n };\n this.options = {\n container: HomeComponent.ins.scene,\n start: new Vector3(),\n end: new Vector3(),\n linePos: new Vector3(),\n views: [],\n allowDrag: true,\n textParameter: this.textParameter,\n textPos: new Vector3(),\n labelType: null,\n fitZ: 10,\n hasTextClone: false,\n axis: 'x',\n lineLength: 0,\n subtype: null,\n textUserData: null,\n onDragCallback: this.onDimDrag.bind(this),\n onDragStartCallback: this.onDimDragStart.bind(this),\n }\n\n this.isReady = true;\n this.draw();\n \n resolve();\n })\n });\n }\n\n public unload(){\n this.scene.remove(this.dimensionPatiosPlanRight);\n this.scene.remove(this.dimensionPatiosPlanLeft);\n this.scene.remove(this.dimensionPatiosFrontRight);\n if(this.APP.patiosManager && this.APP.patiosManager.patiosGroup){\n this.APP.patiosManager.patiosGroup.remove(\n this.dimensionPatiosFrontBottom, \n //this.dimensionPatiosFrontRight, \n this.dimensionPatiosRightBottom,\n this.dimensionPatiosRightLeft,\n this.dimensionPatiosRightRight,\n this.dimensionPatiosLeftBottom, \n this.dimensionPatiosLeftRight,\n this.dimensionPatiosLeftLeft,\n this.dimensionPatiosPlanBottom,\n this.dimensionPlanMiddle,\n this.dimensionPlanMidleLeft,\n this.dimensionPatiosPlanLeftOverHang\n );\n }\n }\n \n public draw() {\n if (!this.isReady) {\n return;\n }\n // this.dimensionPatiosPlanBottom.children = [];\n // this.dimensionPatiosPlanRight.children = [];\n // this.dimensionPatiosPlanLeft.children = [];\n this.dimensionPatiosPlanBottom.children = this.dimensionPatiosPlanBottom.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.LEFT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.RIGHT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY\n );\n this.dimensionPatiosPlanRight.children = this.dimensionPatiosPlanRight.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.MULTI_SPAN\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.FRONT_OVERHANG\n || el.userData?.groupType == DIMENSION_LABEL_TYPE.BACK_OVERHANG\n );\n this.dimensionPatiosPlanLeft.children = this.dimensionPatiosPlanLeft.children.filter( el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL \n )\n this.dimensionPatiosFrontBottom.children = [];\n this.dimensionPatiosFrontRight.children = [];\n this.dimensionPatiosLeftBottom.children = [];\n this.dimensionPatiosLeftRight.children = [];\n this.dimensionPatiosRightBottom.children = [];\n this.dimensionPatiosRightLeft.children = [];\n this.dimensionPatiosRightRight.children = [];\n this.dimensionPlanMiddle.children = [];\n this.dimensionPatiosPlanLeftOverHang.children = [];\n this.dimensionPatiosLeftLeft.children = [];\n this.dimensionPlanMidleLeft.children = [];\n \n this.totalBaySize = 0;\n for(let b of this.APP.dialogEditBay.listBay){\n this.totalBaySize += b.value;\n }\n\n this.box = this.utils.getSceneBox();\n\n this.drawDimensionPatiosPlanBottom();\n this.drawDimensionPatiosPlanRight();\n this.drawDimensionPatiosPlanLeft();\n\n this.drawDimensionPatiosFrontBottom();\n this.drawDimensionPatiosFrontRight();\n\n this.drawDimensionPatiosLeftBottom();\n this.drawDimensionPatiosLeftRight();\n this.drawDimensionPatiosLeftLeft();\n\n this.drawDimensionPatiosRightBottom();\n this.drawDimensionPatiosRightLeft();\n this.drawDimensionPatiosRightRight();\n\n this.drawDimensionMidle();\n this.drawDimensionMidleLeft();\n\n this.APP.dimensionManager.draw();\n }\n private totalHeightFromEaveHeightToTopOfExistingRoof(){\n const height = \n this.geometryManager.EAVE.EAVE.height \n + UI.fasciaDepth \n + UI.eaveWidth * this.utils.tan(UI.existingRoofPitch) \n + this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.height / this.utils.cos(UI.existingRoofPitch)\n \n return height\n }\n private totalHeightFromEaveHeightToTopOfFlyoverBraket(){\n const height = this.totalHeightFromEaveHeightToTopOfExistingRoof() + UI.braketHeight - FIT_FLYOVER_BRAKET_ON_ROOF;\n \n return height\n }\n private drawDimensionMidleLeft() {\n let dimLeft = this.utils.createArrowLine([{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }]);\n dimLeft.visible = false;\n dimLeft.position.setX(-300)\n let textLeft = this.utils.createText(\"Panel direction\", [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }], this.textParameter, new Vector3(-500, 0, 650));\n textLeft.visible = false;\n\n let dimRight = dimLeft.clone()\n dimRight.position.setX(300);\n let textRight = textLeft.clone();\n textRight.position.setX(500);\n \n this.dimensionPlanMidleLeft.add(dimLeft);\n this.dimensionPlanMidleLeft.add(textLeft);\n this.dimensionPlanMidleLeft.add(dimRight);\n this.dimensionPlanMidleLeft.add(textRight);\n\n let offsetZ =UI.span / 2 - UI.existingWidth1 / 2 - this.MANAGER.patiosGroup.position.z - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n if (this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT) {\n let offsetX = this.totalBaySize / 2 + UI.overhangRight;\n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT){\n offsetX += -this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width - 100 + ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n }\n \n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT){\n offsetX += this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n }\n\n this.dimensionPlanMidleLeft.position.set(offsetX, 0, offsetZ);\n this.dimensionPlanMidleLeft.rotation.set(0, -Math.PI / 2, 0);\n }\n else {\n let offsetX = - this.totalBaySize / 2 - UI.overhangLeft;\n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT){\n offsetX += -this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width - 100 + ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n }\n \n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT){\n offsetX += this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n }\n \n this.dimensionPlanMidleLeft.rotation.set(0, Math.PI / 2, 0);\n this.dimensionPlanMidleLeft.position.set(offsetX, 0, offsetZ);\n }\n }\n private drawDimensionMidle() {\n let offsetX = 0;\n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT){\n offsetX = -this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width - 100 + ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n }\n\n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT){\n offsetX = this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n }\n\n let dimLeft = this.utils.createArrowLine([{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }]);\n dimLeft.rotation.set(0, -Math.PI / 2, 0);\n dimLeft.visible = false;\n\n let textLeft = this.utils.createText(`${UI.patiosPitch} degree`, [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }], this.textParameter, new Vector3(-500, 0, 200));\n textLeft.userData.rotation = new Vector3(0, Math.PI / 2, 0)\n textLeft.visible = false;\n\n let dimRight = dimLeft.clone()\n dimRight.rotation.set(0, Math.PI / 2, 0);\n\n let textRight = textLeft.clone();\n textRight.position.setX(500);\n \n this.dimensionPlanMiddle.add(dimLeft);\n this.dimensionPlanMiddle.add(textLeft);\n this.dimensionPlanMiddle.add(dimRight);\n this.dimensionPlanMiddle.add(textRight);\n\n let offsetZ = - UI.existingWidth1 / 2 - this.MANAGER.patiosGroup.position.z - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0) + UI.span / 2;\n this.dimensionPlanMiddle.rotation.set(0, Math.PI / 2, 0);\n this.dimensionPlanMiddle.position.set(offsetX, 0, offsetZ);\n }\n private drawDimensionPatiosPlanBottom(){\n let offsetX = -this.totalBaySize / 2;\n //let offsetZ = this.box.max.z + this.dimensionDistance2;\n //let offsetZ = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.dimensionDistance3 - this.APP.sldExistingWidth1.currentValue/2;\n //if (this.APP.sldExistingWidth1.currentValue > this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue) {\n // offsetZ = this.APP.sldExistingWidth1.currentValue / 2 + this.dimensionDistance2\n // if(this.APP.sldExistingLength2.currentValue > 0){\n // offsetZ += 500;\n // }\n //}\n\n let views = [ { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS } ];\n\n //this.dimensionPatiosPlanBottom.position.setZ(offsetZ);\n this.dimensionPatiosPlanBottom.children = this.dimensionPatiosPlanBottom.children.filter(el => \n el.userData?.groupType != DIMENSION_LABEL_TYPE.BAY\n || (el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY && el.userData?.bayNum < HomeComponent.ins.dialogEditBay.listBay.length)\n );\n \n for(let i = 0; i <= this.APP.dialogEditBay.listBay.length; i++){\n let b: IBay = {index: 0, value: 0, isCut: false};\n if(i < this.APP.dialogEditBay.listBay.length){\n b = this.APP.dialogEditBay.listBay[i];\n }\n\n // let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n // cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n // cap2.position.setX(offsetX);\n // this.dimensionPatiosPlanBottom.add(cap2);\n\n if(i < this.APP.dialogEditBay.listBay.length){\n let textStr = this.utils.getDimensionValue(b.value);\n let options : AddDimensionOptions = {... this.options,\n lineLength: b.value,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(offsetX + b.value / 2, 0, 0),\n textPos: new Vector3(offsetX + b.value / 2, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.BAY,\n bayNum: i,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, position: { bottom: true } }\n }\n let dimBay = this.dimensionPatiosPlanBottom.children.find(el => \n el.userData?.groupType == DIMENSION_LABEL_TYPE.BAY \n && el.userData?.bayNum == i\n ) as Dimension;\n if(!dimBay){\n new Dimension(options);\n } else {\n dimBay.update(options);\n }\n }\n offsetX += b.value;\n }\n\n //rakecut\n if(this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE){\n let _offsetX = -this.APP.dialogEditBay.totalBaySize/2 + this.APP.sldLeftCutHorizontal.currentValue/2 - this.APP.sldLeftOverhang.currentValue;\n let options : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldLeftCutHorizontal.currentValue,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(_offsetX, 500, 0),\n textPos: new Vector3(_offsetX, 300, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL,\n subtype: GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT\n }\n let dimRake = this.dimensionPatiosPlanBottom.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL) as Dimension;\n if(!dimRake){\n new Dimension(options);\n } else {\n dimRake.update(options);\n }\n } else {\n this.dimensionPatiosPlanBottom.children = this.dimensionPatiosPlanBottom.children.filter(el => el.userData?.groupType != DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL)\n }\n if(this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE){\n let _offsetX = this.APP.dialogEditBay.totalBaySize/2 - this.APP.sldRightCutHorizontal.currentValue/2 + this.APP.sldRightOverhang.currentValue;\n let options : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldRightCutHorizontal.currentValue,\n container: this.dimensionPatiosPlanBottom,\n views: views,\n linePos: new Vector3(_offsetX, 500, 0),\n textPos: new Vector3(_offsetX, 500-200, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL,\n subtype: GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT\n }\n let dimRake = this.dimensionPatiosPlanBottom.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL) as Dimension;\n if(!dimRake){\n new Dimension(options);\n } else {\n dimRake.update(options);\n }\n } else {\n this.dimensionPatiosPlanBottom.children = this.dimensionPatiosPlanBottom.children.filter(el => el.userData?.groupType != DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL)\n }\n //Left over hang\n this.addOverhang(this.dimensionPatiosPlanBottom, offsetX, this.APP.sldLeftOverhang.currentValue, views, \"Left\", 0, \"z\", DIMENSION_LABEL_TYPE.LEFT_OVERHANG);\n this.addOverhang(this.dimensionPatiosPlanBottom, offsetX, this.APP.sldRightOverhang.currentValue, views, \"Right\", 0, \"z\", DIMENSION_LABEL_TYPE.RIGHT_OVERHANG);\n this.repositionDimension(this.dimensionPatiosPlanBottom, DIMENSION_LOCATION.PLAN_BOTTOM);\n }\n onDimDrag(event){\n this.utils.handlerDimDragEvent(event, this.startPos, this.startMatrix, this.startBayLength);\n this.startPos = event.object.position.clone();\n }\n onDimDragStart(event){\n this.startPos = event.object.position.clone();\n this.startMatrix = event.object.matrixWorld.clone();\n if(event.object.userData?.dimType === DIMENSION_LABEL_TYPE.BAY){\n let bayNum = event.object.userData.bayNum;\n this.startBayLength = UI.listBay[+bayNum].value;\n }\n }\n private drawDimensionPatiosPlanRight(){\n \n let views = [ { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS } ];\n let offsetDimensionZ = this.APP.sldSpan.currentValue/2 \n - this.APP.sldExistingWidth1.currentValue/2 \n - this.APP.existingWallManager.geo_existingWallL1.width \n - this.APP.eaveManager.backOverhang;\n\n let _dimensionDistane = this.dimensionDistance2;\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n if(this.APP.sldExistingWidth1.currentValue > 0){\n _dimensionDistane = this.dimensionDistance;\n }\n }\n\n let dimLength = this.APP.sldSpan.currentValue;\n\n let textStr = this.utils.getDimensionValue(this.APP.sldSpan.currentValue);\n\n let options : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldSpan.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(0, 0, 0),\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.SPAN,\n hasTextClone: false,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneRotation: new Vector3(0, Math.PI, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, -Math.PI, 0),\n fitZ: -10\n }\n let dimSpan = this.dimensionPatiosPlanRight.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.SPAN) as Dimension;\n if(!dimSpan){\n new Dimension(options);\n } else {\n dimSpan.update(options);\n }\n\n if(this.APP.sldMultiSpan.currentValue > 0){\n // let offsetX = this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue;\n // - this.APP.sldExistingWidth1.currentValue/2 \n // - this.APP.existingWallManager.geo_existingWallL1.width \n // - this.APP.eaveManager.backOverhang;\n dimLength += this.APP.sldMultiSpan.currentValue;\n\n let textStr = this.utils.getDimensionValue(this.APP.sldMultiSpan.currentValue);\n\n let optionsMul : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldMultiSpan.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue / 2, 0, 0),\n textPos: new Vector3(this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue / 2, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.MULTI_SPAN,\n hasTextClone: false,\n textUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneUserData: { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0, -Math.PI / 2, 0) },\n textCloneRotation: new Vector3(0, Math.PI, -Math.PI),\n textCloneVisible: false,\n textRotation: new Vector3(0, -Math.PI, 0),\n fitZ: -10\n }\n let dimMul = this.dimensionPatiosPlanRight.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.MULTI_SPAN) as Dimension;\n if(!dimMul){\n new Dimension(optionsMul);\n } else {\n dimMul.update(optionsMul);\n }\n } else {\n this.dimensionPatiosPlanRight.children = this.dimensionPatiosPlanRight.children.filter(el => el.userData?.groupType != DIMENSION_LABEL_TYPE.MULTI_SPAN)\n }\n\n let extraDistance = 0;\n //----Rake cut\n if(this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE){\n extraDistance = 500;\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n \n let offsetZ = dimLength/2 + UI.multiSpan / 2 + this.APP.sldFrontOverhang.currentValue - this.APP.sldRightCutVertical.currentValue/2;\n \n let optionsRake : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldRightCutVertical.currentValue,\n container: this.dimensionPatiosPlanRight,\n views: views,\n linePos: new Vector3(offsetZ, 500, 0),\n textPos: new Vector3(offsetZ, 300, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL,\n textRotation: new Vector3( 0, Math.PI, 0),\n fitZ: -10,\n subtype: GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT\n }\n let dimRake = this.dimensionPatiosPlanRight.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL) as Dimension;\n if(!dimRake){\n new Dimension(optionsRake);\n } else {\n dimRake.update(optionsRake);\n }\n } else {\n this.dimensionPatiosPlanRight.children = this.dimensionPatiosPlanRight.children.filter(el => el.userData?.groupType != DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL)\n }\n //----End rake cut\n \n let offsetRight = this.APP.sldSpan.currentValue / 2 + this.APP.sldMultiSpan.currentValue;\n let offsetLeft = this.APP.sldSpan.currentValue / 2;// + this.APP.sldMultiSpan.currentValue;\n\n this.addOverhang(this.dimensionPatiosPlanRight, offsetRight, this.APP.sldFrontOverhang.currentValue, views, \"Right\", Math.PI,\"y\", DIMENSION_LABEL_TYPE.FRONT_OVERHANG);\n this.addOverhang(this.dimensionPatiosPlanRight, offsetLeft, this.APP.sldBackOverhang.currentValue, views, \"Left\", Math.PI, \"y\", DIMENSION_LABEL_TYPE.BACK_OVERHANG);\n\n this.repositionDimension(this.dimensionPatiosPlanRight, DIMENSION_LOCATION.PLAN_RIGHT, extraDistance);\n }\n private drawDimensionPatiosPlanLeft(){\n if(this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.NONE){\n this.dimensionPatiosPlanLeft.children = this.dimensionPatiosPlanLeft.children.filter(el => el.userData?.groupType != DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL)\n return;\n }\n\n let views = [{ viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }];\n\n let offsetDimensionZ = this.APP.sldSpan.currentValue\n + this.APP.sldMultiSpan.currentValue\n + this.APP.sldFrontOverhang.currentValue\n - this.APP.sldExistingWidth1.currentValue / 2\n - this.APP.existingWallManager.geo_existingWallL1.width\n - this.APP.eaveManager.backOverhang\n - this.APP.sldLeftCutVertical.currentValue/2;\n\n let optionsRake : AddDimensionOptions = {... this.options,\n lineLength: HomeComponent.ins.sldLeftCutVertical.currentValue,\n container: this.dimensionPatiosPlanLeft,\n views: views,\n textPos: new Vector3(0, -200, 0),\n labelType: DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL,\n }\n let dimRake = this.dimensionPatiosPlanLeft.children.find(el => el.userData?.groupType == DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL) as Dimension;\n if(!dimRake){\n new Dimension(optionsRake);\n } else {\n dimRake.update(optionsRake);\n }\n\n //let offsetDimensionX = this.MANAGER.boundingBox.min.x - this.dimensionDistance2;\n this.dimensionPatiosPlanLeft.position.set(0, 0, offsetDimensionZ);\n this.repositionDimension(this.dimensionPatiosPlanLeft, DIMENSION_LOCATION.PLAN_LEFT);\n }\n private drawDimensionPatiosFrontBottom(){\n let dimOffsetY = -this.dimensionDistance2;\n this.dimensionPatiosFrontBottom.position.set(0,dimOffsetY,0);\n\n let views = [ { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosPlanBottom.children.forEach( groupDim => {\n groupDim.children.filter(c => c.userData.subtype != GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT).forEach(e => {\n let dim = e.clone();\n dim.userData['views'] = views;\n if(dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n dim.rotation.set(0,Math.PI,0);\n dim.userData['rotation'] = new Vector3(0,0,0);\n dim.userData['position'] = { ...e.userData.position, bottom: true };\n }\n this.dimensionPatiosFrontBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosFrontRight(){\n let views = [ { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS } ];\n\n let _dimensionDistane = this.dimensionDistance2;\n if(this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3){\n if(this.APP.sldExistingWidth1.currentValue > 0){\n _dimensionDistane = this.dimensionDistance;\n }\n }\n \n let height = UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.MANAGER.columnAndBeamManager.geo_superiorBeam.height + (UI.span + UI.multiSpan) / 2 * this.utils.tan(UI.patiosPitch);\n let dimOffsetY = height/2;\n\n let scaleLength = height/this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-dimOffsetY);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(dimOffsetY);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(height);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, rotation: new Vector3(0,0,-Math.PI/2) };\n text.position.set(0,200,0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosFrontRight.add(line, cap1, cap2, text, ...this.utils.addArrowForLine(line));\n this.repositionDimension(this.dimensionPatiosFrontRight, DIMENSION_LOCATION.FRONT_RIGHT);\n }\n private drawDimensionPatiosLeftBottom(){\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z - (this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + this.APP.eaveManager.backOverhang - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0));\n \n this.dimensionPatiosLeftBottom.position.set(0,dimOffsetY,dimOffsetZ);\n\n let views = [ \n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n this.dimensionPatiosPlanRight.children.forEach( groupDim => {\n groupDim.children.forEach(e => {\n if(e.userData?.subType == GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT)\n return;\n \n let dim = e.clone();\n dim.userData['views'] = views;\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.rotation.set(0, 0, 0);\n dim.userData['views'] = [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }];\n dim.userData['rotation'] = new Vector3(0, 0, 0);\n dim.userData['position'] = {...e.userData.position, bottom: true}; \n }\n this.dimensionPatiosLeftBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosLeftRight() {\n let dimOffsetY = UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.MANAGER.columnAndBeamManager.geo_superiorBeam.height + (UI.span + UI.multiSpan) / 2 * this.utils.tan(UI.patiosPitch);\n\n let views = [ \n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n //{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n let offsetLength = dimOffsetY;\n let scaleLength = offsetLength / this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength/2);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength/2);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }], rotation: new Vector3(-Math.PI / 2, 0, 0) };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosLeftRight.add(line, cap1, cap2, text, ...this.utils.addArrowForLine(line));\n\n this.repositionDimension(this.dimensionPatiosLeftRight, DIMENSION_LOCATION.LEFT_RIGHT);\n }\n private drawDimensionPatiosRightBottom(){\n let dimOffsetY = -this.dimensionDistance2;\n let dimOffsetZ = this.dimensionPatiosPlanRight.position.z - (this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + this.APP.eaveManager.backOverhang - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0));\n \n this.dimensionPatiosRightBottom.position.set(0,dimOffsetY,dimOffsetZ);\n\n let views = [ { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosPlanRight.children.forEach(groupDim => {\n groupDim.children.forEach(e => {\n if(e.userData?.subType == GEOMETRY_TYPE.DIMENSION_LINE_RAKECUT)\n return;\n \n let dim = e.clone();\n dim.userData['views'] = views;\n if (e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT) {\n dim.userData['rotation'] = new Vector3(0, 0, 0);\n dim.userData['position'] = {...e.userData.position, bottom: true};\n }\n this.dimensionPatiosRightBottom.add(dim);\n });\n })\n }\n private drawDimensionPatiosRightLeft(){\n this.dimensionPatiosRightLeft.position.set(0,this.dimensionPatiosLeftRight.position.y,this.dimensionPatiosLeftRight.position.z);\n\n let views = [ { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosLeftRight.children.forEach(e => {\n let dim = e.clone();\n dim.userData['views'] = views;\n if(e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n dim.userData['rotation'] = new Vector3(Math.PI/2,0,0);\n dim.rotation.set(0,Math.PI,0);\n }\n this.dimensionPatiosRightLeft.add(dim);\n });\n\n this.repositionDimension(this.dimensionPatiosRightLeft, DIMENSION_LOCATION.RIGHT_LEFT);\n }\n private drawDimensionPatiosLeftLeft() { \n let dimOffsetY = UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.MANAGER.columnAndBeamManager.geo_superiorBeam.height;\n let dimOffsetZ = this.APP.sldExistingWidth1.currentValue / 2 + 1800;\n\n this.dimensionPatiosLeftLeft.position.set(0, dimOffsetY / 2, -dimOffsetZ);\n\n let views = [\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }\n ];\n\n let offsetLength = dimOffsetY;\n let scaleLength = offsetLength / this.lineGeo.length\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap1.position.setX(-offsetLength / 2);\n\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.materialManager.DIMENSION_TEXT);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: views };\n cap2.position.setX(offsetLength / 2);\n\n let line = new Mesh(this.lineGeo.geometry, this.materialManager.DIMENSION_TEXT);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: views };\n //line.position.setX(this.APP.sldSpan.currentValue/2 + this.APP.sldMultiSpan.currentValue/2);\n line.scale.setX(scaleLength);\n\n let textStr = this.utils.getDimensionValue(offsetLength);\n this.textGeo = new TextBufferGeometry(textStr, this.textParameter);\n this.textGeo.center();\n\n let text = new Mesh(this.textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS }], rotation: new Vector3(Math.PI / 2, 0, 0) };\n text.position.set(0, 200, 0);\n //text.rotation.set(0,-Math.PI,0);\n\n this.dimensionPatiosLeftLeft.add(line, cap1, cap2, text, ...this.utils.addArrowForLine(line));\n }\n private drawDimensionPatiosRightRight(){\n let dimOffsetY = UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.MANAGER.columnAndBeamManager.geo_superiorBeam.height;\n let dimOffsetZ = this.APP.sldExistingWidth1.currentValue / 2 + 1800;\n \n this.dimensionPatiosRightRight.position.set(0,dimOffsetY/2,-dimOffsetZ);\n\n let views = [ { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS } ];\n\n this.dimensionPatiosLeftLeft.children.forEach(e => {\n if(e.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT){\n let dim = e.clone();\n dim.userData['views'] = views;\n dim.userData['rotation'] = new Vector3(-Math.PI/2,0,0);\n dim.rotation.set(0,Math.PI,0);\n dim.position.set(dim.position.x, -dim.position.y, dim.position.z);\n this.dimensionPatiosRightRight.add(dim);\n }\n });\n }\n\n private addOverhang(groupDim: Object3D, offset: number, overhangValue: number, views: any, side: string, rotateText: number, axis: string, labelType?: string) {\n if (overhangValue == 0){\n let dim = groupDim.children.find(el => el.userData?.groupType == labelType) as Dimension;\n if(dim){\n groupDim.remove(dim)\n }\n return;\n }\n\n let textStr = this.utils.getDimensionValue(overhangValue);\n\n let textRotation = new Vector3();\n let textUserData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: views, position: { overhang: true }};\n if (axis === \"z\") {\n textRotation.setZ(rotateText);\n textUserData['rotation'] = new Vector3(0, 0, -rotateText / 2);\n textUserData['position']['bottom'] = true;\n }\n else if (axis === \"y\") {\n textRotation.setY(rotateText);\n textUserData['rotation'] = new Vector3(0, -rotateText / 2, 0);\n }\n else if (axis === \"x\") {\n textRotation.setX(rotateText);\n textUserData['rotation'] = new Vector3(-rotateText / 2, 0, 0);\n }\n\n let linePos = new Vector3();\n if (side === \"Left\") {\n linePos.setX(-offset - overhangValue / 2);\n }\n else if (side === \"Right\") {\n linePos.setX(offset + overhangValue / 2);\n }\n let fitZ = 0;\n if(labelType){\n if(axis === 'z'){\n fitZ = 10;\n } else if(axis === 'y'){\n fitZ = -10;\n }\n }\n let options : AddDimensionOptions = {... this.options,\n lineLength: overhangValue,\n container: groupDim,\n views: views,\n linePos: linePos,\n textPos: linePos.clone().setY(linePos.y - 200),\n labelType: labelType ? labelType : null,\n fitZ: fitZ,\n textRotation: textRotation,\n textUserData: textUserData\n }\n let dim = groupDim.children.find(el => el.userData?.groupType == labelType) as Dimension;\n if(!dim){\n new Dimension(options);\n } else {\n dim.update(options)\n }\n }\n private getTextCover(textGeo: TextBufferGeometry, labelType: string, pos: Vector3, fitZ = 0, bayNum?: number){\n let textSize = new Vector3();\n textGeo.boundingBox.getSize(textSize)\n\n let textCover = new Mesh(new BoxBufferGeometry(textSize.x, textSize.y, textSize.z + fitZ))\n textCover.position.set(pos.x , pos.y, pos.z);\n textCover.userData = { type: GEOMETRY_TYPE.TEXT_COVER, labelType };\n if(bayNum !== undefined){\n textCover.userData['bayNum'] = bayNum;\n }\n textCover.material['opacity'] = 0;\n textCover.material['transparent'] = true;\n\n return textCover\n }\n\n public getOutlines(): Printing2DGeometry{\n let lsGeometries: Printing2DLine[] = [];\n let lsText: Print2DText[] = [];\n \n for(let dim of [\n ...this.dimensionPatiosPlanBottom.children,\n ...this.dimensionPatiosPlanRight.children,\n ...this.dimensionPatiosPlanLeft.children,\n ...this.dimensionPatiosFrontBottom.children,\n ...this.dimensionPatiosFrontRight.children,\n ...this.dimensionPatiosLeftBottom.children,\n ...this.dimensionPatiosLeftRight.children,\n ...this.dimensionPatiosRightBottom.children,\n ...this.dimensionPatiosRightLeft.children,\n ...this.dimensionPlanMiddle.children,\n ...this.dimensionPatiosPlanLeftOverHang.children,\n ...this.dimensionPatiosLeftLeft.children,\n ...this.dimensionPatiosRightRight.children,\n ...this.dimensionPlanMidleLeft.children\n\n ]){\n if(!dim.userData.views){\n // console.log(\"TEXT NO VIEW\", dim);\n continue;\n }\n\n if(dim.type == 'Group'){\n dim.children.forEach(el => {\n el.updateMatrix();\n let _clone = el.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(el.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n \n el.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(el.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(el.matrixWorld);\n\n let textRotation = el.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, el, pos, textRotation, points)\n })\n } else{\n dim.updateMatrix();\n let _clone = dim.clone();\n _clone.applyMatrix4(new Matrix4().getInverse(dim.matrix));\n let _box = new Box3().setFromObject(_clone);\n\n let _points = this.utils.getStartEndPoint(_box);\n let _line = new Line(new Geometry().setFromPoints(_points));\n \n dim.updateWorldMatrix(true, true);\n _line.geometry.applyMatrix4(dim.matrixWorld);\n\n let points = (_line.geometry as Geometry).vertices;\n let pos = new Vector3().applyMatrix4(dim.matrixWorld);\n\n let textRotation = dim.userData.rotation || new Vector3();\n this.getDimInfo(lsGeometries, lsText, dim, pos, textRotation, points)\n }\n }\n \n return { lines: lsGeometries, texts: lsText };\n }\n private getDimInfo(lsGeometries: Printing2DLine[], lsText: Print2DText[], dim: Object3D, pos: Vector3, textRotation: Vector3, points: Vector3[]){\n if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_TEXT && dim.userData.views && dim.userData.value) {\n let box = new Box3().setFromObject(dim.parent);\n let startEnd = this.utils.getStartEndPoint(box);\n let line = new Line3(startEnd[0], startEnd[1]);\n\n let projectPoint = new Vector3();\n line.closestPointToPoint(pos, true, projectPoint);\n let _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(10));\n\n if(dim.userData.position?.bottom){\n if(dim.userData.position?.overhang){\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(180));\n }\n else{\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(120));\n }\n }\n else{\n if(dim.userData.position?.overhang){\n _pos = new Vector3().addVectors(projectPoint, new Vector3().subVectors(pos, projectPoint).normalize().multiplyScalar(100));\n }\n }\n\n let p = new Vector3().applyMatrix4(dim.matrixWorld);\n\n lsText.push({\n value: dim.userData.value,\n position: p,\n rotation: textRotation,\n views: dim.userData.views\n });\n\n \n }\n else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_LINE) {\n // this.scene.add(new LineSegments(new Geometry().setFromPoints(points), new LineBasicMaterial({color: new Color('red')})));\n\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n else if (dim.userData.type == GEOMETRY_TYPE.DIMENSION_CAP) {\n lsGeometries.push({\n vertices: points,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n else if (dim.userData.type == \"Arrow\") {\n let geo = ((dim as Line).geometry as Geometry).clone();\n geo.applyMatrix4(dim.matrixWorld);\n lsGeometries.push({\n vertices: geo.vertices,\n objectType: dim.userData.type,\n views: dim.userData.views\n });\n }\n }\n\n private getGeometryFromBufferGeometry(bufferGeo: BufferGeometry) {\n let points: Vector3[] = [];\n let verties = bufferGeo.getAttribute('position').array;\n for (let i = 0; i < verties.length; i += 3) {\n points.push(new Vector3(verties[i], verties[i + 1], verties[i+2]));\n }\n\n return new Geometry().setFromPoints(points);\n }\n public destroy(): void {\n this.unregisterEvent();\n this.unload();\n }\n\n private registerEvent(): void {\n this.eventHandleId = this.uiChanged.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldSpan,\n this.APP.sldMultiSpan,\n this.APP.sldFrontOverhang,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sldExistingWallHeight,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sldFlyOverBracketHeight,\n this.APP.sltRoofPitch\n ];\n\n this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n \n //this.APP.sldSpan.addAction(this.eventHandleId);\n //this.APP.sldMultiSpan.addAction(this.eventHandleId);\n //this.APP.sldFrontOverhang.addAction(this.eventHandleId);\n //this.APP.sldExistingWidth1.addAction(this.eventHandleId);\n //this.APP.sldExistingWidth2.addAction(this.eventHandleId);\n //this.APP.sldExistingLength.addAction(this.eventHandleId);\n //this.APP.sldExistingLength2.addAction(this.eventHandleId);\n //this.APP.sltExistingType.addAction(this.eventHandleId);\n //this.APP.sldExistingWallHeight.addAction(this.eventHandleId);\n //this.APP.dialogEditBay.addAction(this.eventHandleId);\n\n //this.APP.sldLeftOverhang.addAction(this.eventHandleId);\n //this.APP.sldRightOverhang.addAction(this.eventHandleId);\n //this.APP.sldBackOverhang.addAction(this.eventHandleId);\n\n //this.APP.sldFlyOverBracketHeight.addAction(this.eventHandleId);\n //this.APP.sltRoofPitch.addAction(this.eventHandleId);\n }\n private unregisterEvent(): void{\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.APP.sldSpan.removeAction(this.eventHandleId);\n //this.APP.sldMultiSpan.removeAction(this.eventHandleId);\n //this.APP.sldFrontOverhang.removeAction(this.eventHandleId);\n //this.APP.sldExistingWidth1.removeAction(this.eventHandleId);\n //this.APP.sldExistingWidth2.removeAction(this.eventHandleId);\n //this.APP.sldExistingLength.removeAction(this.eventHandleId);\n //this.APP.sldExistingLength2.removeAction(this.eventHandleId);\n //this.APP.sltExistingType.removeAction(this.eventHandleId);\n //this.APP.sldExistingWallHeight.removeAction(this.eventHandleId);\n //this.APP.dialogEditBay.removeAction(this.eventHandleId);\n\n //this.APP.sldLeftOverhang.removeAction(this.eventHandleId);\n //this.APP.sldRightOverhang.removeAction(this.eventHandleId);\n //this.APP.sldBackOverhang.removeAction(this.eventHandleId);\n\n //this.APP.sldFlyOverBracketHeight.removeAction(this.eventHandleId);\n //this.APP.sltRoofPitch.removeAction(this.eventHandleId);\n }\n\n\n public uiChanged(preVal: number, curVal: number): void {\n this.draw();\n }\n private calulateBoundingBox(){\n this.APP.scene.remove(...this.APP.scene.children.filter(c => c.userData.type == 'BOX_HELPER_'));\n let patiosBox = this.MANAGER.boundingBox;\n \n let planRightBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosPlanRight);\n planRightBox.min.x = patiosBox.max.x;\n planRightBox.max.x = patiosBox.max.x + 500;\n planRightBox.max.y = 10000;\n \n let planLeftBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosPlanLeft);\n planLeftBox.min.x = patiosBox.min.x - 500;\n planLeftBox.max.x = patiosBox.min.x;\n planLeftBox.max.y = 10000;\n\n let planBottomBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosPlanBottom);\n let planBottomBoxWidth = planBottomBox.max.z - planBottomBox.min.z;\n planBottomBox.min.z = patiosBox.max.z;\n planBottomBox.max.z = patiosBox.max.z + planBottomBoxWidth;\n planBottomBox.max.y = 10000;\n \n let objs = [];\n\n objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && c.userData.position?.width1 || c.userData.position?.width2 || c.userData.position?.length2)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL)\n );\n\n // for(let e of objs){\n // let boxModelHelper = new BoxHelper(e);\n // boxModelHelper.userData = {type: 'BOX_HELPER_'};\n // this.scene.add(boxModelHelper);\n // }\n\n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(planRightBox.intersectsBox(objBox)){\n intersectBox = true;\n planRightBox.translate(new Vector3(100,0,0))\n }\n if(planLeftBox.intersectsBox(objBox)){\n intersectBox = true;\n planLeftBox.translate(new Vector3(-100,0,0))\n }\n if(planBottomBox.intersectsBox(objBox)){\n intersectBox = true;\n planBottomBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(planRightBox);\n // boxHelper.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper);\n\n // let boxHelper2 = new Box3Helper(planLeftBox);\n // boxHelper2.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper2);\n\n // let boxHelper3 = new Box3Helper(planBottomBox);\n // boxHelper3.userData = {type: 'BOX_HELPER_'};\n // this.APP.scene.add(boxHelper3);\n \n return { left: planLeftBox.min.x, right: planRightBox.max.x, front: planBottomBox.max.z };\n }\n private repositionDimension(dimension, location, extraDistance = 0){\n this.APP.scene.remove(...this.APP.scene.children.filter(c => c.userData.type == location));\n this.APP.scene.remove(...this.APP.scene.children.filter(c => c.userData.type == location));\n\n let patiosBox = this.MANAGER.boundingBox;\n \n if(location == DIMENSION_LOCATION.FRONT_RIGHT){\n let height = UI.eaveHeight + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.MANAGER.columnAndBeamManager.geo_superiorBeam.height + (UI.span + UI.multiSpan) / 2 * this.utils.tan(UI.patiosPitch);\n let dimOffsetY = height/2;\n dimension.position.setY(dimOffsetY);\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.max.x;\n dimBox.max.x = patiosBox.max.x + 500;\n dimBox.max.z = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && !c.userData.position.length1 && !c.userData.position.length2)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && !c.userData.position.length1 && !c.userData.position.length2)\n );\n\n if(this.APP.sldExistingWidth2.currentValue > 0){\n objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && !c.userData.position.length1)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && !c.userData.position.length1)\n );\n }\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(100,0,0))\n }\n }\n \n if(!intersectBox)\n break;\n }\n\n dimension.position.setX(dimBox.max.x + extraDistance);\n }\n else if(location == DIMENSION_LOCATION.PLAN_LEFT){\n // let offsetDimensionZ = this.APP.sldSpan.currentValue\n // + this.APP.sldMultiSpan.currentValue\n // + this.APP.sldFrontOverhang.currentValue\n // - this.APP.sldExistingWidth1.currentValue / 2\n // - this.APP.existingWallManager.geo_existingWallL1.width\n // - this.APP.eaveManager.backOverhang;\n // dimension.position.setZ(offsetDimensionZ);\n\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.min.x - 500;\n dimBox.max.x = patiosBox.min.x;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF || c.userData.type == GEOMETRY_TYPE.EXISTING_WALL\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(-100,0,0))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setX(dimBox.min.x + extraDistance);\n dimension.translateX(this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + this.APP.eaveManager.backOverhang - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0));\n }\n else if(location == DIMENSION_LOCATION.PLAN_RIGHT){\n let offsetDimensionZ = this.APP.sldSpan.currentValue / 2\n - this.APP.sldExistingWidth1.currentValue / 2\n - this.APP.existingWallManager.geo_existingWallL1.width\n - this.APP.eaveManager.backOverhang;\n dimension.position.setZ(offsetDimensionZ);\n\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n dimBox.min.x = patiosBox.max.x;\n dimBox.max.x = patiosBox.max.x + 500;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL)\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(100,0,0))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setX(dimBox.max.x + extraDistance);\n dimension.translateX(this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + this.APP.eaveManager.backOverhang - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0));\n }\n else if(location == DIMENSION_LOCATION.PLAN_BOTTOM){\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n dimBox.max.y = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL)\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setZ(dimBox.max.z + extraDistance);\n\n if (this.APP.sltExistingType.currentValue == 1) {\n dimension.position.setX(this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0)/2)\n } else if(this.APP.sltExistingType.currentValue == 2) {\n dimension.position.setX( -(this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0)/2))\n } else {\n dimension.position.setX(0)\n }\n }\n else if(location == DIMENSION_LOCATION.LEFT_RIGHT){\n let dimOffsetY = UI.eaveHeight + + this.totalHeightFromEaveHeightToTopOfFlyoverBraket() + this.MANAGER.columnAndBeamManager.geo_superiorBeam.height + (UI.span + UI.multiSpan) / 2 * this.utils.tan(UI.patiosPitch);\n dimension.position.setY(dimOffsetY / 2);\n\n let dimBox = this.APP.utils.getObjectBoundingBox(dimension);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n dimBox.min.x = -10000;\n dimBox.max.x = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && c.userData.position?.left)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && c.userData.position?.left)\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setZ(dimBox.max.z + extraDistance);\n }\n else if(location == DIMENSION_LOCATION.RIGHT_LEFT){\n let dimOffsetY = this.dimensionPatiosLeftRight.position.y;\n dimension.position.setY(dimOffsetY);\n\n let dimBox = this.APP.utils.getObjectBoundingBox(this.dimensionPatiosLeftRight);\n let width = dimBox.max.z - dimBox.min.z;\n dimBox.min.z = patiosBox.max.z;\n dimBox.max.z = patiosBox.max.z + width;\n \n dimBox.min.x = -10000;\n dimBox.max.x = 10000;\n\n let objs = this.APP.scene.children.filter(c =>\n (c.userData.type == GEOMETRY_TYPE.EXISTING_ROOF && c.userData.position?.right)\n || (c.userData.type == GEOMETRY_TYPE.EXISTING_WALL && c.userData.position?.right)\n );\n \n for(let i = 0; i < 100; i++){\n let intersectBox = false;\n for(let o of objs){\n let objBox = this.APP.utils.getObjectBoundingBox(o);\n if(dimBox.intersectsBox(objBox)){\n intersectBox = true;\n dimBox.translate(new Vector3(0,0,100))\n }\n }\n \n if(!intersectBox)\n break;\n }\n \n // let boxHelper = new Box3Helper(dimBox);\n // boxHelper.userData = {type: location};\n // this.APP.scene.add(boxHelper);\n\n \n dimension.position.setZ(dimBox.max.z + extraDistance);\n }\n }\n}\n","import { HomeComponent as AppComponent } from \"../../containers/home/home.component\";\nimport { ColumnAndBeamManager } from \"./column-and-beam.manager\";\nimport { RoofManager } from \"./roof.manager\";\nimport { Group, Box3, Vector3, Box3Helper } from \"three\";\nimport { GEOMETRY_CATEGORY, CONFIG, GEOMETRY_TYPE } from \"src/app/app.config\";\nimport { PatiosManager } from \"../patios.manager\";\nimport { Printing2DGeometry } from \"../models\";\nimport { DimensionManager } from \"./dimension.manager\";\nimport {\n EXISTING_BUILDING_CONFIG,\n CUTOUT_ENABLE,\n RAKECUT_TYPE,\n BUILDING_SIDE,\n} from \"src/app/app.constants\";\nimport { environment } from \"src/environments/environment\";\n// import { environment } from 'src/environments/environment';\n\nexport class PatiosGableLRFlyOverManager implements PatiosManager {\n public columnAndBeamManager: ColumnAndBeamManager;\n public roofManager: RoofManager;\n private APP: AppComponent;\n public patiosGroup: Group;\n public boundingBox: Box3;\n private updateEventHandle: any;\n public dimensionManager: DimensionManager;\n private controlsToRegisterEvent: Array;\n public ignoreBayEvent: boolean = false;\n private deferHandle;\n private deferTimeout = EXISTING_BUILDING_CONFIG.CUTOUT_DEFFER_TIME_OUT;\n public patiosWidth: number;\n public patiosLength: number;\n public get cutoutCondition(): boolean {\n return (\n [this.APP.sldSpan, this.APP.sldMultiSpan, this.APP.sldFrontOverhang]\n .map((x) => x.currentValue)\n .reduce((a, b) => a + b, 0) -\n this.APP.sldExistingWidth1.currentValue >=\n EXISTING_BUILDING_CONFIG.CUTOUT_ALLOW\n );\n }\n public get rakecutCondition(): boolean {\n this.patiosWidth =\n this.APP.dialogEditBay.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n this.patiosLength =\n this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue;\n\n return false;\n }\n\n public firstLoad = true;\n\n constructor(app: AppComponent) {\n this.APP = app;\n\n this.patiosGroup = new Group();\n this.patiosGroup.userData = {\n isGroup: true,\n category: GEOMETRY_CATEGORY.PATIOS,\n };\n app.scene.add(this.patiosGroup);\n\n this.roofManager = new RoofManager(app, this);\n this.columnAndBeamManager = new ColumnAndBeamManager(app, this);\n this.dimensionManager = new DimensionManager(app, this);\n\n this.registerEvents();\n }\n\n load(): Promise {\n return Promise.all([\n this.roofManager.optimize(),\n this.columnAndBeamManager.optimize(),\n this.dimensionManager.optimize(),\n ]).then(() => {\n this.roofManager.load();\n this.columnAndBeamManager.load();\n this.dimensionManager.load();\n });\n }\n loadBracket(bracketQuantity: number): void {\n this.columnAndBeamManager.numberOfBracketsBack = bracketQuantity;\n this.columnAndBeamManager.addPostOrBracketBack();\n }\n loadBracketCutout(bracketQuantity: number): void {\n this.columnAndBeamManager.numberOfBracketCutout = bracketQuantity;\n this.columnAndBeamManager.addPostOrBracketBackCutout();\n }\n loadSideGableBracket(bracketQuantity: number): void {}\n getOutlines(): Printing2DGeometry {\n let dimensionOutline = this.dimensionManager.getOutlines();\n return {\n lines: [\n ...this.columnAndBeamManager.getSection().lines,\n ...this.roofManager.getOutLines().lines,\n ...dimensionOutline.lines,\n ],\n texts: dimensionOutline.texts,\n };\n }\n public destroy(): void {\n this.columnAndBeamManager.destroy();\n this.roofManager.destroy();\n this.dimensionManager.destroy();\n this.unRegisterEvent();\n }\n registerEvents() {\n this.updateEventHandle = this.updateDefer.bind(this);\n\n this.controlsToRegisterEvent = [\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sltExistingType,\n this.APP.sltCutOut,\n this.APP.sldFrontOverhang,\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltColourBarge,\n this.APP.sltColourGutter,\n this.APP.sltColourDownpipe,\n this.APP.sltColourRoof,\n this.APP.sldSpan,\n this.APP.sldExistingWallHeight,\n this.APP.sldEaveWidth,\n this.APP.sldFasciaDepth,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.dialogEditBay,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sldBackOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldMultiSpan,\n this.APP.sldFlyOverBracketHeight,\n this.APP.sltColourBeam,\n this.APP.sltColourPost,\n this.APP.sltColourBracket,\n this.APP.sltColourFasciaBracket,\n this.APP.sltRoofThickness,\n this.APP.sltGutterType,\n this.APP.sltLeftCutType,\n this.APP.sldLeftCutVertical,\n this.APP.sldLeftCutHorizontal,\n this.APP.sltRightCutType,\n this.APP.sldRightCutVertical,\n this.APP.sldRightCutHorizontal,\n this.APP.sltBeamLayoutShow,\n this.APP.sltPanelDirection,\n this.APP.sltPanelDirectionShow,\n this.APP.sltExistingRoofPitch,\n this.APP.btnTurnOnPanel,\n ];\n this.controlsToRegisterEvent.forEach((c) => {\n c.addAction(this.updateEventHandle);\n });\n }\n unRegisterEvent() {\n this.controlsToRegisterEvent.forEach((c) =>\n c.removeAction(this.updateEventHandle)\n );\n }\n\n updateDefer(previousValue: number, currentValue: number) {\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES ||\n this.APP.sltLeftCutType.currentValue != RAKECUT_TYPE.NONE ||\n this.APP.sltRightCutType.currentValue != RAKECUT_TYPE.NONE\n ) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => {\n this.update(previousValue, currentValue);\n }, this.deferTimeout);\n } else {\n this.update(previousValue, currentValue);\n }\n }\n\n update(preVal: number, curVal: number) {\n let totalBaySize = this.APP.dialogEditBay.totalBaySize;\n this.patiosWidth =\n totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n this.patiosLength =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue;\n\n let diff = this.APP.sldExistingLength.currentValue - totalBaySize;\n\n let extraWallWidth =\n this.APP.existingWallManager.geo_existingWallW1.width +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n this.patiosGroup.position.setX(\n -diff / 2 -\n this.APP.sldExistingLength2.currentValue -\n extraWallWidth\n );\n } else {\n this.patiosGroup.position.setX(\n -diff / 2 - this.APP.sldExistingLength2.currentValue\n );\n }\n } else {\n this.patiosGroup.position.setX(-diff / 2 - extraWallWidth);\n }\n } else if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n this.patiosGroup.position.setX(\n diff / 2 + this.APP.sldExistingLength2.currentValue + extraWallWidth\n );\n } else {\n this.patiosGroup.position.setX(\n diff / 2 + this.APP.sldExistingLength2.currentValue\n );\n }\n } else {\n this.patiosGroup.position.setX(diff / 2 + extraWallWidth);\n }\n } else {\n this.patiosGroup.position.setX(0);\n }\n\n this.patiosGroup.position.setZ(\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n this.APP.eaveManager.backOverhang -\n (this.columnAndBeamManager.geo_bracket?.width || 0)\n );\n\n Promise.all([\n this.roofManager.load(),\n this.columnAndBeamManager.load(),\n ]).then(() => {\n this.boundingBox = this.getPatiosBox();\n this.dimensionManager.draw();\n });\n }\n public getPatiosBox(): Box3 {\n let left =\n -this.APP.dialogEditBay.totalBaySize / 2 -\n this.APP.sldLeftOverhang.currentValue;\n let right =\n this.APP.dialogEditBay.totalBaySize / 2 +\n this.APP.sldRightOverhang.currentValue;\n let front =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue;\n let back = 0;\n let height = this.APP.sldBuildingHeight.currentValue;\n let extraOffsetZ =\n this.APP.existingWallManager.geo_existingWallL1.width +\n this.APP.eaveManager.backOverhang;\n\n let box = new Box3();\n box = box.expandByPoint(new Vector3(left, 0, front));\n box = box.expandByPoint(new Vector3(right, height, back));\n box.translate(new Vector3(0, 0, -extraOffsetZ));\n\n if (this.APP.sltExistingType.currentValue == 1) {\n let diff =\n (this.APP.sldExistingLength.currentValue -\n this.APP.dialogEditBay.totalBaySize) /\n 2;\n box.translate(new Vector3(-diff, 0, 0));\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n box.translate(new Vector3(this.APP.sldLeftOverhang.currentValue, 0, 0));\n\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n box.translate(\n new Vector3(-this.APP.sldExistingLength2.currentValue, 0, 0)\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 2) {\n let diff =\n (this.APP.sldExistingLength.currentValue -\n this.APP.dialogEditBay.totalBaySize) /\n 2;\n box.translate(new Vector3(diff, 0, 0));\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n box.translate(new Vector3(-this.APP.sldRightOverhang.currentValue, 0, 0));\n\n if (this.APP.sltCutOut.currentValue == 1 && this.cutoutCondition) {\n box.translate(\n new Vector3(this.APP.sldExistingLength2.currentValue, 0, 0)\n );\n }\n } else if (this.APP.sltExistingType.currentValue == 3) {\n box.translate(\n new Vector3(0, 0, -this.APP.sldExistingWidth1.currentValue / 2)\n );\n }\n\n // if (!environment.production) {\n // this.APP.scene.remove(...this.APP.scene.children.filter(o => o.userData.type == 'BOXHELPER'));\n // let boxHelper = new Box3Helper(box);\n // boxHelper.userData = { type: \"BOXHELPER\" };\n // this.APP.scene.add(boxHelper);\n // }\n\n return box;\n }\n}\n","\nimport { Mesh, Vector3, Material, Plane, Group, BufferGeometry, Geometry, BoxBufferGeometry, MeshLambertMaterial, Matrix4, Object3D, LineSegments, LineBasicMaterial, Box3, Box3Helper, Color } from \"three\";\nimport { Util } from \"../utils\";\nimport { GEOMETRY_TYPE, GEOMETRY_CATEGORY } from '../../app.config';\n// import { AppComponent } from \"../../app.component\";\nimport { HomeComponent as AppComponent } from '../../containers/home/home.component';\nimport { GeometryManager } from \"../geometry.manager\";\nimport { MaterialManager } from \"../material.manager\";\nimport { GeometryInfo, Print2DView, ViewType, LineType, Printing2DLine, Printing2DGeometry } from '../models';\nimport { PatiosGableLRFlyOverManager } from '.';\nimport { CSG } from 'three-csg-ts';\nimport { EXISTING_BUILDING_CONFIG, RAKECUT_TYPE, EXISTING_BUILDING_CONFIG as CONST, BUILDING_SIDE, CUTOUT_ENABLE, PANEL_DIRECTION, FIT_FLYOVER_BRAKET_ON_ROOF } from 'src/app/app.constants';\nimport { UI } from \"../ui\";\nimport HighLightBox from \"src/app/models/HighlightBox\";\n\nexport class RoofManager {\n private scene: Group;\n private APP: AppComponent;\n private MANAGER: PatiosGableLRFlyOverManager;\n private material: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private geo_RoofPanel: GeometryInfo;\n private geo_roofPanelBase: GeometryInfo;\n private gutterRakecutLeftInfo: GeometryInfo;\n private gutterRakecutRightInfo: GeometryInfo;\n private geo_roofPanelBargeCappingLeft: GeometryInfo;\n private geo_roofPanelBargeCappingRight: GeometryInfo;\n private geo_roofPanelBargeCappingBack: GeometryInfo;\n private geo_roofPanelBargeCappingFront: GeometryInfo;\n private geo_bargeCutoutLeftHor: GeometryInfo;\n private geo_bargeCutoutRightHor: GeometryInfo;\n private geo_gutterBack: GeometryInfo;\n private zFlashingGeo: GeometryInfo;\n private zFlashingRakecutRightGeo: GeometryInfo;\n private geo_gutterCap: GeometryInfo;\n public ridgeGeo: GeometryInfo;\n\n private geo_rakecutLeft: BoxBufferGeometry;\n private geo_rakecutRight: BoxBufferGeometry;\n private mesh_rakecutLeft: Mesh;\n private mesh_rakecutRight: Mesh;\n private csg_rakecutLeft: CSG;\n private csg_rakecutRight: CSG;\n\n private roofGroupFront: Group;\n private roofGroupBack: Group;\n\n private objectSizeChangedHandle: any;\n\n private totalBaySize: number;\n private extraOffsetZ: number;\n\n private controlsToRegisterEvent2: Array;\n\n private mesh_CutoutLeft: Mesh;\n private csg_cutoutLeft: CSG;\n private mesh_CutoutRight: Mesh;\n private csg_cutoutRight: CSG;\n private geo_cutoutLeft: BoxBufferGeometry;\n private geo_cutoutRight: BoxBufferGeometry;\n\n private geoCutGutter: BoxBufferGeometry;\n private meshCutGutterLeft1: Mesh;\n private csgCutGutterLeft1: CSG;\n private meshCutGutterLeft2: Mesh;\n private csgCutGutterLeft2: CSG;\n\n private meshCutGutterRight1: Mesh;\n private csgCutGutterRight1: CSG;\n private meshCutGutterRight2: Mesh;\n private csgCutGutterRight2: CSG\n \n private roofWidth: number;\n private roofLength: number;\n\n private deferHandle;\n private deferTimeout = EXISTING_BUILDING_CONFIG.CUTOUT_DEFFER_TIME_OUT;\n\n constructor(app: AppComponent, flyOverManager: PatiosGableLRFlyOverManager) {\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n this.APP = app;\n this.MANAGER = flyOverManager;\n this.scene = new Group();\n flyOverManager.patiosGroup.add(this.scene)\n this.material = MaterialManager.Instance().ROOF;\n\n this.registerEvent();\n }\n\n\n public optimize(): Promise {\n return new Promise((resolve) => {\n\n this.geo_RoofPanel = this.geometryManager.getRoofSheetPanel();\n this.geo_RoofPanel.geometry\n .translate(this.geo_RoofPanel.width / 2 + 2, this.geo_RoofPanel.height / 2 -1, this.geo_RoofPanel.length / 2);\n\n this.geo_roofPanelBase = this.geometryManager.getRoofBase();\n this.geo_roofPanelBase.geometry\n .translate(this.geo_roofPanelBase.width / 2,\n this.geo_roofPanelBase.height / 2,\n this.geo_roofPanelBase.length / 2);\n\n this.zFlashingGeo = this.geometryManager.getZFlashing();\n this.zFlashingGeo.geometry.translate(0, -3, 0);\n\n this.zFlashingRakecutRightGeo = this.geometryManager.getZFlashing();\n this.zFlashingRakecutRightGeo.geometry.translate(-this.zFlashingRakecutRightGeo.length, -3, 0);\n\n //Barge capping\n\n this.geo_roofPanelBargeCappingLeft = this.geometryManager.getBarge();\n this.geo_roofPanelBargeCappingLeft.geometry\n .rotateY(Math.PI)\n .translate(this.geo_roofPanelBargeCappingLeft.width / 2 - 3, this.geo_roofPanelBargeCappingLeft.height / 2 - (this.APP.sltDripBarge.currentValue ? 9 : 1), this.geo_roofPanelBargeCappingLeft.length / 2);\n\n this.geo_roofPanelBargeCappingRight = this.geometryManager.getBarge();\n this.geo_roofPanelBargeCappingRight.geometry\n .translate(-this.geo_roofPanelBargeCappingRight.width / 2 + 3, this.geo_roofPanelBargeCappingRight.height / 2 - (this.APP.sltDripBarge.currentValue ? 9 : 1), this.geo_roofPanelBargeCappingRight.length / 2);\n\n this.geo_roofPanelBargeCappingBack = this.geometryManager.getBarge();\n this.geo_roofPanelBargeCappingBack.geometry\n .rotateY(Math.PI / 2)\n .translate(this.geo_roofPanelBargeCappingBack.length / 2, this.geo_roofPanelBargeCappingBack.height / 2 - (this.APP.sltDripBarge.currentValue ? 9 : 1), this.geo_roofPanelBargeCappingBack.width / 2 - 3);\n\n this.geo_roofPanelBargeCappingFront = this.geometryManager.getBarge();\n this.geo_roofPanelBargeCappingFront.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.geo_roofPanelBargeCappingFront.length / 2, this.geo_roofPanelBargeCappingFront.height / 2 - (this.APP.sltDripBarge.currentValue ? 9 : 1), -this.geo_roofPanelBargeCappingFront.width / 2);\n //Gutter\n this.geo_gutterBack = this.geometryManager.getGutter();\n this.geo_gutterBack.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.geo_gutterBack.length / 2, -20, this.geo_gutterBack.width / 2);\n\n this.gutterRakecutLeftInfo = this.geometryManager.getGutter();\n this.gutterRakecutLeftInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(this.gutterRakecutLeftInfo.length / 2, -20, this.gutterRakecutLeftInfo.width / 2);\n \n this.gutterRakecutRightInfo = this.geometryManager.getGutter();\n this.gutterRakecutRightInfo.geometry\n .rotateY(-Math.PI / 2)\n .translate(-this.gutterRakecutRightInfo.length / 2, -20, this.gutterRakecutRightInfo.width / 2);\n\n //Gutter cap\n this.geo_gutterCap = this.geometryManager.getGuterEndCap();\n this.geo_gutterCap.geometry\n .rotateY(-Math.PI / 2)\n .translate(0, -20, this.geo_gutterCap.length / 2);\n\n this.geo_cutoutLeft = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_cutoutLeft.translate(-500, 500, -500);\n this.geo_cutoutRight = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_cutoutRight.translate(500, 500, -500);\n\n this.geo_rakecutLeft = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_rakecutLeft.translate(-500, 500, 500);\n this.geo_rakecutRight = new BoxBufferGeometry(1000, 1000, 1000);\n this.geo_rakecutRight.translate(500, 500, 500);\n\n this.geoCutGutter = new BoxBufferGeometry(500, 10000, 500);\n this.geoCutGutter.translate(0, 0, -250);\n //Barge cutout left\n this.geo_bargeCutoutLeftHor = this.geometryManager.getBarge();\n this.geo_bargeCutoutLeftHor.geometry\n .rotateY(Math.PI / 2)\n .translate(-this.geo_bargeCutoutLeftHor.length / 2, this.geo_bargeCutoutLeftHor.height / 2 - (this.APP.sltDripBarge.currentValue ? 9 : 1), this.geo_bargeCutoutLeftHor.width / 2);\n\n //Barge cutout right\n this.geo_bargeCutoutRightHor = this.geometryManager.getBarge();\n this.geo_bargeCutoutRightHor.geometry\n .rotateY(Math.PI / 2)\n .translate(this.geo_bargeCutoutRightHor.length / 2, this.geo_bargeCutoutRightHor.height / 2 - (this.APP.sltDripBarge.currentValue ? 9 : 1), this.geo_bargeCutoutRightHor.width / 2);\n \n this.ridgeGeo = this.geometryManager.getRidge();\n this.ridgeGeo.geometry.translate(- this.ridgeGeo.width / 2, -this.ridgeGeo.height / 2, 0);\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve) => {\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS));\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.ROOF_PATIOS));\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.SHEET_OUTLINE));\n\n //test\n //this.scene.remove(...this.scene.children.filter(x => x.userData.type == 'HELPER'));\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == 'RAKECUT'));\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == 'CUTGUTTER'));\n this.extraOffsetZ = this.APP.existingWallManager.geo_existingWallL1.width + this.APP.eaveManager.backOverhang;\n this.totalBaySize = this.APP.dialogEditBay.totalBaySize;\n\n this.addRoofFront();\n this.addRoofBack();\n this.addCutout();\n\n let offsetLeft = this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue - this.MANAGER.patiosGroup.position.x;\n let offsetRight = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue + this.MANAGER.patiosGroup.position.x;\n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT){\n let offsetX = this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetRight -= offsetX\n offsetLeft += offsetX\n }\n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT){\n let offsetX = this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetLeft += offsetX\n offsetRight += offsetX\n }\n\n let clipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let clipingPlaneRight = new Plane(new Vector3(-1, 0, 0), offsetRight);\n \n\n this.material.clippingPlanes = [clipingPlaneLeft, clipingPlaneRight];\n MaterialManager.Instance().ROOF_BASE.clippingPlanes = [clipingPlaneLeft, clipingPlaneRight];\n let width = this.totalBaySize + this.APP.sldLeftOverhang.currentValue + this.APP.sldRightOverhang.currentValue;\n this.roofWidth = width;\n this.roofLength = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldBackOverhang.currentValue + this.APP.sldFrontOverhang.currentValue;\n let roofSheetingCount = Math.ceil(width / this.geo_RoofPanel.width);\n let offsetX = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n\n let panelDirectionOfset = 1;\n if(this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.RIGHT_TO_LEFT){\n offsetX = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue - this.geo_RoofPanel.width;\n panelDirectionOfset = -1;\n }\n else if(this.APP.sltPanelDirection.currentValue == PANEL_DIRECTION.LEFT_TO_RIGHT){\n offsetX = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n }\n\n if (this.APP.sltCutOut.currentValue == 1 && this.APP.sltExistingType.currentValue == 1 && this.MANAGER.cutoutCondition) {\n for (let index = 0; index < roofSheetingCount; index++) {\n let last = index == roofSheetingCount - 1;\n\n this.addRoofSheetingFront(offsetX, []);\n this.addRoofSheetingBack(offsetX, [this.csg_cutoutLeft]);\n\n this.addRoofSheetingBaseFront(offsetX, last, []);\n this.addRoofSheetingBaseBack(offsetX, last, [this.csg_cutoutLeft]);\n\n offsetX += this.geo_RoofPanel.width * panelDirectionOfset;\n }\n }\n else if (this.APP.sltCutOut.currentValue == 1 && this.APP.sltExistingType.currentValue == 2 && this.MANAGER.cutoutCondition) {\n for (let index = 0; index < roofSheetingCount; index++) {\n let last = index == roofSheetingCount - 1;\n\n this.addRoofSheetingFront(offsetX, []);\n this.addRoofSheetingBack(offsetX, [this.csg_cutoutRight]);\n\n this.addRoofSheetingBaseFront(offsetX, last, []);\n this.addRoofSheetingBaseBack(offsetX, last, [this.csg_cutoutRight]);\n\n offsetX += this.geo_RoofPanel.width * panelDirectionOfset;\n }\n }\n else if (this.APP.sltCutOut.currentValue == 1 && this.APP.sltExistingType.currentValue == 3 && this.MANAGER.cutoutCondition) {\n for (let index = 0; index < roofSheetingCount; index++) {\n let last = index == roofSheetingCount - 1;\n\n this.addRoofSheetingFront(offsetX, []);\n this.addRoofSheetingBack(offsetX, [this.csg_cutoutLeft, this.csg_cutoutRight]);\n\n this.addRoofSheetingBaseFront(offsetX, last, []);\n this.addRoofSheetingBaseBack(offsetX, last, [this.csg_cutoutLeft, this.csg_cutoutRight]);\n\n offsetX += this.geo_RoofPanel.width * panelDirectionOfset;\n }\n }\n else {\n for (let index = 0; index < roofSheetingCount; index++) {\n let last = index == roofSheetingCount - 1;\n\n this.addRoofSheetingFront(offsetX, null);\n this.addRoofSheetingBack(offsetX, null);\n\n this.addRoofSheetingBaseFront(offsetX, last, []);\n this.addRoofSheetingBaseBack(offsetX, last, []);\n\n offsetX += this.geo_RoofPanel.width * panelDirectionOfset;\n }\n }\n this.addZFlashingFront();\n this.addZFlashingBack();\n\n this.addBargeCappingFront();\n this.addBargeCappingBack();\n\n this.addGutterFront();\n this.addGutterBack();\n\n this.addRidgeCapping();\n\n this.showPanelOutline();\n\n this.scene.visible = UI.showRoof\n\n resolve();\n });\n }\n private totalHeightFromEaveHeightToTopOfExistingRoof(){\n const height = \n this.geometryManager.EAVE.EAVE.height \n + UI.fasciaDepth \n + UI.eaveWidth * this.utils.tan(UI.existingRoofPitch) \n + this.geometryManager.EXISTING_ROOF.EXISTING_ROOF.height / this.utils.cos(UI.existingRoofPitch)\n \n return height\n }\n private totalHeightFromEaveHeightToTopOfFlyoverBraket(){\n const height = this.totalHeightFromEaveHeightToTopOfExistingRoof() + UI.braketHeight - FIT_FLYOVER_BRAKET_ON_ROOF;\n\n return height\n }\n private addCutout() {\n if (this.APP.sltCutOut.currentValue == 1) {\n this.APP.scene.remove(...this.APP.scene.children.filter(x => x.userData.type == 'CUTOUT'));\n\n let offsetX = this.APP.sldExistingLength.currentValue / 2 + this.APP.existingWallManager.geo_existingWallL2.width + 100;\n let offsetY = 0;\n let offsetZ = this.APP.sldExistingWidth1.currentValue / 2 - this.APP.existingWallManager.geo_existingWallL2.width - this.APP.sldBackOverhang.currentValue;\n\n let scaleX = (this.APP.sldExistingLength2.currentValue + 5000) / 1000;\n if (scaleX == 0) scaleX = 1;\n let scaleY = (this.APP.sldExistingWallHeight.currentValue + 5000) / 1000;\n let scaleZ = (this.APP.sldExistingWidth1.currentValue + this.APP.sldBackOverhang.currentValue + 5000) / 1000;\n if (scaleZ == 0) scaleZ = 1;\n\n if (this.APP.sltExistingType.currentValue == 1 || this.APP.sltExistingType.currentValue == 3) {\n this.mesh_CutoutLeft = new Mesh(this.geo_cutoutLeft, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.mesh_CutoutLeft.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: 'CUTOUT' };\n\n this.mesh_CutoutLeft.position.set(-offsetX, offsetY, offsetZ);\n this.mesh_CutoutLeft.scale.set(scaleX, scaleY, scaleZ);\n\n // this.APP.scene.add(this.mesh_CutoutLeft);\n\n this.mesh_CutoutLeft.updateMatrix();\n this.csg_cutoutLeft = CSG.fromMesh(this.mesh_CutoutLeft);\n }\n if (this.APP.sltExistingType.currentValue == 2 || this.APP.sltExistingType.currentValue == 3) {\n this.mesh_CutoutRight = new Mesh(this.geo_cutoutRight, new MeshLambertMaterial({ color: 'red', transparent: true, opacity: 0.5 }));\n this.mesh_CutoutRight.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: 'CUTOUT' };\n\n this.mesh_CutoutRight.position.set(offsetX, offsetY, offsetZ);\n this.mesh_CutoutRight.scale.set(scaleX, scaleY, scaleZ);\n\n // this.APP.scene.add(this.mesh_CutoutRight);\n\n this.mesh_CutoutRight.updateMatrix();\n this.csg_cutoutRight = CSG.fromMesh(this.mesh_CutoutRight);\n }\n }\n }\n\n public getOutLines(): Printing2DGeometry {\n\n let objs = this.roofGroupFront.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL\n || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ).concat(\n ...this.roofGroupBack.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n )\n );\n\n let gutterGroupObjs = this.roofGroupFront.children.filter(o => o.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS)\n .concat(...this.roofGroupBack.children.filter(o => o.userData.type == GEOMETRY_TYPE.GUTTER_PATIOS));\n let gutterObjs: Object3D[] = [];\n for(let group of gutterGroupObjs){\n gutterObjs.push(...group.children);\n }\n objs = [...objs, ...gutterObjs];\n\n let lsGeometries: Printing2DLine[] = [];\n\n let offsetLeft = this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue - this.MANAGER.patiosGroup.position.x;\n let offsetRight = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue + this.MANAGER.patiosGroup.position.x;\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetRight -= offsetX;\n offsetLeft += offsetX;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetLeft += offsetX;\n offsetRight += offsetX;\n }\n let roofClipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let roofClipingPlaneRight = new Plane(new Vector3(-1, 0, 0), offsetRight);\n\n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale((o as Mesh), 60);\n\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n outlineGeo.translate(0, 5000, 0);\n\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL) {\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneRight);\n }\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE) {\n outlineGeo = this.utils.clipOutlineBasePanel(outlineGeo, roofClipingPlaneLeft);\n outlineGeo = this.utils.clipOutlineBasePanel(outlineGeo, roofClipingPlaneRight);\n }\n\n let simplifiedGeo = this.simplifyGeo(outlineGeo);\n lsGeometries.push({\n objectType: o.userData.type,\n vertices: simplifiedGeo.vertices,\n views: o.userData.views\n });\n }\n\n let ridgeCapping = this.scene.children.find(el => el.userData.type === GEOMETRY_TYPE.RIDGE_CAPPING)\n if(ridgeCapping){\n ridgeCapping.children.forEach(el => {\n this.utils.createOutline(el as Mesh, lsGeometries);\n })\n }\n\n lsGeometries.push({\n objectType: GEOMETRY_TYPE.ROOF_COVER,\n vertices: this.makeRoofPolygon(),\n color: this.utils.convertHexColorToRgb(`#${new Color(UI.panelColor).getHexString()}`),\n views: [\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ]\n });\n\n return { lines: lsGeometries, texts: [] };\n }\n makeRoofPolygon() {\n const polygon = this.utils.getRoofCoverPolygonForLRRoof()\n this.MANAGER.patiosGroup.updateWorldMatrix(true, true)\n return polygon.map(el => (el as Vector3).applyMatrix4(this.MANAGER.patiosGroup.matrixWorld).add(new Vector3(this.roofGroupFront.position.x, 0, - UI.existingWidth1 / 2 - this.extraOffsetZ - UI.overhangBack)))\n }\n public showPanelOutline(){\n if(this.APP.sltPanelDirectionShow.currentValue == false)\n return;\n\n let objs = this.roofGroupFront.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n ).concat(\n ...this.roofGroupBack.children.filter(o =>\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL ||\n o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE\n )\n );\n\n let offsetLeft = this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue - this.MANAGER.patiosGroup.position.x;\n let offsetRight = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue + this.MANAGER.patiosGroup.position.x;\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetRight -= offsetX;\n offsetLeft += offsetX;\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n let offsetX =\n this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width +\n 100 -\n (this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n offsetLeft += offsetX;\n offsetRight += offsetX;\n }\n let roofClipingPlaneLeft = new Plane(new Vector3(1, 0, 0), offsetLeft);\n let roofClipingPlaneRight = new Plane(new Vector3(-1, 0, 0), offsetRight);\n \n\n for (let o of objs) {\n let outlineGeo = this.utils.getOutlineGeometryFromMeshNoScale((o as Mesh), 60);\n\n //let outlineBox = new Box3().setFromBufferAttribute(outlineGeo.getAttribute('position') as Buffer);\n\n o.updateWorldMatrix(true, true);\n outlineGeo.applyMatrix4(o.matrixWorld);\n //outlineGeo.translate(0, 1000, 0);\n\n if (o.userData.type == GEOMETRY_TYPE.ROOF_PANEL || o.userData.type == GEOMETRY_TYPE.ROOF_PANEL_BASE) {\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneRight);\n outlineGeo = this.utils.clipOutline(outlineGeo, roofClipingPlaneLeft);\n }\n\n var line = new LineSegments( outlineGeo, MaterialManager.Instance().MESH_OUTLINE );\n line.userData = {type: GEOMETRY_TYPE.SHEET_OUTLINE};\n this.APP.scene.add( line );\n }\n }\n public simplifyGeo(geo: BufferGeometry): Geometry {\n let simplifiedGeo = new Geometry();\n let vertices = geo.getAttribute('position').array;\n for (let i = 0; i < vertices.length; i += 3) {\n simplifiedGeo.vertices.push(new Vector3(vertices[i], vertices[i + 1] - 5000, vertices[i + 2]));\n }\n return simplifiedGeo;\n }\n\n public addRoofFront() {\n this.roofGroupFront = null;\n this.roofGroupFront = new Group();\n this.roofGroupFront.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PATIOS };\n\n let offsetY = this.getRoofOffsetY();\n let offsetZ = -(this.APP.sldExistingWidth1.currentValue / 2 + this.extraOffsetZ) + (UI.span + UI.multiSpan) / 2;\n\n this.roofGroupFront.position.setY(offsetY);\n this.roofGroupFront.position.setZ(offsetZ);\n this.roofGroupFront.rotateX(this.utils.degreesToRadians(UI.patiosPitch));\n\n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT){\n let offsetX = this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n this.roofGroupFront.position.setX(- offsetX)\n }\n\n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT){\n let offsetX = this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n this.roofGroupFront.position.setX(offsetX)\n }\n\n this.scene.add(this.roofGroupFront);\n }\n\n public addRoofBack() {\n this.roofGroupBack = null;\n this.roofGroupBack = new Group();\n this.roofGroupBack.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PATIOS };\n\n let offsetY = this.getRoofOffsetY();\n let offsetZ = -(this.APP.sldExistingWidth1.currentValue / 2 + this.extraOffsetZ) + (UI.span + UI.multiSpan) / 2;\n\n this.roofGroupBack.position.setY(offsetY);\n this.roofGroupBack.position.setZ(offsetZ);\n this.roofGroupBack.rotateX(-this.utils.degreesToRadians(UI.patiosPitch));\n\n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT){\n let offsetX = this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n this.roofGroupBack.position.setX(- offsetX)\n }\n\n if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT){\n let offsetX = this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n this.roofGroupBack.position.setX(offsetX)\n }\n\n this.scene.add(this.roofGroupBack);\n }\n\n public addRoofSheetingFront(offsetX: number, csgObjs: CSG[]) {\n let mesh = new Mesh(this.geo_RoofPanel.geometry, this.material);\n\n let offsetSheet = 0;\n if (this.APP.sltRoofSheetingType.currentValue == 0 || this.APP.sltRoofSheetingType.currentValue == 1) {\n offsetSheet = 30;\n }\n else {\n offsetSheet = 12;\n }\n\n const offsetPitch = this.geo_roofPanelBase.height * this.utils.tan(UI.patiosPitch)\n\n let scaleZ = (((UI.span + UI.multiSpan) / 2 + this.APP.sldFrontOverhang.currentValue) / this.utils.cos(this.APP.sltRoofPitch.currentValue) - offsetPitch) / this.geo_RoofPanel.length;\n\n let offsetY = this.geo_roofPanelBase.height - offsetSheet;\n let offsetZ = 0;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setZ(scaleZ);\n mesh.userData = { \n category: GEOMETRY_CATEGORY.PATIOS, \n type: GEOMETRY_TYPE.ROOF_PANEL, \n views: views,\n dir: UI.panelDirection === PANEL_DIRECTION.LEFT_TO_RIGHT ? \"L-R\" : \"R-L\"\n };\n\n let cutoutCondition = this.APP.sltCutOut.currentValue == 1 && this.APP.sltExistingType.currentValue != 0 && this.APP.sldExistingLength2.currentValue > 0;\n if (cutoutCondition) {\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n mesh.position.set(offsetX + this.MANAGER.patiosGroup.position.x, offsetY, offsetZ + this.roofGroupFront.position.z);\n mesh.updateMatrix();\n let meshResult = mesh.clone();\n\n if (cutoutCondition) {\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n }\n }\n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix));\n meshResult.applyMatrix4(matrixBefore);\n\n this.roofGroupFront.add(meshResult);\n }\n else {\n this.roofGroupFront.add(mesh);\n }\n }\n public addRoofSheetingBack(offsetX: number, csgObjs: CSG[]) {\n let mesh = new Mesh(this.geo_RoofPanel.geometry, this.material);\n\n let offsetSheet = 0;\n if (this.APP.sltRoofSheetingType.currentValue == 0 || this.APP.sltRoofSheetingType.currentValue == 1) {\n offsetSheet = 30;\n }\n else {\n offsetSheet = 12;\n }\n\n const offsetPitch = this.geo_roofPanelBase.height * this.utils.tan(UI.patiosPitch)\n\n let scaleZ = (((UI.span + UI.multiSpan) / 2 + UI.overhangBack) / this.utils.cos(this.APP.sltRoofPitch.currentValue) - offsetPitch) / this.geo_RoofPanel.length;\n\n let offsetY = this.geo_roofPanelBase.height - offsetSheet;\n let offsetZ = - scaleZ * this.geo_RoofPanel.length;;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.setZ(scaleZ);\n mesh.userData = { \n category: GEOMETRY_CATEGORY.PATIOS, \n type: GEOMETRY_TYPE.ROOF_PANEL, \n views: views,\n dir: UI.panelDirection === PANEL_DIRECTION.RIGHT_TO_LEFT ? \"L-R\" : \"R-L\"\n };\n\n let cutoutCondition = this.APP.sltCutOut.currentValue == 1 && this.APP.sltExistingType.currentValue != 0 && this.APP.sldExistingLength2.currentValue > 0;\n if (cutoutCondition) {\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n mesh.position.set(offsetX + this.MANAGER.patiosGroup.position.x, offsetY, offsetZ + this.roofGroupBack.position.z);\n mesh.updateMatrix();\n let meshResult = mesh.clone();\n\n if (cutoutCondition) {\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n }\n }\n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix));\n meshResult.applyMatrix4(matrixBefore);\n\n this.roofGroupBack.add(meshResult);\n }\n else {\n this.roofGroupBack.add(mesh);\n }\n }\n public addRoofSheetingBaseFront(offsetX: number, isLast: boolean, csgObjs: CSG[]) {\n let mesh: Mesh = new Mesh(this.geo_roofPanelBase.geometry, MaterialManager.Instance().ROOF_BASE);\n let offsetZ = 0;\n const offsetPitch = this.geo_roofPanelBase.height * this.utils.tan(UI.patiosPitch)\n let scaleZ = (((UI.span + UI.multiSpan) / 2 + this.APP.sldFrontOverhang.currentValue) / this.utils.cos(this.APP.sltRoofPitch.currentValue) - offsetPitch - 60) / this.geo_roofPanelBase.length;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n mesh.position.set(offsetX, 0, offsetZ);\n mesh.scale.setZ(scaleZ);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PANEL_BASE, views: views };\n if (isLast) {\n mesh.userData.last = true;\n }\n\n\n let cutoutCondition = this.APP.sltCutOut.currentValue == 1 && this.APP.sltExistingType.currentValue != 0 && this.APP.sldExistingLength2.currentValue > 0;\n if (cutoutCondition) {\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n mesh.position.set(offsetX+ this.MANAGER.patiosGroup.position.x, 0, offsetZ + this.roofGroupFront.position.z);\n mesh.updateMatrix();\n\n let meshResult = mesh.clone(); \n\n if (cutoutCondition) {\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n }\n }\n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix));\n meshResult.applyMatrix4(matrixBefore);\n\n this.roofGroupFront.add(meshResult);\n }\n else {\n this.roofGroupFront.add(mesh);\n }\n }\n\n public addRoofSheetingBaseBack(offsetX: number, isLast: boolean, csgObjs: CSG[]) {\n let mesh: Mesh = new Mesh(this.geo_roofPanelBase.geometry, MaterialManager.Instance().ROOF_BASE);\n const offsetPitch = this.geo_roofPanelBase.height * this.utils.tan(UI.patiosPitch)\n let scaleZ = (((UI.span + UI.multiSpan) / 2 + UI.overhangBack) / this.utils.cos(this.APP.sltRoofPitch.currentValue) - offsetPitch - 60) / this.geo_roofPanelBase.length;\n let offsetZ = - scaleZ * this.geo_roofPanelBase.length;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n mesh.position.set(offsetX, 0, offsetZ);\n mesh.scale.setZ(scaleZ);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ROOF_PANEL_BASE, views: views };\n if (isLast) {\n mesh.userData.last = true;\n }\n\n\n let cutoutCondition = this.APP.sltCutOut.currentValue == 1 && this.APP.sltExistingType.currentValue != 0 && this.APP.sldExistingLength2.currentValue > 0;\n if (cutoutCondition) {\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n mesh.position.set(offsetX+ this.MANAGER.patiosGroup.position.x, 0, offsetZ + this.roofGroupBack.position.z);\n mesh.updateMatrix();\n\n let meshResult = mesh.clone(); \n\n if (cutoutCondition) {\n for (let csgObj of csgObjs) {\n meshResult = CSG.toMesh(CSG.fromMesh(meshResult).subtract(csgObj), mesh.matrix);\n }\n }\n meshResult.userData = mesh.userData;\n meshResult.material = mesh.material;\n meshResult.applyMatrix4(new Matrix4().getInverse(mesh.matrix));\n meshResult.applyMatrix4(matrixBefore);\n\n this.roofGroupBack.add(meshResult);\n }\n else {\n this.roofGroupBack.add(mesh);\n }\n }\n\n private addBargeCappingBack() {\n let mesh: Mesh;\n\n let extraWallWidth = this.APP.existingWallManager.geo_existingWallW1.width + EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n let offsetXL1 = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue) + this.APP.sldExistingLength2.currentValue - extraWallWidth;\n let offsetXL2 = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n\n let offsetXR1 = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue - this.APP.sldExistingLength2.currentValue + this.APP.existingWallManager.geo_existingWallW1.width + 100;\n let offsetXR2 = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n\n let offsetZL = 0;\n let offsetZR = 0;\n\n let totalLengthCutOut = UI.existingWidth1 < (UI.span + UI.multiSpan) / 2 ? UI.existingWidth1 : (UI.span + UI.multiSpan) / 2;\n\n let scaleCutoutVer = this.utils.getHypotenuseByCos(totalLengthCutOut + this.geo_roofPanelBargeCappingLeft.width, UI.patiosPitch) / this.geo_roofPanelBargeCappingLeft.length;\n\n let roofBackLength = (UI.span + UI.multiSpan) / 2 + UI.overhangBack;\n let bargeLeftLength = roofBackLength;\n let bargeRightLength = roofBackLength;\n\n let angleLength = roofBackLength / this.utils.cos(UI.patiosPitch);\n\n let offsetY = 0;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n let isShowLeftBarge = true;\n let isShowRightBarge = true;\n\n const offsetPitch = this.geo_roofPanelBase.height * this.utils.tan(UI.patiosPitch)\n let scaleZLeft = (this.utils.getHypotenuseByCos(bargeLeftLength, this.APP.sltRoofPitch.currentValue) - offsetPitch) / this.geo_roofPanelBargeCappingLeft.length;\n let scaleZRight = (this.utils.getHypotenuseByCos(bargeRightLength, this.APP.sltRoofPitch.currentValue) - offsetPitch) / this.geo_roofPanelBargeCappingRight.length;\n\n let fitScale = this.geo_roofPanelBargeCappingLeft.height * this.utils.tan(UI.patiosPitch) / this.geo_roofPanelBargeCappingLeft.length;\n\n //left\n if(isShowLeftBarge){\n mesh = new Mesh(this.geo_roofPanelBargeCappingLeft.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXL2, offsetY, offsetZL - this.geo_roofPanelBargeCappingLeft.length * scaleZLeft);\n mesh.scale.setZ(scaleZLeft + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupBack.add(mesh);\n }\n\n //right\n if(isShowRightBarge){\n mesh = new Mesh(this.geo_roofPanelBargeCappingRight.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXR2, offsetY, offsetZR - this.geo_roofPanelBargeCappingRight.length * scaleZRight);\n mesh.scale.setZ(scaleZRight + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupBack.add(mesh);\n }\n }\n\n private addBargeCappingFront() {\n let mesh: Mesh;\n let extraWallWidth = this.APP.existingWallManager.geo_existingWallW1.width + EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n\n let offsetXL2 = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n let offsetXR2 = this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue;\n\n let offsetZL = 0;\n let offsetZR = 0;\n\n let roofFrontLength = (UI.span + UI.multiSpan) / 2 + UI.overhangFront;\n let offsetY = 0;\n let bargeLeftLength = roofFrontLength;\n let bargeRightLength = roofFrontLength;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n const offsetPitch = this.geo_roofPanelBase.height * this.utils.tan(UI.patiosPitch)\n\n let scaleZLeft = (this.utils.getHypotenuseByCos(bargeLeftLength, this.APP.sltRoofPitch.currentValue) - offsetPitch) / this.geo_roofPanelBargeCappingLeft.length;\n let scaleZRight = (this.utils.getHypotenuseByCos(bargeRightLength, this.APP.sltRoofPitch.currentValue) - offsetPitch) / this.geo_roofPanelBargeCappingLeft.length;\n\n\n let fitScale = this.geo_roofPanelBargeCappingLeft.height * this.utils.tan(UI.patiosPitch) / this.geo_roofPanelBargeCappingLeft.length;\n //left\n mesh = new Mesh(this.geo_roofPanelBargeCappingLeft.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXL2, offsetY, offsetZL - this.geo_roofPanelBargeCappingLeft.height * this.utils.tan(UI.patiosPitch));\n mesh.scale.setZ(scaleZLeft + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupFront.add(mesh);\n\n //right\n mesh = new Mesh(this.geo_roofPanelBargeCappingRight.geometry, MaterialManager.Instance().BARGE);\n mesh.position.set(offsetXR2, offsetY, offsetZR - this.geo_roofPanelBargeCappingLeft.height * this.utils.tan(UI.patiosPitch));\n mesh.scale.setZ(scaleZRight + fitScale);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n this.roofGroupFront.add(mesh);\n\n // //back\n // mesh = new Mesh(this.geo_roofPanelBargeCappingBack.geometry, MaterialManager.Instance().BARGE);\n // mesh.position.setX(offsetXB);\n // mesh.scale.setX(bargeBackLength/this.geo_roofPanelBargeCappingBack.length);\n // mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: this.APP.sltDripBarge.currentValue ? GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING : GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING, views: views };\n // this.roofGroupFront.add(mesh);\n }\n public addGutterFront() {\n\n let offsetXL = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n let offsetY = this.geo_roofPanelBase.height - 25;\n let offsetZ = ((UI.span + UI.multiSpan) / 2 + UI.overhangFront\n - CONST.GUTTER_ROOF_OFFSET_Z) / this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n let gutterLength = this.roofWidth;\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n let gutterGroup = this.utils.createGutterGroup(this.geo_gutterBack, this.geo_gutterCap,\n gutterLength, new Vector3(offsetXL, offsetY, offsetZ), new Vector3(-this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue), 0, 0),\n views, 1, true, true);\n this.roofGroupFront.add(gutterGroup); \n }\n\n public addGutterBack() {\n let offsetX = (this.totalBaySize / 2 + UI.overhangRight);\n let offsetY = this.geo_roofPanelBase.height - 25;\n let gutterLength = (this.totalBaySize + this.APP.sldLeftOverhang.currentValue + this.APP.sldRightOverhang.currentValue);\n let extraWallWidth = this.APP.existingWallManager.geo_existingWallW1.width + EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n\n //cutout\n if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.MANAGER.cutoutCondition) {\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n if(this.APP.sldExistingWidth2.currentValue > 0){\n gutterLength -= this.APP.sldExistingLength2.currentValue;\n }\n else{\n gutterLength -= (this.APP.sldExistingLength2.currentValue - extraWallWidth);\n }\n gutterLength -= this.APP.sldLeftOverhang.currentValue;\n }\n else if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n if(this.APP.sldExistingWidth2.currentValue > 0){\n offsetX -= this.APP.sldExistingLength2.currentValue;\n gutterLength -= this.APP.sldExistingLength2.currentValue;\n }\n else{\n offsetX -= (this.APP.sldExistingLength2.currentValue - extraWallWidth);\n gutterLength -= (this.APP.sldExistingLength2.currentValue - extraWallWidth);\n }\n offsetX -= this.APP.sldRightOverhang.currentValue;\n gutterLength -= this.APP.sldRightOverhang.currentValue;\n }\n else if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n offsetX -= ((this.totalBaySize - (this.APP.sldExistingLength.currentValue + this.APP.existingWallManager.geo_existingWallW1.width * 2)) / 2 - EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK);\n gutterLength = this.APP.sldExistingLength.currentValue + extraWallWidth *2;\n }\n }\n\n\n let views: Print2DView[] = [\n { viewType: ViewType.FRONT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS },\n { viewType: ViewType.PLAN, lineType: LineType.CONTINOUS }\n ];\n\n let offsetZ = -((UI.span + UI.multiSpan) / 2 + UI.overhangBack\n - CONST.GUTTER_ROOF_OFFSET_Z) / this.utils.cos(this.APP.sltRoofPitch.currentValue);\n\n //back\n let gutterGroup = this.utils.createGutterGroup(this.geo_gutterBack, this.geo_gutterCap, gutterLength,\n new Vector3(offsetX, offsetY, offsetZ), new Vector3(this.utils.degreesToRadians(this.APP.sltRoofPitch.currentValue), Math.PI, 0), views, 1, true, true);\n\n this.roofGroupBack.add(gutterGroup);\n }\n\n public addRidgeCapping(){\n this.scene.remove(...this.scene.children.filter(x => x.userData.type == GEOMETRY_TYPE.RIDGE_CAPPING));\n\n let ridgeFront = this.createRidgeCapping();\n ridgeFront.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.RIDGE_CAPPING};\n const height = this.getRoofOffsetY() + \n this.geo_roofPanelBase.height / this.utils.cos(this.APP.sltRoofPitch.currentValue) + \n this.geo_RoofPanel.height / this.utils.cos(this.APP.sltRoofPitch.currentValue) - \n (this.APP.sltRoofSheetingType.currentValue == 0 || this.APP.sltRoofSheetingType.currentValue == 1 ? 20 : 10);\n \n let offsetX = (UI.overhangRight - UI.overhangLeft) / 2\n if(UI.existingType == BUILDING_SIDE.RIGHT){\n offsetX += - this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width - 100 + ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n }\n if(UI.existingType == BUILDING_SIDE.LEFT){\n offsetX += this.APP.geometryManager.EXISTING_WALL.EXISTING_WALL.width + 100 - ( this.MANAGER.columnAndBeamManager.geo_bracket?.width || 0);\n }\n \n const ridgeLength = this.totalBaySize + this.APP.sldLeftOverhang.currentValue + this.APP.sldRightOverhang.currentValue;\n ridgeFront.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.RIDGE_CAPPING, length: ridgeLength, views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }]};\n ridgeFront.scale.setZ(ridgeLength / this.ridgeGeo.length);\n ridgeFront.rotation.set(0, Math.PI / 2, 0)\n ridgeFront.position.set( offsetX, height, ( UI.span + UI.multiSpan ) / 2 - UI.existingWidth1 / 2 - this.extraOffsetZ);\n this.scene.add(ridgeFront)\n }\n public createRidgeCapping(){\n let leftCap = new Mesh(this.ridgeGeo.geometry, MaterialManager.Instance().RIDGE_CAPPING);\n let rightCap = new Mesh(this.ridgeGeo.geometry, MaterialManager.Instance().RIDGE_CAPPING);\n \n rightCap.rotateY(Math.PI)\n \n leftCap.rotateZ(this.utils.degreesToRadians(UI.patiosPitch))\n rightCap.rotateZ(this.utils.degreesToRadians(UI.patiosPitch))\n \n leftCap.userData = {views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }]}\n rightCap.userData = {views: [{ viewType: ViewType.LEFT, lineType: LineType.CONTINOUS },{ viewType: ViewType.RIGHT, lineType: LineType.CONTINOUS }]}\n \n return new Group().add(leftCap, rightCap)\n }\n\n public addZFlashingFront() {\n let offsetX = -(this.totalBaySize / 2 + this.APP.sldLeftOverhang.currentValue);\n let offsetY = this.geo_roofPanelBase.height - 25;\n const offsetZ = (UI.overhangFront\n + (UI.span + UI.multiSpan) / 2\n ) / this.utils.cos(UI.patiosPitch);\n let zFlashingLength = this.roofWidth;\n let scaleX = zFlashingLength / this.zFlashingGeo.length;\n \n let mesh = new Mesh(this.zFlashingGeo.geometry, MaterialManager.Instance().ZFLASHING);\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.set(scaleX, 1, 1);\n\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ZFLASHING, scale: mesh.scale };\n this.roofGroupFront.add(mesh);\n }\n public addZFlashingBack() {\n let offsetX = (this.totalBaySize / 2 + this.APP.sldRightOverhang.currentValue);\n let offsetY = this.geo_roofPanelBase.height - 25;\n\n let scaleX = (this.totalBaySize + this.APP.sldLeftOverhang.currentValue + this.APP.sldRightOverhang.currentValue) / this.zFlashingGeo.length;\n let flashingLength = this.totalBaySize + this.APP.sldLeftOverhang.currentValue + this.APP.sldRightOverhang.currentValue;\n let extraWallWidth = this.APP.existingWallManager.geo_existingWallW1.width + EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n\n let cutoutLength = (this.totalBaySize - (UI.existingLength1 + UI.existingWallW1.width * 2)) / 2\n\n //cutout\n if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES && this.MANAGER.cutoutCondition) {\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT) {\n if(this.APP.sldExistingWidth2.currentValue > 0){\n flashingLength -= this.APP.sldExistingLength2.currentValue;\n }\n else{\n flashingLength -= (this.APP.sldExistingLength2.currentValue - extraWallWidth);\n }\n flashingLength -= this.APP.sldLeftOverhang.currentValue;\n }\n else if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT) {\n if(this.APP.sldExistingWidth2.currentValue > 0){\n offsetX -= this.APP.sldExistingLength2.currentValue;\n flashingLength -= this.APP.sldExistingLength2.currentValue;\n }\n else{\n offsetX -= (this.APP.sldExistingLength2.currentValue - extraWallWidth);\n flashingLength -= (this.APP.sldExistingLength2.currentValue - extraWallWidth);\n }\n offsetX -= this.APP.sldRightOverhang.currentValue;\n flashingLength -= this.APP.sldRightOverhang.currentValue;\n }\n else if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n offsetX -= (cutoutLength - EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK);\n flashingLength = this.APP.sldExistingLength.currentValue + this.APP.existingWallManager.geo_existingWallW1.width * 2 + EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK *2;\n }\n }\n\n scaleX = flashingLength/this.zFlashingGeo.length;\n\n const offsetZ = -(UI.overhangBack + (UI.span + UI.multiSpan) / 2) / this.utils.cos(UI.patiosPitch);\n\n let mesh = new Mesh(this.zFlashingGeo.geometry, MaterialManager.Instance().ZFLASHING);\n mesh.position.set(offsetX, offsetY, offsetZ);\n mesh.scale.set(scaleX, 1, 1);\n mesh.userData = { category: GEOMETRY_CATEGORY.PATIOS, type: GEOMETRY_TYPE.ZFLASHING, scale: mesh.scale };\n mesh.rotateY(Math.PI)\n this.roofGroupBack.add(mesh);\n }\n\n public getRoofOffsetY() {\n return UI.eaveHeight\n + this.totalHeightFromEaveHeightToTopOfFlyoverBraket()\n + this.geometryManager.getBeam().height\n + this.utils.tan(UI.patiosPitch) * ((UI.span + UI.multiSpan) / 2);\n }\n public destroy(): void {\n this.unregisterEvent();\n }\n private registerEvent(): void {\n this.objectSizeChangedHandle = this.objectSizeChanged.bind(this);\n\n //this.controlsToRegisterEvent.forEach(c => c.addAction(this.eventHandleId));\n\n this.controlsToRegisterEvent2 = [\n this.APP.sltRoofSheetingType,\n this.APP.sltRoofThickness,\n this.APP.sltBargeType,\n this.APP.sltDripBarge,\n this.APP.sltGutterType,\n this.APP.sltRoofPitch\n ];\n this.controlsToRegisterEvent2.forEach(c => c.addAction(this.objectSizeChangedHandle));\n }\n private unregisterEvent(): void {\n //this.controlsToRegisterEvent.forEach(c => c.removeAction(this.eventHandleId));\n //this.controlsToRegisterEvent = undefined;\n\n this.controlsToRegisterEvent2.forEach(c => c.removeAction(this.objectSizeChangedHandle));\n this.controlsToRegisterEvent2 = undefined;\n }\n private objectSizeChanged() {\n this.optimize().then(() => { this.load() });\n }\n public uiChanged(): void {\n this.load();\n }\n uiCHangedDefer() {\n if (this.APP.sltCutOut.currentValue == 1) {\n if (this.deferHandle) {\n clearTimeout(this.deferHandle);\n }\n this.deferHandle = setTimeout(() => { this.load() }, this.deferTimeout);\n }\n else {\n this.load();\n }\n }\n}\n","import {\n BufferGeometry,\n Vector3,\n PlaneBufferGeometry,\n BoxBufferGeometry,\n} from \"three\";\nimport { environment as env } from \"src/environments/environment\";\nimport { STLLoader } from \"three/examples/jsm/loaders/STLLoader\";\nimport { Util } from \"../core/utils\";\nimport { GeometryInfo } from \"./models\";\nimport { HomeComponent } from \"../containers/home/home.component\";\nimport { EXISTING_BUILDING_CONFIG } from \"../app.constants\";\nimport { UI } from \"./ui\";\nimport _ from \"lodash\"\n\nexport class GeometryManager {\n APP: HomeComponent;\n private constructor() {\n this.utils = new Util();\n this.loader = new STLLoader();\n }\n public init(app: HomeComponent) {\n this.APP = app;\n }\n private static instance: GeometryManager;\n private loader: STLLoader;\n\n private utils: Util;\n\n public EXISTING_ROOF: {\n EXISTING_ROOF: GeometryInfo;\n } = {\n EXISTING_ROOF: new GeometryInfo(),\n };\n\n public EXISTING_WALL: {\n EXISTING_WALL: GeometryInfo;\n } = {\n EXISTING_WALL: new GeometryInfo(),\n };\n\n public FASCIA: {\n FASCIA: GeometryInfo;\n } = {\n FASCIA: new GeometryInfo(),\n };\n public EAVE: {\n EAVE: GeometryInfo;\n } = {\n EAVE: new GeometryInfo(),\n };\n\n public SUPERIOR_BEAM: {\n S65x110: GeometryInfo;\n S65x110_JOINT: GeometryInfo;\n S65x110_ENDCAP: GeometryInfo;\n S65x160: GeometryInfo;\n S65x160_JOINT: GeometryInfo;\n S65x160_ENDCAP: GeometryInfo;\n S65x210: GeometryInfo;\n S65x210_JOINT: GeometryInfo;\n S65x210_ENDCAP: GeometryInfo;\n S65x260: GeometryInfo;\n S65x260_JOINT: GeometryInfo;\n S65x260_ENDCAP: GeometryInfo;\n } = {\n S65x110: new GeometryInfo(),\n S65x110_JOINT: new GeometryInfo(),\n S65x110_ENDCAP: new GeometryInfo(),\n S65x160: new GeometryInfo(),\n S65x160_JOINT: new GeometryInfo(),\n S65x160_ENDCAP: new GeometryInfo(),\n S65x210: new GeometryInfo(),\n S65x210_JOINT: new GeometryInfo(),\n S65x210_ENDCAP: new GeometryInfo(),\n S65x260: new GeometryInfo(),\n S65x260_JOINT: new GeometryInfo(),\n S65x260_ENDCAP: new GeometryInfo(),\n };\n public TIMBER_BEAM: {\n S140x45: GeometryInfo;\n S190x45: GeometryInfo;\n S150x50: GeometryInfo;\n S200x50: GeometryInfo;\n S150x75: GeometryInfo;\n S200x75: GeometryInfo;\n S250x75: GeometryInfo;\n S150x50_ENDCAP: GeometryInfo;\n } = {\n S140x45: new GeometryInfo(),\n S190x45: new GeometryInfo(),\n S150x50: new GeometryInfo(),\n S200x50: new GeometryInfo(),\n S150x75: new GeometryInfo(),\n S200x75: new GeometryInfo(),\n S250x75: new GeometryInfo(),\n S150x50_ENDCAP: new GeometryInfo(),\n };\n\n public RidgeCapping: {\n // S_Ridge_100: GeometryInfo;\n // S_Ridge_125: GeometryInfo;\n // S_Ridge_150: GeometryInfo;\n // S_Ridge_200: GeometryInfo;\n // S_Ridge_225: GeometryInfo;\n // S_Ridge_250: GeometryInfo;\n S_Ridge_Custom: GeometryInfo;\n } = {\n S_Ridge_Custom: new GeometryInfo()\n };\n\n public SUPERIOR_POST: {\n S65x65: GeometryInfo;\n S90x90: GeometryInfo;\n TIMBER: GeometryInfo; // 150\n CENTER_POST_TIMBER: GeometryInfo;\n } = {\n S65x65: new GeometryInfo(),\n S90x90: new GeometryInfo(),\n TIMBER: new GeometryInfo(),\n CENTER_POST_TIMBER: new GeometryInfo(),\n };\n public FLY_OVER_BRACKET: {\n S65x3: GeometryInfo;\n } = {\n S65x3: new GeometryInfo(),\n };\n public MONO_PANEL: {\n S50MM: GeometryInfo;\n S50MM_BASE: GeometryInfo;\n S75MM: GeometryInfo;\n S75MM_BASE: GeometryInfo;\n S100MM: GeometryInfo;\n S100MM_BASE: GeometryInfo;\n S125MM: GeometryInfo;\n S125MM_BASE: GeometryInfo;\n S150MM: GeometryInfo;\n S150MM_BASE: GeometryInfo;\n } = {\n S50MM: new GeometryInfo(),\n S50MM_BASE: new GeometryInfo(),\n S75MM: new GeometryInfo(),\n S75MM_BASE: new GeometryInfo(),\n S100MM: new GeometryInfo(),\n S100MM_BASE: new GeometryInfo(),\n S125MM: new GeometryInfo(),\n S125MM_BASE: new GeometryInfo(),\n S150MM: new GeometryInfo(),\n S150MM_BASE: new GeometryInfo(),\n };\n\n public CORRO_PANEL: {\n S50MM: GeometryInfo;\n S50MM_BASE: GeometryInfo;\n S75MM: GeometryInfo;\n S75MM_BASE: GeometryInfo;\n S100MM: GeometryInfo;\n S100MM_BASE: GeometryInfo;\n S125MM: GeometryInfo;\n S125MM_BASE: GeometryInfo;\n S150MM: GeometryInfo;\n S150MM_BASE: GeometryInfo;\n } = {\n S50MM: new GeometryInfo(),\n S50MM_BASE: new GeometryInfo(),\n S75MM: new GeometryInfo(),\n S75MM_BASE: new GeometryInfo(),\n S100MM: new GeometryInfo(),\n S100MM_BASE: new GeometryInfo(),\n S125MM: new GeometryInfo(),\n S125MM_BASE: new GeometryInfo(),\n S150MM: new GeometryInfo(),\n S150MM_BASE: new GeometryInfo(),\n };\n\n public UPSTAND_BRAKET = {\n BRAKET_1: new GeometryInfo(),\n BRAKET_2: new GeometryInfo(),\n };\n\n public MONO_PANEL_BARGE_CAPPING: {\n S50MM: GeometryInfo;\n S75MM: GeometryInfo;\n S100MM: GeometryInfo;\n S125MM: GeometryInfo;\n S150MM: GeometryInfo;\n } = {\n S50MM: new GeometryInfo(),\n S75MM: new GeometryInfo(),\n S100MM: new GeometryInfo(),\n S125MM: new GeometryInfo(),\n S150MM: new GeometryInfo(),\n };\n\n public CORRO_PANEL_BARGE_CAPPING: {\n S50MM: GeometryInfo;\n S75MM: GeometryInfo;\n S100MM: GeometryInfo;\n S125MM: GeometryInfo;\n S150MM: GeometryInfo;\n } = {\n S50MM: new GeometryInfo(),\n S75MM: new GeometryInfo(),\n S100MM: new GeometryInfo(),\n S125MM: new GeometryInfo(),\n S150MM: new GeometryInfo(),\n };\n\n public MONO_PANEL_DRIP_BARGE_CAPPING: {\n S50MM: GeometryInfo;\n S75MM: GeometryInfo;\n S100MM: GeometryInfo;\n S125MM: GeometryInfo;\n S150MM: GeometryInfo;\n } = {\n S50MM: new GeometryInfo(),\n S75MM: new GeometryInfo(),\n S100MM: new GeometryInfo(),\n S125MM: new GeometryInfo(),\n S150MM: new GeometryInfo(),\n };\n\n public CORRO_PANEL_DRIP_BARGE_CAPPING: {\n S50MM: GeometryInfo;\n S75MM: GeometryInfo;\n S100MM: GeometryInfo;\n S125MM: GeometryInfo;\n S150MM: GeometryInfo;\n } = {\n S50MM: new GeometryInfo(),\n S75MM: new GeometryInfo(),\n S100MM: new GeometryInfo(),\n S125MM: new GeometryInfo(),\n S150MM: new GeometryInfo(),\n };\n\n public MONO_PANEL_RECIEVER_CHANEL: {\n S50MM: GeometryInfo;\n S75MM: GeometryInfo;\n S100MM: GeometryInfo;\n S125MM: GeometryInfo;\n S150MM: GeometryInfo;\n } = {\n S50MM: new GeometryInfo(),\n S75MM: new GeometryInfo(),\n S100MM: new GeometryInfo(),\n S125MM: new GeometryInfo(),\n S150MM: new GeometryInfo(),\n };\n public CORRO_PANEL_RECIEVER_CHANEL: {\n S50MM: GeometryInfo;\n S75MM: GeometryInfo;\n S100MM: GeometryInfo;\n S125MM: GeometryInfo;\n S150MM: GeometryInfo;\n } = {\n S50MM: new GeometryInfo(),\n S75MM: new GeometryInfo(),\n S100MM: new GeometryInfo(),\n S125MM: new GeometryInfo(),\n S150MM: new GeometryInfo(),\n };\n\n public GUTTER: {\n SQUARE_LINE: GeometryInfo;\n SQUARE_LINE_END_CAP: GeometryInfo;\n QUAD_150: GeometryInfo;\n QUAD_150_END_CAP: GeometryInfo;\n } = {\n SQUARE_LINE: new GeometryInfo(),\n SQUARE_LINE_END_CAP: new GeometryInfo(),\n QUAD_150: new GeometryInfo(),\n QUAD_150_END_CAP: new GeometryInfo(),\n };\n public DOWNPIPE: {\n PIPE_S90MM: GeometryInfo;\n L_S90MM: GeometryInfo;\n } = {\n PIPE_S90MM: undefined,\n L_S90MM: undefined,\n };\n\n public Z_FlASHING: {\n S50: GeometryInfo;\n S75: GeometryInfo;\n S100: GeometryInfo;\n S125: GeometryInfo;\n S150: GeometryInfo;\n } = {\n S50: new GeometryInfo(),\n S75: new GeometryInfo(),\n S100: new GeometryInfo(),\n S125: new GeometryInfo(),\n S150: new GeometryInfo(),\n };\n\n public DIMENSION = {\n LINE: new GeometryInfo(new PlaneBufferGeometry(1000, 15), 15, 1, 1000),\n CAP: new GeometryInfo(new PlaneBufferGeometry(15, 200), 200, 1, 15),\n };\n\n public UI_CONTROL = {\n LINE: new GeometryInfo(new PlaneBufferGeometry(1000, 30), 15, 1, 1000),\n };\n\n static Instance(): GeometryManager {\n if (!GeometryManager.instance) {\n GeometryManager.instance = new GeometryManager();\n }\n return GeometryManager.instance;\n }\n\n public loadAll(): Promise {\n return Promise.all([\n this.loadExistingRoof(),\n this.loadExistingWall(),\n this.loadFascia(),\n this.loadEave(),\n this.loadSuperiorBeam(),\n this.loadBeamJoint(),\n this.loadRidgeCapping(),\n this.loadSuperiorPost(),\n this.loadFlyOverBracket(),\n this.loadMonoPanel(),\n this.loadCorroPanel(),\n this.loadMonoPanelBargeCapping(),\n this.loadCorroPanelBargeCapping(),\n this.loadMonoPanelDripBargeCapping(),\n this.loadCorroPanelDripBargeCapping(),\n this.loadGutter(),\n this.loadMonoRecieverChanel(),\n this.loadCorroRecieverChanel(),\n this.loadDownPipe(),\n this.loadZFlashing(),\n this.loadBraket(),\n ]);\n }\n\n private downloadFile(fileName: string): Promise {\n return new Promise((resolve, reject) => {\n this.loader.load(\n env.modelBaseUrl + \"/assets/models/\" + fileName,\n (geometry) => {\n geometry.center();\n resolve(geometry);\n }\n );\n });\n }\n private downloadFileEx(\n fileName: string,\n vWidth: Vector3,\n vHeight: Vector3,\n vLength: Vector3,\n name: string = \"\"\n ): Promise {\n return new Promise((resolve, reject) => {\n this.loader.load(\n env.modelBaseUrl + \"/assets/models/\" + fileName,\n (geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(geometry, vWidth);\n const height = this.utils.getGeometryLength(geometry, vHeight);\n const length = this.utils.getGeometryLength(geometry, vLength);\n let object = new GeometryInfo(geometry, width, height, length, name);\n resolve(object);\n }\n );\n });\n }\n public loadExistingRoof(): Promise {\n // return this.downloadFile('existing_roof_left.stl')\n // .then((geometry) => {\n // geometry.center();\n // let width = this.utils.getGeometryLength(geometry, new Vector3(1,0,0));\n // let height = this.utils.getGeometryLength(geometry, new Vector3(0,1,0));\n // let length = this.utils.getGeometryLength(geometry, new Vector3(0,0,1));\n // this.EXISTING_ROOF.LEFT = new GeometryInfo(geometry, width, height, length);\n // return this.downloadFile('existing_roof_right.stl');\n // })\n // .then((geometry) => {\n // geometry.center();\n // let width = this.utils.getGeometryLength(geometry, new Vector3(0,0,1));\n // let height = this.utils.getGeometryLength(geometry, new Vector3(0,1,0));\n // let length = this.utils.getGeometryLength(geometry, new Vector3(1,0,0));\n // this.EXISTING_ROOF.RIGHT = new GeometryInfo(geometry, width, height, length);\n // })\n\n // return this.downloadFile('existing_roof.stl')\n // .then((geometry) => {\n // geometry.center();\n // let width = this.utils.getGeometryLength(geometry, new Vector3(1,0,0));\n // let height = this.utils.getGeometryLength(geometry, new Vector3(0,1,0));\n // let length = this.utils.getGeometryLength(geometry, new Vector3(0,0,1));\n // this.EXISTING_ROOF.LEFT = new GeometryInfo(geometry, width, height, length);\n // this.EXISTING_ROOF.RIGHT = new GeometryInfo(geometry.clone().rotateY(-Math.PI/2), width, height, length);\n // //return this.downloadFile('existing_roof_right.stl');\n // })\n\n return new Promise((resolve, reject) => {\n const geometry = new BoxBufferGeometry(3000, 20, 1800);\n\n this.EXISTING_ROOF.EXISTING_ROOF = new GeometryInfo(\n geometry,\n 1800,\n 20,\n 3000\n );\n // this.EXISTING_ROOF.RIGHT = new GeometryInfo(geometry, 1800, 20, 3000);\n resolve(geometry);\n });\n }\n public loadExistingWall(): Promise {\n // return this.downloadFile('eave_wall.stl')\n // .then((geometry) => {\n // geometry.center();\n\n // let width = this.utils.getGeometryLength(geometry, new Vector3(1,0,0));\n // let height = this.utils.getGeometryLength(geometry, new Vector3(0,1,0));\n // let length = this.utils.getGeometryLength(geometry, new Vector3(0,0,1));\n // this.EXISTING_WALL.EXISTING_WALL = new GeometryInfo(geometry, width, height, length);\n // })\n return new Promise((resolve, reject) => {\n const geometry = new BoxBufferGeometry(1000, 1000, 190);\n this.EXISTING_WALL.EXISTING_WALL = new GeometryInfo(\n geometry,\n 190,\n 1000,\n 1000\n );\n resolve(geometry);\n });\n }\n public loadEave(): Promise {\n return this.downloadFile(\"fascia_width.stl\").then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.EAVE.EAVE = new GeometryInfo(geometry, width, height, length);\n });\n }\n public loadFascia(): Promise {\n return this.downloadFile(\"fascia_depth.stl\").then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.FASCIA.FASCIA = new GeometryInfo(geometry, width, height, length);\n });\n }\n public loadRidgeCapping(): Promise {\n let vW = new Vector3(1, 0, 0);\n let vH = new Vector3(0, 1, 0);\n let vL = new Vector3(0, 0, 1);\n return Promise.all([\n // this.downloadFileEx(\"Ridge Capping 10 Deg (3D).stl\", vW, vH, vL).then(\n // (g) => {\n // this.RidgeCapping.S_Ridge_100 = g;\n // }\n // ),\n // this.downloadFileEx(\"Ridge Capping 12.5 Deg (3D).stl\", vW, vH, vL).then(\n // (g) => {\n // this.RidgeCapping.S_Ridge_125 = g;\n // }\n // ),\n // this.downloadFileEx(\"Ridge Capping 15 Deg (3D).stl\", vW, vH, vL).then(\n // (g) => {\n // this.RidgeCapping.S_Ridge_150 = g;\n // }\n // ),\n // this.downloadFileEx(\"Ridge Capping 20 Deg (3D).stl\", vW, vH, vL).then(\n // (g) => {\n // this.RidgeCapping.S_Ridge_200 = g;\n // }\n // ),\n // this.downloadFileEx(\"Ridge Capping 22.5 Deg (3D).stl\", vW, vH, vL).then(\n // (g) => {\n // this.RidgeCapping.S_Ridge_225 = g;\n // }\n // ),\n // this.downloadFileEx(\"Ridge Capping 25 Deg (3D).stl\", vW, vH, vL).then(\n // (g) => {\n // this.RidgeCapping.S_Ridge_250 = g;\n // }\n // ),\n this.downloadFileEx(\"Ridge Capping (Customs).stl\", vW, vH, vL).then(\n (g) => {\n this.RidgeCapping.S_Ridge_Custom = g;\n }\n ),\n ]);\n }\n public loadBeamJoint(): Promise {\n let geo = new BoxBufferGeometry(60, 105, 500);\n this.SUPERIOR_BEAM.S65x110_JOINT = new GeometryInfo(geo, 60, 105, 500, \"BSIJ110\");\n let geo1 = new BoxBufferGeometry(60, 155, 500);\n this.SUPERIOR_BEAM.S65x160_JOINT = new GeometryInfo(geo1, 60, 155, 500, \"BSIJ160\");\n let geo2 = new BoxBufferGeometry(60, 205, 500);\n this.SUPERIOR_BEAM.S65x210_JOINT = new GeometryInfo(geo2, 60, 205, 500, \"BSIJ210\");\n let geo3 = new BoxBufferGeometry(60, 255, 500);\n this.SUPERIOR_BEAM.S65x260_JOINT = new GeometryInfo(geo3, 60, 255, 500, \"BSIJ260\");\n\n return Promise.resolve()\n }\n public loadSuperiorBeam(): Promise {\n let geo = new BoxBufferGeometry(45, 140, 1000);\n this.TIMBER_BEAM.S140x45 = new GeometryInfo(geo, 45, 140, 1000, \"S45x140\");\n let geo1 = new BoxBufferGeometry(90, 140, 1000);\n this.TIMBER_BEAM.S190x45 = new GeometryInfo(geo1, 90, 140, 1000, \"S45x190\");\n let geo2 = new BoxBufferGeometry(50, 150, 1000);\n this.TIMBER_BEAM.S150x50 = new GeometryInfo(geo2, 50, 150, 1000, \"S50x150\");\n let geo3 = new BoxBufferGeometry(50, 200, 1000);\n this.TIMBER_BEAM.S200x50 = new GeometryInfo(geo3, 50, 200, 1000, \"S50x200\");\n let geo4 = new BoxBufferGeometry(75, 150, 1000);\n this.TIMBER_BEAM.S150x75 = new GeometryInfo(geo4, 75, 150, 1000, \"S75x150\");\n let geo5 = new BoxBufferGeometry(75, 200, 1000);\n this.TIMBER_BEAM.S200x75 = new GeometryInfo(geo5, 75, 200, 1000, \"S75x200\");\n let geo6 = new BoxBufferGeometry(75, 250, 1000);\n this.TIMBER_BEAM.S250x75 = new GeometryInfo(geo6, 75, 250, 1000, \"S75x250\");\n let geoEndCap = new BoxBufferGeometry(50, 150, 50);\n this.TIMBER_BEAM.S150x50_ENDCAP = new GeometryInfo(geoEndCap, 50, 150, 50, \"S150x50_ENDCAP\");\n\n let vW = new Vector3(1, 0, 0);\n let vH = new Vector3(0, 1, 0);\n let vL = new Vector3(0, 0, 1);\n return Promise.all([\n this.downloadFileEx(\"Superior Beam 65x110 (3D).stl\", vW, vH, vL, \"S65x110\").then(\n (g) => {\n this.SUPERIOR_BEAM.S65x110 = g;\n }\n ),\n this.downloadFileEx(\"Beam End Cap 65x110 (3D).stl\", vW, vH, vL, \"BSEC110\").then(\n (g) => {\n this.SUPERIOR_BEAM.S65x110_ENDCAP = g;\n }\n ),\n this.downloadFileEx(\"Superior Beam 65x160 (3D).stl\", vW, vH, vL, \"S65x160\").then(\n (g) => {\n this.SUPERIOR_BEAM.S65x160 = g;\n }\n ),\n this.downloadFileEx(\"Beam End Cap 65x160 (3D).stl\", vW, vH, vL, \"BSEC160\").then(\n (g) => {\n this.SUPERIOR_BEAM.S65x160_ENDCAP = g;\n }\n ),\n this.downloadFileEx(\"Superior Beam 65x210 (3D).stl\", vW, vH, vL, \"S65x210\").then(\n (g) => {\n this.SUPERIOR_BEAM.S65x210 = g;\n }\n ),\n this.downloadFileEx(\"Beam End Cap 65x210 (3D).stl\", vW, vH, vL, \"BSEC210\").then(\n (g) => {\n this.SUPERIOR_BEAM.S65x210_ENDCAP = g;\n }\n ),\n this.downloadFileEx(\"Superior Beam 65x260 (3D).stl\", vW, vH, vL, \"S65x260\").then(\n (g) => {\n this.SUPERIOR_BEAM.S65x260 = g;\n }\n ),\n this.downloadFileEx(\"Beam End Cap 65x260 (3D).stl\", vW, vH, vL, \"BSEC260\").then(\n (g) => {\n this.SUPERIOR_BEAM.S65x260_ENDCAP = g;\n }\n ),\n ]);\n }\n public loadSuperiorPost(): Promise {\n let geo = new BoxBufferGeometry(100, 100, 1000);\n this.SUPERIOR_POST.TIMBER = new GeometryInfo(geo, 100, 1000, 100);\n let geoTimber = new BoxBufferGeometry(65, 65, 1000);\n this.SUPERIOR_POST.CENTER_POST_TIMBER = new GeometryInfo(geoTimber, 65, 1000, 65);\n\n return this.downloadFile(\"Superior Post 65x65 (3D).stl\")\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n this.SUPERIOR_POST.S65x65 = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"Post SHS 90x3 (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n this.SUPERIOR_POST.S90x90 = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n });\n }\n public loadFlyOverBracket(): Promise {\n return this.downloadFile(\"Fly Over Bracket 65x3 (3D).stl\").then(\n (geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n this.FLY_OVER_BRACKET.S65x3 = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n }\n );\n }\n private getValue(geometry: BufferGeometry, orderIndex: number): number {\n if (orderIndex == 0) {\n return this.utils.getGeometryLength(geometry, new Vector3(1, 0, 0));\n } else if (orderIndex == 1) {\n return this.utils.getGeometryLength(geometry, new Vector3(0, 1, 0));\n } else if (orderIndex == 2) {\n return this.utils.getGeometryLength(geometry, new Vector3(0, 0, 1));\n }\n\n return 0;\n }\n getFileNameWithoutExt(path: string) {\n return path.split(\"/\").pop().split('.').slice(0, -1).join('.');\n }\n public downloadFileAsGeometryInfo(\n fileName: string,\n axisWHLOrder: string,\n output: GeometryInfo,\n modifier?: (geo: BufferGeometry) => void,\n name?: string\n ) : Promise {\n return new Promise((resolve, reject) => {\n if (output === undefined) {\n console.log(\"fileName\", fileName);\n console.log(\"UNDEFINED\");\n }\n if (output?.geometry) {\n return resolve(output);\n }\n\n try {\n this.downloadFile(fileName).then(geometry => {\n const orders = axisWHLOrder.split(\",\");\n const width = this.getValue(geometry, orders.indexOf(\"w\"));\n const length = this.getValue(geometry, orders.indexOf(\"l\"));\n const height = this.getValue(geometry, orders.indexOf(\"h\"));\n \n const simplifiedGeo = geometry;\n if (modifier) {\n modifier(simplifiedGeo);\n }\n const _name = name || this.getFileNameWithoutExt(fileName);\n \n const geoInfo = new GeometryInfo(\n simplifiedGeo,\n width,\n height,\n length,\n _name\n );\n\n output.name = geoInfo.name;\n output.geometry = geoInfo.geometry;\n output.width = geoInfo.width;\n output.height = geoInfo.height;\n output.length = geoInfo.length;\n\n resolve(geoInfo)\n })\n } catch (err) {\n resolve(null)\n }\n })\n }\n public loadMonoPanel(): Promise {\n return Promise.all([\n this.downloadFileAsGeometryInfo(\n \"50mm Monopanel-1 (3D).stl\",\n \"w,h,l\",\n this.MONO_PANEL.S50MM,\n (geo) => {\n geo.center()\n geo.translate(0, 2, 0);\n }\n ),\n this.downloadFileAsGeometryInfo(\n \"75mm Monopanel-1 (3D).stl\",\n \"w,h,l\",\n this.MONO_PANEL.S75MM,\n (geo) => {\n geo.center()\n geo.translate(0, 2, 0);\n }\n ),\n this.downloadFileAsGeometryInfo(\n \"100mm Monopanel-1 (3D).stl\",\n \"w,h,l\",\n this.MONO_PANEL.S100MM,\n (geo) => {\n geo.center()\n geo.translate(0, 2, 0);\n }\n ),\n this.downloadFileAsGeometryInfo(\n \"125mm Monopanel-1 (3D).stl\",\n \"w,h,l\",\n this.MONO_PANEL.S125MM,\n (geo) => {\n geo.center()\n geo.translate(0, 2, 0);\n }\n ),\n this.downloadFileAsGeometryInfo(\n \"150mm Monopanel-1 (3D).stl\",\n \"w,h,l\",\n this.MONO_PANEL.S150MM,\n (geo) => {\n geo.center()\n geo.translate(0, 2, 0);\n }\n ),\n this.downloadFileAsGeometryInfo(\n \"50mm Monopanel-1 (3D)-base.stl\",\n \"w,h,l\",\n this.MONO_PANEL.S50MM_BASE,\n (geo) => {\n geo.center()\n geo.translate(\n EXISTING_BUILDING_CONFIG.ROOF_AND_BASE_OFFSET_X,\n 0,\n 0\n )\n }\n ),\n this.downloadFileAsGeometryInfo(\n \"75mm Monopanel-1 (3D)-base.stl\",\n \"w,h,l\",\n this.MONO_PANEL.S75MM_BASE,\n (geo) => {\n geo.center()\n geo.translate(\n EXISTING_BUILDING_CONFIG.ROOF_AND_BASE_OFFSET_X,\n 0,\n 0\n )\n }\n ),\n this.downloadFileAsGeometryInfo(\n \"100mm Monopanel-1 (3D)-base.stl\",\n \"w,h,l\",\n this.MONO_PANEL.S100MM_BASE,\n (geo) => {\n geo.center()\n geo.translate(\n EXISTING_BUILDING_CONFIG.ROOF_AND_BASE_OFFSET_X,\n 0,\n 0\n )\n }\n ),\n this.downloadFileAsGeometryInfo(\n \"125mm Monopanel-1 (3D)-base.stl\",\n \"w,h,l\",\n this.MONO_PANEL.S125MM_BASE,\n (geo) => {\n geo.center()\n geo.translate(\n EXISTING_BUILDING_CONFIG.ROOF_AND_BASE_OFFSET_X,\n 0,\n 0\n )\n }\n ),\n this.downloadFileAsGeometryInfo(\n \"150mm Monopanel-1 (3D)-base.stl\",\n \"w,h,l\",\n this.MONO_PANEL.S150MM_BASE,\n (geo) => {\n geo.center()\n geo.translate(\n EXISTING_BUILDING_CONFIG.ROOF_AND_BASE_OFFSET_X,\n 0,\n 0\n )\n }\n ),\n ]);\n }\n public loadCorroPanel(): Promise {\n return this.downloadFile(\"50mm Coropanel-1 (3D).stl\")\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL.S50MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"75mm Coropanel-1 (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL.S75MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"100mm Coropanel-1 (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL.S100MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"125mm Coropanel-1 (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL.S125MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"150mm Coropanel-1 (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL.S150MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"50mm Coropanel-1 (3D)-base.stl\");\n })\n\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL.S50MM_BASE = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"75mm Coropanel-1 (3D)-base.stl\");\n })\n\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL.S75MM_BASE = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"100mm Coropanel-1 (3D)-base.stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL.S100MM_BASE = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"125mm Coropanel-1 (3D)-base.stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL.S125MM_BASE = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"150mm Coropanel-1 (3D)-base.stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL.S150MM_BASE = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n });\n }\n public loadMonoPanelBargeCapping(): Promise {\n return this.downloadFile(\"50mm Monopanel Barge Capping (3D).stl\")\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.MONO_PANEL_BARGE_CAPPING.S50MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"75mm Monopanel Barge Capping (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.MONO_PANEL_BARGE_CAPPING.S75MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"100mm Monopanel Barge Capping (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.MONO_PANEL_BARGE_CAPPING.S100MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"125mm Monopanel Barge Capping (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.MONO_PANEL_BARGE_CAPPING.S125MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"150mm Monopanel Barge Capping (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.MONO_PANEL_BARGE_CAPPING.S150MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n });\n }\n public loadMonoPanelDripBargeCapping(): Promise {\n return this.downloadFile(\"50MM TRIMSPAN DRIP BARGE.stl\")\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.MONO_PANEL_DRIP_BARGE_CAPPING.S50MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"75MM TRIMSPAN DRIP BARGE.stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.MONO_PANEL_DRIP_BARGE_CAPPING.S75MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"100MM TRIMSPAN DRIP BARGE .stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.MONO_PANEL_DRIP_BARGE_CAPPING.S100MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"125MM TRIMSPAN DRIP BARGE .stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.MONO_PANEL_DRIP_BARGE_CAPPING.S125MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"150MM TRIMSPAN DRIP BARGE.stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.MONO_PANEL_DRIP_BARGE_CAPPING.S150MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n });\n }\n public loadCorroPanelBargeCapping(): Promise {\n return this.downloadFile(\"50mm Coropanel Barge Capping (3D).stl\")\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL_BARGE_CAPPING.S50MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"75mm Coropanel Barge Capping (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL_BARGE_CAPPING.S75MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"100mm Coropanel Barge Capping (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL_BARGE_CAPPING.S100MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"125mm Coropanel Barge Capping (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL_BARGE_CAPPING.S125MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"150mm Coropanel Barge Capping (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL_BARGE_CAPPING.S150MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n });\n }\n public loadCorroPanelDripBargeCapping(): Promise {\n return this.downloadFile(\"50MM CORROPANEL DRIP BARGE .stl\")\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL_DRIP_BARGE_CAPPING.S50MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"75MM CORROPANEL DRIP BARGE.stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL_DRIP_BARGE_CAPPING.S75MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"100MM CORROPANEL DRIP BARGE.stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL_DRIP_BARGE_CAPPING.S100MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"125MM CORROPANEL DRIP BARGE .stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL_DRIP_BARGE_CAPPING.S125MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"150MM CORROPANEL DRIP BARGE .stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL_DRIP_BARGE_CAPPING.S150MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n });\n }\n public loadMonoRecieverChanel(): Promise {\n return this.downloadFile(\"50mm Monopanel Reveiver Channel (3D).stl\")\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.MONO_PANEL_RECIEVER_CHANEL.S50MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"75mm Monopanel Reveiver Channel (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.MONO_PANEL_RECIEVER_CHANEL.S75MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"100mm Monopanel Reveiver Channel (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.MONO_PANEL_RECIEVER_CHANEL.S100MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"125mm Monopanel Reveiver Channel (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.MONO_PANEL_RECIEVER_CHANEL.S125MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"150mm Monopanel Reveiver Channel (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.MONO_PANEL_RECIEVER_CHANEL.S150MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n });\n }\n public loadCorroRecieverChanel(): Promise {\n return this.downloadFile(\"50mm Coropanel Reveiver Channel (3D).stl\")\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n //geometry.rotateY(Math.PI/2)\n this.CORRO_PANEL_RECIEVER_CHANEL.S50MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"75mm Coropanel Reveiver Channel (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL_RECIEVER_CHANEL.S75MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"100mm Coropanel Reveiver Channel (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL_RECIEVER_CHANEL.S100MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"125mm Coropanel Reveiver Channel (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL_RECIEVER_CHANEL.S125MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"150mm Coropanel Reveiver Channel (3D).stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n this.CORRO_PANEL_RECIEVER_CHANEL.S150MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n });\n }\n public loadGutter(): Promise {\n let vW = new Vector3(1, 0, 0);\n let vH = new Vector3(0, 1, 0);\n let vL = new Vector3(0, 0, 1);\n return Promise.all([\n this.downloadFileEx(\"Quad Gutter (3D).stl\", vW, vH, vL).then((g) => {\n this.GUTTER.QUAD_150 = g;\n }),\n this.downloadFileEx(\n \"End Cap Quad Gutter (3D).stl\",\n vW,\n vH,\n new Vector3(1, 0, 0)\n ).then((g) => {\n this.GUTTER.QUAD_150_END_CAP = g;\n }),\n this.downloadFileEx(\"Square Line Gutter (3D).stl\", vW, vH, vL).then(\n (g) => {\n this.GUTTER.SQUARE_LINE = g;\n }\n ),\n this.downloadFileEx(\n \"End Cap Square Line Gutter (3D).stl\",\n vW,\n vH,\n new Vector3(1, 0, 0)\n ).then((g) => {\n this.GUTTER.SQUARE_LINE_END_CAP = g;\n }),\n ]);\n }\n public loadBraket(): Promise {\n let vW = new Vector3(1, 0, 0);\n let vH = new Vector3(0, 1, 0);\n let vL = new Vector3(0, 0, 1);\n return Promise.all([\n this.downloadFileEx(\"FUB Bracket 65x3_1.stl\", vW, vH, vL).then((g) => {\n this.UPSTAND_BRAKET.BRAKET_1 = g;\n }),\n this.downloadFileEx(\"FUB Bracket 65x3_2.stl\", vW, vH, vL).then((g) => {\n this.UPSTAND_BRAKET.BRAKET_2 = g;\n }),\n ]);\n }\n private loadDownPipe(): Promise {\n return this.downloadFile(\"90mm PVC (3D)-pipe.stl\")\n .then((geometry) => {\n geometry.center();\n\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n geometry.translate(0, height / 2, 0);\n this.DOWNPIPE.PIPE_S90MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n return this.downloadFile(\"90mm PVC (3D)-L.stl\");\n })\n .then((geometry) => {\n geometry.center();\n const width = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 0, 1)\n );\n const height = this.utils.getGeometryLength(\n geometry,\n new Vector3(0, 1, 0)\n );\n const length = this.utils.getGeometryLength(\n geometry,\n new Vector3(1, 0, 0)\n );\n geometry.translate(0, height / 2, 0);\n this.DOWNPIPE.L_S90MM = new GeometryInfo(\n geometry,\n width,\n height,\n length\n );\n });\n }\n private loadZFlashing() {\n let vW = new Vector3(1, 0, 0);\n let vH = new Vector3(0, 1, 0);\n let vL = new Vector3(0, 0, 1);\n return Promise.all([\n this.downloadFileEx(\"50mm Z Flashing (3D).stl\", vW, vH, vL).then((g) => {\n g.geometry\n .rotateY(Math.PI / 2)\n .translate(g.length / 2, -g.height / 2 - 2, -80);\n this.Z_FlASHING.S50 = g;\n }),\n this.downloadFileEx(\"75mm Z Flashing (3D).stl\", vW, vH, vL).then((g) => {\n g.geometry\n .rotateY(Math.PI / 2)\n .translate(g.length / 2, -g.height / 2 - 2, -80);\n this.Z_FlASHING.S75 = g;\n }),\n this.downloadFileEx(\"100mm Z Flashing (3D).stl\", vW, vH, vL).then((g) => {\n g.geometry\n .rotateY(Math.PI / 2)\n .translate(g.length / 2, -g.height / 2 - 2, -80);\n this.Z_FlASHING.S100 = g;\n }),\n this.downloadFileEx(\"125mm Z Flashing (3D).stl\", vW, vH, vL).then((g) => {\n g.geometry\n .rotateY(Math.PI / 2)\n .translate(g.length / 2, -g.height / 2 - 2, -80);\n this.Z_FlASHING.S125 = g;\n }),\n this.downloadFileEx(\"150mm Z Flashing (3D).stl\", vW, vH, vL).then((g) => {\n g.geometry\n .rotateY(Math.PI / 2)\n .translate(g.length / 2, -g.height / 2 - 2, -80);\n this.Z_FlASHING.S150 = g;\n }),\n ]);\n }\n public getBeam(): GeometryInfo {\n //_SUPERIOR BEAM\n if (this.APP.sltBeamType.currentValue == 0) {\n if (\n this.APP.sltBeamSize.currentValue == 0 ||\n this.APP.sltBeamSize.currentValue == 1\n ) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x110);\n }\n if (this.APP.sltBeamSize.currentValue == 2) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x160);\n }\n if (this.APP.sltBeamSize.currentValue == 3) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x210);\n }\n if (this.APP.sltBeamSize.currentValue == 4) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x260);\n }\n //FIXME: Bang - 2021.05.20: Xu ly loi khi tu TIMER -> SPC BEAM\n if (this.APP.sltBeamSize.currentValue > 4) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x110);\n }\n }\n //_TIMBER BEAM\n else if (this.APP.sltBeamType.currentValue == 1) {\n if (\n this.APP.sltBeamSize.currentValue == 0 ||\n this.APP.sltBeamSize.currentValue == 1\n ) {\n return this.utils.cloneGeometryInfo(this.TIMBER_BEAM.S140x45);\n }\n if (this.APP.sltBeamSize.currentValue == 2) {\n return this.utils.cloneGeometryInfo(this.TIMBER_BEAM.S190x45);\n }\n if (this.APP.sltBeamSize.currentValue == 3) {\n return this.utils.cloneGeometryInfo(this.TIMBER_BEAM.S150x50);\n }\n if (this.APP.sltBeamSize.currentValue == 4) {\n return this.utils.cloneGeometryInfo(this.TIMBER_BEAM.S200x50);\n }\n if (this.APP.sltBeamSize.currentValue == 5) {\n return this.utils.cloneGeometryInfo(this.TIMBER_BEAM.S150x75);\n }\n if (this.APP.sltBeamSize.currentValue == 6) {\n return this.utils.cloneGeometryInfo(this.TIMBER_BEAM.S200x75);\n }\n if (this.APP.sltBeamSize.currentValue == 7) {\n return this.utils.cloneGeometryInfo(this.TIMBER_BEAM.S250x75);\n }\n }\n }\n\n public getBeamJoint(): GeometryInfo {\n if (UI.beamType == 0) {\n if (\n UI.beamSize == 0 || UI.beamSize == 1\n ) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x110_JOINT);\n } else if (UI.beamSize == 2) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x160_JOINT);\n } else if (UI.beamSize == 3) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x210_JOINT);\n } else if (UI.beamSize == 4) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x260_JOINT);\n } else if (UI.beamSize > 4) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x110_JOINT);\n }\n }\n\n return null\n }\n\n public getHouseBeamJoint(): GeometryInfo {\n if (UI.beamType == 0) {\n if (\n UI.houseBeamSize == 0 ||\n UI.houseBeamSize == 1\n ) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x110_JOINT);\n }\n if (UI.houseBeamSize == 2) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x160_JOINT);\n }\n if (UI.houseBeamSize == 3) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x210_JOINT);\n }\n if (UI.houseBeamSize == 4) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x260_JOINT);\n }\n if (UI.houseBeamSize > 4) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x110_JOINT);\n }\n }\n\n return null\n }\n\n public getHouseBeam(): GeometryInfo {\n //_SUPERIOR BEAM\n if (this.APP.sltBeamType.currentValue == 0) {\n if (\n this.APP.sltHouseBeamSize.currentValue == 0 ||\n this.APP.sltHouseBeamSize.currentValue == 1\n ) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x110);\n }\n if (this.APP.sltHouseBeamSize.currentValue == 2) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x160);\n }\n if (this.APP.sltHouseBeamSize.currentValue == 3) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x210);\n }\n if (this.APP.sltHouseBeamSize.currentValue == 4) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x260);\n }\n //FIXME: Bang - 2021.05.20: Xu ly loi khi tu TIMER -> SPC BEAM\n if (this.APP.sltHouseBeamSize.currentValue > 4) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x110);\n }\n }\n //_TIMBER BEAM\n else if (this.APP.sltBeamType.currentValue == 1) {\n if (\n this.APP.sltHouseBeamSize.currentValue == 0 ||\n this.APP.sltHouseBeamSize.currentValue == 1\n ) {\n return this.utils.cloneGeometryInfo(this.TIMBER_BEAM.S140x45);\n }\n if (this.APP.sltHouseBeamSize.currentValue == 2) {\n return this.utils.cloneGeometryInfo(this.TIMBER_BEAM.S190x45);\n }\n if (this.APP.sltHouseBeamSize.currentValue == 3) {\n return this.utils.cloneGeometryInfo(this.TIMBER_BEAM.S150x50);\n }\n if (this.APP.sltHouseBeamSize.currentValue == 4) {\n return this.utils.cloneGeometryInfo(this.TIMBER_BEAM.S200x50);\n }\n if (this.APP.sltHouseBeamSize.currentValue == 5) {\n return this.utils.cloneGeometryInfo(this.TIMBER_BEAM.S150x75);\n }\n if (this.APP.sltHouseBeamSize.currentValue == 6) {\n return this.utils.cloneGeometryInfo(this.TIMBER_BEAM.S200x75);\n }\n if (this.APP.sltHouseBeamSize.currentValue == 7) {\n return this.utils.cloneGeometryInfo(this.TIMBER_BEAM.S250x75);\n }\n }\n }\n public getRafterBeam(): GeometryInfo {\n //_SUPERIOR BEAM\n if (this.APP.sltBeamType.currentValue == 0) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x160);\n }\n //_TIMBER BEAM\n else if (this.APP.sltBeamType.currentValue == 1) {\n return this.utils.cloneGeometryInfo(this.TIMBER_BEAM.S150x50);\n }\n }\n public getRafterBeamEndCap(): GeometryInfo {\n //_SUPERIOR BEAM\n if (this.APP.sltBeamType.currentValue == 0) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x160_ENDCAP);\n }\n //_TIMBER BEAM\n else if (this.APP.sltBeamType.currentValue == 1) {\n return this.utils.cloneGeometryInfo(this.TIMBER_BEAM.S150x50_ENDCAP);\n }\n }\n public getBeamEndCap(): GeometryInfo {\n //_SUPERIOR BEAM\n if (this.APP.sltBeamType.currentValue == 0) {\n if (\n this.APP.sltBeamSize.currentValue == 0 ||\n this.APP.sltBeamSize.currentValue == 1\n ) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x110_ENDCAP);\n }\n if (this.APP.sltBeamSize.currentValue == 2) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x160_ENDCAP);\n }\n if (this.APP.sltBeamSize.currentValue == 3) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x210_ENDCAP);\n }\n if (this.APP.sltBeamSize.currentValue == 4) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x260_ENDCAP);\n }\n //FIXME: Bang - 2021.05.20: Xu ly loi khi tu TIMER -> SPC BEAM\n if (this.APP.sltBeamSize.currentValue > 4) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x110);\n }\n }\n //_TIMBER BEAM\n else if (this.APP.sltBeamType.currentValue == 1) {\n return this.utils.cloneGeometryInfo(this.TIMBER_BEAM.S150x50_ENDCAP);\n }\n }\n\n public getHouseBeamEndCap(): GeometryInfo {\n //_SUPERIOR BEAM\n if (this.APP.sltBeamType.currentValue == 0) {\n if (\n this.APP.sltHouseBeamSize.currentValue == 0 ||\n this.APP.sltHouseBeamSize.currentValue == 1\n ) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x110_ENDCAP);\n }\n if (this.APP.sltHouseBeamSize.currentValue == 2) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x160_ENDCAP);\n }\n if (this.APP.sltHouseBeamSize.currentValue == 3) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x210_ENDCAP);\n }\n if (this.APP.sltHouseBeamSize.currentValue == 4) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x260_ENDCAP);\n }\n //FIXME: Bang - 2021.05.20: Xu ly loi khi tu TIMER -> SPC BEAM\n if (this.APP.sltHouseBeamSize.currentValue > 4) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_BEAM.S65x110);\n }\n }\n //_TIMBER BEAM\n else if (this.APP.sltBeamType.currentValue == 1) {\n return this.utils.cloneGeometryInfo(this.TIMBER_BEAM.S150x50_ENDCAP);\n }\n }\n\n public getPost() {\n if (this.APP.sltColumnType.currentValue == 0) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_POST.S65x65);\n } else if (\n this.APP.sltColumnType.currentValue == 1 ||\n this.APP.sltColumnType.currentValue == 2\n ) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_POST.S90x90);\n } else {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_POST.TIMBER);\n }\n }\n public getCenterPost() {\n if(UI.beamType == 1) {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_POST.CENTER_POST_TIMBER)\n } else {\n return this.utils.cloneGeometryInfo(this.SUPERIOR_POST.S65x65)\n }\n }\n public getRoofSheetPanel(): GeometryInfo {\n if (\n this.APP.sltRoofSheetingType.currentValue == 0 ||\n this.APP.sltRoofSheetingType.currentValue == 1\n ) {\n if (\n this.APP.sltRoofThickness.currentValue == 0 ||\n this.APP.sltRoofThickness.currentValue == 1\n ) {\n return this.utils.cloneGeometryInfo(this.MONO_PANEL.S50MM);\n }\n if (this.APP.sltRoofThickness.currentValue == 2) {\n return this.utils.cloneGeometryInfo(this.MONO_PANEL.S75MM);\n }\n if (this.APP.sltRoofThickness.currentValue == 3) {\n return this.utils.cloneGeometryInfo(this.MONO_PANEL.S100MM);\n }\n if (this.APP.sltRoofThickness.currentValue == 4) {\n return this.utils.cloneGeometryInfo(this.MONO_PANEL.S125MM);\n }\n if (this.APP.sltRoofThickness.currentValue == 5) {\n return this.utils.cloneGeometryInfo(this.MONO_PANEL.S150MM);\n }\n } else if (this.APP.sltRoofSheetingType.currentValue == 2) {\n if (\n this.APP.sltRoofThickness.currentValue == 0 ||\n this.APP.sltRoofThickness.currentValue == 1\n ) {\n return this.utils.cloneGeometryInfo(this.CORRO_PANEL.S50MM);\n }\n if (this.APP.sltRoofThickness.currentValue == 2) {\n return this.utils.cloneGeometryInfo(this.CORRO_PANEL.S75MM);\n }\n if (this.APP.sltRoofThickness.currentValue == 3) {\n return this.utils.cloneGeometryInfo(this.CORRO_PANEL.S100MM);\n }\n if (this.APP.sltRoofThickness.currentValue == 4) {\n return this.utils.cloneGeometryInfo(this.CORRO_PANEL.S125MM);\n }\n if (this.APP.sltRoofThickness.currentValue == 5) {\n return this.utils.cloneGeometryInfo(this.CORRO_PANEL.S150MM);\n }\n }\n return null;\n }\n public getRoofBase(): GeometryInfo {\n if (\n this.APP.sltRoofSheetingType.currentValue == 0 ||\n this.APP.sltRoofSheetingType.currentValue == 1\n ) {\n if (\n this.APP.sltRoofThickness.currentValue == 0 ||\n this.APP.sltRoofThickness.currentValue == 1\n ) {\n return this.utils.cloneGeometryInfo(this.MONO_PANEL.S50MM_BASE);\n }\n if (this.APP.sltRoofThickness.currentValue == 2) {\n return this.utils.cloneGeometryInfo(this.MONO_PANEL.S75MM_BASE);\n }\n if (this.APP.sltRoofThickness.currentValue == 3) {\n return this.utils.cloneGeometryInfo(this.MONO_PANEL.S100MM_BASE);\n }\n if (this.APP.sltRoofThickness.currentValue == 4) {\n return this.utils.cloneGeometryInfo(this.MONO_PANEL.S125MM_BASE);\n }\n if (this.APP.sltRoofThickness.currentValue == 5) {\n return this.utils.cloneGeometryInfo(this.MONO_PANEL.S150MM_BASE);\n }\n } else if (this.APP.sltRoofSheetingType.currentValue == 2) {\n if (\n this.APP.sltRoofThickness.currentValue == 0 ||\n this.APP.sltRoofThickness.currentValue == 1\n ) {\n return this.utils.cloneGeometryInfo(this.CORRO_PANEL.S50MM_BASE);\n }\n if (this.APP.sltRoofThickness.currentValue == 2) {\n return this.utils.cloneGeometryInfo(this.CORRO_PANEL.S75MM_BASE);\n }\n if (this.APP.sltRoofThickness.currentValue == 3) {\n return this.utils.cloneGeometryInfo(this.CORRO_PANEL.S100MM_BASE);\n }\n if (this.APP.sltRoofThickness.currentValue == 4) {\n return this.utils.cloneGeometryInfo(this.CORRO_PANEL.S125MM_BASE);\n }\n if (this.APP.sltRoofThickness.currentValue == 5) {\n return this.utils.cloneGeometryInfo(this.CORRO_PANEL.S150MM_BASE);\n }\n }\n return null;\n }\n public getRoofBaseHeight(): number {\n const roofBase = this.getRoofBase()\n return _.get(roofBase, ['height'], 0)\n }\n public getBarge(): GeometryInfo {\n if (this.APP.sltDripBarge.currentValue) {\n if (\n this.APP.sltBargeType.currentValue == 0 ||\n this.APP.sltBargeType.currentValue == 1\n ) {\n if (\n this.APP.sltRoofThickness.currentValue == 0 ||\n this.APP.sltRoofThickness.currentValue == 1\n ) {\n return this.utils.cloneGeometryInfo(\n this.MONO_PANEL_DRIP_BARGE_CAPPING.S50MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 2) {\n return this.utils.cloneGeometryInfo(\n this.MONO_PANEL_DRIP_BARGE_CAPPING.S75MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 3) {\n return this.utils.cloneGeometryInfo(\n this.MONO_PANEL_DRIP_BARGE_CAPPING.S100MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 4) {\n return this.utils.cloneGeometryInfo(\n this.MONO_PANEL_DRIP_BARGE_CAPPING.S125MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 5) {\n return this.utils.cloneGeometryInfo(\n this.MONO_PANEL_DRIP_BARGE_CAPPING.S150MM\n );\n }\n } else if (this.APP.sltBargeType.currentValue == 2) {\n if (\n this.APP.sltRoofThickness.currentValue == 0 ||\n this.APP.sltRoofThickness.currentValue == 1\n ) {\n return this.utils.cloneGeometryInfo(\n this.CORRO_PANEL_DRIP_BARGE_CAPPING.S50MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 2) {\n return this.utils.cloneGeometryInfo(\n this.CORRO_PANEL_DRIP_BARGE_CAPPING.S75MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 3) {\n return this.utils.cloneGeometryInfo(\n this.CORRO_PANEL_DRIP_BARGE_CAPPING.S100MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 4) {\n return this.utils.cloneGeometryInfo(\n this.CORRO_PANEL_DRIP_BARGE_CAPPING.S125MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 5) {\n return this.utils.cloneGeometryInfo(\n this.CORRO_PANEL_DRIP_BARGE_CAPPING.S150MM\n );\n }\n }\n } else {\n if (\n this.APP.sltBargeType.currentValue == 0 ||\n this.APP.sltBargeType.currentValue == 1\n ) {\n if (\n this.APP.sltRoofThickness.currentValue == 0 ||\n this.APP.sltRoofThickness.currentValue == 1\n ) {\n return this.utils.cloneGeometryInfo(\n this.MONO_PANEL_BARGE_CAPPING.S50MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 2) {\n return this.utils.cloneGeometryInfo(\n this.MONO_PANEL_BARGE_CAPPING.S75MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 3) {\n return this.utils.cloneGeometryInfo(\n this.MONO_PANEL_BARGE_CAPPING.S100MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 4) {\n return this.utils.cloneGeometryInfo(\n this.MONO_PANEL_BARGE_CAPPING.S125MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 5) {\n return this.utils.cloneGeometryInfo(\n this.MONO_PANEL_BARGE_CAPPING.S150MM\n );\n }\n } else if (this.APP.sltBargeType.currentValue == 2) {\n if (\n this.APP.sltRoofThickness.currentValue == 0 ||\n this.APP.sltRoofThickness.currentValue == 1\n ) {\n return this.utils.cloneGeometryInfo(\n this.CORRO_PANEL_BARGE_CAPPING.S50MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 2) {\n return this.utils.cloneGeometryInfo(\n this.CORRO_PANEL_BARGE_CAPPING.S75MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 3) {\n return this.utils.cloneGeometryInfo(\n this.CORRO_PANEL_BARGE_CAPPING.S100MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 4) {\n return this.utils.cloneGeometryInfo(\n this.CORRO_PANEL_BARGE_CAPPING.S125MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 5) {\n return this.utils.cloneGeometryInfo(\n this.CORRO_PANEL_BARGE_CAPPING.S150MM\n );\n }\n }\n }\n\n return null;\n }\n public getReceiverChannel(): GeometryInfo {\n if (\n this.APP.sltReceiverType.currentValue == 0 ||\n this.APP.sltReceiverType.currentValue == 1\n ) {\n if (\n this.APP.sltRoofThickness.currentValue == 0 ||\n this.APP.sltRoofThickness.currentValue == 1\n ) {\n return this.utils.cloneGeometryInfo(\n this.MONO_PANEL_RECIEVER_CHANEL.S50MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 2) {\n return this.utils.cloneGeometryInfo(\n this.MONO_PANEL_RECIEVER_CHANEL.S75MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 3) {\n return this.utils.cloneGeometryInfo(\n this.MONO_PANEL_RECIEVER_CHANEL.S100MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 4) {\n return this.utils.cloneGeometryInfo(\n this.MONO_PANEL_RECIEVER_CHANEL.S125MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 5) {\n return this.utils.cloneGeometryInfo(\n this.MONO_PANEL_RECIEVER_CHANEL.S150MM\n );\n }\n } else if (this.APP.sltReceiverType.currentValue == 2) {\n if (\n this.APP.sltRoofThickness.currentValue == 0 ||\n this.APP.sltRoofThickness.currentValue == 1\n ) {\n return this.utils.cloneGeometryInfo(\n this.CORRO_PANEL_RECIEVER_CHANEL.S50MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 2) {\n return this.utils.cloneGeometryInfo(\n this.CORRO_PANEL_RECIEVER_CHANEL.S75MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 3) {\n return this.utils.cloneGeometryInfo(\n this.CORRO_PANEL_RECIEVER_CHANEL.S100MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 4) {\n return this.utils.cloneGeometryInfo(\n this.CORRO_PANEL_RECIEVER_CHANEL.S125MM\n );\n }\n if (this.APP.sltRoofThickness.currentValue == 5) {\n return this.utils.cloneGeometryInfo(\n this.CORRO_PANEL_RECIEVER_CHANEL.S150MM\n );\n }\n }\n return null;\n }\n public getGutter() {\n if (this.APP.sltGutterType.currentValue == 0) {\n return this.utils.cloneGeometryInfo(this.GUTTER.SQUARE_LINE);\n } else if (\n this.APP.sltGutterType.currentValue == 1 ||\n this.APP.sltGutterType.currentValue == 2\n ) {\n return this.utils.cloneGeometryInfo(this.GUTTER.QUAD_150);\n }\n }\n public getGuterEndCap(): GeometryInfo {\n if (this.APP.sltGutterType.currentValue == 0) {\n return this.utils.cloneGeometryInfo(this.GUTTER.SQUARE_LINE_END_CAP);\n } else if (\n this.APP.sltGutterType.currentValue == 1 ||\n this.APP.sltGutterType.currentValue == 2\n ) {\n return this.utils.cloneGeometryInfo(this.GUTTER.QUAD_150_END_CAP);\n }\n }\n public getRidge(): GeometryInfo {\n return this.utils.cloneGeometryInfo(this.RidgeCapping.S_Ridge_Custom);\n // if (\n // this.APP.sltRoofPitch.currentValue == 2 ||\n // this.APP.sltRoofPitch.currentValue == 3 ||\n // this.APP.sltRoofPitch.currentValue == 5 ||\n // this.APP.sltRoofPitch.currentValue == 7.5 ||\n // this.APP.sltRoofPitch.currentValue == 10\n // ) {\n // return this.utils.cloneGeometryInfo(this.RidgeCapping.S_Ridge_100);\n // } else if (this.APP.sltRoofPitch.currentValue == 12) {\n // return this.utils.cloneGeometryInfo(this.RidgeCapping.S_Ridge_125);\n // } else if (this.APP.sltRoofPitch.currentValue == 15) {\n // return this.utils.cloneGeometryInfo(this.RidgeCapping.S_Ridge_150);\n // } else if (this.APP.sltRoofPitch.currentValue == 20) {\n // return this.utils.cloneGeometryInfo(this.RidgeCapping.S_Ridge_200);\n // } else if (this.APP.sltRoofPitch.currentValue == 22.5) {\n // return this.utils.cloneGeometryInfo(this.RidgeCapping.S_Ridge_225);\n // } else if (this.APP.sltRoofPitch.currentValue == 25) {\n // return this.utils.cloneGeometryInfo(this.RidgeCapping.S_Ridge_250);\n // }\n }\n public getDownPipe(): GeometryInfo {\n if (this.APP.sltDownpipeType.currentValue == 0) {\n return this.DOWNPIPE.PIPE_S90MM;\n }\n return null;\n }\n public getDownPipeL(): GeometryInfo {\n if (this.APP.sltDownpipeType.currentValue == 0) {\n return this.DOWNPIPE.L_S90MM;\n }\n return null;\n }\n public getZFlashing(): GeometryInfo {\n if (\n this.APP.sltRoofThickness.currentValue == 0 ||\n this.APP.sltRoofThickness.currentValue == 1\n ) {\n return this.utils.cloneGeometryInfo(this.Z_FlASHING.S50);\n }\n if (this.APP.sltRoofThickness.currentValue == 2) {\n return this.utils.cloneGeometryInfo(this.Z_FlASHING.S75);\n }\n if (this.APP.sltRoofThickness.currentValue == 3) {\n return this.utils.cloneGeometryInfo(this.Z_FlASHING.S100);\n }\n if (this.APP.sltRoofThickness.currentValue == 4) {\n return this.utils.cloneGeometryInfo(this.Z_FlASHING.S125);\n }\n if (this.APP.sltRoofThickness.currentValue == 5) {\n return this.utils.cloneGeometryInfo(this.Z_FlASHING.S150);\n }\n\n return null;\n }\n public getDimensionLine() {\n return this.utils.cloneGeometryInfo(this.DIMENSION.LINE);\n }\n public getDimensionCap() {\n return this.utils.cloneGeometryInfo(this.DIMENSION.CAP);\n }\n public getUIControlLine() {\n return this.utils.cloneGeometryInfo(this.UI_CONTROL.LINE);\n }\n public getUpstandBraket(part: number) {\n if (part == 1) {\n return this.utils.cloneGeometryInfo(this.UPSTAND_BRAKET.BRAKET_1);\n } else if (part == 2) {\n return this.utils.cloneGeometryInfo(this.UPSTAND_BRAKET.BRAKET_2);\n }\n }\n}\n","import { Scene, Mesh, BufferGeometry, Vector3, Object3D, Color, Material, PlaneBufferGeometry, BoxBufferGeometry, CubeTextureLoader } from \"three\";\nimport { Util } from \"./utils\";\nimport { environment } from 'src/environments/environment';\nimport { CONFIG as env, GEOMETRY_TYPE } from '../app.config';\nimport { HomeComponent as AppComponent } from '../containers/home/home.component';\nimport { GeometryManager } from \"./geometry.manager\";\nimport { MaterialManager } from \"./material.manager\";\nimport { GeometryInfo } from './models';\n\nexport class GroundManager {\n private scene: Scene;\n private APP: AppComponent;\n private material: Material;\n private utils: Util;\n\n private geometryManager: GeometryManager;\n\n private geo_ground: BufferGeometry;\n private geo_groundBase: GeometryInfo;\n\n private totalBaySize: number;\n\n private isReady = false;\n\n\n constructor() {\n this.utils = new Util();\n this.geometryManager = GeometryManager.Instance();\n }\n\n public init(app: AppComponent): Promise {\n return new Promise((resolve, reject) => {\n this.APP = app;\n this.scene = app.scene;\n this.material = MaterialManager.Instance().GROUND.clone();\n\n this.APP.sldExistingLength.addAction(this.uiChanged.bind(this));\n this.APP.sldExistingLength2.addAction(this.uiChanged.bind(this));\n this.APP.sldExistingWidth1.addAction(this.uiChanged.bind(this));\n this.APP.sldExistingWidth2.addAction(this.uiChanged.bind(this));\n this.APP.sldSpan.addAction(this.uiChanged.bind(this));\n this.APP.sldMultiSpan.addAction(this.uiChanged.bind(this));\n this.APP.dialogEditBay.addAction(this.uiChanged.bind(this));\n\n\n resolve();\n });\n }\n public optimize(): Promise {\n return new Promise((resolve, reject) => {\n this.geo_ground = new PlaneBufferGeometry(200000, 200000);\n this.geo_groundBase = new GeometryInfo();\n this.geo_groundBase.width = 1000;\n this.geo_groundBase.height = 1;\n this.geo_groundBase.length = 1000;\n this.geo_groundBase.geometry = new BoxBufferGeometry(this.geo_groundBase.width, this.geo_groundBase.height, this.geo_groundBase.length);\n this.geo_groundBase.geometry.translate(0,0,this.geo_groundBase.length/2);\n\n\n resolve();\n });\n }\n public load(): Promise {\n return new Promise((resolve, reject) => {\n //this.scene.remove(...this.scene.children.filter(o => o.userData.type == GEOMETRY_TYPE.GROUND_BASE));\n\n this.totalBaySize = this.APP.dialogEditBay.listBay.reduce((total, val) => total + val.value, 0);\n\n this.isReady = true;\n\n this.addGround();\n this.addBase();\n\n resolve();\n });\n }\n\n public addGround() {\n let mesh = new Mesh(this.geo_ground, this.material);\n mesh.userData = { type: \"GROUND\" };\n mesh.position.y = -100;\n mesh.rotation.x = - Math.PI / 2;\n\n this.scene.add(mesh);\n //Skybox\n const cubeTextureLoader = new CubeTextureLoader();\n cubeTextureLoader.setPath(environment.modelBaseUrl + '/assets/images/skybox/' );\n const cubeTexture = cubeTextureLoader.load( [\n \"cube_f.jpg\", \"cube_b.jpg\",\n \"cube_u.jpg\", \"cube_d.jpg\",\n \"cube_l.jpg\", \"cube_r.jpg\"\n ] );\n this.scene.background = cubeTexture;\n }\n\n private addBase() {\n //return new Promise((resolve, reject) => {\n // if(!this.isReady){\n // resolve();\n // return;\n // }\n\n // this.APP.patiosManager.patiosGroup.remove(...this.APP.patiosManager.patiosGroup.children.filter(o => o.userData.type == GEOMETRY_TYPE.GROUND_BASE));\n // this.totalBaySize = this.APP.dialogEditBay.listBay.reduce((total, val) => total + val.value, 0);\n\n // let base = new Mesh(this.geo_groundBase.geometry, MaterialManager.Instance().BASE);\n // base.userData = { type: GEOMETRY_TYPE.GROUND_BASE };\n\n // let width = this.totalBaySize + this.APP.sldLeftOverhang.currentValue + this.APP.sldRightOverhang.currentValue;\n // let length = this.APP.sldSpan.currentValue + this.APP.sldMultiSpan.currentValue + this.APP.sldFrontOverhang.currentValue + this.APP.sldBackOverhang.currentValue;\n\n // let extraWidth = 0;\n\n // let offsetZ = this.APP.sldExistingWidth1.currentValue/2;\n\n // base.position.set(0,0,-offsetZ);\n // base.scale.set((width + extraWidth) / this.geo_groundBase.width, 1, (length + extraWidth) / this.geo_groundBase.length);\n\n // this.APP.patiosManager.patiosGroup.add(base);\n\n\n \n // resolve();\n //});\n }\n\n private uiChanged(pre: number, cur: number) {\n this.addBase();\n }\n}\n","import { MeshLambertMaterial, TextureLoader, MeshBasicMaterial, RepeatWrapping, DoubleSide, MeshPhongMaterial, LineBasicMaterial, Color, Texture, SpriteMaterial } from \"three\";\nimport { environment as env } from 'src/environments/environment';\nimport { HomeComponent } from '../containers/home/home.component';\nimport { UI } from \"./ui\";\n\nexport class MaterialManager {\n private textureLoader: TextureLoader;\n private APP: HomeComponent;\n\n private defaultColor = new Color(0x6D6C6E); //Basalt\n\n public DEFAULT: MeshPhongMaterial;\n public WALL: MeshLambertMaterial;\n public EAVE: MeshPhongMaterial;\n public FASCIA: MeshPhongMaterial;\n public EXISTING_ROOF: MeshPhongMaterial;\n public GROUND: MeshLambertMaterial;\n public BASE: MeshPhongMaterial;\n\n public BEAM: MeshPhongMaterial;\n public BEAM_TRANSPARENT: MeshPhongMaterial;\n public POST: MeshPhongMaterial;\n public GUTTER: MeshPhongMaterial;\n public BARGE: MeshPhongMaterial;\n public RECEIVER_CHANEL: MeshPhongMaterial;\n public DOWNPIPE: MeshPhongMaterial;\n public BRACKET: MeshPhongMaterial;\n public BRACKET_WARNING: MeshPhongMaterial;\n public FASCIA_BRACKET: MeshPhongMaterial;\n public ROOF: MeshPhongMaterial;\n public RIDGE_CAPPING: MeshPhongMaterial;\n public ROOF_BASE: MeshPhongMaterial;\n public ZFLASHING: MeshPhongMaterial;\n\n public EXISTING_WALL_L1_TEXTURE: Texture;\n public EXISTING_WALL_W1_TEXTURE: Texture;\n public EXISTING_WALL_L2_TEXTURE: Texture;\n public EXISTING_WALL_W2_TEXTURE: Texture;\n\n public EXISTING_ROOF_TEXTURE: {\n L1: Texture,\n L2: Texture,\n W1: Texture,\n W2: Texture\n } = {\n L1: null,\n L2: null,\n W1: null,\n W2: null\n }\n\n public DIMENSION_TEXT: MeshBasicMaterial;\n public HIGHLIGHT_DIMENSION_TEXT: MeshBasicMaterial;\n\n public MESH_OUTLINE: LineBasicMaterial;\n public BEAM_OUTLINE: LineBasicMaterial;\n\n public TEXTURE_UI_CONTROL: Texture;\n public TEXTURE_TIMBER: Texture;\n public UI_CONTROL: SpriteMaterial\n\n public TEXTURE_UI_CONTROL_DELETE: Texture;\n public UI_CONTROL_DELETE: SpriteMaterial\n\n public HIDDEN_UI_CONTROL: MeshBasicMaterial\n\n public TEXTURE_UI_CONTROL_CUTBEAM: Texture;\n public TEXTURE_UI_CONTROL_EXIT_CUTBEAM: Texture;\n public UI_CONTROL_CUTBEAM: SpriteMaterial\n public UI_CONTROL_EXIT_CUTBEAM: SpriteMaterial\n\n private static instance: MaterialManager;\n static Instance(): MaterialManager{\n if (!MaterialManager.instance) {\n MaterialManager.instance = new MaterialManager();\n }\n return MaterialManager.instance;\n }\n\n private constructor(){\n this.textureLoader = new TextureLoader();\n\n //default\n this.DEFAULT = new MeshPhongMaterial({\n color: 0x6D6C6E,\n side: DoubleSide\n });\n\n //Eave\n this.EAVE = new MeshPhongMaterial({\n color: new Color('white'),\n side: DoubleSide\n });\n\n //Eave\n this.FASCIA = new MeshPhongMaterial({\n color: new Color('white'),\n side: DoubleSide\n });\n\n //Ground\n var groundTexture = this.textureLoader.load( env.modelBaseUrl + \"/assets/images/textures/grass-dark.jpg\" );\n groundTexture.wrapS = groundTexture.wrapT = RepeatWrapping;\n groundTexture.repeat.set( 25, 25 );\n groundTexture.anisotropy = 16;\n this.GROUND = new MeshLambertMaterial({\n side: DoubleSide, \n map: groundTexture\n });\n\n //Base\n this.BASE = new MeshPhongMaterial({ color: new Color('white') });\n\n //Existing roof\n // var existingRoofTexture = this.textureLoader.load( env.modelBaseUrl + \"/assets/images/textures/131_Concrete roof tile texture-seamless.jpg\" );\n // existingRoofTexture.wrapS = existingRoofTexture.wrapT = RepeatWrapping;\n // existingRoofTexture.repeat.set( 2, 2 );\n // existingRoofTexture.anisotropy = 16;\n this.EXISTING_ROOF = new MeshPhongMaterial({\n side: DoubleSide\n });\n\n //wall texture\n this.EXISTING_WALL_L1_TEXTURE = this.textureLoader.load( env.modelBaseUrl + \"/assets/images/textures/brick4.png\" );\n this.EXISTING_WALL_L1_TEXTURE.wrapS = this.EXISTING_WALL_L1_TEXTURE.wrapT = RepeatWrapping;\n this.EXISTING_WALL_L1_TEXTURE.anisotropy = 1;\n\n this.EXISTING_WALL_L2_TEXTURE = this.textureLoader.load( env.modelBaseUrl + \"/assets/images/textures/brick4.png\" );\n this.EXISTING_WALL_L2_TEXTURE.wrapS = this.EXISTING_WALL_L2_TEXTURE.wrapT = RepeatWrapping;\n this.EXISTING_WALL_L2_TEXTURE.anisotropy = 1;\n\n this.EXISTING_WALL_W1_TEXTURE = this.textureLoader.load( env.modelBaseUrl + \"/assets/images/textures/brick4.png\" );\n this.EXISTING_WALL_W1_TEXTURE.wrapS = this.EXISTING_WALL_W1_TEXTURE.wrapT = RepeatWrapping;\n this.EXISTING_WALL_W1_TEXTURE.anisotropy = 1;\n\n this.EXISTING_WALL_W2_TEXTURE = this.textureLoader.load( env.modelBaseUrl + \"/assets/images/textures/brick4.png\" );\n this.EXISTING_WALL_W2_TEXTURE.wrapS = this.EXISTING_WALL_W2_TEXTURE.wrapT = RepeatWrapping;\n this.EXISTING_WALL_W2_TEXTURE.anisotropy = 1;\n\n \n\n //Existing roof texture\n this.EXISTING_ROOF_TEXTURE.L1 = this.textureLoader.load( env.modelBaseUrl + \"/assets/images/textures/131_Concrete roof tile texture-seamless.jpg\" );\n this.EXISTING_ROOF_TEXTURE.L1.wrapS = this.EXISTING_ROOF_TEXTURE.L1.wrapT = RepeatWrapping;\n this.EXISTING_ROOF_TEXTURE.L1.anisotropy = 1;\n\n this.EXISTING_ROOF_TEXTURE.L2 = this.textureLoader.load( env.modelBaseUrl + \"/assets/images/textures/131_Concrete roof tile texture-seamless.jpg\" );\n this.EXISTING_ROOF_TEXTURE.L2.wrapS = this.EXISTING_ROOF_TEXTURE.L2.wrapT = RepeatWrapping;\n this.EXISTING_ROOF_TEXTURE.L2.anisotropy = 1;\n\n this.EXISTING_ROOF_TEXTURE.W1 = this.textureLoader.load( env.modelBaseUrl + \"/assets/images/textures/131_Concrete roof tile texture-seamless.jpg\" );\n this.EXISTING_ROOF_TEXTURE.W1.wrapS = this.EXISTING_ROOF_TEXTURE.W1.wrapT = RepeatWrapping;\n this.EXISTING_ROOF_TEXTURE.W1.anisotropy = 1;\n\n this.EXISTING_ROOF_TEXTURE.W2 = this.textureLoader.load( env.modelBaseUrl + \"/assets/images/textures/131_Concrete roof tile texture-seamless.jpg\" );\n this.EXISTING_ROOF_TEXTURE.W2.wrapS = this.EXISTING_ROOF_TEXTURE.W2.wrapT = RepeatWrapping;\n this.EXISTING_ROOF_TEXTURE.W2.anisotropy = 1;\n\n //Wall\n this.WALL = new MeshLambertMaterial({\n side: DoubleSide, \n //map: this.BRICK_TEXTURE\n });\n\n //text\n this.DIMENSION_TEXT = new MeshBasicMaterial({ color: 0xffffff, side: DoubleSide });\n this.HIDDEN_UI_CONTROL = new MeshLambertMaterial({\n side: DoubleSide,\n color: 'white',\n transparent: true,\n opacity: 0\n })\n this.HIGHLIGHT_DIMENSION_TEXT = new MeshBasicMaterial({ color: 0xffff00, side: DoubleSide });\n\n this.MESH_OUTLINE = new LineBasicMaterial( { color: 'red' } );\n this.BEAM_OUTLINE = new LineBasicMaterial( { color: 'yellow' } );\n\n this.BARGE = new MeshPhongMaterial({ color: new Color(0xE4E2D5) }); //surfmist\n this.RECEIVER_CHANEL = new MeshPhongMaterial({ color: new Color(0xE4E2D5) }); //surfmist\n this.GUTTER = new MeshPhongMaterial({ color: new Color(0xE4E2D5) }); //basalt\n this.DOWNPIPE = new MeshPhongMaterial({ color: new Color(0xffffff) }); //white\n this.BEAM = new MeshPhongMaterial({ color: new Color(0xE4E2D5), side: DoubleSide }); //surfmist\n this.BEAM_TRANSPARENT = new MeshPhongMaterial({ color: new Color(0xE4E2D5), side: DoubleSide, transparent: true, opacity: 0.5 }); //surfmist\n this.POST = new MeshPhongMaterial({ color: new Color(0xE4E2D5) }); //surfmist\n this.BRACKET = new MeshPhongMaterial({ color: new Color(0xE4E2D5) }); //surfmist\n this.BRACKET_WARNING = new MeshPhongMaterial({ color: new Color(0xFF0000) }); //red: always red\n this.FASCIA_BRACKET = new MeshPhongMaterial({ color: new Color(0xE4E2D5) }); //surfmist\n this.ROOF = new MeshPhongMaterial({ color: new Color(0xE4E2D5) }); //surfmist\n this.RIDGE_CAPPING = new MeshPhongMaterial({ color: new Color(0xE4E2D5) });\n this.ROOF_BASE = new MeshPhongMaterial({ color: new Color(0xE4E2D5) }); //surfmist\n this.ZFLASHING = new MeshPhongMaterial({ color: new Color(0xE4E2D5) }); //surfmist\n }\n\n public init(app: HomeComponent){\n this.APP = app;\n this.registerEvent();\n\n return Promise.all([\n this.loadTexture('cut-beam.png').then(texture => {\n this.TEXTURE_UI_CONTROL_CUTBEAM = texture\n this.UI_CONTROL_CUTBEAM = new SpriteMaterial({ map: this.TEXTURE_UI_CONTROL_CUTBEAM, sizeAttenuation: true })\n }),\n this.loadTexture('join-beam.png').then(texture => {\n this.TEXTURE_UI_CONTROL_EXIT_CUTBEAM = texture\n this.UI_CONTROL_EXIT_CUTBEAM = new SpriteMaterial({ map: this.TEXTURE_UI_CONTROL_EXIT_CUTBEAM, sizeAttenuation: true })\n }),\n this.loadTexture('resize-icon.png').then(texture => {\n this.TEXTURE_UI_CONTROL = texture\n this.UI_CONTROL = new SpriteMaterial({ map: this.TEXTURE_UI_CONTROL, sizeAttenuation: false })\n }),\n\n this.loadTexture('delete-icon.png').then(texture => {\n this.TEXTURE_UI_CONTROL_DELETE = texture\n this.UI_CONTROL_DELETE = new SpriteMaterial({ map: this.TEXTURE_UI_CONTROL_DELETE, sizeAttenuation: false })\n }),\n\n this.loadTexture('timber-texture.jpg').then(texture => {\n this.TEXTURE_TIMBER = texture\n this.TEXTURE_TIMBER.repeat.set(1, 0.3)\n this.TEXTURE_TIMBER.wrapS = RepeatWrapping\n this.TEXTURE_TIMBER.wrapT = RepeatWrapping\n }),\n this.existingRoofTypeChanged(null,null)\n ])\n }\n private loadTexture(name: string) {\n return new Promise((resolve, reject) => {\n this.textureLoader.load(env.modelBaseUrl + \"/assets/images/textures/\" + name, (texture) => {\n resolve(texture)\n },\n () => { },\n (err) => { reject(err) });\n })\n }\n private controlsToRegisterEvent: Array;\n private registerEvent(){\n this.APP.sltColourBeam.addAction(this.beamColorChanged.bind(this), 1);\n this.APP.sltColourPost.addAction(this.postColorChanged.bind(this), 1);\n this.APP.sltColourBarge.addAction(this.bargeColorChanged.bind(this),1);\n this.APP.sltColourGutter.addAction(this.gutterColorChanged.bind(this), 1);\n this.APP.sltColourDownpipe.addAction(this.downpipeColorChanged.bind(this), 1);\n this.APP.sltColourBracket.addAction(this.bracketColorChanged.bind(this), 1);\n this.APP.sltColourFasciaBracket.addAction(this.fasciaBracketColorChanged.bind(this), 1);\n this.APP.sltColourRoof.addAction(this.roofColorChanged.bind(this), 1);\n this.APP.sltFlatBottom.addAction(this.roofBaseColorChanged.bind(this), 1);\n this.APP.sltColourZFlashing.addAction(this.zFlashingColorChanged.bind(this), 1);\n this.APP.sltExistingRoofType.addAction(this.existingRoofTypeChanged.bind(this), 1);\n }\n private postColorChanged(pre: number, cur: string){\n if(UI.postType == 3) {\n this.POST.color = new Color(UI.postColor);\n if(this.TEXTURE_TIMBER) {\n this.POST.color = new Color(0xFFFFFF);\n this.POST.map = this.TEXTURE_TIMBER\n this.POST.map.needsUpdate = true\n this.POST.needsUpdate = true\n }\n } else {\n this.POST.color = new Color(UI.postColor);\n this.POST.map = null\n this.POST.needsUpdate = true\n }\n }\n private bargeColorChanged(pre: number, cur: string){\n this.BARGE.color = new Color(parseInt(cur));\n }\n private gutterColorChanged(pre: number, cur: string){\n this.GUTTER.color = new Color(parseInt(cur));\n }\n private downpipeColorChanged(pre: number, cur: string){\n this.DOWNPIPE.color = new Color(parseInt(cur));\n }\n private beamColorChanged(pre: number, cur: string){\n if(UI.beamType == 1) {\n this.BEAM.color = new Color(UI.beamColor);\n this.BEAM_TRANSPARENT.color = new Color(UI.beamColor);\n if(this.TEXTURE_TIMBER) {\n this.BEAM.color = new Color(0xFFFFFF);\n this.BEAM.map = this.TEXTURE_TIMBER\n this.BEAM.map.needsUpdate = true\n this.BEAM.needsUpdate = true\n\n this.BEAM_TRANSPARENT.color = new Color(0xFFFFFF);\n this.BEAM_TRANSPARENT.map = this.TEXTURE_TIMBER\n this.BEAM_TRANSPARENT.map.needsUpdate = true\n this.BEAM_TRANSPARENT.needsUpdate = true\n }\n } else {\n this.BEAM.color = new Color(UI.beamColor);\n this.BEAM.map = null\n this.BEAM.needsUpdate = true\n\n this.BEAM_TRANSPARENT.color = new Color(UI.beamColor);\n this.BEAM_TRANSPARENT.map = null\n this.BEAM_TRANSPARENT.needsUpdate = true\n }\n }\n private bracketColorChanged(pre: number, cur: string){\n this.BRACKET.color = new Color(parseInt(cur));\n }\n private fasciaBracketColorChanged(pre: number, cur: string){\n this.FASCIA_BRACKET.color = new Color(parseInt(cur));\n }\n private roofColorChanged(pre: number, cur: string){\n this.ROOF.color = new Color(parseInt(cur));\n this.RIDGE_CAPPING.color = new Color(parseInt(cur));\n }\n private roofBaseColorChanged(pre: number, cur: string){\n this.ROOF_BASE.color = new Color(parseInt(cur));\n this.RECEIVER_CHANEL.color = new Color(parseInt(cur));\n }\n private zFlashingColorChanged(pre: number, cur: string) {\n this.ZFLASHING.color = new Color(parseInt(cur));\n }\n private existingRoofTypeChanged(pre: number, cur: number) {\n if(UI.existingRoofType == 0){\n this.EXISTING_ROOF_TEXTURE.L1 = this.textureLoader.load( env.modelBaseUrl + \"/assets/images/textures/custom_orb_accent_21_windspray.bmp\" );\n this.EXISTING_ROOF_TEXTURE.L1.wrapS = this.EXISTING_ROOF_TEXTURE.L1.wrapT = RepeatWrapping;\n this.EXISTING_ROOF_TEXTURE.L1.anisotropy = 1;\n\n this.EXISTING_ROOF_TEXTURE.L2 = this.textureLoader.load( env.modelBaseUrl + \"/assets/images/textures/custom_orb_accent_21_windspray.bmp\" );\n this.EXISTING_ROOF_TEXTURE.L2.wrapS = this.EXISTING_ROOF_TEXTURE.L2.wrapT = RepeatWrapping;\n this.EXISTING_ROOF_TEXTURE.L2.anisotropy = 1;\n\n this.EXISTING_ROOF_TEXTURE.W1 = this.textureLoader.load( env.modelBaseUrl + \"/assets/images/textures/custom_orb_accent_21_windspray.bmp\" );\n this.EXISTING_ROOF_TEXTURE.W1.wrapS = this.EXISTING_ROOF_TEXTURE.W1.wrapT = RepeatWrapping;\n this.EXISTING_ROOF_TEXTURE.W1.anisotropy = 1;\n\n this.EXISTING_ROOF_TEXTURE.W2 = this.textureLoader.load( env.modelBaseUrl + \"/assets/images/textures/custom_orb_accent_21_windspray.bmp\" );\n this.EXISTING_ROOF_TEXTURE.W2.wrapS = this.EXISTING_ROOF_TEXTURE.W2.wrapT = RepeatWrapping;\n this.EXISTING_ROOF_TEXTURE.W2.anisotropy = 1;\n } else if (UI.existingRoofType == 1){\n this.EXISTING_ROOF_TEXTURE.L1 = this.textureLoader.load( env.modelBaseUrl + \"/assets/images/textures/131_Concrete roof tile texture-seamless.jpg\" );\n this.EXISTING_ROOF_TEXTURE.L1.wrapS = this.EXISTING_ROOF_TEXTURE.L1.wrapT = RepeatWrapping;\n this.EXISTING_ROOF_TEXTURE.L1.anisotropy = 1;\n\n this.EXISTING_ROOF_TEXTURE.L2 = this.textureLoader.load( env.modelBaseUrl + \"/assets/images/textures/131_Concrete roof tile texture-seamless.jpg\" );\n this.EXISTING_ROOF_TEXTURE.L2.wrapS = this.EXISTING_ROOF_TEXTURE.L2.wrapT = RepeatWrapping;\n this.EXISTING_ROOF_TEXTURE.L2.anisotropy = 1;\n\n this.EXISTING_ROOF_TEXTURE.W1 = this.textureLoader.load( env.modelBaseUrl + \"/assets/images/textures/131_Concrete roof tile texture-seamless.jpg\" );\n this.EXISTING_ROOF_TEXTURE.W1.wrapS = this.EXISTING_ROOF_TEXTURE.W1.wrapT = RepeatWrapping;\n this.EXISTING_ROOF_TEXTURE.W1.anisotropy = 1;\n\n this.EXISTING_ROOF_TEXTURE.W2 = this.textureLoader.load( env.modelBaseUrl + \"/assets/images/textures/131_Concrete roof tile texture-seamless.jpg\" );\n this.EXISTING_ROOF_TEXTURE.W2.wrapS = this.EXISTING_ROOF_TEXTURE.W2.wrapT = RepeatWrapping;\n this.EXISTING_ROOF_TEXTURE.W2.anisotropy = 1;\n } \n }\n}\n","import {\n BufferGeometry,\n Vector3,\n Geometry,\n Material,\n Mesh,\n Face3,\n} from \"three\";\n\nexport interface DropdownInputItemModel {\n id: number;\n value: any;\n selected?: boolean;\n disabled?: boolean;\n bottomValue?: any;\n}\nexport interface SelectInputItemModel {\n id: number;\n value: any;\n disabled: boolean;\n selected?: boolean;\n bottomValue?: any;\n}\n\nexport interface IBay {\n index: number;\n value: number;\n isCut?: boolean;\n}\nexport interface ICost {\n index: number;\n description: string;\n value: number;\n}\n\nexport class GeometryInfo {\n private _geometry: BufferGeometry;\n public get geometry(): BufferGeometry {\n return this._geometry;\n }\n public set geometry(value) {\n this._geometry = value;\n }\n\n private _width = 0;\n public get width(): number {\n return this._width;\n }\n public set width(value) {\n this._width = value;\n }\n private _height = 0;\n public get height(): number {\n return this._height;\n }\n public set height(value) {\n this._height = value;\n }\n private _length = 0;\n public get length(): number {\n return this._length;\n }\n public set length(value) {\n this._length = value;\n }\n\n private _name = \"\";\n public get name(): string {\n return this._name;\n }\n public set name(value) {\n this._name = value;\n }\n\n constructor(\n geometry?: BufferGeometry,\n width?: number,\n height?: number,\n length?: number,\n name: string = \"\"\n ) {\n this._geometry = geometry;\n this._width = width;\n this._height = height;\n this._length = length;\n this._name = name;\n }\n}\n\nexport interface Printing2DData {\n lines: Printing2DLine[];\n texts: Print2DText[];\n sceenshoot: string;\n meshes: Printing3DGeometry[];\n info: any;\n}\nexport interface Printing2DGeometry {\n lines: Printing2DLine[];\n texts: Print2DText[];\n}\nexport interface Printing3DGeometry {\n vertices: Vector3[];\n faces: Face[];\n}\nexport interface Face {\n a: number;\n b: number;\n c: number;\n}\n\nexport interface Print3DFace {\n a: number;\n b: number;\n c: number;\n}\n\nexport interface ColorShape {\n r: number;\n g: number;\n b: number;\n}\n\nexport interface Printing2DLine {\n vertices: Vector3[];\n objectType: string;\n color?: ColorShape;\n views: Print2DView[];\n}\n\nexport interface Print2DText {\n value: string;\n position: Vector3;\n rotation: Vector3;\n views: Print2DView[];\n}\n\nexport interface Print2DView {\n viewType: ViewType;\n lineType: LineType;\n}\n\nexport enum Printing2DGeometryType {\n Line,\n LineCap,\n}\nexport enum ViewType {\n FRONT,\n LEFT,\n RIGHT,\n PLAN,\n}\nexport enum LineType {\n CONTINOUS,\n DASHED,\n}\n\nexport interface CSGWrap {\n fromGeometry: (geo: Geometry | BufferGeometry) => CSGWrap;\n fromMesh: (mesh: Mesh) => CSGWrap;\n toMesh: (csg: CSGWrap, mat: Material) => Mesh;\n subtract: (csg: CSGWrap) => CSGWrap;\n}\n","// import { DropdownInputItemModel } from \"./models\"\nexport class Objects {\n public baseColourList = [\n { id: 0x6d6c6e, value: \"Basalt\", disabled: false },\n {\n id: 0x969799,\n value: \"Bluegum\",\n disabled: false,\n },\n { id: 0xe9dcb8, value: \"Classic Cream\", disabled: false },\n { id: 0x304c3c, value: \"Cottage Green\", disabled: false },\n { id: 0xa59f8a, value: \"Cove\", disabled: true },\n { id: 0x364152, value: \"Deep Ocean\", disabled: false },\n {\n id: 0xf9fbf1,\n value: \"Dover White\",\n disabled: false,\n },\n { id: 0xb1ada3, value: \"Dune\", disabled: false },\n { id: 0xc5c2aa, value: \"Evening Haze\", disabled: false },\n { id: 0x857e73, value: \"Gully\", disabled: false },\n { id: 0x3e434c, value: \"Ironstone\", disabled: false },\n { id: 0x6c6153, value: \"Jasper\", disabled: false },\n { id: 0x737562, value: \"Mangrove\", disabled: true },\n { id: 0x5e1d0e, value: \"Manor Red\", disabled: false },\n { id: 0x323233, value: \"Monument\", disabled: false },\n { id: 0x000000, value: \"Night Sky\", disabled: false },\n { id: 0x7c846a, value: \"Pale Eucalypt\", disabled: false },\n { id: 0xcabfa4, value: \"Paperbark\", disabled: false },\n { id: 0xbdbfba, value: \"Shale Grey\", disabled: false },\n {\n id: 0xd2d1cb,\n value: \"Southerly\",\n disabled: false,\n },\n { id: 0xe4e2d5, value: \"Surfmist\", disabled: false },\n { id: 0x67432e, value: \"Terrain\", disabled: true },\n { id: 0x7f7c78, value: \"Wallaby\", disabled: false },\n { id: 0xd8e5e6, value: \"White\", disabled: false },\n { id: 0x888b8a, value: \"Windspray\", disabled: false },\n { id: 0x4b4c46, value: \"Woodland Grey\", disabled: false },\n { id: 0xfcffff, value: \"Zinc\", disabled: false },\n ];\n public beamColourList = [\n { id: 0x000000, value: \"Black\", beamEndCapColorCode: \"B\" },\n { id: 0xe9dcb8, value: \"Cream\", beamEndCapColorCode: \"C\" },\n { id: 0xe4e2d5, value: \"Surfmist\", beamEndCapColorCode: \"SM\" },\n { id: 0xcabfa4, value: \"Paperbark\", beamEndCapColorCode: \"M\" },\n { id: 0x323233, value: \"Monument\", beamEndCapColorCode: \"MM\" },\n ];\n public postColourList = [\n { id: 0x000000, value: \"Black\" },\n { id: 0xe9dcb8, value: \"Cream\" },\n { id: 0xe4e2d5, value: \"Surfmist\" },\n { id: 0xcabfa4, value: \"Paperbark\" },\n { id: 0x323233, value: \"Monument\" },\n ];\n public rakeCutTypeList = [\n { id: 0, value: \"None\" },\n { id: 1, value: \"Left\" },\n { id: 2, value: \"Right\" },\n { id: 3, value: \"Left & Right\" },\n ];\n public rakeCutType = [\n { id: 0, value: \"None\" },\n { id: 1, value: \"Angle\" },\n { id: 2, value: \"Step\" },\n ];\n public downpipeColourList = [{ id: 0xd8e5e6, value: \"White\" }];\n public flyoverColourList = [\n { id: 0xd8e5e6, value: \"Non Standard Colour\" },\n { id: 0x000000, value: \"Black\" },\n { id: 0xe9dcb8, value: \"Cream\" },\n { id: 0xe4e2d5, value: \"Surfmist\" },\n { id: 0xcabfa4, value: \"Paperbark\" },\n { id: 0x323233, value: \"Monument\" },\n ];\n public fasciaColourList = [\n { id: 0x000000, value: \"Black\" },\n { id: 0xe9dcb8, value: \"Classic Cream\" },\n { id: 0xe4e2d5, value: \"Surfmist\" },\n { id: 0x323233, value: \"Monument\" },\n ];\n public existingRoofPitchList = [\n { id: 10, value: \"10\" },\n { id: 15, value: \"15\" },\n { id: 20, value: \"20\" },\n { id: 22.5, value: \"22.5\" },\n { id: 25, value: \"25\" },\n { id: 30, value: \"30\" },\n ];\n public roofPitchList = [\n { id: 2, value: \"2\" },\n { id: 3, value: \"3\" },\n { id: 5, value: \"5\" },\n { id: 7.5, value: \"7.5\" },\n { id: 10, value: \"10\" },\n ];\n public gableRoofPitchList = [\n { id: 7.5, value: \"7.5\" },\n { id: 10, value: \"10\" },\n { id: 12, value: \"12\" },\n { id: 15, value: \"15\" },\n { id: 20, value: \"20\" },\n { id: 22.5, value: \"22.5\" },\n { id: 25, value: \"25\" },\n ];\n public wallList = [{ id: 0, value: \"Bricks\" }];\n public structureTypeList = [\n { id: 0, value: \"Existing Building\" },\n { id: 1, value: \"Fly Over\" },\n { id: 2, value: \"Back Fly Over\" },\n { id: 3, value: \"To Fascia\" },\n { id: 5, value: \"Fascia Upstand\" },\n { id: 6, value: \"Back Fascia Upstand\" },\n { id: 4, value: \"Free Standing\" },\n ];\n public structureTypeListGableLR = [\n { id: 1, value: \"Fly Over\" },\n { id: 5, value: \"Fascia Upstand\" },\n { id: 4, value: \"Free Standing\" },\n ];\n public structureTypeListGableFB = [\n { id: 0, value: \"Existing Building\" },\n { id: 1, value: \"Fly Over\" },\n { id: 5, value: \"Fascia Upstand\" },\n ];\n public existingTypeList = [\n { id: 0, value: \"None\" },\n { id: 1, value: \"Left\" },\n { id: 2, value: \"Right\" },\n { id: 3, value: \"Both\" },\n ];\n public windClassList = [\n { id: 0, value: \"N2(W33)\" },\n { id: 1, value: \"N3(W41)\" },\n { id: 2, value: \"N4(W50)\" },\n { id: 3, value: \"C1(W41)\" },\n { id: 4, value: \"C2(W50)\" },\n { id: 5, value: \"C3(W60)\" },\n ];\n public windClassListGable = [\n { id: 0, value: \"N2(W33)\" },\n { id: 1, value: \"N3(W41)\" },\n { id: 2, value: \"N4(W50)\" },\n ];\n public roofSheetingTypeList = [\n { id: 0, value: \"Coolaspan Trimspan\" },\n { id: 1, value: \"Monopanel\" },\n { id: 2, value: \"Corropanel\" },\n ];\n public flatBottomList = [\n { id: 0xe4e2d5, value: \"Surfmist/Off White flat bottom\" },\n { id: 0xe9dcb8, value: \"Classic Cream bottom\" },\n ];\n public downpipeTypeList = [{ id: 0, value: \"90mm PVC\" }];\n public thicknessList = [\n { id: 0, value: \"N/A\" },\n { id: 1, value: \"50mm\" },\n { id: 2, value: \"75mm\" },\n { id: 3, value: \"100mm\" },\n { id: 4, value: \"125mm\" },\n { id: 5, value: \"150mm\" },\n ];\n public gutterTypeList = [\n { id: 0, value: \"Gutter Square Line\" },\n { id: 1, value: \"Quad 150 Low Front Gutter Unslotted\" },\n { id: 2, value: \"Quad 150 Hi Front Gutter Slotted\" },\n ];\n public beamTypeList = [\n { id: 0, value: \"SUPERIOR BEAMS\" },\n { id: 1, value: \"TIMBER\" },\n ];\n public beamSizeList = [\n { id: 0, value: \"N/A\", beamType: 0 },\n { id: 1, value: \"SB110\", beamType: 0 },\n { id: 2, value: \"SB160\", beamType: 0 },\n { id: 3, value: \"SB210\", beamType: 0 },\n { id: 4, value: \"SB260\", beamType: 0 },\n { id: 0, value: \"N/A\", beamType: 1 },\n { id: 1, value: \"140x45 F7\", beamType: 1 },\n { id: 2, value: \"190x45 F7\", beamType: 1 },\n { id: 3, value: \"150x50 F14\", beamType: 1 },\n { id: 4, value: \"200x50 F14\", beamType: 1 },\n { id: 5, value: \"150x75 F14\", beamType: 1 },\n { id: 6, value: \"200x75 F14\", beamType: 1 },\n { id: 7, value: \"250x75 F14\", beamType: 1 },\n ];\n\n public gableConditionList = [\n { windClass: [0, 1], beamSize: [1], maxBay: 4000, maxSpan: 4000 },\n { windClass: [0, 1], beamSize: [2], maxBay: 6000, maxSpan: 7000 },\n { windClass: [0, 1], beamSize: [3, 4], maxBay: 8000, maxSpan: 8500 },\n { windClass: [2], beamSize: [2], maxBay: 4000, maxSpan: 4000 },\n { windClass: [2], beamSize: [3, 4], maxBay: 6000, maxSpan: 7000 },\n ];\n\n public gableBeamConditionList = [\n { windClass: [0, 1], lengthMax: 4000, widthMax: 4000, beamSizeIndex: 1 },\n { windClass: [0, 1], lengthMax: 6000, widthMax: 7000, beamSizeIndex: 2 },\n { windClass: [0, 1], lengthMax: 8000, widthMax: 8500, beamSizeIndex: 3 },\n { windClass: [2], lengthMax: 4000, widthMax: 4000, beamSizeIndex: 2 },\n { windClass: [2], lengthMax: 6000, widthMax: 7000, beamSizeIndex: 3 },\n ];\n\n public columnTypeList = [\n { id: 0, value: \"Superior Post 65mm x 65mm\" },\n { id: 1, value: \"Superior 90 x 90 Aluminium Post\" },\n { id: 2, value: \"Superior Post RHS 90mm x 90mm x 3.5mm\" },\n { id: 3, value: \"Timber\" },\n ];\n public columnTypeList2 = [\n {\n id: -1,\n value: \"N/A\",\n columnHeight: -1,\n baseFixingType: \"0, 1\", // 'Dynabolt, Post In Ground',\n idx: -1,\n },\n {\n id: 0,\n value: \"Superior Post 65mm x 65mm\",\n columnHeight: 3000,\n baseFixingType: \"0, 1\", // 'Dynabolt, Post In Ground',\n idx: 0,\n },\n {\n id: 2,\n value: \"Superior Post RHS 90mm x 90mm x 3.5mm\",\n columnHeight: 3600,\n baseFixingType: \"1\", // 'Post In Ground',\n idx: 2,\n },\n {\n id: 1,\n value: \"Superior 90 x 90 Aluminium Post\",\n columnHeight: 4000,\n baseFixingType: \"0, 1\", // 'Dynabolt, Post In Ground',\n idx: 1,\n },\n {\n id: 2,\n value: \"Superior Post RHS 90mm x 90mm x 3.5mm\",\n columnHeight: 4000,\n baseFixingType: \"0\", // 'Dynabolt',\n idx: 3,\n },\n {\n id: 3,\n value: \"Timber\",\n columnHeight: 4000,\n baseFixingType: \"0, 1\", // 'Dynabolt, Post In Ground',\n idx: 4,\n },\n ];\n public baseFixingTypeList = [\n { id: 0, value: \"Dynabolt\" },\n { id: 1, value: \"Post In Ground\" },\n ];\n public roles = {\n user: \"User\",\n customer: \"Customer\",\n admin: \"Admin\",\n };\n public cutOutList = [\n { id: 0, value: \"No\" },\n { id: 1, value: \"Yes\" },\n ];\n public roofTypeList = [\n { id: 0, value: \"Steel Roof\" },\n { id: 1, value: \"Tiled Roof\" },\n ];\n public fasciaBracketList = [\n { id: 0, value: \"None\" },\n { id: 150, value: \"150\" },\n { id: 300, value: \"300\" },\n { id: 450, value: \"450\" },\n { id: 600, value: \"600\" },\n ];\n}\n","import { Vector3 } from \"three\";\n\ntype Edge = [Vector3, Vector3]\ntype Polygon = Array;\n\nexport const PolygonUtils = {\n getVectorLength(vector): number {\n return Math.sqrt(vector.x * vector.x + vector.y * vector.y + vector.z * vector.z);\n },\n dotProduct(v0, v1): number {\n return v0.x * v1.x + v0.y * v1.y + v0.z * v1.z;\n },\n \n /**\n * Get projected point P' of P on a segment\n * @return projected point p.\n */\n getProjectedPointOnSegment(segment: Edge, point: any): any {\n // get dot product of e1, e2\n const e1 = this.toVector(...segment);\n const e2 = this.toVector(segment[0], point);\n const valDp = this.dotProduct(e1, e2);\n // get length of vectors\n const lenLineE1 = this.getVectorLength(e1);\n const lenLineE2 = this.getVectorLength(e2);\n const cos = valDp / (lenLineE1 * lenLineE2);\n // length of v1P'\n const projLenOfLine = cos * lenLineE2;\n return new Vector3(segment[0].x + (projLenOfLine * e1.x) / lenLineE1, segment[0].y + (projLenOfLine * e1.y) / lenLineE1, segment[0].z + (projLenOfLine * e1.z) / lenLineE1)\n },\n isProjectionOnSegment(point, segment: Edge): boolean {\n const e1 = this.toVector(...segment);\n const dp = this.dotProduct(this.toVector(point, segment[1]), e1);\n const max = e1.x * e1.x + e1.y * e1.y + e1.z * e1.z;\n return dp >= 0 && dp <= max;\n },\n \n /**\n * Convert a polygon a list of edges\n * Except last point to start point\n * @param polygon\n */\n toEdgeList(polygon: Polygon): Array {\n const result: Array = [];\n for (let i = 0; i < polygon.length - 1; i++) {\n const pointA = polygon[i];\n const pointB = polygon[i === polygon.length - 1 ? 0 : i + 1];\n result.push([pointA, pointB]);\n }\n return result;\n },\n toVector(A: Vector3, B: Vector3): Vector3 {\n return new Vector3( B.x - A.x, B.y - A.y, B.z - A.z)\n },\n \n /**\n * Return the cumulated rotation around a point of another point\n * which is translating on a polygon edge.\n * The returned value is floored to deal with javscript float number imprecision.\n * So if the absolute value winding number is lower than 1, it\n * means that the rotation is null.\n * @param polygon\n * @param point\n */\n getWindingNumber(polygon: Polygon, point: any): number {\n const angles = [];\n let result: number = 0;\n for (let index = 0; index < polygon.length; index++) {\n const vertex = polygon[index];\n const nextVertex =\n index === polygon.length - 1 ? polygon[0] : polygon[index + 1];\n // Get the angle between the previous vertex, the point and the current vertex\n const angle = this.getAngle(vertex, point, nextVertex);\n angles.push(angle);\n result += angle;\n }\n return Math.floor(result);\n },\n \n /**\n * Calculates the signed (counter/clockwize) angle ABC (in radian).\n * @param A\n * @param B\n * @param C\n */\n getAngle(A: any, B: any, C: any): number {\n const v0 = { x: A.x - B.x, y: A.y - B.y, z: A.z - B.z };\n const v1 = { x: C.x - B.x, y: C.y - B.y, z: C.z - B.z };\n const angle = new Vector3(v0.x, v0.y, v0.z).angleTo(new Vector3(v1.x, v1.y, v1.z));\n // Special case, the angle cross over the complete circle\n return this.round(\n Math.abs(angle) > Math.PI\n ? angle < 0\n ? angle + 2 * Math.PI\n : angle - 2 * Math.PI\n : angle\n );\n },\n \n /**\n * Return true if a point lies on a segment\n * @param segment\n * @param point\n */\n isPointOnSegment(segment: Edge, point: any): boolean {\n const distAP = segment[0].distanceTo(point);\n const distBP = segment[1].distanceTo(point);\n const distAB = segment[1].distanceTo(segment[0]);\n return distAB.toFixed(5) === (distAP + distBP).toFixed(5);\n },\n getDistance(A: any, B: any): number {\n return Math.sqrt((A.x - B.x) * (A.x - B.x) + (A.y - B.y) * (A.y - B.y));\n },\n \n /**\n * Workaround javascript imprecision\n */\n round(number: number) {\n return Math.round((number + Number.EPSILON) * 100) / 100;\n },\n\n getClosestPointInsidePolygon(poly: Polygon, pos: any): any {\n // Except case: Inside the polygon. Never happen.\n // // Case I\n // const wn = this.getWindingNumber(poly, pos);\n // if (Math.abs(wn) > 1) {\n // return pos;\n // }\n\n // Case II\n if (this.toEdgeList(poly).some(edge => this.isPointOnSegment(edge, pos))) {\n return pos;\n }\n\n // Case III - A\n // Get edges which faces the points.\n \n const closestPointOnEdge = this.toEdgeList(poly)\n .filter(edge => this.isProjectionOnSegment(pos, edge))\n .reduce(\n ([_pp, minDistance], edge) => {\n // Get the projected point on this edge\n const pp = this.getProjectedPointOnSegment(edge, pos);\n // Get the distance from the edge\n const distance = this.getDistance(pos, pp);\n // Return this projection if the distance is smaller\n return distance < minDistance ? [pp, distance] : [_pp, minDistance];\n },\n [undefined, Infinity] as [any | undefined, number]\n )[0];\n \n // Case III - B\n const closestVertex = poly.reduce(\n ([closestVertex, minDistance], vertex) => {\n // Get distance from vertex to target\n const distance = this.getDistance(vertex, pos);\n // Return this vertex if the distance is smaller\n return distance < minDistance\n ? [vertex, distance]\n : [closestVertex, minDistance];\n },\n [undefined, Infinity] as [any | undefined, number]\n )[0];\n if (!closestPointOnEdge) {\n return closestVertex;\n }\n // At this point we can get both an edge and a vertex.\n // Get the closest between the edge and the vertex\n return this.getDistance(pos, closestPointOnEdge) < this.getDistance(pos, closestVertex)\n ? closestPointOnEdge\n : closestVertex;\n }\n}","import { Util } from \"./utils\";\n// import { AppComponent } from '../app.component';\nimport { HomeComponent as AppComponent } from \"../containers/home/home.component\";\nimport { Scene } from \"three\";\nimport { Printing2DLine, Printing2DData } from \"./models\";\nimport { environment } from \"src/environments/environment\";\n\nexport class Printing2DManager {\n private scene: Scene;\n private APP: AppComponent;\n private utils: Util;\n\n public constructor(app: AppComponent) {\n this.utils = new Util();\n this.APP = app;\n this.scene = this.APP.scene;\n }\n\n public print(jobInfo: any): void {\n let dimemsionGeo = this.APP.dimensionManager.getOutlines();\n let patiosOutlines = this.APP.patiosManager.getOutlines();\n let lines: Printing2DLine[] = [\n ...patiosOutlines.lines,\n ...this.APP.existingRoofManager.getOutLines().lines,\n ...this.APP.existingWallManager.getOutLines().lines,\n ...this.APP.fasciaManager.getOutLines().lines,\n ...this.APP.eaveManager.getOutLines().lines,\n ...dimemsionGeo.lines,\n ];\n\n let texts = [...dimemsionGeo.texts, ...patiosOutlines.texts];\n\n let model: Printing2DData = {\n lines: lines,\n texts: texts,\n sceenshoot: this.APP.canvas.toDataURL(),\n meshes: null,\n info: jobInfo,\n };\n\n this.APP.printService.printPDF(model).subscribe(\n (rs) => {\n const updateInfo = {\n id: jobInfo.id,\n files: {\n engineeringFile: rs.engineeringFile,\n quotationFile: rs.quotationFile,\n thumbnailFile: rs.thumbnailFile,\n },\n };\n this.APP.onUpdateJobFiles(updateInfo);\n },\n (error) => {\n this.APP.message.error(\"PDF file upload failed\");\n this.APP.isUploading = false;\n this.APP.currentStep = 0;\n }\n );\n }\n\n public printTest() {\n let dimemsionGeo = this.APP.dimensionManager.getOutlines();\n let patiosOutlines = this.APP.patiosManager.getOutlines();\n let lines: Printing2DLine[] = [\n ...patiosOutlines.lines,\n ...this.APP.existingRoofManager.getOutLines().lines,\n ...this.APP.existingWallManager.getOutLines().lines,\n ...this.APP.fasciaManager.getOutLines().lines,\n ...this.APP.eaveManager.getOutLines().lines,\n ...dimemsionGeo.lines,\n ];\n\n let texts = [...dimemsionGeo.texts, ...patiosOutlines.texts];\n\n // let meshes = this.getAllMesh(this.scene);\n // console.log('MESHES NE', meshes);\n\n let model: Printing2DData = {\n lines: lines,\n texts: texts,\n sceenshoot: this.APP.canvas.toDataURL(),\n meshes: null,\n info: {\n userId: \"5e437a5b400f7958b4cfdbf7\",\n id: \"6466fd04426553c1543c10d8\",\n uploadFolder: \"superiorsoftware_api/upload/dataFiles\",\n pathLogo: \"superiorsoftware_api/media/\",\n pathPDF: \"\",\n quoteNo: \"ABCDE20251\",\n quoteBy: \"User SPC\",\n windClass: \"N2(W33)\",\n clientName: \"TEST\",\n siteAddress: \"\",\n date: \"2023-05-19T04:36:41.152Z\",\n builder: \"SPC Dev\",\n caseType: \"A\",\n structureType: \"To Existing Building\",\n roofPitch: 2,\n roofSheetingType: \"Coolaspan Trimspan\",\n roofOverallLength: 3810,\n roofOverallWidth: 4200,\n maxSpan: 5100,\n span: 4000,\n multiSpan: 0,\n beamType: \"Superior Beam 110mm x 65mm (Surfmist)\",\n columnType: \"Superior Post 65mm x 65mm\",\n largestBay: 3810,\n maxUpliftOfBeam: 4.55,\n upliftLoadOnBeam: 1.28,\n maxPostUplift: 1.91,\n postUplift: 2.437,\n baseFixingType: \"Dynabolt\",\n footingSize: \"Min 100mm slab\",\n maxFootingHoldDown: \"16\",\n thickness: \"50mm\",\n ABNNo: \"\",\n licenseNumber: \"\",\n company: \"SPC Dev\",\n userAddress: \"43 Commerce Circuit\",\n userEmail: \"tester@gmail.com\",\n userPhone: \"0738073955\",\n bankName: \"\",\n accountNumber: \"\",\n BSBNumber: \"\",\n suburb: \"\",\n postcode: \"\",\n state: \"\",\n phone: \"\",\n email: \"\",\n baySize: 3810,\n noOfBay: 1,\n buildingHeight: 2200,\n frontOverhang: 200,\n backOverhang: 0,\n leftOverhang: 0,\n rightOverhang: 0,\n flatBottom: \"Surfmist/Off White flat bottom\",\n bargeType: \"Coolaspan Trimspan\",\n gutterType: \"Gutter Square Line\",\n zFlashingType: \"Coolaspan Trimspan\",\n downpipeType: \"90mm PVC\",\n beamSize: \"SB110\",\n colourRoof: \"Surfmist\",\n colourBarge: \"Surfmist\",\n colourGutter: \"Surfmist\",\n colourZFlashing: \"Surfmist\",\n colourPost: \"Surfmist\",\n colourBeam: \"Surfmist\",\n colourDownpipe: \"White\",\n note: \"\\n\",\n supplyType: \"Supply and Install\",\n totalPrice: 2417.88,\n deposit: 0,\n stage1: 0,\n stage2: 0,\n finalPayment: 2417.88,\n fullAddress: \"\",\n depositText: \"Deposit\",\n stage1Text: \"Stage 1\",\n stage2Text: \"Stage 2\",\n listBay: [\n {\n index: 1,\n value: 3810,\n isCut: false,\n },\n ],\n },\n };\n\n // console.log('2D PRINTING DATA', model);\n\n //return;\n\n this.APP.printService.printPDF(model).subscribe(\n (rs) => {\n // let a = document.createElement(\"a\");\n // a.href = rs.file_url;\n // a.target = '_blank';\n // document.body.appendChild(a);\n // a.click();\n // a.remove();\n },\n (error) => {\n // this.message.error(error);\n this.APP.message.error(\"PDF file upload failed\");\n this.APP.isUploading = false;\n this.APP.currentStep = 0;\n }\n );\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { Object3D, Raycaster, Vector2 } from \"three\";\nimport { DragControls } from \"../libs/DragControls\";\nimport { HomeComponent } from \"src/app/containers/home/home.component\";\nimport { MOUSE_EVENT, OBJECT_TYPE } from \"../app.constants\";\nimport { TransformControls } from \"three/examples/jsm/controls/TransformControls\";\nimport { DIMENSION_LABEL_TYPE, GEOMETRY_TYPE } from \"../app.config\";\nimport { UI } from \"./ui\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport default class SelectionManager {\n static ins: SelectionManager\n\n mouse: Vector2;\n\n onMouseClickPtr = this.onMouseClick.bind(this)\n onMouseDownPtr = this.onMouseDown.bind(this)\n onMouseMovePtr = this.onMouseMove.bind(this)\n onMouseUpPtr = this.onMouseUp.bind(this)\n\n onDragStartPtr = this.onDragStart.bind(this)\n onDragEndPtr = this.onDragEnd.bind(this)\n onDragPtr = this.onDrag.bind(this)\n\n private raycaster: Raycaster;\n selectEnabled = true;\n debounceMouseMoveHld = undefined;\n\n dragControl: DragControls\n transformControl: TransformControls\n\n dragObjects: Object3D[] = []\n\n clickEventHandlers = []\n mouseHoverEventHandlers = []\n mouseMoveEventHandlers = []\n mouseDownEventHandlers = []\n mouseUpEventHandlers = []\n\n dragStartEventHandlers = []\n dragEndEventHandlers = []\n dragEventHandlers = []\n\n init() {\n SelectionManager.ins = this\n return new Promise(resolve => {\n this.dragControl = new DragControls(this.dragObjects, HomeComponent.ins.camera, HomeComponent.ins.renderer.domElement);\n this.transformControl = new TransformControls(HomeComponent.ins.camera, HomeComponent.ins.renderer.domElement);\n this.transformControl.addEventListener('change', () => { HomeComponent.ins.renderStatic() });\n this.transformControl.addEventListener('dragging-changed', function (event) {\n HomeComponent.ins.control.enabled = !event.value;\n });\n HomeComponent.ins.scene.add(this.transformControl)\n this.raycaster = this.dragControl.raycaster\n this.dragControl.addEventListener('dragstart', (event) => {\n HomeComponent.ins.control.enabled = false;\n this.onDragStart(event)\n });\n this.dragControl.addEventListener('drag', (event) => {\n this.onDrag(event)\n })\n this.dragControl.addEventListener('dragend', (event) => {\n HomeComponent.ins.control.enabled = true;\n this.onDragEnd(event)\n });\n console.log('drag control', this.dragControl.raycaster)\n resolve()\n })\n }\n\n enable() {\n this.mouse = new Vector2(0, 0);\n //this.raycaster = new Raycaster();\n\n HomeComponent.ins.canvas.addEventListener(MOUSE_EVENT.DOWN, this.onMouseDownPtr, false);\n HomeComponent.ins.canvas.addEventListener(MOUSE_EVENT.MOVE, this.onMouseMovePtr, false);\n HomeComponent.ins.canvas.addEventListener(MOUSE_EVENT.UP, this.onMouseUpPtr, false);\n HomeComponent.ins.canvas.addEventListener(MOUSE_EVENT.CLICK, this.onMouseClickPtr, false);\n\n\n }\n disable() {\n this.dragControl.deactivate()\n HomeComponent.ins.canvas.removeEventListener(MOUSE_EVENT.DOWN, this.onMouseDownPtr, false);\n HomeComponent.ins.canvas.removeEventListener(MOUSE_EVENT.MOVE, this.onMouseMovePtr, false);\n HomeComponent.ins.canvas.removeEventListener(MOUSE_EVENT.UP, this.onMouseUpPtr, false);\n HomeComponent.ins.canvas.removeEventListener(MOUSE_EVENT.CLICK, this.onMouseClickPtr, false);\n }\n enableTransformObject(intersects) {\n const obj = intersects.reduce((prev, cur) => {\n if (cur.distance < prev.distance\n && cur.object.name !== 'ground'\n && (!cur.object.userData || cur.object.userData.type !== 'PANEL_BACK')\n && (!cur.object.userData || cur.object.userData.type !== 'PANEL_FRONT')\n && (!cur.object.userData.wallPlane)\n ) {\n prev = cur\n }\n return prev\n }, { distance: 999999, object: null })\n\n if (!obj.object) {\n return;\n }\n\n this.transformControl.attach(obj.object)\n }\n executeRayCast() {\n this.raycaster.setFromCamera(this.mouse, HomeComponent.ins.camera);\n const objects = []\n HomeComponent.ins.scene.traverse((o) => {\n if(o.userData?.type === OBJECT_TYPE.HIGHLIGHT_BOX \n || o.userData?.type === GEOMETRY_TYPE.TEXT_COVER\n || o.userData?.type === OBJECT_TYPE.UI_CONTROL_EDIT_WALL_LENGTH2\n || o.userData?.type === OBJECT_TYPE.UI_CONTROL_EDIT_WALL_WIDTH1\n || o.userData?.type === OBJECT_TYPE.UI_CONTROL_EDIT_WALL_WIDTH2\n || o.userData?.type === OBJECT_TYPE.CLICK_CONTROL_CUTOUT\n || o.userData?.type === OBJECT_TYPE.CUT_BEAM\n ){\n //if(o.type === 'Mesh'){\n objects.push(o)\n }\n })\n return this.raycaster.intersectObjects(objects, true);\n }\n executeRayCastScene(){\n this.raycaster.setFromCamera(this.mouse, HomeComponent.ins.camera);\n return this.raycaster.intersectObjects(HomeComponent.ins.scene.children, true);\n }\n onMouseDown(event) {\n //this.mouseDownEventHandlers.forEach(a => { a(event) })\n }\n onMouseMove(event) {\n event.preventDefault();\n const offsetX = HomeComponent.ins.isVisibleProperty ? 400 : 0;\n this.mouse.x =\n ((event.clientX - offsetX) / HomeComponent.ins.canvas.width) * 2 - 1;\n this.mouse.y =\n -((event.clientY - 90) / HomeComponent.ins.canvas.height) * 2 + 1;\n\n // if(this.debounceMouseMoveHld){\n // clearTimeout(this.debounceMouseMoveHld)\n // }\n\n const intersects = this.executeRayCast()\n // if(intersects.length > 0){\n // this.mouseHoverEventHandlers.forEach(a => { a(intersects) })\n // }\n\n this.mouseHoverEventHandlers.forEach(a => { a(intersects) })\n\n // //temporary treat drag = ctrl + move\n // //if(event.ctrlKey){\n // this.mouseMoveEventHandlers.forEach(a => { a(event) })\n // //}\n }\n onMouseUp(event) {\n //this.mouseUpEventHandlers.forEach(a => { a(event) })\n }\n onMouseClick(event) {\n const intersects = this.executeRayCast()\n\n if (intersects.length === 0) {\n return;\n }\n // intersects.forEach(el => console.log(el.object.userData))\n\n this.selectObject(intersects, event)\n // this.enableTransformObject(intersects)\n\n this.clickEventHandlers.forEach(a => { a(intersects) })\n }\n selectObject(intersects, event){\n if (!this.selectEnabled) {\n return\n }\n const obj = intersects.reduce((prev, cur) => {\n if (cur.distance < prev.distance\n && cur.object.type != 'TransformControlsPlane'\n && cur.object.type != 'HIGHLIGHT_BOX'\n ) {\n prev = cur\n }\n return prev\n }, { distance: 999999, object: null })\n\n if (!obj.object) {\n return;\n }\n if(!UI.enableControl) {\n return\n }\n if(obj.object.userData.type && obj.object.userData.type === GEOMETRY_TYPE.TEXT_COVER){\n const labelType = obj.object.userData.labelType\n if(!labelType){\n return\n }\n\n switch(labelType){\n case DIMENSION_LABEL_TYPE.LENGTH_1:\n case DIMENSION_LABEL_TYPE.LENGTH_2:\n case DIMENSION_LABEL_TYPE.WIDTH_1:\n case DIMENSION_LABEL_TYPE.WIDTH_2:\n case DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL:\n case DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL:\n case DIMENSION_LABEL_TYPE.FRONT_OVERHANG:\n case DIMENSION_LABEL_TYPE.BACK_OVERHANG:\n case DIMENSION_LABEL_TYPE.LEFT_OVERHANG:\n case DIMENSION_LABEL_TYPE.RIGHT_OVERHANG:\n case DIMENSION_LABEL_TYPE.SPAN:\n case DIMENSION_LABEL_TYPE.MULTI_SPAN:\n case DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL:\n case DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL:\n HomeComponent.ins.dialogDimension.show(true, labelType)\n break\n case DIMENSION_LABEL_TYPE.BAY:\n HomeComponent.ins.dialogDimension.show(true, labelType, { bayIndex: obj.object.userData.bayNum })\n break\n }\n }\n if(obj.object?.userData?.type === OBJECT_TYPE.UI_CONTROL_EDIT_WALL_WIDTH1){\n if(obj.object?.userData?.left){\n if(UI.existingType == 3){\n HomeComponent.ins.sltExistingType.setSelected(2)\n } else {\n HomeComponent.ins.sltExistingType.setSelected(0)\n }\n } else if (obj.object?.userData?.right){\n if(UI.existingType == 3){\n HomeComponent.ins.sltExistingType.setSelected(1)\n } else {\n HomeComponent.ins.sltExistingType.setSelected(0)\n }\n }\n } else if(obj.object?.userData?.type === OBJECT_TYPE.UI_CONTROL_EDIT_WALL_LENGTH2){\n HomeComponent.ins.sldExistingLength2.setValue(0);\n } else if(obj.object?.userData?.type === OBJECT_TYPE.UI_CONTROL_EDIT_WALL_WIDTH2){\n HomeComponent.ins.sldExistingWidth2.setValue(0);\n }\n if(obj.object?.userData?.type === OBJECT_TYPE.CLICK_CONTROL_CUTOUT){\n HomeComponent.ins.sltCutOut.setSelected(1);\n } else if(obj.object?.userData?.type === OBJECT_TYPE.CUT_BEAM){\n const bayIndex = obj.object?.userData.bayIndex\n UI.listBay[bayIndex].isCut = !!!UI.listBay[bayIndex].isCut\n HomeComponent.ins.dialogEditBay.onOK()\n }\n }\n onDragStart(event) {\n this.dragStartEventHandlers.forEach(a => { a(event) })\n }\n onDragEnd(event) {\n this.dragEndEventHandlers.forEach(a => { a(event) })\n }\n onDrag(event) {\n this.dragEventHandlers.forEach(a => { a(event) })\n }\n\n\n addEventListener(event, handler, dragObject?) {\n if (event === MOUSE_EVENT.CLICK) {\n if(this.clickEventHandlers.indexOf(handler) < 0){\n this.clickEventHandlers.push(handler)\n }\n }\n if (event === MOUSE_EVENT.HOVER) {\n if(this.mouseHoverEventHandlers.indexOf(handler) < 0){\n this.mouseHoverEventHandlers.push(handler)\n }\n }\n if (event === MOUSE_EVENT.DOWN) {\n if(this.mouseDownEventHandlers.indexOf(handler) < 0){\n this.mouseDownEventHandlers.push(handler)\n }\n }\n if (event === MOUSE_EVENT.MOVE) {\n if(this.mouseMoveEventHandlers.indexOf(handler) < 0){\n this.mouseMoveEventHandlers.push(handler)\n }\n }\n if (event === MOUSE_EVENT.UP) {\n if(this.mouseUpEventHandlers.indexOf(handler) < 0){\n this.mouseUpEventHandlers.push(handler)\n }\n }\n if (event == MOUSE_EVENT.DRAG_START) {\n if(this.dragStartEventHandlers.indexOf(handler) < 0){\n this.dragStartEventHandlers.push(handler)\n }\n }\n if (event == MOUSE_EVENT.DRAG_END) {\n if(this.dragEndEventHandlers.indexOf(handler) < 0){\n this.dragEndEventHandlers.push(handler)\n }\n }\n if (event == MOUSE_EVENT.DRAG) {\n if(this.dragEventHandlers.indexOf(handler) < 0){\n this.dragEventHandlers.push(handler)\n }\n \n this.dragObjects.push(dragObject)\n }\n }\n removeEventListener(event, handler) {\n if (event === MOUSE_EVENT.CLICK) {\n const idx = this.clickEventHandlers.indexOf(handler)\n if (idx > -1) {\n this.clickEventHandlers.splice(idx, 1)\n }\n\n }\n if (event === MOUSE_EVENT.HOVER) {\n const idx = this.mouseHoverEventHandlers.indexOf(handler)\n if (idx > -1) {\n this.mouseHoverEventHandlers.splice(idx, 1)\n }\n }\n if (event === MOUSE_EVENT.DOWN) {\n const idx = this.mouseDownEventHandlers.indexOf(handler)\n if (idx > -1) {\n this.mouseDownEventHandlers.splice(idx, 1)\n }\n }\n if (event === MOUSE_EVENT.MOVE) {\n const idx = this.mouseMoveEventHandlers.indexOf(handler)\n if (idx > -1) {\n this.mouseMoveEventHandlers.splice(idx, 1)\n }\n }\n if (event === MOUSE_EVENT.UP) {\n const idx = this.mouseUpEventHandlers.indexOf(handler)\n if (idx > -1) {\n this.mouseUpEventHandlers.splice(idx, 1)\n }\n }\n }\n}","import {\n CONFIG,\n OFFSET_GUTTER_TO_WALL,\n PATIOS_ROOF_TYPE,\n} from \"src/app/app.config\";\nimport { environment } from \"src/environments/environment\";\nimport { Scene } from \"three\";\nimport { GEOMETRY_CATEGORY, GEOMETRY_TYPE, INIT } from \"../app.config\";\nimport {\n BUILDING_SIDE,\n CONNECTION_TYPE,\n CUTOUT_ENABLE,\n EXISTING_BUILDING_CONFIG,\n FASCIA_BRACKET_FIT,\n RAKECUT_TYPE,\n} from \"../app.constants\";\nimport { HomeComponent } from \"../containers/home\";\nimport { PatiosBackFlyOverManager } from \"./back_flyover\";\nimport { ExistingBuildingManager } from \"./existing_building\";\nimport { FasciaManager } from \"./fascia/index\";\nimport { PatiosFlyOverManager } from \"./flyover\";\nimport { PatiosFreeStandingManager } from \"./free_standing\";\nimport { PatiosGableFreeStandingManager } from \"./gable_free_standing\";\nimport { PatiosGableLRFlyOverManager } from \"./gable_lr_flyover\";\nimport { GeometryManager } from \"./geometry.manager\";\nimport { UI } from \"./ui\";\nimport { GableFBExistingBuildingManager } from \"./gable_fb_existing_building\";\nimport { PatiosGableFBFlyOverManager } from \"./gable_fb_flyover\";\nimport { GableLRFasciaManager } from \"./gable_lr_fascia\";\nimport { GableFBFasciaManager } from \"./gable_fb_fascia\";\nimport _ from \"lodash\";\nimport { Util } from \"./utils\";\n\ndeclare var $;\n\nexport class UIManager {\n private scene: Scene;\n private APP: HomeComponent;\n private debouncingHandle;\n private debouncingTimeout = 500; //ms\n private ignoreEnableCutoutEvent = false;\n private utils: Util;\n public previousShouldSnapFasciaRoofToWall: Boolean = false;\n public shouldSnapFasciaRoofToWall: Boolean = false;\n\n // private totalBaySize: number;\n constructor(app: HomeComponent) {\n this.APP = app;\n this.scene = app.scene;\n this.utils = new Util();\n\n // Should register this event before handle any action\n this.APP.sldBackOverhang.addAction(this.onBackOverhangChanged.bind(this));\n\n this.APP.sltFasciaUpstandBrackets.addAction(\n this.onFasciaUpstandBracketChanged.bind(this)\n );\n\n this.APP.sldFlyOverBracketHeight.addAction(this.onSetColumnType.bind(this));\n this.APP.sldSpan.addAction(this.updateOverallValue.bind(this));\n this.APP.sldMultiSpan.addAction(this.updateOverallValue.bind(this));\n this.APP.sldLeftOverhang.addAction(this.updateOverallValue.bind(this));\n this.APP.sldRightOverhang.addAction(this.updateOverallValue.bind(this));\n this.APP.sldBackOverhang.addAction(this.updateOverallValue.bind(this));\n this.APP.sldFrontOverhang.addAction(this.updateOverallValue.bind(this));\n this.APP.dialogEditBay.addAction(this.updateOverallValue.bind(this));\n this.APP.dialogEditBay.addAction(this.onDialogEditBayChanged.bind(this));\n this.APP.sldSpan.addAction(this.onSpanChanged.bind(this));\n this.APP.sldBaySize.addAction(this.onBaySizeChanged.bind(this));\n\n this.APP.sltStructureType.addAction(this.onStructureTypeChanged.bind(this));\n this.APP.sldExistingLength2.addAction(this.onLength2Changed.bind(this));\n this.APP.sldExistingWidth1.addAction(this.onWidth1Changed.bind(this));\n this.APP.sldExistingWidth2.addAction(this.onWidth2Changed.bind(this));\n this.APP.sldBuildingHeight.addAction(\n this.onBuildingHeightChanged.bind(this)\n );\n this.APP.sldExistingWallHeight.addAction(\n this.onExistingWallHeightChanged.bind(this),\n 1\n );\n\n this.APP.sltBeamType.addAction(this.onBeamTypeChanged.bind(this));\n this.APP.sltColumnType.addAction(this.onColumnTypeChanged.bind(this));\n this.APP.sltBaseFixingType.addAction(\n this.onBaseFixingTypeChanged.bind(this)\n );\n\n this.APP.sltCutOut.addAction(this.onCutoutChanged.bind(this));\n this.APP.sltLeftCutType.addAction(this.onRakeCutLeftChanged.bind(this));\n this.APP.sltRightCutType.addAction(this.onRakeCutRightChanged.bind(this));\n this.APP.sldSpan.addAction(this.onSetColumnType.bind(this));\n this.APP.sldMultiSpan.addAction(this.onSetColumnType.bind(this));\n [\n this.APP.sldEaveWidth,\n this.APP.sldExistingWallHeight,\n this.APP.sldFasciaDepth,\n this.APP.sldBaySize,\n this.APP.sldExistingLength,\n this.APP.sldExistingLength2,\n this.APP.sldExistingWidth1,\n this.APP.sldExistingWidth2,\n this.APP.sltExistingType,\n this.APP.sltStructureType,\n this.APP.sltWindClass,\n this.APP.sltWallType,\n this.APP.sltExistingRoofType,\n this.APP.sldMultiSpan,\n this.APP.sldBuildingHeight,\n this.APP.sldFrontOverhang,\n this.APP.sldBackOverhang,\n this.APP.sldLeftOverhang,\n this.APP.sldRightOverhang,\n this.APP.sltRoofPitch,\n this.APP.sldFlyOverBracketHeight,\n this.APP.sldNoOfBay,\n this.APP.dialogEditBay,\n this.APP.sltExistingRoofPitch,\n this.APP.sldRoofOverallLength,\n this.APP.sldRoofOverallWidth,\n this.APP.sldMinHeight,\n this.APP.sltLeftCutType,\n this.APP.sltRightCutType,\n this.APP.sldLeftCutVertical,\n this.APP.sldLeftCutHorizontal,\n this.APP.sldRightCutVertical,\n this.APP.sldRightCutHorizontal,\n this.APP.sltFlatBottom,\n this.APP.sltZFlashingType,\n // -----------------------\n this.APP.sltRoofSheetingType,\n this.APP.sltBaseFixingType,\n this.APP.sltRoofThickness,\n this.APP.sltBargeType,\n this.APP.sltDripBarge,\n this.APP.sltDownpipeType,\n this.APP.sltGutterType,\n this.APP.sltBeamType,\n this.APP.sltBeamSize,\n this.APP.sltHouseBeamSize,\n this.APP.sltReceiverType,\n this.APP.sltColumnType,\n this.APP.sltColourRoof,\n this.APP.sltColourBarge,\n this.APP.sltColourGutter,\n this.APP.sltColourZFlashing,\n this.APP.sltColourPost,\n this.APP.sltColourBeam,\n this.APP.sltColourBracket,\n this.APP.sltColourFasciaBracket,\n this.APP.sltColourDownpipe,\n this.APP.sltFasciaUpstandBrackets,\n this.APP.sltUpFasciaUpstandBracket,\n this.APP.chkRapidSetCement,\n this.APP.chkHasHouseBeam,\n ].forEach((c) => c.addAction(this.onUIChanged.bind(this), 4));\n\n this.APP.dialogEditBay.addAction(this.setBeamSize.bind(this));\n this.APP.sldBaySize.addAction(this.setBeamSize.bind(this));\n this.APP.sldSpan.addAction(this.setBeamSize.bind(this));\n this.APP.sltWindClass.addAction(this.setBeamSize.bind(this));\n this.APP.sltBeamType.addAction(this.setBeamSize.bind(this));\n this.APP.sltBeamSize.addAction(this.setMaxSpan.bind(this));\n\n this.APP.sltWindClass.addAction(this.setMaxSpan.bind(this));\n\n [\n this.APP.sltCutOut,\n this.APP.sltStructureType,\n this.APP.sldExistingWallHeight,\n this.APP.sldExistingWidth1,\n this.APP.sldEaveWidth,\n this.APP.sltRoofPitch,\n this.APP.sltExistingType,\n this.APP.sltRoofSheetingType,\n this.APP.sltRoofThickness,\n ].forEach((c) =>\n c.addAction(this.handleSnapRoofToExistingWhenCutOut.bind(this), 5)\n );\n }\n\n public load(): Promise {\n return new Promise((resolve, reject) => {\n this.updateOverallValue(null, null);\n this.APP.sltStructureType.setSelected(INIT.CONNECTION_TYPE); // <= setSelected doesn't work in case value = 0, need to call onStructureTypeChanged instead\n this.onStructureTypeChanged(null, INIT.CONNECTION_TYPE);\n this.validateCutout();\n\n //this.setDefaultValueForTest();\n resolve();\n });\n }\n\n setDefaultValueForTest() {\n if (environment.production) {\n return;\n }\n\n // this.APP.sltExistingType.setSelected(1);\n // this.APP.sldExistingWidth1.setValue(2000);\n // this.APP.sldExistingLength2.setValue(3000);\n // this.APP.sldExistingWidth2.setValue(2800);\n\n setTimeout(() => {\n //this.APP.sltCutOut.setSelected(1);\n this.APP.sltStructureType.setSelected(CONNECTION_TYPE.FASCIA);\n this.APP.sltColourRoof.setSelected(0x304c3c);\n }, 1000);\n }\n\n onUIChanged(previousValue: number, currentValue: number) {\n this.validateCutout();\n this.validateRakeCut();\n this.APP.onSetMaxValue();\n if (this.debouncingHandle) {\n clearTimeout(this.debouncingHandle);\n }\n this.debouncingHandle = setTimeout(() => {\n this.onUIChangedDefer(previousValue, currentValue);\n }, this.debouncingTimeout);\n\n this.APP.renderStatic();\n }\n\n onUIChangedDefer(previousValue: number, currentValue: number) {\n this.APP.onCalcPrice();\n this.APP.renderStatic();\n }\n onStructureTypeChanged(previousValue: number, currentValue: number) {\n this.scene.remove(\n ...this.scene.children.filter(\n (o) => o.userData.category === GEOMETRY_CATEGORY.PATIOS\n )\n );\n // this.APP.dimensionManager.unload();\n\n if (this.APP.patiosManager) {\n this.APP.patiosManager.destroy();\n this.APP.patiosManager = null;\n }\n\n this.APP.sldBackOverhang.isDisabled = false;\n this.APP.sldBuildingHeight.isDisabled = true;\n let _flag = false;\n const _curVal = +currentValue;\n if (_curVal === CONNECTION_TYPE.FREE_STANDING) {\n this.APP.baseFixingTypeList = this.APP.objects.baseFixingTypeList.filter(\n (f) => f.id === 1\n );\n this.APP.sltBaseFixingType.setSelected(1);\n } else {\n this.APP.baseFixingTypeList = [...this.APP.objects.baseFixingTypeList];\n }\n switch (_curVal) {\n case CONNECTION_TYPE.EXISTING:\n if (\n this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF &&\n this.APP.isFBRoof\n ) {\n this.APP.patiosManager = new GableFBExistingBuildingManager(this.APP);\n } else {\n this.APP.patiosManager = new ExistingBuildingManager(this.APP);\n }\n break;\n case CONNECTION_TYPE.FLY_OVER:\n if (\n this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF &&\n !this.APP.isFBRoof\n ) {\n this.APP.patiosManager = new PatiosGableLRFlyOverManager(this.APP);\n } else if (\n this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF &&\n this.APP.isFBRoof\n ) {\n this.APP.patiosManager = new PatiosGableFBFlyOverManager(this.APP);\n } else {\n this.APP.patiosManager = new PatiosFlyOverManager(this.APP);\n }\n break;\n case CONNECTION_TYPE.BLACK_FLY_OVER:\n this.APP.patiosManager = new PatiosBackFlyOverManager(this.APP);\n break;\n case CONNECTION_TYPE.FASCIA:\n case CONNECTION_TYPE.BACK_FASCIA_UPSTAND:\n case CONNECTION_TYPE.FASCIA_UPSTAND:\n if (\n this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF &&\n !this.APP.isFBRoof\n ) {\n this.APP.patiosManager = new GableLRFasciaManager(this.APP);\n } else if (\n this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF &&\n this.APP.isFBRoof\n ) {\n this.APP.patiosManager = new GableFBFasciaManager(this.APP);\n } else {\n this.APP.patiosManager = new FasciaManager(this.APP);\n }\n break;\n case CONNECTION_TYPE.FREE_STANDING:\n if (this.APP.patiosRoofType === PATIOS_ROOF_TYPE.FLAT_ROOF) {\n this.APP.patiosManager = new PatiosFreeStandingManager(this.APP);\n break;\n } else {\n this.APP.patiosManager = new PatiosGableFreeStandingManager(this.APP);\n break;\n }\n }\n\n UI.oldBackOverhang = this.APP.sldBackOverhang.currentValue;\n\n this.APP.patiosManager\n .load()\n .then(() => {\n this.APP.dimensionManager.load();\n // this.APP.patiosManager.loadBracket(this.APP.flyoverBracketNumber); // số lượng bracket mặc định load lần đầu\n return this.APP.groundManager.load();\n })\n .then(() => {\n this.APP.sltFasciaUpstandBrackets.setDisable(true);\n\n if (this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF) {\n if (!this.APP.isFBRoof) {\n this.APP.sldBackOverhang.setValue(200);\n this.APP.sldBackOverhang.setMin(200);\n this.APP.sldFrontOverhang.setValue(200);\n this.APP.sldFrontOverhang.setMin(200);\n this.APP.sldBackOverhang.setDisable(false);\n this.APP.sldBackOverhang.setDisable(false);\n\n this.APP.sldLeftOverhang.setMin(0);\n this.APP.sldRightOverhang.setMin(0);\n } else {\n this.APP.sldLeftOverhang.setValue(200);\n this.APP.sldLeftOverhang.setMin(200);\n this.APP.sldRightOverhang.setValue(200);\n this.APP.sldRightOverhang.setMin(200);\n\n this.APP.sldBackOverhang.setMin(0);\n this.APP.sldFrontOverhang.setMin(0);\n }\n\n this.APP.sltLeftCutType.setSelected(0);\n this.APP.sltRightCutType.setSelected(0);\n this.APP.sltLeftCutType.setDisable(true);\n this.APP.sltRightCutType.setDisable(true);\n\n this.APP.sldMultiSpan.setValue(0);\n this.APP.sldMultiSpan.setDisable(true);\n } else {\n this.APP.sldBackOverhang.setMin(0);\n this.APP.sldFrontOverhang.setMin(0);\n\n this.APP.sltLeftCutType.setDisable(false);\n this.APP.sltRightCutType.setDisable(false);\n\n this.APP.sldMultiSpan.setDisable(false);\n }\n\n switch (_curVal) {\n case CONNECTION_TYPE.EXISTING:\n this.APP.sldBackOverhang.setValue(0);\n this.APP.sldBuildingHeight.isDisabled = false;\n this.APP.sldBackOverhang.isDisabled = true;\n this.APP.sldExistingWallHeight.isDisabled = false;\n if (this.APP.sltExistingType.currentValue == 3) {\n _flag = true;\n }\n break;\n case CONNECTION_TYPE.FLY_OVER:\n this.APP.sldExistingWallHeight.isDisabled = false;\n if (this.APP.sldBackOverhang.currentValue == 0) {\n this.APP.sldBackOverhang.setValue(UI.oldBackOverhang);\n }\n break;\n case CONNECTION_TYPE.BLACK_FLY_OVER:\n if (this.APP.sldBackOverhang.currentValue == 0) {\n this.APP.sldBackOverhang.setValue(UI.oldBackOverhang);\n }\n this.APP.sldExistingWallHeight.isDisabled = false;\n break;\n case CONNECTION_TYPE.FASCIA:\n case CONNECTION_TYPE.BACK_FASCIA_UPSTAND:\n case CONNECTION_TYPE.FASCIA_UPSTAND:\n this.APP.sltFasciaUpstandBrackets.setSelected(\n _curVal == CONNECTION_TYPE.FASCIA_UPSTAND ||\n _curVal == CONNECTION_TYPE.BACK_FASCIA_UPSTAND\n ? CONFIG.fasciaUpstandBrackets.max\n : 0\n );\n this.APP.sltUpFasciaUpstandBracket.setValue(\n _curVal == CONNECTION_TYPE.BACK_FASCIA_UPSTAND\n );\n this.APP.sldBackOverhang.setValue(0);\n this.APP.sldBackOverhang.isDisabled = true;\n //Bang - 2022.03.22\n if (this.APP.sltFasciaUpstandBrackets.currentValue > 0) {\n this.APP.sldBackOverhang.setValue(UI.oldBackOverhang);\n this.APP.sldBackOverhang.isDisabled = false;\n } else {\n this.APP.sldBackOverhang.setValue(0);\n this.APP.sldBackOverhang.isDisabled = true;\n }\n this.APP.sldBuildingHeight.setValue(\n this.APP.sldExistingWallHeight.currentValue\n );\n this.APP.sldExistingWallHeight.isDisabled = false;\n if (\n UI.structureType == CONNECTION_TYPE.FASCIA &&\n UI.existingRoofType == BUILDING_SIDE.BOTH &&\n UI.patiosRoofType == PATIOS_ROOF_TYPE.FLAT_ROOF\n ) {\n if (!this.calcShouldSnapRoofToExistingWhenCutout()) {\n this.APP.sldExistingLength.setValue(\n UI.totalBayLength + UI.eaveWidth * 2\n );\n }\n _flag = true;\n }\n this.APP.sltFasciaUpstandBrackets.setDisable(\n _curVal == CONNECTION_TYPE.FASCIA_UPSTAND ? false : true\n );\n\n if (_curVal === CONNECTION_TYPE.FASCIA) {\n this.APP.sltUpFasciaUpstandBracket.setValue(false);\n }\n break;\n case CONNECTION_TYPE.FREE_STANDING:\n if (this.APP.sldBackOverhang.currentValue == 0) {\n this.APP.sldBackOverhang.setValue(UI.oldBackOverhang);\n }\n this.APP.sldBuildingHeight.isDisabled = false;\n this.APP.sldExistingWallHeight.isDisabled = true;\n // this.sldExistingWidth1.setValue(0);\n break;\n }\n if (this.APP.sltExistingType.currentValue == 3) {\n this.onExistingTypeChanged(null, 3);\n }\n this.APP.sldLeftOverhang.isDisabled = _flag;\n this.APP.sldRightOverhang.isDisabled = _flag;\n this.APP.patiosManager.update(null, null);\n setTimeout(() => {\n this.setColumnType(\"\", _curVal, -1);\n }, 500);\n this.onExistingWallHeightChanged(\n 0,\n this.APP.sldExistingWallHeight.currentValue\n );\n this.APP.renderStatic();\n });\n }\n\n updateOverallValue(pre: number, cur: number) {\n let totalBaySize = this.APP.dialogEditBay.totalBaySize;\n let _roofOverallWidth =\n this.APP.sldSpan.currentValue +\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue +\n this.APP.sldBackOverhang.currentValue;\n if (\n HomeComponent.ins.patiosRoofType == PATIOS_ROOF_TYPE.GABLE_ROOF &&\n HomeComponent.ins.isFBRoof\n ) {\n _roofOverallWidth =\n UI.span + UI.multiSpan + UI.overhangLeft + UI.overhangRight;\n }\n\n this.APP.sldRoofOverallWidth.setValue(_roofOverallWidth);\n\n let _roofOverallLength =\n totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n if (\n HomeComponent.ins.patiosRoofType == PATIOS_ROOF_TYPE.GABLE_ROOF &&\n HomeComponent.ins.isFBRoof\n ) {\n _roofOverallLength = totalBaySize + UI.overhangFront + UI.overhangBack;\n }\n this.APP.sldRoofOverallLength.setValue(_roofOverallLength);\n this.APP.getRoofPercent(_roofOverallLength);\n //this.onDialogEditBayChanged();\n //this.APP.renderStatic();\n }\n\n public setMaxSpan() {\n if (this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF) {\n if (UI.beamType == 0) {\n // const findCondition = this.APP.objects.gableConditionList.find((f) =>\n // // f.beamSize.includes(UI.beamSize) && //Bang - 2024.01.02\n // f.windClass.includes(UI.windClass)\n // );\n const findCondition = this.APP.objects.gableConditionList.filter((f) =>\n f.windClass.includes(UI.windClass)\n );\n if (findCondition.length > 0) {\n this.APP.maxSpan = findCondition[findCondition.length - 1].maxSpan;\n this.APP.maxSpanText = `${\n findCondition[findCondition.length - 1].maxSpan\n } max`;\n this.APP.maxBaySize = findCondition[findCondition.length - 1].maxBay;\n this.APP.maxBaySizeText = `${\n findCondition[findCondition.length - 1].maxBay\n } max`;\n }\n } else {\n if (UI.windClass == 0 || UI.windClass == 1) {\n this.APP.maxSpan = 8500;\n this.APP.maxSpanText = \"8500 max\";\n this.APP.maxBaySize = 8000;\n this.APP.maxBaySizeText = \"8000 max\";\n } else {\n this.APP.maxSpan = 7000;\n this.APP.maxSpanText = \"7000 max\";\n this.APP.maxBaySize = 6000;\n this.APP.maxBaySizeText = \"6000 max\";\n }\n }\n }\n }\n\n public setBeamSize() {\n if (this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF) {\n let minBeam = 1;\n let maxBeam = 4;\n\n let length = this.APP.dialogEditBay.totalBaySize;\n let width = UI.span;\n let windClass = UI.windClass;\n\n const filterValue = Math.max(length, width);\n const filterField = length > width ? \"lengthMax\" : \"widthMax\";\n const findCondition = this.APP.objects.gableBeamConditionList.find(\n (f) => f.windClass.includes(windClass) && f[filterField] >= filterValue\n );\n if (findCondition) {\n minBeam = findCondition.beamSizeIndex;\n }\n\n this.APP.beamSizeList = this.APP.objects.beamSizeList.filter(\n (el) =>\n el.beamType == this.APP.sltBeamType.currentValue &&\n el.id >= minBeam &&\n el.id <= maxBeam\n );\n this.setMaxSpan();\n this.APP.sltBeamSize.setSelectedAndHandleEvent(minBeam);\n }\n }\n\n public onFasciaUpstandBracketChanged(prevVal: number, curVal: number): void {\n // Bang - 2022.03.22\n if (\n UI.upstandBraketType > 0 &&\n !HomeComponent.ins.sltFasciaUpstandBrackets.isDisabled\n ) {\n this.APP.sldBackOverhang.isDisabled = false;\n this.APP.sldBackOverhang.setValue(UI.oldBackOverhang);\n } else {\n this.APP.sldBackOverhang.setValue(0);\n this.APP.sldBackOverhang.isDisabled = true;\n }\n this.onSetColumnType(null, null);\n }\n\n public onWidth1Changed(prevVal: number, curVal: number): void {\n if (curVal < 620) {\n this.APP.sldExistingLength2.setValue(0);\n this.APP.sldExistingLength2Visible = false;\n } else {\n this.APP.sldExistingLength2Visible = true;\n }\n\n //change baysize when can cutout and can not cutout\n if (this.APP.sltCutOut.currentValue == 1) {\n //let cutoutCondition = this.APP.patiosManager.cutoutCondition.map(x => x.currentValue).reduce((a,b) => a + b, 0) - this.APP.sldExistingWidth1.currentValue >= EXISTING_BUILDING_CONFIG.CUTOUT_ALLOW;\n if (this.APP.patiosManager.cutoutCondition && !window[\"cutout\"]) {\n this.setEnableCutout(true);\n window[\"cutout\"] = true;\n } else if (!this.APP.patiosManager.cutoutCondition) {\n this.setEnableCutout(false);\n window[\"cutout\"] = false;\n }\n }\n //this.validateCutout();\n }\n public onWidth2Changed(prevVal: number, curVal: number): void {\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES &&\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH\n ) {\n if (curVal == 0) {\n this.APP.patiosManager.ignoreBayEvent = true;\n setTimeout(() => {\n this.APP.patiosManager.ignoreBayEvent = false;\n }, 2000);\n\n this.APP.setPatiosWidth(\n this.APP.dialogEditBay.totalBaySize -\n (this.APP.existingWallManager.geo_existingWallW2.width +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK) *\n 2\n );\n } else {\n let totalExistingWidth =\n this.APP.sldExistingLength.currentValue +\n this.APP.sldExistingLength2.currentValue * 2 +\n (this.APP.existingWallManager.geo_existingWallW2.width +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK) *\n 2;\n if (\n this.APP.sltStructureType.currentValue == 1 ||\n this.APP.sltStructureType.currentValue == 2\n ) {\n totalExistingWidth =\n this.APP.sldExistingLength.currentValue +\n this.APP.sldExistingLength2.currentValue * 2 +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK * 2;\n }\n if (this.APP.dialogEditBay.totalBaySize < totalExistingWidth) {\n this.APP.patiosManager.ignoreBayEvent = true;\n setTimeout(() => {\n this.APP.patiosManager.ignoreBayEvent = false;\n }, 2000);\n\n this.APP.setPatiosWidth(totalExistingWidth);\n }\n }\n }\n }\n public onLength2Changed(prevVal: number, curVal: number): void {\n if (curVal < 1200) {\n this.APP.sldExistingWidth2.setValue(0);\n this.APP.sldExistingWidth2Visible = false;\n } else {\n this.APP.sldExistingWidth2Visible = true;\n }\n\n if (!prevVal) prevVal = curVal;\n let diff = curVal - prevVal;\n\n this.onAdjustListBayWhenCutOut(diff);\n }\n public onAdjustListBayWhenCutOut(diff) {\n if (UI.cutOutType == CUTOUT_ENABLE.YES) {\n if (\n UI.existingType == BUILDING_SIDE.LEFT ||\n UI.existingType == BUILDING_SIDE.RIGHT\n ) {\n let baySize = UI.baySize + diff / UI.noOfBay;\n if (baySize > CONFIG.baySize.max) {\n let noOfBay = UI.noOfBay + 1;\n this.ignoreEnableCutoutEvent = true;\n this.APP.sldNoOfBay.setValue(noOfBay);\n baySize = UI.totalBayLength / noOfBay;\n }\n this.ignoreEnableCutoutEvent = true;\n this.APP.sldBaySize.setValue(Math.ceil(baySize));\n } else {\n let baySize =\n UI.baySize + (diff * 2) / this.APP.sldNoOfBay.currentValue;\n if (baySize > CONFIG.baySize.max) {\n let noOfBay = this.APP.sldNoOfBay.currentValue + 1;\n this.ignoreEnableCutoutEvent = true;\n this.APP.sldNoOfBay.setValue(noOfBay);\n baySize = UI.totalBayLength / noOfBay;\n }\n this.ignoreEnableCutoutEvent = true;\n this.APP.sldBaySize.setValue(Math.ceil(baySize));\n }\n }\n }\n public onCutoutChanged(prevVal: number, curVal: number) {\n //this.APP.patiosManager.enableCutout(curVal == 1 && this.APP.patiosManager.cutoutCondition);\n //window['baySize'] = this.APP.sldBaySize.currentValue;\n this.setEnableCutout(curVal == 1 && this.APP.patiosManager.cutoutCondition);\n }\n public onRakeCutLeftChanged(pre: number, cur: number) {\n //If left cut is ON disable left over hang\n this.APP.sldLeftOverhang.setDisable(false);\n if (cur != RAKECUT_TYPE.NONE) {\n this.APP.sldLeftOverhang.setValue(0);\n this.APP.sldLeftOverhang.setDisable(true);\n }\n\n if (cur == RAKECUT_TYPE.NONE) {\n this.APP.sldLeftCutHorizontal.setValue(0);\n }\n }\n public onRakeCutRightChanged(pre: number, cur: number) {\n //If right cut is ON disable right over hang\n this.APP.sldRightOverhang.setDisable(false);\n if (cur != RAKECUT_TYPE.NONE) {\n this.APP.sldRightOverhang.setValue(0);\n this.APP.sldRightOverhang.setDisable(true);\n }\n\n if (cur == RAKECUT_TYPE.NONE) {\n this.APP.sldRightCutHorizontal.setValue(0);\n }\n }\n\n // this is hight priority (1), must be called first to setup BUILDING HEIGHT for patios manager to use\n private onExistingWallHeightChanged(prevVal: number, curVal: number): void {\n const currentBeam = GeometryManager.Instance().getBeam();\n const _typeVal = +this.APP.sltStructureType.currentValue;\n let _buildingHeightMax = 0;\n if (_typeVal === CONNECTION_TYPE.EXISTING) {\n // Existing Building\n _buildingHeightMax =\n curVal - EXISTING_BUILDING_CONFIG.BUILDING_HEIGHT_OFFSET;\n this.APP.sldBuildingHeight.setMax(_buildingHeightMax);\n if (\n curVal - this.APP.sldBuildingHeight.currentValue <=\n EXISTING_BUILDING_CONFIG.BUILDING_HEIGHT_OFFSET\n ) {\n this.APP.sldBuildingHeight.setValue(_buildingHeightMax);\n }\n } else if (\n _typeVal === CONNECTION_TYPE.FASCIA ||\n _typeVal === CONNECTION_TYPE.FASCIA_UPSTAND\n ) {\n // Fascia\n _buildingHeightMax = CONFIG.eaveHeight.max;\n this.APP.sldBuildingHeight.setMax(_buildingHeightMax);\n this.APP.sldBuildingHeight.setValue(curVal);\n } else if (_typeVal === CONNECTION_TYPE.FREE_STANDING) {\n _buildingHeightMax = CONFIG.height.free_standing_max;\n this.APP.sldBuildingHeight.setMax(_buildingHeightMax);\n this.APP.sldBuildingHeight.setValue(curVal);\n } else {\n // _buildingHeightMax= CONFIG.height.max;\n _buildingHeightMax = CONFIG.eaveHeight.max;\n this.APP.sldBuildingHeight.setMax(_buildingHeightMax);\n this.APP.sldBuildingHeight.setValue(\n curVal +\n this.APP.sldFlyOverBracketHeight.currentValue +\n currentBeam.height\n );\n }\n\n setTimeout(() => {\n this.setColumnType(\"\", _typeVal, -1);\n }, 500);\n this.APP.renderStatic();\n }\n\n public onExistingWallHeightChanged2(prevVal: number, curVal: number): void {}\n\n private changeToExistingTypeBoth() {\n this.setEnableCutout(\n this.APP.sltCutOut.currentValue == 1 &&\n this.APP.patiosManager.cutoutCondition\n );\n }\n private setEnableCutout(enable: boolean) {\n if (HomeComponent.ins.currentBuildingInfo.isOpen) {\n return;\n }\n if (\n this.APP.sltStructureType.currentValue == CONNECTION_TYPE.FLY_OVER ||\n this.APP.sltStructureType.currentValue == CONNECTION_TYPE.BLACK_FLY_OVER\n ) {\n //Change patios width o day thi khong cho length1 chay theo patios width\n //set bien nay true thi length1 khong chay theo patios width\n this.APP.patiosManager.ignoreBayEvent = true;\n setTimeout(() => {\n this.APP.patiosManager.ignoreBayEvent = false;\n }, 3000);\n\n if (enable) {\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.NONE) {\n this.APP.setPatiosWidth(this.APP.sldExistingLength.currentValue);\n } else if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT\n ) {\n this.APP.setPatiosWidth(\n CONFIG.baySize.min + this.APP.sldExistingLength2.currentValue\n );\n } else {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n this.APP.setPatiosWidth(\n this.APP.sldExistingLength.currentValue +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK * 2 +\n this.APP.sldExistingLength2.currentValue * 2\n );\n } else {\n this.APP.setPatiosWidth(\n this.APP.sldExistingLength.currentValue +\n this.APP.sldExistingLength2.currentValue * 2\n );\n }\n }\n } else {\n this.APP.setPatiosWidth(\n this.APP.sldExistingLength.currentValue +\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK * 2\n );\n this.APP.sltCutOut.setSelected(\"0\");\n }\n } else if (\n this.APP.sltStructureType.currentValue == CONNECTION_TYPE.FASCIA ||\n this.APP.sltStructureType.currentValue ==\n CONNECTION_TYPE.BACK_FASCIA_UPSTAND ||\n this.APP.sltStructureType.currentValue == CONNECTION_TYPE.FASCIA_UPSTAND\n ) {\n this.APP.patiosManager.ignoreBayEvent = true;\n setTimeout(() => {\n this.APP.patiosManager.ignoreBayEvent = false;\n }, 1000);\n\n if (enable) {\n if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT\n ) {\n this.APP.setPatiosWidth(\n CONFIG.baySize.min + this.APP.sldExistingLength2.currentValue\n );\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n if (\n UI.structureType == CONNECTION_TYPE.FASCIA &&\n this.calcShouldSnapRoofToExistingWhenCutout()\n ) {\n this.APP.setPatiosWidth(\n UI.existingLength1 + UI.existingLength2 * 2\n );\n } else {\n this.APP.setPatiosWidth(\n UI.existingLength1 + UI.existingLength2 * 2 - UI.eaveWidth * 2\n );\n }\n }\n } else {\n this.APP.setPatiosWidth(\n this.APP.sldExistingLength.currentValue -\n this.APP.sldEaveWidth.currentValue * 2\n );\n this.APP.sltCutOut.setSelected(\"0\");\n }\n } else if (\n this.APP.sltStructureType.currentValue == CONNECTION_TYPE.EXISTING\n ) {\n //Change patios width o day thi khong cho length1 chay theo patios width\n //set bien nay true thi length1 khong chay theo patios width\n this.APP.patiosManager.ignoreBayEvent = true;\n setTimeout(() => {\n this.APP.patiosManager.ignoreBayEvent = false;\n }, 3000);\n\n if (enable) {\n if (\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT\n ) {\n this.APP.setPatiosWidth(\n CONFIG.baySize.min + this.APP.sldExistingLength2.currentValue\n );\n }\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n this.APP.setPatiosWidth(\n this.APP.sldExistingLength.currentValue +\n this.APP.sldExistingLength2.currentValue * 2\n );\n }\n } else {\n this.APP.setPatiosWidth(this.APP.sldExistingLength.currentValue);\n this.APP.sltCutOut.setSelected(\"0\");\n }\n }\n }\n // When the highest point of cutout roof (To fascia) is lower eave height, we should snap this roof to wall, like existing roof\n public handleSnapRoofToExistingWhenCutOut(): void {\n this.previousShouldSnapFasciaRoofToWall = this.shouldSnapFasciaRoofToWall;\n this.shouldSnapFasciaRoofToWall =\n this.calcShouldSnapRoofToExistingWhenCutout();\n\n if (\n UI.structureType == CONNECTION_TYPE.FASCIA &&\n UI.existingType != BUILDING_SIDE.NONE &&\n UI.cutOutType == CUTOUT_ENABLE.YES\n ) {\n this.setEnableCutout(\n UI.cutOutType == CUTOUT_ENABLE.YES &&\n HomeComponent.ins.patiosManager.cutoutCondition\n );\n }\n }\n public calcShouldSnapRoofToExistingWhenCutout(): boolean {\n const roofBaseHeight =\n HomeComponent.ins.geometryManager.getRoofBaseHeight();\n\n if (\n UI.structureType == CONNECTION_TYPE.FASCIA &&\n UI.existingType != BUILDING_SIDE.NONE &&\n UI.cutOutType == CUTOUT_ENABLE.YES &&\n HomeComponent.ins.patiosRoofType == PATIOS_ROOF_TYPE.FLAT_ROOF\n ) {\n const cutOutRoofHeightIfSnapToExisting =\n UI.eaveHeight -\n (UI.existingWidth1 - UI.eaveWidth) * this.utils.tan(UI.patiosPitch) +\n roofBaseHeight / this.utils.cos(UI.patiosPitch);\n if (cutOutRoofHeightIfSnapToExisting < UI.eaveHeight) {\n return true;\n }\n }\n\n return false;\n }\n\n public onBackOverhangChanged() {\n UI.oldBackOverhang = UI.overhangBack;\n }\n\n public onExistingTypeChanged(prevVal: number, val: number) {\n this.APP.sldLeftOverhang.setDisable(false);\n this.APP.sldRightOverhang.setDisable(false);\n\n //this.validateCutout();\n\n if (val == 0) {\n this.alignWallToPatios(false);\n this.APP.sldExistingWidth1.setValue(0);\n this.APP.sldExistingWidth2.setValue(0);\n this.APP.sldExistingLength2.setValue(0);\n }\n if (val == 1 || val == 2) {\n this.alignWallToPatios(true);\n this.setEnableCutout(\n this.APP.sltCutOut.currentValue == 1 &&\n this.APP.patiosManager.cutoutCondition\n );\n }\n if (val == 3) {\n this.alignWallToPatios(true);\n\n this.APP.sldLeftOverhang.setValue(0);\n this.APP.sldLeftOverhang.setDisable(true);\n this.APP.sldRightOverhang.setValue(0);\n this.APP.sldRightOverhang.setDisable(true);\n\n if (\n this.APP.isFBRoof &&\n UI.structureType == CONNECTION_TYPE.EXISTING &&\n UI.existingType == BUILDING_SIDE.BOTH &&\n this.APP.patiosRoofType == PATIOS_ROOF_TYPE.GABLE_ROOF\n ) {\n this.APP.sldLeftOverhang.setValue(200);\n this.APP.sldRightOverhang.setValue(200);\n }\n this.changeToExistingTypeBoth();\n }\n\n const _structureType = +this.APP.sltStructureType.currentValue;\n if (_structureType === 0) {\n this.APP.sldBackOverhang.isDisabled = true;\n } else if (_structureType === 3 || _structureType === 5) {\n this.APP.sldBackOverhang.isDisabled = true;\n // Bang - 2022.03.22\n if (this.APP.sltFasciaUpstandBrackets.currentValue > 0) {\n this.APP.sldBackOverhang.isDisabled = false;\n this.APP.sldBackOverhang.setValue(UI.oldBackOverhang);\n } else {\n this.APP.sldBackOverhang.isDisabled = true;\n }\n } else {\n this.APP.sldBackOverhang.isDisabled = false;\n }\n // Disable Length1\n this.APP.sldExistingLength.isDisabled = val === 3;\n\n //Change panel direction\n // if(this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT){\n // this.APP.sltPanelDirection.setValue(PANEL_DIRECTION.RIGHT_TO_LEFT);\n // }\n // else{\n // this.APP.sltPanelDirection.setValue(PANEL_DIRECTION.LEFT_TO_RIGHT);\n // }\n }\n\n public onSpanChanged() {\n if (\n this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF &&\n this.APP.isFBRoof\n ) {\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n if (!this.APP.patiosManager.ignoreBayEvent) {\n if (\n this.APP.sltStructureType.currentValue ==\n CONNECTION_TYPE.FASCIA_UPSTAND\n ) {\n this.APP.sldExistingLength.setValue(\n Math.ceil(\n UI.span +\n this.APP.sldEaveWidth.currentValue * 2 +\n 2 * FASCIA_BRACKET_FIT\n )\n );\n } else if (\n this.APP.sltStructureType.currentValue == CONNECTION_TYPE.FLY_OVER\n ) {\n this.APP.sldExistingLength.setValue(\n UI.span - EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK * 2\n );\n } else {\n this.APP.sldExistingLength.setValue(\n UI.span +\n UI.overhangLeft +\n UI.overhangRight +\n OFFSET_GUTTER_TO_WALL * 2\n );\n }\n }\n }\n }\n }\n\n public onDialogEditBayChanged() {\n // this.APP.patiosManager.loadBracket(5);\n if (\n this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF &&\n this.APP.isFBRoof\n ) {\n return;\n }\n\n if (this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH) {\n let totalBaySize = this.APP.dialogEditBay.totalBaySize;\n\n if (!this.APP.patiosManager.ignoreBayEvent) {\n if (\n UI.structureType == CONNECTION_TYPE.FASCIA ||\n UI.structureType == CONNECTION_TYPE.BACK_FASCIA_UPSTAND ||\n UI.structureType == CONNECTION_TYPE.FASCIA_UPSTAND\n ) {\n //Facia\n if (\n this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES &&\n this.APP.patiosManager.cutoutCondition\n ) {\n if (this.calcShouldSnapRoofToExistingWhenCutout()) {\n this.APP.sldExistingLength.setValue(\n totalBaySize - UI.existingLength2 * 2\n );\n } else {\n this.APP.sldExistingLength.setValue(\n totalBaySize - UI.existingLength2 * 2 + UI.eaveWidth * 2\n );\n }\n } else {\n this.APP.sldExistingLength.setValue(\n totalBaySize + this.APP.sldEaveWidth.currentValue * 2\n );\n }\n } else if (\n this.APP.sltStructureType.currentValue == CONNECTION_TYPE.FLY_OVER ||\n this.APP.sltStructureType.currentValue ==\n CONNECTION_TYPE.BLACK_FLY_OVER\n ) {\n if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES) {\n if (this.APP.sldExistingWidth2.currentValue > 0) {\n this.APP.sldExistingLength.setValue(\n totalBaySize -\n this.APP.sldExistingLength2.currentValue * 2 -\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK * 2\n );\n } else {\n this.APP.sldExistingLength.setValue(\n totalBaySize - this.APP.sldExistingLength2.currentValue * 2\n );\n }\n } else {\n this.APP.sldExistingLength.setValue(\n totalBaySize - EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK * 2\n );\n }\n } else {\n if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES) {\n this.APP.sldExistingLength.setValue(\n totalBaySize - this.APP.sldExistingLength2.currentValue * 2\n );\n } else {\n this.APP.sldExistingLength.setValue(totalBaySize);\n }\n }\n }\n }\n\n if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES) {\n //this.APP.setNoOfBayFromBaySize(this.APP.dialogEditBay.totalBaySize , this.APP.sldBaySize.currentValue);\n if (\n this.APP.dialogEditBay.totalBaySize <\n this.APP.sldExistingLength2.currentValue + CONFIG.baySize.min &&\n !this.ignoreEnableCutoutEvent\n ) {\n this.setEnableCutout(false);\n }\n }\n //validate rake cut\n this.onBaySizeChanged(null, null);\n\n let roofOverallLength =\n UI.totalBayLength + UI.overhangLeft + UI.overhangRight;\n if (\n HomeComponent.ins.patiosRoofType == PATIOS_ROOF_TYPE.GABLE_ROOF &&\n HomeComponent.ins.isFBRoof\n ) {\n roofOverallLength =\n UI.totalBayLength + UI.overhangFront + UI.overhangBack;\n }\n\n // Check beam length > 9m, 2 bay, and not cut, auto cut this\n if (\n roofOverallLength > EXISTING_BUILDING_CONFIG.MAXIMUM_LENGTH_PER_BEAM &&\n UI.listBay.length == 2\n ) {\n if (!UI.listBay[0].isCut) {\n UI.listBay[0].isCut = true;\n HomeComponent.ins.dialogEditBay.onOK();\n }\n }\n }\n public onBaySizeChanged(preVal: number, curVal: number) {\n // this.APP.patiosManager.loadBracket(this.APP.flyoverBracketNumber); // khi thay đổi UI truyền lại số lượng bracket\n //Reduce cut horizotal if totalcut larger than baymax\n let bayMax =\n this.APP.dialogEditBay.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n let totalCut =\n this.APP.sldLeftCutHorizontal.currentValue +\n this.APP.sldRightCutHorizontal.currentValue;\n\n //if(this.app)\n\n if (totalCut >= bayMax) {\n this.APP.sldLeftCutHorizontal.setValue(\n this.APP.sldLeftCutHorizontal.maxValue\n );\n this.APP.sldRightCutHorizontal.setValue(\n this.APP.sldRightCutHorizontal.maxValue\n );\n }\n }\n onBeamTypeChanged(pre, cur: number) {\n this.APP.beamSizeList = this.APP.objects.beamSizeList.filter(\n (f) => f.beamType == cur\n );\n\n this.APP.houseBeamSizeList = this.APP.objects.beamSizeList.filter(\n (f) => f.beamType == cur\n );\n if (cur === 1) {\n this.APP.sltColourBeam.setSelected(0xcabfa4);\n } else {\n this.APP.sltColourBeam.setSelected(0xe4e2d5);\n }\n }\n\n onColumnTypeChanged(pre, cur: number) {\n if (cur === 3) {\n this.APP.sltColourPost.setSelected(0xcabfa4);\n } else {\n this.APP.sltColourPost.setSelected(0xe4e2d5);\n }\n }\n onBaseFixingTypeChanged(pre, cur: number) {\n setTimeout(() => {\n this.setColumnType(cur.toString(), -1, -1);\n if (cur === 0) {\n this.APP.chkRapidSetCement.setValue(false);\n }\n }, 500);\n }\n onBuildingHeightChanged(pre, cur: number) {\n setTimeout(() => {\n this.setColumnType(\"\", -1, cur);\n }, 500);\n }\n\n onSetColumnType(pre, cur: number) {\n setTimeout(() => {\n this.setColumnType(\"\", -1, -1);\n }, 500);\n }\n\n setColumnType(\n baseFixingType: string,\n structureType: number,\n buildingHeight: number\n ) {\n const groups = this.scene.children.filter(\n (x) =>\n (x.userData.category === GEOMETRY_CATEGORY.PATIOS &&\n x.children.length > 0) ||\n x.userData.type === GEOMETRY_TYPE.SUPERIOR_POST\n );\n const listPosts = this.APP.getPosts(groups);\n if (listPosts.length > 0) {\n buildingHeight = _.round(\n _.maxBy(listPosts, (o) => o.length).length * 1000,\n 0\n );\n } else {\n buildingHeight = this.APP.sldBuildingHeight.currentValue;\n }\n\n // get column type list\n const _columnType = +this.APP.sltColumnType.currentValue;\n if (baseFixingType === \"\") {\n baseFixingType = this.APP.sltBaseFixingType.currentValue.toString();\n }\n if (structureType === -1) {\n structureType = this.APP.sltStructureType.currentValue;\n }\n // if (buildingHeight === -1) {\n // buildingHeight = this.APP.sldBuildingHeight.currentValue;\n // }\n if (buildingHeight) {\n if (structureType == 4) {\n this.APP.columnTypeList = this.APP.objects.columnTypeList2.filter(\n (f) =>\n f.baseFixingType.includes(baseFixingType) &&\n f.columnHeight >= buildingHeight &&\n f.idx >= 2\n );\n } else {\n this.APP.columnTypeList = this.APP.objects.columnTypeList2.filter(\n (f) =>\n f.baseFixingType.includes(baseFixingType) &&\n f.columnHeight >= buildingHeight\n );\n }\n if (this.APP.columnTypeList.length === 0) {\n this.APP.columnTypeList = this.APP.objects.columnTypeList2.filter(\n (f) => f.id === -1\n );\n this.APP.sltColumnType.setSelected(-1);\n } else {\n if (\n this.APP.columnTypeList.findIndex(\n (value, index) => value.id === _columnType\n ) >= 0\n ) {\n this.APP.sltColumnType.setSelected(_columnType);\n } else {\n this.APP.sltColumnType.setSelected(this.APP.columnTypeList[0].id);\n }\n }\n }\n //\n }\n loadFromObject(obj) {\n var promise = new Promise((resolve, rejects) => {\n this.APP.patiosManager.ignoreBayEvent = true;\n setTimeout(() => {\n this.APP.patiosManager.ignoreBayEvent = false;\n resolve();\n }, 3000);\n const _rightToLeft = obj.rightToLeft || false;\n this.APP.sltPanelDirection.setValue(_rightToLeft);\n let _structureType = obj.structureType.value.toString();\n const _fasciaBracketHeight = obj.fasciaBracketHeight || 0;\n if (_structureType == 3 && _fasciaBracketHeight > 0) {\n _structureType = \"5\";\n }\n const _hasHouseBeam = obj.hasHouseBeam || false;\n this.APP.chkHasHouseBeam.setValue(_hasHouseBeam);\n this.APP.sltStructureType.setSelected(_structureType);\n this.APP.sltExistingType.setSelected(obj.existingType.value.toString());\n this.APP.sldExistingLength.setValue(obj.existingLength);\n this.APP.sldExistingLength2.setValue(obj.existingLength2);\n this.APP.sldExistingWidth1.setValue(obj.existingWidth1);\n this.APP.sldExistingWidth2.setValue(obj.existingWidth2);\n this.APP.sldFasciaDepth.setValue(obj.fasciaDepth);\n this.APP.sldExistingWallHeight.setValue(obj.eaveHeight);\n this.APP.sldBuildingHeight.setValue(obj.buildingHeight);\n this.APP.sldEaveWidth.setValue(obj.eaveWidth);\n this.APP.sldFlyOverBracketHeight.setValue(obj.flyoverBracketHeight);\n this.APP.sldSpan.setValue(obj.span);\n this.APP.sldMultiSpan.setValue(obj.multiSpan);\n this.APP.sldBaySize.setValue(obj.baySize);\n this.APP.sldRoofOverallLength.setValue(obj.roofOverallLength);\n this.APP.sldRoofOverallWidth.setValue(obj.roofOverallWidth);\n this.APP.sldMinHeight.setValue(Math.round(obj.minHeight));\n //HACK: Xử lý lỗi cho các job cũ\n const _cutOut = obj.cutOut ? obj.cutOut.value : 0;\n this.APP.sltFasciaUpstandBrackets.setSelected(_fasciaBracketHeight);\n const _backFascia = obj.backFascia || false;\n this.APP.sltUpFasciaUpstandBracket.setValue(_backFascia);\n\n this.APP.sltWindClass.setSelected(obj.windClass.value);\n this.APP.sltBaseFixingType.setSelected(obj.baseFixingType.value);\n this.APP.sltBeamType.setSelected(obj.beamType.value);\n this.APP.sltCutOut.setSelected(_cutOut);\n\n this.APP.sltGutterType.setSelected(obj.gutterType.value);\n this.APP.sltDownpipeType.setSelected(obj.downpipeType.value);\n this.APP.sltZFlashingType.setSelected(obj.zFlashingType.value);\n this.APP.sltReceiverType.setSelected(obj.receiverType.value);\n this.APP.sltBargeType.setSelected(obj.bargeType.value);\n this.APP.sltFlatBottom.setSelected(obj.flatBottom.value);\n this.APP.sltRoofThickness.setSelected(obj.thickness.value);\n\n this.APP.sltRoofSheetingType.setSelected(obj.roofSheetingType.value);\n this.APP.sltWallType.setSelected(obj.wallType.value);\n const _existingRoofType = obj.existingRoofType\n ? obj.existingRoofType.value\n : 0;\n this.APP.sltExistingRoofType.setSelected(_existingRoofType);\n\n this.APP.sltExistingRoofPitch.setSelected(obj.existingRoofPitch);\n this.APP.sltRoofPitch.setSelected(obj.roofPitch);\n this.APP.sltColumnType.setSelected(obj.columnType.value);\n this.APP.sltBeamSize.setSelected(obj.beamSize.value);\n const _houseBeamSize = obj.hasHouseBeam\n ? obj.houseBeamSize.value\n : obj.beamSize.value;\n this.APP.sltHouseBeamSize.setSelected(_houseBeamSize);\n const _isRapidSetCement = obj.isRapidSetCement || false;\n this.APP.chkRapidSetCement.setValue(_isRapidSetCement);\n const _isDripBarge = obj.isDripBarge || false;\n this.APP.sltDripBarge.setValue(_isDripBarge);\n\n this.APP.sltColourDownpipe.setSelected(obj.colourDownpipe.value);\n this.APP.sltColourBracket.setSelected(obj.colourBracket.value);\n const _colourFasciaBracket = obj.colourFasciaBracket\n ? obj.colourFasciaBracket.value\n : 0xe4e2d50;\n this.APP.sltColourFasciaBracket.setSelected(_colourFasciaBracket);\n this.APP.sltColourZFlashing.setSelected(obj.colourZFlashing.value);\n this.APP.sltColourGutter.setSelected(obj.colourGutter.value);\n this.APP.sltColourBarge.setSelected(obj.colourBarge.value);\n this.APP.sltColourRoof.setSelected(obj.colourRoof.value);\n\n this.APP.isFBRoof = obj.isFBRoof;\n this.APP.patiosRoofType =\n obj.patiosRoofType || PATIOS_ROOF_TYPE.FLAT_ROOF;\n\n setTimeout(() => {\n this.APP.sldNoOfBay.setValue(obj.noOfBay);\n //----RakeCut\n const _leftCutType = obj.leftCutType ? obj.leftCutType.value : 0;\n const _rightCutType = obj.rightCutType ? obj.rightCutType.value : 0;\n const _leftCutVertical = obj.leftCutVertical || 0;\n const _rightCutVertical = obj.rightCutVertical || 0;\n const _leftCutHorizontal = obj.leftCutHorizontal || 0;\n const _rightCutHorizontal = obj.rightCutHorizontal || 0;\n\n this.APP.sltLeftCutType.setSelected(_leftCutType);\n this.APP.sltRightCutType.setSelected(_rightCutType);\n this.APP.sldLeftCutVertical.setValue(_leftCutVertical);\n this.APP.sldLeftCutHorizontal.setValue(_leftCutHorizontal);\n this.APP.sldRightCutVertical.setValue(_rightCutVertical);\n this.APP.sldRightCutHorizontal.setValue(_rightCutHorizontal);\n //Bang - 2021.04.06 -> Tranh loi khi default lại mau khi xay ra su kien onColumnTypeChanged()\n this.APP.sltColourPost.setSelected(obj.colourPost.value);\n this.APP.sltColourBeam.setSelected(obj.colourBeam.value);\n this.APP.sldBackOverhang.setValue(obj.backOverhang);\n this.APP.sldFrontOverhang.setValue(obj.frontOverhang);\n // this.APP.dialogEditBay.setValue(obj.listBay);\n setTimeout(() => {\n // Bang - 2022.08.15 -> Lỗi khi open lại thì Bay load về default 4400\n this.APP.dialogEditBay.setValue(obj.listBay);\n this.APP.sldRightOverhang.setValue(obj.rightOverhang);\n this.APP.sldLeftOverhang.setValue(obj.leftOverhang);\n this.APP.sldBuildingHeight.setValueAndHandleEvent(\n obj.buildingHeight,\n true\n );\n\n if (this.APP.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF) {\n this.APP.sldSpan.setValue(obj.span);\n }\n }, 300);\n //----\n }, 500);\n });\n return promise;\n }\n alignWallToPatios(enable) {\n if (HomeComponent.ins.currentBuildingInfo.isOpen) {\n return;\n }\n let patiosLength =\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldSpan.currentValue +\n this.APP.sldBackOverhang.currentValue +\n this.APP.sldFrontOverhang.currentValue;\n if (enable && this.APP.sldExistingWidth1.currentValue < 1000) {\n this.APP.sldExistingWidth1.setValue(patiosLength);\n this.APP.sldExistingWidth1.setMin(1000);\n } else if (!enable) {\n this.APP.sldExistingWidth1.setMin(0);\n }\n }\n validateCutout() {\n if (HomeComponent.ins.currentBuildingInfo.isOpen) {\n return;\n }\n let cutoutCondition =\n this.APP.sltExistingType.currentValue != 0 &&\n this.APP.patiosManager.cutoutCondition &&\n this.APP.sldExistingWidth1.currentValue > 0 &&\n this.APP.sldExistingLength2.currentValue > 0;\n\n if (\n cutoutCondition &&\n this.APP.patiosRoofType === PATIOS_ROOF_TYPE.FLAT_ROOF\n ) {\n this.APP.sltCutOut.setDisable(false);\n } else {\n this.APP.sltCutOut.setSelected(\"0\");\n this.APP.sltCutOut.setDisable(true);\n }\n }\n validateRakeCut() {\n let maxSpanLeft =\n this.APP.sldSpan.currentValue + this.APP.sldFrontOverhang.currentValue;\n let maxSpanRight =\n this.APP.sldSpan.currentValue + this.APP.sldFrontOverhang.currentValue;\n\n //\n if (\n this.APP.sldMultiSpan.currentValue > 0 &&\n this.APP.sldSpan.currentValue\n ) {\n maxSpanLeft =\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue;\n maxSpanRight =\n this.APP.sldMultiSpan.currentValue +\n this.APP.sldFrontOverhang.currentValue;\n }\n\n if (this.APP.sltCutOut.currentValue == CUTOUT_ENABLE.YES) {\n let cond =\n this.APP.sldMultiSpan.currentValue == 0 ||\n (this.APP.sldMultiSpan.currentValue > 0 &&\n this.APP.sldSpan.currentValue <\n this.APP.sldExistingWidth1.currentValue);\n if (\n cond &&\n (this.APP.sltExistingType.currentValue == BUILDING_SIDE.LEFT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH)\n ) {\n maxSpanLeft =\n this.APP.patiosManager.patiosLength -\n this.APP.sldExistingWidth1.currentValue;\n }\n if (\n cond &&\n (this.APP.sltExistingType.currentValue == BUILDING_SIDE.RIGHT ||\n this.APP.sltExistingType.currentValue == BUILDING_SIDE.BOTH)\n ) {\n maxSpanRight =\n this.APP.patiosManager.patiosLength -\n this.APP.sldExistingWidth1.currentValue;\n }\n }\n //In case of step cut the remaining space at least 500\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n maxSpanLeft -= 500;\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n maxSpanRight -= 500;\n }\n\n let sizeLeft = this.APP.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.LEFT\n );\n let sizeRight = this.APP.utils.getBeamRakeCutInfo(\n this.APP,\n BUILDING_SIDE.RIGHT\n );\n\n //Ensure left cut and right cut do not overlap each other\n //And can not be over first bay\n let bayMax =\n this.APP.dialogEditBay.totalBaySize +\n this.APP.sldLeftOverhang.currentValue +\n this.APP.sldRightOverhang.currentValue;\n let postInfo = null;\n if (this.APP.geometryManager.SUPERIOR_POST.S65x65) {\n postInfo = this.APP.geometryManager.getPost();\n }\n if (this.APP.sldNoOfBay.currentValue == 1) {\n let maxLeft1 = bayMax - sizeRight.l;\n let maxLeft2 =\n (maxLeft1 * this.APP.sldLeftCutVertical.currentValue) / sizeLeft.j;\n\n let maxRight1 = bayMax - sizeLeft.l;\n let maxRight2 =\n (maxRight1 * this.APP.sldRightCutVertical.currentValue) / sizeRight.j;\n\n let FO = this.APP.sldFrontOverhang.currentValue;\n let CHL = this.APP.sldLeftCutHorizontal.currentValue;\n let CVL = this.APP.sldLeftCutVertical.currentValue;\n let dMaxleft =\n (FO * Math.sqrt(Math.pow(CHL, 2) + Math.pow(CVL, 2))) / CVL -\n (FO * CHL) / CVL;\n\n maxLeft2 =\n this.APP.dialogEditBay.listBay[0].value +\n this.APP.sldLeftOverhang.currentValue -\n dMaxleft -\n (postInfo?.width || 0);\n\n let CHR = this.APP.sldRightCutHorizontal.currentValue;\n let CVR = this.APP.sldRightCutVertical.currentValue;\n let dMaxRight =\n (FO * Math.sqrt(Math.pow(CHR, 2) + Math.pow(CVR, 2))) / CVR -\n (FO * CHR) / CVR;\n\n maxRight2 =\n this.APP.dialogEditBay.listBay[0].value +\n this.APP.sldRightOverhang.currentValue -\n dMaxRight -\n (postInfo?.width || 0);\n\n this.APP.sldRightCutHorizontal.setMax(Math.round(maxRight2));\n this.APP.sldLeftCutHorizontal.setMax(Math.round(maxLeft2));\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n if (\n bayMax -\n this.APP.sldLeftCutHorizontal.currentValue -\n dMaxRight -\n (postInfo?.width || 0) >\n 0\n ) {\n this.APP.sldRightCutHorizontal.setMax(\n Math.round(\n bayMax -\n this.APP.sldLeftCutHorizontal.currentValue -\n dMaxRight -\n (postInfo?.width || 0)\n )\n );\n } else {\n this.APP.sldRightCutHorizontal.setMax(\n this.APP.sldRightCutHorizontal.minValue\n );\n this.APP.sltRightCutType.setSelected(\"0\");\n }\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.ANGLE) {\n if (\n bayMax -\n this.APP.sldRightCutHorizontal.currentValue -\n dMaxleft -\n (postInfo?.width || 0) >\n 0\n ) {\n this.APP.sldLeftCutHorizontal.setMax(\n Math.round(\n bayMax -\n this.APP.sldRightCutHorizontal.currentValue -\n dMaxleft -\n (postInfo?.width || 0)\n )\n );\n } else {\n this.APP.sldLeftCutHorizontal.setMax(\n this.APP.sldRightCutHorizontal.minValue\n );\n this.APP.sltLeftCutType.setSelected(\"0\");\n }\n }\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n this.APP.sldLeftCutHorizontal.setMax(\n Math.round(bayMax - this.APP.sldRightCutHorizontal.currentValue - 762)\n );\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n this.APP.sldRightCutHorizontal.setMax(\n Math.round(bayMax - this.APP.sldLeftCutHorizontal.currentValue - 762)\n );\n }\n } else {\n let maxBayLeft =\n this.APP.dialogEditBay.listBay[0].value +\n this.APP.sldLeftOverhang.currentValue;\n let maxBayRight =\n this.APP.dialogEditBay.listBay[this.APP.dialogEditBay.noOfBay - 1]\n .value + this.APP.sldRightOverhang.currentValue;\n let FO = this.APP.sldFrontOverhang.currentValue;\n let CHL = this.APP.sldLeftCutHorizontal.currentValue;\n let CVL = this.APP.sldLeftCutVertical.currentValue;\n let dMaxleft =\n (FO * Math.sqrt(Math.pow(CHL, 2) + Math.pow(CVL, 2))) / CVL -\n (FO * CHL) / CVL;\n\n maxBayLeft =\n this.APP.dialogEditBay.listBay[0].value +\n this.APP.sldLeftOverhang.currentValue -\n dMaxleft -\n (postInfo?.width || 0);\n\n let CHR = this.APP.sldRightCutHorizontal.currentValue;\n let CVR = this.APP.sldRightCutVertical.currentValue;\n let dMaxRight =\n (FO * Math.sqrt(Math.pow(CHR, 2) + Math.pow(CVR, 2))) / CVR -\n (FO * CHR) / CVR;\n\n maxBayRight =\n this.APP.dialogEditBay.listBay[this.APP.dialogEditBay.noOfBay - 1]\n .value +\n this.APP.sldRightOverhang.currentValue -\n dMaxRight -\n (postInfo?.width || 0);\n\n this.APP.sldLeftCutHorizontal.setMax(Math.round(maxBayLeft));\n this.APP.sldRightCutHorizontal.setMax(Math.round(maxBayRight));\n\n if (this.APP.sltLeftCutType.currentValue == RAKECUT_TYPE.STEP) {\n this.APP.sldLeftCutHorizontal.setMax(\n Math.round(bayMax - this.APP.sldRightCutHorizontal.currentValue - 762)\n );\n }\n if (this.APP.sltRightCutType.currentValue == RAKECUT_TYPE.STEP) {\n this.APP.sldRightCutHorizontal.setMax(\n Math.round(bayMax - this.APP.sldLeftCutHorizontal.currentValue - 762)\n );\n }\n }\n\n //Vertical cut can not be over first span\n this.APP.sldLeftCutVertical.setMax(maxSpanLeft);\n this.APP.sldRightCutVertical.setMax(maxSpanRight);\n\n //If vertical cut is over span size reduce vertical cut\n if (this.APP.sldLeftCutVertical.currentValue > maxSpanLeft) {\n this.APP.sldLeftCutVertical.setValue(maxSpanLeft);\n }\n if (this.APP.sldRightCutVertical.currentValue > maxSpanRight) {\n this.APP.sldRightCutVertical.setValue(maxSpanRight);\n }\n //Only allow rakecut if have post\n if (this.APP.patiosManager) {\n // this.f();\n this.APP.patiosManager.firstLoad = false;\n }\n }\n\n f() {\n let postLeft = this.APP.patiosManager?.patiosGroup?.children.find(\n (c) =>\n c.userData.type == GEOMETRY_TYPE.SUPERIOR_POST &&\n c.userData.position?.left\n );\n if (!postLeft) {\n this.APP.sltLeftCutType.setSelected(\"0\");\n this.APP.sltLeftCutType.setDisable(true);\n } else {\n this.APP.sltLeftCutType.setDisable(false);\n }\n\n let postRight = this.APP.patiosManager?.patiosGroup?.children.find(\n (c) =>\n c.userData.type == GEOMETRY_TYPE.SUPERIOR_POST &&\n c.userData.position?.right\n );\n if (!postRight) {\n this.APP.sltRightCutType.setSelected(\"0\");\n this.APP.sltRightCutType.setDisable(true);\n } else {\n this.APP.sltRightCutType.setDisable(false);\n }\n }\n}\nexport function registerEvents(controls, action) {\n controls.forEach((control) => {\n if (HomeComponent.ins[control]) {\n HomeComponent.ins[control].addAction(action);\n }\n });\n}\nexport function unRegisterEvents(controls, action) {\n controls.forEach((control) => {\n if (HomeComponent.ins[control]) {\n HomeComponent.ins[control].removeAction(action);\n }\n });\n}\n","import { HomeComponent } from \"../containers/home\";\nimport { utils } from \"./utils\";\nexport class UI {\n public static readonly Controls = {\n SPAN: \"sldSpan\",\n MULTI_SPAN: \"sldMultiSpan\",\n OVERHANG_FRONT: \"sldFrontOverhang\",\n OVERHANG_LEFT: \"sldLeftOverhang\",\n OVERHANG_RIGHT: \"sldRightOverhang\",\n OVERHANG_BACK: \"sldBackOverhang\",\n BAYSZIE: \"sldBaySize\",\n RAKECUT_LEFT_TYPE: \"sltLeftCutType\",\n LENGTH1: \"sldExistingLength\",\n LENGTH2: \"sldExistingLength2\",\n WIDTH1: \"sldExistingWidth1\",\n WIDTH2: \"sldExistingWidth2\",\n EXISTING_TYPE: \"sltExistingType\",\n BAYS: \"dialogEditBay\",\n EAVE_WIDTH: \"sldEaveWidth\",\n STRUCTURE_TYPE: \"sltStructureType\",\n CUTOUT: \"sltCutOut\",\n PATIOS_ROOF_PITCH: \"sltRoofPitch\",\n FASCIA_DEPTH: \"sldFasciaDepth\",\n EXISTING_ROOF_PITCH: \"existingRoofPitch\",\n FLYOVER_BRAKET_HEIGHT: \"sldFlyOverBracketHeight\",\n FASCIA_UPSTAND_BRAKET: \"sltFasciaUpstandBrackets\",\n EXISTING_WALL_HEIGHT: \"sldExistingWallHeight\",\n ROOF_SHEETING_TYPE: \"sltRoofSheetingType\",\n ROOF_THICKNESS: \"sltRoofThickness\",\n };\n static getHeightByRoofPitch(isSpan): number {\n if (isSpan) {\n return (\n utils.tan(HomeComponent.ins.sltRoofPitch.currentValue) *\n HomeComponent.ins.sldSpan.currentValue\n );\n } else {\n return (\n utils.tan(HomeComponent.ins.sltRoofPitch.currentValue) *\n (HomeComponent.ins.sldSpan.currentValue +\n HomeComponent.ins.sldMultiSpan.currentValue)\n );\n }\n }\n\n static get beamSize() {\n return +HomeComponent.ins.sltBeamSize.currentValue;\n }\n static get houseBeamSize() {\n return +HomeComponent.ins.sltHouseBeamSize.currentValue;\n }\n\n static get beamType() {\n return +HomeComponent.ins.sltBeamType.currentValue;\n }\n static get postType() {\n return +HomeComponent.ins.sltColumnType.currentValue;\n }\n static get windClass() {\n return +HomeComponent.ins.sltWindClass.currentValue;\n }\n\n static get rakeCutLeftType() {\n return HomeComponent.ins.sltLeftCutType.currentValue;\n }\n static get rakeCutRightType() {\n return HomeComponent.ins.sltRightCutType.currentValue;\n }\n static get eaveHeight() {\n return HomeComponent.ins.sldExistingWallHeight.currentValue;\n }\n static get existingLength1() {\n return HomeComponent.ins.sldExistingLength.currentValue;\n }\n static get existingLength2() {\n return HomeComponent.ins.sldExistingLength2.currentValue;\n }\n static get existingWidth1() {\n return HomeComponent.ins.sldExistingWidth1.currentValue;\n }\n static get existingWidth2() {\n return HomeComponent.ins.sldExistingWidth2.currentValue;\n }\n static get existingType() {\n return HomeComponent.ins.sltExistingType.currentValue;\n }\n static get height() {\n return HomeComponent.ins.sldBuildingHeight.currentValue;\n }\n static get frontHeight() {\n return (\n utils.tan(HomeComponent.ins.sltRoofPitch.currentValue) *\n (HomeComponent.ins.sldSpan.currentValue +\n HomeComponent.ins.sldMultiSpan.currentValue)\n );\n }\n static get totalBayLength() {\n return HomeComponent.ins.dialogEditBay.totalBaySize;\n }\n static get overhangLeft() {\n return HomeComponent.ins.sldLeftOverhang.currentValue;\n }\n static get overhangRight() {\n return HomeComponent.ins.sldRightOverhang.currentValue;\n }\n static get overhangFront() {\n return HomeComponent.ins.sldFrontOverhang.currentValue;\n }\n static get overhangBack() {\n return HomeComponent.ins.sldBackOverhang.currentValue;\n }\n static get span() {\n return HomeComponent.ins.sldSpan.currentValue;\n }\n static get multiSpan() {\n return +HomeComponent.ins.sldMultiSpan.currentValue;\n }\n static get rakeCutLeftHor() {\n return HomeComponent.ins.sldLeftCutHorizontal.currentValue;\n }\n static get rakeCutLeftVer() {\n return HomeComponent.ins.sldLeftCutVertical.currentValue;\n }\n static get rakeCutRightHor() {\n return HomeComponent.ins.sldRightCutHorizontal.currentValue;\n }\n static get rakeCutRightVer() {\n return HomeComponent.ins.sldRightCutVertical.currentValue;\n }\n static get structureType() {\n return +HomeComponent.ins.sltStructureType.currentValue;\n }\n static get patiosRoofType() {\n return HomeComponent.ins.patiosRoofType;\n }\n static get listBay() {\n return HomeComponent.ins.dialogEditBay.listBay;\n }\n static get cutOutType() {\n return HomeComponent.ins.sltCutOut.currentValue;\n }\n static get upstandBraketType() {\n return +HomeComponent.ins.sltFasciaUpstandBrackets.currentValue;\n }\n static get existingWallHeight() {\n return HomeComponent.ins.sldExistingWallHeight.currentValue;\n }\n static get eaveWidth() {\n return HomeComponent.ins.sldEaveWidth.currentValue;\n }\n static get patiosPitch() {\n return HomeComponent.ins.sltRoofPitch.currentValue;\n }\n static get existingRoofPitch() {\n return HomeComponent.ins.sltExistingRoofPitch.currentValue;\n }\n static get isUpFasciaUpstandardBracket() {\n return HomeComponent.ins.sltUpFasciaUpstandBracket.currentValue;\n }\n static get existingRoofType() {\n return HomeComponent.ins.sltExistingRoofType.currentValue;\n }\n static get braketHeight() {\n return HomeComponent.ins.sldFlyOverBracketHeight.currentValue;\n }\n static get existingWallLength1() {\n return HomeComponent.ins.existingWallManager.geo_existingWallL1.width;\n }\n static get existingWallW1() {\n return HomeComponent.ins.existingWallManager.geo_existingWallW1;\n }\n static get existingWallL2() {\n return HomeComponent.ins.existingWallManager.geo_existingWallL2;\n }\n static get panelDirection() {\n return HomeComponent.ins.sltPanelDirection.currentValue;\n }\n static get beamColor() {\n return HomeComponent.ins.sltColourBeam.currentValue;\n }\n static get postColor() {\n return HomeComponent.ins.sltColourPost.currentValue;\n }\n static set oldBackOverhang(value: number) {\n HomeComponent.ins.oldOverhangBack = value;\n }\n static get oldBackOverhang() {\n return HomeComponent.ins.oldOverhangBack;\n }\n\n static get fasciaDepth() {\n return HomeComponent.ins.sldFasciaDepth.currentValue;\n }\n\n static get showRoof() {\n return HomeComponent.ins.btnTurnOnPanel.currentValue;\n }\n\n static get beamLayoutShow() {\n return HomeComponent.ins.sltBeamLayoutShow.currentValue;\n }\n\n static get panelColor() {\n return HomeComponent.ins.sltColourRoof.currentValue;\n }\n\n static get baySize() {\n return HomeComponent.ins.sldBaySize.currentValue;\n }\n static get noOfBay() {\n return HomeComponent.ins.sldNoOfBay.currentValue;\n }\n\n static get roofSheetingType() {\n return HomeComponent.ins.sltRoofSheetingType.currentValue;\n }\n\n static get enableControl() {\n return HomeComponent.ins.btnEnableControl.currentValue;\n }\n}\n","import _ from \"lodash\";\nimport * as THREE from \"three\";\nimport {\n Box3,\n BoxBufferGeometry,\n BoxHelper,\n BufferGeometry,\n Color,\n EdgesGeometry,\n Float32BufferAttribute,\n Geometry,\n Group,\n Line3,\n LineBasicMaterial,\n LineSegments,\n Material,\n Matrix4,\n Mesh,\n Object3D,\n Plane,\n PlaneBufferGeometry,\n Shape,\n ShapeBufferGeometry,\n TextBufferGeometry,\n Vector2,\n Vector3,\n} from \"three\";\nimport { CSG } from \"three-csg-ts\";\nimport {\n DIMENSION_LABEL_TYPE,\n GEOMETRY_CATEGORY,\n GEOMETRY_TYPE,\n PATIOS_ROOF_TYPE,\n} from \"../app.config\";\nimport {\n BUILDING_SIDE,\n CONNECTION_TYPE,\n CUTOUT_ENABLE,\n EXISTING_BUILDING_CONFIG,\n OBJECT_TYPE,\n RAKECUT_TYPE,\n} from \"../app.constants\";\nimport { HomeComponent } from \"../containers/home\";\nimport { GeometryManager } from \"./geometry.manager\";\nimport { MaterialManager } from \"./material.manager\";\nimport {\n ColorShape,\n GeometryInfo,\n Printing2DLine,\n Printing3DGeometry,\n ViewType,\n} from \"./models\";\nimport SelectionManager from \"./selection.manager\";\nimport { UI } from \"./ui\";\nimport { Print2DView } from \"./models\";\nimport { PolygonUtils } from \"./polygonUtils\";\nimport * as mathjs from \"mathjs\";\nimport { BeamCapAndJointInfo } from \"./patios.manager\";\nexport class Util {\n private lineArrowGeo: GeometryInfo;\n private geo_gutterBack: GeometryInfo;\n constructor() {\n this.lineArrowGeo = new GeometryInfo();\n this.geo_gutterBack = new GeometryInfo();\n this.lineArrowGeo.geometry = new PlaneBufferGeometry(100, 30);\n this.lineArrowGeo.geometry.translate(50, 0, 0);\n this.lineArrowGeo.width = 30;\n this.lineArrowGeo.length = 100;\n }\n public getGeometryLength(\n geometry: THREE.BufferGeometry,\n axis: THREE.Vector3\n ): number {\n geometry.computeBoundingBox();\n let box = geometry.boundingBox;\n if (axis.x > 0) {\n return box.max.x - box.min.x;\n } else if (axis.y > 0) {\n return box.max.y - box.min.y;\n } else {\n return box.max.z - box.min.z;\n }\n }\n public getMeshLength(mesh: THREE.Mesh, axis: THREE.Vector3): number {\n let box = new Box3().setFromObject(mesh);\n if (axis.x > 0) {\n return box.max.x - box.min.x;\n } else if (axis.y > 0) {\n return box.max.y - box.min.y;\n } else {\n return box.max.z - box.min.z;\n }\n }\n public convertHexColorToRgb(hex): ColorShape {\n const color: ColorShape = {\n r: 0,\n g: 0,\n b: 0,\n };\n\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n if (result) {\n color.r = parseInt(result[1], 16) / 255;\n color.g = parseInt(result[2], 16) / 255;\n color.b = parseInt(result[3], 16) / 255;\n }\n\n return color;\n }\n public getRoofCoverPolygonForFBRoof() {\n const totalRoofLength =\n UI.span + UI.multiSpan + UI.overhangLeft + UI.overhangRight;\n const totalRoofWidth =\n UI.totalBayLength + UI.overhangFront + UI.overhangBack;\n\n const minX = -(UI.span + UI.multiSpan) / 2 - UI.overhangLeft;\n const minZ = 0;\n\n const frontLeft = new Vector3(minX, 0, minZ + totalRoofWidth);\n const frontRight = new Vector3(\n minX + totalRoofLength,\n 0,\n minZ + totalRoofWidth\n );\n const backLeft = new Vector3(minX, 0, minZ);\n const backRight = new Vector3(minX + totalRoofLength, 0, minZ);\n\n let lineFrontLeft = [frontLeft];\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n lineFrontLeft = [\n new Vector3(minX, 0, minZ + totalRoofWidth - UI.rakeCutLeftVer),\n new Vector3(minX + UI.rakeCutLeftHor, 0, minZ + totalRoofWidth),\n ];\n } else if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n lineFrontLeft = [\n new Vector3(minX, 0, minZ + totalRoofWidth - UI.rakeCutLeftVer),\n new Vector3(\n minX + UI.rakeCutLeftHor,\n 0,\n minZ + totalRoofWidth - UI.rakeCutLeftVer\n ),\n new Vector3(minX + UI.rakeCutLeftHor, 0, minZ + totalRoofWidth),\n ];\n }\n\n let lineFrontRight = [frontRight];\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n lineFrontRight = [\n new Vector3(\n minX + totalRoofLength - UI.rakeCutRightHor,\n 0,\n minZ + totalRoofWidth\n ),\n new Vector3(\n minX + totalRoofLength,\n 0,\n minZ + totalRoofWidth - UI.rakeCutRightVer\n ),\n ];\n } else if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n lineFrontRight = [\n new Vector3(\n minX + totalRoofLength - UI.rakeCutRightHor,\n 0,\n minZ + totalRoofWidth\n ),\n new Vector3(\n minX + totalRoofLength - UI.rakeCutRightHor,\n 0,\n minZ + totalRoofWidth - UI.rakeCutRightVer\n ),\n new Vector3(\n minX + totalRoofLength,\n 0,\n minZ + totalRoofWidth - UI.rakeCutRightVer\n ),\n ];\n }\n let lineFront = [...lineFrontLeft, ...lineFrontRight];\n\n let lineBackLeft = [backLeft];\n let lineBackRight = [backRight];\n let cutoutLength = UI.existingLength2;\n if (\n UI.structureType == CONNECTION_TYPE.FLY_OVER ||\n UI.structureType == CONNECTION_TYPE.BLACK_FLY_OVER\n ) {\n if (UI.existingType == BUILDING_SIDE.BOTH) {\n if (UI.existingWidth2 > 0) {\n cutoutLength =\n UI.existingLength2 -\n HomeComponent.ins.existingWallManager.geo_existingWallL2.width;\n } else {\n cutoutLength =\n UI.existingLength2 -\n HomeComponent.ins.existingWallManager.geo_existingWallL2.width * 2 -\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n }\n }\n }\n if (UI.cutOutType == CUTOUT_ENABLE.YES) {\n if (\n UI.existingType == BUILDING_SIDE.LEFT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n lineBackLeft = [\n new Vector3(minX + cutoutLength, 0, minZ),\n new Vector3(minX + cutoutLength, 0, minZ + UI.existingWidth1),\n new Vector3(minX, 0, minZ + UI.existingWidth1),\n ];\n }\n if (\n UI.existingType == BUILDING_SIDE.RIGHT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n lineBackRight = [\n new Vector3(minX + totalRoofWidth, 0, minZ + UI.existingWidth1),\n new Vector3(\n minX + totalRoofWidth - cutoutLength,\n 0,\n minZ + UI.existingWidth1\n ),\n new Vector3(minX + totalRoofWidth - cutoutLength, 0, minZ),\n ];\n }\n }\n\n let lineBack = [...lineBackRight, ...lineBackLeft];\n\n return [...lineFront, ...lineBack];\n }\n public getRoofCoverPolygonForLRRoof() {\n const totalRoofLength =\n UI.span + UI.multiSpan + UI.overhangFront + UI.overhangBack;\n const totalRoofWidth =\n UI.totalBayLength + UI.overhangLeft + UI.overhangRight;\n\n const minX = -UI.totalBayLength / 2 - UI.overhangLeft;\n const minZ = 0;\n\n const frontLeft = new Vector3(minX, 0, minZ + totalRoofLength);\n const frontRight = new Vector3(\n minX + totalRoofWidth,\n 0,\n minZ + totalRoofLength\n );\n const backLeft = new Vector3(minX, 0, minZ);\n const backRight = new Vector3(minX + totalRoofWidth, 0, minZ);\n\n let lineFrontLeft = [frontLeft];\n if (UI.rakeCutLeftType == RAKECUT_TYPE.ANGLE) {\n lineFrontLeft = [\n new Vector3(minX, 0, minZ + totalRoofLength - UI.rakeCutLeftVer),\n new Vector3(minX + UI.rakeCutLeftHor, 0, minZ + totalRoofLength),\n ];\n } else if (UI.rakeCutLeftType == RAKECUT_TYPE.STEP) {\n lineFrontLeft = [\n new Vector3(minX, 0, minZ + totalRoofLength - UI.rakeCutLeftVer),\n new Vector3(\n minX + UI.rakeCutLeftHor,\n 0,\n minZ + totalRoofLength - UI.rakeCutLeftVer\n ),\n new Vector3(minX + UI.rakeCutLeftHor, 0, minZ + totalRoofLength),\n ];\n }\n\n let lineFrontRight = [frontRight];\n if (UI.rakeCutRightType == RAKECUT_TYPE.ANGLE) {\n lineFrontRight = [\n new Vector3(\n minX + totalRoofWidth - UI.rakeCutRightHor,\n 0,\n minZ + totalRoofLength\n ),\n new Vector3(\n minX + totalRoofWidth,\n 0,\n minZ + totalRoofLength - UI.rakeCutRightVer\n ),\n ];\n } else if (UI.rakeCutRightType == RAKECUT_TYPE.STEP) {\n lineFrontRight = [\n new Vector3(\n minX + totalRoofWidth - UI.rakeCutRightHor,\n 0,\n minZ + totalRoofLength\n ),\n new Vector3(\n minX + totalRoofWidth - UI.rakeCutRightHor,\n 0,\n minZ + totalRoofLength - UI.rakeCutRightVer\n ),\n new Vector3(\n minX + totalRoofWidth,\n 0,\n minZ + totalRoofLength - UI.rakeCutRightVer\n ),\n ];\n }\n let lineFront = [...lineFrontLeft, ...lineFrontRight];\n\n let lineBackLeft = [backLeft];\n let lineBackRight = [backRight];\n let cutoutLength = UI.existingLength2;\n let cutOutWidth = UI.existingWidth1;\n if (\n UI.structureType == CONNECTION_TYPE.FLY_OVER ||\n UI.structureType == CONNECTION_TYPE.BLACK_FLY_OVER\n ) {\n if (UI.existingType == BUILDING_SIDE.BOTH) {\n if (UI.existingWidth2 > 0) {\n cutoutLength =\n UI.existingLength2 -\n HomeComponent.ins.existingWallManager.geo_existingWallL2.width;\n } else {\n cutoutLength =\n UI.existingLength2 -\n HomeComponent.ins.existingWallManager.geo_existingWallL2.width * 2 -\n EXISTING_BUILDING_CONFIG.EAVE_OFFSET_BACK;\n }\n }\n } else if (UI.structureType == CONNECTION_TYPE.FASCIA) {\n const shouldSnap =\n HomeComponent.ins.uiManager.calcShouldSnapRoofToExistingWhenCutout();\n if (shouldSnap) {\n cutoutLength = UI.existingLength2 + UI.eaveWidth;\n cutOutWidth = UI.existingWidth1 - UI.eaveWidth;\n }\n }\n if (UI.cutOutType == CUTOUT_ENABLE.YES) {\n if (\n UI.existingType == BUILDING_SIDE.LEFT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n lineBackLeft = [\n new Vector3(minX + cutoutLength, 0, minZ),\n new Vector3(minX + cutoutLength, 0, minZ + cutOutWidth),\n new Vector3(minX, 0, minZ + cutOutWidth),\n ];\n }\n if (\n UI.existingType == BUILDING_SIDE.RIGHT ||\n UI.existingType == BUILDING_SIDE.BOTH\n ) {\n lineBackRight = [\n new Vector3(minX + totalRoofWidth, 0, minZ + cutOutWidth),\n new Vector3(\n minX + totalRoofWidth - cutoutLength,\n 0,\n minZ + cutOutWidth\n ),\n new Vector3(minX + totalRoofWidth - cutoutLength, 0, minZ),\n ];\n }\n }\n\n let lineBack = [...lineBackRight, ...lineBackLeft];\n\n return [...lineFront, ...lineBack];\n }\n private drawBoundingBox(object: THREE.Object3D): void {\n // geometry.computeBoundingBox();\n // var box = geometry.boundingBox;\n // let cubeGeo = new THREE.BoxGeometry(10, 10, 10);\n // let cube = new THREE.Mesh(cubeGeo, new THREE.MeshBasicMaterial({ color: 0x74d00b }));\n // cube.position.set(box.min.x, box.min.y, box.min.z);\n // this.scene.add(cube);\n // cube = new THREE.Mesh(cubeGeo, new THREE.MeshBasicMaterial({ color: 0x74d00b }));\n // cube.position.set(box.max.x, box.max.y, box.max.z);\n // this.scene.add(cube);\n }\n private fitCameraToSelection(camera, controls, selection, fitOffset = 1.2) {\n const box = new Box3();\n\n for (const object of selection) box.expandByObject(object);\n\n const size = box.getSize(new Vector3());\n const center = box.getCenter(new Vector3());\n\n const maxSize = Math.max(size.x, size.y, size.z);\n const fitHeightDistance =\n maxSize / (2 * Math.atan((Math.PI * camera.fov) / 360));\n const fitWidthDistance = fitHeightDistance / camera.aspect;\n const distance = fitOffset * Math.max(fitHeightDistance, fitWidthDistance);\n\n const direction = controls.target\n .clone()\n .sub(camera.position)\n .normalize()\n .multiplyScalar(distance);\n\n controls.maxDistance = distance * 10;\n controls.target.copy(center);\n\n camera.near = distance / 100;\n camera.far = distance * 100;\n camera.updateProjectionMatrix();\n\n camera.position.copy(controls.target).sub(direction);\n\n controls.update();\n }\n fitCameraToObject(camera, object, offset, controls) {\n offset = offset || 1.25;\n\n const boundingBox = new THREE.Box3();\n\n // get bounding box of object - this will be used to setup controls and camera\n boundingBox.setFromObject(object);\n\n let center: THREE.Vector3;\n boundingBox.getCenter(center);\n let size: THREE.Vector3;\n boundingBox.getSize(size);\n\n // get the max side of the bounding box (fits to width OR height as needed )\n const maxDim = Math.max(size.x, size.y, size.z);\n const fov = camera.fov * (Math.PI / 180);\n let cameraZ = Math.abs((maxDim / 4) * Math.tan(fov * 2));\n\n cameraZ *= offset; // zoom out a little so that objects don't fill the screen\n\n camera.position.z = cameraZ;\n\n const minZ = boundingBox.min.z;\n const cameraToFarEdge = minZ < 0 ? -minZ + cameraZ : cameraZ - minZ;\n\n camera.far = cameraToFarEdge * 3;\n camera.updateProjectionMatrix();\n\n if (controls) {\n // set camera to rotate around center of loaded object\n controls.target = center;\n\n // prevent camera from zooming out far enough to create far plane cutoff\n controls.maxDistance = cameraToFarEdge * 2;\n\n controls.saveState();\n } else {\n camera.lookAt(center);\n }\n }\n degreesToRadians(degrees: number) {\n var pi = Math.PI;\n return this.round(degrees * (pi / 180));\n }\n round(num: number): number {\n return parseFloat(num.toFixed(3));\n }\n sin(degrees: number): number {\n return this.round(Math.sin(this.degreesToRadians(degrees)));\n }\n cos(degrees: number): number {\n return this.round(Math.cos(this.degreesToRadians(degrees)));\n }\n tan(degrees: number): number {\n return this.round(Math.tan(this.degreesToRadians(degrees)));\n }\n public createArrowLine(views: Print2DView[]): THREE.Line {\n let origin = new Vector3(0, 0, 0);\n let head = new Vector3(0, 0, 1000);\n let hand1 = new Vector3(-50, 0, 950);\n let hand2 = new Vector3(50, 0, 950);\n\n let geoLine = new Geometry();\n geoLine.vertices.push(origin);\n geoLine.vertices.push(head);\n\n geoLine.vertices.push(head);\n geoLine.vertices.push(hand1);\n\n geoLine.vertices.push(hand1);\n geoLine.vertices.push(hand2);\n\n geoLine.vertices.push(hand2);\n geoLine.vertices.push(head);\n\n let dim = new THREE.Line(geoLine);\n dim.userData = { type: \"Arrow\", views: views };\n\n return dim;\n }\n public createText(\n textStr: string,\n views: Print2DView[],\n textParameter,\n position: Vector3\n ): Mesh {\n let textGeo = new TextBufferGeometry(textStr, textParameter);\n textGeo.center();\n\n let text = new Mesh(textGeo, MaterialManager.Instance().DIMENSION_TEXT);\n text.userData = {\n type: GEOMETRY_TYPE.DIMENSION_TEXT,\n value: textStr,\n views: views,\n rotation: new Vector3(0, 0, 0),\n };\n text.position.setZ(position.z);\n text.position.setX(position.x);\n\n return text;\n }\n getOutlineGeometry(\n geo: Geometry | BufferGeometry,\n threshold: number\n ): EdgesGeometry {\n return new EdgesGeometry(geo, threshold);\n }\n getOutlineGeometryFromMesh(mesh: Mesh, threshold: number) {\n let geo = mesh.geometry.clone();\n geo.scale(mesh.scale.x, mesh.scale.y, mesh.scale.z);\n return new EdgesGeometry(geo, threshold);\n }\n getOutlineGeometryFromMeshNoScale(mesh: Mesh, threshold: number) {\n let geo = mesh.geometry.clone();\n //geo.scale(mesh.scale.x, mesh.scale.y, mesh.scale.z);\n return new EdgesGeometry(geo, threshold);\n }\n clipOutline(geo: EdgesGeometry, plane: Plane): BufferGeometry {\n let vertices = geo.getAttribute(\"position\").array;\n let newVertices = [];\n\n let intersectPoints: Vector3[] = [];\n\n for (let i = 0; i < vertices.length; i += 6) {\n let v1 = new Vector3(vertices[i], vertices[i + 1], vertices[i + 2]);\n let v2 = new Vector3(vertices[i + 3], vertices[i + 4], vertices[i + 5]);\n\n let line = new Line3(v1, v2);\n let intersectPoint = new Vector3();\n let rs = plane.intersectLine(line, intersectPoint);\n\n let dis1 = plane.distanceToPoint(v1);\n let dis2 = plane.distanceToPoint(v2);\n\n if (dis1 < 0 && dis2 < 0) continue;\n\n if (rs) {\n if (dis1 > 0) {\n newVertices.push(v1);\n } else {\n newVertices.push(v2);\n }\n\n newVertices.push(intersectPoint);\n intersectPoints.push(intersectPoint);\n } else {\n newVertices.push(v1, v2);\n }\n }\n\n for (let i = 0; i < intersectPoints.length - 1; i++) {\n newVertices.push(intersectPoints[i]);\n newVertices.push(intersectPoints[i + 1]);\n }\n\n return new BufferGeometry().setFromPoints(newVertices);\n }\n clipOutlineBasePanel(geo: EdgesGeometry, plane: Plane): BufferGeometry {\n let vertices = geo.getAttribute(\"position\").array;\n let newVertices = [];\n\n let intersectPoints: Vector3[] = [];\n\n for (let i = 0; i < vertices.length; i += 6) {\n let v1 = new Vector3(vertices[i], vertices[i + 1], vertices[i + 2]);\n let v2 = new Vector3(vertices[i + 3], vertices[i + 4], vertices[i + 5]);\n\n let line = new Line3(v1, v2);\n let intersectPoint = new Vector3();\n let rs = plane.intersectLine(line, intersectPoint);\n\n let dis1 = plane.distanceToPoint(v1);\n let dis2 = plane.distanceToPoint(v2);\n\n if (dis1 < 0 && dis2 < 0) continue;\n\n if (rs) {\n if (dis1 > 0) {\n newVertices.push(v1);\n } else {\n newVertices.push(v2);\n }\n\n newVertices.push(intersectPoint);\n intersectPoints.push(intersectPoint);\n } else {\n newVertices.push(v1, v2);\n }\n }\n\n if (HomeComponent.ins.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF) {\n if (intersectPoints.length === 4) {\n intersectPoints = this.createPolygon(intersectPoints);\n }\n }\n for (let i = 0; i < intersectPoints.length - 1; i++) {\n newVertices.push(intersectPoints[i]);\n newVertices.push(intersectPoints[i + 1]);\n }\n\n return new BufferGeometry().setFromPoints(newVertices);\n }\n public createPolygon(initPoints) {\n if (initPoints.length > 3) {\n let points = this.sortPoints(\n initPoints,\n initPoints[0].x !== initPoints[1].x ? \"x\" : \"z\"\n );\n\n let polygon = [...points.slice(0, 3)];\n points.splice(0, 3);\n this.findNextPoinst(polygon, points, 2);\n return polygon;\n } else {\n return initPoints;\n }\n }\n public findNextPoinst(polygon, restOfPoints, indexOfMaxPoint) {\n if (restOfPoints.length === 0) {\n return;\n }\n let r1 = [\n polygon[indexOfMaxPoint],\n polygon[indexOfMaxPoint === polygon.length - 1 ? 0 : indexOfMaxPoint + 1],\n ];\n let r2 = [polygon[indexOfMaxPoint - 1], polygon[indexOfMaxPoint]];\n\n let simpleMaxPolygon = [\n polygon[indexOfMaxPoint - 1],\n polygon[indexOfMaxPoint],\n polygon[indexOfMaxPoint === polygon.length - 1 ? 0 : indexOfMaxPoint + 1],\n ];\n\n let nextPoint = restOfPoints.splice(0, 1)[0];\n let closestPoint = PolygonUtils.getClosestPointInsidePolygon(\n simpleMaxPolygon,\n nextPoint\n );\n\n let isPointOnSegmentR1 = PolygonUtils.isPointOnSegment(\n r1 as [Vector3, Vector3],\n closestPoint\n );\n let isPointOnSegmentR2 = PolygonUtils.isPointOnSegment(\n r2 as [Vector3, Vector3],\n closestPoint\n );\n\n if (!(isPointOnSegmentR1 && isPointOnSegmentR2)) {\n if (isPointOnSegmentR1) {\n polygon.splice(indexOfMaxPoint + 1, 0, nextPoint);\n this.findNextPoinst(polygon, restOfPoints, indexOfMaxPoint + 1);\n }\n if (isPointOnSegmentR2) {\n polygon.splice(indexOfMaxPoint, 0, nextPoint);\n this.findNextPoinst(polygon, restOfPoints, indexOfMaxPoint);\n }\n } else {\n let r1_1 = [r1[0], nextPoint];\n let r1_2 = [r1[1], nextPoint];\n\n let inter1 = mathjs.intersect(\n this.vector3ToArray(r1_1[0]),\n this.vector3ToArray(r1_1[1]),\n this.vector3ToArray(r2[0]),\n this.vector3ToArray(r2[1])\n );\n let inter2 = mathjs.intersect(\n this.vector3ToArray(r1_2[0]),\n this.vector3ToArray(r1_2[1]),\n this.vector3ToArray(r2[0]),\n this.vector3ToArray(r2[1])\n );\n\n if (\n inter1 &&\n inter2 &&\n PolygonUtils.isPointOnSegment(\n r2 as [Vector3, Vector3],\n this.arrayToVector3(inter1)\n ) &&\n PolygonUtils.isPointOnSegment(\n r2 as [Vector3, Vector3],\n this.arrayToVector3(inter2)\n )\n ) {\n // Add point in r2\n polygon.splice(indexOfMaxPoint, 0, nextPoint);\n this.findNextPoinst(polygon, restOfPoints, indexOfMaxPoint);\n } else {\n // Add point in r1\n polygon.splice(indexOfMaxPoint + 1, 0, nextPoint);\n this.findNextPoinst(polygon, restOfPoints, indexOfMaxPoint + 1);\n }\n }\n }\n public vector3ToArray(vector) {\n return [vector.x, vector.y, vector.z];\n }\n public arrayToVector3(array) {\n return new Vector3(array[0], array[1], array[2]);\n }\n public sortPoints(points, direction) {\n let clonePoints = [...points];\n clonePoints.sort((a, b) => {\n if (a[direction] !== b[direction]) {\n return a[direction] - b[direction];\n } else {\n return a.y - b.y;\n }\n });\n\n return clonePoints;\n }\n public getOutlineRafterBeam(mesh: Mesh, lines: Printing2DLine[]) {\n let views = mesh.userData.views;\n\n mesh.updateWorldMatrix(true, true);\n let meshClone = new Mesh((mesh as Mesh).geometry);\n\n let box = new BoxHelper(meshClone);\n box.applyMatrix4(mesh.matrixWorld);\n\n box.updateWorldMatrix(true, true);\n let _geo = box[\"geometry\"].clone() as BufferGeometry;\n _geo.applyMatrix4(box.matrixWorld);\n\n let positions: any = _geo.attributes[\"position\"].array;\n let boxGeo = new BufferGeometry().setAttribute(\n \"position\",\n new Float32BufferAttribute(positions.slice(0, positions.length / 2), 3)\n );\n\n this.getOutlineByViews(mesh, boxGeo, lines, views);\n }\n public getOutlineByViews(\n group: THREE.Object3D,\n boxGeo: BufferGeometry,\n lines: Printing2DLine[],\n views\n ) {\n let mat = (group as Mesh).material as Material;\n let outLineClip = boxGeo;\n if (mat.clippingPlanes && mat.clippingPlanes.length > 0) {\n for (let i = 0; i < mat.clippingPlanes.length; i++) {\n let clipPlane = mat.clippingPlanes[i].clone() as Plane;\n\n outLineClip = this.clipOutline(outLineClip, clipPlane);\n }\n }\n\n lines.push({\n vertices: this.getVerticeFromBufferGeo(outLineClip),\n views: views,\n objectType: group.userData?.type,\n });\n }\n public createOutline(\n mesh: Mesh,\n lines: Printing2DLine[],\n viewMesh?: Print2DView[]\n ) {\n mesh.updateWorldMatrix(true, true);\n let views = mesh.userData.views;\n if (viewMesh) {\n views = viewMesh;\n }\n //Side view\n let data = this.getEngineeringObjetOutline(mesh, views);\n\n lines.push(data.line as Printing2DLine);\n }\n public getEngineeringObjetOutline(\n obj: Object3D,\n views: Print2DView[],\n isLineSegment?: boolean\n ) {\n obj.updateWorldMatrix(true, true);\n\n let _geo = obj[\"geometry\"].clone() as BufferGeometry;\n _geo.applyMatrix4(obj.matrixWorld);\n\n let outline = this.createOutLineGeo(_geo, null, null);\n\n let objectType = \"\";\n if (obj.userData && obj.userData.type) {\n objectType = obj.userData.type;\n }\n\n let mat = new LineBasicMaterial({ color: 0x000000 });\n let outLineMesh = new LineSegments(outline, mat);\n outLineMesh.userData = { type: objectType };\n\n return {\n line: {\n vertices: this.getVerticeFromBufferGeo(outline),\n views,\n objectType: obj.userData?.type,\n },\n mesh: outLineMesh,\n };\n }\n public createOutLineGeo(geo, plane, thresholdAngle?: number) {\n let outLine: EdgesGeometry = new EdgesGeometry(geo);\n\n if (thresholdAngle) {\n outLine = new EdgesGeometry(geo, thresholdAngle);\n }\n return outLine;\n }\n public getVerticeFromBufferGeo(geo: BufferGeometry) {\n let positions = geo.attributes[\"position\"].array;\n let vertices: Vector3[] = [];\n for (let i = 0; i < positions.length; i += 3) {\n const vertex = new Vector3(\n positions[i],\n positions[i + 1],\n positions[i + 2]\n );\n vertices.push(vertex);\n }\n\n return vertices;\n }\n public getStartEndPoint(box: Box3): Vector3[] {\n let maxHeight = 0;\n let p1: Vector3;\n let p2: Vector3;\n\n if (box.max.x - box.min.x > maxHeight) {\n maxHeight = box.max.x - box.min.x;\n\n p1 = new Vector3(\n box.min.x,\n (box.max.y + box.min.y) / 2,\n (box.max.z + box.min.z) / 2\n );\n p2 = new Vector3(\n box.max.x,\n (box.max.y + box.min.y) / 2,\n (box.max.z + box.min.z) / 2\n );\n }\n if (box.max.y - box.min.y > maxHeight) {\n maxHeight = box.max.y - box.min.y;\n\n p1 = new Vector3(\n (box.max.x + box.min.x) / 2,\n box.min.y,\n (box.max.z + box.min.z) / 2\n );\n p2 = new Vector3(\n (box.max.x + box.min.x) / 2,\n box.max.y,\n (box.max.z + box.min.z) / 2\n );\n }\n if (box.max.z - box.min.z > maxHeight) {\n p1 = new Vector3(\n (box.max.x + box.min.x) / 2,\n (box.max.y + box.min.y) / 2,\n box.min.z\n );\n p2 = new Vector3(\n (box.max.x + box.min.x) / 2,\n (box.max.y + box.min.y) / 2,\n box.max.z\n );\n }\n\n return [p1, p2];\n }\n public getDimensionValue(value: number) {\n //return parseFloat(`${value/1000}`).toFixed(2) + 'm';\n return Math.round(value).toString(); //parseFloat(`${value/1000}`).toFixed(3);\n }\n\n private getAllMesh(parent: Object3D): Printing3DGeometry[] {\n let lsMesh: Printing3DGeometry[] = [];\n for (let _mesh of parent.children) {\n if (_mesh.type !== \"Mesh\" && _mesh.type !== \"Group\") {\n continue;\n }\n\n if (_mesh.type === \"Mesh\") {\n let mesh = _mesh as Mesh;\n mesh.updateWorldMatrix(true, true);\n\n if (mesh.geometry.type === \"BufferGeometry\") {\n let geo = new Geometry().fromBufferGeometry(\n mesh.geometry as BufferGeometry\n );\n geo.applyMatrix4(mesh.matrixWorld);\n lsMesh.push({\n vertices: geo.vertices,\n faces: geo.faces.map((f) => ({ a: f.a, b: f.b, c: f.c })),\n });\n } else if (mesh.geometry.type === \"Geometry\") {\n let geo = mesh.geometry as Geometry;\n geo.applyMatrix4(mesh.matrixWorld);\n lsMesh.push({\n vertices: geo.vertices,\n faces: geo.faces.map((f) => ({ a: f.a, b: f.b, c: f.c })),\n });\n }\n }\n\n if (_mesh.children && _mesh.children.length > 0) {\n lsMesh.push(...this.getAllMesh(_mesh));\n }\n }\n\n return lsMesh;\n }\n public cloneGeometryInfo(original): GeometryInfo {\n let newGeoInfo = new GeometryInfo();\n newGeoInfo.geometry = original.geometry.clone();\n newGeoInfo.width = original.width;\n newGeoInfo.length = original.length;\n newGeoInfo.height = original.height;\n newGeoInfo.name = original.name;\n return newGeoInfo;\n }\n public getHeightByAngle(\n height: number,\n length: number,\n angle: number,\n cons: number\n ) {\n let allow = cons;\n if (UI.structureType == 5 && UI.isUpFasciaUpstandardBracket) {\n allow = -cons;\n }\n return height + this.tan(angle) * length * allow;\n }\n public getHeightByAngle2(\n height: number,\n length: number,\n angle: number,\n cons: number\n ) {\n return height + (length / this.tan(angle)) * cons;\n }\n public getHypotenuseByCos(length, angle) {\n return length / this.cos(angle);\n }\n public getSceneBox() {\n let left1 = UI.existingLength1 / 2;\n let right1 = UI.existingLength1 / 2;\n let back1 = UI.existingWidth1 / 2 + 1000;\n let front1 = UI.existingWidth1 / 2;\n\n let leftCondition =\n UI.existingType == BUILDING_SIDE.LEFT ||\n UI.existingType == BUILDING_SIDE.BOTH;\n let rightCondition =\n UI.existingType == BUILDING_SIDE.RIGHT ||\n UI.existingType == BUILDING_SIDE.BOTH;\n let eave = 1500 - UI.eaveWidth;\n\n if (UI.existingWidth1 > 0) {\n if (leftCondition) {\n left1 += eave;\n }\n if (rightCondition) {\n right1 += eave;\n }\n }\n if (UI.existingLength2 > eave) {\n if (leftCondition) {\n left1 += UI.existingLength2 - eave;\n }\n if (rightCondition) {\n right1 += UI.existingLength2 - eave;\n }\n }\n if (UI.existingWidth2 > 0) {\n if (leftCondition) {\n left1 += eave;\n }\n if (rightCondition) {\n right1 += eave;\n }\n }\n\n //Front\n if (front1 < UI.eaveWidth) {\n front1 = UI.eaveWidth - UI.existingWidth1;\n }\n if (UI.existingType != 0) {\n if (UI.existingLength2 > 0) {\n front1 += UI.eaveWidth;\n }\n if (UI.existingWidth2 > 0) {\n front1 += UI.existingWidth2;\n front1 -= UI.eaveWidth;\n }\n }\n\n let point1 = new Vector3(-left1, 0, front1);\n let point2 = new Vector3(right1, 5000, -back1);\n\n let box1 = new Box3().setFromPoints([point1, point2]);\n\n let existingHousetLeft = UI.totalBayLength / 2 + UI.overhangLeft;\n let existingHouseRight = UI.totalBayLength / 2 + UI.overhangRight;\n let existingHouseBack = UI.existingWidth1 / 2 + 1000;\n let existingHouseFront =\n UI.span + UI.multiSpan + UI.overhangFront - UI.existingWidth1 / 2;\n\n let diff = UI.existingLength1 - UI.totalBayLength;\n let translate = 0;\n if (UI.existingType == BUILDING_SIDE.LEFT) {\n translate = -diff / 2 + UI.overhangLeft;\n } else if (UI.existingType == BUILDING_SIDE.RIGHT) {\n translate = diff / 2 - UI.overhangRight;\n } else {\n translate = 0;\n }\n\n let point3 = new Vector3(-existingHousetLeft, 0, existingHouseFront);\n let point4 = new Vector3(existingHouseRight, 5000, -existingHouseBack);\n\n let box2 = new Box3().setFromPoints([point3, point4]);\n box2.translate(new Vector3(translate, 0, 0));\n\n return box1.union(box2);\n }\n public getAllMeshDescendant(parent: Object3D): Object3D[] {\n let meshes: Object3D[] = [];\n if (!parent.children) return [];\n\n for (let child of parent.children) {\n if (child.children) {\n meshes = meshes.concat(this.getAllMeshDescendant(child));\n } else {\n meshes.push(child);\n }\n }\n\n return meshes;\n }\n public getObjectsBoundingBox(objects: Object3D[]) {\n //this function has problem that is, updateMatrixWorld() has some delay\n\n let objectCloned: Object3D[] = [];\n let box = new Box3();\n\n for (let obj of objects) {\n if (obj.children.length > 0) {\n // var objChildren = this.getChildDescendent(obj);\n objectCloned.push(...obj.children);\n } else {\n objectCloned.push(obj);\n }\n }\n\n for (let obj of objectCloned) {\n if (obj[\"geometry\"]) {\n var geo = (obj as Mesh).geometry;\n geo.computeBoundingBox();\n // var min = geo.boundingBox.min;\n // var max = geo.boundingBox.max;\n\n var objBox = geo.boundingBox.clone();\n\n obj.updateMatrixWorld();\n objBox.applyMatrix4(obj.matrixWorld);\n\n // min.x += obj.position.x;\n // min.y += obj.position.y;\n // min.z += obj.position.z;\n\n // max.x += obj.position.x;\n // max.y += obj.position.y;\n // max.z += obj.position.z;\n\n box = box.expandByPoint(objBox.min);\n box = box.expandByPoint(objBox.max);\n }\n }\n\n //objectCloned = objectCloned.filter(o => o.constructor.name == 'Mesh');\n\n // for(let obj of objectCloned){\n // //if(obj.constructor.name != 'Mesh') continue;\n // box = box.expandByObject(obj);\n // }\n\n return box;\n }\n public getObjectBoundingBox(obj: Object3D): Box3 {\n let box = new Box3();\n return box.expandByObject(obj);\n }\n public getChildDescendent(group: Object3D): Object3D[] {\n if (!group.children || group.children.length == 0) return [];\n\n let children: Object3D[] = [];\n\n for (let child of group.children) {\n children.push(child);\n if (child.children && child.children.length > 0) {\n children.push(...this.getChildDescendent(child));\n }\n }\n\n return children;\n }\n public addArrowForLine(\n line: Mesh,\n userData: any = null,\n onDragCallback = null\n ): Object3D[] {\n let box = new Box3().setFromObject(line);\n let lineLength = box.max.x - box.min.x;\n let arrowLength = 150;\n let angle = 15;\n\n if (lineLength < 300) {\n return [];\n }\n\n let y = this.tan(angle) * arrowLength;\n let shape1 = new Shape();\n shape1.moveTo(0, 0);\n shape1.lineTo(arrowLength, y);\n shape1.lineTo(arrowLength, -y);\n shape1.closePath();\n const mat = MaterialManager.Instance().DIMENSION_TEXT.clone();\n let arrow1 = new Mesh(new ShapeBufferGeometry(shape1), mat);\n arrow1.userData = {\n type: GEOMETRY_TYPE.DIMENSION_CAP,\n views: line.userData.views,\n ...userData,\n };\n arrow1.position.set(\n line.position.x - lineLength / 2,\n line.position.y,\n line.position.z\n );\n let arrow2 = arrow1.clone();\n arrow2.rotateZ(Math.PI);\n arrow2.userData = {\n type: GEOMETRY_TYPE.DIMENSION_CAP,\n views: line.userData.views,\n ...userData,\n };\n arrow2.position.set(\n line.position.x + lineLength / 2,\n line.position.y,\n line.position.z\n );\n\n if (userData?.arrowColor) {\n mat.color = new Color(userData.arrowColor);\n }\n\n if (onDragCallback) {\n SelectionManager.ins.addEventListener(\"drag\", onDragCallback, arrow1);\n SelectionManager.ins.addEventListener(\"drag\", onDragCallback, arrow2);\n }\n\n return [arrow1, arrow2];\n }\n public createBeamGroup(\n beamGeo: GeometryInfo,\n beamCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n userDataPos: any,\n isHighLightBeam = false,\n beamEndCapAndJointInfo: BeamCapAndJointInfo = {\n hasStartCap: false,\n hasEndCap: false,\n hasStartJoint: false,\n hasEndJoint: false,\n jointGeo: null,\n }\n ) {\n let scale = length / beamGeo.length;\n\n let mesh = new Mesh(\n beamGeo.geometry,\n isHighLightBeam\n ? MaterialManager.Instance().BEAM_TRANSPARENT\n : MaterialManager.Instance().BEAM\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n position: userDataPos,\n views: views,\n };\n mesh.scale.setX(scale);\n\n let startCap = new Mesh(\n beamCapGeo.geometry,\n isHighLightBeam\n ? MaterialManager.Instance().BRACKET_WARNING\n : MaterialManager.Instance().BEAM\n );\n startCap.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n beamCapGeo.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n let endCap = new Mesh(\n beamCapGeo.geometry,\n isHighLightBeam\n ? MaterialManager.Instance().BRACKET_WARNING\n : MaterialManager.Instance().BEAM\n );\n endCap.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n beamCapGeo.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n if (directionOffset < 0) {\n startCap.position.set(\n -length + beamCapGeo.length / 2 - 2,\n 0,\n beamCapGeo.width / 2\n );\n endCap.position.set(-beamCapGeo.length / 2 + 2, 0, beamCapGeo.width / 2);\n } else if (directionOffset > 0) {\n startCap.position.set(\n 0 + beamCapGeo.length / 2 - 2,\n 0,\n beamCapGeo.width / 2\n );\n endCap.position.set(\n length - beamCapGeo.length / 2 + 2,\n 0,\n beamCapGeo.width / 2\n );\n } else {\n startCap.position.set(\n -length / 2 + beamCapGeo.length / 2 - 2,\n 0,\n beamCapGeo.width / 2\n );\n endCap.position.set(\n length / 2 - beamCapGeo.length / 2 + 2,\n 0,\n beamCapGeo.width / 2\n );\n }\n\n startCap.rotateY(Math.PI / 2);\n endCap.rotateY(-Math.PI / 2);\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n position: userDataPos,\n views: views,\n };\n beamGroup.position.set(pos.x, pos.y, pos.z);\n if (rot) {\n beamGroup.rotation.set(rot.x, rot.y, rot.z);\n }\n\n beamGroup.add(mesh);\n\n if (beamEndCapAndJointInfo.hasStartCap) {\n beamGroup.add(startCap);\n }\n if (beamEndCapAndJointInfo.hasEndCap) {\n beamGroup.add(endCap);\n }\n\n if (beamEndCapAndJointInfo.jointGeo) {\n const startJoint = new Mesh(\n beamEndCapAndJointInfo.jointGeo.geometry,\n isHighLightBeam\n ? MaterialManager.Instance().BRACKET_WARNING\n : MaterialManager.Instance().BEAM\n );\n startJoint.userData = {\n type: GEOMETRY_TYPE.INTERNAL_JOINT,\n name: beamEndCapAndJointInfo.jointGeo.name,\n };\n const endJoint = new Mesh(\n beamEndCapAndJointInfo.jointGeo.geometry,\n isHighLightBeam\n ? MaterialManager.Instance().BRACKET_WARNING\n : MaterialManager.Instance().BEAM\n );\n endJoint.userData = {\n type: GEOMETRY_TYPE.INTERNAL_JOINT,\n name: beamEndCapAndJointInfo.jointGeo.name,\n };\n if (directionOffset < 0) {\n startJoint.position.set(\n -length + beamCapGeo.length / 2 - 2,\n beamEndCapAndJointInfo.jointGeo.height / 2 +\n EXISTING_BUILDING_CONFIG.FIT_JOINT,\n beamCapGeo.width / 2\n );\n endJoint.position.set(\n -beamCapGeo.length / 2 + 2,\n 0,\n beamCapGeo.width / 2\n );\n } else if (directionOffset > 0) {\n startJoint.position.set(\n 0 + beamCapGeo.length / 2 - 2,\n beamEndCapAndJointInfo.jointGeo.height / 2 +\n EXISTING_BUILDING_CONFIG.FIT_JOINT,\n beamCapGeo.width / 2\n );\n endJoint.position.set(\n length - beamCapGeo.length / 2 + 2,\n beamEndCapAndJointInfo.jointGeo.height / 2 +\n EXISTING_BUILDING_CONFIG.FIT_JOINT,\n beamCapGeo.width / 2\n );\n } else {\n startJoint.position.set(\n -length / 2 + beamCapGeo.length / 2 - 2,\n beamEndCapAndJointInfo.jointGeo.height / 2 +\n EXISTING_BUILDING_CONFIG.FIT_JOINT,\n beamCapGeo.width / 2\n );\n endJoint.position.set(\n length / 2 - beamCapGeo.length / 2 + 2,\n beamEndCapAndJointInfo.jointGeo.height / 2 +\n EXISTING_BUILDING_CONFIG.FIT_JOINT,\n beamCapGeo.width / 2\n );\n }\n\n startJoint.rotateY(Math.PI / 2);\n endJoint.rotateY(-Math.PI / 2);\n\n if (beamEndCapAndJointInfo.hasStartJoint) {\n beamGroup.add(startJoint);\n }\n if (beamEndCapAndJointInfo.hasEndJoint) {\n beamGroup.add(endJoint);\n }\n }\n\n return beamGroup;\n }\n\n public getListSeperateBeamsByBaysForFbGable(\n startEndOfBayZ,\n startBeamStartZ,\n startBeamEndZ,\n startEndCutBeamZ,\n startStartCutBeamZ\n ) {\n let endOfBayZ = startEndOfBayZ;\n let beamStartZ = startBeamStartZ;\n let endCutBeamZ = startEndCutBeamZ;\n let beamEndZ = startBeamEndZ;\n let startCutBeamZ = startStartCutBeamZ;\n\n const beams = [];\n for (let i = 0; i < UI.listBay.length; i++) {\n endOfBayZ += UI.listBay[i].value;\n if (beamStartZ > endOfBayZ) {\n continue;\n }\n\n let shouldAddBeam = false;\n if (UI.listBay[i].isCut) {\n endCutBeamZ = endOfBayZ;\n shouldAddBeam = true;\n }\n if (i == UI.listBay.length - 1 || beamEndZ < endOfBayZ) {\n endCutBeamZ = beamEndZ;\n shouldAddBeam = true;\n }\n\n if (shouldAddBeam) {\n beams.push([startCutBeamZ, endCutBeamZ]);\n startCutBeamZ = endCutBeamZ;\n }\n\n if (beamEndZ < endOfBayZ) {\n break;\n }\n }\n\n return beams;\n }\n\n public getListSeperateBeamsByBays(\n startEndOfBayX,\n startBeamStartX,\n startBeamEndX,\n startEndCutBeamX,\n startStartCutBeamX\n ) {\n const beams = [];\n let endOfBayX = startEndOfBayX;\n let beamStartX = startBeamStartX;\n let endCutBeamX = startEndCutBeamX;\n let beamEndX = startBeamEndX;\n let startCutBeamX = startStartCutBeamX;\n\n for (let i = 0; i < UI.listBay.length; i++) {\n endOfBayX += UI.listBay[i].value;\n if (beamStartX > endOfBayX) {\n continue;\n }\n\n let shouldAddBeam = false;\n if (UI.listBay[i].isCut) {\n endCutBeamX = endOfBayX;\n shouldAddBeam = true;\n }\n if (i == UI.listBay.length - 1 || beamEndX < endOfBayX) {\n endCutBeamX = beamEndX;\n shouldAddBeam = true;\n }\n\n if (shouldAddBeam) {\n beams.push([startCutBeamX, endCutBeamX]);\n startCutBeamX = endCutBeamX;\n }\n\n if (beamEndX < endOfBayX) {\n break;\n }\n }\n\n return beams;\n }\n\n public createBeamGroup2(\n beamGeo: GeometryInfo,\n beamCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n userDataPos: any,\n beamGeoTranslationZ: number,\n beamDirection: string,\n isHighLightBeam = false,\n beamEndCapAndJointInfo: BeamCapAndJointInfo = {\n hasStartCap: false,\n hasEndCap: false,\n hasStartJoint: false,\n hasEndJoint: false,\n jointGeo: null,\n }\n ) {\n let scale = length / beamGeo.length;\n\n let mesh = new Mesh(\n beamGeo.geometry,\n isHighLightBeam\n ? MaterialManager.Instance().BEAM_TRANSPARENT\n : MaterialManager.Instance().BEAM\n );\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n position: userDataPos,\n views: views,\n };\n mesh.scale.setX(scale);\n\n let startCap = new Mesh(\n beamCapGeo.geometry,\n isHighLightBeam\n ? MaterialManager.Instance().BRACKET_WARNING\n : MaterialManager.Instance().BEAM\n );\n startCap.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n beamCapGeo.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n let endCap = new Mesh(\n beamCapGeo.geometry,\n isHighLightBeam\n ? MaterialManager.Instance().BRACKET_WARNING\n : MaterialManager.Instance().BEAM\n );\n endCap.userData = {\n type: GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP,\n code: getBeamEndCapCode(\n beamCapGeo.name,\n HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode\n ),\n };\n if (beamDirection == \"x\") {\n if (directionOffset < 0) {\n startCap.position.set(\n -length + beamCapGeo.length / 2 - 2,\n 0,\n beamGeoTranslationZ\n );\n endCap.position.set(-beamCapGeo.length / 2 + 2, 0, beamGeoTranslationZ);\n } else if (directionOffset > 0) {\n startCap.position.set(\n 0 + beamCapGeo.length / 2 - 2,\n 0,\n beamGeoTranslationZ\n );\n endCap.position.set(\n length - beamCapGeo.length / 2 + 2,\n 0,\n beamGeoTranslationZ\n );\n } else {\n startCap.position.set(\n -length / 2 + beamCapGeo.length / 2 - 2,\n 0,\n beamGeoTranslationZ\n );\n endCap.position.set(\n length / 2 - beamCapGeo.length / 2 + 2,\n 0,\n beamGeoTranslationZ\n );\n }\n\n startCap.rotateY(Math.PI / 2);\n endCap.rotateY(-Math.PI / 2);\n } else if (beamDirection == \"z\") {\n if (directionOffset < 0) {\n startCap.position.set(\n beamGeoTranslationZ,\n 0,\n -length + beamCapGeo.length / 2 - 2\n );\n endCap.position.set(beamGeoTranslationZ, 0, -beamCapGeo.length / 2 + 2);\n } else if (directionOffset > 0) {\n startCap.position.set(\n beamGeoTranslationZ,\n 0,\n beamCapGeo.length / 2 - 2\n );\n endCap.position.set(\n beamGeoTranslationZ,\n 0,\n length - beamCapGeo.length / 2 + 2\n );\n } else {\n startCap.position.set(\n beamGeoTranslationZ,\n 0,\n -length / 2 + beamCapGeo.length / 2 - 2\n );\n endCap.position.set(\n beamGeoTranslationZ,\n 0,\n length / 2 - beamCapGeo.length / 2 + 2\n );\n }\n\n // startCap.rotateY(Math.PI / 2);\n // endCap.rotateY(-Math.PI / 2);\n }\n\n let beamGroup = new Group();\n beamGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.SUPERIOR_BEAM,\n position: userDataPos,\n views: views,\n };\n beamGroup.position.set(pos.x, pos.y, pos.z);\n if (rot) {\n beamGroup.rotation.set(rot.x, rot.y, rot.z);\n }\n\n beamGroup.add(mesh);\n\n if (beamEndCapAndJointInfo.hasStartCap) {\n beamGroup.add(startCap);\n }\n if (beamEndCapAndJointInfo.hasEndCap) {\n beamGroup.add(endCap);\n }\n\n if (beamEndCapAndJointInfo.jointGeo) {\n const startJoint = new Mesh(\n beamEndCapAndJointInfo.jointGeo.geometry,\n isHighLightBeam\n ? MaterialManager.Instance().BRACKET_WARNING\n : MaterialManager.Instance().BEAM\n );\n startJoint.userData = {\n type: GEOMETRY_TYPE.INTERNAL_JOINT,\n name: beamEndCapAndJointInfo.jointGeo.name,\n };\n const endJoint = new Mesh(\n beamEndCapAndJointInfo.jointGeo.geometry,\n isHighLightBeam\n ? MaterialManager.Instance().BRACKET_WARNING\n : MaterialManager.Instance().BEAM\n );\n endJoint.userData = {\n type: GEOMETRY_TYPE.INTERNAL_JOINT,\n name: beamEndCapAndJointInfo.jointGeo.name,\n };\n if (beamDirection == \"x\") {\n if (directionOffset < 0) {\n startJoint.position.set(\n -length,\n -beamEndCapAndJointInfo.jointGeo.height / 2 -\n EXISTING_BUILDING_CONFIG.FIT_JOINT,\n beamGeoTranslationZ\n );\n endJoint.position.set(\n -beamCapGeo.length / 2 + 2,\n 0,\n beamGeoTranslationZ\n );\n } else if (directionOffset > 0) {\n startJoint.position.set(\n 0,\n -beamEndCapAndJointInfo.jointGeo.height / 2 -\n EXISTING_BUILDING_CONFIG.FIT_JOINT,\n beamGeoTranslationZ\n );\n endJoint.position.set(\n length,\n -beamEndCapAndJointInfo.jointGeo.height / 2 -\n EXISTING_BUILDING_CONFIG.FIT_JOINT,\n beamGeoTranslationZ\n );\n } else {\n startJoint.position.set(\n -length / 2,\n -beamEndCapAndJointInfo.jointGeo.height / 2 -\n EXISTING_BUILDING_CONFIG.FIT_JOINT,\n beamGeoTranslationZ\n );\n endJoint.position.set(\n length / 2,\n -beamEndCapAndJointInfo.jointGeo.height / 2 -\n EXISTING_BUILDING_CONFIG.FIT_JOINT,\n beamGeoTranslationZ\n );\n }\n\n startJoint.rotateY(Math.PI / 2);\n endJoint.rotateY(-Math.PI / 2);\n } else if (beamDirection == \"z\") {\n if (directionOffset < 0) {\n startJoint.position.set(\n beamGeoTranslationZ,\n -beamEndCapAndJointInfo.jointGeo.height / 2 -\n EXISTING_BUILDING_CONFIG.FIT_JOINT,\n -length\n );\n endJoint.position.set(\n beamGeoTranslationZ,\n 0,\n -beamCapGeo.length / 2 + 2\n );\n } else if (directionOffset > 0) {\n startJoint.position.set(\n beamGeoTranslationZ,\n -beamEndCapAndJointInfo.jointGeo.height / 2 -\n EXISTING_BUILDING_CONFIG.FIT_JOINT,\n 0\n );\n endJoint.position.set(\n beamGeoTranslationZ,\n -beamEndCapAndJointInfo.jointGeo.height / 2 -\n EXISTING_BUILDING_CONFIG.FIT_JOINT,\n length\n );\n } else {\n startJoint.position.set(\n beamGeoTranslationZ,\n -beamEndCapAndJointInfo.jointGeo.height / 2 -\n EXISTING_BUILDING_CONFIG.FIT_JOINT,\n -length / 2\n );\n endJoint.position.set(\n beamGeoTranslationZ,\n -beamEndCapAndJointInfo.jointGeo.height / 2 -\n EXISTING_BUILDING_CONFIG.FIT_JOINT,\n length / 2\n );\n }\n }\n if (beamEndCapAndJointInfo.hasStartJoint) {\n beamGroup.add(startJoint);\n }\n if (beamEndCapAndJointInfo.hasEndJoint) {\n beamGroup.add(endJoint);\n }\n }\n\n return beamGroup;\n }\n public createGutterGroup(\n gutterGeo: GeometryInfo,\n gutterCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n hasStartCap?: boolean,\n hasEndCap?: boolean,\n clippingCsg?: CSG,\n parent?: Object3D\n ) {\n let scale = length / gutterGeo.length;\n\n let mesh = new Mesh(gutterGeo.geometry, MaterialManager.Instance().GUTTER);\n mesh.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GUTTER_PATIOS,\n views: views,\n };\n mesh.scale.setX(scale);\n\n let startCap = new Mesh(\n gutterCapGeo.geometry,\n MaterialManager.Instance().GUTTER\n );\n let endCap = new Mesh(\n gutterCapGeo.geometry,\n MaterialManager.Instance().GUTTER\n );\n\n if (directionOffset < 0) {\n startCap.position.set(-length, 0, 0);\n endCap.position.set(0, 0, 0);\n } else if (directionOffset > 0) {\n startCap.position.set(0, 0, 0);\n endCap.position.set(length, 0, 0);\n } else {\n startCap.position.set(-length / 2, 0, 0);\n endCap.position.set(length / 2, 0, 0);\n }\n\n let gutterGroup = new Group();\n gutterGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GUTTER_PATIOS,\n views: views,\n };\n gutterGroup.position.set(pos.x, pos.y, pos.z);\n if (rot) {\n gutterGroup.rotation.set(rot.x, rot.y, rot.z);\n }\n\n if (clippingCsg) {\n mesh.updateMatrix();\n let matrixBefore = mesh.matrix.clone();\n\n mesh.position.set(pos.x, pos.y, pos.z);\n if (rot) {\n mesh.rotation.set(rot.x, rot.y, rot.z);\n }\n\n mesh.updateMatrix();\n\n const meshCliped = CSG.toMesh(\n CSG.fromMesh(mesh).subtract(clippingCsg),\n mesh.matrix\n );\n meshCliped.userData = mesh.userData;\n meshCliped.material = mesh.material;\n meshCliped.applyMatrix4(new Matrix4().getInverse(mesh.matrix)); //back to origin\n meshCliped.applyMatrix4(matrixBefore);\n gutterGroup.add(meshCliped);\n } else {\n gutterGroup.add(mesh);\n }\n\n if (hasStartCap) {\n gutterGroup.add(startCap);\n }\n if (hasEndCap) {\n gutterGroup.add(endCap);\n }\n\n return gutterGroup;\n }\n public createGutterGroupWithMesh(\n gutterMesh: Mesh,\n gutterCapGeo: GeometryInfo,\n length: number,\n pos: Vector3,\n rot: Vector3,\n views: any,\n directionOffset: number,\n hasStartCap?: boolean,\n hasEndCap?: boolean\n ) {\n let startCap = new Mesh(\n gutterCapGeo.geometry,\n MaterialManager.Instance().GUTTER\n );\n let endCap = new Mesh(\n gutterCapGeo.geometry,\n MaterialManager.Instance().GUTTER\n );\n\n if (directionOffset < 0) {\n startCap.position.set(-length, 0, 0);\n endCap.position.set(0, 0, 0);\n } else if (directionOffset > 0) {\n startCap.position.set(0, 0, 0);\n endCap.position.set(length, 0, 0);\n } else {\n startCap.position.set(-length / 2, 0, 0);\n endCap.position.set(length / 2, 0, 0);\n }\n\n let gutterGroup = new Group();\n gutterGroup.userData = {\n category: GEOMETRY_CATEGORY.PATIOS,\n type: GEOMETRY_TYPE.GUTTER_PATIOS,\n views: views,\n };\n gutterGroup.position.set(pos.x, pos.y, pos.z);\n if (rot) {\n gutterGroup.rotation.set(rot.x, rot.y, rot.z);\n }\n\n gutterGroup.add(gutterMesh);\n\n if (hasStartCap) {\n gutterGroup.add(startCap);\n }\n if (hasEndCap) {\n gutterGroup.add(endCap);\n }\n\n return gutterGroup;\n }\n public createPositionHelper(point: Vector3, size: number) {\n let geo = new BufferGeometry();\n geo.setFromPoints([\n new Vector3(point.x - size, point.y, point.z),\n new Vector3(point.x + size, point.y, point.z),\n new Vector3(point.x, point.y - size, point.z),\n new Vector3(point.x, point.y + size, point.z),\n ]);\n return new LineSegments(geo, new LineBasicMaterial({ color: \"red\" }));\n }\n\n public getIntersection(line1: Line3, line2: Line3): Vector2 {\n let line1StartX = line1.start.x;\n let line1StartY = line1.start.y;\n let line1EndX = line1.end.x;\n let line1EndY = line1.end.y;\n let line2StartX = line2.start.x;\n let line2StartY = line2.start.y;\n let line2EndX = line2.end.x;\n let line2EndY = line2.end.y;\n\n // if the lines intersect, the result contains the x and y of the intersection (treating the lines as infinite) and booleans for whether line segment 1 or line segment 2 contain the point\n var denominator,\n a,\n b,\n numerator1,\n numerator2,\n result = {\n x: null,\n y: null,\n };\n denominator =\n (line2EndY - line2StartY) * (line1EndX - line1StartX) -\n (line2EndX - line2StartX) * (line1EndY - line1StartY);\n if (denominator == 0) {\n return undefined;\n }\n a = line1StartY - line2StartY;\n b = line1StartX - line2StartX;\n numerator1 = (line2EndX - line2StartX) * a - (line2EndY - line2StartY) * b;\n numerator2 = (line1EndX - line1StartX) * a - (line1EndY - line1StartY) * b;\n a = numerator1 / denominator;\n b = numerator2 / denominator;\n\n // if we cast these lines infinitely in both directions, they intersect here:\n result.x = line1StartX + a * (line1EndX - line1StartX);\n result.y = line1StartY + a * (line1EndY - line1StartY);\n /*\n // it is worth noting that this should be the same as:\n x = line2StartX + (b * (line2EndX - line2StartX));\n y = line2StartX + (b * (line2EndY - line2StartY));\n */\n // if line1 is a segment and line2 is infinite, they intersect if:\n // if (a > 0 && a < 1) {\n // result.onLine1 = true;\n // }\n // // if line2 is a segment and line1 is infinite, they intersect if:\n // if (b > 0 && b < 1) {\n // result.onLine2 = true;\n // }\n // if line1 and line2 are segments, they intersect if both of the above are true\n return new Vector2(result.x, result.y);\n }\n public createMesh(\n geo: BufferGeometry | Geometry,\n material: Material,\n userData: any,\n posX: number,\n posY: number,\n posZ: number,\n rotX: number,\n rotY: number,\n rotZ: number,\n scaleX: number,\n scaleY: number,\n scaleZ: number\n ): Mesh {\n let mesh = new Mesh(geo, material);\n mesh.userData = userData;\n mesh.position.set(posX, posY, posZ);\n mesh.rotation.set(rotX, rotY, rotZ);\n mesh.scale.set(scaleX, scaleY, scaleZ);\n\n return mesh;\n }\n //NOTE: for bindBuildingInfo() function\n public getInfoFromGeometry(\n app: HomeComponent,\n children: Object3D[],\n geoManager: GeometryManager,\n isCutOut: boolean,\n isRakeCut: boolean\n ): any {\n this.geo_gutterBack = geoManager.getGutter();\n\n const _roofPatios = [];\n children.map((group) => {\n _roofPatios.push(\n ...group.children.filter(\n (f) => f.userData.type === GEOMETRY_TYPE.ROOF_PATIOS\n )\n );\n });\n if (_roofPatios.length === 0) {\n children.map((group) => {\n if (group.userData.type === GEOMETRY_TYPE.ROOF_PATIOS) {\n _roofPatios.push(group);\n }\n if (group.type == \"Group\") {\n group.traverse((object) => {\n if (object.userData.type === GEOMETRY_TYPE.ROOF_PATIOS) {\n _roofPatios.push(object);\n }\n });\n }\n return group;\n });\n }\n const elementArray = [];\n children.map((group) => {\n if (\n group.userData.type === GEOMETRY_TYPE.DOWNPIPE ||\n group.userData.type === GEOMETRY_TYPE.SUPERIOR_BEAM\n ) {\n elementArray.push(group);\n }\n });\n children.map((group) => {\n elementArray.push(\n ...group.children.filter(\n (f) =>\n f.userData.type === GEOMETRY_TYPE.FLY_OVER_BRACKET ||\n (f.userData.type === GEOMETRY_TYPE.DOWNPIPE &&\n f.children.length > 0) ||\n (f.userData.type === GEOMETRY_TYPE.SUPERIOR_BEAM &&\n f.children.length > 0) ||\n f.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET ||\n f.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET_CUTOUT ||\n f.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET_EXT\n )\n );\n // return group;\n });\n _roofPatios.map((group) => {\n elementArray.push(\n ...group.children.filter(\n (f) =>\n f.userData.type === GEOMETRY_TYPE.GUTTER_PATIOS ||\n f.userData.type === GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING ||\n f.userData.type === GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING ||\n f.userData.type === GEOMETRY_TYPE.RECEIVER_CHANEL ||\n f.userData.type === GEOMETRY_TYPE.ROOF_PANEL ||\n f.userData.type === GEOMETRY_TYPE.ZFLASHING\n )\n );\n return group;\n });\n let _beams = [];\n let _internalJoints = [];\n let _normalBeamEndCaps = [];\n let _angleBrackets = 0;\n elementArray\n .filter((f) => f.userData.type === GEOMETRY_TYPE.SUPERIOR_BEAM)\n .map((beam) => {\n if (beam.userData.angle) {\n _angleBrackets += 2;\n }\n let _length = 0;\n let _position = null;\n if (beam.userData.category) {\n _length =\n beam.children.length > 0\n ? beam.children[0].scale.z !== 1\n ? beam.children[0].scale.z\n : beam.children[0].scale.x\n : beam.scale.x;\n _position =\n beam.children.length > 0\n ? beam.children[0].userData.position\n : beam.userData.position;\n } else {\n beam.children\n .filter((f) => f.userData.type == GEOMETRY_TYPE.UPSTAND_BRAKET_BEAM)\n .map((m) => {\n _length = m.scale.x;\n _position = { back: true };\n });\n }\n _beams.push({\n length: _length,\n position: _position,\n });\n //\n if (_.has(beam, [\"children\"])) {\n beam.children\n .filter((el) => el.userData.type == GEOMETRY_TYPE.INTERNAL_JOINT)\n .forEach((el) => {\n _internalJoints.push({\n code: el.userData.name,\n });\n });\n beam.children\n .filter(\n (el) => el.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP\n )\n .forEach((el) => {\n _normalBeamEndCaps.push({\n code: el.userData.code,\n });\n });\n }\n _beams = _beams.map((m) => {\n return {\n ...m,\n isHouseBeam: !app.chkHasHouseBeam.currentValue\n ? false\n : m.position?.back || m.position?.cutout\n ? true\n : false,\n };\n });\n });\n const _jointGroupJoints = _.groupBy(_internalJoints, (el) => el.code);\n _internalJoints = [];\n Object.entries(_jointGroupJoints).forEach(([key, value]) => {\n _internalJoints.push({\n code: key,\n qty: _.get(value, [\"length\"], 0),\n });\n });\n const _jointGroupEndCaps = _.groupBy(_normalBeamEndCaps, (el) => el.code);\n _normalBeamEndCaps = [];\n Object.entries(_jointGroupEndCaps).forEach(([key, value]) => {\n _normalBeamEndCaps.push({\n code: key,\n qty: _.get(value, [\"length\"], 0),\n });\n });\n const _panels = [];\n elementArray\n .filter((f) => f.userData.type === GEOMETRY_TYPE.ROOF_PANEL)\n .map((panel) => {\n let _length = 0;\n if (isRakeCut || isCutOut) {\n let _boxPanel = new Box3().setFromObject(panel);\n let direction = \"z\";\n if (\n HomeComponent.ins.isFBRoof &&\n HomeComponent.ins.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF\n ) {\n direction = \"x\";\n }\n _length = _.round(\n Math.ceil(_boxPanel.max[direction] - _boxPanel.min[direction]) /\n 1000,\n 2\n );\n _length = _.min([_.round(panel.scale.z, 2), _length]);\n } else {\n _length = _.round(panel.scale.z, 2);\n }\n _panels.push({\n length: _length / this.cos(UI.patiosPitch),\n //HACK: Check\n // length: _.round(Math.ceil(_boxPanel.min.distanceTo(_boxPanel.max)) / 1000, 2)\n });\n });\n let _downpipes = 0;\n let _nozzles = 0;\n elementArray\n .filter((f) => f.userData.type === GEOMETRY_TYPE.DOWNPIPE)\n .map((downpipe) => {\n const _countDownpipe = downpipe.children.filter(\n (f) => f.userData.type === GEOMETRY_TYPE.DOWNPIPE_NOZZLE\n );\n if (_countDownpipe.length === 0) {\n _downpipes++;\n } else {\n _nozzles++;\n }\n });\n\n const _gutters = [];\n elementArray\n .filter((f) => f.userData.type === GEOMETRY_TYPE.GUTTER_PATIOS)\n .map((gutter) => {\n _gutters.push({\n length:\n (gutter.children[0].scale.x * this.geo_gutterBack.length) / 1000,\n });\n });\n const _barges = [];\n elementArray\n .filter((f) => f.userData.type === GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING)\n .map((barge) => {\n _barges.push({\n length:\n barge.scale.x != barge.scale.z && barge.scale.x != 1\n ? this.round(barge.scale.x)\n : this.round(barge.scale.z),\n });\n });\n //Drip Barge\n elementArray\n .filter(\n (f) => f.userData.type === GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n )\n .map((drip) => {\n _barges.push({\n length:\n drip.scale.x != drip.scale.z && drip.scale.x != 1\n ? this.round(drip.scale.x)\n : this.round(drip.scale.z),\n });\n });\n\n const _zflashings = [];\n elementArray\n .filter((f) => f.userData.type === GEOMETRY_TYPE.ZFLASHING)\n .map((zflashing) => {\n _zflashings.push({\n length:\n zflashing.scale.x != zflashing.scale.z && zflashing.scale.x != 1\n ? this.round(zflashing.scale.x)\n : this.round(zflashing.scale.z),\n });\n });\n\n let _recChanels = [];\n elementArray\n .filter((f) => f.userData.type === GEOMETRY_TYPE.RECEIVER_CHANEL)\n .map((receiver_chanel) => {\n _recChanels.push({\n length:\n receiver_chanel.scale.x != receiver_chanel.scale.z &&\n receiver_chanel.scale.x != 1\n ? this.round(receiver_chanel.scale.x)\n : this.round(receiver_chanel.scale.z),\n });\n });\n let listRecChanels = _.groupBy(_recChanels, (item) => item.length);\n _recChanels = [];\n let _keys = Object.keys(listRecChanels);\n _keys.forEach((el) => {\n _recChanels.push({\n length: +el,\n qty: listRecChanels[el].length,\n });\n });\n //HACK: conflict\n const flyOverBrackets = elementArray.filter(\n (f) =>\n f.userData.type === GEOMETRY_TYPE.FLY_OVER_BRACKET &&\n f.userData.position.back &&\n !f.userData.position.cutout\n ).length;\n\n const flyOverBracketCutOuts = elementArray.filter(\n (f) =>\n f.userData.type === GEOMETRY_TYPE.FLY_OVER_BRACKET &&\n f.userData.position.back &&\n f.userData.position.cutout\n ).length;\n\n const extFlyOverBracket =\n elementArray.filter(\n (f) => f.userData.type === GEOMETRY_TYPE.FLY_OVER_BRACKET\n ).length -\n flyOverBracketCutOuts -\n flyOverBrackets;\n\n return {\n downpipes: _downpipes,\n angleBrackets: _angleBrackets,\n bottomAngleBrackets: 0,\n nozzles: _nozzles,\n extFlyoverBrackets: extFlyOverBracket,\n flyoverBrackets: flyOverBrackets,\n flyoverBracketCutOuts: flyOverBracketCutOuts,\n gutters: _gutters,\n beams: _beams,\n internalJoints: _internalJoints,\n normalBeamEndCaps: _normalBeamEndCaps,\n barges: _barges,\n zflashings: _zflashings,\n receiver_chanels: _recChanels,\n panels: _panels,\n fasciaBrackets: elementArray.filter(\n (f) => f.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET\n ).length,\n fasciaBracketCutouts: elementArray.filter(\n (f) => f.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET_CUTOUT\n ).length,\n fasciaBracketExts: elementArray.filter(\n (f) => f.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET_EXT\n ).length,\n };\n }\n public getInfoFromGeometryGableRoof(\n app: HomeComponent,\n children: Object3D[],\n geoManager: GeometryManager,\n isCutOut: boolean,\n isRakeCut: boolean\n ): any {\n this.geo_gutterBack = geoManager.getGutter();\n\n let _centerPosts = [];\n _centerPosts = children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.SUPERIOR_CENTER_POST\n );\n const _patios = children.filter(\n (x) => x.userData.category === GEOMETRY_CATEGORY.PATIOS\n );\n _patios.map((value) => {\n _centerPosts.push(\n ...value.children.filter(\n (x) => x.userData.type === GEOMETRY_TYPE.SUPERIOR_CENTER_POST\n )\n );\n return value;\n });\n\n let listCenterPost = _.groupBy(_centerPosts, (item) => item.scale.y);\n\n _centerPosts = [];\n let _keys = Object.keys(listCenterPost);\n _keys.forEach((el) => {\n _centerPosts.push({\n length: _.round(+el, 2),\n qty: listCenterPost[el].length,\n });\n });\n\n const _roofPatios = [];\n children.map((group) => {\n _roofPatios.push(\n ...group.children.filter(\n (f) => f.userData.type === GEOMETRY_TYPE.ROOF_PATIOS\n )\n );\n });\n if (_roofPatios.length === 0) {\n children.map((group) => {\n if (group.userData.type === GEOMETRY_TYPE.ROOF_PATIOS) {\n _roofPatios.push(group);\n }\n if (group.type == \"Group\") {\n group.traverse((object) => {\n if (object.userData.type === GEOMETRY_TYPE.ROOF_PATIOS) {\n _roofPatios.push(object);\n }\n });\n }\n return group;\n });\n }\n const elementArray = [];\n children.map((group) => {\n if (\n group.userData.type === GEOMETRY_TYPE.DOWNPIPE ||\n group.userData.type === GEOMETRY_TYPE.SUPERIOR_BEAM ||\n group.userData.type === GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n ) {\n elementArray.push(group);\n }\n });\n children.map((group) => {\n elementArray.push(\n ...group.children.filter(\n (f) =>\n f.userData.type === GEOMETRY_TYPE.FLY_OVER_BRACKET ||\n (f.userData.type === GEOMETRY_TYPE.DOWNPIPE &&\n f.children.length > 0) ||\n (f.userData.type === GEOMETRY_TYPE.SUPERIOR_BEAM &&\n f.children.length > 0) ||\n f.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET ||\n f.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET_CUTOUT ||\n f.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET_EXT ||\n f.userData.type === GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n )\n );\n // return group;\n });\n _roofPatios.map((group) => {\n elementArray.push(\n ...group.children.filter(\n (f) =>\n f.userData.type === GEOMETRY_TYPE.GUTTER_PATIOS ||\n f.userData.type === GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING ||\n f.userData.type === GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING ||\n f.userData.type === GEOMETRY_TYPE.RECEIVER_CHANEL ||\n f.userData.type === GEOMETRY_TYPE.ROOF_PANEL ||\n f.userData.type === GEOMETRY_TYPE.ZFLASHING\n )\n );\n return group;\n });\n\n let _ridgeCapping = [];\n children.map((group) => {\n _ridgeCapping.push(\n ...group.children.filter(\n (f) => f.userData.type === GEOMETRY_TYPE.RIDGE_CAPPING\n )\n );\n });\n\n _ridgeCapping = _ridgeCapping.map((el) => {\n return {\n length: el.userData.length / 1000,\n qty: 1,\n };\n });\n\n let _beams = [];\n let _internalJoints = [];\n let _normalBeamEndCaps = [];\n let angleBrackets = 0; //Default\n let bottomAngleBrackets = 0; //Default\n elementArray\n .filter(\n (f) =>\n f.userData.type === GEOMETRY_TYPE.SUPERIOR_BEAM ||\n f.userData.type === GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n )\n .map((beam) => {\n // if (beam.userData.angle) {\n // _angleBrackets += 2;\n // }\n let _length = 0;\n let _name = null;\n if (beam.userData.category) {\n _length =\n beam.children.length > 0\n ? beam.children[0].scale.z !== 1\n ? beam.children[0].scale.z\n : beam.children[0].scale.x\n : beam.scale.x;\n _name = beam.userData.name || beam.children[0].userData.name;\n } else {\n beam.children\n .filter((f) => f.userData.type == GEOMETRY_TYPE.UPSTAND_BRAKET_BEAM)\n .map((m) => {\n _length = m.scale.x;\n _name = beam.userData.name;\n });\n }\n _beams.push({\n length: _.round(_length, 2),\n name:\n beam.userData.type === GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM\n ? \"RF\"\n : _name,\n });\n if (_.has(beam, [\"children\"])) {\n beam.children\n .filter((el) => el.userData.type == GEOMETRY_TYPE.INTERNAL_JOINT)\n .forEach((el) => {\n _internalJoints.push({\n code: el.userData.name,\n });\n });\n beam.children\n .filter(\n (el) => el.userData.type == GEOMETRY_TYPE.SUPERIOR_BEAM_END_CAP\n )\n .forEach((el) => {\n _normalBeamEndCaps.push({\n code: el.userData.code,\n });\n });\n }\n if (beam.userData.type === GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM) {\n angleBrackets += 1;\n bottomAngleBrackets += 1;\n }\n });\n const _jointGroup = _.groupBy(_internalJoints, (el) => el.code);\n _internalJoints = [];\n Object.entries(_jointGroup).forEach(([key, value]) => {\n _internalJoints.push({\n code: key,\n qty: _.get(value, [\"length\"], 0),\n });\n });\n const _jointGroupEndCaps = _.groupBy(_normalBeamEndCaps, (el) => el.code);\n _normalBeamEndCaps = [];\n Object.entries(_jointGroupEndCaps).forEach(([key, value]) => {\n _normalBeamEndCaps.push({\n code: key,\n qty: _.get(value, [\"length\"], 0),\n });\n });\n let listBeam = _.groupBy(_beams, (item) => `\"${item.length}+${item.name}\"`);\n\n _beams = [];\n _keys = Object.keys(listBeam);\n _keys.forEach((el) => {\n _beams.push({\n ...listBeam[el][0],\n qty: listBeam[el].length,\n });\n });\n\n let _panels = [];\n elementArray\n .filter((f) => f.userData.type === GEOMETRY_TYPE.ROOF_PANEL)\n .map((panel) => {\n let _length = 0;\n\n let direction = \"z\";\n if (\n HomeComponent.ins.isFBRoof &&\n HomeComponent.ins.patiosRoofType === PATIOS_ROOF_TYPE.GABLE_ROOF\n ) {\n direction = \"x\";\n }\n let _boxPanel = new Box3().setFromObject(panel);\n _length = _.round(\n Math.ceil(_boxPanel.max[direction] - _boxPanel.min[direction]) / 1000,\n 2\n );\n\n _panels.push({\n length: _length / this.cos(UI.patiosPitch),\n dir: panel.userData.dir,\n });\n });\n\n let listPanels = _.groupBy(_panels, (item) => `${item.length}-${item.dir}`);\n _panels = [];\n _keys = Object.keys(listPanels);\n _keys.forEach((el) => {\n _panels.push({\n length: +listPanels[el][0].length,\n dir: listPanels[el][0].dir,\n qty: listPanels[el].length,\n });\n });\n\n let _downpipes = 0;\n let _nozzles = 0;\n elementArray\n .filter((f) => f.userData.type === GEOMETRY_TYPE.DOWNPIPE)\n .map((downpipe) => {\n const _countDownpipe = downpipe.children.filter(\n (f) => f.userData.type === GEOMETRY_TYPE.DOWNPIPE_NOZZLE\n );\n if (_countDownpipe.length === 0) {\n _downpipes++;\n } else {\n _nozzles++;\n }\n });\n\n let _gutters = [];\n elementArray\n .filter((f) => f.userData.type === GEOMETRY_TYPE.GUTTER_PATIOS)\n .map((gutter) => {\n _gutters.push({\n length:\n (gutter.children[0].scale.x * this.geo_gutterBack.length) / 1000,\n });\n });\n\n let listGutters = _.groupBy(_gutters, (item) => item.length);\n _gutters = [];\n _keys = Object.keys(listGutters);\n _keys.forEach((el) => {\n _gutters.push({\n length: +el,\n qty: listGutters[el].length,\n });\n });\n\n let _barges = [];\n elementArray\n .filter((f) => f.userData.type === GEOMETRY_TYPE.ROOF_PANEL_BARGE_CAPPING)\n .map((barge) => {\n _barges.push({\n length:\n barge.scale.x != barge.scale.z && barge.scale.x != 1\n ? this.round(barge.scale.x)\n : this.round(barge.scale.z),\n });\n });\n\n //Drip Barge\n elementArray\n .filter(\n (f) => f.userData.type === GEOMETRY_TYPE.ROOF_PANEL_DRIP_BARGE_CAPPING\n )\n .map((drip) => {\n _barges.push({\n length:\n drip.scale.x != drip.scale.z && drip.scale.x != 1\n ? this.round(drip.scale.x)\n : this.round(drip.scale.z),\n });\n });\n\n let listBarges = _.groupBy(_barges, (item) => item.length);\n _barges = [];\n _keys = Object.keys(listBarges);\n _keys.forEach((el) => {\n _barges.push({\n length: +el,\n qty: listBarges[el].length,\n });\n });\n\n let _zflashings = [];\n elementArray\n .filter((f) => f.userData.type === GEOMETRY_TYPE.ZFLASHING)\n .map((zflashing) => {\n _zflashings.push({\n length:\n zflashing.scale.x != zflashing.scale.z && zflashing.scale.x != 1\n ? this.round(zflashing.scale.x)\n : this.round(zflashing.scale.z),\n });\n });\n\n let listZflashings = _.groupBy(_zflashings, (item) => item.length);\n _zflashings = [];\n _keys = Object.keys(listZflashings);\n _keys.forEach((el) => {\n _zflashings.push({\n length: +el,\n qty: listZflashings[el].length,\n });\n });\n\n let _recChanels = [];\n elementArray\n .filter((f) => f.userData.type === GEOMETRY_TYPE.RECEIVER_CHANEL)\n .map((receiver_chanel) => {\n _recChanels.push({\n length:\n receiver_chanel.scale.x != receiver_chanel.scale.z &&\n receiver_chanel.scale.x != 1\n ? this.round(receiver_chanel.scale.x)\n : this.round(receiver_chanel.scale.z),\n });\n });\n\n let listRecChanels = _.groupBy(_recChanels, (item) => item.length);\n _recChanels = [];\n _keys = Object.keys(listRecChanels);\n _keys.forEach((el) => {\n _recChanels.push({\n length: +el,\n qty: listRecChanels[el].length,\n });\n });\n\n let _rafterEndCap = [];\n elementArray\n .filter((f) => f.userData.type === GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM)\n .map((beam) => {\n beam.children.forEach((el) => {\n if (el.userData.type === GEOMETRY_TYPE.SUPERIOR_RAFTER_BEAM_END_CAP) {\n _rafterEndCap.push({\n name: el.userData.name,\n });\n }\n });\n });\n\n let listRafterEndCap = _.groupBy(_rafterEndCap, (item) => item.name);\n\n _rafterEndCap = [];\n _keys = Object.keys(listRafterEndCap);\n _keys.forEach((el) => {\n _rafterEndCap.push({\n code: el,\n qty: listRafterEndCap[el].length,\n });\n });\n\n const flyOverBrackets = elementArray.filter(\n (f) =>\n f.userData.type === GEOMETRY_TYPE.FLY_OVER_BRACKET &&\n f.userData.position.back &&\n !f.userData.position.cutout\n ).length;\n const flyOverBracketCutOuts = elementArray.filter(\n (f) =>\n f.userData.type === GEOMETRY_TYPE.FLY_OVER_BRACKET &&\n f.userData.position.back &&\n f.userData.position.cutout\n ).length;\n const extFlyOverBracket =\n elementArray.filter(\n (f) => f.userData.type === GEOMETRY_TYPE.FLY_OVER_BRACKET\n ).length -\n flyOverBracketCutOuts -\n flyOverBrackets;\n\n return {\n centerPost: _centerPosts,\n downpipes: _downpipes,\n angleBrackets: angleBrackets,\n bottomAngleBrackets: bottomAngleBrackets,\n nozzles: _nozzles,\n extFlyoverBrackets: extFlyOverBracket,\n flyoverBrackets: flyOverBrackets,\n flyoverBracketCutOuts: flyOverBracketCutOuts,\n gutters: _gutters,\n beams: _beams,\n internalJoints: _internalJoints,\n normalBeamEndCaps: _normalBeamEndCaps,\n barges: _barges,\n zflashings: _zflashings,\n receiver_chanels: _recChanels,\n panels: _panels,\n ridgeCapping: _ridgeCapping,\n rafterEndCap: _rafterEndCap,\n fasciaBrackets: elementArray.filter(\n (f) => f.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET\n ).length,\n fasciaBracketCutouts: elementArray.filter(\n (f) => f.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET_CUTOUT\n ).length,\n fasciaBracketExts: elementArray.filter(\n (f) => f.userData.type === GEOMETRY_TYPE.UPSTAND_BRAKET_EXT\n ).length,\n };\n }\n public getBeamRakeCutInfo(APP: HomeComponent, cutSide: BUILDING_SIDE) {\n let k, k_, j, l, m, v, a, b;\n if (cutSide == BUILDING_SIDE.LEFT) {\n k = Math.sqrt(\n Math.pow(APP.sldLeftCutHorizontal.currentValue, 2) +\n Math.pow(APP.sldLeftCutVertical.currentValue, 2)\n );\n k_ =\n (k * APP.sldFrontOverhang.currentValue) /\n APP.sldLeftCutHorizontal.currentValue;\n j =\n APP.sldLeftCutVertical.currentValue +\n k_ -\n APP.sldFrontOverhang.currentValue;\n l =\n (j * APP.sldLeftCutHorizontal.currentValue) /\n APP.sldLeftCutVertical.currentValue;\n m = Math.sqrt(Math.pow(j, 2) + Math.pow(l, 2));\n v =\n APP.sldLeftCutVertical.currentValue - APP.sldFrontOverhang.currentValue;\n\n a = j - (APP.sldSpan.currentValue + APP.sldMultiSpan.currentValue);\n b = a / this.cos(APP.sltRoofPitch.currentValue);\n } else if (cutSide == BUILDING_SIDE.RIGHT) {\n k = Math.sqrt(\n Math.pow(APP.sldRightCutHorizontal.currentValue, 2) +\n Math.pow(APP.sldRightCutVertical.currentValue, 2)\n );\n k_ =\n (k * APP.sldFrontOverhang.currentValue) /\n APP.sldRightCutHorizontal.currentValue;\n j =\n APP.sldRightCutVertical.currentValue +\n k_ -\n APP.sldFrontOverhang.currentValue;\n l =\n (j * APP.sldRightCutHorizontal.currentValue) /\n APP.sldRightCutVertical.currentValue;\n m = Math.sqrt(Math.pow(j, 2) + Math.pow(l, 2));\n v =\n APP.sldRightCutVertical.currentValue -\n APP.sldFrontOverhang.currentValue;\n\n a = j - (APP.sldSpan.currentValue + APP.sldMultiSpan.currentValue);\n b = a / this.cos(APP.sltRoofPitch.currentValue);\n }\n\n return {\n k: k == Infinity || isNaN(k) ? 0 : k,\n j: j == Infinity || isNaN(j) ? 0 : j,\n m: m == Infinity || isNaN(m) ? 0 : m,\n v: v == Infinity || isNaN(v) ? 0 : v,\n a: a == Infinity || isNaN(a) ? 0 : a,\n b: b == Infinity || isNaN(b) ? 0 : b,\n l: l == Infinity || isNaN(l) ? 0 : l,\n k_: k_ == Infinity || isNaN(k_) ? 0 : k_,\n };\n }\n\n public createDownpipeGroup(\n APP: HomeComponent,\n downpipeGroup: Group,\n geoPipe: GeometryInfo,\n geoL: GeometryInfo,\n offsetX: number,\n offsetY: number,\n offsetZ: number,\n offsetZNozzle: number,\n rotationY: number,\n connectLength: number,\n pipeLength: number,\n haveNozzle: boolean\n ) {\n let userData = { type: GEOMETRY_TYPE.DOWNPIPE };\n downpipeGroup.position.set(offsetX, 0, offsetZ);\n\n if (APP.sltGutterType.currentValue == 0) {\n pipeLength -= 80;\n } else {\n pipeLength -= 60;\n }\n\n if (connectLength > 100) {\n if (haveNozzle) {\n pipeLength -= 250;\n\n let meshLBottom = new Mesh(\n geoL.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshLBottom.userData = userData;\n meshLBottom.position.set(0, pipeLength, 20);\n meshLBottom.rotateY(Math.PI / 2);\n\n let meshLTop = new Mesh(\n geoL.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshLTop.userData = userData;\n meshLTop.rotation.set(Math.PI, Math.PI / 2, 0);\n meshLTop.position.set(0, pipeLength + 230, connectLength - 100);\n\n let meshPipeConnect = new Mesh(\n geoPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipeConnect.userData = userData;\n meshPipeConnect.rotation.set(Math.PI / 2, 0, 0);\n meshPipeConnect.position.set(0, pipeLength + 115, 50);\n meshPipeConnect.scale.set(1, (connectLength - 140) / geoPipe.height, 1);\n\n downpipeGroup.add(meshLBottom, meshLTop, meshPipeConnect);\n } else {\n pipeLength += 100;\n offsetY += 100;\n }\n }\n\n let meshPipe = new Mesh(\n geoPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipe.userData = userData;\n meshPipe.scale.setY(pipeLength / geoPipe.height);\n\n downpipeGroup.add(meshPipe);\n\n //Check intersec eave\n let isIntersect = false;\n let boxDownPipe = new Box3().setFromObject(downpipeGroup);\n\n for (let eave of APP.eaveManager.listEave) {\n let boxEave = new Box3().setFromObject(eave);\n\n if (boxEave.intersectsBox(boxDownPipe)) {\n isIntersect = true;\n break;\n }\n }\n\n if (isIntersect) {\n downpipeGroup.children = [];\n this.createDownpipeNozzle(\n APP,\n downpipeGroup,\n geoPipe,\n offsetX,\n offsetY,\n offsetZNozzle\n );\n }\n\n return downpipeGroup;\n }\n public createDownpipeNozzle(\n APP: HomeComponent,\n downpipeGroup: Group,\n geoPipe: GeometryInfo,\n posX: number,\n posY: number,\n posZ: number\n ) {\n let meshPipe = new Mesh(\n geoPipe.geometry,\n MaterialManager.Instance().DOWNPIPE\n );\n meshPipe.userData = { type: GEOMETRY_TYPE.DOWNPIPE_NOZZLE };\n meshPipe.scale.setY(100 / geoPipe.height);\n meshPipe.position.set(0, posY - 100 - 100, 0);\n\n downpipeGroup.add(meshPipe);\n downpipeGroup.position.set(posX, 0, posZ);\n return downpipeGroup;\n }\n public handlerDimDragEvent(\n event,\n startPos,\n startMatrix?: Matrix4,\n startBayLength?: number\n ) {\n if (event.object.userData?.dimType === DIMENSION_LABEL_TYPE.BAY) {\n const obj = event.object as Mesh;\n obj.position.z = 0;\n obj.updateMatrixWorld();\n event.object.position.z = 0;\n event.object.position.y = 0;\n let bayNum = obj.userData.bayNum;\n const pos = obj.position.clone();\n let bayOffset = UI.listBay\n .filter((b) => UI.listBay.findIndex((e) => e == b) < +bayNum)\n .reduce((pre, cur) => {\n return pre + cur.value;\n }, 0);\n let bayStartPos = -UI.totalBayLength / 2 + bayOffset;\n let bayEndPos = bayStartPos + UI.listBay[bayNum].value;\n if (\n UI.existingType == 0 ||\n UI.existingType == 3 ||\n UI.structureType == 4\n ) {\n if (event.object.position.x > bayEndPos) {\n event.object.position.x = bayEndPos;\n }\n if (event.object.position.x < bayStartPos) {\n event.object.position.x = bayStartPos;\n }\n if (event.object.userData?.left) {\n if (event.object.position.x < bayEndPos) {\n event.object.position.x = bayEndPos;\n }\n }\n if (event.object.userData?.right) {\n if (event.object.position.x > bayStartPos) {\n event.object.position.x = bayStartPos;\n }\n }\n } else if (UI.existingType == 1) {\n if (obj.userData.right) {\n if (event.object.position.x < bayStartPos) {\n event.object.position.x = bayStartPos;\n }\n if (event.object.position.x > bayStartPos) {\n event.object.position.x = bayStartPos;\n }\n }\n } else if (UI.existingType == 2) {\n if (obj.userData.left) {\n if (event.object.position.x > bayEndPos) {\n event.object.position.x = bayEndPos;\n }\n if (event.object.position.x < bayEndPos) {\n event.object.position.x = bayEndPos;\n }\n }\n }\n let distance = HomeComponent.ins.dialogEditBay.listBay[bayNum].value;\n if (startPos.x == pos.x) {\n return;\n }\n if (obj.userData.left) {\n if (UI.existingType == 1 && UI.structureType != 4) {\n if (startBayLength) {\n const restStartLength = UI.listBay\n .filter((b) => UI.listBay.findIndex((e) => e == b) != +bayNum)\n .reduce((pre, cur) => {\n return pre + cur.value;\n }, 0);\n const totalBayStartLength = restStartLength + startBayLength;\n const startPointOld = -totalBayStartLength / 2 + bayOffset;\n distance = pos.x - startPointOld;\n\n // const fit = distance / 2 - startBayLength / 2;\n // event.object.position.x = pos.x - fit;\n }\n } else {\n if (startBayLength) {\n const restStartLength = UI.listBay\n .filter((b) => UI.listBay.findIndex((e) => e == b) != +bayNum)\n .reduce((pre, cur) => {\n return pre + cur.value;\n }, 0);\n const totalBayStartLength = restStartLength + startBayLength;\n const startCenter =\n -totalBayStartLength / 2 + bayOffset + startBayLength / 2;\n distance = 2 * (pos.x - startCenter);\n }\n // if(pos.x > startPos.x){\n // distance = distance + (pos.x - startPos.x);\n // } else if (pos.x < startPos.x){\n // distance = distance - (startPos.x - pos.x);\n // }\n }\n } else {\n if (UI.existingType == 2 && UI.structureType != 4) {\n if (startBayLength) {\n const restStartLength = UI.listBay\n .filter((b) => UI.listBay.findIndex((e) => e == b) != +bayNum)\n .reduce((pre, cur) => {\n return pre + cur.value;\n }, 0);\n const totalBayStartLength = restStartLength + startBayLength;\n const endPointOld =\n -totalBayStartLength / 2 + bayOffset + startBayLength;\n distance = endPointOld - pos.x;\n }\n } else {\n if (startBayLength) {\n const restStartLength = UI.listBay\n .filter((b) => UI.listBay.findIndex((e) => e == b) != +bayNum)\n .reduce((pre, cur) => {\n return pre + cur.value;\n }, 0);\n const totalBayStartLength = restStartLength + startBayLength;\n const startCenter =\n -totalBayStartLength / 2 + bayOffset + startBayLength / 2;\n distance = 2 * (startCenter - pos.x);\n }\n // if (pos.x > startPos.x) {\n // distance = distance - (pos.x - startPos.x);\n // } else if (pos.x < startPos.x) {\n // distance = distance + (startPos.x - pos.x);\n // }\n }\n }\n distance = Math.round(distance / 10) * 10;\n if (distance < 1000) {\n distance = 1000;\n }\n if (distance > 8000) {\n distance = 8000;\n }\n HomeComponent.ins.dialogEditBay.listBay[bayNum].value = distance;\n HomeComponent.ins.dialogEditBay.onOK();\n // if(obj.userData.left){\n // if (UI.existingType == 1 && UI.structureType != 4){\n // event.object.position.x = UI.totalBayLength + bayOffset + distance;\n // }\n // }\n } else if (\n event.object.userData?.dimType ===\n DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_HORIZONTAL\n ) {\n const obj = event.object as Mesh;\n obj.position.z = 0;\n obj.updateMatrixWorld();\n const pos = obj.position.clone();\n event.object.position.z = 0;\n event.object.position.y = 500;\n if (\n event.object.position.x >\n -UI.totalBayLength / 2 + HomeComponent.ins.sldLeftCutHorizontal.maxValue\n ) {\n event.object.position.x =\n -UI.totalBayLength / 2 +\n HomeComponent.ins.sldLeftCutHorizontal.maxValue;\n }\n if (event.object.position.x < -UI.totalBayLength / 2) {\n event.object.position.x = -UI.totalBayLength / 2;\n }\n if (event.object.userData?.left) {\n if (\n event.object.position.x <\n -UI.totalBayLength / 2 +\n HomeComponent.ins.sldLeftCutHorizontal.minValue\n ) {\n event.object.position.x =\n -UI.totalBayLength / 2 +\n HomeComponent.ins.sldLeftCutHorizontal.minValue;\n }\n }\n if (event.object.userData?.right) {\n if (event.object.position.x > -UI.totalBayLength / 2) {\n event.object.position.x = -UI.totalBayLength / 2;\n }\n }\n let distance = HomeComponent.ins.sldLeftCutHorizontal.currentValue;\n if (obj.userData.left) {\n if (pos.x > startPos.x) {\n distance = distance + (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance - (startPos.x - pos.x);\n }\n } else {\n if (pos.x > startPos.x) {\n distance = distance - (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance + (startPos.x - pos.x);\n }\n }\n distance = Math.round(distance);\n\n if (distance < HomeComponent.ins.sldLeftCutHorizontal.minValue) {\n distance = HomeComponent.ins.sldLeftCutHorizontal.minValue;\n }\n if (distance > HomeComponent.ins.sldLeftCutHorizontal.maxValue) {\n distance = HomeComponent.ins.sldLeftCutHorizontal.maxValue;\n }\n HomeComponent.ins.sldLeftCutHorizontal.setValue(distance);\n } else if (\n event.object.userData?.dimType ===\n DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_HORIZONTAL\n ) {\n const obj = event.object as Mesh;\n obj.position.z = 0;\n obj.updateMatrixWorld();\n const pos = obj.position.clone();\n event.object.position.z = 0;\n event.object.position.y = 500;\n if (event.object.position.x > UI.totalBayLength / 2) {\n event.object.position.x = UI.totalBayLength / 2;\n }\n if (\n event.object.position.x <\n UI.totalBayLength / 2 - HomeComponent.ins.sldRightCutHorizontal.maxValue\n ) {\n event.object.position.x =\n UI.totalBayLength / 2 -\n HomeComponent.ins.sldRightCutHorizontal.maxValue;\n }\n if (event.object.userData?.left) {\n if (event.object.position.x < UI.totalBayLength / 2) {\n event.object.position.x = UI.totalBayLength / 2;\n }\n }\n if (event.object.userData?.right) {\n if (\n event.object.position.x >\n UI.totalBayLength / 2 -\n HomeComponent.ins.sldRightCutHorizontal.minValue\n ) {\n event.object.position.x =\n UI.totalBayLength / 2 -\n HomeComponent.ins.sldRightCutHorizontal.minValue;\n }\n }\n let distance = HomeComponent.ins.sldRightCutHorizontal.currentValue;\n if (obj.userData.left) {\n if (pos.x > startPos.x) {\n distance = distance + (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance - (startPos.x - pos.x);\n }\n } else {\n if (pos.x > startPos.x) {\n distance = distance - (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance + (startPos.x - pos.x);\n }\n }\n distance = Math.round(distance);\n\n if (distance < HomeComponent.ins.sldRightCutHorizontal.minValue) {\n distance = HomeComponent.ins.sldRightCutHorizontal.minValue;\n }\n if (distance > HomeComponent.ins.sldRightCutHorizontal.maxValue) {\n distance = HomeComponent.ins.sldRightCutHorizontal.maxValue;\n }\n HomeComponent.ins.sldRightCutHorizontal.setValue(distance);\n } else if (\n event.object.userData?.dimType === DIMENSION_LABEL_TYPE.LEFT_OVERHANG\n ) {\n const obj = event.object as Mesh;\n obj.position.z = 0;\n obj.updateMatrixWorld();\n event.object.position.z = 0;\n event.object.position.y = 0;\n const pos = obj.position.clone();\n if (\n event.object.position.x <\n -UI.totalBayLength / 2 - HomeComponent.ins.sldLeftOverhang.maxValue\n ) {\n event.object.position.x =\n -UI.totalBayLength / 2 - HomeComponent.ins.sldLeftOverhang.maxValue;\n }\n if (event.object.position.x > -UI.totalBayLength / 2) {\n event.object.position.x = -UI.totalBayLength / 2;\n }\n if (event.object.userData?.left) {\n if (event.object.position.x < -UI.totalBayLength / 2) {\n event.object.position.x = -UI.totalBayLength / 2;\n }\n }\n if (event.object.userData?.right) {\n if (\n event.object.position.x >\n -UI.totalBayLength / 2 - HomeComponent.ins.sldLeftOverhang.minValue\n ) {\n event.object.position.x =\n -UI.totalBayLength / 2 - HomeComponent.ins.sldLeftOverhang.minValue;\n }\n }\n let distance = HomeComponent.ins.sldLeftOverhang.currentValue;\n if (obj.userData.left) {\n if (pos.x > startPos.x) {\n distance = distance + (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance - (startPos.x - pos.x);\n }\n } else {\n if (pos.x > startPos.x) {\n distance = distance - (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance + (startPos.x - pos.x);\n }\n }\n distance = Math.round(distance);\n\n if (distance < HomeComponent.ins.sldLeftOverhang.minValue) {\n distance = HomeComponent.ins.sldLeftOverhang.minValue;\n }\n if (distance > HomeComponent.ins.sldLeftOverhang.maxValue) {\n distance = HomeComponent.ins.sldLeftOverhang.maxValue;\n }\n HomeComponent.ins.sldLeftOverhang.setValue(distance);\n } else if (\n event.object.userData?.dimType === DIMENSION_LABEL_TYPE.RIGHT_OVERHANG\n ) {\n const obj = event.object as Mesh;\n obj.position.z = 0;\n obj.updateMatrixWorld();\n const pos = obj.position.clone();\n event.object.position.z = 0;\n event.object.position.y = 0;\n if (event.object.position.x < UI.totalBayLength / 2) {\n event.object.position.x = UI.totalBayLength / 2;\n }\n if (\n event.object.position.x >\n UI.totalBayLength / 2 + HomeComponent.ins.sldLeftOverhang.maxValue\n ) {\n event.object.position.x =\n UI.totalBayLength / 2 + HomeComponent.ins.sldLeftOverhang.maxValue;\n }\n if (event.object.userData?.left) {\n if (\n event.object.position.x <\n UI.totalBayLength / 2 + HomeComponent.ins.sldLeftOverhang.minValue\n ) {\n event.object.position.x =\n UI.totalBayLength / 2 + HomeComponent.ins.sldLeftOverhang.minValue;\n }\n }\n if (event.object.userData?.right) {\n if (event.object.position.x > UI.totalBayLength / 2) {\n event.object.position.x = UI.totalBayLength / 2;\n }\n }\n let distance = HomeComponent.ins.sldRightOverhang.currentValue;\n if (obj.userData.left) {\n if (pos.x > startPos.x) {\n distance = distance + (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance - (startPos.x - pos.x);\n }\n } else {\n if (pos.x > startPos.x) {\n distance = distance - (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance + (startPos.x - pos.x);\n }\n }\n distance = Math.round(distance);\n\n if (distance < HomeComponent.ins.sldRightOverhang.minValue) {\n distance = HomeComponent.ins.sldRightOverhang.minValue;\n }\n if (distance > HomeComponent.ins.sldRightOverhang.maxValue) {\n distance = HomeComponent.ins.sldRightOverhang.maxValue;\n }\n HomeComponent.ins.sldRightOverhang.setValue(distance);\n } else if (event.object.userData?.dimType === DIMENSION_LABEL_TYPE.SPAN) {\n const obj = event.object as Mesh;\n obj.position.z = 0;\n obj.updateMatrixWorld();\n const pos = obj.position.clone();\n event.object.position.z = 0;\n event.object.position.y = 0;\n if (event.object.position.x < -UI.span / 2) {\n event.object.position.x = -UI.span / 2;\n }\n if (event.object.position.x > HomeComponent.ins.sldSpan.maxValue / 2) {\n event.object.position.x = HomeComponent.ins.sldSpan.maxValue / 2;\n }\n if (event.object.userData?.left) {\n if (event.object.position.x < HomeComponent.ins.sldSpan.minValue / 2) {\n event.object.position.x = HomeComponent.ins.sldSpan.minValue / 2;\n }\n }\n if (event.object.userData?.right) {\n if (event.object.position.x > -UI.span / 2) {\n event.object.position.x = -UI.span / 2;\n }\n }\n let distance = HomeComponent.ins.sldSpan.currentValue;\n let fit = 0;\n if (obj.userData.left) {\n if (pos.x == UI.span / 2) {\n return;\n }\n // Existing building\n if (UI.structureType == 0) {\n distance = pos.x * 2;\n if (startMatrix) {\n fit =\n distance / 2 -\n (startMatrix.elements[14] + UI.existingWidth1 / 2) / 2;\n distance = distance - fit;\n }\n }\n // Fly over, Back fly over\n else if (UI.structureType == 1 || UI.structureType == 2) {\n distance = pos.x * 2;\n if (startMatrix) {\n fit =\n distance / 2 -\n (startMatrix.elements[14] +\n UI.existingWidth1 / 2 +\n HomeComponent.ins.existingWallManager.geo_existingWallL1.width +\n UI.overhangBack) /\n 2;\n distance = distance - fit;\n }\n }\n //Fascia\n else if (UI.structureType == 3 || UI.structureType == 5) {\n distance = pos.x * 2;\n if (startMatrix) {\n fit =\n distance / 2 -\n (startMatrix.elements[14] +\n UI.existingWidth1 / 2 -\n UI.eaveWidth) /\n 2;\n distance = distance - fit;\n }\n }\n //Free standing\n else if (UI.structureType == 4) {\n distance = pos.x * 2;\n if (startMatrix) {\n fit = distance / 2 - startMatrix.elements[14] / 2;\n distance = distance - fit;\n }\n }\n } else {\n if (\n UI.structureType == 4 &&\n UI.patiosRoofType == PATIOS_ROOF_TYPE.GABLE_ROOF\n ) {\n distance = -pos.x * 2;\n } else {\n if (pos.x > startPos.x) {\n distance = distance - (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance + (startPos.x - pos.x);\n }\n }\n }\n distance = Math.round(distance / 100) * 100;\n\n if (distance < HomeComponent.ins.sldSpan.minValue) {\n distance = HomeComponent.ins.sldSpan.minValue;\n }\n if (distance > HomeComponent.ins.sldSpan.maxValue) {\n distance = HomeComponent.ins.sldSpan.maxValue;\n }\n if (obj.userData.left) {\n event.object.position.x = distance / 2;\n }\n HomeComponent.ins.sldSpan.setValue(distance);\n } else if (\n event.object.userData?.dimType === DIMENSION_LABEL_TYPE.MULTI_SPAN\n ) {\n const obj = event.object as Mesh;\n obj.position.z = 0;\n obj.updateMatrixWorld();\n const pos = obj.position.clone();\n event.object.position.z = 0;\n event.object.position.y = 0;\n if (event.object.position.x < UI.span / 2) {\n event.object.position.x = UI.span / 2;\n }\n if (\n event.object.position.x >\n UI.span / 2 + HomeComponent.ins.sldMultiSpan.maxValue\n ) {\n event.object.position.x =\n UI.span / 2 + HomeComponent.ins.sldMultiSpan.maxValue;\n }\n if (event.object.userData?.left) {\n if (\n event.object.position.x <\n UI.span / 2 + HomeComponent.ins.sldMultiSpan.minValue\n ) {\n event.object.position.x =\n UI.span / 2 + HomeComponent.ins.sldMultiSpan.minValue;\n }\n }\n if (event.object.userData?.right) {\n if (event.object.position.x > UI.span / 2) {\n event.object.position.x = UI.span / 2;\n }\n }\n let distance = HomeComponent.ins.sldMultiSpan.currentValue;\n if (obj.userData.left) {\n if (pos.x > startPos.x) {\n distance = distance + (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance - (startPos.x - pos.x);\n }\n } else {\n if (pos.x > startPos.x) {\n distance = distance - (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance + (startPos.x - pos.x);\n }\n }\n distance = Math.round(distance / 100) * 100;\n\n if (distance < HomeComponent.ins.sldMultiSpan.minValue) {\n distance = HomeComponent.ins.sldMultiSpan.minValue;\n }\n if (distance > HomeComponent.ins.sldMultiSpan.maxValue) {\n distance = HomeComponent.ins.sldMultiSpan.maxValue;\n }\n HomeComponent.ins.sldMultiSpan.setValue(distance);\n } else if (\n event.object.userData?.dimType ===\n DIMENSION_LABEL_TYPE.RAKE_CUT_RIGHT_VERTICAL\n ) {\n const obj = event.object as Mesh;\n obj.position.z = 0;\n obj.updateMatrixWorld();\n const pos = obj.position.clone();\n event.object.position.z = 0;\n event.object.position.y = 500;\n if (\n event.object.position.x <\n UI.span / 2 +\n UI.overhangFront +\n UI.multiSpan -\n HomeComponent.ins.sldRightCutVertical.maxValue\n ) {\n event.object.position.x =\n UI.span / 2 +\n UI.overhangFront +\n UI.multiSpan -\n HomeComponent.ins.sldRightCutVertical.maxValue;\n }\n if (\n event.object.position.x >\n UI.span / 2 + UI.overhangFront + UI.multiSpan\n ) {\n event.object.position.x = UI.span / 2 + UI.overhangFront + UI.multiSpan;\n }\n if (event.object.userData?.left) {\n if (\n event.object.position.x <\n UI.span / 2 + UI.overhangFront + UI.multiSpan\n ) {\n event.object.position.x =\n UI.span / 2 + UI.overhangFront + UI.multiSpan;\n }\n }\n if (event.object.userData?.right) {\n if (\n event.object.position.x >\n UI.span / 2 +\n UI.overhangFront +\n UI.multiSpan -\n HomeComponent.ins.sldRightCutVertical.minValue\n ) {\n event.object.position.x =\n UI.span / 2 +\n UI.overhangFront +\n UI.multiSpan -\n HomeComponent.ins.sldRightCutVertical.minValue;\n }\n }\n let distance = HomeComponent.ins.sldRightCutVertical.currentValue;\n if (obj.userData.left) {\n if (pos.x > startPos.x) {\n distance = distance + (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance - (startPos.x - pos.x);\n }\n } else {\n if (pos.x > startPos.x) {\n distance = distance - (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance + (startPos.x - pos.x);\n }\n }\n distance = Math.round(distance);\n\n if (distance < HomeComponent.ins.sldRightCutVertical.minValue) {\n distance = HomeComponent.ins.sldRightCutVertical.minValue;\n }\n if (distance > HomeComponent.ins.sldRightCutVertical.maxValue) {\n distance = HomeComponent.ins.sldRightCutVertical.maxValue;\n }\n HomeComponent.ins.sldRightCutVertical.setValue(distance);\n } else if (\n event.object.userData?.dimType === DIMENSION_LABEL_TYPE.FRONT_OVERHANG\n ) {\n const obj = event.object as Mesh;\n obj.position.z = 0;\n obj.updateMatrixWorld();\n event.object.position.z = 0;\n event.object.position.y = 0;\n const pos = obj.position.clone();\n if (event.object.position.x < UI.span / 2 + UI.multiSpan) {\n event.object.position.x = UI.span / 2 + UI.multiSpan;\n }\n if (\n event.object.position.x >\n UI.span / 2 + UI.multiSpan + HomeComponent.ins.sldFrontOverhang.maxValue\n ) {\n event.object.position.x =\n UI.span / 2 +\n UI.multiSpan +\n HomeComponent.ins.sldFrontOverhang.maxValue;\n }\n if (event.object.userData?.left) {\n if (\n event.object.position.x <\n UI.span / 2 +\n UI.multiSpan +\n HomeComponent.ins.sldFrontOverhang.minValue\n ) {\n event.object.position.x =\n UI.span / 2 +\n UI.multiSpan +\n HomeComponent.ins.sldFrontOverhang.minValue;\n }\n }\n if (event.object.userData?.right) {\n if (event.object.position.x > UI.span / 2 + UI.multiSpan) {\n event.object.position.x = UI.span / 2 + UI.multiSpan;\n }\n }\n let distance = HomeComponent.ins.sldFrontOverhang.currentValue;\n if (obj.userData.left) {\n if (pos.x > startPos.x) {\n distance = distance + (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance - (startPos.x - pos.x);\n }\n } else {\n if (pos.x > startPos.x) {\n distance = distance - (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance + (startPos.x - pos.x);\n }\n }\n distance = Math.round(distance);\n\n if (distance < HomeComponent.ins.sldFrontOverhang.minValue) {\n distance = HomeComponent.ins.sldFrontOverhang.minValue;\n }\n if (distance > HomeComponent.ins.sldFrontOverhang.maxValue) {\n distance = HomeComponent.ins.sldFrontOverhang.maxValue;\n }\n HomeComponent.ins.sldFrontOverhang.setValue(distance);\n } else if (\n event.object.userData?.dimType === DIMENSION_LABEL_TYPE.BACK_OVERHANG\n ) {\n const obj = event.object as Mesh;\n obj.position.z = 0;\n obj.updateMatrixWorld();\n const pos = obj.position.clone();\n event.object.position.z = 0;\n event.object.position.y = 0;\n if (\n event.object.position.x <\n -UI.span / 2 - HomeComponent.ins.sldBackOverhang.maxValue\n ) {\n event.object.position.x =\n -UI.span / 2 - HomeComponent.ins.sldBackOverhang.maxValue;\n }\n if (event.object.position.x > -UI.span / 2) {\n event.object.position.x = -UI.span / 2;\n }\n if (event.object.userData?.left) {\n if (event.object.position.x < -UI.span / 2) {\n event.object.position.x = -UI.span / 2;\n }\n }\n if (event.object.userData?.right) {\n if (\n event.object.position.x >\n -UI.span / 2 - HomeComponent.ins.sldBackOverhang.minValue\n ) {\n event.object.position.x =\n -UI.span / 2 - HomeComponent.ins.sldBackOverhang.minValue;\n }\n }\n let distance = HomeComponent.ins.sldBackOverhang.currentValue;\n if (obj.userData.left) {\n if (pos.x > startPos.x) {\n distance = distance + (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance - (startPos.x - pos.x);\n }\n } else {\n if (pos.x > startPos.x) {\n distance = distance - (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance + (startPos.x - pos.x);\n }\n }\n distance = Math.round(distance);\n\n if (distance < HomeComponent.ins.sldBackOverhang.minValue) {\n distance = HomeComponent.ins.sldBackOverhang.minValue;\n }\n if (distance > HomeComponent.ins.sldBackOverhang.maxValue) {\n distance = HomeComponent.ins.sldBackOverhang.maxValue;\n }\n HomeComponent.ins.sldBackOverhang.setValue(distance);\n } else if (\n event.object.userData?.dimType ===\n DIMENSION_LABEL_TYPE.RAKE_CUT_LEFT_VERTICAL\n ) {\n const obj = event.object as Mesh;\n obj.position.z = 0;\n obj.updateMatrixWorld();\n const pos = obj.position.clone();\n event.object.position.z = 0;\n event.object.position.y = 0;\n if (\n event.object.position.x <\n -HomeComponent.ins.sldLeftCutVertical.maxValue / 2\n ) {\n event.object.position.x =\n -HomeComponent.ins.sldLeftCutVertical.maxValue / 2;\n }\n if (event.object.position.x > UI.rakeCutLeftVer / 2) {\n event.object.position.x = UI.rakeCutLeftVer / 2;\n }\n if (event.object.userData?.left) {\n if (event.object.position.x < UI.rakeCutLeftVer / 2) {\n event.object.position.x = UI.rakeCutLeftVer / 2;\n }\n }\n if (event.object.userData?.right) {\n if (\n event.object.position.x >\n -HomeComponent.ins.sldLeftCutVertical.minValue / 2\n ) {\n event.object.position.x =\n -HomeComponent.ins.sldLeftCutVertical.minValue / 2;\n }\n }\n let distance = HomeComponent.ins.sldLeftCutVertical.currentValue;\n if (obj.userData.left) {\n if (pos.x > startPos.x) {\n distance = distance + (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance - (startPos.x - pos.x);\n }\n } else {\n if (pos.x > startPos.x) {\n distance = distance - (pos.x - startPos.x);\n } else if (pos.x < startPos.x) {\n distance = distance + (startPos.x - pos.x);\n }\n }\n distance = Math.round(distance);\n\n if (distance < HomeComponent.ins.sldLeftCutVertical.minValue) {\n distance = HomeComponent.ins.sldLeftCutVertical.minValue;\n }\n if (distance > HomeComponent.ins.sldLeftCutVertical.maxValue) {\n distance = HomeComponent.ins.sldLeftCutVertical.maxValue;\n }\n HomeComponent.ins.sldLeftCutVertical.setValue(distance);\n }\n }\n}\nexport function getBeamEndCapCode(endCapPreCode, endCapColorCode) {\n const availableCodes = [\n \"BSEC110B\",\n \"BSEC110C\",\n \"BSEC110MM\",\n \"BSEC110M\",\n \"BSEC110SM\",\n \"BSEC110W\",\n \"BSCE150B\",\n \"BSCE150C\",\n \"BSCE150P\",\n \"BSCE150W\",\n \"BSEC160B\",\n \"BSEC160C\",\n \"BSEC160MM\",\n \"BSEC160M\",\n \"BSEC160SM\",\n \"BSEC160W\",\n \"BSCE200B\",\n \"BSCE200C\",\n \"BSCE200W\",\n \"BSEC210B\",\n \"BSEC210C\",\n \"BSEC210MM\",\n \"BSEC210M\",\n \"BSEC210SM\",\n \"BSEC210W\",\n \"BSEC260B\",\n \"BSEC260C\",\n \"BSEC260MM\",\n \"BSEC260M\",\n \"BSEC260SM\",\n \"BSEC260W\",\n ];\n let code = `${endCapPreCode}${endCapColorCode}`;\n\n // Paperbark some time = P and sometime = M\n if (!availableCodes.find((el) => el == code)) {\n code = `${endCapPreCode}P`;\n }\n if (!availableCodes.find((el) => el == code)) {\n code = `${endCapPreCode}SM`;\n }\n\n return code;\n}\n// Rafter always 160\nexport function getRafterBeamEndCapCode(beamSize = 160, isTop = false) {\n if (isTop) {\n let colorCode = HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode;\n if (colorCode == \"M\" && beamSize == 160) {\n colorCode = \"P\";\n }\n\n return `BSA${beamSize}15${colorCode}`;\n } else {\n let colorCode = HomeComponent.ins.sltColourBeam.currentBeamEndCapColorCode;\n if (colorCode == \"M\" && beamSize == 160) {\n colorCode = \"P\";\n }\n\n return `BSAGB${beamSize}${colorCode}`;\n }\n}\nexport const utils = {\n tan(degrees: number): number {\n return this.round(Math.tan(this.degreesToRadians(degrees)));\n },\n degreesToRadians(degrees: number) {\n var pi = Math.PI;\n return this.round(degrees * (pi / 180));\n },\n round(num: number): number {\n return parseFloat(num.toFixed(3));\n },\n getDimensionValue(value: number) {\n //return parseFloat(`${value/1000}`).toFixed(2) + 'm';\n return Math.round(value).toString(); //parseFloat(`${value/1000}`).toFixed(3);\n },\n getTextCover(\n textGeo: TextBufferGeometry,\n labelType: string,\n pos: Vector3,\n fitZ = 0,\n bayNum?: number\n ) {\n let textSize = new Vector3();\n textGeo.boundingBox.getSize(textSize);\n\n let textCover = new Mesh(\n new BoxBufferGeometry(textSize.x, textSize.y, textSize.z)\n );\n textCover.position.set(pos.x, pos.y, pos.z + fitZ);\n textCover.userData = { type: GEOMETRY_TYPE.TEXT_COVER, labelType };\n if (bayNum !== undefined) {\n textCover.userData[\"bayNum\"] = bayNum;\n }\n textCover.material[\"opacity\"] = 0;\n textCover.material[\"transparent\"] = true;\n\n return textCover;\n },\n};\n","import { Injectable } from '@angular/core';\nimport { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\n\nimport { AuthenticationService } from '../services';\n\n@Injectable({ providedIn: 'root' })\nexport class AuthGuard implements CanActivate {\n constructor(\n private router: Router,\n private authenticationService: AuthenticationService\n ) { }\n\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\n const currentUser = this.authenticationService.currentUserValue;\n if (currentUser) {\n // logged in so return true\n return true;\n }\n\n // not logged in so redirect to login page with the return url\n this.router.navigate(['/login'], { queryParams: { returnUrl: state.url } });\n return false;\n }\n}","import { Injectable } from '@angular/core';\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\nimport { Observable, throwError } from 'rxjs';\nimport { catchError } from 'rxjs/operators';\n\nimport { AuthenticationService } from '../services';\n\n@Injectable()\nexport class ErrorInterceptor implements HttpInterceptor {\n constructor(private authenticationService: AuthenticationService) { }\n\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\n return next.handle(request).pipe(catchError(err => {\n if (err.status === 401) {\n // auto logout if 401 response returned from api\n this.authenticationService.logout();\n location.reload(true);\n }\n\n const error = err.error.message || err.statusText;\n return throwError(error);\n }))\n }\n}","export * from './auth.guard';\nexport * from './error.interceptor';\n// export * from './fake-backend';\nexport * from './jwt.interceptor';\n","import { Injectable } from '@angular/core';\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\nimport { AuthenticationService } from '../services';\n\n@Injectable()\nexport class JwtInterceptor implements HttpInterceptor {\n constructor(private authenticationService: AuthenticationService) { }\n\n intercept(request: HttpRequest, next: HttpHandler): Observable> {\n // add authorization header with jwt token if available\n let currentUser = this.authenticationService.currentUserValue;\n if (currentUser && currentUser.token) {\n request = request.clone({\n setHeaders: {\n Authorization: `${currentUser.token}` // Bearer \n }\n });\n }\n\n return next.handle(request);\n }\n}","/**\n * @author zz85 / https://github.com/zz85\n * @author mrdoob / http://mrdoob.com\n * Running this will allow you to drag three.js objects around the screen.\n */\n\nimport {\n\tEventDispatcher,\n\tMatrix4,\n\tPlane,\n\tRaycaster,\n\tVector2,\n\tVector3\n} from \"three\";\n\nvar DragControls = function ( _objects, _camera, _domElement ) {\n\n\tvar _plane = new Plane();\n\tvar _raycaster = new Raycaster();\n\n\tvar _mouse = new Vector2();\n\tvar _offset = new Vector3();\n\tvar _intersection = new Vector3();\n\tvar _worldPosition = new Vector3();\n\tvar _inverseMatrix = new Matrix4();\n\n\tvar _selected = null, _hovered = null;\n\n\t//\n\n\tvar scope = this;\n\n\tfunction activate() {\n\n\t\t_domElement.addEventListener( 'mousemove', onDocumentMouseMove, false );\n\t\t_domElement.addEventListener( 'mousedown', onDocumentMouseDown, false );\n\t\t_domElement.addEventListener( 'mouseup', onDocumentMouseCancel, false );\n\t\t_domElement.addEventListener( 'mouseleave', onDocumentMouseCancel, false );\n\t\t_domElement.addEventListener( 'touchmove', onDocumentTouchMove, false );\n\t\t_domElement.addEventListener( 'touchstart', onDocumentTouchStart, false );\n\t\t_domElement.addEventListener( 'touchend', onDocumentTouchEnd, false );\n\n\t}\n\n\tfunction deactivate() {\n\n\t\t_domElement.removeEventListener( 'mousemove', onDocumentMouseMove, false );\n\t\t_domElement.removeEventListener( 'mousedown', onDocumentMouseDown, false );\n\t\t_domElement.removeEventListener( 'mouseup', onDocumentMouseCancel, false );\n\t\t_domElement.removeEventListener( 'mouseleave', onDocumentMouseCancel, false );\n\t\t_domElement.removeEventListener( 'touchmove', onDocumentTouchMove, false );\n\t\t_domElement.removeEventListener( 'touchstart', onDocumentTouchStart, false );\n\t\t_domElement.removeEventListener( 'touchend', onDocumentTouchEnd, false );\n\n\t}\n\n\tfunction dispose() {\n\n\t\tdeactivate();\n\n\t}\n\n\tfunction onDocumentMouseMove( event ) {\n\n\t\tevent.preventDefault();\n\n\t\tvar rect = _domElement.getBoundingClientRect();\n\n\t\t_mouse.x = ( ( event.clientX - rect.left ) / rect.width ) * 2 - 1;\n\t\t_mouse.y = - ( ( event.clientY - rect.top ) / rect.height ) * 2 + 1;\n\n\t\t_raycaster.setFromCamera( _mouse, _camera );\n\n\t\tif ( _selected && scope.enabled ) {\n\n\t\t\tif ( _raycaster.ray.intersectPlane( _plane, _intersection ) ) {\n\n\t\t\t\t_selected.position.copy( _intersection.sub( _offset ).applyMatrix4( _inverseMatrix ) );\n\n\t\t\t}\n\n\t\t\tscope.dispatchEvent( { type: 'drag', object: _selected } );\n\n\t\t\treturn;\n\n\t\t}\n\n\t\t_raycaster.setFromCamera( _mouse, _camera );\n\n\t\tvar intersects = _raycaster.intersectObjects( _objects, true );\n\n\t\tif ( intersects.length > 0 ) {\n\n\t\t\tvar object = intersects[ 0 ].object;\n\n\t\t\t_plane.setFromNormalAndCoplanarPoint( _camera.getWorldDirection( _plane.normal ), _worldPosition.setFromMatrixPosition( object.matrixWorld ) );\n\n\t\t\tif ( _hovered !== object ) {\n\n\t\t\t\tscope.dispatchEvent( { type: 'hoveron', object: object } );\n\n\t\t\t\t_domElement.style.cursor = 'pointer';\n\t\t\t\t_hovered = object;\n\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( _hovered !== null ) {\n\n\t\t\t\tscope.dispatchEvent( { type: 'hoveroff', object: _hovered } );\n\n\t\t\t\t_domElement.style.cursor = 'auto';\n\t\t\t\t_hovered = null;\n\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\tfunction onDocumentMouseDown( event ) {\n\n\t\tevent.preventDefault();\n\n\t\t_raycaster.setFromCamera( _mouse, _camera );\n\n\t\tvar intersects = _raycaster.intersectObjects( _objects, true );\n\n\t\tif ( intersects.length > 0 ) {\n\n\t\t\t_selected = intersects[ 0 ].object;\n\n\t\t\tif ( _raycaster.ray.intersectPlane( _plane, _intersection ) ) {\n\n\t\t\t\t_inverseMatrix.getInverse( _selected.parent.matrixWorld );\n\t\t\t\t_offset.copy( _intersection ).sub( _worldPosition.setFromMatrixPosition( _selected.matrixWorld ) );\n\n\t\t\t}\n\n\t\t\t_domElement.style.cursor = 'move';\n\n\t\t\tscope.dispatchEvent( { type: 'dragstart', object: _selected } );\n\n\t\t}\n\n\n\t}\n\n\tfunction onDocumentMouseCancel( event ) {\n\n\t\tevent.preventDefault();\n\n\t\tif ( _selected ) {\n\n\t\t\tscope.dispatchEvent( { type: 'dragend', object: _selected } );\n\n\t\t\t_selected = null;\n\n\t\t}\n\n\t\t_domElement.style.cursor = _hovered ? 'pointer' : 'auto';\n\n\t}\n\n\tfunction onDocumentTouchMove( event ) {\n\n\t\tevent.preventDefault();\n\t\tevent = event.changedTouches[ 0 ];\n\n\t\tvar rect = _domElement.getBoundingClientRect();\n\n\t\t_mouse.x = ( ( event.clientX - rect.left ) / rect.width ) * 2 - 1;\n\t\t_mouse.y = - ( ( event.clientY - rect.top ) / rect.height ) * 2 + 1;\n\n\t\t_raycaster.setFromCamera( _mouse, _camera );\n\n\t\tif ( _selected && scope.enabled ) {\n\n\t\t\tif ( _raycaster.ray.intersectPlane( _plane, _intersection ) ) {\n\n\t\t\t\t_selected.position.copy( _intersection.sub( _offset ).applyMatrix4( _inverseMatrix ) );\n\n\t\t\t}\n\n\t\t\tscope.dispatchEvent( { type: 'drag', object: _selected } );\n\n\t\t\treturn;\n\n\t\t}\n\n\t}\n\n\tfunction onDocumentTouchStart( event ) {\n\n\t\tevent.preventDefault();\n\t\tevent = event.changedTouches[ 0 ];\n\n\t\tvar rect = _domElement.getBoundingClientRect();\n\n\t\t_mouse.x = ( ( event.clientX - rect.left ) / rect.width ) * 2 - 1;\n\t\t_mouse.y = - ( ( event.clientY - rect.top ) / rect.height ) * 2 + 1;\n\n\t\t_raycaster.setFromCamera( _mouse, _camera );\n\n\t\tvar intersects = _raycaster.intersectObjects( _objects, true );\n\n\t\tif ( intersects.length > 0 ) {\n\n\t\t\t_selected = intersects[ 0 ].object;\n\n\t\t\t_plane.setFromNormalAndCoplanarPoint( _camera.getWorldDirection( _plane.normal ), _worldPosition.setFromMatrixPosition( _selected.matrixWorld ) );\n\n\t\t\tif ( _raycaster.ray.intersectPlane( _plane, _intersection ) ) {\n\n\t\t\t\t_inverseMatrix.getInverse( _selected.parent.matrixWorld );\n\t\t\t\t_offset.copy( _intersection ).sub( _worldPosition.setFromMatrixPosition( _selected.matrixWorld ) );\n\n\t\t\t}\n\n\t\t\t_domElement.style.cursor = 'move';\n\n\t\t\tscope.dispatchEvent( { type: 'dragstart', object: _selected } );\n\n\t\t}\n\n\n\t}\n\n\tfunction onDocumentTouchEnd( event ) {\n\n\t\tevent.preventDefault();\n\n\t\tif ( _selected ) {\n\n\t\t\tscope.dispatchEvent( { type: 'dragend', object: _selected } );\n\n\t\t\t_selected = null;\n\n\t\t}\n\n\t\t_domElement.style.cursor = 'auto';\n\n\t}\n\n\tactivate();\n\n\t// API\n\n\tthis.enabled = true;\n\n\tthis.activate = activate;\n\tthis.deactivate = deactivate;\n\tthis.dispose = dispose;\n\tthis.raycaster = _raycaster\n\n};\n\nDragControls.prototype = Object.create( EventDispatcher.prototype );\nDragControls.prototype.constructor = DragControls;\n\nexport { DragControls };\n","import { BoxBufferGeometry, Color, Mesh, MeshBasicMaterial, Object3D, PlaneBufferGeometry, DoubleSide, Vector3, Shape, ShapeBufferGeometry } from \"three\";\nimport { HIGHLIGHT_BOX_COLOR } from \"../app.config\";\nimport { HomeComponent } from \"../containers/home\";\nimport SelectionManager from \"../core/selection.manager\";\nimport { GeometryManager } from \"../core/geometry.manager\";\nimport { GeometryInfo } from \"../core/models\";\nimport { utils } from \"../core/utils\";\n\nexport default class ArrowControl extends Mesh {\n container: Object3D\n options: any\n mat: MeshBasicMaterial\n\n constructor(container, options: {\n pos: Vector3,\n userData: any,\n rotation?: Vector3\n }){\n let arrowLength = 500;\n let angle = 20;\n let y = utils.tan(angle) * arrowLength;\n let shape1 = new Shape();\n shape1.moveTo(0, 0,);\n shape1.lineTo(arrowLength, y);\n shape1.lineTo(arrowLength, -y);\n shape1.closePath();\n const geo = new ShapeBufferGeometry(shape1);\n geo.translate( - arrowLength, 0, 0)\n const mat = new MeshBasicMaterial({ color: 0xffff00, side: DoubleSide });\n super(geo, mat)\n\n this.position.set(options.pos.x, options.pos.y, options.pos.z)\n if(options.rotation){\n this.rotateX(options.rotation.x)\n this.rotateY(options.rotation.y)\n this.rotateZ(options.rotation.z)\n }\n\n this.userData = options.userData;\n container.add(this)\n\n this.mat = mat;\n this.container = container\n this.options = options\n }\n}","import { BoxBufferGeometry, Color, Mesh, MeshBasicMaterial, Object3D, PlaneBufferGeometry, DoubleSide, Vector3, Shape, ShapeBufferGeometry } from \"three\";\nimport { HIGHLIGHT_BOX_COLOR } from \"../app.config\";\nimport { HomeComponent } from \"../containers/home\";\nimport SelectionManager from \"../core/selection.manager\";\nimport { GeometryManager } from \"../core/geometry.manager\";\nimport { GeometryInfo } from \"../core/models\";\nimport { utils } from \"../core/utils\";\n\nexport default class ClickControl extends Mesh {\n container: Object3D\n options: any\n mat: MeshBasicMaterial\n\n constructor(container, options: {\n pos: Vector3,\n userData: any,\n rotation?: Vector3\n }){\n let arrowLength = 500;\n let angle = 30;\n let y = utils.tan(angle) * arrowLength;\n let shape1 = new Shape();\n shape1.moveTo(0,0);\n shape1.lineTo(0 , y / 2);\n shape1.lineTo(arrowLength / 2 , y / 2);\n shape1.lineTo(arrowLength / 2 , y);\n shape1.lineTo(3 / 2 * arrowLength , 0);\n shape1.lineTo(arrowLength / 2 , - y);\n shape1.lineTo(arrowLength / 2 , - y / 2);\n shape1.lineTo(0 , - y / 2);\n shape1.closePath();\n const geo = new ShapeBufferGeometry(shape1);\n const mat = new MeshBasicMaterial({ color: 0xffff00, side: DoubleSide });\n super(geo, mat)\n\n this.position.set(options.pos.x, options.pos.y, options.pos.z)\n if(options.rotation){\n this.rotateX(options.rotation.x)\n this.rotateY(options.rotation.y)\n this.rotateZ(options.rotation.z)\n }\n\n this.userData = options.userData;\n container.add(this)\n\n this.mat = mat;\n this.container = container\n this.options = options\n }\n}","import { BoxBufferGeometry, DoubleSide, Mesh, MeshBasicMaterial, MeshLambertMaterial, PlaneBufferGeometry, SphereGeometry } from \"three\"\nimport { GeometryManager } from \"../core/geometry.manager\";\nimport { MaterialManager } from \"../core/material.manager\";\nimport { GeometryInfo } from \"../core/models\";\nimport BaseUIControlEntity from \"./base.model\"\n\nexport class DeleteControl extends BaseUIControlEntity {\n geo: BoxBufferGeometry\n lineGeometry: GeometryInfo\n\n draw(){\n const size = 200;\n this.lineGeometry = GeometryManager.Instance().getUIControlLine();\n const deleteMaterial = MaterialManager.Instance().HIDDEN_UI_CONTROL;\n const lineMaterial = MaterialManager.Instance().HIGHLIGHT_DIMENSION_TEXT;\n this.geo = new BoxBufferGeometry(size, 10, size)\n this.mesh = new Mesh(this.geo, deleteMaterial)\n this.mesh.userData = this.options.userData\n this.mesh.position.set(this.position[0], this.position[1], this.position[2])\n if(this.rotation){\n this.mesh.rotateY(this.rotation.x);\n this.mesh.rotateY(this.rotation.y);\n this.mesh.rotateZ(this.rotation.z);\n }\n this.mesh.renderOrder = 0\n this.mesh.visible = this.visible\n\n let line1 = new Mesh(this.lineGeometry.geometry, lineMaterial);\n line1.scale.setX(size * Math.sqrt(2) / this.lineGeometry.length);\n line1.position.set(this.position[0], this.position[1], this.position[2]);\n line1.rotateX(Math.PI / 2);\n line1.rotateZ(Math.PI / 4);\n\n let line2 = line1.clone();\n line2.rotateZ(Math.PI / 2);\n\n this.container.add(this.mesh, line1, line2)\n }\n}","import { BoxBufferGeometry, Color, Vector3, Group, Mesh, MeshBasicMaterial, MeshLambertMaterial, Object3D, Shape, ShapeBufferGeometry, TextBufferGeometry } from \"three\";\nimport { DIMENSION_LABEL_TYPE, GEOMETRY_TYPE } from \"../app.config\";\nimport { BUILDING_SIDE, MOUSE_EVENT, OBJECT_TYPE } from \"../app.constants\";\nimport { HomeComponent } from \"../containers/home\";\nimport { MaterialManager } from \"../core/material.manager\";\nimport { GeometryInfo } from \"../core/models\";\nimport SelectionManager from \"../core/selection.manager\";\nimport { utils } from \"../core/utils\";\nimport { GeometryManager } from \"../core/geometry.manager\";\n\nexport interface AddDimensionOptions {\n container: Object3D,\n start: {x: number, y: number, z: number},\n end: {x: number, y: number, z: number},\n textPos: {x: number, y: number, z: number},\n linePos: {x: number, y: number, z: number},\n lineLength: number;\n views: any,\n allowDrag: boolean,\n textParameter: any,\n labelType: string,\n fitZ: number,\n hasTextClone:boolean,\n axis: string,\n onDragCallback: (obj: Mesh) => void,\n onDragStartCallback: (obj: Mesh) => void,\n subtype?: string,\n textCloneUserData?: {},\n textCloneRotation?: Vector3,\n textCloneVisible?: boolean,\n bayNum?: number,\n textUserData?: {},\n textRotation?: {x: number, y: number, z: number},\n side?: number,\n visible?: boolean\n}\n\nexport default class Dimension extends Group {\n options: AddDimensionOptions\n mat: MeshBasicMaterial\n lineGeometry: GeometryInfo\n lineCapGeo: GeometryInfo\n meshText: Mesh\n meshBayNo: Mesh\n meshLine: Mesh\n meshCap1: Mesh\n meshCap2: Mesh\n meshTextCover: Mesh\n meshTextClone: Mesh\n meshArrow1: Mesh\n meshArrow2: Mesh\n\n static create(options: AddDimensionOptions){\n return new Dimension(options)\n }\n\n constructor(options: AddDimensionOptions){\n super()\n if(!options){\n return this;\n }\n\n this.lineGeometry = GeometryManager.Instance().getDimensionLine();\n this.lineCapGeo = GeometryManager.Instance().getDimensionCap();\n this.options = options\n\n this.mat = MaterialManager.Instance().DIMENSION_TEXT.clone();\n\n let cap1 = new Mesh(this.lineCapGeo.geometry, this.mat);\n cap1.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: this.options.views };\n let cap2 = new Mesh(this.lineCapGeo.geometry, this.mat);\n cap2.userData = { type: GEOMETRY_TYPE.DIMENSION_CAP, views: this.options.views };\n\n if(this.options.axis === 'x'){\n cap1.position.setX( this.options.linePos.x - this.options.lineLength/2 );\n cap2.position.setX( this.options.linePos.x + this.options.lineLength/2 );\n cap1.position.setY(this.options.linePos.y);\n cap2.position.setY(this.options.linePos.y);\n }\n \n let line = new Mesh(this.lineGeometry.geometry, this.mat);\n line.userData = { type: GEOMETRY_TYPE.DIMENSION_LINE, views: this.options.views };\n line.scale.setX( this.options.lineLength / this.lineGeometry.length);\n line.position.set( this.options.linePos.x, this.options.linePos.y, this.options.linePos.z)\n\n let textStr = utils.getDimensionValue(this.options.lineLength);\n const textGeo = new TextBufferGeometry(textStr, this.options.textParameter);\n textGeo.center();\n\n let text = new Mesh(textGeo, this.options.allowDrag ? MaterialManager.Instance().HIGHLIGHT_DIMENSION_TEXT : this.mat);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: this.options.views };\n if(this.options.textUserData){\n text.userData = this.options.textUserData;\n }\n if(this.options.textRotation){\n text.rotateX(this.options.textRotation.x)\n text.rotateY(this.options.textRotation.y)\n text.rotateZ(this.options.textRotation.z)\n }\n if(this.options.textCloneUserData && this.options.textCloneUserData['rotation']){\n text.userData.rotation = this.options.textCloneUserData['rotation']\n }\n text.position.set( this.options.textPos.x, this.options.textPos.y, this.options.textPos.z);\n \n if(this.options.labelType === DIMENSION_LABEL_TYPE.BAY && this.options.bayNum !== undefined){\n let textCover = utils.getTextCover(textGeo, this.options.labelType, new Vector3(this.options.textPos.x, this.options.textPos.y, this.options.textPos.z), this.options.fitZ, this.options.bayNum);\n this.add(textCover);\n this.meshTextCover = textCover;\n } else {\n let textCover = utils.getTextCover(textGeo, this.options.labelType, new Vector3(this.options.textPos.x, this.options.textPos.y, this.options.textPos.z), this.options.fitZ);\n this.add(textCover);\n this.meshTextCover = textCover;\n }\n if(this.options.labelType === DIMENSION_LABEL_TYPE.BAY && this.options.bayNum !== undefined){\n const textGeoBayNo = new TextBufferGeometry(`#${this.options.bayNum + 1}`, this.options.textParameter);\n textGeoBayNo.center();\n\n let text = new Mesh(textGeoBayNo, this.mat);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: `#${this.options.bayNum + 1}`, views: [] };\n\n if(this.options.textRotation){\n text.rotateX(this.options.textRotation.x)\n text.rotateY(this.options.textRotation.y)\n text.rotateZ(this.options.textRotation.z)\n }\n if(this.options.textCloneUserData && this.options.textCloneUserData['rotation']){\n text.userData.rotation = this.options.textCloneUserData['rotation']\n }\n text.position.set( this.options.textPos.x, - this.options.textPos.y, this.options.textPos.z);\n\n this.meshBayNo = text\n this.add(this.meshBayNo);\n }\n if(this.options.subtype){\n cap1.userData['subtype'] = this.options.subtype;\n cap2.userData['subtype'] = this.options.subtype;\n line.userData['subtype'] = this.options.subtype;\n text.userData['subtype'] = this.options.subtype;\n }\n if(this.options.hasTextClone){\n let textClone = text.clone();\n textClone.userData = {...this.options.textCloneUserData, isTextClone: true};\n textClone.rotation.set( this.options.textCloneRotation.x, this.options.textCloneRotation.y, this.options.textCloneRotation.z);\n textClone.visible = this.options.textCloneVisible;\n this.meshTextClone = textClone;\n this.add(this.meshTextClone);\n }\n this.meshText = text;\n this.meshLine = line;\n this.meshCap1 = cap1;\n this.meshCap2 = cap2;\n\n this.add(this.meshText, this.meshLine, this.meshCap1, this.meshCap2);\n // this.add(text, line, cap1, cap2);\n this.addArrow();\n this.userData.groupType = this.options.labelType\n if(options.side != null && options.side != undefined){\n this.userData.side = options.side\n }\n if(options.bayNum !== undefined){\n this.userData.bayNum = options.bayNum\n }\n this.userData.views = this.options.views || []\n if(!this.options.visible){\n this.visible = this.options.visible\n }\n this.options.container.add(this);\n }\n \n update(options: AddDimensionOptions){\n this.options = options;\n if(this.options.axis === 'x'){\n this.meshCap1.position.setX( this.options.linePos.x - this.options.lineLength/2 );\n this.meshCap2.position.setX( this.options.linePos.x + this.options.lineLength/2 );\n this.meshCap1.position.setY(this.options.linePos.y);\n this.meshCap2.position.setY(this.options.linePos.y);\n }\n\n this.meshLine.scale.setX( this.options.lineLength / this.lineGeometry.length);\n this.meshLine.position.set( this.options.linePos.x, this.options.linePos.y, this.options.linePos.z)\n\n let textStr = utils.getDimensionValue(this.options.lineLength);\n const textGeo = new TextBufferGeometry(textStr, this.options.textParameter);\n textGeo.center();\n\n let text = new Mesh(textGeo, this.options.allowDrag ? MaterialManager.Instance().HIGHLIGHT_DIMENSION_TEXT : this.mat);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: textStr, views: this.options.views };\n if(this.options.textUserData){\n text.userData = this.options.textUserData;\n }\n if(this.options.textRotation){\n text.rotateX(this.options.textRotation.x)\n text.rotateY(this.options.textRotation.y)\n text.rotateZ(this.options.textRotation.z)\n }\n text.position.set( this.options.textPos.x, this.options.textPos.y, this.options.textPos.z);\n \n if(this.options.labelType === DIMENSION_LABEL_TYPE.BAY && this.options.bayNum !== undefined){\n let textCover = utils.getTextCover(textGeo, this.options.labelType, new Vector3(this.options.textPos.x, this.options.textPos.y, this.options.textPos.z), this.options.fitZ, this.options.bayNum);\n this.meshTextCover = textCover;\n } else {\n let textCover = utils.getTextCover(textGeo, this.options.labelType, new Vector3(this.options.textPos.x, this.options.textPos.y, this.options.textPos.z), this.options.fitZ);\n this.meshTextCover = textCover;\n }\n\n this.meshText = text;\n this.children = this.children.filter(el => el.userData.type != GEOMETRY_TYPE.DIMENSION_TEXT && el.userData.type != GEOMETRY_TYPE.TEXT_COVER);\n this.add(this.meshText, this.meshTextCover)\n\n if(this.options.labelType === DIMENSION_LABEL_TYPE.BAY && this.options.bayNum !== undefined){\n const textGeoBayNo = new TextBufferGeometry(`#${this.options.bayNum + 1}`, this.options.textParameter);\n textGeoBayNo.center();\n\n let text = new Mesh(textGeoBayNo, this.mat);\n text.userData = { type: GEOMETRY_TYPE.DIMENSION_TEXT, value: `#${this.options.bayNum + 1}`, views: [] };\n\n if(this.options.textRotation){\n text.rotateX(this.options.textRotation.x)\n text.rotateY(this.options.textRotation.y)\n text.rotateZ(this.options.textRotation.z)\n }\n if(this.options.textCloneUserData && this.options.textCloneUserData['rotation']){\n text.userData.rotation = this.options.textCloneUserData['rotation']\n }\n text.position.set( this.options.textPos.x, - this.options.textPos.y, this.options.textPos.z);\n\n this.meshBayNo = text\n this.add(this.meshBayNo);\n }\n\n if(this.options.hasTextClone){\n let textClone = text.clone();\n textClone.userData = {...this.options.textCloneUserData, isTextClone: true};\n textClone.rotation.set( this.options.textCloneRotation.x, this.options.textCloneRotation.y, this.options.textCloneRotation.z);\n textClone.visible = this.options.textCloneVisible;\n this.meshTextClone = textClone;\n this.children = this.children.filter(el => !el.userData.isTextClone);\n this.add(this.meshTextClone)\n }\n\n if(this.options.lineLength >= 300){\n this.meshArrow1.visible = true;\n this.meshArrow2.visible = true;\n } else {\n this.meshArrow1.visible = false;\n this.meshArrow2.visible = false;\n }\n\n if(this.options.axis === 'x'){\n this.meshArrow1.position.set( this.options.linePos.x - this.options.lineLength / 2, 0, 0);\n this.meshArrow2.position.set( this.options.linePos.x + this.options.lineLength / 2, 0, 0);\n this.meshArrow1.position.setY(this.options.linePos.y);\n this.meshArrow2.position.setY(this.options.linePos.y);\n }\n }\n\n onHover(intersects){\n // if(intersects.find(o => o.object.uuid === this.uuid)){\n // (this.material as MeshLambertMaterial).opacity = 1\n // HomeComponent.ins.renderStatic()\n // }\n // else{\n // // (this.material as MeshLambertMaterial).color = new Color('green')\n // //this.visible = false\n \n // (this.material as MeshLambertMaterial).opacity = 0\n // HomeComponent.ins.renderStatic()\n // }\n }\n onClick(intersects){\n // const obj = intersects.find(o => o.object.uuid === this.uuid)\n // if(obj){\n // HomeComponent.ins.dialogRakeCut.show(true, obj.object?.userData?.side)\n // }\n }\n\n addArrow(){\n let arrowLength = 150;\n let angle = 15;\n\n // if(this.options.lineLength < 300){\n // return ;\n // }\n \n let y = utils.tan(angle) * arrowLength;\n let shape1 = new Shape();\n shape1.moveTo(0, 0,);\n shape1.lineTo(arrowLength, y);\n shape1.lineTo(arrowLength, -y);\n shape1.closePath();\n const mat = MaterialManager.Instance().DIMENSION_TEXT.clone();\n \n let arrow1 = new Mesh(new ShapeBufferGeometry(shape1), mat);\n arrow1.userData = { views: this.options.views, type: GEOMETRY_TYPE.DIMENSION_CAP, dimType: this.options.labelType, right: true };\n let arrow2 = arrow1.clone();\n arrow2.rotateZ(Math.PI);\n arrow2.userData = { views: this.options.views, type: GEOMETRY_TYPE.DIMENSION_CAP, dimType: this.options.labelType, left: true};\n\n if( this.options.labelType === DIMENSION_LABEL_TYPE.BAY){\n arrow1.userData['bayNum'] = this.options.bayNum;\n arrow2.userData['bayNum'] = this.options.bayNum;\n }\n if(this.options.axis === 'x'){\n arrow1.position.set( this.options.linePos.x - this.options.lineLength / 2, 0, 0);\n arrow2.position.set( this.options.linePos.x + this.options.lineLength / 2, 0, 0);\n arrow1.position.setY(this.options.linePos.y);\n arrow2.position.setY(this.options.linePos.y);\n }\n\n if(this.options.allowDrag){\n mat.color = new Color('yellow');\n }\n if(this.options.subtype){\n arrow1.userData['subtype'] = this.options.subtype;\n arrow2.userData['subtype'] = this.options.subtype;\n }\n\n if(this.options.lineLength < 300){\n arrow1.visible = false;\n arrow2.visible = false;\n }\n\n this.meshArrow1 = arrow1;\n this.meshArrow2 = arrow2;\n\n this.add(this.meshArrow1, this.meshArrow2)\n // this.add(arrow1, arrow2)\n\n if(this.options.allowDrag){\n SelectionManager.ins.addEventListener('dragstart', this.options.onDragStartCallback, this.meshArrow1)\n SelectionManager.ins.addEventListener('dragstart', this.options.onDragStartCallback, this.meshArrow2)\n\n SelectionManager.ins.addEventListener('drag', this.options.onDragCallback, this.meshArrow1)\n SelectionManager.ins.addEventListener('drag', this.options.onDragCallback, this.meshArrow2)\n }\n }\n}","import { BoxBufferGeometry, Color, Mesh, MeshLambertMaterial, Object3D } from \"three\";\nimport { HIGHLIGHT_BOX_COLOR } from \"../app.config\";\nimport { BUILDING_SIDE, MOUSE_EVENT, OBJECT_TYPE } from \"../app.constants\";\nimport { HomeComponent } from \"../containers/home\";\nimport SelectionManager from \"../core/selection.manager\";\nimport { UI } from \"../core/ui\";\n\nexport default class HighLightBox extends Mesh {\n container: Object3D\n options: any\n mat: MeshLambertMaterial\n\n constructor(container, options: {\n min: {x: number, y: number, z: number},\n max: {x: number, y: number, z: number},\n userData: any\n }){\n const geo = new BoxBufferGeometry(100, 120, 100)\n geo.translate(0,50,0)\n const mat = new MeshLambertMaterial({ color: HIGHLIGHT_BOX_COLOR.GREEN, transparent: true, opacity: 0 })\n super(geo, mat)\n\n const width = options.max.x - options.min.x\n const _length = options.max.z - options.min.z\n const height = Math.abs(options.max.y - options.min.y)\n\n this.position.set(options.min.x + width/2, options.min.y, options.min.z + _length/2)\n this.scale.set(width/100, height / 120 > 0 ? height / 120 : 1, _length/100)\n \n\n this.userData = { ...options.userData, type: 'HIGHLIGHT_BOX' }\n container.add(this)\n\n SelectionManager.ins.addEventListener(MOUSE_EVENT.HOVER, (intersects) => {\n this.onHover(intersects)\n })\n SelectionManager.ins.addEventListener(MOUSE_EVENT.CLICK, (intersects) => {\n this.onClick(intersects)\n })\n\n this.mat = mat;\n this.container = container\n this.options = options\n }\n \n update(){\n this.position.set(this.options.x, this.options.y, this.options.z)\n }\n\n onHover(intersects){\n if(intersects.length == 0){\n if(!this.material || (this.material as MeshLambertMaterial).opacity == 0){\n return\n }\n }\n if(intersects.find(o => o.object.uuid === this.uuid)){\n if((this.material as MeshLambertMaterial).opacity == 1){\n return\n }\n (this.material as MeshLambertMaterial).opacity = 1\n HomeComponent.ins.renderStatic()\n }\n else{\n // (this.material as MeshLambertMaterial).color = new Color('green')\n //this.visible = false\n if((this.material as MeshLambertMaterial).opacity == 0){\n return\n }\n \n (this.material as MeshLambertMaterial).opacity = 0\n HomeComponent.ins.renderStatic()\n }\n }\n onClick(intersects){\n if(!UI.enableControl) {\n return\n }\n const obj = intersects.find(o => o.object.uuid === this.uuid)\n if(obj){\n if(obj.object?.userData?.side){\n HomeComponent.ins.dialogRakeCut.show(true, obj.object?.userData?.side)\n } else if (obj.object?.userData?.wallSide){\n HomeComponent.ins.dialogComfirm.show(true, obj.object?.userData?.wallSide)\n }\n }\n }\n}","import { Group, Mesh, MeshPhongMaterial, Vector3} from \"three\";\nimport { GEOMETRY_TYPE } from \"../app.config\";\nimport { GeometryInfo } from \"../core/models\";\n\nexport interface UpstandBraketOptions {\n container: Group, \n geoBraket_1: GeometryInfo, \n geoBraket_2: GeometryInfo, \n material: MeshPhongMaterial,\n height: number,\n position: Vector3,\n rotation?: Vector3,\n userData?: {}\n}\n\n\nexport default class UpstandBraket extends Group{\n options: UpstandBraketOptions\n\n static create(options: UpstandBraketOptions){\n return new UpstandBraket(options)\n }\n\n constructor(options: UpstandBraketOptions){\n super()\n this.options = options;\n let braket1 = new Mesh(this.options.geoBraket_1.geometry, this.options.material);\n braket1.translateZ(this.options.geoBraket_2.height / 4 + this.options.geoBraket_1.width / 2);\n braket1.scale.setY(this.options.height / this.options.geoBraket_1.length);\n this.add(braket1)\n\n let braket2 = new Mesh(this.options.geoBraket_2.geometry, this.options.material);\n this.add(braket2)\n\n this.position.set( this.options.position.x, this.options.position.y, this.options.position.z);\n if(this.options.userData){\n this.userData = this.options.userData;\n } else {\n this.userData = { type: GEOMETRY_TYPE.UPSTAND_BRAKET};\n }\n\n this.options.container.add(this);\n }\n}","import { Vector3, Object3D, MeshLambertMaterial, SpriteMaterial } from \"three\"\nimport { MaterialManager } from \"../core/material.manager\"\n\nexport default class BaseUIControlEntity{\n public size: Array\n public position: Array\n public container: Object3D\n public material: SpriteMaterial\n public rotation: Vector3\n public options\n public mesh: Object3D\n public visible = true;\n\n constructor(size: Array, position: Array, options, visible = true){\n this.size = size\n this.position = position\n this.container = options.container\n this.material = options.material ? options.material : MaterialManager.Instance().UI_CONTROL;\n this.rotation = options.rotation ? options.rotation : new Vector3;\n this.options = options\n this.visible = visible\n this.draw()\n }\n\n draw(){}\n}","import { Sprite } from \"three\"\nimport BaseUIControlEntity from \"./base.model\"\n\nexport class UIControl extends BaseUIControlEntity {\n draw(){\n this.mesh = new Sprite(this.material)\n this.mesh.userData = this.options.userData\n let scaleUniform = 1\n if(this.material.sizeAttenuation) {\n scaleUniform = 5000\n }\n\n this.mesh.scale.set(this.size[0] * scaleUniform, this.size[1] * scaleUniform, this.size[2] * scaleUniform)\n this.mesh.position.set(this.position[0], this.position[1], this.position[2])\n this.mesh.renderOrder = 0\n this.mesh.visible = this.visible\n this.container.add(this.mesh)\n }\n}","import { Injectable } from \"@angular/core\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { BehaviorSubject, Observable } from \"rxjs\";\nimport { map } from \"rxjs/operators\";\n\nimport { environment } from \"../../environments/environment\";\nimport { User } from \"../models\";\n\n@Injectable({ providedIn: \"root\" })\nexport class AuthenticationService {\n private currentUserSubject: BehaviorSubject;\n public currentUser: Observable;\n\n constructor(private http: HttpClient) {\n this.currentUserSubject = new BehaviorSubject(\n JSON.parse(localStorage.getItem(\"SPCUser\"))\n );\n this.currentUser = this.currentUserSubject.asObservable();\n }\n\n public get currentUserValue(): User {\n return this.currentUserSubject.value;\n }\n\n login(userName: string, password: string) {\n return this.http\n .post(`${environment.apiDbUrl}/auth/login`, {\n userName,\n password,\n })\n .pipe(\n map((user) => {\n // store user details and jwt token in local storage to keep user logged in between page refreshes\n localStorage.setItem(\"SPCUser\", JSON.stringify(user.data));\n this.currentUserSubject.next(user.data);\n return user;\n })\n );\n }\n\n logout() {\n // remove user from local storage to log user out\n localStorage.removeItem(\"SPCUser\");\n this.currentUserSubject.next(null);\n }\n}\n","import { Injectable } from \"@angular/core\";\nimport { Workbook } from \"exceljs\";\nimport * as fs from \"file-saver\";\n\n@Injectable({ providedIn: \"root\" })\nexport class ExcelService {\n exportExcel(dataSource, dataSourceTotal, jobNo, isShowPrice = false) {\n // const { dataSource, dataSourceTotal } = this.state;\n const _fileName = `${jobNo}-BOM.xlsx`;\n const workbook = new Workbook();\n const worksheet = workbook.addWorksheet(\"BOM\");\n\n // add column headers\n const _headerStyle = {\n font: { name: \"tahoma\" },\n // alignment: { vertical: \"middle\", horizontal: \"center\" },\n };\n const _headerWidth = 10;\n const _headerList = [\n {\n header: \"#\",\n key: \"idx\",\n width: _headerWidth,\n style: _headerStyle,\n },\n { header: \"Item No.\", key: \"itemNo\", width: 25, style: _headerStyle },\n { header: \"Qty\", key: \"qty\", width: _headerWidth, style: _headerStyle },\n {\n header: \"Length\",\n key: \"length\",\n width: _headerWidth,\n style: _headerStyle,\n },\n {\n header: \"Cut BK\",\n key: \"cutBk\",\n width: _headerWidth,\n style: _headerStyle,\n },\n { header: \"Dir\", key: \"dri\", width: _headerWidth, style: _headerStyle },\n {\n header: \"Description\",\n key: \"description\",\n width: 70,\n style: _headerStyle,\n },\n { header: \"UoM\", key: \"uom\", width: _headerWidth, style: _headerStyle },\n { header: \"Total UoM\", key: \"totalUom\", width: 20, style: _headerStyle },\n {\n header: \"Unit Price\",\n key: \"unitPrice\",\n width: 20,\n style: { ..._headerStyle, numFmt: '\"$\"#,##0.00;[Red]-\"$\"#,##0.00' },\n },\n {\n header: \"Price\",\n key: \"price\",\n width: 20,\n style: { ..._headerStyle, numFmt: '\"$\"#,##0.00;[Red]-\"$\"#,##0.00' },\n },\n ];\n worksheet.columns = _headerList;\n let rowHeader = worksheet.getRow(1);\n for (let i = 0; i < _headerList.length; i++) {\n const cell = rowHeader.getCell(_headerList[i].key);\n cell.fill = {\n type: \"pattern\",\n pattern: \"solid\",\n fgColor: { argb: \"2295ec\" },\n };\n cell.font = { bold: true };\n cell.alignment = { horizontal: \"center\" };\n cell.border = {\n top: { style: \"thin\" },\n left: { style: \"thin\" },\n bottom: { style: \"thin\" },\n right: { style: \"thin\" },\n };\n }\n // Add row using key mapping to columns\n dataSource.map((value, index) => {\n worksheet.addRow([\n value.idx,\n value.itemNo,\n value.qty,\n value.length,\n value.cutBk,\n value.dri,\n value.description,\n value.uom,\n value.totalUom,\n isShowPrice ? value.unitPrice : 0,\n isShowPrice ? value.price : 0,\n ]);\n if (value.isAdd) {\n const _row = worksheet.lastRow;\n _row.eachCell((cell) => {\n cell.fill = {\n type: \"pattern\",\n pattern: \"solid\",\n fgColor: { argb: \"CCFFCC\" },\n };\n });\n }\n });\n let _rowCount = dataSource.length + 1;\n const _totalPanelStyle = {\n font: { bold: true },\n numFmt: '\"$\"#,##0.00;[Red]-\"$\"#,##0.00',\n alignment: { horizontal: \"right\" },\n fill: {\n type: \"pattern\",\n pattern: \"solid\",\n fgColor: { argb: \"cbe8fb\" },\n },\n };\n dataSourceTotal.map((value, index) => {\n _rowCount++;\n const _newRow = worksheet.addRow({\n totalUom: value.description,\n price: value.price,\n });\n const _mergeRange = `I${_rowCount}:J${_rowCount}`;\n worksheet.mergeCells(_mergeRange);\n const _unitPricecell = _newRow.getCell(\"price\");\n const _totalUomcell = _newRow.getCell(\"totalUom\");\n if (_rowCount === dataSource.length + dataSourceTotal.length + 1) {\n _totalUomcell.font = {\n ..._totalPanelStyle.font,\n color: { argb: \"f00000\" },\n };\n _totalUomcell.numFmt = _totalPanelStyle.numFmt;\n _totalUomcell.alignment = { horizontal: \"right\" };\n _totalUomcell.fill = {\n type: \"pattern\",\n pattern: \"solid\",\n fgColor: { argb: \"cbe8fb\" },\n };\n _unitPricecell.style = _totalUomcell.style;\n } else {\n _totalUomcell.font = _totalPanelStyle.font;\n _totalUomcell.numFmt = _totalPanelStyle.numFmt;\n _totalUomcell.alignment = { horizontal: \"right\" };\n _totalUomcell.fill = {\n type: \"pattern\",\n pattern: \"solid\",\n fgColor: { argb: \"cbe8fb\" },\n };\n _unitPricecell.style = _totalUomcell.style;\n }\n });\n // save workbook to disk\n workbook.xlsx.writeBuffer().then((data: any) => {\n const blob = new Blob([data], {\n type: \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\",\n });\n fs.saveAs(blob, _fileName);\n });\n }\n}\n","export * from './authentication.service';\nexport * from './user.service';\nexport * from './printing.service';\nexport * from './job.service';\nexport * from './excel.service';\n","import { Injectable } from \"@angular/core\";\nimport { HttpClient } from \"@angular/common/http\";\nimport { map } from \"rxjs/operators\";\nimport { environment } from \"../../environments/environment\";\nimport { User } from \"../models\";\n\n@Injectable({ providedIn: \"root\" })\nexport class JobService {\n constructor(private http: HttpClient) {}\n\n getAll() {\n return this.http.get(`${environment.apiDbUrl}/users`);\n }\n createJob(info: any) {\n return this.http.post(`${environment.apiDbUrl}/job/add`, info).pipe(\n map((newJob) => {\n return newJob;\n })\n );\n }\n UpdateJob(id: any, info: any) {\n return this.http\n .put(`${environment.apiDbUrl}/job/edit/${id}`, info)\n .pipe(\n map((newJob) => {\n return newJob;\n })\n );\n }\n // getBOM(id: any) {\n // return this.http.get(`${environment.apiDbUrl}/job-bom?id=${id}`);\n // }\n getBOMById(id: any) {\n return this.http.get(\n `${environment.apiDbUrl}/job/get-bom-by-id?id=${id}`\n );\n }\n calcBOMByPara(info: any) {\n return this.http\n .post(`${environment.apiDbUrl}/job/calc-bom-by-para`, info)\n .pipe(\n map((jobInfo) => {\n return jobInfo;\n })\n );\n }\n\n calcRibSpanInfo(info: any) {\n return this.http\n .post(`${environment.apiDbUrl}/job/calc-rib-span-info`, info)\n .pipe(\n map((jobInfo) => {\n return jobInfo;\n })\n );\n }\n\n checkData(info: any) {\n return this.http\n .post(`${environment.apiDbUrl}/job/check-data`, info)\n .pipe(\n map((info) => {\n return info;\n })\n );\n }\n calcQuoteInfo(info: any) {\n return this.http\n .post(`${environment.apiDbUrl}/job/calc-quote-info`, info)\n .pipe(\n map((quoteInfo) => {\n return quoteInfo;\n })\n );\n }\n updateJobFiles(id: any, info: any) {\n return this.http\n .put(`${environment.apiDbUrl}/job/edit-files/${id}`, info)\n .pipe(\n map((rs) => {\n return rs;\n })\n );\n }\n getJobByUserId(info: any) {\n return this.http\n .post(`${environment.apiDbUrl}/job/get-by-user-id`, info)\n .pipe(\n map((jobInfo) => {\n return jobInfo;\n })\n );\n }\n genJobNo(info: any) {\n return this.http\n .post(`${environment.apiDbUrl}/job/gen-job-no`, info)\n .pipe(\n map((jobInfo) => {\n return jobInfo;\n })\n );\n }\n genJobNoRevised(info: any) {\n return this.http\n .post(`${environment.apiDbUrl}/job/gen-job-no-revised`, info)\n .pipe(\n map((jobInfo) => {\n return jobInfo;\n })\n );\n }\n getById(id: any) {\n return this.http.get(`${environment.apiDbUrl}/job/get-by-id?id=${id}`);\n }\n copyOrRevisedById(id: any, type: any) {\n return this.http.get(\n `${environment.apiDbUrl}/job/copy-revised-by-id?id=${id}&type=${type}`\n );\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { environment } from '../../environments/environment';\n\n@Injectable({ providedIn: \"root\" })\nexport class MaterialService {\n constructor(private http: HttpClient) { }\n\n getAll() {\n return this.http.get(`${environment.apiDbUrl}/material/list`);\n }\n}","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { environment } from '../../environments/environment';\n\n@Injectable({ providedIn: \"root\" })\nexport class PriceService {\n constructor(private http: HttpClient) { }\n\n public searchByQuery(group: string, description): Observable {\n return this.http.get(\n `${environment.apiDbUrl}/price/list-by-query?itemGroup=${group}&itemDescription=${description}`\n );\n }\n}","import { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { HttpClient } from '@angular/common/http';\nimport { environment } from 'src/environments/environment';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PrintingService {\n private baseUrl: string = `${environment.apiBaseUrl}/api/default`;\n private urlPrintPDF: string = `${this.baseUrl}/exportpdf`;\n \n \n\n constructor(private http: HttpClient) {\n\n }\n\n public printPDF(data: any): Observable {\n return this.http.post(this.urlPrintPDF, data);\n }\n// public getAll(): Observable{\n// return this.http.get(this.urlGetAll);\n// }\n// public getById(id: string): Observable{\n// return this.http.get(`${this.urlGetBuId}/${id}`);\n// }\n\n// public getJSON(url: string): Observable {\n// return this.http.get(url);\n// }\n}","import { HttpClient } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\n\nimport { map } from 'rxjs/operators';\nimport { environment } from '../../environments/environment';\n\n@Injectable({ providedIn: 'root' })\nexport class UserService {\n constructor(private http: HttpClient) { }\n\n updateCustomText(id: any, info: any) {\n return this.http\n .put(`${environment.apiDbUrl}/user/update-custom-text/${id}`, info)\n .pipe(\n map(ret => {\n return ret;\n })\n );\n }\n}","// The file contents for the current environment will overwrite these during build.\n// The build system defaults to the dev environment which uses `environment.ts`, but if you do\n// `ng build --env=prod` then `environment.prod.ts` will be used instead.\n// The list of which env maps to which file can be found in `.angular-cli.json`.\n\nexport const environment = {\n production: true,\n version: require(\"../../package.json\").version,\n modelBaseUrl: \".\",\n uploadFolder: \"superiorsoftware_api/upload/dataFiles\",\n mediaFolder: \"superiorsoftware_api/media\",\n // VPS\n // apiBaseUrl: \".\",\n // apiDbUrl: \"http://demo.superiorsoftware.net.au:8080/api\",\n // uploadUrl: \"http://demo.superiorsoftware.net.au:8080/upload/dataFiles\",\n // backendUrl: \"http://admin.superiorsoftware.net.au/\",\n // BUILD\n apiBaseUrl: \"https://patios.superiorsoftware.net.au\",\n apiDbUrl: \"https://patios.superiorsoftware.net.au:9999/api\",\n uploadUrl: \"https://patios.superiorsoftware.net.au:9999/upload/dataFiles\",\n backendUrl: \"https://admin.superiorsoftware.net.au/\",\n\n // DEMO\n // apiBaseUrl: \".\",\n // apiDbUrl: \"https://patios.superiorsoftware.net.au:8080/api\",\n // uploadUrl: \"https://patios.superiorsoftware.net.au:8080/upload/dataFiles\",\n // backendUrl: \"https://admin.superiorsoftware.net.au/\",\n // Local\n // apiBaseUrl: \"http://localhost:5000\",\n // apiDbUrl: \"http://127.0.0.1:8080/api\",\n // uploadUrl: \"http://127.0.0.1:8080/upload/dataFiles\",\n // backendUrl: \"http://localhost:3000/\",\n};\n","import { enableProdMode, ViewEncapsulation } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule, [{\n defaultEncapsulation: ViewEncapsulation.None\n}]).catch(err => console.log(err));\n","/* (ignored) */"]}
\n Quote Includes\n

{{ currentQuoteInfo.quoteInfo.note }}

\n