combine layer lsp

combine layer lsp

Anonymous
Not applicable
1,118 Views
4 Replies
Message 1 of 5

combine layer lsp

Anonymous
Not applicable

hello. thank you for made these lsps.

I want to combine the two lsp into one. always thank you experts

 

(defun c:bl (/ SetLayer obj acdoc blocks)
  (vl-load-com)
  (defun SetLayer (blockName layerName)
    (vlax-for obj (vla-Item blocks blockName)
      (vla-put-Layer obj layerName)
      (if (= (vla-get-ObjectName obj) "AcDbBlockReference")
        (SetLayer (vla-get-Name obj) layerName)
      )
    )
  )
  (if (and (setq obj (car (entsel "\nsame layer inside block")))
           (setq obj (vlax-ename->vla-object obj))
           (= (vla-get-ObjectName obj) "AcDbBlockReference")
      )
    (progn
      (setq acdoc  (vla-get-ActiveDocument (vlax-get-acad-object))
            blocks (vla-get-Blocks acdoc)
      )
      (SetLayer (vla-get-Name obj) (vla-get-Layer obj))
      (vla-Regen acdoc acActiveViewport)
    )
  )
  (princ)
)
 

(defun c:br (/ ELST ENAM ESEL BNAM FLST)
(setvar "cmdecho" 0)
  (vl-load-com)
  (setq ESEL (entsel "\nbylayer inside block")
 ENAM (car ESEL)
 ELST (entget ENAM)
 BNAM (cdr (assoc 2 ELST))
 FLST nil
  )
  (fix1 BNAM)
  (vl-cmdf "regen")
  (princ)
)
(defun FIX1 (BNAM / BENAM)
  (if (not (member BNAM FLST))
 (progn
   (setq FLST  (cons BNAM FLST)
  BENAM (tblobjname "block" BNAM)
   )
   (while (setq BENAM (entnext BENAM))
 ;(print (entget BENAM))
 (if (= (cdr (assoc 0 (entget BENAM))) "INSERT")
   (fix1 (cdr (assoc 2 (entget BENAM))))
   (vla-put-color (vlax-ename->vla-object BENAM) 256)
 )
   )
 )
  )
  (princ)
)
 
0 Likes
Accepted solutions (2)
1,119 Views
4 Replies
Replies (4)
Message 2 of 5

dbhunia
Advisor
Advisor

Do you need this....... The easiest way to combine ....... 🙂

 

(defun C:CBL ( / con )
	(defun bl (/ SetLayer obj acdoc blocks)
	  (vl-load-com)
	  (defun SetLayer (blockName layerName)
		(vlax-for obj (vla-Item blocks blockName)
		  (vla-put-Layer obj layerName)
		  (if (= (vla-get-ObjectName obj) "AcDbBlockReference")
			(SetLayer (vla-get-Name obj) layerName)
		  )
		)
	  )
	  (if (and (setq obj (car (entsel "\nsame layer inside block")))
			   (setq obj (vlax-ename->vla-object obj))
			   (= (vla-get-ObjectName obj) "AcDbBlockReference")
		  )
		(progn
		  (setq acdoc  (vla-get-ActiveDocument (vlax-get-acad-object))
				blocks (vla-get-Blocks acdoc)
		  )
		  (SetLayer (vla-get-Name obj) (vla-get-Layer obj))
		  (vla-Regen acdoc acActiveViewport)
		)
	  )
	  (princ)
	)

	(defun br (/ ELST ENAM ESEL BNAM FLST)
	(setvar "cmdecho" 0)
	  (vl-load-com)
	  (setq ESEL (entsel "\nbylayer inside block")
			 ENAM (car ESEL)
			 ELST (entget ENAM)
			 BNAM (cdr (assoc 2 ELST))
			 FLST nil
	  )
	  (fix1 BNAM)
	  (vl-cmdf "regen")
	  (princ)
	)

	(defun FIX1 (BNAM / BENAM)
	  (if (not (member BNAM FLST))
	 (progn
	   (setq FLST  (cons BNAM FLST)
	  BENAM (tblobjname "block" BNAM)
	   )
	   (while (setq BENAM (entnext BENAM))
	 ;(print (entget BENAM))
	 (if (= (cdr (assoc 0 (entget BENAM))) "INSERT")
	   (fix1 (cdr (assoc 2 (entget BENAM))))
	   (vla-put-color (vlax-ename->vla-object BENAM) 256)
	 )
	   )
	 )
	  )
	  (princ)
	)
	
	(initget "Bylayer Samelayer")
	(setq con
	 (cond ((getkword "\nEnter Required Option [Bylayer/Samelayer] inside block <Bylayer>: " )) ("Bylayer"))
	)
	(cond ((= con "Bylayer") (br))
	      ((= con "Samelayer") (bl))
	)

(princ)
)

Debashis Bhunia
Co-Founder of Geometrifying Trigonometry(C)
________________________________________________
Walking is the First step of Running, Technique comes Next....
0 Likes
Message 3 of 5

Anonymous
Not applicable

oh, always thank you dbhunia  help me but

I do not want to use this

 (cond ((getkword "\nEnter Required Option [Bylayer/Samelayer] inside block : " )) ("Bylayer"))

 

I made like it, and not working. please check it one more. thank you

 

(defun c:bl (/ SetLayer obj acdoc blocks)
  (vl-load-com)
  (defun SetLayer (blockName layerName)
    (vlax-for obj (vla-Item blocks blockName)
      (vla-put-Layer obj layerName)
      (if (= (vla-get-ObjectName obj) "AcDbBlockReference")
        (SetLayer (vla-get-Name obj) layerName)
      )
    )
  )
  (if (and (setq obj (car (entsel "\nsame layer inside block")))
           (setq obj (vlax-ename->vla-object obj))
           (= (vla-get-ObjectName obj) "AcDbBlockReference")
      )
    (progn
      (setq acdoc  (vla-get-ActiveDocument (vlax-get-acad-object))
            blocks (vla-get-Blocks acdoc)
      )
      (SetLayer (vla-get-Name obj) (vla-get-Layer obj))
      (vla-Regen acdoc acActiveViewport)
    )
  )
(br)
  (princ)
)
 

(defun br (/ ELST ENAM ESEL BNAM FLST)
(setvar "cmdecho" 0)
  (vl-load-com)
  (setq ESEL (entlast)
 ENAM (car ESEL)
 ELST (entget ENAM)
 BNAM (cdr (assoc 2 ELST))
 FLST nil
  )
  (fix1 BNAM)
  (vl-cmdf "regen")
  (princ)
)
(defun FIX1 (BNAM / BENAM)
  (if (not (member BNAM FLST))
 (progn
   (setq FLST  (cons BNAM FLST)
  BENAM (tblobjname "block" BNAM)
   )
   (while (setq BENAM (entnext BENAM))
 ;(print (entget BENAM))
 (if (= (cdr (assoc 0 (entget BENAM))) "INSERT")
   (fix1 (cdr (assoc 2 (entget BENAM))))
   (vla-put-color (vlax-ename->vla-object BENAM) 256)
 )
   )
 )
  )
  (princ)
)
0 Likes
Message 4 of 5

marko_ribar
Advisor
Advisor
Accepted solution

You mean :

 

(defun c:bl (/ SetLayer obj acdoc blocks)
(vl-load-com)
(defun SetLayer (blockName layerName)
(vlax-for obj (vla-Item blocks blockName)
(vla-put-Layer obj layerName)
(if (= (vla-get-ObjectName obj) "AcDbBlockReference")
(SetLayer (vla-get-Name obj) layerName)
)
)
)
(if (and (setq obj (car (entsel "\nsame layer inside block")))
(setq obj (vlax-ename->vla-object obj))
(= (vla-get-ObjectName obj) "AcDbBlockReference")
)
(progn
(setq acdoc (vla-get-ActiveDocument (vlax-get-acad-object))
blocks (vla-get-Blocks acdoc)
)
(SetLayer (vla-get-Name obj) (vla-get-Layer obj))
(vla-Regen acdoc acActiveViewport)
)
)
(br (vlax-vla-object->ename obj))
(princ)
)


(defun br ( ENAM / ELST BNAM FLST)
(setvar "cmdecho" 0)
(vl-load-com)
(setq ELST (entget ENAM)
BNAM (cdr (assoc 2 ELST))
FLST nil
)
(fix1 BNAM)
(vl-cmdf "regen")
(princ)
)
(defun FIX1 (BNAM / BENAM)
(if (not (member BNAM FLST))
(progn
(setq FLST (cons BNAM FLST)
BENAM (tblobjname "block" BNAM)
)
(while (setq BENAM (entnext BENAM))
;(print (entget BENAM))
(if (= (cdr (assoc 0 (entget BENAM))) "INSERT")
(fix1 (cdr (assoc 2 (entget BENAM))))
(vla-put-color (vlax-ename->vla-object BENAM) 256)
)
)
)
)
(princ)
)

 

Marko Ribar, d.i.a. (graduated engineer of architecture)
Message 5 of 5

dbhunia
Advisor
Advisor
Accepted solution

check this.......

 

(defun bl (/ SetLayer obj acdoc blocks)
	(vl-load-com)
	(defun SetLayer (blockName layerName)
		(vlax-for obj (vla-Item blocks blockName)
		  (vla-put-Layer obj layerName)
		  (if (= (vla-get-ObjectName obj) "AcDbBlockReference")
			(SetLayer (vla-get-Name obj) layerName)
		  )
		)
	)
	(defun FIX1 (BNAM / BENAM)
	  (if (not (member BNAM FLST))
		 (progn
		   (setq FLST  (cons BNAM FLST)
				BENAM (tblobjname "block" BNAM)
		   )
		   (while (setq BENAM (entnext BENAM))
			 ;(print (entget BENAM))
			 (if (= (cdr (assoc 0 (entget BENAM))) "INSERT")
			   (fix1 (cdr (assoc 2 (entget BENAM))))
			   (vla-put-color (vlax-ename->vla-object BENAM) 256)
			 )
		   )
		 )
	  )
	)  
  (if (and (setq obj (car (entsel "\nsame layer inside block")))
		   (setq obj (vlax-ename->vla-object obj))
		   (= (vla-get-ObjectName obj) "AcDbBlockReference")
	  )
	(progn
	  (setq acdoc  (vla-get-ActiveDocument (vlax-get-acad-object))
			blocks (vla-get-Blocks acdoc)
	  )
	  (SetLayer (vla-get-Name obj) (vla-get-Layer obj))
	  (vla-Regen acdoc acActiveViewport)
	)
  )
  (fix1 (vla-get-Name obj))
  (vl-cmdf "regen")
  (princ)
)

Debashis Bhunia
Co-Founder of Geometrifying Trigonometry(C)
________________________________________________
Walking is the First step of Running, Technique comes Next....