Jump to content
sidhu412

EXTRIM Between Two Lines

Recommended Posts

marko_ribar
Bingooooooooooo

 

Great.........!

That's 100% What I needed You are Genius Mr. Marko_Ribar.

 

Thanxxxxxx a lot

 

Regards,

 

 

Sidhu

 

You're welcome, Sidhu...

All the best in your work, I hope you'll find useful posted code...

 

M.R.

Share this post


Link to post
Share on other sites
troggarf

Wow this is great Marko!!

This is definitely a helpful tool

Thanks

~Greg

Share this post


Link to post
Share on other sites
marko_ribar

Thanks Greg, I've cleaned code further more... Had mistake in checking weather picked entities belong to curve entities... Now fixed that issue and also changed defined functions to be local to main command function... This version I use now in my start-up acaddoc.lsp...

 

(defun c:exb2c ( / colect_entdata store_entdata colect_modified_entdata sel_mod_ents 
                  hig osm c1 c2 p ss entdata )

 (defun colect_entdata ( / ss i ent entdata )
   (setq ss (ssget "_X"))
   (setq i -1)
   (while (setq ent (ssname ss (setq i (1+ i))))
     (setq entdata (cons (entget ent) entdata))
   )
   entdata
 )

 (defun store_entdata nil
   (setq entdata (colect_entdata))
   (princ)
 )

 ;;; Modify entities ;;;

 (defun colect_modified_entdata ( / ss i ent entdatachk entdatamod )
   (setq ss (ssget "_X"))
   (setq i -1)
   (while (setq ent (ssname ss (setq i (1+ i))))
     (setq entdatachk (cons (entget ent) entdatachk))
   )
   (foreach data entdatachk
     (if (not (vl-some '(lambda ( x ) (equal x data 1e-6)) entdata))
       (setq entdatamod (cons data entdatamod))
     )
   )
   entdatamod
 )

 (defun sel_mod_ents nil
   (setq ss (ssadd))
   (foreach data (colect_modified_entdata)
     (ssadd (cdr (assoc -1 data)) ss)
   )
   (princ)
 )

 ;;; Main function ;;;

 (vl-load-com)

 (setq hig (getvar 'highlight))
 (setq osm (getvar 'osmode))
 (setvar 'osmode 0)
 (if (not (or etrim (not (vl-catch-all-error-p (vl-catch-all-apply 'load (list (findfile "extrim.lsp")))))))
   (progn
     (alert "\nExpress Tool EXTRIM not available - quitting...")
     (exit)
   )
 )
 (setq c1 (car (entsel "\nPick first curve")))
 (while (vl-catch-all-error-p (vl-catch-all-apply 'vlax-curve-getstartparam (list c1)))
   (prompt "\nPicked entity isn't curve entity. Try again...")
   (setq c1 (car (entsel "\nPick first curve")))
 )
 (setq c2 (car (entsel "\nPick second curve")))
 (while (vl-catch-all-error-p (vl-catch-all-apply 'vlax-curve-getstartparam (list c2)))
   (prompt "\nPicked entity isn't curve entity. Try again...")
   (setq c2 (car (entsel "\nPick second curve")))
 )
 (initget 1)
 (setq p (getpoint "\nPick or specify point between 2 prviously picked curves where do you want extrim to be processed : "))
 (store_entdata)
 (etrim c1 p)
 (sel_mod_ents)
 (command "_.copybase" '(0.0 0.0 0.0) ss "")
 (command "_.undo" "3")
 (etrim c2 p)
 (command "_.pasteclip" '(0.0 0.0 0.0))
 (setvar 'osmode osm)
 (setvar 'highlight hig)
 (princ)
)

 

HTH, M.R.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×