function doExecute(\Classes\Controller\Controller\Request $request)
 {
     \Classes\Utils\Timer\Timer::start('DIVIDE_ALL_MEMBERS');
     \Classes\Utils\Member\DivideMember::divideAllMembersByExistingNodes();
     \Classes\Utils\Timer\Timer::stop('DIVIDE_ALL_MEMBERS');
     $request->addFeedback(\Classes\Utils\Timer\Timer::show('DIVIDE_ALL_MEMBERS'));
     include \Classes\Controller\Util\Utils::createViewName('divideAllMemberByExistingNodes');
 }
 function doExecute(\Classes\Controller\Controller\Request $request)
 {
     \Classes\Utils\Timer\Timer::start('COMBINE_DOUBLE_NODES');
     \Classes\Utils\Node\DoubleNodes::combineAll(array(\Classes\Factory\Model\Model::getHashTable()));
     \Classes\Utils\Timer\Timer::stop('COMBINE_DOUBLE_NODES');
     $request->addFeedback(\Classes\Utils\Timer\Timer::show('COMBINE_DOUBLE_NODES'));
     include \Classes\Controller\Util\Utils::createViewName('combineDoubleNodes');
 }
 function doExecute(\Classes\Controller\Controller\Request $request)
 {
     \Classes\Utils\Timer\Timer::start('LOADS_UPLOAD');
     // Получаем переменные
     $filename = $request->getProperty('filename');
     $uploadFactory = new \Classes\Factory\Import\Instance\InstanceUploaderFromExcel();
     $objectArray = $uploadFactory->upload($filename, new \Classes\Instance\Load\Member\CommonMemberLoad());
     $notFoundObjects = \Classes\Factory\Model\Addition\MemberLoadAddition::add($objectArray);
     $request->addFeedback($notFoundObjects);
     \Classes\Utils\Timer\Timer::stop('LOADS_UPLOAD');
     $request->addFeedback(\Classes\Utils\Timer\Timer::show('LOADS_UPLOAD'));
     include \Classes\Controller\Util\Utils::createViewName('importCommonMemberLoadsFromExcel');
 }
 function doExecute(\Classes\Controller\Controller\Request $request)
 {
     \Classes\Utils\Timer\Timer::start('PARAMETER_MEMBER_UPLOAD');
     // Получаем переменные
     $filename = $request->getProperty('filename');
     $uploadFactory = new \Classes\Factory\Import\Instance\InstanceUploaderFromExcel();
     $objectArray = $uploadFactory->upload($filename, new \Classes\Instance\Member\ParameterMember());
     foreach ($objectArray as &$object) {
         \Classes\Factory\Model\Addition\ParameterMemberAddition::add($object);
     }
     \Classes\Utils\Timer\Timer::stop('PARAMETER_MEMBER_UPLOAD');
     $request->addFeedback(\Classes\Utils\Timer\Timer::show('PARAMETER_MEMBER_UPLOAD'));
     include \Classes\Controller\Util\Utils::createViewName('importParameterMembersFromExcel');
 }
 function doExecute(\Classes\Controller\Controller\Request $request)
 {
     \Classes\Utils\Timer\Timer::start('MODEL_EXPORT');
     // Получаем переменные
     $filename = $request->getProperty('filename');
     $path = \Classes\Controller\Util\Utils::tempPath() . DIRECTORY_SEPARATOR . $filename;
     // NUMERATION
     \Classes\Utils\Member\Numeration::numerateFromOne();
     \Classes\Utils\Node\Numeration::numerateFromOne();
     // EXPORT
     \Classes\Factory\Export\Scad21ExportFactory::export($path);
     \Classes\Utils\Timer\Timer::stop('MODEL_EXPORT');
     $request->addFeedback(\Classes\Utils\Timer\Timer::show('MODEL_EXPORT'));
     include \Classes\Controller\Util\Utils::createViewName('exportModelToScad21');
 }
 public static function divideAllMembersByExistingNodes()
 {
     // SORT NODES
     \Classes\Utils\Timer\Timer::start('SORT_NODES');
     \Classes\Factory\Model\Model::sortNodes();
     \Classes\Utils\Timer\Timer::start('SORT_NODES');
     // Get nodes and members
     $nodes = \Classes\Factory\Model\Model::getNodes();
     $hashTable = \Classes\Factory\Model\Model::getHashTable();
     // Array [uin] => [0 - 1st point, 1 - 2nd point]
     $actualMemberUins = array();
     foreach ($nodes as $node) {
         // Get $node coordinates
         $point = \Classes\Utils\AbstractInstance\Point::createFromNode($node);
         $nodeUin = $node->getUin();
         $connections = $hashTable->getConnection($nodeUin);
         //            echo "NODE (" . $node->getProperty('x')->get() . ", " .
         //                            $node->getProperty('y')->get() . ", " .
         //                            $node->getProperty('z')->get() . ")   ";
         //
         //            echo "ACTUAL MEMBERS COUNT = " . count($actualMemberUins) . "<br/>";
         //            echo "CONNECTIONS: " . implode('; ', array_keys($connections)) . "<br/>";
         //Change $actualMemberUins array
         if (count($connections) > 0) {
             foreach ($connections as $uin => $c) {
                 // Here $uin is uin of member connected with node
                 if (isset($actualMemberUins[$uin])) {
                     // If member is already included in $actualMemberUins -> delete it
                     unset($actualMemberUins[$uin]);
                 } else {
                     // If member is NOT included in $actualMemberUins -> add it
                     $keys = array_keys($hashTable->getConnection($uin));
                     $endNumber = array_search($nodeUin, $keys);
                     $actualMemberUins[$uin] = $endNumber;
                 }
             }
         }
         // Divide $actualMemberUins by $node
         foreach ($actualMemberUins as $memberUin => $endNumber) {
             //                var_dump($actualMemberUins);
             // Get coordinates of members' ends
             $memberEndUins = array_keys($hashTable->getConnection($memberUin));
             $node1 = $nodes[$memberEndUins[0]];
             $node2 = $nodes[$memberEndUins[1]];
             $line = \Classes\Utils\AbstractInstance\Line::createFromTwoNodes($node1, $node2);
             // If point is inside line
             if (\Classes\Utils\Math\Points::isPointOnLine($point, $line) == 3) {
                 // Divide member by node
                 $newMemberUin = self::divideMemberByNode($memberUin, $nodeUin);
                 // If intersection found AND member's begin before sweep line
                 if ($newMemberUin != FALSE && $endNumber == 0) {
                     // Delete old member from actual array
                     unset($actualMemberUins[$memberUin]);
                     // Add new member to actual array (member's begin also before sweep line)
                     $actualMemberUins[$newMemberUin] = 0;
                 }
                 // If intersection found AND member's begin after sweep line
                 // it's necessary to do nothing, because divided member is
                 // still located after sweep line
             }
         }
     }
 }
