(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 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)
)
汉化一下不更好吗?
(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 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)
)