Jump to content

Search the Community

Showing results for tags 'add'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • CADTutor
    • News, Announcements & FAQ
    • Feedback
  • AutoCAD
    • AutoCAD Beginners' Area
    • AutoCAD 2D Drafting, Object Properties & Interface
    • AutoCAD Drawing Management & Output
    • AutoCAD 3D Modelling & Rendering
    • AutoCAD Vertical Products
    • AutoCAD LT
    • CAD Management
    • AutoCAD Bugs, Error Messages & Quirks
    • AutoCAD General
    • AutoCAD Blogs
  • AutoCAD Customization
    • The CUI, Hatches, Linetypes, Scripts & Macros
    • AutoLISP, Visual LISP & DCL
    • .NET, ObjectARX & VBA
    • Application Beta Testing
    • Application Archive
  • Other Autodesk Products
    • Autodesk 3ds Max
    • Autodesk Revit
    • Autodesk Inventor
    • Autodesk Software General
  • Other CAD Products
    • BricsCAD
    • SketchUp
    • Rhino
    • SolidWorks
    • MicroStation
    • Design Software
    • Catch All
  • Resources
    • Tutorials & Tips'n'Tricks
    • AutoCAD Museum
    • Blocks, Images, Models & Materials
    • Useful Links
  • Community
    • Introduce Yourself
    • Showcase
    • Work In Progress
    • Jobs & Training
    • Chat
    • Competitions

Find results in...

Find results that contain...

Date Created

  • Start


Last Updated

  • Start


Filter by number of...

