private static function addMemberConcentratedLoad() { // Prepare Load Point $loadPoint = new \Classes\Utils\AbstractInstance\Point(self::$x1->get(), self::$y1->get(), self::$z1->get()); // Try to find member with necessary coordinates $i = 0; $members = array_values(self::$members); while ($i < count($members) && self::$isFound === FALSE) { $member = $members[$i]; $connections = array_keys(self::$hashTable->getConnection($member->getUin())); $node1 = self::$nodes[$connections[0]]; $node2 = self::$nodes[$connections[1]]; // Prepare Node Point $node1Point = new \Classes\Utils\AbstractInstance\Point($node1->getProperty('x')->get(), $node1->getProperty('y')->get(), $node1->getProperty('z')->get()); $node2Point = new \Classes\Utils\AbstractInstance\Point($node2->getProperty('x')->get(), $node2->getProperty('y')->get(), $node2->getProperty('z')->get()); // Prepare Line $line = new \Classes\Utils\AbstractInstance\Line($node1Point, $node2Point); // if ($node1Point->x == 2.0 && $node1Point->y == 2.6 && $node1Point->z == 15.0 && // $node2Point->x == 2.6 && $node2Point->y == 2.0 && $node2Point->z == 15.0) { // echo "HERE<br/>"; // } // Compare coordinates if (\Classes\Utils\Math\Points::isPointOnLine($loadPoint, $line) == 3) { self::$isFound = TRUE; // Make new node load $load = new \Classes\Instance\Load\Member\ConcenratedMemberLoad(); $position = new \Classes\Value\FloatValue(\Classes\Utils\Math\Points::twoPointsDistance($node1Point, $loadPoint)); // Set Properties $load->setProperty('value', self::$value1); $load->setProperty('position', $position); // Add connection self::$loadTable->setConnection($load->getUin(), $member->getUin(), new \Classes\Factory\Connection\LoadConnection\GlobalCoordinateSystem()); // Add new load to array self::$loads[] = $load; } else { // If $object is NOT found, $object itself must be returned self::$notFoundObject = array(self::$object); } $i++; } }
private static function addConcentratedCommonMemberLoad($node, $commonMemberLoad, $actualMemberUins) { $isFound = FALSE; // Check if concentrated load is placed on Node or Member if (!is_null(self::$hashTable->getConnection($node->getUIn()))) { // This is nodal load $isFound = TRUE; // Make new node load $load = new \Classes\Instance\Load\Node\NodeLoad(); // Set Properties $load->setProperty('value', self::$value1); // Add connection self::$loadTable->setConnection($load->getUin(), $node->getUin(), new \Classes\Factory\Connection\LoadConnection\GlobalCoordinateSystem()); } else { // This is load on member // Prepare Load Point $loadPoint = new \Classes\Utils\AbstractInstance\Point(self::$x1->get(), self::$y1->get(), self::$z1->get()); // Try to find member with necessary coordinates while ((list($memberUin, $memberEndNumber) = each($actualMemberUins)) && $isFound === FALSE) { $connections = array_keys(self::$hashTable->getConnection($memberUin)); $node1 = self::$nodes[$connections[0]]; $node2 = self::$nodes[$connections[1]]; // Prepare Node Point $node1Point = new \Classes\Utils\AbstractInstance\Point($node1->getProperty('x')->get(), $node1->getProperty('y')->get(), $node1->getProperty('z')->get()); $node2Point = new \Classes\Utils\AbstractInstance\Point($node2->getProperty('x')->get(), $node2->getProperty('y')->get(), $node2->getProperty('z')->get()); // Prepare Line $line = new \Classes\Utils\AbstractInstance\Line($node1Point, $node2Point); // Compare coordinates if (\Classes\Utils\Math\Points::isPointOnLine($loadPoint, $line) == 3) { $isFound = TRUE; // Make new node load $load = new \Classes\Instance\Load\Member\ConcenratedMemberLoad(); $position = new \Classes\Value\FloatValue(\Classes\Utils\Math\Points::twoPointsDistance($node1Point, $loadPoint)); // Set Properties $load->setProperty('value', self::$value1); $load->setProperty('position', $position); // Add connection self::$loadTable->setConnection($load->getUin(), $memberUin, new \Classes\Factory\Connection\LoadConnection\GlobalCoordinateSystem()); } } } // If Load has been found, add properties and add to Model if ($isFound) { self::setLoadProperties($load); } else { self::$notFoundObjects[] = $commonMemberLoad->getUin(); } return $isFound; }