Improve drawing symbols and sample popup
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
1 parent
7efe9097ce
commit
a0ec74b09b
11 files changed
+108
-21
No files matched your search
+25
-10
@@ -98,7 +98,7 @@ export function bearingDetail(model:PierModel,scale:number,key?:string,dimension
|
||||
}
|
||||
const line=(a:Point,b:Point,layer:Entity['layer']='CENTER')=>entities.push({kind:'line',a,b,layer,source});
|
||||
const text=(point:Point,t:string,height=1.8*scale,align:'left'|'center'|'right'='left')=>entities.push({kind:'text',point,text:t,height,align,layer:'TEXT',source});
|
||||
const dim=(a:Point,b:Point,position:number,axis:'x'|'y')=>entities.push({kind:'dimension',a,b,position,axis,value:Math.abs(axis==='x'?a[0]-b[0]:a[1]-b[1]),height:1.7*scale,layer:'DIMENSION',source});
|
||||
const dim=(a:Point,b:Point,position:number,axis:'x'|'y',label?:string)=>entities.push({kind:'dimension',a,b,position,axis,value:Math.abs(axis==='x'?a[0]-b[0]:a[1]-b[1]),height:1.7*scale,label,layer:'DIMENSION',source});
|
||||
blocks.forEach((block,i)=>{
|
||||
const x=(local[i].z-cx)*1000,z=(block.padTop-datum)*1000,idx=model.blocks.indexOf(block),s={member:'bearing-number',index:idx,pier:model.name};
|
||||
entities.push({kind:'circle',center:[x,z+6*scale],radius:1.7*scale,layer:'TEXT',source:s});
|
||||
@@ -114,19 +114,34 @@ export function bearingDetail(model:PierModel,scale:number,key?:string,dimension
|
||||
['h1','h2','h3','T'].slice(0,zs.length-1).forEach((name,j)=>{
|
||||
const yy=(zs[j]+zs[j+1])/2,target=(j*3-2)*scale;
|
||||
line([x+sign*DIM.padSize*500,yy],[near,target],'TEXT');
|
||||
text([near+sign*scale,target],`${name}=${value(zs[j+1]-zs[j])}`,1.55*scale,sign<0?'right':'left');
|
||||
text([near+sign*scale,target],name,1.55*scale,sign<0?'right':'left');
|
||||
});
|
||||
}
|
||||
});
|
||||
if(pair&&dimensions){const a=(local[0].z-cx)*1000,b=(local[1].z-cx)*1000;dim([a,planY],[b,planY],planY-1000,'x');text([0,planY-1000-3*scale],'C · 전/후열 중심 간격',1.6*scale,'center');}
|
||||
if(pair&&dimensions){const a=(local[0].z-cx)*1000,b=(local[1].z-cx)*1000;dim([a,planY],[b,planY],planY-1000,'x','C');}
|
||||
const ib=model.integratedBlocks.find(b=>blocks.some(x=>x.row==='전열'&&x.no===b.frontNo));
|
||||
if(ib)text([0,planY-1000-6*scale],`D=${value(INTEGRATED_BLOCK.length)} (일체 교좌면 길이)`,1.6*scale,'center');
|
||||
const plan=selected.plan;
|
||||
if(plan){
|
||||
const p=solplateGeometry(selected,plan.h3,{A:plan.A,B:plan.B,margin:plan.margin,T:plan.T,slopePct:plan.S});
|
||||
text([0,-650],`솔플 L=${value(p.L*1000)} / W=${value(p.W*1000)} · S=${plan.S.toFixed(3)}%`,1.6*scale,'center');
|
||||
text([0,-800],`T=${value(plan.T)} / T1=${value(p.T1*1000)} / T2=${value(p.T2*1000)}`,1.6*scale,'center');
|
||||
}else text([0,-650],'받침 본체·솔플레이트 제원 미확인',1.65*scale,'center');
|
||||
if(ib&&dimensions)dim([-INTEGRATED_BLOCK.length/2,planY-600],[INTEGRATED_BLOCK.length/2,planY-600],planY-1000-5*scale,'x','D');
|
||||
const rows=bearingSchedule(model);
|
||||
if(dimensions)blocks.forEach((block,i)=>{
|
||||
const row=rows.find(r=>r.index===model.blocks.indexOf(block))!,p=block.plan;
|
||||
const x=(local[i].z-cx)*1000,y=(local[i].x-cy)*1000+planY;
|
||||
if(!p)return;
|
||||
// Symbolic dimensions retain measured numeric values for CAD and the schedule.
|
||||
dim([x-p.A/2,y],[x+p.A/2,y],planY+700+3*scale,'x','A');
|
||||
const side=i===0?-1:1;
|
||||
dim([x,y-p.B/2],[x,y+p.B/2],x+side*(p.A/2+4*scale),'y','B');
|
||||
const z=(block.padTop+p.h3/1000-datum)*1000;
|
||||
const half=(row.L??p.A)/2;
|
||||
if(row.E!==null)dim([x,(block.bottom-datum)*1000],[x,(block.bottom-datum)*1000+row.E],x+(i===0?-1:1)*(half+7*scale),'y','E');
|
||||
for(const [symbol,edge,thickness] of [['T1',-1,row.T1],['T2',1,row.T2]] as const){
|
||||
if(thickness!==null)dim([x+edge*half,z],[x+edge*half,z+thickness],x+edge*(half+2*scale),'y',symbol);
|
||||
}
|
||||
const slopeY=z+(row.T??0)+4*scale;
|
||||
line([x-half,slopeY],[x+half,slopeY],'DIMENSION');
|
||||
line([x+half,slopeY],[x+half-1.5*scale,slopeY+scale],'DIMENSION');
|
||||
text([x,slopeY+scale],'S(%)',1.7*scale,'center');
|
||||
});
|
||||
text([0,-650],blocks.some(b=>!b.plan)?'받침 제원 미확인 · 치수표 참조':'문자 치수: 치수표 참조',1.4*scale,'center');
|
||||
text([0,-1040],'교좌면 평면 · 가로 교축(n) / 세로 교직(s)',1.65*scale,'center');
|
||||
return{entities,title:`상세 A · ${blocks.map(b=>`${b.no}(${b.row==='전열'?'전':'후'})`).join(' / ')}`};
|
||||
}
|
||||
Reference in new issue
Block a user