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

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

Loading…
Cancel
Save