ScottMC Posted 11 hours ago Posted 11 hours ago (edited) Question in code.. (defun c:CopyRegionEdge (/ ss) ;; AI.. https://www.google.com/search?q=copy+region+edge+segment%2C+autolisp&client=firefox-b-1-e&hs=LJSp&sca_esv=28d160b4388e87a1&biw=1143&bih=530&ei=t2enadf8OfXIp84PyJ69kA8&ved=0ahUKEwiXtPqy6oSTAxV15MkDHUhPD_I4ChDh1QMIEQ&uact=5&oq=copy+region+edge+segment%2C+autolisp&gs_lp=Egxnd3Mtd2l6LXNlcnAiImNvcHkgcmVnaW9uIGVkZ2Ugc2VnbWVudCwgYXV0b2xpc3AyCBAAGIAEGKIEMgUQABjvBTIFEAAY7wUyBRAAGO8FMgUQABjvBUjeM1C3D1iRLnABeACQAQCYAYgIoAHMC6oBBzAuNC43LTG4AQPIAQD4AQGYAgagApcNwgIIEAAYsAMY7wXCAgoQIRigARjDBBgKmAMAiAYBkAYFkgcHMS40LjYtMaAH0BCyBwcwLjQuNi0xuAffDMIHBzItMS4zLjLIB2uACAA&sclient=gws-wiz-serp ;; micro altered.. (princ "\nSelect Region to Copy Edge From: ") (setvar 'cmdecho 0) (if (setq ss (ssget ":S" '((0 . "REGION")))) (progn (command "_.copybase" "0,0,0" ss "") ;; copy region to clipbrd (command "chprop" ss "" "c" 252 "") ;; change color ;;; ??????????? (command "_.explode" ss) ;; make segs accessable <not a selection set> (princ "\nSelect Region Seg to Copy ") (command "_.copy" (ssget ":S") "" "\\" "\\") ;; select seg +copy +move (command "_.erase" ss "") (princ "\nSelect Items to Remove..") ;; <- my only known method (command "_.erase" "w" "\\" "\\" "") ;; <- manual erase :( ;; ... SEEING AS MY AUTOLISP EXPERIENCE SUCKS .. ;; how can the eXploded region / lines etc, be ERASED/selected ? ;; how to: make a selection set? (command "chprop" "_L" "" "c" "bylayer" "") ;; ch copied to bylayer ) ) (command "_.pasteclip" "0,0,0") ;; re.place original region (setvar 'cmdecho 1) (princ) ) Edited 11 hours ago by ScottMC .. Quote
mhupp Posted 10 hours ago Posted 10 hours ago not sure what your trying to do. you can set entlast before the explode then add all the entities into the selection set. (setq LastEnt (entlast)) (command "_.explode" ss) (setq SS1 (ssadd)) ;create a blank selection set or add to an existing one. (while (setq LastEnt (entnext LastEnt)) (ssadd LastEnt SS1) ) Quote
marko_ribar Posted 1 hour ago Posted 1 hour ago (edited) If I understood you correctly, you are searching to something like this... (defun c:copy_reg_edg ( / *error* car-sort osm pt regpt reg x el ell edg m ) (or (not (vl-catch-all-error-p (vl-catch-all-apply (function vlax-get-acad-object) nil))) (vl-load-com)) (defun *error* ( m ) (if osm (setvar (quote osmode) osm) ) (if m (prompt (strcat "\n" m)) ) (princ) ) (defun car-sort ( lst fun / r ) (setq r (car lst)) (foreach itm (cdr lst) (if (apply fun (list itm r)) (setq r itm) ) ) r ) (setq osm (getvar (quote osmode))) (setvar (quote osmode) 2) (if (and (not (initget 1)) (setq pt (getpoint "\nPick edge of region to copy - you may use any OSNAP option; hower cursor over segment mid point to see active OSNAP - <mid>... : ")) (setq regpt (nentselp pt)) (setq reg (car regpt)) (= (cdr (assoc 0 (setq x (entget reg)))) "REGION") (/= 4 (logand 4 (cdr (assoc 70 (tblsearch "LAYER" (cdr (assoc 8 x)))))))) (progn (setq pt (trans pt 1 0)) (setq el (entlast)) (vla-explode (vlax-ename->vla-object reg)) (while (setq el (entnext el)) (setq ell (cons el ell)) ) (setq edg (car-sort ell (function (lambda ( a b ) (< (distance pt (vlax-curve-getclosestpointto a pt)) (distance pt (vlax-curve-getclosestpointto b pt))))))) (foreach el ell (if (not (eq el edg)) (entdel el) ) ) (vl-cmdf "_.copy" edg "" "_non" (trans pt 0 1) "\\") (entdel edg) ) (setq m "Missed, or picked wrong entity type - you must pick REGION entity on unlocked Layer... Better luck next time...") ) (*error* (if m m)) ) Edited 14 minutes ago by marko_ribar Quote
ScottMC Posted 1 hour ago Author Posted 1 hour ago PURRRFECT! Thanks so much 'mhupp This gets me all.the.more excited to learn more! Quote
ScottMC Posted 1 hour ago Author Posted 1 hour ago (edited) Marco, when'd u write that? let me try it... seems to refuse arc segs but do like your select style Edited 1 hour ago by ScottMC Quote
marko_ribar Posted 35 minutes ago Posted 35 minutes ago I tested it under AutoCAD 2022 and BricsCAD V26 and it worked well and with arced segments... Do you receive some error messages? Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.