33
96
65
初露锋芒
使用道具 举报
106
1万
101
顶梁支柱
; DWG INDEX TO A TABLE; BY ALAN H NOV 2013(DEFUN AH:DWGINDEX (/ DOC OBJTABLE SS1 LAY ANS ANS2 PLOTABS SS1 TAG2 TAG3 LIST1 LIST2 CURLAYOUT COLWIDTH NUMCOLUMNS NUMROWS INC ROWHEIGHT )(VL-LOAD-COM)(SETQ CURLAYOUT (GETVAR "CTAB"))(IF (= CURLAYOUT "MODEL")(PROGN(ALERT "YOU NEED TO BE IN A LAYOUT FOR THIS OPTION")(EXIT)) ; END PROGN) ; END IF MODEL(SETQ DOC (VLA-GET-ACTIVEDOCUMENT (VLAX-GET-ACAD-OBJECT)))(SETQ CURSPACE (VLA-GET-PAPERSPACE DOC))(SETQ PT1 (VLAX-3D-POINT (GETPOINT "\NPICK POINT FOR TOP LEFT HAND OF TABLE: "))) ; READ VALUES FROM TITLE BLOCKS(SETQ BNAME "DA1DRTXT")(SETQ TAG2 "DRG_NO") ;ATTRIBUTE TAG NAME(SETQ TAG3 "WORKS_DESCRIPTION") ;ATTRIBUTE TAG NAME(SETQ SS1 (SSGET "X" (LIST (CONS 0 "INSERT") (CONS 2 BNAME))))(IF (= SS1 NIL) ; FOR TOMKINSON JOBS(PROGN (SETQ BNAME "xxx_TITLE")(SETQ SS1 (SSGET "X" (LIST (CONS 0 "INSERT") (CONS 2 BNAME))))))(SETQ INC (SSLENGTH SS1)) (REPEAT INC(FOREACH ATT (VLAX-INVOKE (VLAX-ENAME->VLA-OBJECT (SSNAME SS1 (SETQ INC (- INC 1)) )) 'GETATTRIBUTES) (IF (= TAG2 (STRCASE (VLA-GET-TAGSTRING ATT))) (PROGN (SETQ ANS (VLA-GET-TEXTSTRING ATT)) (IF (/= ANS NIL) (SETQ LIST1 (CONS ANS LIST1)) ) ; IF ); END PROGN ) ; END IF (IF (= TAG3 (STRCASE (VLA-GET-TAGSTRING ATT))) (PROGN (SETQ ANS2 (VLA-GET-TEXTSTRING ATT)) (IF (/= ANS2 NIL) (SETQ LIST2 (CONS ANS2 LIST2)) ) ; END IF ) ; END PROGN ) ; END IF TAG3 ) ; END FOREACH) ; END REPEAT(SETVAR 'CTAB CURLAYOUT)(COMMAND-S "ZOOM" "E")(COMMAND-S "REGEN")(REVERSE LIST1);(REVERSE LIST2); NOW DO TABLE (SETQ NUMROWS (+ 2 (SSLENGTH SS1)))(SETQ NUMCOLUMNS 2)(SETQ ROWHEIGHT 0.2)(SETQ COLWIDTH 150)(SETQ OBJTABLE (VLA-ADDTABLE CURSPACE PT1 NUMROWS NUMCOLUMNS ROWHEIGHT COLWIDTH))(VLA-SETTEXT OBJTABLE 0 0 "DRAWING REGISTER")(VLA-SETTEXT OBJTABLE 1 0 "DRAWING NUMBER") (VLA-SETTEXT OBJTABLE 1 1 "DRAWING TITLE") (SETQ X 0)(SETQ Y 2)(REPEAT (SSLENGTH SS1) (VLA-SETTEXT OBJTABLE Y 0 (NTH X LIST1)) (VLA-SETTEXT OBJTABLE Y 1 (NTH X LIST2)) (VLA-SETROWHEIGHT OBJTABLE Y 7) (SETQ X (+ X 1)) (SETQ Y (+ Y 1)))(VLA-SETCOLUMNWIDTH OBJTABLE 0 55)(VLA-SETCOLUMNWIDTH OBJTABLE 1 170)(COMMAND-S "_ZOOM" "E")); END AH DEFUN(AH:DWGINDEX)(PRINC)
63
6297
6283
后起之秀
;;--------------------=={ Text Count }==----------------------;;;; ;;;; Counts the number of occurrences of each string in a ;;;; selection and produces a report in an ACAD Table object ;;;;------------------------------------------------------------;;;; Author: Lee Mac, Copyright © 2011 - [url="http://www.lee-mac.com"]www.lee-mac.com[/url] ;;;;------------------------------------------------------------;;;; Version 1.0 - 07.11.2010 ;;;; First Release. ;;;;------------------------------------------------------------;;;; Version 1.1 - 05.08.2011 ;;;; Added Dimensions Override Text & MLeaders ;;;; Updated 'AddTable' to account for Annotative Text Styles. ;;;;------------------------------------------------------------;;(defun c:tCount ( /) *error* _StartUndo _EndUndo _Assoc++ _SumAttributes _GetTextString _ApplyFooToSelSet acdoc acspc alist data pt );;------------------------------------------------------------;; (defun *error* ( msg ) (if acdoc (_EndUndo acdoc)) (if (not (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) ) );;------------------------------------------------------------;; (defun _Assoc++ ( key alist ) ( (lambda ( pair ) (if pair (subst (list key (1+ (cadr pair))) pair alist) (cons (list key 1) alist) ) ) (assoc key alist) ) );;------------------------------------------------------------;; (defun _SumAttributes ( entity alist ) (while (not (eq "SEQEND" (cdr (assoc 0 (entget (setq entity (entnext entity)) ) ) ) ) ) (setq alist (_Assoc++ (_GetTextString entity) alist)) ) );;------------------------------------------------------------;; (defun _GetTextString ( entity ) ( (lambda ( string ) (mapcar (function (lambda ( pair ) (if (member (car pair) '(1 3)) (setq string (strcat string (cdr pair))) ) ) ) (entget entity) ) string ) "" ) );;------------------------------------------------------------;; (defun _ApplyFooToSelSet ( foo ss / i ) (if ss (repeat (setq i (sslength ss)) (foo (ssname ss (setq i (1- i)))))) );;------------------------------------------------------------;; (setq acdoc (vla-get-activedocument (vlax-get-acad-object)) acspc (vlax-get-property acdoc (if (= 1 (getvar 'CVPORT)) 'Paperspace 'Modelspace)) ) (cond ( (= 4 (logand 4 (cdr (assoc 70 (tblsearch "LAYER" (getvar 'CLAYER)))))) (princ "\nCurrent Layer Locked.") ) ( (not (vlax-method-applicable-p acspc 'AddTable)) (princ "\nTable Object not Available in this version.") ) ( (and (setq data (_ApplyFooToSelSet (lambda ( entity / typ )