全球FlexSim系统仿真中文论坛
标题:
【TFT 2014.04.22 FlexSim仿真模型题(5)】
[打印本页]
作者:
慧娴亚伦
时间:
2014-4-22 10:30
标题:
【TFT 2014.04.22 FlexSim仿真模型题(5)】
问题描述:本题体现的是运用代码来统一进行批量实体属性的编辑。在实际模型制作过程中,我们可能碰到大批量相同实体(如仓库的货架)属性的统一修改,虽然我们可以通过复制实体的方式只需要修改一个实体,但某些情况下,修改会根据实体的数量或者位置有部分差别等(如给实体编号),此外有时此类修改还必须集成在GUI里,都需要我们编写一定的代码。
模型要求:
1 附件中有本题7.0的原始布局(本题中仅有暂存区实体),使用其他版本请也按照附件中的模型进行布局,以方便审核和对比;
2 如下图所示,通过修改全局表或标签的值,来控制批量修改实体名称;
3 如下图所示,通过修改全局表或标签的值,来控制实体是否显示3d外观;
4 允许添加您认为需要的任意实体或其他工具来实现效果。
提示:
请细心观察原题暂存区的排列和数量
作者:
missman
时间:
2014-4-22 11:12
标题:
刚把3的位置挪动了
[i=s] 本帖最后由 missman 于 2014-4-22 11:47 编辑 [/i]
抢占一楼[attach]1831[/attach]
本模型实现自动刷新功能,运行过程中,随时修改全局表,每隔1s刷新一次显示设置。
作者:
missman
时间:
2014-4-22 11:28
重置时刷新设置,修改了一下模型,请参考
作者:
lu1010265352
时间:
2014-4-22 11:31
[attach]1834[/attach]
作者:
大摸鱼
时间:
2014-4-22 12:32
一种简单的方法实现
作者:
lu1010265352
时间:
2014-4-22 12:49
循环
作者:
lu1010265352
时间:
2014-4-22 12:59
循环的那个刚才忘了检查,有个小错误
作者:
someone
时间:
2014-4-22 13:23
设定变量后,重置模型。
作者:
missman
时间:
2014-4-22 13:51
[b] [url=http://www.flexsim.asia/redirect.php?goto=findpost&pid=12202&ptid=4420]8#[/url] [i]someone[/i] [/b]
感觉你这个要逐个逐个的改暂存区的标签,没有实现“统一”这个要求吧。
作者:
yushaozheng1990
时间:
2014-4-22 14:07
[i=s] 本帖最后由 yushaozheng1990 于 2014-4-22 14:10 编辑 [/i]
[attach]1841[/attach][b] [url=http://www.flexsim.asia/redirect.php?goto=findpost&pid=12203&ptid=4420]9#[/url] [i]missman[/i] [/b]
刚看到楼主放题,上传的比较晚了,模型用两个全局表分别控制名称和显示,代码写在了模型重置触发当中,控制名称的全局表直接在表格中输入要修改的名称,显示的全局表输入数值为0、1,0代表显示,1代表不显示。比较简单,等待楼主提出意见。
作者:
lu1010265352
时间:
2014-4-22 19:39
[b] [url=http://www.flexsim.asia/redirect.php?goto=findpost&pid=12203&ptid=4420]9#[/url] [i]missman[/i] [/b]
只是为了看起来效果好而已,统一的改变操作还更简单点
作者:
慧娴亚伦
时间:
2014-4-22 20:02
[i=s] 本帖最后由 慧娴亚伦 于 2014-4-23 09:26 编辑 [/i]
回复3楼:
您的模型很好的实现了题目的要求。
不好意思,您的代码比较多,而且没有注解,看得有点晕了没看出如何操作哈。
恭喜您!您是第一个完成模型要求的活动参与者。
论坛ID为 missman 的朋友在第三层的回复是的第一个有效回复。获得积分5分。
本题将在2014年4月23日20时32分结束,其后的回复不计为有效回复。
作者:
慧娴亚伦
时间:
2014-4-22 20:31
[i=s] 本帖最后由 慧娴亚伦 于 2014-4-23 09:28 编辑 [/i]
回复5楼:
实现了题目中的要求。在此提出两点建议:
1、您的模型跟3楼的模型,在完成要求3的原理上是一样的,当然完成要求2的原理也是一样的。这种方式的缺点也显而易见,就是必须针对每一个实体进行名称修改,您认真看题目一开始的描述就应该知道,这个题目的最终目的是集成在GUI里面,用这种方式明显较为繁琐。
2、你是通过中间链接得到需要改变实体的引用,缺点跟建议1一样,在完成模型之后,单纯通过GUI来实现就非常不方便。
恭喜您!您是第二个完成模型要求的活动参与者。
论坛ID为 大摸鱼 的朋友在第五层的回复,获得积分4分。
作者:
慧娴亚伦
时间:
2014-4-22 20:35
[i=s] 本帖最后由 慧娴亚伦 于 2014-4-23 09:28 编辑 [/i]
回复7楼:
您的方法是针对性的修改每一个实体的名称,实现了要求2。但是针对要求3,当然可以通过调整实体对应的sx,sy和sz来调整,但是针对要求3,即仅仅改变实体是否显示3d图形,而言太过于繁琐了。
恭喜您!您完成了部分模型要求。
论坛ID为 lu1010265352 的朋友在第七层的回复,获得积分1分。
作者:
慧娴亚伦
时间:
2014-4-22 20:41
[i=s] 本帖最后由 慧娴亚伦 于 2014-4-23 20:07 编辑 [/i]
回复8楼:
完成的很好,似乎是使用了C++代码来实现。我个人由于对FlexSim使用C++代码进行编译并不熟悉,因此也不敢妄加评论。
不过由于您没有意识到,model中第一个实体不是暂存区而是Tools,导致实体新名称的编号会从2开始。
恭喜您!您是第三个完成模型要求的活动参与者。
论坛ID为 someone 的朋友在第八层的回复,获得积分1分。
作者:
慧娴亚伦
时间:
2014-4-22 20:50
[i=s] 本帖最后由 慧娴亚伦 于 2014-4-23 11:43 编辑 [/i]
回复10楼:
完成的不错,代码写在了模型重置触发中,实现了题目的要求。
但是您是否有认真看到提示呢?本题原题模型跟大家开了一个小玩笑,在x=-100,y=40的地方我还额外放了一个暂存区。
关于您模型的建议,已同时回复在13楼。
恭喜您!您是第四个完成模型要求的活动参与者。
获得积分1分。
作者:
yushaozheng1990
时间:
2014-4-22 21:31
标题:
RE: 【TFT 2014.04.22 FlexSim仿真模型题(5)】
[b] [url=http://www.flexsim.asia/redirect.php?goto=findpost&pid=12230&ptid=4420]16#[/url] [i]慧娴亚伦[/i] [/b]当时看到楼主提示的时候琢磨了半天也并不知道是咋回事,其实打开树看一下的话也不一定能发现,真的是没想到。对于GUI的使用暂时还不能应用的太好,所以还不能做出很好的模型,希望能在楼主最终的参考答案里学到有价值的东西。
作者:
missman
时间:
2014-4-23 08:57
[i=s] 本帖最后由 missman 于 2014-4-23 09:07 编辑 [/i]
[b] [url=http://www.flexsim.asia/redirect.php?goto=findpost&pid=12223&ptid=4420]12#[/url] [i]慧娴亚伦[/i] [/b]
根据题目截图可以看出,批量改名字只是序号递增,前面部分是一样的,因此我的程序是在全局表中指定名字的前面部分(单元格第一行,第三列字符串可以自定义)。
所谓的统一修改,就应该是一键式操作。因此我的设计思路就是:只需要在全局表设置1或者0就可以确定是否改为新的名字还是恢复到模型初始值(模型初始值以标签形式存储)
特此说明,请参考。
作者:
east0593
时间:
2014-4-23 20:09
攒积分
作者:
慧娴亚伦
时间:
2014-4-23 20:21
回复19楼:
虽然出于鼓励新手的考虑,并不在意模型雷同的情况,但是您至少也要思考一下题目的内容,甚至下载他人的模型是否也修改一下文件的名字呢?
支持活动非常欢迎,但是希望您能真正参与到题目的思考中来,我相信对于您FlexSim建模水平的提高是有一定帮助的。
恭喜您!您是第五个完成模型要求的活动参与者。
获得积分1分。
作者:
east0593
时间:
2014-4-23 20:25
[b] [url=http://www.flexsim.asia/redirect.php?goto=findpost&pid=12249&ptid=4420]20#[/url] [i]慧娴亚伦[/i] [/b]
感激涕零~下回肯定自己做一个~
作者:
慧娴亚伦
时间:
2014-4-23 20:49
本次TFT活动已经截止。
这是TFT活动的第五次正式活动,简单而方便地批量修改模型中指定实体的属性是一个模型灵活性的重要指标,一般会集成在GUI控制中。本题我原先认为应该属于较为简单的题目,因此还特意给大家藏了一个小彩蛋,没有认真观察的朋友可能会错过在model x=-100,y=40处的一个暂存区。大家的模型各不相同,都使用不同的方法完成了题目的要求,有的代码非常简单,有的代码则相对繁琐,3楼的模型还考虑到了恢复为修改之前的实体名称(不过由于代码比较复杂也没有注解,我一开始也不知道如何操作……)有兴趣的朋友可以多下载看看他人的模型,也许会对您有所启发。
本次题目一共有6位朋友得到了有效回复。他们的论坛ID分别是:
missman、大摸鱼、lu1010265352、someone、 yushaozheng1990、east0593
他们将获得指定积分,没有获得积分的朋友期待您的下次参与。
本次模型大家都能比较好的完成,之前我准备的参考模型与8楼的类似,不过使用的是我们常用的for循环命令。因此我也不准备放所谓的参考答案了。在此特别介绍一个FlexSim的对实体有顺序的命名的操作,7.0及以上版本在菜单view下面的Edit Selected Object。如下图所示位置可以给红选中实体统一改名。(5.0和6.0版本,这个界面在右键-编辑选中实体)
本次有6位朋友获得了活动积分,再次感谢大家的参与和支持,没有参与者活动将无法开展,希望各位还能继续支持TFT的接下来的活动,再次感谢!
作者:
carol
时间:
2014-8-8 10:32
参考了三楼的模型,在此说一声谢谢!非常感谢!
number label : “hideorshow", value:0 (0表示show,其他任何值都表示hide)
string label : "nameofqueue", value:love
forobjecttreeunder(model()) {
setname(a,concat(numtostring(getrank(a)-1),getlabelstr(current,"nameofqueue")));
switch_hideshape(a,getlabelnum(current,"hideorshow"));
}
作者:
慧娴亚伦
时间:
2014-8-9 12:39
回复23楼:
代码有误,您自己可以再检查一下。另外您是使用什么版本制作的,我用6.0到7.1的各个版本打开都有一点问题。
作者:
carol
时间:
2014-8-10 19:29
好的,我再检查一下,我也很好奇为何保存后重新打开就会出现这种情况。7.10版本。
作者:
CPF2000
时间:
2014-8-23 15:12
goooood
作者:
CPF2000
时间:
2014-8-23 15:36
goooood
作者:
xinglei
时间:
2014-11-18 16:44
顶
作者:
xinglei
时间:
2014-11-27 18:05
xuexi
作者:
zorsite
时间:
2015-12-27 20:22
[i=s] 本帖最后由 zorsite 于 2015-12-27 20:34 编辑 [/i]
非常感谢陈老师无私、辛勤的付出。阅读每一位作答者的代码,还要读懂、查找是否有问题,是一件非常辛苦的事情。每一个人掌握的知识不同,思路不同,编写代码的质量不同,这些都给阅读带来了非常大的难度。如果是一个学生,在学习的过程中不得不下苦功夫,这是必须的。但是对于一位已经掌握了Flexsim工具的人,不求回报的帮助论坛中的朋友,不耐其烦的指导新手,真的非常值得我们敬仰、值得们感激。
附件是我对这个题目的解决方法。采用的是常规思路,用for循环遍历实体,读取全局表进行设置。稍微改进的地方是我假设模型中还有其他类别的实体,比如处理器,吸收器等。因此在代码加入了甄别机制,只对暂存区实体进行改名。代码放在第一个暂存区的重置触发中。[attach]2916[/attach]
作者:
慧娴亚伦
时间:
2015-12-28 19:52
感谢加老师的理解,举办TFT活动让我也对flexsim有更深的理解,同时也通过这个平台累积了很多教学上的经验,更多情况还是互相学习,我个人认为只要一件事情认真去做好了,无论为谁做,自己都会从中有收获的。
:)
欢迎光临 全球FlexSim系统仿真中文论坛 (http://www.flexsimasia.com/)
Powered by Discuz! X3.3