歼20学生军迷吧 关注:12贴子:652
  • 0回复贴,共1

以薄壁墩添加加密筋为例,阐述使用钢筋管理类创建钢筋实体对象

只看楼主收藏回复

extern CBmObjStl* pStlManager;//钢筋管理类
extern StlInfo m_StlInfos[3];//下标:0:纵向钢筋;1:横向钢筋;2:加密筋
int iStlNo = 3;//加密筋编号
AcDbObjectId idStl = pStlManager->AddStl(iStlNo, 3, 1.2, 1, BM_STL_RELATING); //创建钢筋对象
//钢筋设置几何描述
CStlObject* pStlObj = NULL;
// ◎◎××几何信息××◎◎
if (acdbOpenObject(pStlObj, idStl, AcDb::kForWrite) != Acad::eOk)
{
CString cstrMsg;
cstrMsg.Format(L"acdbOpenObject(pStlObj, idStl, AcDb::kForWrite) != Acad::eOk。\n%s(%ld)", _T(__FILE__), __LINE__);
MessageBox(NULL, cstrMsg, L"注意", MB_ICONWARNING);
return false;
}
//薄壁墩竖向钢筋外径
double dBQVDia = m_StlInfos[0].outDia;
//薄壁墩横向钢筋外径
double dBQHDia = m_StlInfos[1].outDia;
//薄壁墩横向架立筋外径
double dThisDia = pStlObj->GetOutDia();
//架立筋长度
double dAuxiliarySteelBarLen = m_W2 - 2 * BCSPACE + dBQHDia + dThisDia;
// 设置钢筋几何描述
if (pStlObj->GetLevel() == 0)
{
AddStlGeo(pStlObj, dAuxiliarySteelBarLen, TRUE, 3);
}
else
{
AddStlGeo(pStlObj, dAuxiliarySteelBarLen, TRUE, 1);
}
// 侧面排布
// 取薄壁墩水平筋
CStlSegArray* pAryStlSeg = pStlObj->GetSegs(0);
if (NULL == pAryStlSeg)
{
CString cstrMsg;
cstrMsg.Format(L"NULL == pAryStlSeg。\n%s(%ld)", _T(__FILE__), __LINE__);
MessageBox(NULL, cstrMsg, L"注意", MB_ICONWARNING);
pStlObj->close();
return false;
}
pAryStlSeg->RemoveAll();
pAryStlSeg->m_DrawType = 1;//线筋
int iThickerStlCount = int(m_JMlenght / m_StlInfos[2].disPlus);//加密筋根数
pAryStlSeg->m_SToESeg = AcGeVector3d(m_StlInfos[2].lenth, 0, 0);//点筋的StoESeg用X向量
AcGeVector3d vecStart = AcGeVector3d(0, m_StlInfos[2].dis, 0);//首端总向量
//hp:横坡斜度
AcGeVector3d vecEnd = AcGeVector3d(0, m_StlInfos[2].dis + m_L3 * fabs(hp) / 100, 0);//尾端总向量
if (hp > 0)
pAryStlSeg->AddSeg(vecStart, vecEnd, iThickerStlCount, 0, 3, 3);
else
pAryStlSeg->AddSeg(vecEnd, vecStart, iThickerStlCount, 0, 3, 3);
pStlObj->SetSegs(0, pAryStlSeg);
//以上为钢筋定义和创建。下面是画钢筋。画钢筋在Draw()函数里。
AcDbObjectId idStl = pStlManager->GetStlId(3);
AcDbObjectId idEntStl = m_CurLayout->AddStlEnt(0, pt0, idStl);//加密钢筋。第一个参数0代表画在立面(主视图)


1楼2023-02-24 15:50回复