Home > Community > Forums > Custom IC SKILL > Restoring an object after dbDeleteObject

Email

* Required Fields

Recipients email * (separate multiple addresses with commas)

Your name *

Your email *

Message *

Contact Us

* Required Fields
First Name *

Last Name *

Email *

Company / Institution *

Comments: *

 Restoring an object after dbDeleteObject 

Last post Wed, Nov 13 2013 1:28 AM by Andrew Beckett. 5 replies.
Started by acook 11 Nov 2013 09:23 AM. Topic has 5 replies and 1770 views
Page 1 of 1 (6 items)
Sort Posts:
  • Mon, Nov 11 2013 9:23 AM

    • acook
    • Top 500 Contributor
    • Joined on Thu, Oct 4 2012
    • Manchester, NH
    • Posts 29
    • Points 490
    Restoring an object after dbDeleteObject Reply

    Is it possible to save an object before I run dbDeleteObject so that it can be restored. I am working on a script where I may want to restore an instance I deleted.

    Is the only way to do this brute force by saving all of the instances properties?

    Example code:

    inst = car( cvid->instances); Get my instance

    backupInst = inst

    dbDeleteObject(inst); delete inst

    Both inst->?? and backupInst return:

         -> dbGetq: object is a purged/freed object - db:0x2057b31b

    What I want to do next:

    dbCreateObject(backupInst); A function that doesn't exist.....

    • Post Points: 20
  • Mon, Nov 11 2013 2:46 PM

    • psill000
    • Top 200 Contributor
    • Joined on Sat, Jun 1 2013
    • Posts 40
    • Points 755
    Re: Restoring an object after dbDeleteObject Reply

    If you don't have a dbSave in your script, you should be able to do an undo and get the inst/objects back.

     

    If you are wanting specific inst/objects, you are going to have to write to a file or create a variable to hold the deleted inst/object value.  

    • Post Points: 20
  • Mon, Nov 11 2013 2:53 PM

    Re: Restoring an object after dbDeleteObject Reply

    The simple answer to the original question is "no". The closest is hiUndo, as the previous poster explained.

    There's no dbCreateObject - you have to use the specific dbCreate.* function to recreate the object. Bear in mind that deleting some objects actually can delete multiple objects - for example, if you delete a net, it will delete any terminals on that net, plus any pins on those terminals (not the figures though). I think it deletes the instTerms too. So restoring it will not be that straightforward.

    I'd really advise against any methodology which relied on deleting something temporarily and then restoring, unless that objects is quite constrained - i.e. it's a known type of object which you can capture the info about an recreate using the appropriate API, rather than trying to make this work for any arbitrary kind of object.

    Regards,

    Andrew.

    • Post Points: 20
  • Tue, Nov 12 2013 1:49 PM

    • acook
    • Top 500 Contributor
    • Joined on Thu, Oct 4 2012
    • Manchester, NH
    • Posts 29
    • Points 490
    Re: Restoring an object after dbDeleteObject Reply

    OK. Thank you for the responses. The item in question is specifically an instance within a schematic so I can do as you say and just save specific properties required to reproduce the item (brute force but it works alright).

    I'm curious, could you do something like create a temporary cellview and the set the cellView property of the instance you are "deleting" so that it moves to the temporary cellView?

    tempCvid = A new schematic

    inst = some schematic instance

    inst->cellView

    -> db.....the original schematic Cvid

    inst->cellView = tempCvid

    Message: *Error* unknown: (DB-370034): dbSetq: Cannot set attribute - cellView

    Doesn't look like this is possible.

    • Post Points: 20
  • Tue, Nov 12 2013 2:08 PM

    • skillUser
    • Top 10 Contributor
    • Joined on Fri, Sep 19 2008
    • Austin, TX
    • Posts 2,598
    • Points 16,075
    Re: Restoring an object after dbDeleteObject Reply

    Correct, you cannot change the cellView attribute.  Using dbCopyFig() you could copy the instance to the scratch cellview:

    scv = dbOpenCellViewByType("test" "scratch" "schematic" "schematic" "s")
    dbCopyFig(car(geGetSelectedSet()) scv)
    

    I've assumed that the instance in question is selected in the schematic, but if you are working non-graphically in that cellview too, you could use something like dbFindAnyInstByName() to get the instance database ID.

    Hope this helps.

    Lawrence.

    • Post Points: 20
  • Wed, Nov 13 2013 1:28 AM

    Re: Restoring an object after dbDeleteObject Reply

    Or you could use dbMoveFig() instead to move it directly from one cellView to a scratch one, and then move it back again afterwards. That's even simpler.

    Regards,

    Andrew.

    • Post Points: 5
Page 1 of 1 (6 items)
Sort Posts:
Started by acook at 11 Nov 2013 09:23 AM. Topic has 5 replies.