Allow end point selection during insert on this custom insert list command

Allow end point selection during insert on this custom insert list command

bgraverholt
Advocate Advocate
1,348 Views
11 Replies
Message 1 of 12

Allow end point selection during insert on this custom insert list command

bgraverholt
Advocate
Advocate

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)

 

 

0 Likes
1,349 Views
11 Replies
Replies (11)
Message 2 of 12

dlanorh
Advisor
Advisor

You will need to include Lee Mac's snap functions Here

These allow snaps while using grread

I am not one of the robots you're looking for

0 Likes
Message 3 of 12

bgraverholt
Advocate
Advocate

Would I need to insert that entire lisp code inside insert lisp code or does it have to part of my start up suite and reference "LM" LISP before the insertion code of my LISP?

0 Likes
Message 4 of 12

dlanorh
Advisor
Advisor

Apologies, I got side tracked. No you don't need it all. I will dig out something I did, using this, recently. You will have to "tweak" the MoveTo sub to accomodated the snap functions so they work properly. I tried to remember what I did, but was unsuccessful.

I am not one of the robots you're looking for

0 Likes
Message 5 of 12

dlanorh
Advisor
Advisor

OK. Attached is "LMSnaps.LSP" this is the minimal requirements to use Lee Mac's snap features in a grread. This needs to be loaded before or by your lisp. It can be autoloaded via the startup suite (Type APPLOAD on the command line, bottom right on the dialog) or using

 

(load "FULL_PATH_ TO_LISP") ;;don't forget file path separator should be "\\" or "/"

within your main lisp (preferably at the beginning)

 

Also attached is is an updated  "tweaked" moveTo function.

 

Points to note :

The correct osnap mode(s) must be set prior to running as it reads the current osmode system variable. I assume you know how to do this in lisp using the (setvar 'osmode integer_value) statement

 

I have noticed that if the insertion point of the block also matches one of the set snaps that snap is permanently visible, and other snaps won't show, but should still work. e.g. OSMODE is 9 (end & nod). If the insertion point is also the end of a line or a polyline vertex of an object within the block, the end snap is permanently on, but it will still react to a node but not display the nod snap.

I am not one of the robots you're looking for

0 Likes
Message 6 of 12

bgraverholt
Advocate
Advocate

See my screencast below. When I run it will insert the block at the basepoint of the selected block and not where I want to put it.  I have attached the code below just in case I didn't insert something in the right spot. 

 

 ;; Object Snap for grread: Snap Function  -  Lee Mac
;; Returns: [fun] A function requiring two arguments:
;; p - [lst] UCS Point to be snapped
;; o - [int] Object Snap bit code
;; The returned function returns either the snapped point (displaying an appropriate snap symbol)
;; or the supplied point if the snap failed for the given Object Snap bit code.

(defun LM:grsnap:snapfunction ( )
    (eval
        (list 'lambda '( p o / q )
            (list 'if '(zerop (logand 16384 o))
                (list 'if
                   '(setq q
                        (cdar
                            (vl-sort
                                (vl-remove-if 'null
                                    (mapcar
                                        (function
                                            (lambda ( a / b )
                                                (if (and (= (car a) (logand (car a) o)) (setq b (osnap p (cdr a))))
                                                    (list (distance p b) b (car a))
                                                )
                                            )
                                        )
                                       '(
                                            (0001 . "_end")
                                            (0002 . "_mid")
                                            (0004 . "_cen")
                                            (0008 . "_nod")
                                            (0016 . "_qua")
                                            (0032 . "_int")
                                            (0064 . "_ins")
                                            (0128 . "_per")
                                            (0256 . "_tan")
                                            (0512 . "_nea")
                                            (2048 . "_app")
                                            (8192 . "_par")
                                        )
                                    )
                                )
                               '(lambda ( a b ) (< (car a) (car b)))
                            )
                        )
                    )
                    (list 'LM:grsnap:displaysnap '(car q)
                        (list 'cdr
                            (list 'assoc '(cadr q)
                                (list 'quote
                                    (LM:grsnap:snapsymbols
                                        (atoi (cond ((getenv "AutoSnapSize")) ("5")))
                                    )
                                )
                            )
                        )
                        (LM:OLE->ACI
                            (if (= 1 (getvar 'cvport))
                                (atoi (cond ((getenv "Layout AutoSnap Color")) ("117761")))
                                (atoi (cond ((getenv  "Model AutoSnap Color")) ("104193")))
                            )
                        )
                    )
                )
            )
           '(cond ((car q)) (p))
        )
    )
)

;; Object Snap for grread: Display Snap  -  Lee Mac
;; pnt - [lst] UCS point at which to display the symbol
;; lst - [lst] grvecs vector list
;; col - [int] ACI colour for displayed symbol
;; Returns nil

(defun LM:grsnap:displaysnap ( pnt lst col / scl )
    (setq scl (/ (getvar 'viewsize) (cadr (getvar 'screensize)))
          pnt (trans pnt 1 2)
    )
    (grvecs (cons col lst)
        (list
            (list scl 0.0 0.0 (car  pnt))
            (list 0.0 scl 0.0 (cadr pnt))
            (list 0.0 0.0 scl 0.0)
           '(0.0 0.0 0.0 1.0)
        )
    )
)