Found 13 results

  1. Hi, I am running a version of autocad architecture with a plugin that adds some custom properties to AEC objects such as doors that can be viewed under the design tab of the property palette. I want to make a macro that changes these properties but I don't know how to access them via lisp. When I use the inspect window in the visual lisp viewer the custom properties don't come up and when I use the vla-dump-object function, the custom properties are not listed also. Does anyone have any idea if/how these properties are accessible? Also, can custom property fields be added via autolisp?
  2. All, I've been using Lee Mac's "Add object to block" lisp for sometime now and it works great, and one of the things I use it for is my title block for revisions but now the revision block has been inserted into the title block as a block and it won't add what I want to the revision block. Is there a way to make it find the revision block inside of the title block? Basically I would to able to pick the block inside of a block. ;;----------------=={ Add Objects to Block }==----------------;; ;; ;; ;; Adds all objects in the provided SelectionSet to the ;; ;; definition of the specified block. ;; ;;------------------------------------------------------------;; ;; Author: Lee Mac, Copyright © 2011 - [url="http://www.lee-mac.com"]www.lee-mac.com[/url] ;; ;;------------------------------------------------------------;; ;; Arguments: ;; ;; doc - Document Object in which block resides. ;; ;; block - Entity name of reference insert ;; ;; ss - SelectionSet of objects to add to definition ;; ;;------------------------------------------------------------;; (defun LM:AddObjectstoBlock ( doc block ss / lst mat ) (setq lst (LM:ss->vla ss) mat (LM:Ref->Def block) mat (vlax-tmatrix (append (mapcar 'append (car mat) (mapcar 'list (cadr mat))) '((0. 0. 0. 1.)))) ) (foreach obj lst (vla-transformby obj mat)) (vla-CopyObjects doc (LM:SafearrayVariant vlax-vbobject lst) (vla-item (vla-get-Blocks doc) (cdr (assoc 2 (entget block)))) ) (foreach obj lst (vla-delete obj)) (vla-regen doc acAllViewports) ) ;;-----------------=={ Remove From Block }==------------------;; ;; ;; ;; Removes an Entity from a Block Definition ;; ;;------------------------------------------------------------;; ;; Author: Lee Mac, Copyright © 2011 - [url="http://www.lee-mac.com"]www.lee-mac.com[/url] ;; ;;------------------------------------------------------------;; ;; Arguments: ;; ;; ent - Entity name of Object to Delete from Block [ENAME] ;; ;;------------------------------------------------------------;; (defun LM:RemovefromBlock ( doc ent ) (vla-delete (vlax-ename->vla-object ent)) (vla-regen doc acAllViewports) (princ) ) ;;------------------=={ Safearray Variant }==-----------------;; ;; ;; ;; Creates a populated Safearray Variant of a specified ;; ;; data type ;; ;;------------------------------------------------------------;; ;; Author: Lee Mac, Copyright © 2011 - [url="http://www.lee-mac.com"]www.lee-mac.com[/url] ;; ;;------------------------------------------------------------;; ;; Arguments: ;; ;; datatype - variant type enum (eg vlax-vbDouble) ;; ;; data - list of static type data ;; ;;------------------------------------------------------------;; ;; Returns: VLA Variant Object of type specified ;; ;;------------------------------------------------------------;; (defun LM:SafearrayVariant ( datatype data ) (vlax-make-variant (vlax-safearray-fill (vlax-make-safearray datatype (cons 0 (1- (length data)))) data ) ) ) ;;------------=={ SelectionSet -> VLA Objects }==-------------;; ;; ;; ;; Converts a SelectionSet to a list of VLA Objects ;; ;;------------------------------------------------------------;; ;; Author: Lee Mac, Copyright © 2011 - [url="http://www.lee-mac.com"]www.lee-mac.com[/url] ;; ;;------------------------------------------------------------;; ;; Arguments: ;; ;; ss - Valid SelectionSet (Pickset) ;; ;;------------------------------------------------------------;; ;; Returns: List of VLA Objects, else nil ;; ;;------------------------------------------------------------;; (defun LM:ss->vla ( ss / i l ) (if ss (repeat (setq i (sslength ss)) (setq l (cons (vlax-ename->vla-object (ssname ss (setq i (1- i)))) l)) ) ) ) ;;---------------=={ Block Ref -> Block Def }==---------------;; ;; ;; ;; Returns the Transformation Matrix and Translation Vector ;; ;; for transforming Block Reference Geometry to the Block ;; ;; Definiton. ;; ;;------------------------------------------------------------;; ;; Author: Lee Mac, Copyright © 2011 - [url="http://www.lee-mac.com"]www.lee-mac.com[/url] ;; ;;------------------------------------------------------------;; ;; Arguments: ;; ;; e - Block Reference Entity ;; ;;------------------------------------------------------------;; ;; Returns: List of 3x3 Transformation Matrix, Vector ;; ;;------------------------------------------------------------;; (defun LM:Ref->Def ( e / _dxf a l n ) (defun _dxf ( x l ) (cdr (assoc x l))) (setq l (entget e) a (- (_dxf 50 l)) n (_dxf 210 l)) ( (lambda ( m ) (list m (mapcar '- (_dxf 10 (tblsearch "BLOCK" (_dxf 2 l))) (mxv m (trans (_dxf 10 l) n 0) ) ) ) ) (mxm (list (list (/ 1. (_dxf 41 l)) 0. 0.) (list 0. (/ 1. (_dxf 42 l)) 0.) (list 0. 0. (/ 1. (_dxf 43 l))) ) (mxm (list (list (cos a) (sin (- a)) 0.) (list (sin a) (cos a) 0.) (list 0. 0. 1.) ) (mapcar '(lambda ( e ) (trans e n 0 t)) '( (1. 0. 0.) (0. 1. 0.) (0. 0. 1.) ) ) ) ) ) ) ;; Matrix x Vector - Vladimir Nesterovsky (defun mxv ( m v ) (mapcar '(lambda ( r ) (apply '+ (mapcar '* r v))) m) ) ;; Matrix x Matrix - Vladimir Nesterovsky (defun mxm ( m q ) (mapcar (function (lambda ( r ) (mxv (trp q) r))) m) ) ;; Matrix Transpose - Doug Wilson (defun trp ( m ) (apply 'mapcar (cons 'list m)) ) ;;---------------------=={ Select if }==----------------------;; ;; ;; ;; Provides continuous selection prompts until either a ;; ;; predicate function is validated or a keyword is supplied. ;; ;;------------------------------------------------------------;; ;; Author: Lee Mac, Copyright © 2011 - [url="http://www.lee-mac.com"]www.lee-mac.com[/url] ;; ;;------------------------------------------------------------;; ;; Arguments: ;; ;; msg - prompt string ;; ;; pred - optional predicate function [selection list arg] ;; ;; func - selection function to invoke ;; ;; keyw - optional initget argument list ;; ;;------------------------------------------------------------;; ;; Returns: Entity selection list, keyword, or nil ;; ;;------------------------------------------------------------;; (defun LM:SelectIf ( msg pred func keyw / sel ) (setq pred (eval pred)) (while (progn (setvar 'ERRNO 0) (if keyw (apply 'initget keyw)) (setq sel (func msg)) (cond ( (= 7 (getvar 'ERRNO)) (princ "\nMissed, Try again.") ) ( (eq 'STR (type sel)) nil ) ( (vl-consp sel) (if (and pred (not (pred sel))) (princ "\nInvalid Object Selected.") ) ) ) ) ) sel ) ;-------------------------------------------------------------; ; -- Test Functions -- ; ;-------------------------------------------------------------; (defun c:Add2Block ( / *error* _StartUndo _EndUndo acdoc ss e ) (defun *error* ( msg ) (if acdoc (_EndUndo acdoc)) (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*") (princ (strcat "\n** Error: " msg " **"))) (princ) ) (defun _StartUndo ( doc ) (_EndUndo doc) (vla-StartUndoMark doc) ) (defun _EndUndo ( doc ) (if (= 8 (logand 8 (getvar 'UNDOCTL))) (vla-EndUndoMark doc) ) ) (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object))) (if (and (setq ss (ssget "_:L")) (setq e (LM:SelectIf "\nSelect Block to Add Objects to: " '(lambda ( x ) (eq "INSERT" (cdr (assoc 0 (entget (car x)))))) entsel nil ) ) ) (progn (_StartUndo acdoc) (LM:AddObjectstoBlock acdoc (car e) ss) (_EndUndo acdoc) ) ) (princ) ) ;-------------------------------------------------------------; (defun c:Remove ( / *error* _StartUndo _EndUndo acdoc e ) (defun *error* ( msg ) (if acdoc (_EndUndo acdoc)) (or (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*") (princ (strcat "\n** Error: " msg " **"))) (princ) ) (defun _StartUndo ( doc ) (_EndUndo doc) (vla-StartUndoMark doc) ) (defun _EndUndo ( doc ) (if (= 8 (logand 8 (getvar 'UNDOCTL))) (vla-EndUndoMark doc) ) ) (setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object))) (while (setq e (car (nentsel "\nSelect Object to Remove: "))) (_StartUndo acdoc) (LM:RemovefromBlock acdoc e) (_EndUndo acdoc) ) (princ) ) (vl-load-com) (princ) ;;------------------------------------------------------------;; ;; End of File ;; ;;------------------------------------------------------------;;
  3. This is a very simple one.. I am so inexperienced with writing LSPs. This command adds the current annotative scale for the object. Instead of retyping it I want to assign it to a shorter keyboard shortcut such as "ASA" _AIOBJECTSCALEADD
  4. Hello All! I would like to add another command to the pop up sub-menu (see attached image) that come up when you place your courser over a leader. I would like ADD the option to remove a leader right in this sub-menu. Is this possible? Here is the command that I think I need to add to this menu. ^C^C_MLEADEREDIT _R If this possible how do I get it done? Thanks in advanced.
  5. Hello, Below is a LISP for calculating the amps based on a wattage The LISP works by clicking the wattage number and then the amperage number and after already updating the wattage total. The updated amperage will just overwrite the current number. However, when you accidentally miss a piece of text, it executes the command anyway. Or, if you select a line it finishes the command. Also, if there is a comma, say XX,XXX, then it cannot compute the correct total. Here is the code for the '208' LISP: (defun c:208 (/ watts amps ent) (while (= watts nil) (setq watts (car (entsel "\nSelect Demand Watts: "))) ) (setq watts (cdr (assoc 1 (entget watts))) amps (rtos (/ (atof watts) 360) 2 1) ) (while (= ent nil) (setq ent (car (entsel "\nSelect Target Entity: "))) ) (setq ent (subst (cons 1 amps) (assoc 1 (entget ent)) (entget ent))) (entmod ent) (princ) ) And, here is the ADD LISP that works by adding up any selection of text, with or without commas, and will keep prompting the user for a selection, saying '0 items selected' until the user selects a piece of text. It works with commas as well. I just want to take the '208' LISP and make sure it has some of the those capabilities that the ADD LISP. Just needs a little fine tuning. ;****************************************************************** ;Add.lsp 6/17/96 ;v1.01 7/2/96 fixed to use local variables ;v1.02 1/15/97 Cleaned up commented out code. Added more instructions. ;v1.03 10/3/06 revised the program to work with numbers that include commas. ;v1.04 11/20/06 revised the program to stop adding zeros on the end. ;***************************************************************** ;Add string lisp routine will take a selection of text and add the ;numbers together. ;Use: ;Select some stuff. All non-text items are ignored. Any numbers in ;the selected text will be added together. Select a text item to be ;updated. The selected text item will be replaced with the result of ;the addition. ; ;Note that the units command will affect the format of the results. ;If you get a number will a bunch of trailing 0's then change units ;to fix the problem. ; ;************************************************************* ; below is the subroutine that removes the commas from the numbers and changes decimal points ; added by me (defun comma ( / nc nt m tmp ntext ) (setq nc 0) ;set counter to 0 (setq m T) ;set m to true (setq ntext "") ;blank out ntext (setq nt (strlen text1)) ;initalize counter (text1 from calling program) ; while loop test for ascii decimal point or number between 0 and 9 and eliminates none decimal or number char. (while m (setq nc (+ nc 1)) (setq tmp (ascii (substr text1 nc 1))) (if (or (= tmp 46) (and (>= tmp 48) (<= tmp 57))) (setq ntext (strcat ntext (substr text1 nc 1))) ) (if (= tmp 46) ;this will adjust the decimal point to 1 if a decimal is present in the number. (setvar "luprec" 1) ) (setq nt (- nt 1)) (if (= nt 0) (setq m F)) ) (setq text1 ntext) ) ntext ;below is the original program ;end of by me ;dxf function takes an integer dxf code & ent data list and ;returns the value for that dxf code. (defun dxf (code elist) (cdr (assoc code elist)) );defun ;************************************************************* ;ss1 - selection set ;n - number of items in selection set (counter) ;total - total of float numbers in selection set ;e - ;au - current unit precision (defun C:A ( / lu ed en et i n ss1 text1 total ) ;added by me to remove the trailing zeros (setq lu (getvar "luprec")) ; save current precision (setvar "luprec" 0) ; set precision to 0 (setq ss1 (ssget '((0 . "TEXT")))) ; Select objects, only text (if ss1 ; If any objects selected (progn (setq i 0 total 0 n (sslength ss1)); reset tot, set n to number of items (while (< i n) ; For each selected object... (setq text1 (cdr (assoc 1 (setq e (entget (ssname ss1 i)))))) ;below is the subroutine call to remove the commas (comma) (setq total (+ total (atof text1))) (setq i (1+ i)) ; increment counter );while );progn );if (princ "Total ") (princ total) (terpri) (setq en (entsel "\nSelect text to update to total") ed (entget (car en)) et (dxf 0 ed) ) (if (= et "TEXT") ; verify text was selected ;(rtos total 2) returns total formated as a string in decimal format ;substitute the new text for the old text... (progn (entmod (setq ed (subst (cons 1 (rtos total 2)) (assoc 1 ed) ed)) );entmod ) );if (setvar "luprec" lu) ;return precision to it's original value (princ) );defun (princ)
  6. Hi I have a problem. If you can help I'll be glad to you. I have some chainage labels as 1+234.56 format. I want a lisp for increase-decrease selected chainage values by specified amount. Thank You
  7. I have found some really great lisps that do a great job of adding a series of numbers in (dtext, mtext, mleaders, etc), but have not found a lisp that will add all if commas are being used. I would like to find something that will add all types of text numbers (dtext, mtext, mleaders, etc) with commas and allow me to insert the sum as a dtext or mtext. Any help would be appreciated.
  8. hello i have an existing dynamic block with several visibilities states. i would like to add another one but when i did it, it changes one of the existing visibility state my question is : how to add a visibility state to an existing block without changing existing states. thanks Phil
  9. Morning folks! I need to create a specific line weight other than those provided at default. Right now it goes from 0.00mm to 0.05mm to 0.09mm. I'm trying to get a line thickness of 0.07mm. All the best from Toronto
  10. AutoCAD 2012 QUESTION: Is it possible to add the value of one ATTDEF to another ATTDEF where the second ATTDEF obtains one value from a BlockPlaceholder? E.g. A dynamic block width Parameter named "Width" = 300 ATTDEF1 named "Pocket" = 25 ATTDEF2 = BlockPlaceholder ("Width" selected) + ATTDEF1 ("Pocket" selected) ATTDEF2 = 325 BACKGROUND: This may seem a little convoluted, so let me explain the application. We currently use a dynamic block of a simple rectangle which is STRETCHed to fit the daylight opening of a curtain wall frame (those aluminum/glass walls on many commercial buildings). By inserting this block into every opening of a building it is possible to visually confirm a complete take off as well as verify all sizes are exact (and many many sizes are typical). Glass sizes, however, differ from the daylight opening. The pockets of the frame differ depending on the specific design: resulting in typically 16 mm, 19 mm , and 25 mm larger glass sizes. On the other hand, some frames use a fin retention and may result in glass sizes being 13 mm smaller, not larger. BEST WORKING SOLUTION: Create a dynamic block of a rectangle that has a "Width" and a "Height" Parameter Place a multi-line ATTDEF centered in the rectangle Insert a Formula in the default value of the ATTDEF Right-click in the Formula to add a BlockPlaceholder for "Width" Set units to decimal with 0 precision (forces Metric) and "+ 25" to Formula add new line, then "x", then another new line Right-click in the Formula to add a BlockPlaceholder for "Height" Set units to decimal with 0 precision (forces Metric) and "+ 25" to Formula As you can see, this results in a result like the following: 325 x 400 WHATS WRONG WITH BEST WORKING SOLUTION: Unfortunately it does not offer flexibility: Dynamic block permanently set to add a 25 mm pocket Requires multiple dynamic blocks for each frame type Forces all units to be Metric IMPROVEMENTS: GOOD: Ask user the pocket size (e.g. -13, 16, 19, or 25 mm) when inserting the block and use that value in the Formula field. BETTER: Allow user to select a pocket size from a list: e.g. Flush Glazed frame: 16 mm Curtain Wall frame: 25 mm Window frame: -13 mm ULTIMATE: BETTER + works in Metric and Imperial
  11. How can I make this allow me to select the text to be edited? (defun c:AFF ( / ss) (vl-load-com) (if (and (setq ss (ssget "X" (list (cons 0 "*text")))) (setq amt (getreal "\nPlease type the amount you would like to add: "))) (progn (mapcar '(lambda (z) (vla-put-textstring z (rtos (+ (atof (vla-get-textstring z)) amt) 2 2))) (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))) ) ) (princ) )
  12. I am trying to add two layers (A-FURN-3-CGDS-VV-1 & A-FURN-3-CGDS-HH-1) to about 4,700 DWG files, and am looking to see if anyone knows a way to bulk process something like this. We use blocks for furniture symbols, and have about 4,700 of them that need these specific layers in them in order to work with a rendering software we use that is based on the layer names. I will also need to go in and select parts of the drawings to put on one layer, and other parts for the other manually, but if I could start with the DWG files having the layers in them it would save a little time.... Any thoughts or suggestions would be greatly welcome. As a bonus, if anyone knows how to have the bulk process put everything in the DWG file onto one of the layers (VV) while processing, that would be amazing!
  13. I was wondering what do i need to add or modify the attach file to produce a result like this " 1@length" right now it just produces "length". I'm a novice at lisp routines but i'm learning, i can change a few things to make it do what i need it to do but this ones has gotten me stumped. Any help would be greatly appreciated. Thanks, Brian ;Extrusion Length (defun c:EXTL (/ cEnt tStr tBox tHgt tWid gr sPt cPt lAng bPt tPt pt1 pt2 pt3 pt4) (vl-load-com) (if (and (setq cEnt (car (entsel "\nSelect Object: "))) (member (cdr (assoc 0 (entget cEnt))) '("LWPOLYLINE" "POLYLINE" "LINE"))) (progn (setq tStr (rtos (- (vla-get-length (vlax-ename->vla-object cEnt)) 4.)) tBox (textbox (list (cons 1 tStr) (cons 40 (getvar "TEXTSIZE")))) tHgt (- (cadadr tBox) (cadar tBox)) twid (- (caadr tBox) (caar tBox))) (princ "\nPosition Text...") (while (eq 5 (car (setq gr (grread t 5 0)))) (redraw) (if (listp (setq sPt (cadr gr))) (progn (setq cPt (vlax-curve-getClosestPointto cEnt sPt) lAng (angle cPt sPt) bpt (polar cPt lAng (/ (getvar "TEXTSIZE") 2.)) tpt (polar bpt lAng tHgt) mPt (polar bPt lAng (/ tHgt 2.)) pt1 (polar bpt (+ lAng (/ pi 2.)) (/ tWid 2.)) pt2 (polar bPt (- lAng (/ pi 2.)) (/ tWid 2.)) pt3 (polar tpt (+ lAng (/ pi 2.)) (/ tWid 2.)) pt4 (polar tPt (- lAng (/ pi 2.)) (/ tWid 2.))) (grvecs (list -3 pt1 pt2 pt3 pt4 pt1 pt3 pt2 pt4))))) (if (eq 3 (car gr)) (progn (setq lAng (- lAng (/ pi 2.))) (cond ((and (> lAng (/ pi 2)) (<= lAng pi)) (setq lAng (- lAng pi))) ((and (> lAng pi) (<= lAng (/ (* 3 pi) 2))) (setq lAng (+ lAng pi)))) (Make_Text mPt tStr lAng)))) (princ "\n<!> Incorrect Selection <!>")) (redraw) (princ)) (defun Make_Text (pt val rot) (entmake (list (cons 0 "TEXT") (cons 8 (getvar "CLAYER")) (cons 62 1) (cons 10 pt) (cons 40 (getvar "TEXTSIZE")) (cons 1 val) (cons 50 rot) (cons 7 (getvar "TEXTSTYLE")) (cons 71 0) (cons 72 1) (cons 73 2) (cons 11 pt))))