Author Topic: How do you organize your lisp codes?  (Read 27564 times)

0 Members and 1 Guest are viewing this topic.

Keith™

  • Villiage Idiot
  • Seagull
  • Posts: 16899
  • Superior Stupidity at its best
Re: How do you organize your lisp codes?
« Reply #15 on: March 23, 2006, 11:34:07 AM »
Cab, that is exactly what I do, except I use it in the menu, not the mnl ... for example, if I have a menu item that draws a widget and that widget is drawn using a lisp program, I will use exactly that scenario .. instead of just putting the command on the menu item, I put the lisp call there to load the lisp if it is not already loaded.
Proud provider of opinion and arrogance since November 22, 2003 at 09:35:31 am
CadJockey Militia Field Marshal

Find me on https://parler.com @kblackie

CADaver

  • Guest
Re: How do you organize your lisp codes?
« Reply #16 on: March 23, 2006, 11:34:21 AM »
The MNL loads several lisp routines that contain dozens of functions that are menu/client specific.  One of these files also contain several lines of AUTOLOAD functions that will demand load those functions when needed.

Example:  This code fragment is in the MNL
Code: [Select]
(if (not (load "e:/programs/ac2002/menus/csa/sh2002C.lsp" nil))
  (progn
    (princ "loading error.")
    (princ "\nSH2002C.lsp not found.  Rel. 2002C Shorthand Commands are not enabled.  ")
  )
)

