如何用skill批量删除instance中的user property
这是我随手写的啊,没时间去跑,应该差不多吧:
propName = “You_Give_A_Name_Here”
cv = hiGetCurrentWindow()->cellView;; 得到现在打开的编辑窗口
insts = cv-> instances
foreach(inst insts dbDeletePropByName(inst propName) )
dbSave(cv)
dbClose(cv)
非常感谢您的回答!我试了一下,可以的!随手写的都可以!但需要打开电路图,
我是想对一个库进行操作,
把每个电路中instance的User Property都删掉,如果用ProName,要一个个写,好麻烦
有更好的方法吗
那改一下很容易,还是没跑过啊,你自己试一下,差不多就应该是这样了 ...
propName= “You_Give_A_Name_Here”
libName= "Tell_Me_Your_Lib_Name_Here"
viewName= "Tell_Me_Which_View_To_Process"
libId = ddGetObj(libName)
libCells = libId ->cells
foreach(cell libCells
when( cv = dbOpenCellViewByType(libId->name cell->name viewName "" "a")
printf("Processing %s/%s/%s ...\n" libId->name cell->name viewName)
insts = cv-> instances
foreach(inst insts dbDeletePropByName(inst propName) )
dbSave(cv)
dbClose(cv)
) ;; when
) ;; foreach
谢谢您的热心解答。直接对库进行操作我仿照您的代码已经实现了。
还是有一个问题要麻烦一下:
比如我要删掉这些User Property
按照您的代码,ProName 要写的太多了,也有可能误删,怎样用代码直接批量删掉这些User Property
看来你想删掉所有的用户属性,那就闭起眼睛来删就好了:
libName= "Tell_Me_Your_Lib_Name_Here"
viewName= "Tell_Me_Which_View_To_Process"
libId = ddGetObj(libName)
libCells = libId ->cells
foreach(cell libCells
when( cv = dbOpenCellViewByType(libId->name cell->name viewName "" "a")
printf("Processing %s/%s/%s ...\n" libId->name cell->name viewName)
insts = cv-> instances
foreach(inst insts
props = inst->prop
foreach(prop propsprintf("Deleting inst:%s property %s ...\n" inst->name prop->name)
dbDeletePropByName(inst prop->name) ))
dbSave(cv)
dbClose(cv)
) ;; when
) ;; foreach
谢谢您的耐心解答,参考您的代码,我的问题已经完全解决了,谢谢!
闭起眼睛删除属性的代码要慎用。
恩,您的“闭起眼睛”代码除了会把user property删掉,还会把有用的cdf信息也删掉但我删之前把w l m这类参数都保存了一下,删完再重新赋值。这样做应该没问题了吧
谢谢啊
这里面的函数仅仅会删除掉用户定义的属性(User Property),如果是CDF参数的话,这是删不掉的,需要用其他的函数才能做到,所以,对CDF参数请放心,不会动到。用户属性和CDF参数在Property显示表中是分开显示的,中间有一个横隔线。
恩,谢谢提醒。您帮了我大忙!