找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 1526|回复: 17
打印 上一主题 下一主题

怎样在skill里调用另一个skill

[复制链接]

3

主题

84

帖子

289

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
289
跳转到指定楼层
1#
发表于 2013-9-10 10:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您!

您需要 登录 才可以下载或查看,没有帐号?注册

x
如题,各位大侠,怎样在skill里直接调用另一个skill呢,因为不想把需要调用的skill直接copy到另一个skill里,怎样才可以直接调用?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!

73

主题

688

帖子

2499

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
2499
推荐
发表于 2017-5-27 16:29 | 只看该作者
defun(Cont_smy1 ()         
        prog( (all e)
        all = length(axlDBGetDesign()->symdefs) ;53
        return(all)
        e = t
        ))
发现 return后的语句不会执行,return必需与prog 一起用才行。
后面两个我用打印println(e)发现都是t
2.我是在写成.il里
axlCmdRegister("return1" 'Cont_smy1)      
axlSetAlias("~a" "return1")                                 
defun(Cont_smy1 ()                                                         
                       prog( (all e)                                       
                       all = length(axlDBGetDesign()->symdefs) ;53         
                       e = t                                                
                       println(e)                                          
                       ))                                                   

这样在allegro按快捷键运行的。
3.怎样在allegro command下输入set telskill里运行,能把你的运行截图给我?(就是你上次的运行结果的界面+代码,一行一行输入试了,也不对)
我直接把上面的代码复制到set telskill里的skill窗口里,运行时nil




73

主题

688

帖子

2499

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
2499
推荐
发表于 2017-5-26 15:24 | 只看该作者
kevin890505 发表于 2017-5-25 22:12
skill里面的功能函数定义可以是全局的,所以skill调用skill和你skill里面调用一个功能是一样的,比如func ...

1_square_pad.i defun(square_pad (count)
                            。。。。。)
统计个数
2.check.il
load("1_square_pad.il");加载il文件                                                                                     
a = square_pad(y)                                                                             
               println(a)

发现打印出来的是t并不是数字4

点评

defun(Cont_smy1 () prog( (all e) all = length(axlDBGetDesign()->symdefs) ;53 return(all) e = t )) defun(Cont_smy2 () let( (all e) all = length(axlDBGetDesign()->symdefs) ;53  详情 回复 发表于 2017-5-26 16:19

24

主题

1796

帖子

8046

积分

六级会员(60)

Rank: 6Rank: 6

积分
8046
推荐
发表于 2017-5-26 16:19 | 只看该作者
王开鑫55 发表于 2017-5-26 15:24
1_square_pad.i defun(square_pad (count)
                            。。。。。)
统计个数

defun(Cont_smy1 ()          
        prog( (all e)
        all = length(axlDBGetDesign()->symdefs) ;53

        return(all)
        e = t
        ))
       
defun(Cont_smy2 ()               
        let( (all e)
        all = length(axlDBGetDesign()->symdefs) ;53
        e = t
        ))

defun(Cont_smy3 ()          
        prog( (all e)
        all = length(axlDBGetDesign()->symdefs) ;53
        e = t
        ))       
调用结果:
Skill > a = Cont_smy1()
53
Skill > b = Cont_smy2()
t
Skill > c = Cont_smy3()
nil

对比下你会发现点什么,同样的  你把最后的e=t删了  看又会返回什么

46

主题

183

帖子

1821

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1821
2#
发表于 2013-9-10 12:32 | 只看该作者
axlShell

3

主题

84

帖子

289

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
289
3#
 楼主| 发表于 2013-9-10 15:59 | 只看该作者

axlShell 的参数是t_command,如果这样做的话我需要把skill先做成菜单形式再进行调用,对吗?

9

主题

264

帖子

685

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
685
4#
发表于 2013-9-10 16:50 | 只看该作者
函数可以直接调用的
祝自己在的新的一年里,开心快乐多,伤愁离别少。

3

主题

84

帖子

289

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
289
5#
 楼主| 发表于 2013-9-10 16:59 | 只看该作者
shirdon 发表于 2013-9-10 16:50
函数可以直接调用的

skill语言里的函数是可以直接调用的。但是我写的skill想在另一个skill里调用,要怎么做呢?

7

主题

444

帖子

4989

积分

EDA365版主(50)

Rank: 5

积分
4989
6#
发表于 2013-9-10 17:22 | 只看该作者
zhanyying 发表于 2013-9-10 16:59
skill语言里的函数是可以直接调用的。但是我写的skill想在另一个skill里调用,要怎么做呢?

上代码

3

主题

84

帖子

289

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
289
7#
 楼主| 发表于 2013-9-10 17:34 | 只看该作者

版主的意思是要把调用的skill程序贴到l另一个skill里呢?还是说让我把代码贴这里呢?
如果是第一种,我知道怎么做,我是不想贴才问有什么好方法。
如果是第二种呢,我没有具体的代码。就是想在skill里可以调用script,那在skill里可以调用另一个skill 吗?

7

主题

444

帖子

4989

积分

EDA365版主(50)

Rank: 5

积分
4989
8#
发表于 2013-9-10 17:38 | 只看该作者
我不明白你说的一个skill调用另一个skill是什么意思,什么样叫一个skill?   一个skill文件?
先全部load进内存然后在一个skill运行过程中调用另一个的入口函数,这有什么困难吗

3

主题

84

帖子

289

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
289
9#
 楼主| 发表于 2013-9-10 17:40 | 只看该作者
呵呵,可能我说的不够专业,不过我明白你的意思了,谢谢了{:soso_e100:}

11

主题

148

帖子

1465

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
1465
10#
发表于 2013-9-10 21:33 | 只看该作者
各文件都load进来。就可以直接用了。

9

主题

264

帖子

685

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
685
11#
发表于 2013-9-14 14:36 | 只看该作者
本帖最后由 shirdon 于 2013-9-14 14:46 编辑
ifuture 发表于 2013-9-10 21:33
各文件都load进来。就可以直接用了。


正解,在allegro.ilinit里,
load("1.il")
load("2.il")

1.il 内容:

defun( _try ( a b)    注意函数名try与 (a b)之间有空格   
      ...  ...
        )

2.il 内容:

defun( _call ( c d)
       _try(c d)      调用try函数时,try与 (c d)之间不能有空格空格
)

实现调用
祝自己在的新的一年里,开心快乐多,伤愁离别少。

24

主题

1796

帖子

8046

积分

六级会员(60)

Rank: 6Rank: 6

积分
8046
12#
发表于 2013-12-10 16:59 | 只看该作者
procedure( quick_open(t_open)
    if(!boundp('EVER_LAUNCHED) then
     axlShell("qview")
          axlShell("grids")
      EVER_LAUNCHED = t
    )
)
if(axlVersion('version)>15.7 then
  axlTriggerSet('open 'quick_open)

啥都不说,这就是用法

点评

A.skill调用B.skill,怎么把B.SKILL得到的满足条件的个数在A.skill里处理  详情 回复 发表于 2017-5-25 16:13
A.skill调用B.skill,怎,直接拿过来不行,未定义么把B.SKILL得到的满足条件的个数在A.skill里处理  详情 回复 发表于 2017-5-25 16:13

73

主题

688

帖子

2499

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
2499
13#
发表于 2017-5-25 16:13 | 只看该作者
kevin890505 发表于 2013-12-10 16:59
procedure( quick_open(t_open)
    if(!boundp('EVER_LAUNCHED) then
     axlShell("qview")

A.skill调用B.skill,怎,直接拿过来不行,未定义么把B.SKILL得到的满足条件的个数在A.skill里处理

73

主题

688

帖子

2499

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
2499
14#
发表于 2017-5-25 16:13 | 只看该作者
kevin890505 发表于 2013-12-10 16:59
procedure( quick_open(t_open)
    if(!boundp('EVER_LAUNCHED) then
     axlShell("qview")

A.skill调用B.skill,怎么把B.SKILL得到的满足条件的个数在A.skill里处理

点评

skill里面的功能函数定义可以是全局的,所以skill调用skill和你skill里面调用一个功能是一样的,比如funca(a b c),你可以在另一个skill里面调用funca(d e f),返回你想要的参数d/e/f直接用就可以了  详情 回复 发表于 2017-5-25 22:12

24

主题

1796

帖子

8046

积分

六级会员(60)

Rank: 6Rank: 6

积分
8046
15#
发表于 2017-5-25 22:12 | 只看该作者
王开鑫55 发表于 2017-5-25 16:13
A.skill调用B.skill,怎么把B.SKILL得到的满足条件的个数在A.skill里处理

skill里面的功能函数定义可以是全局的,所以skill调用skill和你skill里面调用一个功能是一样的,比如funca(a b c),你可以在另一个skill里面调用funca(d e f),返回你想要的参数d/e/f直接用就可以了   

点评

1_square_pad.i defun(square_pad (count) 。。。。。) 统计个数 2.check.il load("1_square_pad.il");加载il文件  详情 回复 发表于 2017-5-26 15:24
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2024-11-23 03:04 , Processed in 0.071591 second(s), 41 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表