⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 find_dlines.il

📁 ALLEGRO SKILL SAMPLE CODE
💻 IL
📖 第 1 页 / 共 4 页
字号:
;########################################################################
;#                                                                      #
;#                Header Section                                        #
;#                                                                      #
;########################################################################
;
; Date Created: December 22, 1995
; Tested with Allegro Release:  11.0 - 9502
; Name of this file: find_dlines.il
; Written by Larry Bowman (bowman@cadence.com)
;
;
; 1-5-96 Added option of leaving traces hilighted.
;        added to comment section
;        changed 'ars' references to 'skill'
;
; 1-8-96 Corrected problem with registering command name
;
;      Revision: June 18, 1996
;            By: Larry Bowman - Cadence Technical Services
;         email: bowman@cadence.com
;     Telephone: 512-349-1109
; Modifications: Modified this program to have a form driven interface.
;                The form will display all the dangling clines and
;                dangling lines.  From the form, the user may select
;                any of the dangling clines or dangling lines by their
;                XY locations and the program will dehilite the other
;                dangling (C)lines and hilite the one selected and zoom
;                into the problem (C)line.  The user may delete the
;                dangling (C)line individually or the entire list at one
;                time.  Users need to be aware that some designers may
;                put lines on the Etch Class when adding company logos
;                or other information and these items will be considered
;                "dangling" lines.  Basically, any (C)line without a net
;                name on the ETCH class is, by definition, a dangling
;                (C)line.
;
;                When an item is selected from the list, a "Show Element"
;                window will appear with the data as if the Show Element
;                command was executed on the selected item.
;
;                If the Show Element window does NOT appear or the data
;                in the Show Element window does NOT update, then it is
;                likely that this selection is on an ETCH/CONDUCTOR subclass that
;                is invisibile.  To see this data, turn on the visibility
;                from the DISPLAY->Color/Visibility menu selection.
;
;
;                The command was changed from "find dang" to "find_dang"
;                as a work around for a bug in BoardQuest.
;
; 7-6-98  Made the following changes to be compatible with Allegro 12.x and
;         Allegro 13.x
;         1.  Changed the argument to axlDBCreateExternalDRC from
;             "drc error/" to "drc error class/".
;         2.  Corrected problem with X/Y locations not being
;             displayed in the list boxes.
;
; 01/25/2006 Modified the skillMakeDangList function to also find clines with an
;			empty string "" for a net name.
;
;########################################################################
;# WARNING: The form may not display the XY locations in the lists      #
;#          occasionally.  The work around is to select the "Redisplay" #
;#          in the form's window banner with the Right Mouse button.    #
;#          This will bring the XY locations into the list.  If anyone  #
;#          can determine why this is happening, and has a fix, please  #
;#          let me know.  - Larry Bowman                                #
;########################################################################
;########################################################################
;#                                                                      #
;#                Comment Section                                       #
;#                                                                      #
;########################################################################
;
; This program will check an APD design for any "dangling"
; cline segments, mark all the "dangling" Cline segments with a
; user definded DRC marker and hilite all dangling Clines found.
;
; If the user elects NOT to delete the "dangling" cline, then these
; "dangling" cline segments will remain with a user defined DRC marker.
; To remove these user defined DRC markers, issue the command:
;     APD>  rmdrcs
; Or select the "Remove DRCs" button from the "Find Dangling Clines
; and Dangling Lines" form.
;
; Any stand alone vias or clines with net names that are dangling,
; (Actully called 'hanging' traces) may be removed with the APD gloss
; program.
;
; A "dangling" cline is any cline in the design that does not have a net
; name associated with it.
;
; The APD summary report (-v sum) reports both hanging AND dangling in
; the dangling_lines.log.
;
; This program will also find any line segments in the design that
; are on the CLASS->ETCH layers and perform the same way as mentioned
; above for cline segments.
;
;
; This APD Skill program may be loaded automatically
; when APD is invoked by creating an apd.ilinit
; file in the user's pcbenv directory (i.e., ~/pcbenv/apd.ilinit).
;
; The apd.ilinit file could look like the following:

