• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Custom IC SKILL
  3. geHiDragFig with options form and continuous updates

Stats

  • Locked Locked
  • Replies 3
  • Subscribers 143
  • Views 10027
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

geHiDragFig with options form and continuous updates

patschouly
patschouly over 4 years ago

Hi all,

I'm implementing a dialog similar to the 'Create Instance'-Dialog in layout, where you see a ghost object of what you are about to place with a corresponding options form. The ghost updates when the form is updated. After some digging I found some posts about geHiDragFig which can be used to implement something similar. I'm placing some shapes (depending on the entries of the corresponding form) in a sratch cell which are used as selSet for geHiDragFig. This sort of works, however, I have a remaining issue: I use the form as form argument for geHiDragFig, but the ghost is not updated on form data entry. But when I actually place the cell, I get the updated shapes, so it seems as geHiDragFig is not respecting the change in the shapes. Is this just how it works (and is there possible a workaround) or am I doing something wrong? Here is roughly what I'm doing:


    res = geHiDragFig(geGetEditCellViewWindow(geGetEditCellView()) optform "" "Enter Destination Point" "Move" scratchshapes t list(0 0))
    pt = car(cdadr(res)) ; get destination point
    foreach(shape scratchshapes dbCopyShape(shape geGetEditCellView() list(pt "R0" 1)))
       

scratchshapes is updated in a callback that is tied to the fields of the forms, that is, when the form is updated the scratch cell is updated, which I can verify, since the correct shapes are copied in the end.

Thanks, kind regards,

Patrick

  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett over 4 years ago

    Hi Patrick,

    You've not included the bit of the code that matters here - you talk about the entries on the form affecting the ghost shapes, and so I'd like to see how you are trying to do that. I'm not aware of any way of updating the drag set after the form has started (my wild guess is that your code is updating the variable scratchshapes; there's nothing to trigger the ghosting to update based on the change to the variable). Is that what you're doing?

    I did find a CCR (change request) 1750891 asking for the ability to update the drag set during the operation of geHiDragFIg, but it's not been implemented. If that's what you want, you may want to contact customer support to request this.

    Regards,

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett over 4 years ago

    Hi Patrick,

    You've not included the bit of the code that matters here - you talk about the entries on the form affecting the ghost shapes, and so I'd like to see how you are trying to do that. I'm not aware of any way of updating the drag set after the form has started (my wild guess is that your code is updating the variable scratchshapes; there's nothing to trigger the ghosting to update based on the change to the variable). Is that what you're doing?

    I did find a CCR (change request) 1750891 asking for the ability to update the drag set during the operation of geHiDragFIg, but it's not been implemented. If that's what you want, you may want to contact customer support to request this.

    Regards,

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
  • patschouly
    patschouly over 4 years ago in reply to Andrew Beckett

    Hi Andrew,

    I'm using a scratch cell where I'm putting the intermediate shapes into. This is done via the callback of the form (which every field has), which does something like

        cv = dbOpenCellViewByType("testlib" "scratchcell" "layout" "maskLayout" "s")
        generateShapesFromOptionsForm(cv)
        ;scratchshapes = cv->shapes ;tried it like this, or directly via cv->shapes

    and then I use the shapes as

        cv = dbOpenCellViewByType("testlib" "scratchcell" "layout" "maskLayout" "s")
        geHiDragFig(geGetEditCellViewWindow(geGetEditCellView()) optform "" "Enter Destination Point" "Move" cv->shapes t list(0 0))

    (which is almost the same as above, I've tried it both ways. I thought it might make a difference, using a global variable to store the shapes)

    So yes, as you rightly assumed, I'm updating scratchshapes. If I understand correctly, I want the same as CCR 1750891. Is there a certain way to reference that request or should I just give the number to customer support, in case of a new request?

    Thank you and kind regards,

    Patrick

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to patschouly

    Hi Patrick,

    The issue is two-fold - the geHiDragFig doesn't know what the variable is, because the arguments to the function are evaluated before its called - so it only sees the value in the scratchshapes variable, and if that variable is reassigned later, the variable then points to a new value and the original value is unaffected; secondly, it generates the "drag set" (the info it uses to draw the drag shapes) at the time the function is called.

    So yes, I believe you want the same as that CCR. The best thing is to just mention that CCR number when contacting customer support and say that you need a duplicate - you can also give the URL of this post thread so they understand the context of your question.

    Regards,

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information