功能:实现半径动作的高度模式

pull/2779/head
ChenX 4 months ago
parent d4974e8315
commit 5069975acb

@ -23,11 +23,19 @@ function r2b(radius: number, dist: number, isBigArc = false)
return bul;
}
export enum TempalteActionRadiusType
{
Radius = 0,
Bulge = 1,//凸度模式
Height = 2,//高度模式
}
@Factory
export class TemplateaRadiusAction extends TemplateFilletAction
{
@AutoRecord IsBigArc = false;//是大圆弧
@AutoRecord IsBulge = false; //凸度模式
@AutoRecord IsBigArc = false;//是大圆弧(仅在半径模式下生效)
@AutoRecord RadiusType = TempalteActionRadiusType.Radius;//半径类型
//修改半径(这里不是倒角了)
protected override Fillet(br: ExtrudeSolid | I2DModeling, newValue: number, d: { ArcParams: number[]; })
@ -41,7 +49,7 @@ export class TemplateaRadiusAction extends TemplateFilletAction
let cuOld = cu as Polyline;
for (let arcParam of d.ArcParams)
{
if (this.IsBulge)
if (this.RadiusType === TempalteActionRadiusType.Bulge)
{
cu = cu.Clone();
cu.LineData[Math.floor(arcParam)].bul = radius;
@ -52,7 +60,11 @@ export class TemplateaRadiusAction extends TemplateFilletAction
let p2 = cu.GetPointAtParam(FixIndex(Math.floor(arcParam) + 1, cu.EndParam));
let dist = p1.distanceTo(p2);
let bul = r2b(radius, dist, this.IsBigArc);
let bul: number;
if (this.RadiusType === TempalteActionRadiusType.Radius)
bul = r2b(radius, dist, this.IsBigArc);
else//高度模式
bul = radius * 2 / dist;
if (!isNaN(bul))
{
@ -83,15 +95,23 @@ export class TemplateaRadiusAction extends TemplateFilletAction
super.ReadFile(file);
this.IsBigArc = file.Read();
this.IsBulge = file.Read();
if (ver < 4)
{
this.RadiusType = TempalteActionRadiusType.Radius;
file.Read();
}
else
{
this.RadiusType = file.Read();
}
}
//对象将自身数据写入到文件.
WriteFile(file: CADFiler)
{
file.Write(3);
file.Write(4);
super.WriteFile(file);
file.Write(this.IsBigArc);
file.Write(this.IsBulge);
file.Write(this.RadiusType);
}
}

Loading…
Cancel
Save