(defun c:qzZ ( ) (vl-load-com) (setq blio (getvar "blipmode")) (setq cmdo (getvar "cmdecho")) (setvar "blipmode" 0) (setvar "cmdecho" 0) (setq bool "T") (prompt "\n请选择柱及柱内力") (setq ns (ssget)) ;(setq qpsl (sslength gp)) (setq a 0) (setq ZA 0) (setq EX 0) (setq EY 0) (setq ss (ssadd)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;(setq ns (ssget)) (if ns (progn (setq s 0.0) (setq i 0) (setq n (sslength ns)) (while (< i n) (setq e (ssname ns i)) (setq eb (entget e)) (if (= "TEXT" (cdr (assoc 0 eb))) (progn (if bool (progn (setq th (cdr (assoc 40 eb))) (setq bool nil) ) ) (setq ds (atof (cdr (assoc 1 eb)))) (setq S (+ S ds)) ) ;) (progn (if (= "CIRCLE" (cdr (assoc 0 eb))) (PROGN (setq point (cdr (assoc 10 eb))) (setq x (car point)) (setq y (cadr point)) ) ) ) ) (setq EX1 (* ds x) EY1 (* ds y) ) (setq EX (+ EX EX1) EY (+ EY EY1) ) (setq i (1+ i)) ) ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (SETQ XMIN (/ EX S)) (SETQ YMIN (/ EY S)) (setq p0 (list XMIN YMIN 0)) (setq enpt (entmake (list (cons 0 "point") (cons 8 "合力作用点") (cons 62 1) (cons 10 p0)))) (if (/= (getvar "pdmode") 3) (setvar "pdmode" 3)) (if (/= (getvar "pdsize") 200) (setvar "pdsize" 200)) (prin1) )
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
这是一个求合力作用点的LISP,但有问题,本人初学,想请高手指点 |