2020. 3. 25. 17:17ㆍ카테고리 없음
Welcome to Lee Mac Programming Custom Programming Services Want to harness the power of custom programming to save your company countless hours of repetitive work? If there is a specific task that you wish to automate using custom programming, feel free to to hire my services. Want to know what you're missing out on? Read the of those who have worked with me and my programs.
Increase your AutoCAD Productivity Make AutoCAD work for you by using custom programming to automate many repetitive tasks. This site is primarily aimed towards utilising the AutoLISP & Visual LISP APIs to create custom programs which may be run within full versions of AutoCAD (not LT versions) and many of its derivative programs. A Sample of my Work. In addition to my custom programming services, I offer a plethora of available for you to download, covering a huge range of applications: from text manipulation to attribute extraction and everything inbetween. The also offers an insight into how you can learn to create your own AutoLISP programs and quickly increase your AutoCAD efficiency and productivity.
Whether you are a complete beginner or perhaps more experienced, I have no doubt that you can benefit from the help & resources available here. What is AutoLISP? AutoLISP is a dialect of the LISP programming language engineered to enable manipulation & customisation of AutoCAD and many of its derivative programs such as Civil 3D, MEP, Architecture, Electrical etc. AutoLISP is restricted to running on full versions of AutoCAD and cannot be run in any version of AutoCAD LT. Other applications such as Bricscad and IntelliCAD also offer the ability to run AutoLISP programs.
Visual LISP is an extension of AutoLISP introduced as an add-on to AutoCAD R14, and subsequently fully incorporated into the release of AutoCAD 2000. Visual LISP provides access to the ActiveX/COM and offers many advanced functions to aid with customisation. New to AutoLISP? Not sure how to run a program? Be sure to see my tutorial on.
10 th December 2018 I have updated my application to Version 1.6. This version now offers two custom commands pburst (Primary Burst) and nburst (Nested Burst), incorporating the functionality of my application and consolidating the two very similar programs into a single program, facilitating easier maintainance going forward. The program has also been modified to account for invisible objects created when exploding dynamic block references with visibility states, and fixes a bug causing attributes with transparency to be removed by the burst operation. 10 th November 2018 Following valuable user feedback, I have updated my application to Version 1.5. This new version implements code to account for a bug present in AutoCAD whereby the multileader text spacing factor is reset to 1.0 following modification of the background mask properties. 4 th November 2018 I have updated my application to Version 1.3.
This new version converts the two core commands c:lf (Length Field) and c:af (Area Field) into the functions lengthfield and areafield respectively. These functions may each be evaluated with two parameters: an optional target attribute tag and an optional field formatting code, thus enabling the user to define endless custom commands in a manner similar to that of my utility. I have provided a full explanation of how to define additional custom commands on the, and have also included a table of contents for ease of navigation.
29 th October 2018 My application has been renamed to and now offers two commands: LF (Length Field) and AF (Area Field). The program has also been restructured in an effort to standardise the output functionality across all of my related field programs. I have updated my program to Version 1.2. This new version generates the resulting field using my standard LM:outputtext function, facilitating output of the resulting field to existing table cells, text, mtext, multileaders, attributes, in addition to generating a new mtext object. 28 th October 2018 I have updated my application to Version 1.2. This revised version implements fixes to retain constant attribute values (converting the exploded definitions to single-line or multiline text appropriately), account for mirrored block references (for which one of the scale factors is negated), and finally account for multiline attribute references whose text content occupies multiple group 1 & 3 DXF groups. Essentially, the code is now consistent with the latest version my application.
I have also included an animated GIF to demonstrate the program in action. 27 th October 2018 My application has now been updated to Version 1.3 in order to fix a bug present in the autolabel:getattributetagid function which was preventing the numbering of some multileaders with attributed block content. 17 th October 2018 New Program! Enables the user to change the justification of a selection of multilines, without changing their position. Analogous to the Express Tools' TJUST command, however targeting mlines instead of text. 30 th August 2018 I have updated my function to include the 2018 drawing file format.
I have also restructured the program page to include a link to download the code for the function directly. 27 th August 2018 I have revised my tutorial entitled to simplify the examples (removing a number of unnecessary & unhelpful variations), revise some of the explanations, and include additional examples demonstrating how to handle other data-types.
I have also added a Table of Contents for ease of navigation. 9 th July 2018 My program has now been revised to Version 1.5 to address a bug arising when bursting constant or variable multiline attributes whose attribute value occupies multiple sets of group 1 & 3 DXF groups (i.e. Attribute values longer than 250 characters) causing the content of the resulting multiline text object to be truncated. 6 th May 2018 I have updated my application to Version 1.4. In this new version, the majority of the code has been completely overhauled to align it with the techniques & standard of code implemented when developing my similar application; the program has also been revised to facilitate compatibility with all UCS & View settings. 11 th March 2018 I have updated my program to Version 1.1.
This enhanced version offers a new Multiple option at the polyline selection prompt, allowing the user to apply a taper to all polylines in a selection simultaneously. 10 th March 2018 Following user feedback, I have updated the code for Example 4 program found on the page for my function. The new code accounts for earlier versions of AutoCAD in which the effectivename property of a block reference object is not available. This fourth example program demonstrates how my ObjectDBX Wrapper function may be used to easily extract & generate a file containing attribute data found in all attributed blocks within in an entire set of drawings in a selected directory. 8 th March 2018 I have updated my function to Version 1.1. The new code addresses a number of issues involving duplicate points being returned when generating point lists for polylines containing multiple arc segments or polylines which are visually closed but whose Closed property is False.
The new version also introduces an additional parameter to control the point density when approximating non-linear objects. 15 th January 2018 I have updated my application to Version 1.2. This new version fixes a bug in which any text content following the last field expression held by the target annotation object would be lost following the application of the source field formatting. 6 th January 2018 Following user feedback, I have updated my application to Version 1.4. This update ensures that single-line & multiline constant visible attributes are retained and converted to single-line or multiline text respectively when the block is exploded - such attributes would be lost when using the previous version of the program. Finally, as this is the first site update of new year, I shall take this opportunity to wish all visitors to my site a very Happy New Year and all the best for a healthy & prosperous 2018!
30 th December 2017 I have updated my set of, rewriting the 3-Point Circle function to improve the concision of the code, rewriting the corresponding example programs for both the 3-Point Circle & Arc to enable compatibility with all AutoCAD UCS and View settings, rewriting the 3-Point Arc example program to instead use the 3-Point Circle function (and therefore removing the superfluous 3-Point Arc function), and finally, rewriting the 3-Point Polyline Arc program to use the new function included as part of my. I have updated my set of to include a new function which will calculate the appropriate bulge value for an arc passing through three supplied points. 9 th October 2017 I have updated my application to Version 1.8. This revised version refines the calculation of the block definition bounding box to ignore block components residing on frozen layers and account for the possibility of null bounding boxes (as a result of all components being excluded from the calculation). This version also updates the ABB command to incorporate the ability for the user to specify a block name directly at the command-line when inserting a new block.
14 th September 2017 Following feedback from a couple of visitors to my site, I have now updated my set of to improve the consistency between the two sets of functions in the library, and to provide Vanilla AutoLISP support for multiline attributes. The Vanilla AutoLISP functions will now return nil when passed a non-attributed block, consistent with the Visual LISP variants.
I have also renamed the LM:getattributes function to LM:getattributevalues, as this function is the converse to the existing LM:setattributevalues function. For extra convenience, all functions in the library may now be downloaded as a single file using the download link at the top of the page. 3 rd September 2017 After receiving a couple of suggestions from an avid user of my program, I have now updated the program to Version 1.2. This new version offers the ability to offset the viewport outline by a predetermined number of paperspace units inside the viewport boundary, and also allows the user to automatically apply a set of predefined properties to the resulting modelspace polyline. I have also included a new animated demonstration of the program on the program page in order to convey the program's capabilities.
28 th August 2017 I have updated my set of to include several additional functions, and have also standardised the page format for consistency with the rest of the site. 6 th August 2017 New Program! Allows a user to generate a field expression referencing the length/perimeter/circumference of one or more selected objects. In the case of selecting multiple objects, the field expression references the sum of the lengths of all objects in the selection. The resulting field can then be displayed as a new MText object, or housed within an existing table cell, single-line text, multiline text, multileader, or attribute. 22 nd July 2017 I have updated my set of, rewriting a number of the functions, and providing an improved test program. The program will now enable or disable the ordering controls depending on whether the ordering operation is valid for the selected items (e.g.
If the top item is selected, the 'Top' button will be automatically disabled). The test program now also accounts for a deselection of all items in the list (disabling all ordering controls), a situation that would cause the previous version to crash. 13 th June 2017 Following valuable user feedback, I have enhanced my function to account for field expressions which are greater than 250 characters in length. Following this modification, I have consequently updated my, and programs, which all rely heavily on receiving the correct output from this function.
14 th May 2017 New Program! Allows the user to perform arithmetic operations on selected text or field expressions, with the result of the calculation represented using a field expression. The program is compatible with DText, MText, Attributes, MLeaders & Dimensions and will also reference nested field expressions held by these objects. 25 th April 2017 I have updated my program to Version 1.2. This update incorporates a couple of user-configurable program parameters which allow the user to easily adjust the tolerance used for dimension comparison, and the properties of the layer assigned to overlapping dimensions. 17 th April 2017 I have updated my application to Version 1.4. The new version fixes a bug which was causing the program to crash when modifying the background mask properties for dimensions with one or more dimension style overrides already applied.
12 th April 2017 Following user feedback, I have updated my application to Version 1.7. This update resolves a bug causing the program to produce an incorrect output when processing MText objects whose text content occupied multiple DXF group 3 entries. 8 th April 2017 Following additional user feedback received from avid users of my utility, I have implemented further improvements to the code and have updated this application to Version 1.8. The new version now accounts for the use of the 3DORBIT command when invoked transparently from within a command which has been configured to trigger a layer change. Previously, the act of invoking the 3DORBIT command transparently would cause the layer to be reset to the previously active layer, resulting in the new object incorrectly being created on this layer. 2 nd April 2017 Following valuable user feedback, I have updated my application to Version 1.7.
The updated code now accounts for the simultaneous insertion of multiple xrefs when using the XATTACH or CLASSICXREF commands, as part of the xref-dependent layering option. 18 th March 2017 As an analog to my existing application, I have added a new program which enables the user to populate a selected attribute with a field expression referencing the length or perimeter (or sum of lengths or perimeters) of one or more selected objects. 15 th January 2017 Following valuable user feedback, I have updated my application which allows a user to apply a prefix or suffix to the layer names of all layers found in a selection.
The updated code fixes a bug wherein the prefix and/or suffix was being applied & removed a number of times equal to the number of objects in the selection. The updated code also removes the restriction present in the previous version which prevented layers whose layer name started or ended with the same character as the prefix or suffix from being selected for processing. Finally, the new version provides more verbose output to indicate to the user exactly which layers have been renamed by the program.
4 th January 2017 I have updated my function page to include an alternative version of the function which avoids the limitation on the number of objects which may be processed as a result of the maximum number of arguments accepted by the AutoLISP min & max functions. I have also included a brand new test program, and a GIF animation to demonstrate how the function may be used.
Finally, as this is the first site update of the new year, I shall take this opportunity to wish all visitors to my site a Happy New Year and all the best for a healthy & prosperous 2017! 29 th December 2016 New Program! Defines a set of commands which enable the user to populate a selected annotation object (Text, MText, Attribute) with a field expression referencing the name and position of the layout in which the object resides. However - and most importantly - the field expressions generated by the program do not reference the CTAB system variable, and will therefore yield the correct result independent of whether or not the layout is current.
27 th November 2016 I have updated my function as part of my set of functions to allow users to remove paths containing forward-slash path delimiters and with trailing path delimiters. The code has also been condensed for efficiency & readability. 8 th November 2016 New Program!
Allows the user to apply or remove a prefix and/or suffix to all layers found in a selection of objects. 7 th November 2016 I have updated my function as part of my set of to validate the applicability of the ActiveX intersectwith method on the two supplied vla-objects prior to invoking this method. The function will therefore gracefully return nil if either of the supplied objects do not support this method. 5 th November 2016 I have updated my program to Version 1.1.
This update alters the program operation to allow the user to select a block to be deleted from the drawing, with the option of selecting a block by name (using the dialog displayed by the previous version of the program) available upon the user typing N at the selection prompt. The dialog interface has also been enhanced to include an edit box, allowing the user to filter the displayed list of block names. I have updated my function to Version 1.1. This version fixes a bug arising when the user selects multiple items, applies a filter which excludes one or more of the selected items, and then accepts the resulting selection. 26 th October 2016 Following valuable feedback from a user, I have updated my application to Version 1.8. This revision fixes a bug causing the program to crash if parentheses or double-quotes were found in the text content.
Access Model Space From A Layout Viewport Autocad For Mac Download
18 th September 2016 My program has been revised to Version 1.9. This version fixes the implementation of the block filter parameter when processing attributed dynamic blocks (Version 1.8 would ignore the block filter when processing such blocks). 11 th August 2016 Following valuable feedback received from a of the CADTutor forums, I have now updated my program to Version 1.1.
The updated code now accounts for polygonal viewports represented by 2D (Heavy) Polylines (this can arise when rotating a rectangular viewport, for example). 23 rd June 2016 New Program: allows the user to dynamically construct a straight-segmented polyline whose overall length may optionally be limited to a given value. The program uses my and functions to allow the polyline to be accurately constructed with the length displayed in real-time at the cursor.
20 th June 2016 Following user feedback for the previous version, I now have updated my utility to Version 1.4. This new version ensures that the selection count for selected objects following grip-editing operations is retained, and corrects the reported selection count for non-rectangular viewports (which were previously counted as two objects). 6 th June 2016 I have updated my utility to Version 1.3 to account for the use of the standard QSELECT and SELECTSIMILAR AutoCAD commands and display the number of selected objects accordingly. 30 th May 2016 As promised below, I have now updated the page for my application to include detailed instructions describing how to create your own custom background mask programs which bypass the main program dialog to apply predefined background mask properties to all objects in a selection. 23 rd May 2016 I have again updated my application to Version 1.3 to include a dedicated selection function to facilitate the creation of custom background mask programs which bypass the main program dialog. I will also soon update the program description to include instructions on how to create such programs. 22 nd May 2016 I have updated my application to Version 1.2.
The new version has been entirely restructured and now provides dedicated functions to allow the user to bypass the main program dialog if desired. The program also now enables the user to manipulate the background mask for dimensions. 10 th May 2016 I have tweaked my recently updated application to account for the use of the legacy CLASSICXREF command.
9 th May 2016 Following an excellent suggestion received from an avid user of my programs, I have updated my utility to Version 1.5. This new version incorporates the option to enable an 'xref-dependent' layer assignment, causing external references to be automatically inserted on a layer whose name matches that of the inserted xref, with an optional prefix & suffix, and fully-configurable layer properties. 24 th April 2016 My program has now been entirely rewritten and updated to Version 1.1. In rewriting the application, I have improved the error handling, program performance and code readability, paving the way for possible future enhancements.
10 th April 2016 I have updated my utility to invoke the AutoCAD UPDATEFIELD command when inserting a new field expression into the content of a selected attribute reference, as the use of such command or a drawing regeneration is required in order to display the value of new fields within attributes. 27 th March 2016 Upon receiving a report by a reader of my site that my was returning results which were inconsistent with other online MD5 hash generators for some input data, I ascertained that the results were indeed incorrect for input data longer than 56 bytes (i.e. 56 characters).
I determined that the cause of this issue was due to the arithmetic operations that are performed on the 4 32-bit hash values after processing each 512-bit chunk of input data not being wrapped to a 32-bit unsigned integer (as required by the algorithm), and also that such operations could potentially be introducing rounding errors as a consequence of the use of doubles to store the 4 32-bit items of hash data. To resolve this issue, I designed a bitwise addition function so that all operations could be performed on a list of 32-bits, with no loss of precision. I have therefore updated my to Version 1.1. 25 th March 2016 I have updated my utility to Version 1.2. This update implements an additional fail-safe to ensure that the MODEMACRO system variable is correctly reset when objects are deselected. 21 st March 2016 Since releasing the latest version of my application yesterday, I am pleased to have received a wealth of positive feedback, and also several bug reports from avid users of the program.
I have now fixed the reported bugs and have updated the program to. I wish to extend a huge thank you to all of my readers who were kind enough to test the program to its limit and report back with their feedback, in turn improving the application for others. I have also updated my program to incorporate the latest version of my function (which also addresses a number of bugs), and to also refine the command-line output to report the number of successful & unsuccessful drawings processed by the program. Finally, I have updated my function to Version 1.6 to fix a bug causing the 'Add Files' button to be incorrectly enabled when the user selected a directory.
20 th March 2016 Following valuable and encouraging user feedback, I have now updated my application to Version 1.5. The program has been mostly rewritten in order to incorporate compatibility for all types of Dimensions, and for Multileaders with Attributed Block content. 8 th March 2016 As an academic diversion from my typical programming, I have explored the fascinating fractal nature of the, along with its 3D analog: the Sierpinski Tetrahedron. This brief study forms part of my selection of. I have also updated my code to generate an example of in AutoCAD, as part of my study of. This page also demonstrates an alternative method in which to generate the by recursively applying one of three randomly selected transformations to a given point. 5 th March 2016 I have updated my function as part of my to accept negative integer arguments and to also permit the arguments to be supplied in any order.
This function will return a pseudo-random number within the range given by the two integer arguments. 28 th February 2016 Following a suggestion from member 'Jef!' Of the CADTutor forum, I have updated my tutorial to include an additional method:. This method demonstrates how to process a selection set by sequentially removing the entity at the (sslength - 1) th index until no entities remain in the set.
I have also updated the page to include a table of contents to assist with navigation of the tutorial. 27 th February 2016 I have updated my program to Version 1.2. This new version offers an additional option within the aarcsettings command to allow the user to control whether the arrowheads are created at the start point, end point, or both the start & end point of the arc. 11 th February 2016 I have updated my page exploring the mathematical objects known as to include an animated visual of the. 23 rd January 2016 Following user feedback, I have updated my program to Version 1.1. This new version will offer the user the option to erase the set of objects in the original selection. 16 th January 2016 I have updated my program to Version 1.2.
This new version no longer restricts the user to selecting a visible attribute to house the resulting Field Expression, but instead allows the user to select any attributed block and will prompt the user to choose the attribute tag to be populated with the Field Expression if the selected block contains more than one attribute. The updated program also enables the user to predetermine the attribute tag to be populated with the Field Expression using a parameter defined in the program source code. Finally, this new version also accounts for 64-bit versions of AutoCAD 2008 in which the ActiveX getobjectidstring method is not available. I have updated my program to Version 1.4. The new version includes an additional prompt for an optional line spacing factor which offers a default option allowing the user to retain the existing spacing between the selected text objects. I have updated my program to Version 1.1.
This update implements a new version of my LM:objectid function which has been modified to account for 64-bit versions of AutoCAD 2008 in which the ActiveX getobjectidstring method is not available. 10 th January 2016 I have updated my program to Version 1.4. The new version allows the user to cue an automatic layer change following the use of a custom AutoLISP command, and also adds the Layer Plot Style to the list of layer properties which may be configured by the program.
Following user feedback, I have updated my reactor-driven utility allowing a user to automatically to enable compatibility with Multileader objects, such that all MLeader text content is selected when double-clicking on an MLeader object. 1 st January 2016 For the first item of the new year, I shall share a new program. This program will allow the user to apply a tapered width across all segments of a selected 2D polyline, and is compatible with polylines containing linear and/or arc segments, constructed in any UCS. Finally, I shall take this opportunity to wish all visitors to my site a Happy New Year and all the best for a healthy & prosperous 2016!
31 st December 2015 I have updated my program to Version 1.1. In this new version, the core function which performs the overlap test has been completely rewritten in order to account for dimensions which overlap on both sides, and to also enable compatibility with dimensions created in any UCS or construction plane. 28 th December 2015 I have updated my function to Version 1.5; this minor update resolves a bug present in the filename sorting functions causing the function to error when processing file or folder names which contained a set of numbers interspersed with multiple points (e.g.
24 th December 2015 As an early Christmas present, I have added a new tutorial to the site - provides a step-by-step explanation of how to use an association list to construct a simple block counter program in AutoLISP, which will prompt the user for a selection of block references and will output the quantities of each block in the selection to the AutoCAD command-line. Finally, I wish all of my readers a very Merry Christmas! 23 rd December 2015 I have added a new program to the site. This program will automatically detect overlapping linear dimensions in all layouts and all blocks in the active drawing, moving such dimensions to a separate layer to be reviewed by the draftsman. I have updated my set of functions to reduce the amount of code required for each function, improve the overall readability of the functions, and to ensure that the functions only modify the ACAD registry key if a modification is necessary.
21 st December 2015 I have rewritten my old program and have updated the program to Version 1.1. The new version allows the user to select which attribute tags are displayed in the table, and offers the ability to use field expressions to automatically update the table totals. Constant attributes with numerical content are also now included, and the table columns are sized appropriately for the content.
I have also added a new GIF demonstration to show the program in action. 6 th December 2015 I have updated my popular application to Version 3.9. This relatively minor update improves the method used to determine the appropriate width for an MText object in order to account for multiple lines of text; removes the case-sensitivity of attribute tag comparison to account for applications which do not enforce uppercase attribute tags; and fixes a bug causing an oblique angle to be applied to single-line text if the current text style has an oblique angle set, but the text style selected for use does not. 2 nd December 2015 I have updated my utility to Version 1.3 - this release introduces several new features.
A new Force Layer Properties parameter determines whether the program will automatically modify the properties of existing layers in a drawing to match the properties defined in the program. A new System Variables parameter incorporates the ability to configure any number of system variables when a command is invoked, with the system variables reset to their original values upon completing or cancelling the active command. The Layer Description has also been added to the list of layer properties which may be configured by the program.
1 st November 2015 I have added a new program to the site: will allow the user to calculate the total object length between two points along a chain of connected objects. Be sure to also check out my related program, which allows the user to automatically select all connected objects following selection of a single object in the chain. 31 st October 2015 Following feedback received from a user of my programs, I have now updated my & programs to enable compatibility with non-uniformly scaled blocks. There remain some restrictions when attempting to burst nested blocks which are nested within non-uniformly scaled parent blocks, however these restrictions are inherent in the way that AutoCAD handles such objects. 11 th October 2015 As an extension & generalisation of my old tutorial, I have developed & published a new developer function to enable automatic. This function automatically configures & manages a set of DCL list tiles (i.e. Listbox & popuplist tiles) enabling dependency between the tiles - that is, the items displayed in a list tile will be dependent on the item selected in other list tiles.
10 th October 2015 I have updated my utility to account for selection of existing annotation objects (Text, MText, Attributes etc.) which already contain one or more field expressions. 6 th October 2015 I have added a new program to the site. This program allows the user to rotate the AutoCAD crosshairs ( SNAPANG system variable) to align with an object at a selected point, a fixed angle, or percentage representing a slope grade. 27 th September 2015 I have further developed my program and have updated the program to Version 1.2. The new version enables full compatibility with multileaders containing attributed block content, and the user may configure the program to renumber attributed blocks, attributed mleaders, or both.
The new version also rectifies a number of bugs present in the previous version, and restructures the program code to improve readability. There is also a new GIF animation for your viewing pleasure.
20 th September 2015 I have updated my program to Version 1.1. The program has been completely rewritten to improve performance & stability, and the new version offers several new improvements, including the ability to match multiple block names & attribute tags using wildcard patterns, use a numbering prefix & suffix, specify a starting number, use fixed length numbering with leading zeros, and compatibility for multiline attributes. 19 th September 2015 I have updated the page for my function to offer developers two types of function: the function will group a supplied list into sublists of a maximum length; whereas the function will group a list into sublists of a fixed length. 17 th September 2015 I have tweaked the code for my function to allow the calling expression to supply the function with a wildcard pattern as the block name argument in order to match multiple block names. 12 th September 2015 I have added a new program to the site. This simple program enables the user to create objects with the appearance of multilines, however which are composed of standard polylines. 30 th August 2015 I have added a to the site which causes the text content of an MText object to be automatically selected on a double-click.
The idea was spawned from a question received from a visitor to my site who was looking for a consistent result when double-clicking on MText and single-line text (DText). 1 st August 2015 I have added a new program to the section of the site.
Similar to my existing program, this new program allows the user to change the base point location for multiple blocks to one of nine standard justifications. 13 th June 2015 I have updated my application to Version 3.8. The new version enhances the 'Replacement Mode' option, which now allows the user to replace the text content of primary or nested text, mtext, dimensions, or multileaders containing mtext or attributed block content. 7 th June 2015 Following user feedback, I have tweaked my program to enable full compatibility with the ZWCAD application in which the ActiveX regeneratetablesuppressed property is not implemented. 3 rd May 2015 I have added a new program to the section of the site: allows the user to extend both ends of all lines, arcs, 2D & 3D polylines in a selection by a specified amount. As demonstrated, the program will perform successfully with both 2D and 3D objects, constructed in any UCS plane. 25 th April 2015 I have updated my very old set of, rewriting & consolidating the code for all three custom commands into a single program file.
These simple programs allow the user to join sets of lines, arcs & polylines to form continuous polylines, close sets of open polylines, and modify the width of all segments for all polylines in a selection. 13 th April 2015 I have revised my application to Version 1.8 to incorporate a number of enhancements.
New or existing Text and MText may now be aligned to Lines, Polylines, Arcs, Circles, Ellipses, Elliptical Arcs & Splines nested (to any depth) within blocks or xrefs. The program now offers a new 'Settings' menu wherein the user can control the object type for new text created by the program, the justification of new text, the default offset factor & rotation, and many more settings. A new 'Multiple Text Mode' allows the user to continuously place multiple text objects aligned to the same curve. Text readability & rotation may now be altered during text alignment. Several other program enhancements have also been implemented, but are too numerous to list here. 14 th November 2013 New program added to the site. This program enables the user to clear the area of a hatch pattern obscuring selected Text and MText objects, or Text, MText and Attributes contained within selected primary & nested block references.
12 th November 2013 I have added a new program to the site. This program automatically generates MText objects positioned over the midpoint of every object in a selection, with each item of MText containing a field expression referencing the length of the object. New program added to the site. This utility enables the user to determine the field formatting code associated with the field expression held by a selected object, and may be used in conjunction with my, and programs in order to determine the correct field formatting code to use with each of the programs.
I have updated the descriptions for my, and programs to update the set of instructions indicating how to determine the correct field formatting code to use with each program. 6 th November 2013 I am delighted to publish a very appreciative and complimentary received from the tremendous folk at - thank you! 29 th October 2013 New program added to the site.
This program enables the user to offset a section of a polyline enclosed by two selected points on the polyline. I have updated my set of to improve the concision of the code for many of the functions. 25 th October 2013 Added to the section of the site.
This function is an AutoLISP implementation of the MD5 message-digest algorithm developed in 1992 by Ronald Rivest. 24 th October 2013 My has been updated to add the bad argument type: streamp error message, and to also include possible AutoLISP functions pertaining to the cause of each error. 23 rd October 2013 I have recently updated my function to overhaul the old function code, include additional error trapping, and furthermore update the code formatting to meet my current standard.
18 th October 2013 I am pleased to list as a friend of. Andrea Andreetti, the proprietor of DuctiSoft, is a very creative programmer whom I have had the pleasure of collaborating with in the past to create a novelty program (requires membership to view). 10 th October 2013 My program has now been published to the!
The published version has a professional application installer and comes complete with a custom ribbon panel from which to launch the application. Feel free to the app!
9 th October 2013 I have now updated my program to Version 1.2. This version fixes a UCS bug arising when the UCS origin is not equal to the WCS origin. 2 nd October 2013 I am pleased to list Paul Stafford's blog: as an affiliate site of. Paul's blog is relatively new, but already contains many useful tips & tricks to help you get the most out of AutoCAD. 1 st October 2013 Following a bug reported by a user, I have updated my program to Version 1.6. The updated version fixes a bug causing the program to return an error if an object intersected the bounding box of the block at only one point. 12 th September 2013 I have recently updated my set of to fix a few minor bugs, improve the concision of the code, and update the formatting to be consistent with my other function sets.
11 th September 2013 My & programs have now been published and are available to download from the! These published versions come complete with professional application installers and custom ribbon panels from which to launch the applications. You are invited to & the apps! 9 th September 2013 I have updated my program to Version 1.1. The updated version incorporates additional error trapping to prohibit selection of blocks nested within dynamic blocks or xrefs (with which the program is incompatible), and nested blocks residing on locked layers. The program will also now ignore non-uniformly-scaled block references (for which the previous version returned an error). 6 th September 2013 My program has now been published and is available to download from the.
The published version includes an application installer and a custom ribbon panel from which to launch the application. Feel free to the app! I am pleased to announce that is now an affiliate of. Gilles Chanteau, the proprietor of gileCAD, is an incredibly talented programmer who I have had the pleasure of knowing for several years, and from whom I have learnt a great deal. 3 rd September 2013 My program is now also available to download from the!
The version published at the Exchange App Store comes complete with an installer and also features a custom ribbon panel from which to launch the program. Feel free to the app and let me know what you think! 1 st September 2013 A new novelty program gift to my readers for the first post of September: was inspired by a recent 'challenge thread' posted at CAD forum, and will generate a pseudo-random password string based on the parameters specified. 31 st August 2013 I have updated my program to Version 1.2. The new version implements a fix for a bug causing the program to crash when a nested attributed block or nested 2D/3D Polyline is selected. 29 th August 2013 My program has now been rewritten and updated to Version 1.1. The new version has cleaner & more concise code, with additional error trapping to account for xrefs and objects on locked layers.
I have also included an animated demonstration to exhibit the program capabilities. 26 th August 2013 Following valuable feedback received from several users, my program has now been updated to Version 1.1. The new version allows the user to select multiple nested objects (with the same parent) to be moved, with selection highlighting to provide visual feedback for the selected objects. The new version will also move only the 'outermost' nested object when the user has selected an object nested several levels deep - this also resolves an issue in which the user could move nested dimension components. The accompanying animated demonstration has also been updated to reflect the new functionality. 25 th August 2013 function rewritten and updated to Version 1.2. This updated version alters the third argument for the function to a bit-coded integer controlling whether the list box permits selection of multiple items, and also whether the function will either return a list of selected items or a list of zero-based indexes corresponding to the position of each item within the supplied data set - a necessary enhancement when working with data containing duplicate items.
I have uploaded a sample zip folder containing an example CSV file & accompanying sample drawing containing an attributed block for use with my program. 21 st August 2013 Added new (Add Support File Search Paths at n) function to my set of. This function will add a list of paths at a position in the list of AutoCAD Support File Search Paths given by a supplied zero-based index parameter.
20 th August 2013 My old program has recently been rewritten & updated to Version 1.2. The new version has cleaner code and performs successfully on a wider range of CAD platforms following a recently received bug report submitted by an avid user. 19 th August 2013 I have recently updated my entire set of. The code for each function is now clearer & more concise, and the functions have a reduced footprint, carrying smaller code headers.
A new function has also been added to allow a developer to effortlessly toggle the Flip State Parameter held by a Dynamic Block reference. 14 th August 2013 I am pleased to list as an affiliate of. Paul is a talented & certified professional draughtsman and, in addition to advertising his services, his site offers free resources in the form of LISP tips & an expanding block library. 10 th August 2013 Inspired by a request posted at the, I have added a new program to the site. This program enables the user to move a selected object nested within a block, dynamic block or xref (nested to any depth), without opening the xref source drawing. 7 th August 2013 I am pleased to list Matthew Nichols' blog as an affiliate of. Matthew's blog is packed with useful information and includes several macros & DIESEL examples for LT users who unfortunately cannot take advantage of AutoLISP.
2 nd August 2013 New added to the section of the site. This reference includes information gathered over the years from various sources, including information on undocumented ssget functionality and several examples to demonstrate function usage.
27 th July 2013 I have extensively updated my tutorial on to include better explanations for actions performed in the tutorial, and clearer & cleaner graphics & animation. 25 th July 2013 Following a bug reported by a user, I have updated my function to Version 1.3; this update fixes a bug wherein the function would crash if the user double-clicked in empty space in the left-hand list box pane. 23 th July 2013 I have now rewritten my function to improve the concision & readability of the code.
This function will recursively create each level of a supplied directory folder structure. 14 th July 2013 Following the recent addition of my program, I have now also added a new program to the site.
This program enables the user to copy a field expression from a selected source object to multiple destination objects in a drawing. My program has now been completely rewritten and updated to Version 1.1; the new version incorporates substantially improved error trapping and improves code readability in general.
An animated demonstration of the program in action has also been included on the. 12 th July 2013 I have added a brand new program to the site. This program enables the user to copy the formatting from a selected source field expression to multiple destination fields in a drawing. Following the above addition, I have also included my function in the section of the site. This function is heavily utilised by my recently added program, and will return the field expression associated with a Text, MText, Attribute, MLeader, or Dimension object.
8 th July 2013 My program has now been completely rewritten and updated to Version 1.1. The program enables a user to copy a selection of objects to all or selected layout tabs in a drawing; this updated version is more robust with cleaner code for improved readability. 5 th July 2013 I have now updated my program to Version 1.5; this new version enables the user to copy or rename anonymous block references in a drawing. 16 th June 2013 My program has now been completely rewritten and updated to Version 1.4. The code for the updated program has improved clarity, concision and readability, with additional error trapping to allow for block references residing on locked layers. Following the recent update of my program as noted above, my function has also been rewritten and similarly improved.
I have rewritten my old program and have renamed the program to a more apt:. This program is the precursor of my far more generalised and extensively developed program and allows a user to import a block from a selected drawing file into the active drawing, without opening the external file. 15 th June 2013 My novelty application has now been completely rewritten and updated to Version 1.1.
In addition to incorporating cleaner and far more efficient & readable code, the new version also includes a new runclock command, enabling the user to run the clock continuously. I have also rewritten the description found on the and have added a new animation to demonstrate the program in action. I have updated my & functions as part of my set of, following a reported bug. 7 th June 2013 I have updated my set of; these functions are ideal for converting and manipulating alphabetical 'column references' (e.g. A, B., Z, AA.) as used by applications such as Excel. I have also provided alternative versions for many of the functions in order to demonstrate different ways to obtain the same result. A table of contents has been included on the page for ease of navigation.
6 th June 2013 I have updated my set of to provide functions for conversion between all 5 colour enumerations listed on the page; a table of contents has also been included for ease of navigation. 2 nd June 2013 New program added to the section of the site. This program is a generalisation and enhancement of my existing (and recently updated) program, enabling the user to break a selected object either at two specified points, or at two points of intersection with another selected object, and apply a set of properties to the selected portion of the object. 30 th May 2013 My program has now been entirely rewritten and updated to Version 1.3. The much improved new version enables the user to use the program with ellipses in addition to circles, and apply a whole set of properties to the 'hidden' arc or elliptical arc, as opposed to simply assigning a layer as performed by the previous version. The accompanying has also been rewritten and a new animated demonstration has been included.
28 th May 2013 My program has been completely rewritten and updated to Version 1.4; I have furthermore renamed the program to a more appropriate:. Please note that the commands for this program have also been renamed accordingly. I have also rewritten the accompanying, providing an explanation for each available command, and including a new animated demonstration. 26 th May 2013 I have completely rewritten my set of functions which enable a user to and have also updated the accompanying function description found on that page. My & programs have also been completely rewritten and updated to Version 1.1 & Version 1.2 respectively, to improve the readabilit.