3
18
15
初来乍到
;;; THIS LISP WILL TAKE A LINE ON AN EXPLOPED;;; PROFILE AND CALCULATE THE SLOPE;;;;;; THE LISP WILL ASK THE USER FOR THE RATIO;;; OF THE PROFILE IN QUESTION (IE: 10:1 , ];;; 5:1 AND SO ON).;;;;;; NEXT THE USER WILL SELECT THE LINE IN QUESTION;;; AND WILL PLACE THE SLOPE ON THE LINE AT THE MID-POINT;;;;;;;;; This program is free software: you can redistribute it and/or modify;;; it under the terms of the GNU General Public License as published by;;; the Free Software Foundation, either version 3 of the License, or;;; (at your option) any later version.;;;;;; This program is distributed in the hope that it will be useful,;;; but WITHOUT ANY WARRANTY; without even the implied warranty of;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the;;; GNU General Public License for more details.;;;;;; You should have received a copy of the GNU General Public License;;; along with this program. If not, see <http://www.gnu.org/licenses/>.;;;;;;;;;;;; SLOPELINE.LSP - COPYRIGHT 2014 BY J. SHAWN YOUNG;;;;;;;;; VERSION 1.0 - INITIAL STATE;;;;;; VERSION 2.0 2014-11-26;;; - RE-WROTE LISP TO BE MORE EFFICENT;;; - NO MORE NEGITIVE SLOPES;;; - ALLOW FOR SELECTION SETS OF LINES AND POLYLINES;;;;;; VERSION 2.1 2014-11-26;;; - FIXED ISSUED WITH TEXT COMING IN UPSIDE DOWN;;; IF LINE WAS DRAWN RIGHT TO LEFT;;;;;;;;;;;;(DEFUN C:SLOPELINE (/ PT1 PT2 PT1_Y PT1_X PT2_Y PT2_X RATIO SSET OBJ RISE RUN SLOPE MIDPOINT ANG ANG2 LEN LST COUNT LAYER ITEM COUNT CHECK N STYTEXT len2 ) (vl-load-com);;; SELECTION SET ;;; (SETQ SSET ;BEGIN SETQ (SSGET ;BEGIN SSGET '( (-4 . "<XOR") ;BEGIN XOR (0 . "LWPOLYLINE") ;GET POLYLINE (0 . "LINE") ;GET LINE (-4 . "XOR>") ;END XOR ) ) ;END SSGET ) ;END SETQ (SETQ ;BEGIN SETQ COUNT (SSLENGTH SSET) ;SET COUNT TO SELECTION SET LENGTH N 0 ;N TO 0 RATIO 1 ) ;END SETQ;;; CHECK AND SET TEXT STYLE ;;; (COMMAND "CMDECHO" 0) ;ECHO OFF (setq stytext (tblsearch "style" "AE-25")) ;SEARCH FOR AE-25 (if ;BEGINS PROCESS FOR MAKING AE-25 (or (= NIL stytext) (/= (cdr (assoc 40 stytext)) 0.0) ) (command "-style" "AE-25" "arial" "a" "y" "N" "2.5" "1.0" "0" "n" "n") ) ;END IF;;; CHECK AND SET TEXT STYLE ;;; (SETQ LAYER (TBLSEARCH "LAYER" "C-ANNO-TEXT")) (IF (= NIL LAYER) (COMMAND "-LAYER" "N" "C-ANNO-TEXT" "S" "C-ANNO-TEXT" "C" "2" "" "") ) (IF (/= LAYER NIL) (COMMAND "-LAYER" "S" "C-ANNO-TEXT" "") );;; BEGIN MAIN FUNCTION ;;; (WHILE ;BEGIN IF (> COUNT N) ;LOGIC STATEMENT (PROGN ;BEGIN PROGN (SETQ ;BEGIN SETQ OBJ (SSNAME SSET N) ;GET NEXT OBJECT IN SELECTION SET OBJ (VLAX-ENAME->VLA-OBJECT OBJ) ;CONVERT check (vlax-get obj 'objectname) ;get object name len (vla-get-length obj) len2 (/ len 2) ) ;END SETQ (IF ;BEGIN IF FOR LINE (= CHECK "AcDbLine") ;LOGIC STATEMENT (progn (setq ITEM (ENTGET (SSNAME SSET N)) PT1 (CDR (ASSOC 10 ITEM))