public static function add($object)
 {
     // ADD LOAD CASE
     \Classes\Factory\Model\Model::addInstance($object);
     //GET MASS MATRIX TABLE
     $massTable = \Classes\Factory\Model\Model::getMassMatrixTable();
     $masses = json_decode($object->getProperty('masses')->get(), TRUE);
     if (!empty($masses)) {
         $connection = new \Classes\Factory\Connection\MassMatrixConnection\MassMatrixConnection($masses);
         $massTable->setConnection($object->getUin(), $connection);
     }
 }
 public static function add($object)
 {
     // NODE 1
     $node1 = new \Classes\Instance\Node\Node();
     $node1->setProperty('x', $object->getProperty('x1'));
     $node1->setProperty('y', $object->getProperty('y1'));
     $node1->setProperty('z', $object->getProperty('z1'));
     // NODE 2
     $node2 = new \Classes\Instance\Node\Node();
     $node2->setProperty('x', $object->getProperty('x2'));
     $node2->setProperty('y', $object->getProperty('y2'));
     $node2->setProperty('z', $object->getProperty('z2'));
     // MEMBER
     $member = new \Classes\Instance\Member\Member();
     $member->setProperty('betaAngle', $object->getProperty('betaAngle'));
     $member->setProperty('isDivided', $object->getProperty('isDivided'));
     $member->setProperty('name', $object->getProperty('name'));
     // SECTION
     $sectionString = NULL;
     if (\Classes\Utils\Section\Steel\SectionType::steelProfile($sectionString, $object->getProperty('sectionType')->get(), $object->getProperty('sectionName')->get())) {
         $section = new \Classes\Value\StringValue($sectionString);
         //            var_dump($sectionString);
         $member->setProperty('section', $section);
     }
     // ADD TO MODEL
     \Classes\Factory\Model\Model::addInstance($node1);
     \Classes\Factory\Model\Model::addInstance($node2);
     \Classes\Factory\Model\Model::addInstance($member);
     // PINS
     $pin1 = new \Classes\Factory\Connection\SixFreedomConnection\PinConnection($object->getProperty('pin1')->get());
     $pin2 = new \Classes\Factory\Connection\SixFreedomConnection\PinConnection($object->getProperty('pin2')->get());
     // ADD TO HASH TABLE
     $hashTable = \Classes\Factory\Model\Model::getHashTable();
     $hashTable->setConnection($node1->getUin(), $member->getUin(), $pin1);
     $hashTable->setConnection($node2->getUin(), $member->getUin(), $pin2);
     // MAKE CHECK GROUP FOR STEEL MEMBER
     $group = new \Classes\Instance\Group\SteelMember\SteelMemberCheckGroup();
     $group->setProperty('steel', $object->getProperty('steel'));
     $group->setProperty('Ry', $object->getProperty('Ry'));
     $group->setProperty('muXZ', $object->getProperty('muXZ'));
     $group->setProperty('muXY', $object->getProperty('muXY'));
     $group->setProperty('gammaC', $object->getProperty('gammaC'));
     $group->setProperty('FC', $object->getProperty('FC'));
     $group->setProperty('name', $object->getProperty('name'));
     // CREATE LISTBOX
     $memberList = new \Classes\Listbox\Listbox(\Classes\Factory\Model\Model::getMemberActionCollection());
     $memberList->add($member->getUin());
     // ADD LISTBOX TO GROUP
     $group->setProperty('listbox', $memberList);
     // ADD GROUP TO MODEL
     \Classes\Factory\Model\Model::addInstance($group);
 }
 public static function divideMemberByNode($memberUin, $nodeUin)
 {
     // Get nodes and members
     $nodes = \Classes\Factory\Model\Model::getNodes();
     $members = \Classes\Factory\Model\Model::getMembers();
     $hashTable = \Classes\Factory\Model\Model::getHashTable();
     // TODO isDivided
     //Check are node and member exist or not
     if (!isset($nodes[$nodeUin]) || !isset($members[$memberUin])) {
         return FALSE;
     }
     // Check if member is divided
     if ($members[$memberUin]->getProperty('isDivided')->get() == FALSE) {
         return FALSE;
     }
     // Get 2nd connection from oldMember
     $hash = $hashTable->getConnection($memberUin);
     $uin2 = array_keys($hash)[1];
     $con2 = array_values($hash)[1];
     // Create zero Pin connection
     $zeroPin = new \Classes\Factory\Connection\SixFreedomConnection\PinConnection();
     // Remove 2nd connection from oldMember
     $hashTable->removeConnection($memberUin, $uin2);
     // Set 2nd connection to oldMember
     $hashTable->setConnection($memberUin, $nodeUin, $zeroPin);
     // Create newMember same as oldMember
     $newMember = clone $members[$memberUin];
     //        echo "<br/>";
     //        echo "DIVIDE MEMBER $memberUin<br/>";
     //        echo "BY NODE $nodeUin<br/>";
     //        echo "NEW MEMBER " . $newMember->getUin() . "<br/>";
     //        echo "<br/>";
     //Add member to Model
     \Classes\Factory\Model\Model::addInstance($newMember);
     // Set 1st connection to newMember
     $hashTable->setConnection($newMember->getUin(), $nodeUin, $zeroPin);
     // Set 2nd connection to newMember
     $hashTable->setConnection($newMember->getUin(), $uin2, $con2);
     // Add information about operation in ListBoxCollection
     $actionCollection = \Classes\Factory\Model\Model::getMemberActionCollection();
     $actionCollection->addAction(new \Classes\Listbox\Action\ReplaceListboxAction($memberUin, array($memberUin, $newMember->getUin())));
     return $newMember->getUin();
 }
 /**
  * Sets up the fixture, for example, opens a network connection.
  * This method is called before a test is executed.
  */
 protected function setUp()
 {
     // NODE 1
     $node1 = new \Classes\Instance\Node\Node();
     $this->node1Uin = $node1->getUin();
     $node1->setProperty('x', new \Classes\Value\FloatValue(0));
     $node1->setProperty('y', new \Classes\Value\FloatValue(3));
     $node1->setProperty('z', new \Classes\Value\FloatValue(0));
     // NODE 2
     $node2 = new \Classes\Instance\Node\Node();
     $this->node2Uin = $node2->getUin();
     $node2->setProperty('x', new \Classes\Value\FloatValue(0));
     $node2->setProperty('y', new \Classes\Value\FloatValue(3));
     $node2->setProperty('z', new \Classes\Value\FloatValue(5));
     // NODE 3
     $node3 = new \Classes\Instance\Node\Node();
     $this->node3Uin = $node3->getUin();
     $node3->setProperty('x', new \Classes\Value\FloatValue(0));
     $node3->setProperty('y', new \Classes\Value\FloatValue(0));
     $node3->setProperty('z', new \Classes\Value\FloatValue(0.5));
     // MEMBER
     $member1 = new \Classes\Instance\Member\Member();
     $member1->setProperty('isDivided', new \Classes\Value\IntValue(1));
     $this->member1Uin = $member1->getUin();
     // ADD TO MODEL
     \Classes\Factory\Model\Model::addInstance($node1);
     \Classes\Factory\Model\Model::addInstance($node2);
     \Classes\Factory\Model\Model::addInstance($node3);
     \Classes\Factory\Model\Model::addInstance($member1);
     // PINS
     $pin1 = new \Classes\Factory\Connection\SixFreedomConnection\PinConnection('000011');
     $pin2 = new \Classes\Factory\Connection\SixFreedomConnection\PinConnection('000111');
     // ADD TO HASH TABLE
     $hashTable = \Classes\Factory\Model\Model::getHashTable();
     $hashTable->setConnection($this->node1Uin, $this->member1Uin, $pin1);
     $hashTable->setConnection($this->node2Uin, $this->member1Uin, $pin2);
 }
 public static function add($object)
 {
     // NODE 1
     $node1 = new \Classes\Instance\Node\Node();
     $node1->setProperty('x', $object->getProperty('x1'));
     $node1->setProperty('y', $object->getProperty('y1'));
     $node1->setProperty('z', $object->getProperty('z1'));
     // NODE 2
     $node2 = new \Classes\Instance\Node\Node();
     $node2->setProperty('x', $object->getProperty('x2'));
     $node2->setProperty('y', $object->getProperty('y2'));
     $node2->setProperty('z', $object->getProperty('z2'));
     // MEMBER
     $member = new \Classes\Instance\Member\Member();
     $member->setProperty('betaAngle', $object->getProperty('betaAngle'));
     $member->setProperty('isDivided', $object->getProperty('isDivided'));
     $member->setProperty('name', $object->getProperty('name'));
     // SECTION
     $sectionString = NULL;
     if (\Classes\Utils\Section\Parameter\SectionType::parameterSectionName($sectionString, $object->getProperty('E')->get(), $object->getProperty('nu')->get(), $object->getProperty('density')->get(), $object->getProperty('tmp')->get(), $object->getProperty('sectionType')->get(), $object->getProperty('sectionProperty')->get())) {
         $section = new \Classes\Value\StringValue($sectionString);
         //            var_dump($sectionString);
         $member->setProperty('section', $section);
     }
     // ADD TO MODEL
     \Classes\Factory\Model\Model::addInstance($node1);
     \Classes\Factory\Model\Model::addInstance($node2);
     \Classes\Factory\Model\Model::addInstance($member);
     // PINS
     $pin1 = new \Classes\Factory\Connection\SixFreedomConnection\PinConnection($object->getProperty('pin1')->get());
     $pin2 = new \Classes\Factory\Connection\SixFreedomConnection\PinConnection($object->getProperty('pin2')->get());
     // ADD TO HASH TABLE
     $hashTable = \Classes\Factory\Model\Model::getHashTable();
     $hashTable->setConnection($node1->getUin(), $member->getUin(), $pin1);
     $hashTable->setConnection($node2->getUin(), $member->getUin(), $pin2);
 }
 public static function add($object, &$notFoundObjects)
 {
     // get OBJECT
     self::$object = $object;
     // Get NODES, MEMBERS
     self::$nodes = \Classes\Factory\Model\Model::getNodes();
     self::$members = \Classes\Factory\Model\Model::getMembers();
     //Get TABLES
     self::$hashTable = \Classes\Factory\Model\Model::getHashTable();
     self::$loadTable = \Classes\Factory\Model\Model::getLoadTable();
     // Set FOUND to FALSE
     self::$isFound = FALSE;
     self::$loads = array();
     self::$notFoundObject = array();
     //Get Properties
     self::$loadCase = $object->getProperty('loadCase');
     self::$name = $object->getProperty('name');
     $isDirectionCorrect = \Classes\Utils\Load\LoadDirection::get(self::$direction, $object->getProperty('direction')->get());
     if (!$isDirectionCorrect) {
         throw new \Classes\Exception\Factory\Model\Addition\MemberLoadAddition\IncorrectDirectionException('Incorrect Load Direction');
     }
     // Make direction Property
     self::$direction = new \Classes\Value\IntValue(self::$direction);
     self::$x1 = $object->getProperty('x1');
     self::$y1 = $object->getProperty('y1');
     self::$z1 = $object->getProperty('z1');
     self::$value1 = $object->getProperty('value1');
     // Check type of load
     $type = $object->getProperty('type')->get();
     // Load type isn't correct
     if ($type != "C" && $type != "D") {
         throw new \Classes\Exception\Factory\Model\Addition\MemberLoadAddition\IncorrectTypeException('Incorrect Load Type');
     }
     if ($type == "C") {
         // If $object will not be found
         // $object itself will be returned
         self::$notFoundObject = array(self::$object);
         // TRY TO APPLY TO NODE
         self::addNodeConcentratedLoad();
         // TRY TO APPLY TO MEMBER
         if (!self::$isFound) {
             self::addMemberConcentratedLoad();
         }
     }
     if ($type == "D") {
         self::addmemberDistributedLoad();
     }
     foreach (self::$loads as $load) {
         // Set Properties
         $load->setProperty('loadCase', self::$loadCase);
         $load->setProperty('name', self::$name);
         $load->setProperty('direction', self::$direction);
         // Add to model
         \Classes\Factory\Model\Model::addInstance($load);
     }
     // If $object is NOT applied
     if (!self::$isFound) {
         // Return not found objects
         $notFoundObjects = self::$notFoundObject;
         return FALSE;
     }
     return TRUE;
 }
 private static function setLoadProperties($load)
 {
     // Set Properties
     $load->setProperty('loadCase', self::$loadCase);
     $load->setProperty('name', self::$name);
     $load->setProperty('direction', self::$direction);
     // Add to model
     \Classes\Factory\Model\Model::addInstance($load);
 }