Example #7
0
 // UPLOAD STEEL MEMBERS
 Classes\Utils\Timer\Timer::start('STEEL_MEMBER_UPLOAD');
 $uploadFactory = new \Classes\Factory\Import\Instance\InstanceUploaderFromExcel();
 $steelMemberArray = $uploadFactory->upload('./Source/Excel/Small_Model/Members.xlsx', new \Classes\Instance\Member\SteelMember());
 foreach ($steelMemberArray as &$object) {
     Classes\Factory\Model\Addition\SteelMemberAddition::add($object);
 }
 Classes\Utils\Timer\Timer::stop('STEEL_MEMBER_UPLOAD');
 // DELETE DOUBLE NODES
 \Classes\Utils\Timer\Timer::start('COMBINE_DOUBLE_NODES');
 \Classes\Utils\Node\DoubleNodes::combineAll(array(Classes\Factory\Model\Model::getHashTable()));
 \Classes\Utils\Timer\Timer::stop('COMBINE_DOUBLE_NODES');
 // DIVIDE MEMBERS BY NODES
 \Classes\Utils\Timer\Timer::start('DIVIDE_ALL_MEMBERS');
 \Classes\Utils\Member\DivideMember::divideAllMembersByExistingNodes();
 \Classes\Utils\Timer\Timer::stop('DIVIDE_ALL_MEMBERS');
 // UPLOAD LOAD CASES
 Classes\Utils\Timer\Timer::start('LOAD_CASES_UPLOAD');
 $loadCaseArray = $uploadFactory->upload('./Source/Excel/Small_Model/Load Cases.xlsx', new \Classes\Instance\LoadCase\LoadCase());
 foreach ($loadCaseArray as $object) {
     Classes\Factory\Model\Addition\LoadCaseAddition::add($object);
 }
 Classes\Utils\Timer\Timer::stop('LOAD_CASES_UPLOAD');
 // UPLOAD LOADS
 Classes\Utils\Timer\Timer::start('LOADS_UPLOAD');
 $memberLoadArray = $uploadFactory->upload('./Source/Excel/Small_Model/Loads.xlsx', new \Classes\Instance\Load\Member\CommonMemberLoad());
 $notFoundObjects = Classes\Factory\Model\Addition\MemberLoadAddition::add($memberLoadArray);
 foreach ($notFoundObjects as $object) {
     $name = $object->getProperty('name')->get();
     echo "LOAD {$name} IS NOT FOUND<br/>";
 }