By marko_ribarHere is one oldie, but goldie... It's classic by Charles Alen Butler (aka CAB) from www.theswamp.org... After long time I decided to public here also, as I improved it and made it more advanced... I don't know is it OK to double attachments, but this one is little different... You have more command functions (c:...) and little different DCL which you can call it with (c:MyBreak)... Anyway now it's here too, but version is 2.4, since last CAB's was 2.3...
By marko_ribarThis ZIP file contains AutoLisp routines for drawing and modelling hipped roofs solutions based on polyline shapes in AutoCAD or BricsCAD...
Basically this is collection of useful things that were already posted on www and are now improved and publiced again with authors additions - edits and new files not publiced already...
Author is not responsible for eventual bugs or failures, but all posted routines were well tested and coded so that errors can occur only very rarely...
As this topic was discussed thouroughly on www, it is considered as challenge for programming and therefore all suggestions and improvements are very welcomed and highly appriciated...
Further developments are possible, but author is not obligated to do so in any way, as this collection is free for using and editing for anyone faimiliar with AutoLisp API for AutoCAD...
In hope that coded improvements and newly coded material are useful and have practical and theoretical benefit,
author will be pleased and thankful for paying attention to this computational process that can help and give insight for better and smarter visualization in finding projecting solutions...
Author : Marko Ribar, d.i.a. (architect)
By marko_ribarThis file is another version of MOCORO command... This one is what I am using from long time ago and it's my favorite from my library...
Play if you find time with this one to find out what can be able to produce... It is simple when you get used to it and you can easily fall in love with this one...
Dedicated topic :
By marko_ribarHere you can find simple ways to create door, windowed door and windows in floor plans if you are in process of inserting those during drawing plans of house(s)...
Link is here and codes are posted in code tags : https://www.cadtutor.net/forum/topic/78637-block-points/
I hope it may prove useful,
By marko_ribarSmall but effective lisp routines for insertion of tabelar presentation of lengths (LC.lsp), areas (AC.lsp) or volumes (VC.lsp) with unit conversions... Tables can use FIELDs as presentation of values...
It could be useful but also comperable with already posted Lengths variant of master Lee Mac...
Anyway here there are for fresh new usage...
By marko_ribarHi, it's me again...
I've searched my library of codes and run into Gian Paolo Cattaneo's AlignHatch routine, and guess what : I've founded that I've updated it into 4 variants : AlignH.lsp ; AlignHM (multiple) ; AlignB ; AlignBM (multiple) ... AlignB stands for Align Block...
So I've decided to share all 4 as I think that they could be useful like Gian explained with his animated *.gif files...
Anyway, since it's already public - I mean original version, I've redefined all 4 of them to work and in BricsCAD as BricsCAD don't have (c:cal) function...
That's all from me for today...
I just hope no one won't bother or be mad at me for posting this beautiful routines at download section...
Original link : https://www.cadtutor.net/forum/topic/41902-alignh-align-hatch-on-curved-path
By marko_ribarHi, all
It's me again...
I'd like to share these 2 routines for linear tree branching... One is for picking start point and branching is performed all to the ends of all linear-curve entities and second one - you enter desired distance and branching is performed from start-picked point to desired lengths... All routines should operate on any type of linear-curve entities : POLYLINE(open), LWPOLYLINE(open), LINE, SPLINE(open), ELLIPSE(arc), ARC, HELIX...
That's all from me till now...
Regards and take care, M.R.
By marko_ribarThis small *.lsp file is novelty program designed to attract user...
It was posted long time ago here : https://www.cadtutor.net/forum/topic/54093-novelty-lisp-program
But my intervernition is allowing it to work and on BricsCAD...
Original Lee Mac's version was tested on AutoCAD before BricsCAD gained popularity, and now little snake works on both platforms...
By marko_ribarThis novelty routine was written by @fuccaro and represent capeabilities of multiple various caledioscope curve creations...
All valuable info you can find at this link : https://www.cadtutor.net/forum/topic/64130-drawing-machine
I hope that you'll enjoy this one too, like snake by Lee Mac...
By Jonathan HandojoAre 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 ATD, 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. This can be in one of five ways:
Clicking two points to determine direction Typing "X" - to align direction to X axis of UCS. Typing "Y" - to align direction to Y axis of UCS. Typing "PErpendicularToCurve" - the user specifies a point on any curve, and if a curve is detected, aligns perpendicular to the curve at that point. Typing "ALongCurve" - the user specifies a point on any curve, and if a curve is detected, aligns at the direction of the curve at that point Curve detection is compatible within all sorts of complex objects, such as nested blocks (with dynamic properties), xrefs, tables, dimensions, etc. regardless of depth, and fully functional under all UCS.
Following this, the user can then specify an optional distance that would be used to align the objects, or choose the "Through" option. This makes up an exactly identical feature to the built-in AutoCAD OFFSET command. If a distance is specified, the user will also be specified a point that will be used to calculate the specified distance away from the point.
If "Through" is chosen, the user will then be prompted the point to place the objects. If the distance has been chosen and specified, the user can click on the side that the user wishes to place the objects at that distance from the point.
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.
By Jonathan HandojoHere 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.
By marko_ribarHere are 16 variants of TSP*.lsp...
First one : TSP-NS.lsp - You use it if you have plenty of time and you want as much better results as possible... But I don't recommend it, as it's too slow...
Second one : TSP-NF.lsp - You use it if you need both better results, but you have a time for a lunch, so you still need to wait to finish...
Third one : TSP-FN.lsp - Similar to TSP-NF.lsp...
Fourth one : TSP-FF.lsp - You use it if you need both better results, but you have a time for a cup of coffee, so you still need to wait to finish...
Fifth one : TSP-FFF.lsp - You don't have any time at all and you still need some or any result that has any meaning related to TSP...
Sixth one : TSP-FFFF.lsp - Even faster than *-FFF version...
Seventh one : TSP-lsp-func.lsp - best of speed/quality...
Eighth one : TSP-N.lsp - similar to TSP-NN, or TSP-NF...
Ninth one : TSP-MR-2D.lsp - wrapper that uses both power of LISP and ObjectARX...
Tenth one : TSP-MR-3D.lsp - wrapper that uses both power of LISP and ObjectARX...
Eleventh one : TSP-MR-AROUND-CONCAVE.lsp - very nice little routine to make stars from radially disposition of points...
Twelfth one : TSP-ARX-BRX-N.lsp - combined power of LISP and ObjectARX...
Thirteenth one : TSP-ARX-BRX-F.lsp - combined power of LISP and ObjectARX...
Fourteenth one : TSP-cheapestpath - full power of ObjectARX...
Fifteenth one : TSP.lsp - wrapper for grid and rnd disposition - LISP and ObjectARX
Sixteenth one : TSP-lsp-func.lsp - previous version of TSP - pure LISP...
So I recommend auto loading TSP.lsp, TSP-MR-AROUND-CONCAVE.lsp and TSP-cheapestpath.lsp
Big thanks to Daniel from www.theswamp.org for providing *.arx and *.brx files for AutoCAD 2021-2023 and BricsCAD V23...
More info and newly added *.arx, *.brx, ... at this link : https://www.theswamp.org/index.php?topic=58049.0
By TrudyThis lisp label block intersect point between plines.
Date create: February 2020
Lisp start with command: Int
At line 103 change try2 with your block name
The lisp work only with plines,
2.Write which letter is the line
3.When you are ready pres ENTER
5.Write which number is the line
6.When you are ready pres ENTER
By TrudyThis lisp import point from txt file with № X Y and if have (H and D).
In the lisp can add records and delete records.
By DebalanceAreaTester is a efficient 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 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. For more information visit the official website of the AreaTester app.
By DebalanceTotalBoundary (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.
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.
By DebalanceAutoCAD 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.
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.
List of commands:
_SBND - launch the app in classic mode _SBND_PICK - for quick usage in "pick point" mode _SBND_ALL - for quick usage in "build all" mode _SBND_CONFIG - for export / import current settings data as an external INI file
By Jonathan HandojoIt's been quite a while since I put up something up here, so I thought I might as well share something that could potentially be useless hours of my work, but a bit useful (hopefully). This could potentially be somewhere already that I could not find, but I'll post it here anyways.
This program would not have been possible had it not been for the function LM:GrText, therefore huge credits to Lee Mac for his amazing function to assist with this program.
For you programmers who mainly deal with dates, here's a subfunction that uses a dialog box to visualize a calendar for the selection of a specific date. Call the function JH:DatePicker to start the function. The function takes in three arguments, which could all be nil for defaults, or the following below:
The first argument takes in a string that represents the title of the dialog box to display. Supplying nil or a blank string will use "Date Picker" by default on the title. The second argument takes in a list of three integers, representing the year, month, and day respectively to highlight on initializing the dialog. Supplying nil will highlight the current date by default. The third argument takes in a function to only allow specific dates in the calendar for selection and disable others. Supplying nil will enable all dates for selection. If a function is supplied, it should comply with the following. The function should take in three integers: the year, month, and day respectively. If the function returns nil, those dates in the calendar will be disabled for selection. If the function returns a non-nil value, those dates in the calendar will be enabled for selection.
In the end, the function shall return a list of three integers, in the form of year, month, and day.
By BIGALThis is a simple answer to export a Autocad/Bricscad table to excel, it expects a Title line as 1st line, then data etc . Simply pick the table excel will open and be auto filled, you can save then to what ever name required. Can be used as a library file just (load " Table to excel") as it will run automatically.
By BIGALThis is a dynamic dcl creator for radio button choices, a good replacement for Initget, you just make a list of the button labels, it can be vertical or horizontal. You can use the returned value or the button number for user choice.
Examples are in the top of the code, any questions firstname.lastname@example.org
By Jonathan HandojoHave you ever wished that you had a Quick Select tool to find blocks by their attribute tags/values? Well, here you have it.
This LISP routine mimics the Quick Select behavior for the selection of the blocks. Upon issuing the command ABF, the user will be prompted a dialog for criteria inputs. The user can specify the tag/value names and add it to the list for selection. This way, the program can identify whether all the item should match the searching criteria or any one match for the block to be selected.
The searching criteria offers case-sensitivity, wildcard match, and patterns that Microsoft Office offers: equals, begins with, ends with, and contains. This can be set for tags and values alike.
Should you have any ideas, comments, and criticisms, leave them down in the comments below as I look forward to improving my codes/routines. Enjoy!
By Jonathan HandojoHi 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.
By Jonathan HandojoHi 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.
By BIGALMultiple 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 email@example.com
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 firstname.lastname@example.org
By hanhphucThank 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'
(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