diff --git a/diagramCavas/source/diagramEditor/editorDiagramLayoutEngine.cpp b/diagramCavas/source/diagramEditor/editorDiagramLayoutEngine.cpp index 2c0bbb5..c975a56 100644 --- a/diagramCavas/source/diagramEditor/editorDiagramLayoutEngine.cpp +++ b/diagramCavas/source/diagramEditor/editorDiagramLayoutEngine.cpp @@ -187,6 +187,8 @@ void DiagramLayoutEngine::layoutMainRouteInternal( int oppositeFlag = static_cast(DirectionManager::getOpposite(mainDir)); bool isHorizontal = DirectionManager::isHorizontal(mainDir); int spacing = isHorizontal ? config.horizontalSpacing() : config.verticalSpacing(); + if(components.size() == 2) //两个元件的主线拉长(特殊处理) + spacing *= 2; // 计算分段索引 int nSeg = components.size() - 1; // 实际段数 @@ -215,7 +217,11 @@ void DiagramLayoutEngine::layoutMainRouteInternal( delta.setY(nSegIndex * spacing); } - int rotate = DirectionManager::getRotationAngle(mainDir); + int rotate = 0; + if(i == 0 && (compo.nType == 6)) //单port元件队首反向 + rotate = DirectionManager::getRotationAngle(DirectionManager::getOpposite(mainDir)); + else + DirectionManager::getOpposite(mainDir); // 更新组件 updateComponent(compo, dirMask, delta, rotate, context); diff --git a/diagramCavas/source/diagramEditor/layoutCalculator.cpp b/diagramCavas/source/diagramEditor/layoutCalculator.cpp index 5b1c5cb..80054dd 100644 --- a/diagramCavas/source/diagramEditor/layoutCalculator.cpp +++ b/diagramCavas/source/diagramEditor/layoutCalculator.cpp @@ -198,13 +198,13 @@ void FixedLayoutCalculator::calculateBlockPositionsInContainer(DiagramEditorStru }*/ if (layer == 0) { // 上间隔 - center = QPointF(currentX + rec.width() * 0.5, + center = QPointF(currentX + rec.width() * 0.5 + centerOffset.x(), midUpY - rec.height() * 0.5 + centerOffset.y() - Constants::EDITOR_ITEM_HEIGHT * 0.5); } else if (layer == 3) { // 下间隔 - center = QPointF(currentX + rec.width() * 0.5, + center = QPointF(currentX + rec.width() * 0.5 + centerOffset.x(), midDownY + rec.height() * 0.5 + centerOffset.y() + Constants::EDITOR_ITEM_HEIGHT * 0.5); } - currentX += rec.width(); + currentX += rec.width() + CONTAINER_H_SPACING*0.5; } // 变压器不在这里处理 diff --git a/diagramCavas/source/graphicsDataModel/baseModel.cpp b/diagramCavas/source/graphicsDataModel/baseModel.cpp index 1a7e993..6c151d9 100644 --- a/diagramCavas/source/graphicsDataModel/baseModel.cpp +++ b/diagramCavas/source/graphicsDataModel/baseModel.cpp @@ -201,11 +201,11 @@ void BaseModel::selectNormalDevicePort( QMap mapDest = pDest->getPorts(); for (auto& port : mapSrc) - if (port->getType() == T_lineOut) + if (port->getType() == T_lineOut || port->getType() == T_lineInOut) pSrcPort = port; for (auto& port : mapDest) - if (port->getType() == T_lineIn) + if (port->getType() == T_lineIn || port->getType() == T_lineInOut) pDestPort = port; } }