Allow end point selection during insert on this custom insert list command
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
So I have had this lisp for awhile and now adding "sound" to the lisp. I was able to add it just fine but when it inserts the block it doesn't allow you to use object snaps to be used. Is there a way to add it see full lisp below.
I think it has to do with this section of the code but not 100% sure. I don't need it to specifically only use object snap points because sometimes I just insert the blocks in open space. I really hope this can be done it will make it a lot easier put the legend together, rather than putting all the blocks in and then move them together afterwards. I have attached 2 drawings that the lisp can reference for the blocks.
(defun MoveTo ( e pt / gr )
;;; pBe 20 March 2015 ;;;
(setq pt_ pt)
(progn
(princ "\nPick insertion point: ")
(while (= 5 (car (setq gr (grread t 13 0))))
(redraw)
(vlax-invoke e 'Move pt (cadr gr))
(grdraw pt_ (cadr gr) 1 -1)
(setq pt (cadr gr))
)
)
;;; Remove the lines below | For testing purposes only ;;;
;;; (entmakex (list (cons 0 "LINE")
;;; (cons 10 pt_)
(defun ibMain ( Det_ lst / adoc space lst leg vleg bn blk ipoint dbx blkdbx AllData )
;;; pBe 20 March 2015 ;;;
(setq adoc (vla-get-activedocument (vlax-get-acad-object))
space (vlax-get (vla-get-ActiveLayout adoc) 'Block))
(if (setq AllData nil ss (ssget (list (cons 2 (strcat (apply 'strcat
(mapcar '(lambda (nme)
(strcat nme ","))
(apply 'append (setq leg (mapcar 'car lst))))) "`*U*")
))))
(progn
(repeat (setq i (sslength ss))
(setq en (ssname ss (Setq i (1- i))))
(if (member (setq bn (vla-get-effectivename (vlax-ename->vla-object en))) (apply 'append (mapcar 'car lst)))
(setq AllData (cons (list bn (cdr (assoc 10 (entget en))))
;;; (mapcar '(lambda (d)
;;; (cdr (assoc d (entget en))))
;;; '(2 10))
AllData)
)
)
)
;; Selection Sorted from Top to Bottom ;;
(setq AllData (vl-sort AllData '(lambda (dt dt2) (> (cadadr dt)(cadadr dt2)))))
;; ;;
(foreach data AllData
(if (setq vleg (vl-some '(lambda (nm_)
(if (member (Car data) nm_)
nm_)) leg))
(foreach det (cadr (assoc vleg lst))
(if (setq bn (_BlockExist det det_ ))
(progn
(Setq obj (vlax-invoke space 'InsertBlock (cadr data)
bn 1 1 1 0))
;;;(vla-put-layer obj "0") to change layer to certain layer removed to keep current layer active
(moveTo obj (cadr data))
(redraw)
)
(princ "\n<<< Detail Not Found >>>")
)
)
)
(setq leg (vl-remove vleg leg))
)
)
(princ "\n<<< Block Legend Detail not found >>>")
)
(princ)
(command "-purge" "blocks" "" "n")
)
(defun MoveTo ( e pt / gr )
;;; pBe 20 March 2015 ;;;
(setq pt_ pt)
(progn
(princ "\nPick insertion point: ")
(while (= 5 (car (setq gr (grread t 13 0))))
(redraw)
(vlax-invoke e 'Move pt (cadr gr))
(grdraw pt_ (cadr gr) 1 -1)
(setq pt (cadr gr))
)
)
;;; Remove the lines below | For testing purposes only ;;;
;;; (entmakex (list (cons 0 "LINE")
;;; (cons 10 pt_)
;;; (cons 11 pt)))
;;; Remove The Lines above | For testing purposes only ;;;
)
(defun _BlockExist (bn_ de_ / indfile f flst chk)
;;; pBe 20 March 2015 ;;;
(setq flst nil)
(cond
;;; Current drawing session ;;;
((or (and (tblsearch "BLOCK" de_)
(tblsearch "BLOCK" bn_))
(tblsearch "BLOCK" bn_)
)
bn_
)
;;; Block saved as individual file within SFSP ;;;
((setq indfile (findfile (strcat bn_ ".dwg"))) indfile)
;;; if found, copy listed blocks from ;;;
;;; "XLS DETAILS.dwg" will only run once per ;;;
;; session if other conditions evaluates to nil ;;;
((setq f (findfile (strcat de_ ".dwg")))
(setq chk (i:openDBXDoc f))
(foreach itm (apply 'append (mapcar 'cadr lst))
(if (not
(vl-catch-all-error-p
(vl-catch-all-apply
(function
(lambda ()
(setq blkdbx (vla-item (vla-get-blocks chk) itm))
)
)
)
)
)
(progn
(setq flst (cons itm flst))
(vla-copyobjects
chk
(vlax-safearray-fill
(vlax-make-safearray vlax-vbObject '(0 . 0))
(list blkdbx)
)
(vla-get-blocks
(vla-get-activedocument (vlax-get-acad-object))
)
)
)
)
)
(setq chk (i:CloseDBXDoc chk))
(if (member bn_ flst) bn_)
)
)
)
;;; ODBX Functions Robert Bell ;;;
(defun i:IsReadOnly (fileName / fileH)
(cond ((setq fileH (open filename "a"))
(close fileH))
((not fileH))))
(defun i:CloseDBXDoc (dbxDoc)
(vl-catch-all-apply 'vlax-Release-Object (list dbxDoc))
(setq dbdDoc nil)
)
(defun i:OpenDBXDoc (fileName / newFile dbxDoc chkOpen)
(cond ((or (i:IsReadOnly fileName)
(= (strcase (vl-filename-extension filename))
".DWT"))
(setq newFile (vl-filename-mktemp "Temp .dwg"))
(vl-file-copy fileName newFile)))
(if (< (atoi (substr (getvar "ACADVER") 1 2)) 16)
(setq dbxDoc (vlax-create-object "ObjectDBX.AxDbDocument"))
(setq dbxDoc (vlax-create-object
(strcat "ObjectDBX.AxDbDocument."
(substr (getvar "ACADVER") 1 2)
)
)
)
)
(setq chkOpen
(vl-catch-all-apply
'vla-Open
(list dbxDoc
(cond (newFile)
(fileName)))))
(cond ((vl-catch-all-error-p chkOpen)
(vlax-Release-Object dbxDoc)
nil)
(dbxDoc)))
;; --End of ODBX Functions : Robert Bell-- ;;;
;;; THIS IS SECTION OF THE CODE WHERE YOU ADD ;;;
;;; SYSTEM AND NAME LIST FOR LEGEND & DETAILS ;;;
(defun c:ibTEST ( / lst System SysData NameList)
;; pBe 20 March 2015 ;;;
;;; This is where you add the a New System ;;;
;;; & Name list ;;;
;;; FORMAT: ("SYSTEM NAME" ( ;;;
;;; ( ("LN1" "LN2") ;<--One or more LEGEND ;;;
;;; ("D1" "D2"))) ;<--One or more DETAIL ;;;
(setq NameList
;; "XLS DETAILS"" name list ;;
'(
("XLS DETAILS" (
( ("OP921-DB-11 -- LEGEND" "OOH941-DB-11 - LEGEND" "OOH941-DB-11" "HI921-DB-11" "FP-11 - DB-11") ("SMOKE AND HEAT TYPICAL DETAIL"))
( ("AS-75-R-WP") ("AS-75-R-WP DETAIL"))
( ("HI921 - DB2-HR LEGEND" "OP921-DB2-HR - LEGEND") ("OOH941-HI921- DB2-HR"))
( ("HTRI-D-LEGEND") ("HTRI-D WATER FLOW AND TAMPER" "HTRI-D BASIC DETAIL"))
( ("HTRI-S-LEGEND") ("HTRI-S-DETAIL" "HTRI-S - PIV WIRING DETAIL"))
( ("PAD-3 -- LEGEND") ("PAD-3 - DETAIL" "PAD-- RESISTOR -- DETAIL"))
( ("PAD-4-6A-LEGEND") ("PAD-4-6A-DETAIL" "PAD-- RESISTOR -- DETAIL"))
( ("PAD-4-9A -- LEGEND") ("PAD-4-9A-DETAIL" "PAD-- RESISTOR -- DETAIL"))
( ("HTRI-R-LEGEND") ("HTRI-R-DETAIL"))
( ("HMS-D-LEGEND" ) ("HMS-D-DETAIL" ))
( ("HCP -- LEGEND") ("HCP WIRING DETAIL"))
( ("FDBZ492 - OP921 - ST-50" "RSM-2" "RL-HW - LEGEND") ("FDBZ492 - RSM-2 - HTRI-R - RL-HW" "FDBZ492-HR DUCT MOUNTING DETAIL"))
( ("FDBZ492-HR - OP921 - ST-50 - DAMPER DUCT LEGEND") ("FDBZ492-HR DAMPER DUCT DETAIL" "FDBZ492-HR DUCT MOUNTING DETAIL" "XSERIES DAMPER DUCT DETECTOR DETAIL"))
( ("FDBZ492-HR - OP921 - ST-50 LEGEND" "FDBZ492-RTL -- LEGEND") ("FDBZ492-HR WITH HTRI-R AND FDBZ492-RTL - DETAIL" "FDBZ492-HR DUCT MOUNTING DETAIL"))
( ("MR-801T-LEGEND") ("HTRI SHUNT TRIP DETAIL"))
( ("HTRI-M - LEGEND") ("HTRI-M DETAIL"))
( ("MB-G10-24-R - LEGEND") ("QUAD MODULE WITH W-F AND BELL"))
( ("SEC-W -- LEGEND") ("SEC-W - DETAIL"))
( ("RSS-24MCW-ALW - LEGEND") ("RSS SERIES STROBE - DETAIL"))
( ("E50-24MCW-ALW - LEGEND" "E-50 - LEGEND") ("E-50 SERIES SPEAKER WIRING DIAGRAM - DETAIL"))
( ("MS-151") ("MS-151-DETAIL"))
( ("HMS-S - LEGEND") ("HMS-S - DETAIL"))
( ("FC922-UT LEGEND") ("FC922-UT RISER"))
( ("FC901-U3 -- LEGEND") ("FC901-U3 -- DETAIL" "FC901-U3 BACKBOX DETAIL"))
( ("HZM-LEGEND") ("HZM-BEAM DETECTOR"))
( ("SET-185-R-WP -- LEGEND" "SE-MC-W -- LEGEND" "SET-MC-CW -- LEGEND" "SET-MC-R -- LEGEND" "SET-S17-R-WP" "SE-MC-R -- LEGEND" "SE-MC-CR - LEGEND" "SE-MC-CW -- LEGEND") ("SE-MC - SET-MC SPEAKER STROBE"))
( ("ZR-MC-CW" "ZR-MC-R" "ZH-HMC-R - LEGEND" "ZR-HMC-CW - LEGEND" "ZR-HMC-R" "ZR-MC-CR - LEGEND" "ZH-MC-R-LEGEND" "ZH-MC-W -- LEGEND" "ZH-MC-CR - LEGEND" "ZH-MC-CW - LEGEND" "ZH-HMC-CW - LEGEND" "ZH-HMC-CR - LEGEND" "ZH-MC-W-LEGEND" "ZR-MC-W-LEGEND") ("ZR-MC - ZH-MC - ZR-HMC"))
( ("FDCI0422 -- LEGEND") ("FDCIO422 QUAD MODULE - TAMPER AND FLOW DETAIL" "FDCIO422 SHUNT TRIP ELEVATOR DETAIL" "FDCIO422 QUAD MODULE - FIRE PUMP DETAIL" "FDCIO422 - DETAIL"))
( ("OP921-ABHW-4B -- LEGEND") ("OP921-ABHW-4B -- DETAIL"))
( ("OOHC941-ABHW-4B - LEGEND") ("OP921-ABHW-4B -- DETAIL"))
( ("FIRE ALARM DEVICE LEGEND HEADING") ("DEVICE MOUNTING LOCATION DETAIL" "Brad's Nicet Block" "Darwins nicet stamp" "CABLE STIPPING DETAIL"))
( ("FC922-US -- LEGEND") ("FC922-US FULL PANEL -- RISER"))
( ("OSI-90 - LEGEND" "OSE-SPW - LEGEND") ("OSID-HTRI - DETAIL" "OSID-XTRI - DETAIL"))
( ("XTRI-S - LEGEND") ("XTRI-S DETAIL" "XTRI-S - PIV DETAIL"))
( ("SIGA-AA50 - LEGEND") ("AA30-AA50 - DETAIL"))
( ("XTRI-D - LEGEND") ("XTRI-D WATER FLOW AND TAMPER"))
( ("XTRI-R - LEGEND") ("XTRI-R DETAIL" "XTRI-R SHUNT TRIP DETAIL"))
( ("SLHSWW-F - LEGEND" "SLHSCR-F - LEGEND" "SLSCR-F - LEGEND" "SLSCW-F - LEGEND" "SLSWW-F - LEGEND" "SLHSWR-F - LEGEND" "SLSWR-F - LEGEND" "SLHSCW-F - LEGEND" "SLHWW-N - LEGEND") ("SL SERIES HORN-STROBE - DETAIL"))
( ("SLSPSWR-F - LEGEND" "SLSPSWW-F - LEGEND" "SLSPSCW-F - LEGEND") ("SL SERIES SPEAKER-STROBE - DETAIL"))
( ("XTRI-M - LEGEND") ("XTRI-M DETAIL"))
( ("FC924-UT - LEGEND") ("FC924-UT - RISER"))
( ("OP921-ABHW-4S - LEGEND") ("ABHW-4S - DETAIL"))
( ("MBDC-6 - LEGEND") ("MBDC-6 - DETAIL"))
( ("SLSPCW-F - LEGEND") ("SL SERIES SPEAKER WIRING DETAIL"))
( ("LSPSTRC3 - LEGEND" "LSPSTR3 - LEGEND") ("EXCEDER SPEAKER STROBE - DETAIL"))
( ("LSTR3 - LEGEND" "LSTRC3 - LEGEND" "LHSR3 - LEGEND") ("EXCEDER STROBE - DETAIL"))
( ("TSM-1X - LEGEND") ("TSM-1X DETAIL" "XSERIES DUCT DETECTOR DETAIL" ))
( ("Legend 1") ("bananaitlog"))
( ("MTH-MC-R") ( "BANANACAKE" )))
)
;; "EDWARDS DETAIL" name list ;;
("EDWARDS DETAIL" (
( ("SIGA-CC1S-LEGEND") ("SIGA - CC1S"))
( ("FPD-7024 - LEGEND") ("FPD-7024 - DETAIL" "FPD-7024 BACKBOX - DETAIL"))
( ("FPP-RNAC-8A-4C - LEGEND") ("FPP-RNAC-8A-4C - DETAIL"))
( ("D282A-D280A SMOKE - LEGEND") ("D280A - DETAIL"))
( ("HSR - LEGEND" "STR - LEGEND") ("HSR-STR - DETAIL"))
( ("G1F-VM - LEGEND") ("G1F-VM"))
( ("SIGA-CT1-LEGEND") ("SIGA-CT1-DETAIL" "SHUNT TRIP POWER SUPERVISION-CONTROL"))
( ("SIGA-CR-LEGEND") ("SICA-CR-DETAIL" "SIGA-CR--DAMPER RELAY HIGH VOLTAGE DETAIL" "SIGA-CR--DAMPER RELAY LOW VOLTAGE DETAIL" ))
( ("SIGA-CT2-LEGEND") ("SIGA-CT2-DETAIL"))
( ("SIGA-COD - SIGA-AB4G - LEGEND") ("SIGA-AB4G AUDIBLE BASE - DETAIL"))
( ("SIGA-SD - SD-T60 DAMPER DUCT" "SD-TRK-LEGEND") ("SIGA-SD -- DAMPER DUCT DETAIL" "DUCT DETECTOR MOUNTING DETAIL"))
( ("SIGA-SD - SD-T60" "SD-TRM LEGEND") ("SIGA-SD TYPICAL DETAIL" "DUCT DETECTOR MOUNTING DETAIL"))
( ("BPS6A-LEGEND") ("BPS6A - DETAIL" "BPS6A-CR - DETAIL" "BPS6A RESISTOR - DETAIL" "BPS6A BASIC - DETAIL"))
( ("BPS10A-LEGEND") ("BPS10A - DETAIL" "BPS10A-CR - DETAIL" "BPS6A RESISTOR - DETAIL"))
( ("757-8A-T - LEGEND") ("757-8A-T - DETAIL"))
( ("G1RF-HDVM" "G1RF-VM" "G1F-HDVM" "G4LFRF-HVM - LEGEND" "G4LFWF-HVM - LEGEND") ("G1RF MOUNTING DETAIL." "G1F-HDVM - G1F-HDVM"))
( ("GCF-VM -- LEGEND" "GCF-HDVM -- LEGEND") ("GCF-VM - DETAIL"))
( ("SIGA-HRD-SIGA-SB4 - LEGEND" "SIGA-HFS-SIGA-SB4 - LEGEND" "SIGA-PD-SIGA-SB4 -- LEGEND") ("SIGA-PD--HRD - SIGA-SB4 -- DETAIL"));;;;;
( ("SIGA-HRD-SIGA-RB4 -- LEGEND" "SIGA-PD-SIGA-RB4 -- LEGEND") ("SIGA-PD-HRD - SIGA-RB4 -- DETAIL"));;;;;
( ("SIGA-278") ("SIGA-278 - DETAIL"))
( ("SIGA-LED - LEGEND") ("SIGA-SD WITH LAMP TYPICAL DETAIL"))
( ("G4HFWF-S7VMC -- LEGEND" "WG4WA-SVMC -- LEGEND") ("G4HFWF-WG4WA -- DETAIL" "G4HFWF-S7VMC -- BOX DETAIL"))
( ("SIGA-AA50 - LEGEND" "APS6A - LEGEND") ("APS6A - DETAIL"))
( ("GCF-S7VMH - LEGEND" "G4RF-S7VM -- LEGEND" "GCF-S7VM - LEGEND") ("GCF-S7VM -- G4F-S7VM -- G4F-S7VMH DETAIL"))
( ("SIGA-270-LEGEND") ("SIGA-270-DETAIL"))
( ("FIRE ALARM DEVICE LEGEND HEADING") ("Brad's Nicet Block" "Darwins nicet stamp" "CABLE STIPPING DETAIL"))
( ("ANS25MDG2 -- LEGEND") ("ANS25-50-100 -- DETAIL"))
( ("PIV - WATERFLOW - TAMPER") ("SIGA-CT2 WITH WATERFLOW & TAMPER" "SIGA-CT1 WITH PIV"))
( ("IO1000GD -- LEGEND") ("IO1000GD - RISER")))
)
;; "NURSE CALL" name list ;;
("NURSE CALL DETAIL" (
( ("HC-CONSOLE-3K - LEGEND") ("HC-CONSOLE - DETAIL"))
( ("HC-CL2-3K - LEGEND") ("HC-CL2-3K - DETAIL"))
( ("HC-CCSTN-3K - LEGEND") ("HC-CCSTN-3K - DETAIL"))
( ("HC-PB3-CANCEL -REMOTE CANCEL - LEGEND") ("HC-PB3-CANCEL -REMOTE CANCEL- DETAIL"))
( ("HC-PB3-CANCEL -PUSH BUTTON- LEGEND") ("HC-PB3-CANCEL -PUSH BUTTON- DETAIL"))
( ("HC-PP2-LAV-3K - LEGEND" "HC-PP2-LAV-3K WEATHER PROOF - LEGEND") ("HC-PP2-LAV-3K - DETAIL"))
( ("HC-CL4 - LEGEND") ("HC-CL4 - DETAIL"))
( ("HC-VSTN - LEGEND") ("HC-VSTN - DETAIL"))
( ("NGGTWY2-H - LEGEND") ("NGGTWY2-H - RISER"))
( ("HC-IPSWITCH8 - LEGEND") ("HC-IPSWITCH8 - RISER"))
( ("HC-DUTY-3K - LEGEND") ("HC-DUTY-3K - DETAIL"))
( ("NGTDSP-H - LEGEND") ("NGTDSP-H - RISER"))
( ("LEGEND HEADER - NURSE CALL") ("RJ-45 PINOUT - DETAIL"))
( ("HC-PB2-CODE-3K - LEGEND") ("HC-PB2-CODE-3K - DETAIL"))
( ("HC-PB2-EMERG - LEGEND") ("HC-PB2-EMERG - DETAIL"))
( ("HC-AUX2-3K - LEGEND") ("HC-AUX2-3K - DETAIL"))
( ("SF117-2C - LEGEND") ("SF117-2C - DETAIL"))
( ("1212-WPS - LEGEND") ("1212-WPS - DETAIL"))
( ("HC-PSTN1-BED - LEGEND" "HC-PSTN2-BED - LEGEND") ("HC-PSTN1-HC-PSTN2 - DETAIL"))
( ("VER-2407 - LEGEND" "VER-2037 - LEGEND" "VER-4432 - LEGEND" "VER-4452 - LEGEND") ("IR TRACKING WIRING DETAIL" "TYPICAL IR SENSOR WIRING DETAIL")))
)
;; "AV" name list ;;
("SOUND LEGEND" (
( ("HD-TX-201-C-2G-E-B-T") ("HD-TX-201-C-2G-E-B-T - LEGEND"))
( ("HD-TX-101-C-1G-E-B-T") ("HD-TX-101-C-1G-E-B-T - LEGEND")))
)
;; "xxxxxxx" name list ;; AKA NAME OF FILE
;;;
;;; ("SYSTEM NAME" (
;;; ( ("LEGEND") ("DETAIL"))
;;; ( ("LEGEND") ("DETAIL" "DETAIL"))
;;; ( ("LEGEND" "LEGEND") ("DETAIL")))
;;; )
;;;
;; "xxxxxxx" name list ;;
)
)
;;; ---End of Previous Comment--- ;;;
;;; This is where you add the System name ;;;
;;; Note: Only the ONE word of the filename ;;;
;;; Example "EDWARDS DETAIL" as "EDWARDS" ;;;
;;; Example "OTHER STUFF" as "STUFF" ;;;
;;; (initget "XLS EDWARDS STUFF") ;;;
;;; Example "EMERSONS DETAILS" as "eMerson" ;;;
;;; (initget "XLS EDWARDS eMerson")<-- "M" ;;;
;;; "E" already in use for EDWARDS ;;;
;;; "\nChoos System [XLS/Edwards/eMerson]: " ;;;
(initget "XLS EDWARDS NURSE SOUND")
;;; ---End of Previous Comment--- ;;;
(setq System (cond ( (getkword "\nChoose System [XLS/Edwards/Nurse/Sound] <XLS>: ") ) ( "XLS" )))
(setq SysData (vl-some
'(lambda (b)
(if (wcmatch b (strcase (strcat "*" system "*")))
b))
(mapcar 'car NameList))
SysData (assoc SysData NameList))
(ibMain (car SysData) (cadr SysData))
)
(vl-load-com)
(princ
(strcat
"\n:: Insert Detail From Legend Version 1.1 | pBe 2015 ::"
"\n:: Type \"IB\" to Invoke ::"
)
)
(princ)