;; Object Snap for grread: Snap Symbols  -  Lee Mac
;; p - [int] Size of snap symbol in pixels
;; Returns: [lst] List of vector lists describing each Object Snap symbol

(defun LM:grsnap:snapsymbols ( p / -p -q -r a c i l q r )
    (setq -p (- p) q (1+  p)
          -q (- q) r (+ 2 p)
          -r (- r) i (/ pi 6.0)
           a 0.0
    )
    (repeat 12
        (setq l (cons (list (* r (cos a)) (* r (sin a))) l)
              a (- a i)
        )
    )
    (setq c (apply 'append (mapcar 'list (cons (last l) l) l)))
    (list
        (list 1
            (list -p -p) (list p -p) (list p -p) (list p p) (list p p) (list -p p) (list -p p) (list -p -p)
            (list -q -q) (list q -q) (list q -q) (list q q) (list q q) (list -q q) (list -q q) (list -q -q)
        )
        (list 2
            (list -r -q) (list 0  r) (list 0  r) (list r -q)
            (list -p -p) (list p -p) (list p -p) (list 0  p) (list 0  p) (list -p -p)
            (list -q -q) (list q -q) (list q -q) (list 0  q) (list 0  q) (list -q -q)
        )
        (cons 4 c)
        (vl-list* 8 (list -r -r) (list r r) (list r -r) (list -r r) c)
        (list 16
            (list p 0) (list 0 p) (list 0 p) (list -p 0) (list -p 0) (list 0 -p) (list 0 -p) (list p 0)
            (list q 0) (list 0 q) (list 0 q) (list -q 0) (list -q 0) (list 0 -q) (list 0 -q) (list q 0)
            (list r 0) (list 0 r) (list 0 r) (list -r 0) (list -r 0) (list 0 -r) (list 0 -r) (list r 0)
        )
        (list 32
            (list  r r) (list -r -r) (list  r q) (list -q -r) (list  q r) (list -r -q)
            (list -r r) (list  r -r) (list -q r) (list  r -q) (list -r q) (list  q -r)
        )
        (list 64
            '( 0  1) (list  0  p) (list  0  p) (list -p  p) (list -p  p) (list -p -1) (list -p -1) '( 0 -1)
            '( 0 -1) (list  0 -p) (list  0 -p) (list  p -p) (list  p -p) (list  p  1) (list  p  1) '( 0  1)
            '( 1  2) (list  1  q) (list  1  q) (list -q  q) (list -q  q) (list -q -2) (list -q -2) '(-1 -2)
            '(-1 -2) (list -1 -q) (list -1 -q) (list  q -q) (list  q -q) (list  q  2) (list  q  2) '( 1  2)
        )
        (list 128
            (list (1+ -p) 0) '(0 0) '(0 0) (list 0 (1+ -p))
            (list (1+ -p) 1) '(1 1) '(1 1) (list 1 (1+ -p))
            (list -p q) (list -p -p) (list -p -p) (list q -p)
            (list -q q) (list -q -q) (list -q -q) (list q -q)
        )
        (vl-list* 256 (list -r r)  (list r r) (list -r (1+ r)) (list r (1+ r)) c)
        (list 512
            (list -p -p) (list  p -p) (list -p  p) (list p p) (list -q -q) (list  q -q)
            (list  q -q) (list -q  q) (list -q  q) (list q q) (list  q  q) (list -q -q)
        )
        (list 2048
            (list   -p     -p) (list    p      p) (list   -p      p) (list    p     -p)
            (list (+ p 05) -p) (list (+ p 06) -p) (list (+ p 05) -q) (list (+ p 06) -q)
            (list (+ p 09) -p) (list (+ p 10) -p) (list (+ p 09) -q) (list (+ p 10) -q)
            (list (+ p 13) -p) (list (+ p 14) -p) (list (+ p 13) -q) (list (+ p 14) -q)
            (list -p -p) (list p -p) (list p -p) (list p p) (list p p) (list -p p) (list -p p) (list -p -p)
            (list -q -q) (list q -q) (list q -q) (list q q) (list q q) (list -q q) (list -q q) (list -q -q)
        )
        (list 8192 (list r 1) (list -r -q) (list r 0) (list -r -r) (list r q) (list -r -1) (list r r) (list -r 0))
    )
)



