public static function add($object) { // GET NODES $nodes = array_values(\Classes\Factory\Model\Model::getNodes()); //GET RESTRAINT TABLE $resTable = \Classes\Factory\Model\Model::getRestraintTable(); // RESTRAINT $restraint = new \Classes\Factory\Connection\SixFreedomConnection\RestraintConnection($object->getProperty('fix')->get()); // RESTRAINT POINT $resPoint = new \Classes\Utils\AbstractInstance\Point($object->getProperty('x')->get(), $object->getProperty('y')->get(), $object->getProperty('z')->get()); // TRY TO FIND NODE FOR RESTRAINT'S APPLICATION $isFound = FALSE; $i = 0; while ($isFound === FALSE && $i < count($nodes)) { $node = $nodes[$i]; // NODE POINT $nodePoint = new \Classes\Utils\AbstractInstance\Point($node->getProperty('x')->get(), $node->getProperty('y')->get(), $node->getProperty('z')->get()); if (\Classes\Utils\Math\Points::isPointSame($nodePoint, $resPoint)) { // ADD CONNECTION $resTable->setConnection($node->getUin(), $restraint); $isFound = TRUE; } $i++; } }
protected function add($uin, $object) { $data = ''; // ID $data .= pack('S', $object->getProperty('id')->get()); // NAME $name = ''; $data .= pack('S', $this->prepareString($object->getProperty('name')->get(), $name)); $data .= $name; // DESCRIPTION $description = ''; $data .= pack('S', $this->prepareString($object->getProperty('description')->get(), $description)); $data .= $description; // MASS MATRIX COEFFICIENTS $connection = \Classes\Factory\Model\Model::getMassMatrixTable()->getConnection($uin); if (is_null($connection)) { // Write count of coefficients = 0 $data .= pack('S', 0); } else { // Write count of coefficients $data .= pack('S', count($connection->get())); // Write coefficients foreach ($connection->get() as $loadCaseID => $factor) { $data .= pack('S', $loadCaseID); $data .= pack('d', $factor); } } return $data; }
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'); }
static function numerateFromOne() { $members = \Classes\Factory\Model\Model::getMembers(); $id = 1; foreach ($members as $member) { $member->setProperty('id', new \Classes\Value\IntValue($id)); $id++; } }
static function numerateFromOne() { $nodes = \Classes\Factory\Model\Model::getNodes(); $id = 1; foreach ($nodes as $node) { $node->setProperty('id', new \Classes\Value\IntValue($id)); $id++; } }
protected function add($uin, $object) { $data = ''; // ID $id = \Classes\Factory\Model\Model::getNodes()[$uin]->getProperty('id')->get(); $data .= pack('I', $id); // RESTRAINT $data .= pack('S', $object->get()); return $data; }
public static function export($path) { self::$members = \Classes\Factory\Model\Model::getMembers(); self::$steelMemberCheckGroups = \Classes\Factory\Model\Model::getSteelMemberCheckGroups(); // START self::$array = array(); //EXPORT self::steelMemberCheckGroupsExport(); file_put_contents($path, json_encode(self::$array)); }
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); }
protected function add($uin, $object) { // Load information array $loadInfoArray = array(); // Get information about Instance where Load is connected $connectionArray = \Classes\Factory\Model\Model::getLoadTable()->getConnection($uin); // COORDINATE SYSTEM $coordinateSystem = reset($connectionArray)->get(); // TARGET UIN $instanceTargetUin = key($connectionArray); // NODE LOAD if ($object instanceof \Classes\Instance\Load\Node\NodeLoad) { $id = \Classes\Factory\Model\Model::getNodes()[$instanceTargetUin]->getProperty('id')->get(); $loadType = 0; $loadInfoArray[] = $object->getProperty('value')->get(); } // CONCENTRATED MEMBER LOAD if ($object instanceof \Classes\Instance\Load\Member\ConcenratedMemberLoad) { $id = \Classes\Factory\Model\Model::getMembers()[$instanceTargetUin]->getProperty('id')->get(); $loadType = 1; $loadInfoArray[] = $object->getProperty('value')->get(); $loadInfoArray[] = $object->getProperty('position')->get(); } // DISTRIBUTED MEMBER LOAD if ($object instanceof \Classes\Instance\Load\Member\DistributedMemberLoad) { $id = \Classes\Factory\Model\Model::getMembers()[$instanceTargetUin]->getProperty('id')->get(); $loadType = 2; $loadInfoArray[] = $object->getProperty('value1')->get(); $loadInfoArray[] = $object->getProperty('position1')->get(); $loadInfoArray[] = $object->getProperty('value2')->get(); $loadInfoArray[] = $object->getProperty('position2')->get(); } $data = ''; // LOAD CASE $data .= pack('S', $object->getProperty('loadCase')->get()); // ID $data .= pack('I', $id); // LOAD TYPE $data .= pack('S', $loadType); // COORDINATE SYSTEM $data .= pack('S', $coordinateSystem); // DIRECTION $data .= pack('S', $object->getProperty('direction')->get()); // LOAD INFORMATION $data .= pack('S', count($loadInfoArray)); foreach ($loadInfoArray as $value) { $data .= pack('d', $value); } return $data; }
/** * @covers Classes\Utils\Member\DivideMember::divideMemberByNode * @todo Implement testDivideMemberByNode(). */ public function testDivideMemberByNode() { $result = DivideMember::divideMemberByNode($this->member1Uin, $this->node3Uin); $this->assertNotSame($result, FALSE); if ($result != FALSE) { $this->member2Uin = $result; } // Get Hash Table $hashTable = \Classes\Factory\Model\Model::getHashTable(); // PINS $pin0 = new \Classes\Factory\Connection\SixFreedomConnection\PinConnection('000000'); $pin1 = new \Classes\Factory\Connection\SixFreedomConnection\PinConnection('000011'); $pin2 = new \Classes\Factory\Connection\SixFreedomConnection\PinConnection('000111'); $this->assertNotSame($hashTable->getConnection($this->member1Uin, $this->node1Uin), $pin1); $this->assertNotSame($hashTable->getConnection($this->member1Uin, $this->node3Uin), $pin0); $this->assertNotSame($hashTable->getConnection($this->member2Uin, $this->node3Uin), $pin0); $this->assertNotSame($hashTable->getConnection($this->member2Uin, $this->node2Uin), $pin2); \Classes\Factory\Model\Model::servicePrint(); }
public function servicePrint() { // Get members $members = \Classes\Factory\Model\Model::getMembers(); $uin = $this->getUin(); $name = $this->getProperty('name')->get(); $steel = $this->getProperty('steel')->get(); $Ry = $this->getProperty('Ry')->get(); $gammaC = $this->getProperty('gammaC')->get(); $muXZ = $this->getProperty('muXZ')->get(); $muXY = $this->getProperty('muXY')->get(); $FC = $this->getProperty('FC')->get(); $list = $this->getProperty('listbox')->get(); echo $uin . " => *{$name}* {$steel}({$Ry}) |{$gammaC}| {$muXZ}, {$muXY} - {$FC}<br/>"; foreach ($list as $memberUin) { $memberId = $members[$memberUin]->getProperty('id')->get(); echo " * {$memberUin} - {$memberId} <br/>"; } }
public static function export($path) { // self::$restraints = \Classes\Factory\Model\Model::getRestraintTable()->getTable(); // self::$loadCases = \Classes\Factory\Model\Model::getLoadCases(); // self::$loads = \Classes\Factory\Model\Model::getLoads(); // self::$massMatrixTable = \Classes\Factory\Model\Model::getMassMatrixTable(); // self::$loadTable = \Classes\Factory\Model\Model::getLoadTable(); // // GET FILE WRITER $fileWriter = BinaryData\File\FileWriterFactory::make(); // EXPORT $fileWriter->export(\Classes\Factory\Model\Model::getNodes()); $fileWriter->export(\Classes\Factory\Model\Model::getMembers()); $fileWriter->export(\Classes\Factory\Model\Model::getRestraintTable()->getTable()); $fileWriter->export(\Classes\Factory\Model\Model::getLoadCases()); $fileWriter->export(\Classes\Factory\Model\Model::getLoads()); // WRITE file_put_contents($path, $fileWriter->getBody()); }
protected function add($uin, $object) { $data = ''; // ID $data .= pack('I', $object->getProperty('id')->get()); // NODES $objectConnections = \Classes\Factory\Model\Model::getHashTable()->getConnection($uin); $nodeUins = array_keys($objectConnections); $idNode1 = \Classes\Factory\Model\Model::getNodes()[$nodeUins[0]]->getProperty('id')->get(); $idNode2 = \Classes\Factory\Model\Model::getNodes()[$nodeUins[1]]->getProperty('id')->get(); $data .= pack('I', $idNode1); $data .= pack('I', $idNode2); // PINS $pins = array_values($objectConnections); $pin1 = 0; $pin2 = 0; if ($pins[0] instanceof \Classes\Factory\Connection\SixFreedomConnection\PinConnection) { $pin1 = $pins[0]->get(); } if ($pins[1] instanceof \Classes\Factory\Connection\SixFreedomConnection\PinConnection) { $pin2 = $pins[1]->get(); } $data .= pack('S', $pin1); $data .= pack('S', $pin2); // BETA ANGLE $data .= pack('d', $object->getProperty('betaAngle')->get()); // SECTION $section = ''; $data .= pack('S', $this->prepareString($object->getProperty('section')->get(), $section)); $data .= $section; // NAME $name = ''; $data .= pack('S', $this->prepareString($object->getProperty('name')->get(), $name)); $data .= $name; return $data; }
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); }
private function memberExport() { self::$txt[] = "// +++ MEMBERS +++"; foreach (self::$members as $object) { // this->members.push_back(Member(1, "1st element", 1, 2, 32, 63, 90, "STZ RUSSIAN p_wide_h 18 TMP 1.2e-005")); $id = $object->getProperty('id')->get(); $name = '"' . $object->getProperty('name')->get() . '"'; $betaAngle = $object->getProperty('betaAngle')->get(); $section = '"' . $object->getProperty('section')->get() . '"'; //Get NODES ID $objectConnections = \Classes\Factory\Model\Model::getHashTable()->getConnection($object->getUin()); $nodeUins = array_keys($objectConnections); $node1 = self::$nodes[$nodeUins[0]]->getProperty('id')->get(); $node2 = self::$nodes[$nodeUins[1]]->getProperty('id')->get(); // Get PINS $pins = array_values($objectConnections); $pin1 = $pin2 = 0; if ($pins[0] instanceof \Classes\Factory\Connection\SixFreedomConnection\PinConnection) { $pin1 = $pins[0]->get(); } if ($pins[1] instanceof \Classes\Factory\Connection\SixFreedomConnection\PinConnection) { $pin2 = $pins[1]->get(); } self::$txt[] = "this->members.push_back(Member({$id}, {$name}, {$node1}, {$node2}, {$pin1}, {$pin2}, {$betaAngle}, {$section}));"; } }
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 } } } }
<?php spl_autoload_extensions(".php"); spl_autoload_register(); $arrayA = array(1, 2, 3, 4, 5, 6, 7); $arrayB = array(4, 5, 6, 7, 8, 9, 10); $a = new \Classes\Listbox\Listbox(\Classes\Factory\Model\Model::getMemberActionCollection()); $b = new \Classes\Listbox\Listbox(\Classes\Factory\Model\Model::getMemberActionCollection()); foreach ($arrayA as $e) { $a->add($e); } foreach ($arrayB as $e) { $b->add($e); } $actionCollection = \Classes\Factory\Model\Model::getMemberActionCollection(); //CREATE ACTION $actionCollection->addAction(new \Classes\Listbox\Action\DeleteListboxAction(3)); //PRINT echo "A: (" . implode(",", $a->get()) . ")<br/>"; echo "B: (" . implode(",", $b->get()) . ")<br/>"; echo "<br/>"; //PRINT $actionCollection->servicePrint(); echo "<br/>"; //CREATE ACTION $actionCollection->addAction(new \Classes\Listbox\Action\ReplaceListboxAction(4, array(1, 9, 13, 15))); //PRINT echo "A: (" . implode(",", $a->get()) . ")<br/>"; echo "B: (" . implode(",", $b->get()) . ")<br/>"; echo "<br/>"; //CREATE ACTION
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 combineTwoNodes($uinKeep, $uinAttach) { // echo "COMBINE TWO NODES KEEP = $uinKeep, ATTACH = $uinAttach<br/>"; //DELETE NODE \Classes\Factory\Model\Model::deleteInstance($uinAttach); //CHANGE HASH TABLE foreach (self::$hashTables as $table) { $table->replaceUin($uinAttach, $uinKeep); } // \Classes\Factory\Model\Model::servicePrint(); }
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); }