main\include\BwDesign\DrawCell
Annotation
- BWAnnoLeader\BWAnnoLeaderPoint.h 给一个点注释
- BWAnnoArrow.h 箭头注释
- BWAnnoAxis.h 轴线注释
- BWAnnoBearing.h 支座图例注释
- BWAnnoBearing.h 折断线注释
- BWAnnoGSRLeader.h 钢柱编号引出标注
- BWAnnoLegend.h 钢束图例注释
- BWAnnoLevel.h 标高注释
- BWAnnoNorthArrow.h 指北针注释
- BWAnnoPileNote.h 墩号注释
- BWAnnoRoadDirect.h 路线方向线注释
- BWAnnoRoadMat.h 路面材料(铺装)注释
- BWAnnoSecLine.h 剖面线(angle!=0)、断面线(angle==0)
- BWAnnoSecLine2.h 任意剖面线、断面线
- BWAnnoSlope.h 标题坡度箭头注释
- BWAnnoSoil.h 土壤图例
- BWAnnoSteelDot.h 钢筋点注释
- BWAnnoSteelSquare.h 钢筋小方格注释,小方格宽度、高度自动确定
- BWAnnoSys.h 对称符号注释
- BWAnnoText.h 直接注释的文字
- BWAnnoPileNote.h 墩号注释
- BWAnnoTitle.h 标题注释
- BWAnnoWeld.h 焊缝注释
BWLineGroup
- BWLineGroup.h 图元线包类
- BWLineName.h 图元线包名称类
Dim
- BWDimDimAngle.h 角度标注
- BWDimArcLengh.h 弧长标注
- BWDimContinue.h 连续标注
- BWDimDiameter.h 直径标注
- BWDimEnum.h
- BWDimNode.h
- BWDimRadius.h 半径标注
- BWDimSet.h
- BWDimSingle.h 单个线性标注
- BWDimTier.h
Hatch
- BWHatch.h 填充类,用以绘制填充
- BWRealBlockHatch.h
Note
- BWNote.h 附注类,用以绘制附注
- BWNoteChart.h
RealBlock
- BWDrawCellRealBlock.h
Smp
- BWBarSmp.h
- BWBarStirSmp.h
- BWBarTurnSmp.h
- BWTendonSmp.h 钢束大样图元(立面、大样)
Table
- TableBase.h
- BWSteelData.h
- BWTableDrawing.h
- BWTendonData.h
TraitLine
- BWTraitCenLine.h 一般中心线
- BWTraitSysLine.h 对称轴线
main\include\geometry
- THAnyLine.h
- CTHAnyLine(CDblPoint& start, CDblPoint& end)
- bool IsPointOnLineBase(CDblPoint&)
- bool Extend(CTHAnyLine&arrBorder, bool bIsStart);
- THArc.h 圆弧
- CTHArc(圆心,半径,起始角度,扫过角度)
- CTHArc(圆心,半径,起始角度,结束角度,bool 绕向) true逆时针
- CTHArc(p1,p2,p3) 三点定圆
- THCircle.h 圆
- CTHCircle(圆心,半径)
- CTHCircle(p1,p2) 直径为p1p2
- CTHCircle(圆心,圆上一点,int unused)
- 求过三点的三角形的内切圆、外接圆
- 求过p1p2,p2p3半径为rad的圆
- THCirCurve.h 几何直线+圆弧组成的圆曲线类
- THConvolution.h 几何缓和曲线类
- THCoverRegion.h 覆盖区域类
- THEllipse.h 几何椭圆类
- CTHEllipse(轴心,长轴点?,double 短轴/长轴)
- THEllipseArc.h 几何椭圆弧线类
- CTHEllipseArc(轴心,x轴和长轴夹角逆时针为正,a轴长,b轴长,椭圆弧线起始角度,覆盖角度逆时针为正)
- THLine.h
- CTHLine(x1,x2,y1,y2)
- CTHLine(p1,p2)
- CTHLine(起点,角度,长度)
- CTHLine(角度,终点,长度)
- bool Extend(CTHAnyLine&arrBorder, bool bIsStart);
- bool Intersect(另一条线,...) 求交点
- StartPoint() 起点
- EndPoint() 终点
- MiddlePoint(double dscale = 0.5) 中点
- THLineBase.h 上述形状的基类
- THLineGroup.h 即lg
- AddTHLine(CTHLine&)
- AddTHLine(起点,终点)
- AddTHCircle(CTHCircle&)
- AddTHAnyLine(CTHAnyLine&)
- AddTHLineGroup(CTHLineGroup&)
- template<class Ty> void AddLineVector(const Ty &LineVec)
{
for(Ty::const_iterator it=LineVec.begin();it!=LineVec.end();++it)
AddLineBase(&*it);
} - TrimByLine 裁剪
- bool IsEmpty()
- bool IsOneObj()
- void Clear()
- THLineGroupInc.h #pragma once,包含这里大部分头文件
- THLineTool.h 几何线包工具类,主要是一些类的声明
- THPoint.h 几何线段类
- THPolygon.h 几何多边形闭合区域类(按逆时针方向排列)
- THPolyLine.h 几何多段线类
- THSpline.h
- CTHSpline
常用
demo_bwdesignDlg.cpp_line30 m_cale = 400
轴线:
E:\main\include\BwDesign\DrawCell\Annotation\BWAnnoAxis.h
注释:
E:\main\include\BwDesign\DrawCell\Annotation\BWAnnoLeader\BWAnnoLeaderPoint.h
标题坡度箭头注释(桥台处):
E:\main\include\BwDesign\DrawCell\Annotation\BWAnnoSlope.h
CListBox *plst = (CListBox*)GetDlgItem(IDC_LIST1);
plst->AddString("mydraw_line");
CBWDrawGroup dg;
CBWLineGroup lg;
dg.SetScale(m_scale);
CTHLine line(CDblPoint(0,0),5*M_PI_4,150); // 点,角度,长度
lg.AddTHLine(line);
lg.SetByIdStr(GetRuleLineObjName().m_GZLK_Line); //设置图层
CBWDimSingleHor dim; // 横线标注
CBWDimSingleVer dim; // 纵线标注
dim1.set_angle(M_PI_4); // 设倾斜
dim1.set_line(line); // 设基线
const double dimValue = 10000; // 尺寸线位置
dim1.set(dimValue); // 自定义的位置
dg.AddElement(&dim);
dg.AddElement(&lg);
view(dg);
// 连续标注
CTHLine line;
const int nLayer = -1;
CBWDimTier dim;
dim.SetStdLine(line, false);
dim.SetCurStartVer(TD.x3(), false);
dim.Add(TD.x4() - TD.x3()).Add(TD.x5() - TD.x4());
dim.Adjust(0, nLayer, true);
dim.SetAlignType(DAT_HOR);
dg.AddElement(&dim);
// 显示标题
void myData::myTitle(CBWAnnoTitle title, CBWDrawGroup &dg)
{
CDblPoint insertPoint(totalLine / 2, 3 * verLine[0]);
CString titleName = "钢板梁立面布置(边跨)";
title.Set(insertPoint, titleName, "1:120");
dg.AddElement(&title);
}
// 坡度箭头注释
CTHLine baseLine(x0()-10000, 3 * y2(), x0(), 3 * y2());
CBWAnnoSlope slope;
slope.SetGrad(baseLine);
slope.SetGradText("桥台处");
slope.SetGradArrowType(ARROW_USER);
dg.AddElement(&slope);
// 文字附注
CBWAnnoLeaderPoint note;
note.Set(CDblPoint(x4() + (x5() - x4()) / 3, y0() + 1000), true, -M_PI / 3, 0, 6, 2);
// 坐标,是否为注释,对象引线角度,注释引线角度,注释到点的距离,注释线长度
note.SetText("钢梁", "", ""); // 上、下、侧
dg.AddElement(¬e);
// 延伸
CTHLine line;
const double extendValue = 30000; // 延伸长度
CTHAnyLine arrBNorder(CDblPoint start, CDblPoint end); // 延伸边界的端点
line.Extend(arrBNorder, false); // 往上false往下true
// 作轴线
CBWAnnoAxis axisLine;
axisLine.SetBaseLine(axesLine, false, 1);
axisLine.AddTopText("K56+569.5", 1, 1, 3);
axisLine.AddBotText("K56+569.5", 1, 1, 3);
dg.AddElement(&axisLine);
迁移
- 把
debug、3rd、include
文件夹复制到Projects
下 -
Configuration Properties - General
-
Output Directory
:..\..\debug\bin
-
Character Set
:Use Multi-Byte Character Set
-
-
Configuration Properties - Debugging
-
Command
:..\..\debug\bin\xxxD.exe
-
-
C/C++ - General
-
Additional include Directories
:..\..\include;..\..\3rd\include;
-
-
C/C++ - All Options
-
Additional include Directories
:..\..\include;..\..\3rd\include;
-
Addtional Options
:-Zm222 %(AdditionalOptions)
-
-
Command Line
:-Zm222
-
Linker - General
-
Output File
:..\..\debug\bin\$(TargetName)D$(TargetExt)
-
Addtional Library Directories
:..\..\debug\lib;..\..\3rd\debug\lib
-
-
Linker - Debugging
-
Generate Program Database File
:..\..\debug\bin\$(TargetName)D.pdb
-
-
Linker - All Options
-
Additional Library Directories
:..\..\debug\lib;..\..\3rd\debug\lib
-
Generate Program Database File
:..\..\debug\bin\$(TargetName)D.pdb
-
Output File
:..\..\debug\bin\$(TargetName)D$(TargetExt)
-
- 修改
stdafx.h
// stdafx.h : 标准系统包含文件的包含文件,
// 或是经常使用但不常更改的
// 特定于项目的包含文件
#pragma once
#ifndef VC_EXTRALEAN
#define VC_EXTRALEAN // 从 Windows 头中排除极少使用的资料
#endif
#include "targetver.h"
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // 某些 CString 构造函数将是显式的
// 关闭 MFC 对某些常见但经常可放心忽略的警告消息的隐藏
#define _AFX_ALL_WARNINGS
#include <afxwin.h> // MFC 核心组件和标准组件
#include <afxext.h> // MFC 扩展
#include <afxdisp.h> // MFC 自动化类
#ifndef _AFX_NO_OLE_SUPPORT
#include <afxdtctl.h> // MFC 对 Internet Explorer 4 公共控件的支持
#endif
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h> // MFC 对 Windows 公共控件的支持
#endif // _AFX_NO_AFXCMN_SUPPORT
#include <afxcontrolbars.h> // 功能区和控件条的 MFC 支持
#ifdef _UNICODE
#if defined _M_IX86
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_X64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#else
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
#endif
#endif
#include "THMath/Arc2.h"
#include "geometry/geometryInc.h"
using namespace GEOMETRY;
#define private public
#include "BwDesign/BWDesignInc.h"
using namespace BWDSGNMOD;
#undef private
#include "Rules/RulesInc.h"
using namespace RULES;
using namespace THMATH;
#include "ACADLL\AcadCmdLine.h"
#include "ACADLL\AcadCtrl.h"
class CompTool : public CBWComponent
{
public:
// void SetBlockScale(const CString& BlockName,double scale){CBWComponent::SetBlockScale(BlockName,scale);}
void Add(IN CBWBlock* pBlock){ CBWComponent::Add(pBlock); }//添加绘图图块
void CreatPaper(OUT vector<CBWPaper*>& PaperVec);
void Draw(const CString& BlockName = "");
void SetGroup(const CBWDrawGroup *group){ m_group = group; }
CString name;
CString filename;
//CGraph *pGraph;
private:
const CBWDrawGroup *m_group;
};
class CBWDrawObjTool : public CBWDrawObjBase
{
public:
CBWDrawObjTool() :m_pGroup(NULL){}
CBWDrawObjTool(const CBWDrawGroup*group){ m_pGroup = group; }
void Draw(CBWDrawGroup *group)const;
public:
const CBWDrawGroup*m_pGroup;
};
- 修改
stdafx.cpp
// stdafx.cpp : 只包括标准包含文件的源文件
// demo_bwdesign.pch 将作为预编译头
// stdafx.obj 将包含预编译类型信息
#include "stdafx.h"
void CompTool::CreatPaper(OUT vector<CBWPaper*>& PaperVec)
{
//PaperVec.push_back(pnew);
CBWLayOut* playerout = new CBWLayOut();
CBWTKProp tk_prop("测试用例", "一", "CS01", 0, 1, 2);
tk_prop.m_DrawAssistName = "测试用例";// PaperSet.m_DrawAssistName;
tk_prop.m_DrawMainName = "测试用例";//PaperSet.m_DrawMainName;
tk_prop.m_Subnumber = 1;//PaperSet.m_Subnumber;
tk_prop.m_PageIndex = 1;//PaperSet.m_PageIndex;
tk_prop.m_PageSum = 1;//PaperSet.m_PageSum;
playerout->SetProp(tk_prop, "测试用例");
//playerout->SetLengthen(PaperSet.Lenthen - 380);
SetBlockScale(name, m_group->GetScale());
playerout->SetExpression(name);//排图,name可以是"(N1-N2)+(N3-(N4+N5))";N1、N2、N.....表示图块名,“+”表示横向关系,“-”表示竖向关系
//创建图纸对象
CBWPaper* paper = new CBWPaper();
paper->SetPaperName(filename);
paper->AddLayout(playerout);
PaperVec.push_back(paper);
}
void CBWDrawObjTool::Draw(CBWDrawGroup *group)const
{
if (m_pGroup)
group->AddGroup(*m_pGroup);
}
void CompTool::Draw(const CString& BlockName)
{
//drawobj
CBWDrawObjTool *objdraw = new CBWDrawObjTool(m_group);
//block
CBWBlock *pblock = new CBWBlock(name);
pblock->Add(std::shared_ptr<CBWDrawObjBase>(objdraw));
pblock->GetObjBase().SetProp("NotClear", "1");
pblock->GetObjBase().SetProp(name, "ModelOrg");
pblock->SetScale(m_group->GetScale());
Add(pblock);
}
格式
struct input {
double aLeft, aRight;
double bLeft, bRight;
vector<double> dist; // 4500+5000*6+4500
double slotWidth, slotHeight;
};
struct output {
input m_data;
... getLine(...);
...
};
struct draw {
for(...) ... // vector
...
};
网友评论