Visual LISP, AutoLISP and General Customization
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Make Region(Union) using Polyline & separate hatch

3 REPLIES 3
SOLVED
Reply
Message 1 of 4
ctpgamage
1156 Views, 3 Replies

Make Region(Union) using Polyline & separate hatch

Dear Brothers,

 

I have to Qestions i have attach CAD for that two qestions

 

I want a lisp file to create Assoiciated region using separete poly line and separate hatch.i can do it command of create region and union command but if i do so its take some time i want to do it quickly using lisp file.please help me someone to do this

 

thanks

gamage

3 REPLIES 3
Message 2 of 4
dicra
in reply to: ctpgamage

Hi ctpgamage,

 

Here is one quick code, minimum testing:

 

(defun c:ssunion (/ ss ssunion ename)
  (setq ss (ssget '((-4 . "<OR")
		      (0 . "LWPOLYLINE")
		      (0 . "HATCH")
		      (-4 . "OR>")))
	)
  (setq ssunion (ssadd))
  (while (setq ename (ssname ss 0))
    (cond
      ((= "HATCH" (cdr (assoc 0 (entget ename))))
       (command "-hatchedit" ename "b" "r" "n")
       )
       ((= "LWPOLYLINE" (cdr (assoc 0 (entget ename))))
	(command "region" ename "")
	)
      );end cond
    (ssdel ename ss)
    (ssadd (entlast) ssunion )
    )
  (command "union" ssunion "")
  )

 

 

Hope that this is going to help you.

dicra

 

Message 3 of 4
ctpgamage
in reply to: dicra

thanks dear Dicra....you lisp was helpfull thank you very much

Message 4 of 4
dicra
in reply to: ctpgamage

gamage,

 

You're welcome, glad I could help.

 

Here is one quick remark, I just added Lee Macs undo commands.

Whit these commands, if You need to use undo, it is not going to go  step by step trough lisp.

 

(defun c:ssunion (/ ss ssunion ename)

      (defun *error* ( msg )
        (LM:endundo (LM:acdoc))
        (if (not (wcmatch (strcase msg t) "*break,*cancel*,*exit*"))
            (princ (strcat "\nError: " msg))
        )
        (princ)
    )
  (LM:startundo (LM:acdoc))
  
  (setq ss (ssget '((-4 . "<OR")
		      (0 . "LWPOLYLINE")
		      (0 . "HATCH")
		      (-4 . "OR>")))
	)
  (setq ssunion (ssadd))
  (while (setq ename (ssname ss 0))
    (cond
      ((= "HATCH" (cdr (assoc 0 (entget ename))))
       (command "-hatchedit" ename "b" "r" "n")
       )
       ((= "LWPOLYLINE" (cdr (assoc 0 (entget ename))))
	(command "region" ename "")
	)
      );end cond
    (ssdel ename ss)
    (ssadd (entlast) ssunion )
    )
  (command "union" ssunion "")
  (LM:endundo   (LM:acdoc))
  )

;; Start Undo  -  Lee Mac
;; Opens an Undo Group.

(defun LM:startundo ( doc )
    (LM:endundo doc)
    (vla-startundomark doc)
)

;; End Undo  -  Lee Mac
;; Closes an Undo Group.

(defun LM:endundo ( doc )
    (while (= 8 (logand 8 (getvar 'undoctl)))
        (vla-endundomark doc)
    )
)

;; Active Document  -  Lee Mac
;; Returns the VLA Active Document Object

(defun LM:acdoc nil
    (eval (list 'defun 'LM:acdoc 'nil (vla-get-activedocument (vlax-get-acad-object))))
    (LM:acdoc)
)
	
       
  

 

dicra

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk Design & Make Report

”Boost