I'm thinking of creating a button to add a diameter symbol to linear dimensions and maybe another to add = signs before and after a dimension. Be nice if I could either pre-select or hit the button first. Could anyone help please?
|
|
|
I'm thinking of creating a button to add a diameter symbol to linear dimensions and maybe another to add = signs before and after a dimension. Be nice if I could either pre-select or hit the button first. Could anyone help please?
This lisp should do what your looking for. To call it from a button just use ^C^CDim_Dia as the command call
Code:(defun C:Dim_Dia (/ OLDVAR1 COUNT LINENO SS1 ename elist) (setq OLDVAR1 (getvar "CMDECHO")) (setvar "CMDECHO" 0) (setq SS1 nil) (setq SS1 (ssget)) (setq LINENO (sslength SS1)) (setq COUNT 0) (setq PLINFO (ssadd)) (While (setq ename (ssname SS1 COUNT)) (setq COUNT (1+ COUNT)) (setq elist (entget ename)) (setq value (dxf 1 elist)) (setq new_value(strcat "<>%%C"));;Change the value in blue to what ever you would like to show up for the Dimension. If you want a prefix and Suffix use this example: "%%C"<>"%%C". The <> represents the dimension value. (entmod (subst (cons 1 new_value) (cons 1 value) elist)) ) ); end Dim_Dia.lsp (defun dxf (list_itn ent_list) ; begin dxf function (cdr (assoc list_itn ent_list)) ; get value of item from entity list ) ; end dxf function (princ) ; end program
Last edited by Lions60; 2009-05-01 at 02:16 PM. Reason: added code tags
Old routine for adding (single or multiline) prefix, sufix or replacing dimension text. You can specify text to replace it with or replace it with bering and distance if it's an aligned dimension. See examples at bottom for running and menu macros.
Code:;| Add text to dimension BY: TOM BEAUFORD Tombu@LeonCountyFL.gov Leon County Public Works Engineering (or C:DimAddRef (load "DimAddRef.lsp"));DimAddRef (load "DimAddRef.lsp") DimAddRef =======================================================|; (defun DimAddRef (Rtrn Txt / *Error* ss1 ENT EOBJ spt ept brg str1) (defun *Error* (msg) ; embedded defun (if (/= s "Function cancelled") (princ (strcat "\nError: " msg)) ) (princ) ) (vl-cmdf "undo" "BEgin") (cond ((= Rtrn 0)(setq Txt (strcat Txt "\\P<>"))) ((= Rtrn 1)(setq Txt (strcat "<>\\P" Txt))) ((= Rtrn 2)(setq Txt (strcat Txt " <>"))) ((= Rtrn 3)(setq Txt (strcat "<> " Txt))) ) (princ "\nSelect Dimension to modify: ") (setq ss1 (ssget '((0 . "DIMENSION")))) (while (> (sslength ss1) 0) (setq ENT (ssname ss1 0) EOBJ (vlax-ename->vla-object ENT) ; Entity object brg1 "" ) (if (eq(vlax-get-property EOBJ 'ObjectName)"AcDbAlignedDimension") (progn (setq spt (vlax-get EOBJ "ExtLine1Point") ; Start Point ept (vlax-get EOBJ "ExtLine2Point") ; End Point brg (angle spt ept) ; Bearing in Radians brg (angtos brg 4 4) ; Bearing in dms str1 (substr brg 1 1) ) (cond ((= brg "N") (setq brg "N 0d0'0\" E")) ((= brg "S") (setq brg "S 0d0'0\" E")) ((= brg "E") (setq brg "N 90d0'0\" E" str1 "N")) ((= brg "W") (setq brg "N 90d0'0\" W" str1 "N")) ) (if(= 2(-(vl-string-search "\"" brg)(vl-string-search "'" brg))) (setq brg (vl-string-subst "'0" "'" brg)) ) (if(= 2(-(vl-string-search "'" brg)(vl-string-search "d" brg))) (setq brg (vl-string-subst "°0" "d" brg)) (setq brg (vl-string-subst "°" "d" brg)) ) (princ "\nbrg = ") (princ brg) (cond ((= Rtrn 5)(setq Txt (strcat brg "\\P<>"))) ((= Rtrn 6)(setq Txt (strcat "<>\\P" brg))) ((= Rtrn 7)(setq Txt (strcat brg " <>"))) ((= Rtrn 8)(setq Txt (strcat "<> " brg))) ) );progn (if (> Rtrn 4)(alert "Only Aligned Dimensions have Bearing Information.")) );if (vl-catch-all-apply 'vla-put-TextOverride (list EOBJ Txt)) (ssdel ENT ss1) ) (vl-cmdf "undo" "End") (princ) ) ;| **Examples** (DimAddRef 1 "R.O.W.") (DimAddRef 1 "Easement") (DimAddRef 2 "R.O.W.") (DimAddRef 3 "Easement") (DimAddRef 4 "Varies") (DimAddRef 4 "") (DimAddRef 5 "") (DimAddRef 6 "") (DimAddRef 7 "") (DimAddRef 8 "") Bearing/##' Bearing over Distance (or DimAddRef (load "DimAddRef.lsp"));(DimAddRef 5 "") ID_DimB/D ##'/Bearing Distance over Bearing (or DimAddRef (load "DimAddRef.lsp"));(DimAddRef 6 "") ID_DimD/B Bearing-##' Bearing Distance (or DimAddRef (load "DimAddRef.lsp"));(DimAddRef 7 "") ID_DimB-D ##'-Bearing Distance Bearing (or DimAddRef (load "DimAddRef.lsp"));(DimAddRef 8 "") ID_DimD-B **DIMENSION Menu items** ID_Dimoverri [->Modify Text] ID_DimROW [R.O.W.](or DimAddRef (load "DimAddRef"));(DimAddRef 1 "R.O.W.") ID_DimEasement [Easement](or DimAddRef (load "DimAddRef"));(DimAddRef 1 "Easement") ID_DimROW [R.O.W.](or DimAddRef (load "DimAddRef"));(DimAddRef 2 "R.O.W.") ID_DimEasement [Easement](or DimAddRef (load "DimAddRef"));(DimAddRef 3 "Easement") ID_DimVaries [Varies](or DimAddRef (load "DimAddRef"));(DimAddRef 4 "Varies") ID_DimVaries [<-Clear](or DimAddRef (load "DimAddRef"));(DimAddRef 4 "") |;