|
|
|
@ -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);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|