Jump to content

Programs and Scripts

Sign in to follow this  

AutoLISP, VisualLISP and VBA Programs are for use with AutoCAD software.

21 files

  1. Text Operation

    Hi guys,
     
    Here I present a program that allows you to perform a mathematical operation between a list of numbers parsed from a string, and a user-input number. This program references two different other LISP authors (Lee Mac with "Parse Numbers" and Alan H with "MultipleToggles.lsp") for their great contribution to the community, and I thought it'd be splendid to see how their programs blossom very well in this program. However, I tweaked both functions slightly in order to suit the needs of this program.
     
    Upon invoking the TOP command, the user is prompted for a single object selection. It can be anything that has an editable Text property (except blocks). Using Lee's Parse Numbers, it parses numbers found within that string. These list of numbers are then passed onto the MultipleToggles.lsp dialog by Alan H to prompt for the numbers the user wishes to include for calculation. This process is repeated until the user is satisfied and presses Enter or types "End".
     
    The user is then prompted the operation to perform. I've included 7 operations (built-in AutoLISP functions): Add (+), Subtract (-), Multiply (*), Divide (/), Exponential (expt), Minimum (min), and Maximum (max). After the user selects the logical operation to perform, the user is then prompted for a second number associated with this operation. The program will proceed to evaluate every number that is checked and performs the operation. The original object will then be modified with the new result.
     
    If you are familiar with how to use AutoLISP and defining functions, you can create your own user-defined functions to perform your own logical operation. For example, you can replace the numbers with another, or round down the numbers to some multiple.
     
    I welcome all feedback, criticisms, opinions, and insults that you have and I'll have a look at them. Enjoy.

    14 downloads

       (0 reviews)

    0 comments

    Submitted

  2. Multiline Total Length

    Hi guys,
     
    This seems like it's already posted somewhere, but I'll just throw it out here anyway. This code allows you to calculate the total lengths of multilines segregated by their multiline size/scale.
     
    In order to use the attached LISP code, initiate the APPLOAD command from AutoCAD, and load this file. Once you've done so, you'll notice that you'll have a new command TML. 
     
    To use the TML command:
     
    Select all the multilines that you'd like to calculate for its lengths. Click a point somewhere and an MTEXT will be created with the details for the lengths of the multilines for each size.  
    Feel free to add any ideas, thoughts, criticisms, etc... and I'll try to modify them.

    29 downloads

       (0 reviews)

    0 comments

    Submitted

  3. Label pline intersected point

    This lisp label block intersect point between plines.
     
    Lisp creator : GEORGI GEORGIEV - TRUDY
    Date create: February 2020
     
    Lisp start with command: Int
    .
     At line 103 change try2 with your block name
    The lisp work only with plines,
    1.Select pline
    2.Write which letter is the line
    3.When you are ready pres ENTER
    4.Select line
    5.Write which number is the line
    6.When you are ready pres ENTER
     

    64 downloads

       (0 reviews)

    4 comments

    Submitted

  4. SuperBoundary • The superior boundary creation tool

    AutoCAD users often have to deal with the BOUNDARY (BPOLY) command, which allows creating boundaries (mostly enclosed polylines) from existing objects forming an enclosed area around the point specified. Unfortunately, its performance as well as the quality and the accuracy of the boundaries (contours) created when run in complex drawings leaves much to be desired. To eliminate these common drawbacks of the standard BOUNDARY command, a project called "SuperBoundary" was implemented.
     

     
    While BOUNDARY command generates simple contours quite efficiently in relatively simple drawings with a small number of objects on screen, SuperBoundary is intended to provide the user with comfortable workflow in drawings of any complexity. In other words, SuperBoundary is the utility based on the BOUNDARY concept supplemented by super-speed and some super-features.
     

     
    Key features:
    High performance. A powerful program engine allows analyzing and generating thousands of boundaries in seconds. High accuracy. When generating a boundary, all elements larger than the specified tolerance factor are considered. The possibility to create boundaries in areas having significant gaps between adjacent objects. The possibility to quickly detect and generate all the enclosed areas in the selected drawing or its part. Easy and accurate external outlines generation in complex drawings. Polylines generation from spline- and ellipse-based boundaries using piecewise-linear approximation Flexible adjustment of the boundaries generated. These are width, color and layer. Simple and convenient installation with classic installer.

    312 downloads

       (0 reviews)

    0 comments

    Updated

  5. TotalBoundary • Outline creation tool

    TotalBoundary (Pro) is a professional plugin for generating 2D outline drawings of various degrees of complexity with AutoCAD®. The outline drawings it creates are closed polylines marking the boundaries of various types of objects, which can include elementary entities (lines and arcs) as well as complex blocks and curves (ellipses and splines).
    What sets the TotalBoundary (Pro) utility apart from AutoCAD's built-in tools (such as BOUNDARY, BPOLY) and from other third-party programs is its high productivity and stability, and also the quality of the outlines it generates. The inbuilt algorithm for detecting spacing (gaps) between neighboring objects allows users to create enclosed outline polylines with exceptional accuracy. The program can process tens of thousands of objects extremely efficiently (in a matter of seconds), flawlessly generating highly complex outline polylines in the selected drawings.
     

     
    Key features:
    The program's powerful engine allows it to build enclosed polylines rapidly along the perimeter of selected drawing fragments. The original drawing needs no advance preparation (removing superfluous unconnected lines, creating an additional enclosed boundary polyline around the original drawing fragment). When the program creates an outline, it automatically identifies and removes gaps in places where primitives meet. The maximum size of these gaps can be set directly by the user. The program replaces splines and ellipses used in defining an outline with true polylines created by means of piecewise linear approximation. The user can also easily set the thickness and color of the polylines the program generates, if required. The program offers an automatic filling (solid hatching) option for the outlines it generates.

    367 downloads

       (0 reviews)

    0 comments

    Updated

  6. Multi Radio Buttons.lsp

    Multiple Radio Buttons
     
    Multiple Radio Buttons is a library routine that allows you to create as many Buttons of input as required (subject to Autocad limits) using a dialouge rather than the command line.
     
    You can have horizontal or vertical buttons choice is yours 
     
    Its use is intended where you want the user to pick one only of preset values it can be a number, a character or a whole word.
     
    It can be used in most lisp code with just a couple of lines of code, compared to a hard coded solution of around 50+ lines repeated every time you want to use a dcl.
     
    To use just save the "Multi Radio Buttons.lsp" to a directory that is included in you Autocad search path. If you need more information how to do this send an email to info@alanh.com.au 
     
    It only requires 3 lines of code in any lisp to use.
    (if (not AH:Butts)(load "Multi radio buttons.lsp"))         ; loads the program if not loaded already
    (if (= but nil)(setq but 1))                     ; this is needed to set default button for user pick
    (setq ans (ah:butts but "V"   '("A B C D " "A" "B" "C" "D" )))    ; V is for vertical H for horizontal layout    
    In the example above the variable ans will have the button string value. 

    (setq ans (ah:butts but "V"   '("Please choose " "Alpha" "Beta" "1" "2" "No words")))
    Pick button 5  ans = "No words" 
    The program resets the default button to last pick so click Ok, can be removed if not required.
     
    Copy the 3 lines above to your command line to see how it works. There is extra examples in the top of the code how to use in your code. 
     
    For programmers it is a replacement for the Initget function.
    If you want further information or conversion of your code email info@alanh.com.au
     

    169 downloads

       (0 reviews)

    0 comments

    Updated

  7. AreaTester • Calculating areas in AutoCAD

    AreaTester is a free plug-in for AutoCAD. It allows you to quickly measure the area in AutoCAD and gives you advanced capabilities to process the results of the calculations in the further workflow (annotate the the areas in the drawing, convert the received data to different spreadsheet formats, etc.).

    The plugin calculates not only the areas of enclosed objects, such as a polyline or circle, but also any other shapes formed by the intersection and connection of various types of objects, which include lines, arcs, splines and many other AutoCAD basic objects. At the same time, to calculate the area of any enclosed shape, you only need to point the crosshair of the cursor on it and the area value will be instantly displayed in the context window above the cursor. In addition, the user can create the necessary list of the areas in the main application window for the further workflow. All these areas are summed automatically in the created list. The total result of the summation is displayed at the bottom of the main window of the app.

    One of the main features of AreaTester, compared to the standard AutoCAD tools, is the ability to determine the area value of any bounded shape excluding the areas formed by objects that have got inside such an shape (the so-called "islands"). This option significantly simplifies the user’s work on calculating areas in AutoCAD, eliminating the need for additional mathematical operations.
    Key features of the AreaTester for AutoCAD free plugin: Automatic calculation of the all areas in a drawing. Annotating the areas directly in a drawing. Drawing boundaries of the shapes in the form of polylines. Exporting the generated list of areas to the clipboard or some convenient data format (* .txt, * .csv). Adding the table of the area list to a drawing.

    675 downloads

       (2 reviews)

    0 comments

    Updated

  8. Align To Direction

    Are you someone who likes to get details in your drawings done neatly? Then look no further! Here I present you a program that does just that.
     
    This program aligns selected objects to any direction the user wants to align them to. This provides that the objects possess at least one of the following properties:
     
    Insertion Point Text Position Text Alignment Position Center  
    Upon issuing the command ALTODIR, the user will be prompted a selection of objects without any filters, which the program will then filter based on the above (and xrefs excluded). The objects to be aligned will then be highlighted, and the user will be prompted a direction relative to the UCS. The user can then specify a point to denote the location for all the objects to be aligned.
     
    Objects that I've successfully worked with this program include:
     
    Tables Blocks OLE/Raster images Dimensions Texts and MTexts (regardless of alignment) Circles  
    This program will work under any UCS settings provided that the objects to be translated lies in the same XY plane as the UCS. 

    114 downloads

       (0 reviews)

    0 comments

    Submitted

  9. Block Overkill

    Here I give you guys a program that will either delete duplicate blocks or move them to a user-input layer that could be accidentally placed on top of another.
    The determination to do such program in place of the OVERKILL command is to remove unwanted dynamic blocks with different visibility parameters, leading to blocks having an "undefined name". This leads to the original OVERKILL command to fail. As such, I introduce you this program that catches all types of blocks (excluding xrefs).
     
    Be careful that it delete blocks matching all the criteria below:
     
     The blocks in comparison share the same insertion point through a given tolerance. The blocks in comparison share the same effective name. The blocks in comparison share the same effective scale.  
    So if the three criteria above match while the rotation of the blocks differ, it will still be deleted.
     
    I've had many occasion on using block counting routines that reports excessive values for this very reason. This routine has helped me fix those nasty errors that would otherwise be almost, if not entirely, impossible to detect with the human eye. As thanks for helping me solve many problems that I've posted in the LISP forum, this is the least I can offer, so I hope it's of some use.
     
    More details on this forum.
     
    Type BOVERKILL to start command.
     
    I welcome all suggestion, feedbacks, comments, and criticisms you have. Feel free to add your ideas, and I will try to improve them.
     
    Enjoy.
     
     

    111 downloads

       (0 reviews)

    0 comments

    Updated

  10. HP BUTTONS.lsp

    Thank you for supporting this "HP:BUTTONS.lsp" DCL library. 
    This routine allows you to create DCL with multiple buttons associated to DCL action_tile list on the fly.
    It creates DCL box with single column x nRows of buttons, 'n' depends on the length of the 'action list'
    usage:
    (hp:buttons title lst width ht)
    title = Name caption on top of DCL - string 
    lst   = quoted list or progn list - list 
    width = Width of the dialod box - integer
    ht    = height of each button - integer
    returns nil or any execution (progn ... ) related to action_tile 
    Save this file into your support folder, append to your startup autoload routine.
    In order to optimize the user experience, it allows maxinum 15 rows however you can abjust depends on screen size.
    HP:BUTTONS - v1.0 
    Free LISP by - hanhphuc
    email: hanhphuc.diy@outlook.com
     
     

    73 downloads

       (0 reviews)

    0 comments

    Updated

  11. Apollonius-problem-solved.LSP

    Apollonius problem : (PPP, LPP, LLP, LLL, CPP, CLP, CLL, CCP, CCL, CCC)
    P - point
    L - line
    C - circle
     
    Routine finds all CIRCLES that touches or passes (point) as tangent curves to combination of (C - circle; L - line; P - point)
     
    Relevant page on Wikipedia :
    https://en.wikipedia.org/wiki/Problem_of_Apollonius

    And my video demonstrating my routine :
    https://youtu.be/cuo4M9UGZmA

    Number of circles demonstrated in video corresponds to Wikipedia table at the end of page...

    Regards, Marko Ribar, d.i.a. (architect)

    80 downloads

       (1 review)

    1 comment

    Submitted

  12. EDGENET-NEWEST-LSP-ROUTINES-BY-MR.ZIP

    ;-------------------------------------------------; ;   EDGENET ROUTINE - TWIN OF COMMAND EDGESURF    ; ;-------------------------------------------------; ;   Author : Marko Ribar, d.i.a. (architect)      ; ;   Copyright (C) - All rights reserved, 11.2019. ; ;-------------------------------------------------; ;   You have permission to copy any part of code  ; ;   with guarantee that this header will be       ; ;   present in material that is modified or       ; ;   partly remained the same as in this routine   ; ;   version. If header is removed, you are        ; ;   responsible to mention author and link from   ; ;   where the code is publiced with explicit      ; ;   mark that material is copyrighted and is not  ; ;   for further distribution or selling or base   ; ;   for gaining any material or any other benefit ; ;   than for learning and study and eventual      ; ;   improvement of its present functionality.     ; ;-------------------------------------------------;  
    edgenet-newest.lsp is routine that works similar to command EDGESURF... The difference between EDGESURF and EDGENET-NEWEST.LSP is that LSP version makes Polygon Mesh that is with softer and smaller magnitude lofting approximation... If you wish you can check several routines packed in ZIP and find the one you prefer... They are little slower than built-in EDGESURF, but nevertheless IMHO they are good examples of how this task can be solved from LISP perspective... As always I am opened for any input and your versions (if you have and willing to share)...
     
    Regards, Marko Ribar, d.i.a. (architect)

    59 downloads

       (0 reviews)

    0 comments

    Submitted

  13. FlowSelect

    Here I present you a program that allows you to select a chain of curve whose end points resides anywhere along other curves residing in the same layer.
     
    This inspiration came from selecting one line that represents a flow line from a branch of a hydraulic drain set, and will then proceed to select the whole set of lines for that drain. Put it in other terms, it's similar to selecting a whole tree by simply selecting one of its branches.

    41 downloads

       (0 reviews)

    0 comments

    Updated

  14. Multiple Toggles.lsp

    Multiple Toggles is a library routine that allows you to create as many Toggles of input as required (subject to Autocad limits) using a dialouge rather than the command line. 
      
    Its use is intended where you want the user to pick one or more values. It can be used where you want to run a number of functions, pick multiple values to be used.
      
    It can be used in most lisp code with just a couple of lines of code, compared to a hard coded solution of around 50+ lines repeated every time you want to use a dcl. 
      
    To use just save the "Multiple Toggles.lsp" to a directory that is included in you Autocad search path. If you need more information how to do this send an email to info@alanh.com.au  
      
    It only requires 2 lines of code in any lisp to use.
    (if (not AH:Toggs)(load "Multiple toggles.lsp"))
    (setq ans (AH:toggs (list "Change blank for yes " "Blocks" "Dimension" "Hatch" "Images" "Viewports" )))
    In the example above the variable ans will have the toggle Values 1 or 0 for a toggle clicked on eg ("1" "0" "1" "0" "1") depending on toggle selected.
      
    If you want further information or conversion of your code email info@alanh.com.au

    182 downloads

       (1 review)

    0 comments

    Submitted

  15. Multi Getvals.lsp

    Multiple Inputs 

    Multiple Input DCL is a library routine that allows you to create as many lines of input as required (subject to Autocad limits) using a dialouge rather than the command line. 

    It can be used in most lisp code with just a couple of lines of code, compared to a hard coded solution of around 50+ lines repeated every time you want to use a dcl.

    To use just save the "Getvals multi.lsp" to a directory that is included in you Autocad search path. If you need more information how to do this send an email to info@alanh.com.au 

    It only requires 2 lines of code in any lisp to use.
     (if (not AH:getvals)(load "Getvals multi.lsp")) ; check if already loaded else load
    (setq yourlist (ah:getvals '("Xfall percent"  "Enter Horizontal scale " 5 4 "100" "Enter Vertical scale" 5 4 "50" "Enter number of decimal places" 5 4 "2")))

    There is extra examples in the top of the code about how to use. You can have 1 entry or as many as required subject to screen size.
     
    For complete example contact info@alanh.com.au and we will send some more example code load and a working example "Make furniture table.lsp"
     
    For testing just copy the two lines of code to the command line you will see a "list" of the result. You can then convert if required to a real or integer using Atof or Atoi.
     

    186 downloads

       (0 reviews)

    0 comments

    Submitted

  16. Global Attribute Edit with Layout Selection

    This small program works just like AutoCAD's GATTE express tool, with the extra option of choosing which layouts to apply attribute changes to.
     
    GATTE2 is made in lisp and uses CAB's Layout Select program to select which layouts you want. Make sure you place LayoutSelect.dcl in an AutoCAD search path or GATTE2 will not work!
     

     
    Required Files:
    gatte2.lsp
    LayoutSelect.dcl
    Both in gatte2.zip
     
    See this thread for more details.
     
    Function Syntax: gatte2
    For instructions on how to run the program see here.

    138 downloads

       (0 reviews)

    0 comments

    Updated

  17. Zoom Extents on All Viewports

    A neat little utility that will zoom extents on all your viewports.
     
    Function Syntax: ze
    For instructions on how to run the program see here.

    84 downloads

       (0 reviews)

    0 comments

    Submitted

  18. Piping/Ducting for HVAC

    This is a program made by ASMI and modified by Ronso in this thread. This is a genius free LISP Program and can be used in many trades, but has most usefulness in the HVAC, Mechanical, and Piping industries for drawing 2D CAD designs. It allows you to create Duct, Pipe, and Segmented Duct or Piping with automatic elbow or fittings to accurate dimensions via some initial input at the command prompt.
     
    The programme in action

     
    Function Syntax: DUCT
    For instructions on how to run the program see here.

    382 downloads

       (0 reviews)

    0 comments

    Updated

  19. Line Length Calculator

    This program will calculate the total length of Lines/Polylines/LWPolylines/Arcs/Ellipses/Circles/Splines with an optional filter.
    The Filter may be used to select only those lines that are on a certain layer, or perhaps have a certain linetype or colour.
    The results of the calculation can be displayed in an ACAD Table within the drawing, or written to either a CSV or TXT File. The Table-Style may be selected from the drop-down in the main dialog.
     
    Main interface

     
    The main dialogue box allows the user to filter lines by layer, linetype or colour and select the table style. Multiple selected items can filtered. A filter string may be entered to help the user quickly find the filter items that he/she requires.
     
    Options

     
    The options dialogue box allows the user to specify which object types should be included and the type of output, table in the drawing, CSV file or TXT file.
     
    Demo

     
    Function Syntax: LenCal
    For instructions on how to run the program see here.
    Any comments, criticism and suggestions are welcome. Either PM me directly, or reply to the original thread.
     

    549 downloads

       (1 review)

    0 comments

    Submitted

  20. Total Length/Area of all Polylines on a Layer

    This AutoLISP file can be used to measure the total length or area of all polylines on a selected layer.
    Instructions on how to load and run this file in AutoCAD are given in this thread.

    268 downloads

       (0 reviews)

    0 comments

    Submitted

  21. Flatten a 3D Drawing

    This AutoLISP file can be used to flatten a 3D drawing. It does this by setting all Z values in the drawing to zero.
    Instructions on how to load and run this file in AutoCAD are given in this thread.

    144 downloads

       (0 reviews)

    0 comments

    Updated

Sign in to follow this  

×
×
  • Create New...