Hatch Apperance change ?

Hatch Apperance change ?

jaimuthu
Advocate Advocate
323 Views
3 Replies
Message 1 of 4

Hatch Apperance change ?

jaimuthu
Advocate
Advocate
(defun c:MATCHHATCHORIGIN (/ base-ent base-data base-pattern base-scale base-angle base-x base-y 
                                  ss i ent target-data target-pattern target-scale target-angle
                                  new-x new-y new-data)
  (princ "\nSelect BASE hatch (reference pattern): ")
  (setq base-ent (car (entsel)))
  
  (if (and base-ent (= (cdr (assoc 0 (entget base-ent))) "HATCH"))
    (progn
      
      (setq base-data (entget base-ent))
      (setq base-pattern (cdr (assoc 2 base-data)))    
      (setq base-scale (cdr (assoc 41 base-data)))     
      (setq base-angle (cdr (assoc 52 base-data)))     
      (setq base-x (cdr (assoc 43 base-data)))         
      (setq base-y (cdr (assoc 44 base-data)))         
      
    
      (if (not base-scale) (setq base-scale 1.0))
      (if (not base-angle) (setq base-angle 0.0))
      (if (not base-x) (setq base-x 0.0))
      (if (not base-y) (setq base-y 0.0))
      
      (princ (strcat "\nBase hatch - Pattern: " (if base-pattern base-pattern "SOLID")
                     " Scale: " (rtos base-scale 2 3)
                     " Angle: " (rtos (* base-angle 180.0 pi) 2 1) "°"
                     " Origin: X=" (rtos base-x 2 3) " Y=" (rtos base-y 2 3)))
      
      
      (princ "\nSelect target hatches to align pattern: ")
      (setq ss (ssget '((0 . "HATCH"))))
      
      (if ss
        (progn
          (setq i 0)
          (repeat (sslength ss)
            (setq ent (ssname ss i))
            
            (if (/= ent base-ent)
              (progn
                (setq target-data (entget ent))
                (setq target-pattern (cdr (assoc 2 target-data)))
                (setq target-scale (cdr (assoc 41 target-data)))
                (setq target-angle (cdr (assoc 52 target-data)))
                
               
                (if (not target-scale) (setq target-scale 1.0))
                (if (not target-angle) (setq target-angle 0.0))
                
                
                (if (and (equal base-pattern target-pattern)
                         (equal base-scale target-scale 0.001)
                         (equal base-angle target-angle 0.001))
                  (progn
                    
                    (setq new-data target-data)
                    
                    
                    (if (assoc 43 new-data)
                      (setq new-data (subst (cons 43 base-x) (assoc 43 new-data) new-data))
                      (setq new-data (append new-data (list (cons 43 base-x))))
                    )
                    (if (assoc 44 new-data)
                      (setq new-data (subst (cons 44 base-y) (assoc 44 new-data) new-data))
                      (setq new-data (append new-data (list (cons 44 base-y))))
                    )
                    
                    
                    (if (entmod new-data)
                      (progn
                        (entupd ent)
                        (princ (strcat "\nHatch " (itoa (1+ i)) " pattern aligned successfully."))
                      )
                      (princ (strcat "\nFailed to align hatch " (itoa (1+ i))))
                    )
                  )
                  (princ (strcat "\nHatch " (itoa (1+ i)) " skipped - different pattern/scale/angle."))
                )
              )
            )
            (setq i (1+ i))
          )
          (princ (strcat "\nProcessed " (itoa (sslength ss)) " hatch(es)."))
        )
        (princ "\nNo target hatches selected.")
      )
    )
    (princ "\nSelected object is not a hatch or selection cancelled.")
  )
  (princ)
)

i  want only match hatch origin only dont change any others but its changed origin but hatch appearnce changed i dont need apperance changed

0 Likes
Accepted solutions (1)
324 Views
3 Replies
Replies (3)
Message 2 of 4

paullimapa
Mentor
Mentor
Accepted solution

If you only want to match the origin then comment out the following lines in the code:

;                (setq target-pattern (cdr (assoc 2 target-data)))
;                (setq target-scale (cdr (assoc 41 target-data)))
;                (setq target-angle (cdr (assoc 52 target-data)))
                
               
;                (if (not target-scale) (setq target-scale 1.0))
;                (if (not target-angle) (setq target-angle 0.0))
                
                
;                (if (and (equal base-pattern target-pattern)
;                         (equal base-scale target-scale 0.001)
;                         (equal base-angle target-angle 0.001))
;                  (progn

and also comment out these:

;                  )
;                  (princ (strcat "\nHatch " (itoa (1+ i)) " skipped - different pattern/scale/angle."))
;                )

Paul Li
IT Specialist
@The Office
Apps & Publications | Video Demos
0 Likes
Message 3 of 4

jaimuthu
Advocate
Advocate

Thanks for quick reply

0 Likes
Message 4 of 4

paullimapa
Mentor
Mentor

You are welcome…cheers!!!


Paul Li
IT Specialist
@The Office
Apps & Publications | Video Demos
0 Likes