📄 exhcad.h
字号:
pt2.x=startpoint.x+lenwidth/2,pt2.y=startpoint.y;
pt3.x=startpoint.x+lenwidth/2,pt3.y=startpoint.y-height;
pt4.x=startpoint.x-lenwidth/2,pt4.y=startpoint.y-height;
pLine1=new AcDbLine(pt1,pt2);
pLine2=new AcDbLine(pt2,pt3);
pLine3=new AcDbLine(pt3,pt4);
pLine4=new AcDbLine(pt4,pt1);
pBlock->appendAcDbEntity(objId, pLine1);
pBlock->appendAcDbEntity(objId, pLine2);
pBlock->appendAcDbEntity(objId, pLine3);
pBlock->appendAcDbEntity(objId, pLine4);
pBlockTable->close();
pBlock->close();
pLine1->close();
pLine2->close();
pLine3->close();
pLine4->close();
return OK;
}
Status ExhCAD::DrawUContainer(void){
AcGePoint3d startpoint,pt1,pt2,pt3,pt4;
AcDbLine *pLine1,*pLine2,*pLine3,*pLine4;
ads_real lenwidth=1556.5,height=200;
AcDbObjectId objId;
AcDbBlockTableRecord *pBlock;
AcDbBlockTable *pBlockTable;
ads_getreal(PromptUCLW,&lenwidth);
ads_getreal(PromptUCH,&height);
lenwidth=lenwidth/10,height=height/10;
pDb->setOsmode(2);//mid
ads_getpoint(asDblArray(basepoint),PromptUContainerBasePoint,asDblArray(startpoint));
acdbCurDwg()->getBlockTable(pBlockTable,
AcDb::kForRead);
pBlockTable->getAt(ACDB_MODEL_SPACE, pBlock,
AcDb::kForWrite);
startpoint.y=startpoint.y+5;
pt1.x=startpoint.x-lenwidth/2,pt1.y=startpoint.y;
pt2.x=startpoint.x+lenwidth/2,pt2.y=startpoint.y;
pt3.x=startpoint.x+lenwidth/2,pt3.y=startpoint.y+height;
pt4.x=startpoint.x-lenwidth/2,pt4.y=startpoint.y+height;
pLine1=new AcDbLine(pt1,pt2);
pLine2=new AcDbLine(pt2,pt3);
pLine3=new AcDbLine(pt3,pt4);
pLine4=new AcDbLine(pt4,pt1);
pBlock->appendAcDbEntity(objId, pLine1);
pBlock->appendAcDbEntity(objId, pLine2);
pBlock->appendAcDbEntity(objId, pLine3);
pBlock->appendAcDbEntity(objId, pLine4);
pBlockTable->close();
pBlock->close();
pLine1->close();
pLine2->close();
pLine3->close();
pLine4->close();
return OK;
}
Status ExhCAD::DrawSteel(void){
AcGePoint3d startpoint,endpoint,pt1,pt2,pt3,pt4;
AcGePoint2d pt5,pt6,pt7,pt8;
ads_real len=3298,width=310,thick=10;
AcDbObjectId objId1,objId2,objId3,objId4,objId5;
AcDbLine *pLine4,*pLine5;
AcDbBlockTableRecord *pBlock;
AcDbBlockTable *pBlockTable;
AcDbHatch *pHatch=new AcDbHatch();
AcDbPolyline *pPolyline=new AcDbPolyline(5);
AcGePoint2dArray vertices1,vertices2;
AcGeDoubleArray bulges1,bulges2;
ads_getreal(PromptSL,&len);
ads_getreal(PromptSW,&width);
ads_getreal(PromptST,&thick);
len=len/10,width=width/10,thick=thick/10;
pDb->setOsmode(32);//int
ads_getpoint(asDblArray(basepoint),PromptSteelLeftBasePoint,asDblArray(startpoint));
endpoint.x=startpoint.x,endpoint.y=0;
pLine4=new AcDbLine(startpoint,endpoint);
pLine4->setLinetype("Dashed");
pLine4->setLinetypeScale(10,0);
pDb->setOsmode(4);//cen
ads_getpoint(asDblArray(basepoint),PromptSteelHMBasePoint,asDblArray(startpoint));
endpoint.x=0,endpoint.y=startpoint.y;
pLine5=new AcDbLine(startpoint,endpoint);
pLine5->setLinetype("Dashed");
pLine5->setLinetypeScale(10,0);
acdbCurDwg()->getBlockTable(pBlockTable,
AcDb::kForRead);
pBlockTable->getAt(ACDB_MODEL_SPACE, pBlock,
AcDb::kForWrite);
pBlock->appendAcDbEntity(objId4, pLine4);
pBlock->appendAcDbEntity(objId5, pLine5);
pBlockTable->close();
pBlock->close();
pLine4->close();
pLine5->close();
pDb->setOsmode(32);
ads_getpoint(asDblArray(basepoint),PromptSteelBasePoint,asDblArray(startpoint));
acdbCurDwg()->getBlockTable(pBlockTable,
AcDb::kForRead);
pBlockTable->getAt(ACDB_MODEL_SPACE, pBlock,
AcDb::kForWrite);
pt1.x=startpoint.x,pt1.y=startpoint.y+width/2;
pt2.x=startpoint.x+len,pt2.y=startpoint.y+width/2;
pt3.x=startpoint.x+len,pt3.y=startpoint.y-width/2;
pt4.x=startpoint.x,pt4.y=startpoint.y-width/2;
pt5.x=pt1.x,pt5.y=pt1.y;
pt6.x=pt2.x,pt6.y=pt2.y;
pt7.x=pt3.x,pt7.y=pt3.y;
pt8.x=pt4.x,pt8.y=pt4.y;
pPolyline->addVertexAt(0,pt5);
pPolyline->addVertexAt(0,pt6);
pPolyline->addVertexAt(0,pt7);
pPolyline->addVertexAt(0,pt8);
pPolyline->addVertexAt(0,pt5);
pBlock->appendAcDbEntity(objId1, pPolyline);
vertices1.append(pt5),vertices1.append(pt6);
vertices1.append(pt7),vertices1.append(pt8);
vertices1.append(pt5);
bulges1.append(0),bulges1.append(0);
bulges1.append(0),bulges1.append(0);
bulges1.append(0);
pHatch->appendLoop(AcDbHatch::kExternal,vertices1,bulges1);
pt1.x=pt1.x+thick,pt1.y=pt1.y-thick;
pt2.x=pt2.x-thick,pt2.y=pt2.y-thick;
pt3.x=pt3.x-thick,pt3.y=pt3.y+thick;
pt4.x=pt4.x+thick,pt4.y=pt4.y+thick;
pt5.x=pt1.x,pt5.y=pt1.y;
pt6.x=pt2.x,pt6.y=pt2.y;
pt7.x=pt3.x,pt7.y=pt3.y;
pt8.x=pt4.x,pt8.y=pt4.y;
pPolyline->addVertexAt(0,pt5);
pPolyline->addVertexAt(0,pt6);
pPolyline->addVertexAt(0,pt7);
pPolyline->addVertexAt(0,pt8);
pPolyline->addVertexAt(0,pt5);
pBlock->appendAcDbEntity(objId2, pPolyline);
vertices2.append(pt5),vertices2.append(pt6);
vertices2.append(pt7),vertices2.append(pt8);
vertices2.append(pt5);
bulges2.append(0),bulges2.append(0);
bulges2.append(0),bulges2.append(0);
bulges2.append(0);
pHatch->appendLoop(AcDbHatch::kDefault,vertices2,bulges2);
pHatch->setPatternScale(0.1);
pHatch->evaluateHatch();
pHatch->setPattern(AcDbHatch::kPreDefined, "ANSI31");
pBlock->appendAcDbEntity(objId3, pHatch);
pBlockTable->close();
pBlock->close();
pPolyline->close();
pHatch->close();
return OK;
}
Status ExhCAD::DrawLinker(void){
AcGePoint3d startpoint,pt1,pt2,pt3;
AcDbArc *pArc;
AcDbObjectId objId;
AcDbBlockTableRecord *pBlock;
AcDbBlockTable *pBlockTable;
double radius;
pDb->setOsmode(32);//int
ads_getpoint(asDblArray(basepoint),PromptLinkerCenLBasePoint,asDblArray(startpoint));
pt1.x=startpoint.x,pt1.y=startpoint.y;
ads_getpoint(asDblArray(basepoint),PromptLinkerCenRBasePoint,asDblArray(startpoint));
pt2.x=startpoint.x;
pt3.x=pt1.x+(pt2.x-pt1.x)/2,pt3.y=pt1.y;
radius= (pt2.x-pt1.x)/2;
pArc=new AcDbArc(pt3,radius,0.0,PI);
acdbCurDwg()->getBlockTable(pBlockTable,
AcDb::kForRead);
pBlockTable->getAt(ACDB_MODEL_SPACE, pBlock,
AcDb::kForWrite);
pBlock->appendAcDbEntity(objId, pArc);
pBlockTable->close();
pBlock->close();
pArc->close();
return OK;
}
Status ExhCAD::Title(char *FileTitle){
ads_hdlg hdlg;
int dcl_id,what_next;
AcDbTextStyleTable *pStyleTable;
AcDbTextStyleTableIterator *pIterator;
AcDbObjectId styleId,objId;;
AcDbBlockTableRecord *pBlock;
AcDbBlockTable *pBlockTable;
AcGePoint3d authorpoint(506.0,11.0,0.0),schoolpoint(442.0,11.0,0.0),
scalepoint(532.0,18.0,0.0),checkpoint(506.0,21.0,0.0),
teacherpoint(506.0,14.0,0.0),sizepoint(532.0,14.0,0.0),
datepoint(519.0,11.0,0.0),projectpoint(442.0,18.0,0.0);
ads_load_dialog(FileTitle,&dcl_id);
ads_new_dialog("Title",dcl_id,NULLCB,&hdlg);
InitTitle(hdlg);
SetTitle(hdlg);
ads_start_dialog(hdlg,&what_next);
if(what_next==DLGOK){
acdbCurDwg()->getTextStyleTable(pStyleTable,
AcDb::kForRead);
pStyleTable->newIterator(pIterator);
pIterator->getRecordId(styleId);
delete pIterator;
pStyleTable->close();
AcDbText *pauthor=new AcDbText(authorpoint,Titles->Author,
styleId,
2,0);
AcDbText *pschool=new AcDbText(schoolpoint,Titles->School,
styleId,
5,0);
AcDbText *pscale=new AcDbText(scalepoint,Titles->Scale,
styleId,
2,0);
AcDbText *pcheck=new AcDbText(checkpoint,Titles->Check,
styleId,
3,0);
AcDbText *pteacher=new AcDbText(teacherpoint,Titles->Teacher,
styleId,
2,0);
AcDbText *psize=new AcDbText(sizepoint,Titles->Size,
styleId,
2,0);
AcDbText *pdate=new AcDbText(datepoint,Titles->Date,
styleId,
2,0);
AcDbText *pproject=new AcDbText(projectpoint,Titles->Project,
styleId,
8,0);
acdbCurDwg()->getBlockTable(pBlockTable,
AcDb::kForRead);
pBlockTable->getAt(ACDB_MODEL_SPACE, pBlock,
AcDb::kForWrite);
pBlock->appendAcDbEntity(objId, pauthor);
pBlock->appendAcDbEntity(objId, pschool);
pBlock->appendAcDbEntity(objId, pscale);
pBlock->appendAcDbEntity(objId, pcheck);
pBlock->appendAcDbEntity(objId, pteacher);
pBlock->appendAcDbEntity(objId, psize);
pBlock->appendAcDbEntity(objId, pdate);
pBlock->appendAcDbEntity(objId, pproject);
pBlockTable->close();
pBlock->close();
pauthor->close();
pschool->close();
pscale->close();
pcheck->close();
pteacher->close();
psize->close();
pdate->close();
pproject->close();
}
ads_unload_dialog(dcl_id);
return OK;
}
Status ExhCAD::DeTable(char *FileDeTable){
ads_hdlg hdlg;
int dcl_id,what_next;
AcDbTextStyleTable *pStyleTable;
AcDbTextStyleTableIterator *pIterator;
AcDbObjectId styleId,objId;;
AcDbBlockTableRecord *pBlock;
AcDbBlockTable *pBlockTable;
AcGePoint3d areapoint(508.0,77.0,0.0),insertpoint(508.0,73.0,0.0),
fumeouttpoint(508.0,70.0,0.0),fumeintpoint(508.0,65.0,0.0),
fumeqpoint(508.0,60.0,0.0),airouttpoint(508.0,56.0,0.0),
airintpoint(508.0,52.0,0.0),airqpoint(508.0,48.0,0.0);
ads_load_dialog(FileDeTable,&dcl_id);
ads_new_dialog("DeTable",dcl_id,NULLCB,&hdlg);
InitDeTable(hdlg);
SetDeTable(hdlg);
ads_start_dialog(hdlg,&what_next);
if(what_next==DLGOK){
acdbCurDwg()->getTextStyleTable(pStyleTable,
AcDb::kForRead);
pStyleTable->newIterator(pIterator);
pIterator->getRecordId(styleId);
delete pIterator;
pStyleTable->close();
AcDbText *parea=new AcDbText(areapoint,Detables->Area,
styleId,
2,0);
AcDbText *pinsert=new AcDbText(insertpoint,Detables->Insert,
styleId,
2,0);
AcDbText *pfumeoutt=new AcDbText(fumeouttpoint,Detables->Fumeoutt,
styleId,
2,0);
AcDbText *pfumeint=new AcDbText(fumeintpoint,Detables->Fumeint,
styleId,
2,0);
AcDbText *pfumeq=new AcDbText(fumeqpoint,Detables->Fumeq,
styleId,
2,0);
AcDbText *pairoutt=new AcDbText(airouttpoint,Detables->Airoutt,
styleId,
2,0);
AcDbText *pairint=new AcDbText(airintpoint,Detables->Airint,
styleId,
2,0);
AcDbText *pairq=new AcDbText(airqpoint,Detables->Airq,
styleId,
2,0);
acdbCurDwg()->getBlockTable(pBlockTable,
AcDb::kForRead);
pBlockTable->getAt(ACDB_MODEL_SPACE, pBlock,
AcDb::kForWrite);
pBlock->appendAcDbEntity(objId, parea);
pBlock->appendAcDbEntity(objId, pinsert);
pBlock->appendAcDbEntity(objId, pfumeoutt);
pBlock->appendAcDbEntity(objId, pfumeint);
pBlock->appendAcDbEntity(objId, pfumeq);
pBlock->appendAcDbEntity(objId, pairoutt);
pBlock->appendAcDbEntity(objId, pairint);
pBlock->appendAcDbEntity(objId, pairq);
pBlockTable->close();
pBlock->close();
parea->close();
pinsert->close();
pfumeoutt->close();
pfumeint->close();
pfumeq->close();
pairoutt->close();
pairint->close();
pairq->close();
}
ads_unload_dialog(dcl_id);
return OK;
}
ExhCAD::~ExhCAD(void){
}
void ExhCADAbout(void){
ExhCAD *pExhCAD = new ExhCAD;
if(!pExhCAD) {
ads_printf(IDS_ExhCAD_Object);
return;
}
pExhCAD->About(IDS_ExhCAD_About);
delete pExhCAD;
}
void ExhCADHelp(void){
ExhCAD *pExhCAD = new ExhCAD;
if(!pExhCAD) {
ads_printf(IDS_ExhCAD_Object);
return;
}
pExhCAD->Help(pExhCAD->GetExhCADFile(ExhCADHelpFile) ,"",HELP_CONTEXTS);
delete pExhCAD;
}
void ExhCADDraw(void){
ExhCAD *pExhCAD = new ExhCAD;
if(!pExhCAD) {
ads_printf(IDS_ExhCAD_Object);
return;
}
pExhCAD->Draw();
delete pExhCAD;
}
void ExhCADDimension(void){
ExhCAD *pExhCAD = new ExhCAD;
if(!pExhCAD) {
ads_printf(IDS_ExhCAD_Object);
return;
}
pExhCAD->Dimension();
delete pExhCAD;
}
void ExhCADTitle(void){
ExhCAD *pExhCAD = new ExhCAD;
if(!pExhCAD) {
ads_printf(IDS_ExhCAD_Object);
return;
}
pExhCAD->Title(pExhCAD->GetExhCADFile(TitleDclFile));
delete pExhCAD;
}
void ExhCADDeTable(void){
ExhCAD *pExhCAD = new ExhCAD;
if(!pExhCAD) {
ads_printf(IDS_ExhCAD_Object);
return;
}
pExhCAD->DeTable(pExhCAD->GetExhCADFile(DeTableDclFile));
delete pExhCAD;
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -