Tale of Two LISP's as Alternating v19.1 App Lockers!

In BricsCAD Platinum V19.1, when I activate either of the two lisps* it seems the second LISP locks BricsCAD. Has anyone had a similar issue with other LISP's? These two programs are used to construct fasteners and steel shapes and originally were created in the 90's. Both ran well (did not lock up) in AutoCAD ever (and, as you may know, that is saying quite a bit).

Can you "de-code" any causes for this type of error?

Let me know if you have any solutions, questions, or require further files for these LISP's.

I have not developed my LISP skills so far enough to troubleshoot or see possible error-causing code.

Thank you,
Clint

(*) Each LISP program attached also contains .dcl and resource files not included but can be made available.

Comments

  • That is a lot of code. Does F2 offer some clues, after escaping? When I write long programs, I tend to be verbose by printing information on the command line, for informing a user but also for being able to see at a glance what is happening in the code. For example if there is something like:

    (defun creating-washers (...) ... )

    you can add:

    (defun creating-washers (...) (princ "/nRunning function creating-washers ... ") ... )

    These kind of markers let you pinpoint where things go south. Temporary princ statements can be used additionally. Not the most efficient way to debug unfortunately.

  • I appreciate your advice and will file it for future use, Wiebe!

  • Roy Klein Gebbinck
    edited May 2019

    Source of the Lisp files:
    https://cadtips.cadalyst.com/standard-blocks/steel-shapes-all-types-and-sizes
    https://cadtips.cadalyst.com/blocks/fast-fasteners (rename the DCL to Fast.dcl)

    Both programs seem to work fine (BC V18) as long as the Cancel button is not used. If the Cancel button is used, the programs apparently end normally but restarting them causes BricsCAD to hang.
    The problem is triggered by the call to exit here:

    (action_tile
      "cancel"
      (strcat "(done_dialog)" "(setq newtile nil size nil)" "(exit)")
    )
    

    Removing "(exit)" (STL.lsp line 2459; Fast.lsp line 2039) fixes the problem.

    To fix the alignment of the main dialog in Fast.dcl do something like this for all rows in the dimensions column:

    : row {
      : text {value = "Head Dia.:"; width = 16; fixed_width = true;}
      : text {alignment = right; width = 8; fixed_width = true; key = "head_dia";}
    }
    
  • Invaluable input is shown here: I thank you again, Roy!

  • Torsten Moses
    edited May 2019

    Dear All,

    interestingly, we got a support request with that problem - and it is indeed the extra "(exit)" inside the DCL callback handler string;
    clearly, that is a BricsCAD issue, and fortunately we have fixed this internally (the original code now works without lockup) - but is not yet published with an official BricsCAD version.

    But we provided the fixed/improved Lisp code file to the client :-)
    just meant as some background ...
    greetings to all !

  • Torsten,
    We appreciate your transparency and hard work at improving an already excellent application!