/// <summary> /// Создание муфлера и шляпки винта /// </summary> /// <returns>Выдавленная шляпка винта для базовой части винта</returns> private ksEntity CreateHat() { double basePoint = -(_kompasApp.Parameters[0] / 5.0); var mufflerManager = new Muffler(_kompasApp, basePoint); ksEntity extruded = DrawScrewHat(); if (!mufflerManager.DeleteDetail()) { LastErrorCode = mufflerManager.LastErrorCode; return(null); } return(extruded); }
public void TestPartParams() { Assert.AreEqual(t1.SpeedBonus, 0F); Assert.AreEqual(t2.SpeedBonus, 0.5F); Nitro tempN1 = n1; tempN1.Upgrade(); Assert.AreEqual(tempN1.SpeedBonus, 0F); Muffler tempM2 = m2; tempM2.Upgrade(); tempM2.Upgrade(); Assert.AreEqual(m2.SpeedBonus, 0.0212F); }
/// <summary> /// Create screw hat with extrusion operation /// </summary> /// "regPoly" here is abbreviation of Regular Polygon /// Screw hat consists of base of hat (0.84 * H) /// and rounded chamfer on the top (0.16 * H) /// <returns>Extruded entity of hat for base part of screw</returns> private ksEntity CreateHat() { // 0.1 Create muffler, which base point is (W3 / 5, W3 / 5) var basePoint = -(_kompasApp.Parameters[0] / 5.0); var mufflerParameters = new MufflerParameters(); mufflerParameters.Document3DPart = _kompasApp.ScrewPart; mufflerParameters.Direction = Direction_Type.dtNormal; mufflerParameters.BasePlaneAxis = Obj3dType.o3d_planeYOZ; mufflerParameters.BasePlanePoint = new KompasPoint2D(basePoint, basePoint); var mufflerManager = new Muffler(_kompasApp, mufflerParameters); if (mufflerManager.LastErrorCode != ErrorCodes.OK) { LastErrorCode = mufflerManager.LastErrorCode; return(null); } var mufflerExtrusion = mufflerManager.Extrusion; if (mufflerExtrusion == null) { LastErrorCode = mufflerManager.LastErrorCode; return(null); } // 1.1 Hat sketch var regPolySketch = new KompasSketch(_kompasApp.ScrewPart, Obj3dType.o3d_planeYOZ); if (regPolySketch.LastErrorCode != ErrorCodes.OK) { LastErrorCode = regPolySketch.LastErrorCode; return(null); } var regPolySketchEdit = regPolySketch.BeginEntityEdit(); if (regPolySketchEdit == null) { LastErrorCode = regPolySketch.LastErrorCode; return(null); } // Regular polygon center point var regPolyPoint = new KompasPoint2D(0, 0); // Regular polygon is base of hat var regPolyParam = new RegularPolygonParameter(_kompasApp, 6, _kompasApp.Parameters[0] / 2.0, regPolyPoint); // W3 if (regPolySketchEdit.ksRegularPolygon(regPolyParam.FigureParam, 0) == 0) { LastErrorCode = ErrorCodes.Document2DRegPolyCreatingError; return(null); } regPolySketch.EndEntityEdit(); // 1.2 Hat entity extrusion // Screw hat height is equal to nut height var extrusionParameters = new KompasExtrusionParameters(_kompasApp.ScrewPart, Obj3dType.o3d_baseExtrusion, regPolySketch.Entity, Direction_Type.dtReverse, _kompasApp.Parameters[4] * 0.84); var regPolyExtrusion = new KompasExtrusion(extrusionParameters, ExtrusionType.ByEntity); // 0.84 * H if (regPolyExtrusion.LastErrorCode != ErrorCodes.OK) { LastErrorCode = regPolyExtrusion.LastErrorCode; return(null); } /* Main base face area is lower than parallel base face * because of muffler partially overlaps main base face area, * but not overlaps parallel base face area. */ regPolyExtrusion.BaseFaceAreaState = KompasFaces.BaseFaceAreaState.BaseFaceAreaLower; var extruded = regPolyExtrusion.ExtrudedEntity; if (extruded == null) { LastErrorCode = regPolyExtrusion.LastErrorCode; return(null); } // 0.2 Delete muffler if (!mufflerManager.DeleteDetail()) { LastErrorCode = mufflerManager.LastErrorCode; return(null); } // 1.3 Rounded chamfer in hat var roundedChamferParameters = new RoundedChamferParameters(); roundedChamferParameters.Document3DPart = _kompasApp.ScrewPart; roundedChamferParameters.RegularPolygonSketch = regPolySketch.Entity; roundedChamferParameters.RegularPolygonParameters = regPolyParam; roundedChamferParameters.BasePlanePoint = new KompasPoint2D(0.0, 0.0); roundedChamferParameters.Direction = Direction_Type.dtNormal; var roundedChamferManager = new RoundedChamfer(_kompasApp, roundedChamferParameters); if (!roundedChamferManager.CreateDetail()) { LastErrorCode = roundedChamferManager.LastErrorCode; return(null); } return(extruded); }
private void LoadMetadata(SpecDB db) { if (TableName.StartsWith("CAR_NAME_")) { string locale = TableName.Split('_')[2]; if (locale.Equals("ALPHABET") || locale.Equals("JAPAN")) { locale = "UnistrDB.sdb"; } else { locale += "_StrDB.sdb"; } TableMetadata = new CarName(db.SpecDBFolderType, locale); } else if (TableName.StartsWith("CAR_VARIATION_")) { string locale = TableName.Split('_')[2]; if (locale.Equals("ALPHABET") || locale.Equals("JAPAN")) { locale = "UnistrDB.sdb"; } else { locale += "_StrDB.sdb"; } TableMetadata = new CarVariation(db.SpecDBFolderType, locale); } else if (TableName.StartsWith("COURSE_NAME_")) { string locale = TableName.Split('_')[2]; if (locale.Equals("ALPHABET") || locale.Equals("JAPAN")) { locale = "UnistrDB.sdb"; } else { locale += "_StrDB.sdb"; } TableMetadata = new CourseName(db.SpecDBFolderType, locale); } else if (TableName.StartsWith("VARIATION")) { string locale = "UnistrDB.sdb"; if (TableName.Length > 9) { locale = TableName.Substring(9); if (!locale.Equals("ALPHABET") && !locale.Equals("JAPAN")) { locale += "_StrDB.sdb"; } } TableMetadata = new Variation(db.SpecDBFolderType, locale); } else if (TableName.StartsWith("RIDER_EQUIPMENT")) { string locale = "UnistrDB.sdb"; if (TableName.Length > 15) { locale = TableName.Substring(15); if (!locale.Equals("ALPHABET") && !locale.Equals("JAPAN")) { locale += "_StrDB.sdb"; } } TableMetadata = new RiderEquipment(db.SpecDBFolderType, locale); } else { switch (TableName) { case "AIR_CLEANER": TableMetadata = new AirCleaner(db.SpecDBFolderType); break; case "ALLOW_ENTRY": TableMetadata = new AllowEntry(db.SpecDBFolderType); break; case "ARCADEINFO_NORMAL": case "ARCADEINFO_TUNED": TableMetadata = new ArcadeInfoNormal(db.SpecDBFolderType); break; case "ASCC": TableMetadata = new ASCC(db.SpecDBFolderType); break; case "BRAKE": TableMetadata = new Brake(db.SpecDBFolderType); break; case "BRAKECONTROLLER": TableMetadata = new BrakeController(db.SpecDBFolderType); break; case "CATALYST": TableMetadata = new Catalyst(db.SpecDBFolderType); break; case "CLUTCH": TableMetadata = new Clutch(db.SpecDBFolderType); break; case "COMPUTER": TableMetadata = new Computer(db.SpecDBFolderType); break; case "COURSE": TableMetadata = new Course(db.SpecDBFolderType); break; case "CAR_CUSTOM_INFO": TableMetadata = new CarCustomInfo(db.SpecDBFolderType); break; case "DEFAULT_PARAM": TableMetadata = new DefaultParam(db.SpecDBFolderType); break; case "DEFAULT_PARTS": TableMetadata = new DefaultParts(db.SpecDBFolderType); break; case "DISPLACEMENT": TableMetadata = new Displacement(db.SpecDBFolderType); break; case "DRIVETRAIN": TableMetadata = new Drivetrain(db.SpecDBFolderType); break; case "ENGINE": TableMetadata = new Engine(db.SpecDBFolderType); break; case "EXHAUST_MANIFOLD": TableMetadata = new ExhaustManifold(db.SpecDBFolderType); break; case "FLYWHEEL": TableMetadata = new Flywheel(db.SpecDBFolderType); break; case "GEAR": TableMetadata = new Gear(db.SpecDBFolderType); break; case "MAKER": TableMetadata = new Maker(db.SpecDBFolderType); break; case "MODEL_INFO": TableMetadata = new ModelInfo(db.SpecDBFolderType); break; case "PAINT_COLOR_INFO": TableMetadata = new PaintColorInfo(db.SpecDBFolderType); break; case "GENERIC_CAR": TableMetadata = new GenericCar(db.SpecDBFolderType); break; case "FRONTTIRE": TableMetadata = new FrontTire(db.SpecDBFolderType); break; case "REARTIRE": TableMetadata = new RearTire(db.SpecDBFolderType); break; case "RACINGMODIFY": TableMetadata = new RacingModify(db.SpecDBFolderType); break; case "CHASSIS": TableMetadata = new Chassis(db.SpecDBFolderType); break; case "INTAKE_MANIFOLD": TableMetadata = new IntakeManifold(db.SpecDBFolderType); break; case "LIGHTWEIGHT": TableMetadata = new Lightweight(db.SpecDBFolderType); break; case "LSD": TableMetadata = new Lsd(db.SpecDBFolderType); break; case "MUFFLER": TableMetadata = new Muffler(db.SpecDBFolderType); break; case "NATUNE": TableMetadata = new Natune(db.SpecDBFolderType); break; case "NOS": TableMetadata = new NOS(db.SpecDBFolderType); break; case "PROPELLERSHAFT": TableMetadata = new PropellerShaft(db.SpecDBFolderType); break; case "RACE": TableMetadata = new Race(db.SpecDBFolderType); break; case "STEER": TableMetadata = new Steer(db.SpecDBFolderType); break; case "SUPERCHARGER": TableMetadata = new Supercharger(db.SpecDBFolderType); break; case "SUSPENSION": TableMetadata = new Suspension(db.SpecDBFolderType); break; case "TIRECOMPOUND": TableMetadata = new TireCompound(db.SpecDBFolderType); break; case "TURBINEKIT": TableMetadata = new TurbineKit(db.SpecDBFolderType); break; case "GENERIC_ITEMS": TableMetadata = new GenericItems(db.SpecDBFolderType); break; case "TUNED_CARS": TableMetadata = new TunedCars(db.SpecDBFolderType); break; case "TUNER": TableMetadata = new Tuner(db.SpecDBFolderType); break; case "WHEEL": TableMetadata = new Wheel(db.SpecDBFolderType); break; // Unmapped, but havent seen having rows case "TCSC": TableMetadata = new TCSC(db.SpecDBFolderType); break; case "TIREFORCEVOL": TableMetadata = new TireForceVol(db.SpecDBFolderType); break; case "GENERIC_CAR_INFO": TableMetadata = new GenericCarInfo(db.SpecDBFolderType); break; case "INDEP_THROTTLE": TableMetadata = new IndepThrottle(db.SpecDBFolderType); break; case "INTERCOOLER": TableMetadata = new Intercooler(db.SpecDBFolderType); break; case "PORTPOLISH": TableMetadata = new PortPolish(db.SpecDBFolderType); break; case "WING": TableMetadata = new Wing(db.SpecDBFolderType); break; case "TUNER_LIST": TableMetadata = new TunerList(db.SpecDBFolderType); break; case "TIRESIZE": TableMetadata = new TireSize(db.SpecDBFolderType); break; case "ENEMY_CARS": TableMetadata = new EnemyCars(db.SpecDBFolderType); break; case "ENGINEBALANCE": TableMetadata = new EngineBalance(db.SpecDBFolderType); break; case "RIDER_SET_ASSIGN": TableMetadata = new RiderSetAssign(db.SpecDBFolderType); break; case "RIDER_SET": TableMetadata = new RiderSet(db.SpecDBFolderType); break; default: throw new NotSupportedException($"This table ({TableName}) is not yet mapped."); } for (int i = 0; i < TableMetadata.Columns.Count; i++) { TableMetadata.Columns[i].ColumnIndex = i; } } }
/// <summary> /// Создание шляпки винта с методом выдавливания /// </summary> /// <returns>Выдавленная шляпки винта для базовой части винта</returns> private ksEntity CreateHat() { // 0.1 Create muffler, which base point is (D / 5, D / 5) var basePoint = -(_kompasApp.Parameters[0] / 5.0); var mufflerParameters = new MufflerParameters { Document3DPart = _kompasApp.ScrewPart, Direction = Direction_Type.dtNormal, BasePlaneAxis = Obj3dType.o3d_planeYOZ, BasePlanePoint = new KompasPoint2D(basePoint, basePoint) }; var mufflerManager = new Muffler(_kompasApp, mufflerParameters); if (mufflerManager.LastErrorCode != ErrorCodes.OK) { LastErrorCode = mufflerManager.LastErrorCode; return(null); } var mufflerExtrusion = mufflerManager.Extrusion; if (mufflerExtrusion == null) { LastErrorCode = mufflerManager.LastErrorCode; return(null); } // 1.1 Create hat var screwHat = new KompasSketch(_kompasApp.ScrewPart, Obj3dType.o3d_planeYOZ); if (screwHat.LastErrorCode != ErrorCodes.OK) { LastErrorCode = screwHat.LastErrorCode; return(null); } var screwHatSketchEdit = screwHat.BeginEntityEdit(); if (screwHatSketchEdit == null) { LastErrorCode = screwHat.LastErrorCode; return(null); } var screwHatPoint = new KompasPoint2D(0, 0); if (screwHatSketchEdit.ksCircle(screwHatPoint.X, screwHatPoint.Y, _kompasApp.Parameters[0] / 2, 1) == 0) { LastErrorCode = ErrorCodes.Document2DCircleCreatingError; return(null); } screwHat.EndEntityEdit(); // 1.2 Screw base extrusion var extrusionParameters = new KompasExtrusionParameters(_kompasApp.ScrewPart, Obj3dType.o3d_baseExtrusion, screwHat.Entity, Direction_Type.dtReverse, _kompasApp.Parameters[4] * 0.84); var screwHatExtrusion = new KompasExtrusion(extrusionParameters, ExtrusionType.ByEntity); // H if (screwHatExtrusion.LastErrorCode != ErrorCodes.OK) { LastErrorCode = screwHatExtrusion.LastErrorCode; return(null); } screwHatExtrusion.BaseFaceAreaState = KompasFaces.BaseFaceAreaState.BaseFaceAreaLower; var extruded = screwHatExtrusion.ExtrudedEntity; if (extruded == null) { LastErrorCode = screwHatExtrusion.LastErrorCode; return(null); } // 0.2 Delete muffler if (!mufflerManager.DeleteDetail()) { LastErrorCode = mufflerManager.LastErrorCode; return(null); } //Create slot var rectangleSketch = new KompasSketch(_kompasApp.ScrewPart, Obj3dType.o3d_planeYOZ); if (rectangleSketch.LastErrorCode != ErrorCodes.OK) { LastErrorCode = rectangleSketch.LastErrorCode; return(null); } var rectangleSketchEdit = rectangleSketch.BeginEntityEdit(); if (rectangleSketchEdit == null) { LastErrorCode = rectangleSketch.LastErrorCode; return(null); } var rectanglePoint = new KompasPoint2D(-_kompasApp.Parameters[0], -_kompasApp.Parameters[5] / 2); var rectangleParam = new RectangleParameter(_kompasApp, _kompasApp.Parameters[0] * 2, _kompasApp.Parameters[5], rectanglePoint); if (rectangleSketchEdit.ksRectangle(rectangleParam.FigureParam, 0) == 0) { LastErrorCode = ErrorCodes.EntityDefinitionNull; return(null); } rectangleSketch.EndEntityEdit(); extrusionParameters = new KompasExtrusionParameters(_kompasApp.ScrewPart, Obj3dType.o3d_cutExtrusion, rectangleSketch.Entity, Direction_Type.dtNormal, _kompasApp.Parameters[1] * 0.84); var rectangleExtrusion = new KompasExtrusion(extrusionParameters, ExtrusionType.ByEntity); // m; выдавливание шлица методом вырезания на глубину m if (rectangleExtrusion.LastErrorCode != ErrorCodes.OK) { LastErrorCode = rectangleExtrusion.LastErrorCode; return(null); } return(extruded); }
/// <summary> /// Create nut base extrusion and sketch entities /// </summary> /// <param name="nutBasePlane">Base plane (see <seealso cref="CreateDetail"></seealso> for more info)</param> /// <param name="nutBasePoint">Nut base point</param> /// <param name="regPolyParam">Regular polygon parameters</param> /// <returns> /// An array of nut base sketch and extrusion entities /// or null in case of error during creation /// </returns> private ksEntity[] CreateNutBase(ksEntity nutBasePlane, KompasPoint3D nutBasePoint, RegularPolygonParameter regPolyParam) { // 1.1 Nut base sketch var nutBaseSketch = new KompasSketch(_kompasApp.NutPart, nutBasePlane); if (nutBaseSketch.LastErrorCode != ErrorCodes.OK) { LastErrorCode = nutBaseSketch.LastErrorCode; return(null); } var nutBaseEdit = nutBaseSketch.BeginEntityEdit(); if (nutBaseEdit == null) { LastErrorCode = nutBaseSketch.LastErrorCode; return(null); } // Nut width is equal to W3 (screw hat width) if (nutBaseEdit.ksRegularPolygon(regPolyParam.FigureParam, 1) == 0) { LastErrorCode = ErrorCodes.Document2DRegPolyCreatingError; return(null); } nutBaseSketch.EndEntityEdit(); // 1.2 Nut base extrusion var extrusionParameters = new KompasExtrusionParameters(_kompasApp.NutPart, Obj3dType.o3d_baseExtrusion, nutBaseSketch.Entity, Direction_Type.dtReverse, _kompasApp.Parameters[4] / 2.0); var nutBaseExtrusion = new KompasExtrusion(extrusionParameters, ExtrusionType.ByEntity); // / H / if (nutBaseExtrusion.LastErrorCode != ErrorCodes.OK) { LastErrorCode = nutBaseExtrusion.LastErrorCode; return(null); } // 0.1 Create muffler var mufflerParameters = new MufflerParameters(); mufflerParameters.Document3DPart = _kompasApp.NutPart; mufflerParameters.Direction = Direction_Type.dtNormal; mufflerParameters.BasePlaneAxis = Obj3dType.o3d_planeXOZ; mufflerParameters.BasePlanePoint = new KompasPoint2D(nutBasePoint.Y, nutBasePoint.Z); var muffler = new Muffler(_kompasApp, mufflerParameters, nutBaseSketch.Entity); if (muffler.LastErrorCode != ErrorCodes.OK) { LastErrorCode = muffler.LastErrorCode; return(null); } // 1.3 Get base plane nutBaseExtrusion.BaseFaceAreaState = KompasFaces.BaseFaceAreaState.BaseFaceAreaLower; var nutBaseExtrudedEntity = nutBaseExtrusion.ExtrudedEntity; if (nutBaseExtrudedEntity == null) { LastErrorCode = nutBaseExtrusion.LastErrorCode; return(null); } // 0.2 Delete muffler if (!muffler.DeleteDetail()) { LastErrorCode = muffler.LastErrorCode; return(null); } return(new ksEntity[2] { nutBaseSketch.Entity, nutBaseExtrudedEntity }); }
/// <summary> /// Create base plane cylinder extrusion for nut /// </summary> /// <param name="basePlaneCylinderDepth">Depth of cylinder of base plane (see <seealso cref="CreateDetail"></seealso> for more info)</param> /// <param name="nutBasePoint">Nut base point</param> /// <returns>Nut base cylinder extruded entity or null in case of error during creation</returns> private ksEntity CreateNutBasePlaneCylinder(KompasPoint3D nutBasePoint, double basePlaneCylinderDepth) { // 1. Create plane in global coordinates. // We are using small cylinder with diameter 0.1*W3 in base plane YOZ // and extrude him in length: W1 + W2 + H + 0.1*W1*W2. // Extruded plane is plane in global coordinates. // After this we can simply delete the cylinder. // 1.1 Cylinder sketch var basePlaneCylinderSketch = new KompasSketch(_kompasApp.NutPart, Obj3dType.o3d_planeYOZ); if (basePlaneCylinderSketch.LastErrorCode != ErrorCodes.OK) { LastErrorCode = basePlaneCylinderSketch.LastErrorCode; return(null); } var cylinderSketchEdit = basePlaneCylinderSketch.BeginEntityEdit(); if (cylinderSketchEdit.ksCircle(nutBasePoint.Y, nutBasePoint.Z, _kompasApp.Parameters[0] * 0.1, 1) == 0) { LastErrorCode = ErrorCodes.Document2DCircleCreatingError; return(null); } basePlaneCylinderSketch.EndEntityEdit(); // 1.2 Cylinder extrusion var extrusionParameters = new KompasExtrusionParameters(_kompasApp.NutPart, Obj3dType.o3d_baseExtrusion, basePlaneCylinderSketch.Entity, Direction_Type.dtReverse, basePlaneCylinderDepth); var cylinderExtrusion = new KompasExtrusion(extrusionParameters, ExtrusionType.ByEntity); if (cylinderExtrusion.LastErrorCode != ErrorCodes.OK) { LastErrorCode = cylinderExtrusion.LastErrorCode; return(null); } // 0.1 Muffler creation var mufflerParameters = new MufflerParameters(); mufflerParameters.Document3DPart = _kompasApp.NutPart; mufflerParameters.Direction = Direction_Type.dtNormal; mufflerParameters.BasePlaneAxis = Obj3dType.o3d_planeYOZ; mufflerParameters.BasePlanePoint = new KompasPoint2D(nutBasePoint.Y, nutBasePoint.Z); var mufflerManager = new Muffler(_kompasApp, mufflerParameters); if (mufflerManager.LastErrorCode != ErrorCodes.OK) { LastErrorCode = mufflerManager.LastErrorCode; return(null); } var mufflerExtrusion = mufflerManager.Extrusion; if (mufflerExtrusion == null) { LastErrorCode = ErrorCodes.ArgumentNull; return(null); } // 1.3 Get nut base plane cylinderExtrusion.BaseFaceAreaState = KompasFaces.BaseFaceAreaState.BaseFaceAreaLower; var nutBasePlane = cylinderExtrusion.ExtrudedEntity; if (nutBasePlane == null) { LastErrorCode = cylinderExtrusion.LastErrorCode; return(null); } // 0.2 Muffler deletion if (!mufflerManager.DeleteDetail()) { return(null); } return(nutBasePlane); }