;;;------------------------------------------------------------- ;;;------------------------------------------------------------- ;;; SPACING.LSP ;;; routines to space lines in given spaces with user ;;; supplied criteria ;;;------------------------------------------------------------- ;;; a routine to space lines equally in a measured ;;; space with a given number of spaces ;;; must have a line drawn before starting for this ;;; to work (defun eq_spa ( / p1 p2 o_pt bay ang num_spa spa cnt n_j ent a cde osm msg) (setq cde (getvar "CMDECHO") osm (getvar "OSMODE") );setq (setvar "CMDECHO" 0) ;------------------------INPUT SECTION--------------- (initget (+ 1 2)) (setq num_spa (getint "\n Enter number of spaces. ")) (while (not (setq ent (entsel "\n Pick a line to offset. ")) )); while - not (setvar "OSMODE" 512) (setq p1 (getpoint "\n Pick a point at one end of distance to divide... ")) (setvar "OSMODE" 128) (setq p2 (getpoint p1 "\n Pick a point at other end... ")) (setvar "OSMODE" 0) (setq bay (distance p1 p2)) (setq ang (angle p1 p2)) (setq spa (/ bay num_spa)) (setq n_j (1- num_spa)) ;------------------------COMMAND LOOP---------------- (setq cnt 1) (repeat n_j (setq o_pt (polar p1 ang (* spa cnt))) (command "OFFSET" "T" ent o_pt "") (setq cnt (1+ cnt)) );repeat ;------------------------CLEAN UP-------------------- (setq msg (strcat " Lines are spaced at " (rtos spa) " o.c.")) (terpri) (prompt msg) (setvar "CMDECHO" cde) (setvar "OSMODE" osm) (princ) ) ;;;------------------------------------------------------------- ;;; a routine to space lines equally in a measured space ;;; at less than or equal to an input maximum spacing ;;; must have a line drawn before starting for this to ;;; work (defun max_spa ( / p1 p2 o_pt bay ang m_sp a_sp cnt n_j ent a osm msg) (setq osm (getvar "OSMODE")) (setvar "CMDECHO" 0) ;------------------------INPUT SECTION--------------- (initget (+ 1 2)) (setq m_sp (getdist "\n Enter maximum spacing. ")) (while (not (setq ent (entsel "\n Pick a line to offset. ")) )); while -not (setvar "OSMODE" 512) (setq p1 (getpoint "\n Pick a point at one end of distance to divide... ")) (setvar "OSMODE" 128) (setq p2 (getpoint p1 "\n Pick a point at other end... ")) (setvar "OSMODE" 0) (setq bay (distance p1 p2)) (setq ang (angle p1 p2)) ;------------------------DIVISION LOOP--------------- (setq a "T" cnt 1.00) (while a (setq a_sp (/ bay cnt)) (cond ((equal a_sp m_sp 0.00001) (setq a nil n_j (fix (1- cnt)) ) ); first test - ends loop ((< a_sp m_sp) (setq a nil n_j (fix (1- cnt)) ) ); second test - ends loop (T (setq cnt (1+ cnt)) ); third test - continues loop );cond );while ;------------------------COMMAND LOOP---------------- (setq cnt 1) (repeat n_j (setq o_pt (polar p1 ang (* a_sp cnt))) (command "OFFSET" "T" ent o_pt "") (setq cnt (1+ cnt)) );repeat ;------------------------CLEAN UP-------------------- (setq msg (strcat " Lines are spaced at " (rtos a_sp) " o.c.")) (terpri) (prompt msg) (setvar "OSMODE" osm) (princ) ) ;;;------------------------------------------------------------- ;;; a routine to space lines in a measured space ;;; at a given spacing ;;; must have a line drawn before starting for this to ;;; work (defun fil_spa ( / osm spa ent p1 p2 bay ang num xtra cnt o_pt msg) (setq osm (getvar "OSMODE")) (setvar "CMDECHO" 0) ;------------------------INPUT SECTION--------------- (initget (+ 1 2)) (setq spa (getdist "\n Enter spacing. ")) (while (not (setq ent (entsel "\n Pick a line to offset. ")) )); while -not (setvar "OSMODE" 512) (setq p1 (getpoint "\n Pick a starting point at one end of space to fill... ")) (setvar "OSMODE" 128) (setq p2 (getpoint p1 "\n Pick a point at other end... ")) (setvar "OSMODE" 0) (setq bay (distance p1 p2) ang (angle p1 p2) num (fix (/ bay spa)) xtra (rtos (rem bay spa)) );setq ;------------------------COMMAND LOOP---------------- (setq cnt 1) (repeat num (setq o_pt (polar p1 ang (* spa cnt))) (command "OFFSET" "T" ent o_pt "") (setq cnt (1+ cnt)) );repeat ;------------------------CLEAN UP-------------------- (setq msg (strcat "\n " (itoa num) " spaces at " (rtos spa) ", remaining space is " xtra " .") ) (terpri) (prompt msg) (setvar "OSMODE" osm) (princ) ) ;;;------------------------------------------------------------- ;;; a routine to space lines in a measured space ;;; at 16" O/C spacing ;;; must have a line drawn before starting for this to ;;; work (defun fil_spa16 ( / osm spa ent p1 p2 bay ang num xtra cnt o_pt msg) (setq osm (getvar "OSMODE")) (setvar "CMDECHO" 0) ;------------------------INPUT SECTION--------------- (initget (+ 1 2)) (setq spa 16) (while (not (setq ent (entsel "\n Pick a line to offset @ 16 in. OC. ")) )); while -not (setvar "OSMODE" 512) (setq p1 (getpoint "\n Pick a starting point at one end of space to fill... ")) (setvar "OSMODE" 128) (setq p2 (getpoint p1 "\n Pick a point at other end... ")) (setvar "OSMODE" 0) (setq bay (distance p1 p2) ang (angle p1 p2) num (fix (/ bay spa)) xtra (rtos (rem bay spa)) );setq ;------------------------COMMAND LOOP---------------- (setq cnt 1) (repeat num (setq o_pt (polar p1 ang (* spa cnt))) (command "OFFSET" "T" ent o_pt "") (setq cnt (1+ cnt)) );repeat ;------------------------CLEAN UP-------------------- (setq msg (strcat "\n " (itoa num) " spaces at " (rtos spa) ", remaining space is " xtra " .") ) (terpri) (prompt msg) (setvar "OSMODE" osm) (princ) ) ;;;------------------------------------------------------------- ;;; a routine to space lines in a measured space ;;; at 24" O/C spacing ;;; must have a line drawn before starting for this to ;;; work (defun fil_spa24 ( / osm spa ent p1 p2 bay ang num xtra cnt o_pt msg) (setq osm (getvar "OSMODE")) (setvar "CMDECHO" 0) ;------------------------INPUT SECTION--------------- (initget (+ 1 2)) (setq spa 24) (while (not (setq ent (entsel "\n Pick a line to offset @ 24 in. OC. ")) )); while -not (setvar "OSMODE" 512) (setq p1 (getpoint "\n Pick a starting point at one end of space to fill... ")) (setvar "OSMODE" 128) (setq p2 (getpoint p1 "\n Pick a point at other end... ")) (setvar "OSMODE" 0) (setq bay (distance p1 p2) ang (angle p1 p2) num (fix (/ bay spa)) xtra (rtos (rem bay spa)) );setq ;------------------------COMMAND LOOP---------------- (setq cnt 1) (repeat num (setq o_pt (polar p1 ang (* spa cnt))) (command "OFFSET" "T" ent o_pt "") (setq cnt (1+ cnt)) );repeat ;------------------------CLEAN UP-------------------- (setq msg (strcat "\n " (itoa num) " spaces at " (rtos spa) ", remaining space is " xtra " .") ) (terpri) (prompt msg) (setvar "OSMODE" osm) (princ) ) ;;;------------------------------------------------------------- ;;; a routine to space lines in a measured space ;;; at 19.2" O/C spacing ;;; must have a line drawn before starting for this to ;;; work (defun fil_spa192 ( / osm spa ent p1 p2 bay ang num xtra cnt o_pt msg) (setq osm (getvar "OSMODE")) (setvar "CMDECHO" 0) ;------------------------INPUT SECTION--------------- (initget (+ 1 2)) (setq spa 19.2) (while (not (setq ent (entsel "\n Pick a line to offset @ 19.2 in. OC. ")) )); while -not (setvar "OSMODE" 512) (setq p1 (getpoint "\n Pick a starting point at one end of space to fill... ")) (setvar "OSMODE" 128) (setq p2 (getpoint p1 "\n Pick a point at other end... ")) (setvar "OSMODE" 0) (setq bay (distance p1 p2) ang (angle p1 p2) num (fix (/ bay spa)) xtra (rtos (rem bay spa)) );setq ;------------------------COMMAND LOOP---------------- (setq cnt 1) (repeat num (setq o_pt (polar p1 ang (* spa cnt))) (command "OFFSET" "T" ent o_pt "") (setq cnt (1+ cnt)) );repeat ;------------------------CLEAN UP-------------------- (setq msg (strcat "\n " (itoa num) " spaces at " (rtos spa) ", remaining space is " xtra " .") ) (terpri) (prompt msg) (setvar "OSMODE" osm) (princ) ) ;;;------------------------------------------------------------- ;;(defun c:eq () (eq_spa)) ;;(defun c:max () (max_spa)) ;;(defun c:fil () (fil_spa)) ;;(defun c:F1 () (fil_spa16)) ;;(defun c:F2 () (fil_spa24)) ;;(defun c:F19 () (fil_spa192)) ;;;------------------------------------------------------ ;;;=====================================================