(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 / pt_ gr flg)
;;;   pBe 20 March 2015     ;;;
  (setq pt_ pt)
  (princ "\nPick insertion point: ")
  (while (and (setq gr (grread T 13 0)) (not flg))
    (redraw)
    (cond ( (= 5 (car gr))
            (osf (cadr gr) osm)
            (vlax-invoke e 'Move pt (osf (cadr gr) osm))
            (grdraw pt_ (osf (cadr gr) osm) 1 -1)
            (setq pt (osf (cadr gr) osm))
          )
          ( (= 3 (car gr)) (setq flg T))
    )
  )
  
;;; 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-RX-101-C-1G-E-B-T") ("HD-RX-101-C-1G-E-B-T - LEGEND"))
		( ("DM-TX-4K-100-C-1G-B-T") ("DM-TX-4K-100-C-1G-B-T -- LEGEND"))
		( ("DM-RMC-4K-100-C-1G-B-T") ("DM-RMC-4K-100-C-1G-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)
0 Likes
Message 7 of 12

dlanorh
Advisor
Advisor

@bgraverholt wrote:

See my screencast below. When I run it will insert the block at the basepoint of the selected block and not where I want to put it.  I have attached the code below just in case I didn't insert something in the right spot. 


The code looks to be inserted correctly. Two items are passed to the moveTo function, after the block is inserted, the vla-object just created and its insertion point. The insertion point is therefore used as the primary move point for the block in the function. I have no idea of where or how you want to place the block or what the block looks like. If the correct point is offset from the insertion point of the block then this point should be calculated and passed in, in place of the insertion point, inside the function that inserts the block (defun ibmain).

I am not one of the robots you're looking for

0 Likes
Message 8 of 12

dlanorh
Advisor
Advisor

I've just noticed that the osmode is not being set. This could cause problems with objects snapping to the incorrect snap if too many are set or the incorrect ones are set.

 

Attached is update moveTo function to ensure (end) only is the current osnap mode. If this is different let me know.

I am not one of the robots you're looking for

0 Likes
Message 9 of 12

bgraverholt
Advocate
Advocate

There will be times I will just want to place the block that's being inserted in the middle of no where and then times I want to use the endpoint snap. I changed the the move to with your updated lisp and it still will only insert one block at the basepoint of the highlighted block. When I try to highlight multiple blocks to insert it will only insert the first one at the basepoint of the first highlighted block instead of all of the ones that were highlighted. See attached screen cast first I recorded what the lisp use to do when you ran it and then recorded what the changes are are doing to show the difference. 

 

0 Likes
Message 10 of 12

dlanorh
Advisor
Advisor

OK. I now have a grasp as to what you are trying to do. Will have a look tomorrow, time permitting.

I am not one of the robots you're looking for

0 Likes
Message 11 of 12

bgraverholt
Advocate
Advocate

That fine no huge rush just a new idea to expand this existing LISP to do more things to save time.

0 Likes
Message 12 of 12

bgraverholt
Advocate
Advocate

Just wondering if you had any luck with figuring out the insert with basepoint part of this lisp?  

0 Likes