public static function add($objects) { //Prepare arrays self::$commonMemberLoadArray = array(); self::$notFoundObjects = array(); //Get TABLES self::$hashTable = \Classes\Factory\Model\Model::getHashTable(); self::$loadTable = \Classes\Factory\Model\Model::getLoadTable(); self::$commonMemberLoadTable = new \Classes\Factory\Model\Table\LoadTable(); self::$emptyConnection = new \Classes\Factory\Connection\LoadConnection\GlobalCoordinateSystem(); // Distribute objects to arrays foreach ($objects as $object) { self::prepareObject($object); } // DELETE DOUBLE NODES $tableArray = array(self::$hashTable, self::$commonMemberLoadTable); \Classes\Utils\Node\DoubleNodes::combineAll($tableArray); // SORT NODES \Classes\Factory\Model\Model::sortNodes(); // Get NODES, MEMBERS self::$nodes = \Classes\Factory\Model\Model::getNodes(); self::$members = \Classes\Factory\Model\Model::getMembers(); // Find destination for all Common Member Loads self::distribute(); // Return all not found loads $notFoundObjects = array(); foreach (self::$notFoundObjects as $uin) { $notFoundObjects[] = self::$commonMemberLoadArray[$uin]; } return $notFoundObjects; }
static function numerateFromOne() { $members = \Classes\Factory\Model\Model::getMembers(); $id = 1; foreach ($members as $member) { $member->setProperty('id', new \Classes\Value\IntValue($id)); $id++; } }
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)); }
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; }
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(); }
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()); }
public static function export($path) { self::$nodes = \Classes\Factory\Model\Model::getNodes(); self::$members = \Classes\Factory\Model\Model::getMembers(); 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(); // START self::$txt[] = '#include "stdafx.h"'; self::$txt[] = '#include "Model.h"'; self::$txt[] = 'Model::Model() {'; //EXPORT self::nodesExport(); self::memberExport(); self::restraintExport(); self::loadCaseExport(); self::loadExport(); self::$txt[] = '};'; file_put_contents($path, implode("\r\n", self::$txt)); }
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; }