In addition to several dozen functions, that lisp routine (SH2002C) has the following lines (plus several dozen more):
Code: [Select]
(autoload "e:/programs/ac2002/menus/csa/PLOTTABS.lsp" '("PLOTTABS"))
(autoload "e:/programs/ac2002/menus/csa/lisp/tagarea.lsp" '("tagarea"))
(autoload "e:/programs/ac2002/menus/csa/lisp/solvol.lsp" '("solvol"))
(autoload "e:/programs/ac2002/menus/csa/lisp/xtools.lsp" '("xtools" "xo" "xa" "xow" "xox" "xoy" "xoz" "xaw" "xax" "xay" "xaz" "xon" "xan"))
(autoload "e:/programs/ac2002/menus/csa/lisp/dsclp.lsp" '("dsclp"))

That way the usual functions are fully loaded, but larger functions (tagarea, solvol) or functions that were "borrowed" from someone else (plottabs, xtools) are only loaded when needed.

Slim©

  • Needs a day job
  • Posts: 6566
  • The Dude Abides...
Re: How do you organize your lisp codes?
« Reply #17 on: March 23, 2006, 11:35:48 AM »
CADaver, I have mine setup similar to yours.
I drink beer and I know things....

CADaver

  • Guest
Re: How do you organize your lisp codes?
« Reply #18 on: March 23, 2006, 11:44:51 AM »
One thing I have learned is to be sure you don't have conflicks between your lisp command names and AutoCAD's pgp file.
Once you understand that the last one loaded wins the conflict can even be useful.  As you may have noticed from the PGP I posted in another thread, we have nearly every command and setvar covered with an alias in the pgp.  The PGP loads first, then MNL, then startup suite.  

Knowing that I can redefine a particular alias with a lisp function for testing from my startup suite without affecting the other users in the system.  The once the function is perfected, I can add it to the MNL loaded routines and make the change global and relatively transparent to the users.  They are already using the PGP alias (longhand command version) and next time they enter the same command it will be the newer streamlined custom function.  Every now and then I'll get a "What the Heck??", but most folks are getting used to the dynamic nature of our customizations.

CADaver

  • Guest
Re: How do you organize your lisp codes?
« Reply #19 on: March 23, 2006, 11:45:34 AM »
CADaver, I have mine setup similar to yours.
That may not be a good thing to admit around here.....   :angel:

Slim©

  • Needs a day job
  • Posts: 6566
  • The Dude Abides...
Re: How do you organize your lisp codes?
« Reply #20 on: March 23, 2006, 11:55:16 AM »
I know that... but it's true. ;-)

Do you have a Revision log file as well as revision info in the header?
For example:

Code: [Select]
01-DEC-2004 lpickens grd.lsp Fixed C:GR to work with X_FG3A, X_FG3B, X_FG4A, and X_FG4B
28-DEC-2004 lpickens OvrXref.lsp Checks for underscore in Xref name

Our ITwit, demanded that I have one, even though he knows nothing about CAD, and that I have an agreement with the President of the company that all LISP, etc. that I write are owned by me, not the company. The company employees that wish to use my routine are welcome to, with the understanding that they are AS IS.
I drink beer and I know things....

CADaver

  • Guest
Re: How do you organize your lisp codes?
« Reply #21 on: March 23, 2006, 12:07:56 PM »
I keep a revision line in the footer actually.  Dunno why there, just got in that habit a very long time ago.  I even have it print the last revised date to the screen while loading.  While at a different machine, I tell at a glance if they are working with our stock, or have tried some type of circumvention.  If it's the later, some type of ventilation results.

Keith™

  • Villiage Idiot
  • Seagull
  • Posts: 16899
  • Superior Stupidity at its best
Re: How do you organize your lisp codes?
« Reply #22 on: March 23, 2006, 12:12:20 PM »
... some type of ventilation results.

I certainly hope it isn't of the methane variety .. that get nasty ... really nasty

nothing to see here folks .. move along now ...
Proud provider of opinion and arrogance since November 22, 2003 at 09:35:31 am
CadJockey Militia Field Marshal

Find me on https://parler.com @kblackie

MP

  • Seagull
  • Posts: 17750
  • Have thousands of dwgs to process? Contact me.
Re: How do you organize your lisp codes?
« Reply #23 on: March 23, 2006, 01:00:42 PM »
For what it's worth ...

Edit: Modified to accept a single string (a folder name) or a list of strings (folder names, each successively nested).

Code: [Select]
;;=====================================================================
;;
;;  LoadSupport.lsp © 2005-2006 Michael Puckett. All Rights Reserved.
;;
;;---------------------------------------------------------------------
;;
;;  In short, <safe> load each LISP (lsp|fas|vlx) file found in a flat
;;  or succesively nested folder branch.
;;
;;=====================================================================

(defun LoadSupport

    ;;=================================================================
    ;;
    ;;  Typical folder structures and function calls
    ;;
    ;;-----------------------------------------------------------------
    ;;
    ;;  NESTED FOLDER STRUCTURES
    ;;
    ;;  For a huge operation that is split over multiple cities and
    ;;  multiple disciplines, each with specilized requirements, the
    ;;  LISP files might be distributed in a hiearchy like this --
    ;;
    ;;      k:\CAD\LISP\Common  ;; Company's main LISP library
    ;;          |               ;;
    ;;          +-- Calgary     ;;      LISP specific to Calgary
    ;;          |   |           ;;
    ;;          |   +-- Civil   ;;          LISP specific to Civil
    ;;          |   |           ;;
    ;;          |   +-- Elec    ;;          LISP specific to Elec
    ;;          |   |           ;;
    ;;          |   +-- Piping  ;;          LISP specific to Piping
    ;;          |               ;;
    ;;          +-- Toronto     ;;      LISP specific to Toronto
    ;;          |   |           ;;
    ;;          |   +-- Civil   ;;          LISP specific to Civil
    ;;          |   |           ;;
    ;;          |   +-- Elec    ;;          LISP specific to Elec
    ;;          |   |           ;;
    ;;          |   +-- Piping  ;;          LISP specific to Piping
    ;;          |               ;;
    ;;          +-- Vancouver   ;;      LISP specific to Vancouver
    ;;              |           ;;
    ;;              +-- Civil   ;;          LISP specific to Civil
    ;;              |           ;;
    ;;              +-- Elec    ;;          LISP specific to Elec
    ;;              |           ;;
    ;;              +-- Piping  ;;          LISP specific to Piping
    ;;
    ;;  Corresponding function call for a Calgary PC, Electrical
    ;;  discipline --   
    ;;
    ;;      (LoadSupport filename
    ;;         '(
    ;;              "K:\\CAD\\LISP\\Common"
    ;;              "Calgary"
    ;;              "Elec"
    ;;          )
    ;;      )
    ;;
    ;;      Loading K:\CAD\LISP\Common ...
    ;;
    ;;         common1.lsp ... loaded
    ;;         common2.lsp ... loaded
    ;;         common3.lsp ... loaded
    ;;
    ;;      Loading K:\CAD\LISP\Common\Calgary ...
    ;;
    ;;         Calgary.lsp ... loaded
    ;;
    ;;      Loading K:\CAD\LISP\Common\Calgary\Elec ...
    ;;
    ;;         grounding.lsp ... loaded
    ;;         raceway.lsp   ... loaded
    ;;
    ;;  Please note that the function is not hard coded to a specific
    ;;  number of nested folders. Maybe you decide this suits you
    ;;  better --
    ;;
    ;;      k:\CAD\LISP\Common      ;; common support lisp
    ;;          |                   ;;
    ;;          +-- Civil           ;; lisp specific to Civil
    ;;          |                   ;;
    ;;          +-- Elec            ;; lisp specific to Elec
    ;;          |                   ;;
    ;;          +-- Piping          ;; lisp specific to Piping
    ;;
    ;;  Corresponding function call for a Piper's CADD Machine --   
    ;;
    ;;      (LoadSupport filename
    ;;         '(
    ;;              "K:\\CAD\\LISP\\Common"
    ;;              "Piping"
    ;;          )
    ;;      )
    ;;
    ;;      Loading K:\CAD\LISP\Common ...
    ;;
    ;;         common1.lsp ... loaded
    ;;         common2.lsp ... loaded
    ;;         common3.lsp ... loaded
    ;;
    ;;      Loading K:\CAD\LISP\Common\Piping ...
    ;;
    ;;         isogen.lsp  ... loaded
    ;;         routing.lsp ... loaded
    ;;
    ;;  Note that each tier in the folder structure may | may not have
    ;;  LISP files. That is, it is not mandatory for each tier to have
    ;;  LISP files. The program will report what files are loaded as
    ;;  they are loaded.
    ;;
    ;;  Also, this means you can have other related files reside in each
    ;;  tier, perhaps text files that host info related to the files
    ;;  but not appropriate to reside in the actual LISP source code.
    ;;
    ;;  Or maybe you have nothing but compiled vlx files in the
    ;;  structure with some accompanying text files, keeping the
    ;;  original source code safe in another location.
    ;; 
    ;;  Because each successive folder depth represents increased
    ;;  specalization, said folders tend to contain less and less. To
    ;;  me, drilling down thru a directory structure to find and edit
    ;;  a LISP file is faster and more organized than piling hundreds
    ;;  of LISP files into one flat directory structure, the impetus
    ;;  for authoring this beast.
    ;;
    ;;  FLAT FOLDER STRUCTURE.
    ;;
    ;;  Maybe you decide, meh, all this nested folder nonesence is
    ;;  well, just overkill, but you like the idea of having a function
    ;;  that will load all LISP files in a specific folder. Simple --
    ;;
    ;;      (LoadSupport "K:\\CAD\\LISP\\Common")
    ;;
    ;;      Loading K:\CAD\LISP\Common ...
    ;;
    ;;         common1.lsp ... loaded
    ;;         common2.lsp ... loaded
    ;;         common3.lsp ... loaded
    ;;
    ;;  The function has been coded to accept a single string (a folder
    ;;  name) or a list of folders, each successivly nested (as
    ;;  previously mentioned).
    ;;
    ;;  ERROR HANDLING
    ;;
    ;;  The actual LISP loader is error trapped, so if an error is
    ;;  encountered during the loading of a LISP file it will attempt
    ;;  to report the loading error AND then continue loading the
    ;;  balance of the files. For example --
    ;;
    ;;      (loadsupport
    ;;         '(       
    ;;              "K:\\CAD\\LISP\\Common"
    ;;              "Calgary"
    ;;              "Elec"
    ;;          )
    ;;      )
    ;;
    ;;      Loading K:\CAD\LISP\Common ...
    ;;
    ;;         common1.lsp ... loaded
    ;;         common2.lsp ... failed <divide by zero>
    ;;         common3.lsp ... loaded
    ;;
    ;;      Loading K:\CAD\LISP\Common\Calgary ...
    ;;
    ;;         Calgary.lsp ... loaded
    ;;
    ;;      Loading K:\CAD\LISP\Common\Calgary\Elec ...
    ;;
    ;;         grounding.lsp ... loaded
    ;;         raceway.lsp   ... loaded
    ;;
    ;;  OTHER MINUTIA / NOTES / SEWERAGE
    ;;
    ;;  At this point you may be thinking, why not just use a recursive
    ;;  function that loads every LISP file found in a directory tree?
    ;;  Well thats not what I want, even though that's easier to code.
    ;;
    ;;  Allow me to illuminate. I want to load all LISP files in a
    ;;  specific branch of a directory structure --
    ;;
    ;;       Only
    ;;
    ;;          K:\CAD\LISP\Common\                 *.lsp|fas|vlx
    ;;          K:\CAD\LISP\Common\Calgary\         *.lsp|fas|vlx
    ;;          K:\CAD\LISP\Common\Calgary\Elec\    *.lsp|fas|vlx
    ;;
    ;;       NOT
    ;;
    ;;          K:\CAD\LISP\Common\                 *.lsp|fas|vlx
    ;;          K:\CAD\LISP\Common\Calgary\         *.lsp|fas|vlx
    ;;          K:\CAD\LISP\Common\Calgary\Elec\    *.lsp|fas|vlx
    ;;          K:\CAD\LISP\Common\Calgary\Civil\   *.lsp|fas|vlx
    ;;          K:\CAD\LISP\Common\Calgary\Piping\  *.lsp|fas|vlx   
    ;;          K:\CAD\LISP\Common\Toronto\         *.lsp|fas|vlx
    ;;          K:\CAD\LISP\Common\Toronto\Elec\    *.lsp|fas|vlx
    ;;          K:\CAD\LISP\Common\Toronto\Civil\   *.lsp|fas|vlx
    ;;          K:\CAD\LISP\Common\Toronto\Piping\  *.lsp|fas|vlx   
    ;;          ...
    ;;
    ;;  Ahh you say, why not recursively load starting at the deepest
    ;;  node working your way all the way to the parent? The problem
    ;;  with that approach is that the parent is likely not what I
    ;;  consider the parent. For example, using the sample data above
    ;;  the recursively determined parent would be K:\ or perhaps
    ;;  K:\CAD, whereas in reality I don't wish to load any files above
    ;;  the K:\CAD\COMMON folder.   
    ;;
    ;;-----------------------------------------------------------------
    ;;
    ;;  Yeah, I don't sleep much.
    ;;
    ;;=================================================================

    (
        folderlist

        /

        _StripPath
        _GetLispFiles
        _SafeLoad
        _LoadFolder
        _LoadFolders
        _Main
    )

    ;;=================================================================
    ;;
    ;;  (_StripPath filename)
    ;;
    ;;-----------------------------------------------------------------
    ;;
    ;;  strip the path from a filename,
    ;;
    ;;  e.g c:\folder\filename.lsp => filename.lsp
    ;;
    ;;=================================================================

    (defun _StripPath ( filename )
        (strcat
            (vl-filename-base filename)
            (vl-filename-extension filename)
        )
    )

    ;;=================================================================
    ;;
    ;;  (_GetLispFiles path)
    ;;
    ;;-----------------------------------------------------------------
    ;;
    ;;  get all lsp/fas/vlx files for path, return sorted by group
    ;;
    ;;=================================================================

    (defun _GetLispFiles ( path / result )
        (apply 'append
            (mapcar
               '(lambda (filter)
                    (vl-sort
                        (vl-directory-files
                            path
                            filter
                            1
                        )
                       '<
                    )
                )
               '("*.lsp" "*.fas" "*.vlx")
            )
        )
    )

    ;;=================================================================
    ;;
    ;;  (_SafeLoad filename)
    ;;
    ;;-----------------------------------------------------------------
    ;;
    ;;  safely load a lsp/fas/vlx etc. Print any error message
    ;;  generated if the load is unsuccessful and an associated error
    ;;  msg captured
    ;;
    ;;=================================================================

    (defun _SafeLoad ( filename / filepath failed loaded error )

        (cond

            (   (setq filepath (findfile filename))

                (princ
                    (strcat
                        "\t\t"
                        (_StripPath filePath)
                        " ... "
                    )
                )

                (setq error
                    (vl-catch-all-apply
                       '(lambda ( )
                            (load filepath)
                            (setq loaded
                                (null failed)
                            )
                        )
                    )
                )

                (princ
                    (strcat
                        (if loaded
                            "loaded"
                            (strcat
                                "failed"
                                (if (vl-catch-all-error-p error)
                                    (strcat
                                        " <"
                                        (vl-catch-all-error-message error)
                                        ">"
                                    )
                                    " <no error description>"
                                )
                            )
                        )
                        "\n"
                    )
                )

                loaded

            )

            (   (princ
                    (strcat
                        "\t\t"
                        "File <"
                        filename
                        "> not found.\n"
                    )
                )

                nil

            )
        )
    )

    ;;=================================================================
    ;;
    ;;  (_LoadFolder folder)
    ;;
    ;;-----------------------------------------------------------------
    ;;
    ;;  safely load all lisp / fas / vlx files found in path
    ;;
    ;;=================================================================

    (defun _LoadFolder ( folder / lispFiles )

        (cond

            (   (vl-file-directory-p folder)

                (princ
                    (strcat
                        "\nLoading "
                        folder
                        " ...\n\n"
                    )
                )

                (foreach lispFile
                    (setq lispFiles (_GetLispFiles folder))
                    (_SafeLoad (strcat folder "\\" lispFile))
                )

                (if (null lispFiles)
                    (princ "\t\t<none found>\n")
                )
            )

            (

                (princ
                    (strcat
                        "\nInvalid path <"
                        folder
                        "> ignored ...\n\n"
                    )
                )
            )

        )
    )

    ;;=================================================================
    ;;
    ;;  (_LoadFolders '("K:\\CAD\\LISP" "Calgary" "Elec" ... ))
    ;;
    ;;-----------------------------------------------------------------
    ;;
    ;;  Try to load a tree of support files, where each node (folder)
    ;;  is a child of the preceeding folder and may or may not have
    ;;  lisp files (*.lsp|fas|vlx) and / or child folders.
    ;;
    ;;  K:\\CAD\\LISP\               ;; *.lsp|fas|vlx
    ;;                               ;;
    ;;  K:\\CAD\\LISP\Calgary\       ;; *.lsp|fas|vlx
    ;;                               ;;
    ;;  K:\\CAD\\LISP\Calgary\Elec   ;; *.lsp|fas|vlx
    ;;
    ;;  ...
    ;;
    ;;=================================================================

    (defun _LoadFolders ( folderList / currentFolder )
        (foreach folder folderList
            (if (eq 'str (type folder))
                (_LoadFolder
                     (setq currentFolder
                         (if currentFolder
                             (strcat currentFolder "\\" folder)
                             folder
                         )
                     )
                )
            )
        )
    )

    ;;=================================================================
    ;;
    ;;  (_Main folderList )
    ;;
    ;;-----------------------------------------------------------------
    ;;
    ;;  wrap all functionality defined herein, ergo: 'the solution'
    ;;
    ;;=================================================================

    (defun _Main ( folderList )
        (_LoadFolders folderList)
        (princ)
    )

    ;;=================================================================
    ;;
    ;;  helper functions defined, party on dude -> invoke _Main
    ;;
    ;;-----------------------------------------------------------------
    ;;
    ;;  (Pre) handle a single string (a folder name) or a list of
    ;;  strings (folder names, each successively nested).
    ;;
    ;;=================================================================

    (_Main
        (cond
            (   (listp folderList)
                folderList
            )   
            (   (eq 'str (type folderList))
                (list folderList)
            )
            (   (princ
                    (strcat
                        "Error. Invalid input: (LoadSupport "
                        (vl-princ-to-string folderList)
                        ").\n"
                        "Syntax: (LoadSupport \"x:\\Path\") or "
                        "(LoadSupport '(\"x:\\Path\" \"subfolder\"))"
                    )
                )
                nil
            )   
        )
    )
   
)

;;=====================================================================
;;
;;  end LoadSupport.lsp
;;
;;=====================================================================

:ugly:
« Last Edit: March 23, 2006, 03:46:57 PM by MP »
Engineering Technologist • CAD Automation Practitioner
Automation ▸ Design ▸ Drafting ▸ Document Control ▸ Client
cadanalyst@gmail.comhttp://cadanalyst.slack.comhttp://linkedin.com/in/cadanalyst

CADaver

  • Guest
Re: How do you organize your lisp codes?
« Reply #24 on: March 23, 2006, 01:32:22 PM »
I certainly hope it isn't of the methane variety ..
nope, 12ga. variety. :pissed:

CADaver

  • Guest
Re: How do you organize your lisp codes?
« Reply #25 on: March 23, 2006, 01:33:36 PM »
Michael,
  You know they have some really good medications these days.  You and SE7EN ought to go in halvers.

GDF

  • Water Moccasin
  • Posts: 2081
Re: How do you organize your lisp codes?
« Reply #26 on: March 23, 2006, 02:33:43 PM »
Here some more jibberish.......

;;; Note: If the user-defined function S::STARTUP is included in the acad.lsp or
;;; acaddoc.lsp file or a MNL file, the function is called when you enter a new
;;; drawing or open an existing drawing. Thus, you can include a definition of
;;; S::STARTUP in the LISP startup file to perform any setup operations. For more
;;; information about the s::startup function, refer to the Customization Guide.
;;;
;;; It should be noted that Autodesk's website is misleading about the load order.
;;; The menus load in the order they were initially loaded in, and *not* always
;;; the user menu first. The only way the user menu loads first is if all menus
;;; were removed and the user's menu was loaded first, then the other menus
;;; subsequently. In most cases people tend to leave Acad's menu there, then
;;; Express Tools (if installed), and then finally the user's menu.
;;; This can be verified by watching the menu load prompts:
;;; AutoCAD menu utilities loaded.

;;; Express Tools (if installed), and then finally the user's menu.
;;; This can be verified by watching the menu load prompts:
;;; AutoCAD menu utilities loaded.

;;; General Rule is to NOT edit the acad200Xdoc.lsp file because it is an Autocad file
;;; that CAN and WILL be replaced if you install patches. I would suggest using the
;;; acaddoc.lsp for the code. Following is a list of AutoCAD, Express Tools, and
;;; user-defined files in the order they are loaded when you first start the program.
;;;
;;; File         For use by:   
;;; acad200X.lsp AutoCAD   
;;; acad.rx         User   
;;; acad.lsp User   
;;; acad200Xdoc.lsp AutoCAD   
;;; acetutil.fas Express Tools   
;;; acaddoc.lsp User   
;;; mymenu.mnc User   
;;; mymenu.mnl User   
;;; acad.mnc AutoCAD   
;;; acad.mnl AutoCAD   
;;; acetmain.mnc Express Tools   
;;; acetmain.mnl Express Tools   
;;; s::startup User
;;;
;;; To make sure you are pulling the correct acaddoc.lsp copy and paste the following
;;; line to the command line (findfile "acaddoc.lsp") You should get the path returned
;;; and if it is not where you think the file is installed you have more than one file.


This is from my Information file in UTIL <dialog box> on how my program loads:
Code: [Select]
(defun SFSP-KEY-2005  ()
  (ARCH:ALERT-I
    "MsgBox \"
      Support File Search Path 2005:
--------------------------------------------------------------------------------------------
      Note: drive x is user defined

      C:\\Arch_Custom\\Support
      x:\\ARCH\\Support
      x:\\ARCH\\Support\\V_16
      x:\\ARCH\\Fonts
      x:\\ARCH\\Patterns
      C:\\~2005\\Support
      C:\\~2005\\UserDataCache\\Support
      C:\\~2005\\Fonts
      C:\\~2205\\Help
      C:\\~2005\\Support\\Color
      \""))

(defun SFSP-KEY-2006  ()
  (ARCH:ALERT-I
    "MsgBox \"
      Support File Search Path 2006:
--------------------------------------------------------------------------------------------
      Note: drive x is user defined

      C:\\Arch_Custom\\Support
      x:\\ARCH\\Support
      x:\\ARCH\\Support\\V_16
      x:\\ARCH\\Fonts
      x:\\ARCH\\Patterns
      C:\\~2006\\Support
      C:\\~2006\\UserDataCache\\Support
      C:\\~2006\\Fonts
      C:\\~2206\\Help
      C:\\~2006\\Support\\Color
      \""))

Gary
« Last Edit: March 23, 2006, 02:41:51 PM by Gary Fowler »
Why is there never enough time to do it right, but always enough time to do it over?
BricsCAD 2020x64 Windows 10x64

uncoolperson

  • Guest
Re: How do you organize your lisp codes?
« Reply #27 on: March 23, 2006, 02:46:11 PM »
I keep a revision line in the footer actually.  Dunno why there, just got in that habit a very long time ago.  I even have it print the last revised date to the screen while loading.  While at a different machine, I tell at a glance if they are working with our stock, or have tried some type of circumvention.  If it's the later, some type of ventilation results.

so by stock you mean up to date... check this out, it could probably be prettier, but i still like it

my first post

CADaver

  • Guest
Re: How do you organize your lisp codes?
« Reply #28 on: March 23, 2006, 03:17:24 PM »
so by stock you mean up to date...
By stock, I mean the company standard proggies.

uncoolperson

  • Guest
Re: How do you organize your lisp codes?
« Reply #29 on: March 23, 2006, 03:26:47 PM »
so by stock you mean up to date...
By stock, I mean the company standard proggies.

ohh.... i saw the whole revised date thing and got all excited...