;======================================================================= ; Rope.Lsp Nov 25, 2001 ; 3D Mesh Rope / Cable from 3D Pline Path ;================== Start Program ====================================== (princ "\nCopyright (C) 2001, Fabricated Designs, Inc.") (princ "\nLoading Rope v1.4 ") (setq rop_ nil lsp_file "Rope") ;================== Macros ============================================= (defun PDot ()(princ ".")) (PDot);++++++++++++ Set Modes & Error ++++++++++++++++++++++++++++++++++ (defun rop_smd () (SetUndo) (setq olderr *error* *error* (lambda (e) (while (> (getvar "CMDACTIVE") 0) (command)) (and (/= e "quit / exit abort") (princ (strcat "\nError: *** " e " *** "))) (command "_.UNDO" "_END" "_.U") (rop_rmd)) rop_var '(("CMDECHO" . 0) ("MENUECHO" . 0) ("MENUCTL" . 0) ("MACROTRACE" . 0) ("OSMODE" . 0) ("SORTENTS" . 119) ("BLIPMODE" . 0) ("MODEMACRO" . ".") ("SNAPMODE" . 1) ("PLINEWID" . 0.0) ("ORTHOMODE" . 1) ("GRIDMODE" . 0) ("ELEVATION" . 0) ("THICKNESS" . 0) ("FILEDIA" . 0) ("FILLMODE" . 0) ("SPLFRAME" . 0) ("UCSICON" . 3) ("HIGHLIGHT" . 1) ("REGENMODE" . 1) ("COORDS" . 2) ("DRAGMODE" . 2) ("CECOLOR" . "BYLAYER") ("CELTYPE" . "BYLAYER"))) (foreach v rop_var (setq rop_rst (cons (cons (car v) (getvar (car v))) rop_rst)) (setvar (car v) (cdr v))) (princ (strcat (getvar "PLATFORM") " Release " (ver) " - 3D Rope / Cable ....\n")) (princ)) (PDot);++++++++++++ Return Modes & Error +++++++++++++++++++++++++++++++ (defun rop_rmd () (setq *error* olderr) (foreach v rop_rst (setvar (car v) (cdr v))) (command "_.UNDO" "_END") (prin1)) (PDot);++++++++++++ Set And Start An Undo Group ++++++++++++++++++++++++ (defun SetUndo () (and (zerop (getvar "UNDOCTL")) (command "_.UNDO" "_ALL")) (and (= (logand (getvar "UNDOCTL") 2) 2) (command "_.UNDO" "_CONTROL" "_ALL")) (and (= (logand (getvar "UNDOCTL") 8) 8) (command "_.UNDO" "_END")) (command "_.UNDO" "_GROUP")) (PDot);************ Main Program *************************************** (defun rop_ (/ olderr rop_var rop_rst ss s vl) ;;;SET MODES (rop_smd) ;;;GET THE PATH (while (or (not ss) (> (sslength ss) 1) (/= (cdr (assoc 0 (entget s))) "POLYLINE") (= (logand (cdr (assoc 70 (entget s))) 4) 4) (/= (logand (cdr (assoc 70 (entget s))) 8) 8)) (princ "\nSelect 1 Non Splined Heavy Polyline Path") (setq ss (ssget '((0 . "POLYLINE")))) (setq s (ssname ss 0))) ;;;GET THE PATH LIST (while (/= "SEQEND" (cdr (assoc 0 (entget (entnext s))))) (setq s (entnext s)) (if (and ;(/ (logand (cdr (assoc 70 (entget s))) 8) 8) (/ (logand (cdr (assoc 70 (entget s))) 16) 16) (= (logand (cdr (assoc 70 (entget s))) 32) 32)) (setq vl (cons (cdr (assoc 10 (entget s))) vl)))) ;;;MAKE THE ROPE (load "MAKEROPE") (makerope vl) ;;;EXIT (rop_rmd)) (PDot);************ Load Program *************************************** (defun C:Rope () (rop_)) (if rop_ (princ "\nRope Loaded\n")) (prin1) ;|================== End Program =======================================