Home > Community > Forums > PCB SKILL > Adding text blocks

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: *

 Adding text blocks 

Last post Thu, Sep 4 2008 10:40 AM by admin. 8 replies.
Started by archive 28 Feb 2006 12:48 PM. Topic has 8 replies and 4125 views
Page 1 of 1 (9 items)
Sort Posts:
  • Tue, Feb 28 2006 12:48 PM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,930
    Adding text blocks Reply

    Does anyone know how to add new text blocks in Skill without calling a script? I am running an interactive command so calling a script is not an option.
    axlSetParam doesn't allow me to add a text block although I can alter existing text block parameters this way (despite the documentation).


    Originally posted in cdnusers.org by Dave Elder
    • Post Points: 0
  • Tue, Feb 28 2006 9:14 PM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,930
    RE: Adding text blocks Reply

    Don't know if you can do it directly with Skill. But perhaps you can have your Skill function fprintf the script you need, execute the script using an axlShell call and then get rid of the script file.


    Originally posted in cdnusers.org by AshCan
    • Post Points: 0
  • Tue, Feb 28 2006 9:58 PM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,930
    RE: Adding text blocks Reply

    I'm looking for this function too~~~ 


    Originally posted in cdnusers.org by leonlee
    • Post Points: 0
  • Wed, Mar 1 2006 11:41 AM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,930
    RE: Adding text blocks Reply

    Thanks, That's what I do. However it doesn't work within an interactive function and I can't use "general" because I get too many crashes. I may have to revert to creating text by drawing lines. Ugly!


    Originally posted in cdnusers.org by Dave Elder
    • Post Points: 0
  • Wed, Mar 1 2006 12:13 PM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,930
    RE: Adding text blocks Reply

    I don't know if this will work in an interactive command but you might want to try,

    1. Export a plot file containing recognizable text
    2. Import the plot file scaled (this will create new text blocks)
    3. Find the recognizable text
    4. Get the text block number of the text
    5. Modify text block as needed

    Of course all of this needs to be done using scripts...


    Another way could be to use a script to change the text block and put a command to restart your interactive procedure. (The trick is finding a way to save your data from one instance of the command to the other using attachments)


    Originally posted in cdnusers.org by natebizu
    • Post Points: 0
  • Thu, Mar 2 2006 6:53 PM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,930
    RE: Adding text blocks Reply

    yes, we can add new textblock by inporting scaled plot file.
    But the max textblock number is 64.
    And, if you modify an existed textblock, you will destroy this kind textblock's text.


    Originally posted in cdnusers.org by leonlee
    • Post Points: 0
  • Wed, Mar 15 2006 1:44 AM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,930
    RE: Adding text blocks Reply

    Programatically adding text blocks looks simple but actually is a slightly convoluted process. You only need one function but you need five arguments for it.

    (axlDBCreateText
        YourTextData                ;The text you want to write
        XY_Location                  ;Where you want to write the text
        OrientationStructure      ;Formatting for the text block
        LayerToWriteON           ;The layer where the block is written
       nil)                                  ;Attach the text to an object

    The slightly convoluted part is the OrientationStructure. You have to know about the super secret (make_axlTextOrientation...) function for the required structure.

    (setq OrientationStructure
        (make_axlTextOrientation
           ?textBlock "3"               ;see your text block definitions
           ?rotation 0                    ;degrees of rotation
           ?mirrored nil                 ;mirror left-right (i.e. for bottom layer)
           ?justify "LEFT"))           ;text justification

    You can get real fancy with this sort of thing. For example, I've got code for working with symbols, namely making them presentable (PDF) for client approval. It writes the part name, the IPC footprint  name, the number of padstacks used, the number of pins on the device, copyright statement and occasionally dirty jokes into the part drawings (*.dra).

    The symbol validition programs will (eventually) be added to the DesignTools project as soon as I find the time.


    Kind Regards,
    JCR


    Originally posted in cdnusers.org by J.C. Roberts
    • Post Points: 0
  • Mon, Mar 27 2006 4:50 AM

    • archive
    • Top 75 Contributor
    • Joined on Fri, Jul 4 2008
    • Posts 88
    • Points 4,930
    RE: Adding text blocks Reply

    Have you ever reread one of your own answers, only to realize you answered the WRONG question?

    I'm such an idiot. My appologies for the previous post.

    textBlocks are C-structs (a.k.a "user defined objects"), are read only by default and in general, there is no public SKILL interface for creating them.

    There is a way around the problems and you can create textBlock objects programatically in SKILL but the way to do it is highly convoluted.

    Dave said, "I am running an interactive command so calling a script is not an option."

    Actually, it is an option. The way this is done is you write a script file, execute the script file in the background in another instance of allegro, and then reload the database in your current instance.

    The script file does the work you want (adding a textblock), saves the database and exits. A second instance of Allegro is launched in -nographic mode along with the script through the (axlRunBatchDBProgram...) function in your first instance, so you never see the second instance. When the second instance is finished, the first instance of Allegro reloads the database and continues execution of your SKILL program.

    The only problem with this approach is that for that short time while the second instance of Allegro runs in the background, you have two licenses checked out.

    The attached code adds a single textBlock to your database. Also, this same method is useful for deleting all those unwanted layers from parts (*.dra) when they've been dumped from a board.

    kind regards,
    jcr


    Originally posted in cdnusers.org by J.C. Roberts
    • Post Points: 20
  • Thu, Sep 4 2008 10:40 AM

    • admin
    • Top 25 Contributor
    • Joined on Thu, Feb 7 2008
    • San Jose, CA
    • Posts 213
    • Points 1,375
    Re: RE: Adding text blocks Reply

     

    Irrelevant ranting deleted.  I just looked at the attachment. :)

    • Post Points: 5
Page 1 of 1 (9 items)
Sort Posts:
Started by archive at 28 Feb 2006 12:48 PM. Topic has 8 replies.