;----------- Start of apd.ilinit file -----------------------------
;setSkillPath(". ~/scripts/SKILL.sav /cds/9502/ibm/tools/pcb/etc/skill")
;load("find_dlines.il")
;----------- End of apd.ilinit file --------------------------------
;
; Where this file, find_dlines.il, is located in one of the directory paths
; as defined by the setSkillPath function.
;
; Note:  If you ever change the APD Skill path with the setSkillPath
;        function as noted above, ALWAYS be sure to include the period(.),
;        which is the current working directory, as part of the search path
;        definition.  There are some APD commands that expect to see the
;        current working directory as part of the search path and will fail
;        if it is not part of the search path.
;
;        Also, most of the Skill functions that do file access will use the
;        setSkillPath value as the directory paths to perform their file
;        reads and writes.
;
; The command to type in the APD editor to invoke this program is:
;    APD>  find_dang
;
; There is also a command that will remove the DRC bow ties.  This comand is:
;    APD>  rmdrcs
;
;
;###################### End Of Comment Section ##########################

;########################################################################
;#                                                                      #
;#                Main Program skillFindDang                            #
;#                                                                      #
;########################################################################
axlCmdRegister("find_dang" 'skillFindDang)
axlCmdRegister("rmdrcs" 'skillDeleteDrcs)


(defun skillFindDang ()

; create find_dline.form file
 _createForm()

; set variables
l_alldang = list()
selected_dbid = nil
lineList = nil
dangList = nil
linecheck = nil
clinecheck = nil


; create the form symbol and display
Form=axlFormCreate( (gensym) form_file nil 'Form_Action t)
axlFormDisplay(Form)

; Setup the Form
_setup()


; Remove form_file from disk
deleteFile(form_file)

) ; end skillFindDang
;########################################################################
;#                                                                      #
;#                End of Main Program skillFindDang                     #
;#                                                                      #
;########################################################################

;##################################
;#   Function Form CallBack       #
;##################################

;---------------------------------------------------
;|                                                 |
;|  This function determines what APD commands |
;|  to execute, based on the user's selection from |
;|  the Find Dangling form.                        |
;|                                                 |
;---------------------------------------------------
  (defun Form_Action (Form)
    (case Form->curField

     ("delete_all_clines" axlUIWPrint(Form "Deleting ALL Dangling Clines.")
                          axlUIWPrint(nil "Deleting ALL Dangling Clines.")
                          _deleteAllClines()
                          axlFlushDisplay()
                          selected_dbid = nil)

     ("delete_all_lines" axlUIWPrint(Form "Deleting ALL Dangling Lines.")
                         axlUIWPrint(nil "Deleting ALL Dangling Lines.")
                         _deleteAllLines()
                         axlFlushDisplay()
                         selected_dbid = nil)

     ("cline_list" sel_cline = t
                   _zoomin2(l_clinedang "c")
                   )

     ("line_list" sel_cline = nil
                  _zoomin2(l_linedang "l")
                   )

     ("delete_one"
              _deleteXY()
              selected_dbid = nil
              ) ; delete_one


     ("find_clines" axlUIWPrint(Form "Looking for Dangling Clines with no netname.")
                axlUIWPrint(nil "Looking for Dangling Clines with no netname.")
                clinecheck = t
                _find_Clines()
                axlFlushDisplay() )

     ("find_lines" axlUIWPrint(Form "Looking for Dangling Lines.")
                axlUIWPrint(nil "Looking for Dangling Lines.")
                linecheck = t
                _find_Lines()
                axlFlushDisplay() )

     ("remove_drcs" axlUIWPrint(Form "Clearing DRCs.")
                    axlUIWPrint(nil "Clearing DRCs.")
                    skillDeleteDrcs()
                    axlFlushDisplay() )

     ("remove_hilite"
                      if(!axlOKToProceed() then
                        axlFlushDisplay()
                      else
                       if(clinecheck then
                        if(car(dangList)->objType then
                          axlUIWPrint(Form "Dehiliting Clines.")
                          axlDehighlightObject( dangList)
                        else
                          axlUIWPrint(Form "Dbids out of date; rechecking Clines . . .")
                          _find_Clines()
                          axlDehighlightObject( dangList)
                        ); endif
                       ); endif
                       if(linecheck then
                        if(car(lineList)->objType then
                          axlUIWPrint(nil "Dehiliting Lines.")
                          axlDehighlightObject( lineList)
                        else
                          axlUIWPrint(Form "Dbids out of date; rechecking Lines . . .")
                          _find_Lines()
                          axlDehighlightObject( lineList)
                        ); endif
                       ); endif
                        axlFlushDisplay()
                      );endif
                      )

     ("done" if(axlOKToProceed() then
               (axlFlushDisplay)
               (axlCancelEnterFun)
               (axlFormClose Form)
               else
                 axlUIWPrint(Form "End the current command and try again.")
                 axlUIWPrint(nil "End the current command and try again.")
             );endif
             ); end done


     ("pr_help"  _helpButton() )

    ); endcase

  ); end defun Form_Action
;##################################
;# End Function Form CallBack     #

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -