A lisp to split up a hatch made of multiple patches

DFLY
edited September 2022 in LISP Codes
(defun c:sph ()


(setq hh (car(entsel "\nSelect a hatch")))    ;select a hatch
(if (/= (cdr(assoc 0 (entget hh))) "HATCH") ; first check to see if hatch was selected
  (progn 
     (alert "SORRY THAT IS NOT A HATCH")
	 (exit)                                                      ;exit function if not a hatch
	)
  )
  
  (setq oldhatch (cdr (assoc -1 (entget hh)))) ; gets the entity id of the selected hatc for deletion later
  
 (command "layer" "M" "TempHatchBoundary" "c" "red" "" "") ; create a new layer for temp boundary
 (command "hatchgenerateboundary" hh "")                   ;genertate new boundaries from hatch
 (command "layer" "M" "NEW_HATCH" "c" "green" "" "") ;create new layer for new hatch
 (setq ss (ssget "X" '((0 . "LWPOLYLINE") (8 . "TempHatchBoundary"))))
 (foreach pp (vle-selectionset->list ss)
   (setq bent (cdr (assoc -1 (entget pp )))) ;"bent" is variabel "boundary entity"
   (command "hatch" "s" bent "" "")
   (command "chprop" bent "" "LA" "NEW_HATCH" "") ;change new boundary to hatch layer
   

 )
 
(command "delete" oldhatch "")

)
Here is a lisp to take a hatch that is not continuous and break it up into separate hatch areas.
Comments and improvements welcome.