# ddei-autolink **Repository Path**: wangscript/ddei-autolink ## Basic Information - **Project Name**: ddei-autolink - **Description**: 该包用于在两个图形之间生成链接路径,实现自动连线功能、并返回中间节点。 特性: 1.自动躲避障碍 2.寻找看起来尽可能美观的路径功能 3.够通过优先级影响寻路结果 - **Primary Language**: JavaScript - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://www.ddei.top/ss/Bcvrok - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-06-24 - **Last Updated**: 2024-06-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ddei-autolink #### 介绍 该包用于在两个图形之间生成链接路径,实现自动连线功能、并返回中间节点。
特性:
1.自动躲避障碍
2.寻找看起来尽可能美观的路径功能
3.够通过优先级影响寻路结果
感兴趣的朋友可以通过ddei-在线设计器体验效果
效果预览:
https://www.ddei.top/ss/Bcvrok
如有问题可以联系QQ:3697355039
#### 安装教程 1. `npm i ddei-autolink` #### 使用说明 1. 引入包 `import { calAutoLinePath, getRecommendPath } from 'ddei-autolink'` 2. 构建开始点和结束点信息 参考以下例子构建json对象,包含:点坐标、开始图形的外接矩形、开始点相对于所在外接矩形中心点的角度/方向 三个属性 ``` let startPoint = { point: { //点坐标 x: x, y: y }, rect: {x:startX,y:startY,x1:endX,y1:endY,width:width,height:height}, //外接矩形 angle: -90, //角度-90上、0右、90下、180左,传入角度可以不传方向 direct:1 //方向1上、2右、3下、4左,传入方向可以不传入角度 }, ``` 3. 构建障碍物(该步骤可以省略) 参考以下例子构建json数组,每个子元素代表一个障碍物,包含:外接点集合,开始结束标识。开始和结束点所在的外接矩形也需要加入障碍物中。 ``` let obis = [] //创建一个障碍物并加入障碍物数组中 let obj = { points: [ //当前障碍物的多个外接点,按顺时针顺序传入,点的数量>2 {x:0,y:0}, {x:100,y:0}, {x:100,y:100}, {x:0,y:100} ], isStartOrEnd:true/false //开始结束标识,如果当前障碍物是开始结束节点所在的图形,则传入true,否则false } obis.push(obj) ``` 4. 获取推荐路径(该步骤可以省略) 通过调用getRecommendPath方法获取推荐路径,推荐路径是预置路径,可以在寻路时影响寻路结果,使寻路结果更倾向于美观 其中sAngle、eAngle 为开始点和结束点的角度,取值为-90上、0右、90下、180左 startPoint, endPoint 为开始点和结束点 startRect, endRect 为开始和结束点所在的外接矩形 这六个参数都可以在步骤1获取。 ``` let recommendPaths = getRecommendPath(sAngle, eAngle, startPoint, endPoint, startRect, endRect) ``` 5. 调用calAutoLinePath方法生成路径 ``` let linePathData = calAutoLinePath( startPoint, //第二步构建的开始点 endPoint, //第二步构建的结束点 obis, //第三步构建的障碍物 { //如果需要使用推荐路径或者强制路径功能,则需要传入此参数,其余情况可以不传 recommendPaths: recommendPaths, //第四步的返回值 forcePaths: forcePaths, //强制路径,如果没有可以不传入 recomWeight: 100, //推荐路径权重,默认100 rectMidWeight: 50 //矩形中线权重,默认50 }) ``` 6. 读取pathPoints,获取连线路径,第一个元素为开始点,最后一个元素为结束点,其余为中间经过的点 ``` let pathPoints = linePathData.pathPoints let startPathPoint = pathPoints[0] //开始点 let endPathPoint = pathPoints[pathPoints.length-1] //结束点 ``` #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request