;; | ---------------------------------------------------------------------------- ;; | MI_AcquireFromNearestZ ;; | ---------------------------------------------------------------------------- ;; | Function : Acquires and updates the Z elevation for each point of source ;; | 3d polyline (or line) from the nearest point of the target 3d ;; | polyline ;; | Auguments : 'SrcEname' - Source ename ;; | 'TgtEname' - Target ename ;; | Return : ;; | Updated : September 3, 2008 ;; | Comments : Updates the source entity with the new acquired Z values ;; | e-mail : rakesh.rao@4d-technologies.com ;; | Web : www.4d-technologies.com ;; | ---------------------------------------------------------------------------- (defun MI_AcquireFromNearestZ ( SrcEname TgtEname / vlist _vlist _pt TgtOname _TgtEname Zoomed _pt __pt Z Lst ss 3d ) (setvar "EXPERT" 4) (if (tblsearch "VIEW" "$temp$") (command "._View" "_Delete" "$temp$") ) (command "._View" "_Save" "$temp$") (setq ss (ssadd)) (ssadd SrcEname ss) (ssadd TgtEname ss) (setq Zoomed nil Lst (SS_BoundingBox ss) ) (if Lst (command "._Zoom" "_Window" (nth 0 Lst) (nth 1 Lst)) ) (setq vlist (PL_plist SrcEname) 3d (PL_3d? TgtEname) ) (if 3d (setq _vlist (GE_Plist3d2d (PL_plist TgtEname) "Zero") _TgtEname (PL_mk_pl _vlist 0 0.0) )) (setq _vlist '()) (foreach pt vlist (if 3d (setq TgtOname (vlax-ename->vla-object _TgtEname)) (setq TgtOname (vlax-ename->vla-object TgtEname)) ) (setq _pt (vlax-curve-getClosestPointTo TgtOname pt)) (vlax-release-object TgtOname) (if _pt (progn (if 3d (entdel _TgtEname) ) (setq __pt (osnap _pt "_end")) (if 3d (entdel _TgtEname) ) (if __pt (setq Z (caddr __pt)) (setq Z (caddr _pt)) ) ) (setq Z (caddr pt)) ) (setq pt (list (car pt) (cadr pt) Z) _vlist (cons pt _vlist) ) ) (if 3d (entdel _TgtEname) ) (setq _vlist (reverse _vlist)) (PL_UpdatePoly SrcEname _vlist) (command "._View" "_Restore" "$temp$" "._View" "_Delete" "$temp$" ) )