登录发现更多内容
首页
资讯
分类
目录
索引
酷站
发帖
用户名
Email
自动登录
找回密码
密码
登录
立即注册
立即登录
立即注册
其他登录
QQ
微信
门户
Portal
论坛
BBS
搜索
搜索
本版
用户
帖子
设置
我的收藏
退出
0
0
0
首页
FlexSim
›
【A*导航】如何用 FlexScript 动态添加 A* 导航的旅行成 ...
返回列表
【A*导航】如何用 FlexScript 动态添加 A* 导航的旅行成员
[ 复制链接 ]
CSN小助理
FlexSim
12
0
昨天 16:39
本帖最后由 CSN小助理 于 2026-10-23 16:39 编辑
问题描述:
在 FlexSim 中,A* Navigator(A* 导航器)通过 A* 算法在可通行网格上为任务执行器(Task Executor)规划行走路径,使其能自动绕开障碍物到达目标位置。要让某个 Operator 或 AGV 使用 A* 导航,必须先将其添加到 A* Navigator 的Travel Members(旅行成员)列表中,这一步通常是手动拖拽完成的。但在某些动态建模场景下,需要在模型重置时根据全局表配置数据动态创建 3D Operator。每个 Operator 对应表中的一行配置,人员数量和位置都可能随表数据变化而改变。此时如果每次重置都手动到 A* Navigator 里重新添加成员,建模效率极低,而且容易遗漏。核心矛盾在于:动态创建的 Operator 不会自动加入 Travel Members 列表,必须通过代码,否则 Operator 在行走时会走默认路径而不是 A* 规划路径。
尝试过以下写法均不生效:
// 错误写法 1:把 Navigator 当成数组 push
AStarNavigator.push(NewOperator);
复制代码
// 错误写法 2:直接点调用 addMember
AStarNavigator.addMember(NewOperator);
复制代码
解决方法:
A* Navigator 的 addMember 是内部函数,不能直接通过点号调用,需要通过 function_s 间接调用。正确写法如下:
treenode aStar = Model.find("AStarNavigator");
if (aStar)
function_s(aStar, "addMember", NewOperator);
复制代码
其中 NewOperator 是动态创建的 3D Operator 对象。将这段代码放在模型触发器的 On Reset(重置触发)中,在创建完 Operator 后立即调用,即可自动完成旅行成员的注册,无需手动添加。
验证是否添加成功:
运行模型后,双击打开 A* Navigator 对象;
在其属性面板的 Travel Members 列表中,应能看到动态创建的 Operator 对象已自动出现;
拖动 Operator 让其行走,观察路径是否走 A* 规划的网格路径而非默认直线。
点赞
0
收藏
0
────
0
人觉得很赞
────
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
举报
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
立即登录
点评
高级模式
本版积分规则
回帖后跳转到最后一页
返回
FlexSim
登录开启您的创作之旅
快速登录,立即开启您的创作之旅~
登录
热门问答
查看更多
1
厂区生产线布局优化案例!新做的!
厂区生产线布局优化案例!新做的!
12248
227
2
Flexsim二次开发之塔吊
Flexsim二次开发之塔吊
6256
45
3
FlexSim2016 中国象棋
FlexSim2016 中国象棋
6113
44
4
快递分拨中心案例~新手可参考
快递分拨中心案例~新手可参考
5715
62
5
关于Processs Flow 使用的两个案例(AGV Elevator案例/子母穿梭
关于Processs Flow 使用的两个案例(AGV Elevator案例/子母穿梭
5601
34
博主榜
Htenghui
+ 10630
白可露
+ 7753
liguanyu
+ 6759
4
Round2011
+ 6323
5
梁之安
+ 6321
6
zgh1120
+ 5341
7
ishelo
+ 4710
8
linweixu168
+ 3722
9
liuzhifan
+ 3628
10
adysunshine
+ 3566
首页
分类
目录
索引
我的