CSouthDrawPolygonDyamic(子类)
2023-11-24 09:20:45 0 举报
登录查看完整内容
CSouthDrawPolygonDyamic(子类)
作者其他创作
大纲/内容
purgeSendMsg
结束
动态绘制面积线命令类CSouthDrawPolygonDyamic(子类)
闭合面积线dragStatus == kKW1
FALSE
type==m_beginCmd
TRUE
闭合m_pPolygon删除线段实体
CSouthDrawPolygonDynamicCom *obj
定义字符串m_beginCmd = \"beginDrawPolygon\";m_moveCmd = \"moveDrawPolygon\";m_appendCmd = \"appendPolygonPoint\";m_stopCmd = \"stopDrawPolygon\";m_cancelCmd = \"cancelDrawPolygon\";定义geojson的TypegeoJson.m_geometry.m_type = \"Point\";
const QJsonObject msgData
清空geojson里面的m_coordinates数据将m_point添加到geoJson里面转换为字符串再转换为QJsonObject赋值给msgData
CAD命令函数SouthToolSouthDWDrawPolygonDynamic
退出
返回实体*entity
构造函数
定义一个CSouthDrawPolygonJig对象obj调用obj的SetCallBackObj传入本命令的对象指针的接口对象调用obj的doIt()开始绘制面积线
MoveTo(const AcGePoint2d& point)
type==m_cancelCmd
Append(const AcGePoint2d& point)
QJsonObject &msgData
动态绘制面积线,有五个步骤Start、MoveTo、Append、Stop、Cancel,这几个方法继承于CSouthDrawPolygonDynamicCom(接口),在动态绘制面积线反应器类CSouthDrawPolygonJig中被调用,从而实现动态绘制面积线,并通过五个接口发送数据,实现在gis里面同步绘制面积线的功能
设置m_pLine终点为m_ept刷新图像(线段终点跟随鼠标移动)
采样sampler
基类AcEdJig(基类)
type==m_stopCmd
调用父类构造函数CSouthSocketCommand(\"GisDoubleWindow_DrawPolygonDynamic\")
m_obj = obj
回调obj->Stop()闭合面积线结束循环
Cancel()
删除线段实体和面积线实体
purgeRecvMsg
MoveTo
Stop()
结束返回m_pLine
动态绘制面积线反应器类CSouthDrawPolygonJig(子类)
//发送开始画面积线的命令m_point = point;geoJson.m_geometry.m_type = m_beginCmd;sendMsg();
执行绘制doIt
关闭m_pPolygon实体
将msgData转换为字符串,再转换为SouthGeoJson取出第一个点数据赋值给m_ept和geoJson.m_geometry.m_type赋值给type
//发送每一个面积线的端点m_point = point;geoJson.m_geometry.m_type = m_appendCmd;sendMsg();
type==m_moveCmd
动态绘制面积线接口CSouthDrawPolygonDynamicCom(接口)
//发送绘制面积线结束的命令geoJson.m_geometry.m_type = m_stopCmd;sendMsg();
(面积线更新,线段更新起点)设置m_pLine起点为m_ept将m_ept添加到 m_pPloygon里面刷新图像
Append
//发送移动的命令m_point = point;geoJson.m_geometry.m_type = m_moveCmd;sendMsg();
//发送取消绘制的命令geoJson.m_geometry.m_type = m_cancelCmd;sendMsg();
SetCallBackObj
Start
const AcGePoint2d &point
ads_getpoint获取起点pt1初始化m_pLine并设置起点为平pt1初始化m_pPolygon并添加顶点pt1将m_pPolygon添加到实体空间回调obj->Start(pt1)
将pt1添加到m_pPolygon刷新视图回调obj->Append(pt1)设置m_pLine起点为pt1
type==m_appendCmd
Cancel
axisPointTemp != tpt
Start(const AcGePoint2d& point)
dragStatus = drag()
取消dragStatus == kKW2 || dragStatus == kCancel
成员变量QString m_beginCmd;QString m_moveCmd;QString m_appendCmd;QString m_stopCmd;QString m_cancelCmd;AcGePoint2d m_point;SouthGeoJson geoJson;AcGePoint2d m_spt;AcGePoint2d m_ept;AcDbLine *m_pLine;AcDbPolyline *m_pPolygon;
bool showDispPrompt;AcGePoint2d m_spt,m_ept;AcDbLine *m_pLine;AcDbPolyline *m_pPolyline;CSouthDrawPolygonDynamicCom *m_obj;
设置线段终点为tpt回调obj->MoveTo(tpt)
命令基类CSouthSocketCommand(基类)
Stop
回调obj->Cancel()删除m_pLine删除m_pPolygon退出函数
static AcGePoint3d axisPointTemp;setKeywordList(_T(\"C Q\"));if(true == showDispPrompt) { setDispPrompt(_T(\"\指定起点或[闭合(C)/取消(Q)]:\
返回思维导图
0 条评论
回复 删除
下一页