在线咨询 切换到宽版
eetop公众号 创芯大讲堂 创芯人才网

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜全文
楼主: bingyue789

[求助] 求一个另存并且替换的小程序

[复制链接]
 楼主| 发表于 5 天前 | 显示全部楼层


   
pweo 发表于 2025-12-18 17:15
我按照你的需求写了一个,设了快捷键Ctrl+3,你试试:


谢谢,很好用。
回复

使用道具 举报

 楼主| 发表于 5 天前 | 显示全部楼层


   
pweo 发表于 2025-12-18 18:05
在定义这两个函数 backupSaveAs(),ReplaceIns() 的时候要把你需要的这两个参数写到参数列表里,调用的时候 ...


能给编译一下吗?新手刚学了2天,不知道变量放在哪里合适
回复

使用道具 举报

发表于 4 天前 | 显示全部楼层


   
bingyue789 发表于 2025-12-18 18:09
谢谢,很好用。


不客气
回复

使用道具 举报

发表于 4 天前 | 显示全部楼层


   
bingyue789 发表于 2025-12-18 18:12
能给编译一下吗?新手刚学了2天,不知道变量放在哪里合适


就是你用procedure()来定义函数的时候,可以带参数也可以不带参数,比如你这里调用自定义函数ReplaceIns()时候,需要自己选lib和新cell name,那这两个就是需要传递给这个函数ReplaceIns()的参数,在用procedure定义的时候就要把参数列表带上,格式就是:
procedure(ReplaceIns(libname  cellname)
             ;;;函数正文;;;
          )
回复

使用道具 举报

 楼主| 发表于 4 天前 | 显示全部楼层
本帖最后由 bingyue789 于 2025-12-19 11:04 编辑


   
pweo 发表于 2025-12-19 10:00
就是你用procedure()来定义函数的时候,可以带参数也可以不带参数,比如你这里调用自定义函数ReplaceIn ...


谢谢,我试试。

我原本思路是:只调用两个函数 SaveAs 和 leReplaceAnyInstMaster ,先调用SaveAs 窗口,输入  LibName 和 CellName
然后把 LibName 和 CellName 传递给 leReplaceAnyInstMaster ,程序应该会很小。不知道能不能实现?


如果SaveAs不行还可以用hdbSaveAs 或者用 hdbSaveACopy
回复

使用道具 举报

发表于 4 天前 | 显示全部楼层


   
bingyue789 发表于 2025-12-19 10:58
谢谢,我试试。

我原本思路是:只调用两个函数 SaveAs 和 leReplaceAnyInstMaster ,先调用SaveAs 窗口, ...


你说的SaveAs窗口是指工具栏 "File"-->"Save a Copy" 调出来的窗口吗,我理解这个窗口只能将当前打开的layout cell另存一个cell,不能将当前layout 窗口中所选中的一个cell另存,如果想另存,也要先进到所选cell的层次里面才可以另存,另存之后要替换,也要先退出来再调用Properties窗口进行替换;如果你说的saveas是一个函数,目前我没有在api里面找到这个函数
回复

使用道具 举报

 楼主| 发表于 4 天前 | 显示全部楼层


   
pweo 发表于 2025-12-19 13:57
你说的SaveAs窗口是指工具栏 "File"-->"Save a Copy" 调出来的窗口吗,我理解这个窗口只能将当前打开的la ...


可以这样做 :先  leHiEditInPlace 进到里,然后 geSaveAs ,再 leReturn 返回上一层就可以了
procedure(SaveAsTest()
          leHiEditInPlace()
          geSaveAs()
          leReturn()
)
上面这个小程序是可以运行的,现在还是参数怎么继承到 leReplaceAnyInstMaster 这里面来。

下面是我搞不定部分:
hiSetBindKey("Layout" "<Key>#" "SaveAsReplace()" )
procedure(SaveAsReplace()
        Inst=car(geGetSelectedSet())
        backupLib  = Inst~>libName
        backupCell = Inst~>cellName
        orgview =    Inst~>viewName

        leHiEditInPlace()
        geSaveAs(""  backupLib backupCell orgview)
       leReturn()

        leReplaceAnyInstMaster(
            Inst~>id
            backupLib
            backupCell
            Inst~>viewName
        )
)


回复

使用道具 举报

发表于 4 天前 | 显示全部楼层


   
bingyue789 发表于 2025-12-19 14:32
可以这样做 :先  leHiEditInPlace 进到里,然后 geSaveAs ,再 leReturn 返回上一层就可以了
procedure( ...


调用save as窗口后,填入lib和cell名,可以用语句"geSaveAdForm->libName->value"和"geSaveAdForm->cellName->value"取出刚刚填入的参数名,就可以往下传递了
回复

使用道具 举报

 楼主| 发表于 4 天前 | 显示全部楼层
本帖最后由 bingyue789 于 2025-12-19 18:17 编辑


   
pweo 发表于 2025-12-19 16:21
调用save as窗口后,填入lib和cell名,可以用语句"geSaveAdForm->libName->value"和"geSaveAdForm->cellN ...


写好了,测试可以用

hiSetBindKey("Layout" "<Key>#" "SaveAsReplace()" )


procedure(SaveAsReplace()

        leHiEditInPlace()
        geSaveAs()
                backupLib  = geSaveAsForm->libName->value
                backupCell = geSaveAsForm->cellName->value
                backupView = geSaveAsForm->viewName->value
        leReturn()
        leReplaceAnyInstMaster(car(geGetSelectedSet()) backupLib backupCell backupView)
)

回复

使用道具 举报

发表于 昨天 09:46 | 显示全部楼层


   
bingyue789 发表于 2025-12-19 17:04
写好了,测试可以用

hiSetBindKey("Layout" "#" "SaveAsReplace()" )


厉害,你这个更简洁了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

手机版| 小黑屋| 关于我们| 联系我们| 用户协议&隐私声明| 版权投诉通道| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 ) |网站地图

GMT+8, 2025-12-23 20:58 , Processed in 0.018228 second(s), 3 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表