Advertisement
Jgug

AutoLISP l2

Oct 31st, 2012
439
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 2.18 KB | None | 0 0
  1. ;работает запуск диалога
  2. ;(defun c:hello ()
  3. ;  (setq dcl_id (load_dialog "D:\\hello.dcl"))
  4. ;  (if (not (new_dialog "hello" dcl_id) ) (exit))
  5. ;  (action_tile "accept" "(done_dialog)")
  6. ;  (start_dialog)
  7. ;  (unload_dialog dcl_id)
  8. ;)
  9. ;получает координаты начала и конца, но только для 1 отрезка (последнего)
  10. (setq dx 10.0)
  11. (setq dy 10.0)
  12. (setq naborLine (ssget "X" '((0 . "LINE"))))
  13. (setq naborPolyline (ssget "X" '((0 . "LWPOLYLINE"))))
  14. (setq sizeLine (sslength naborLine))
  15. (setq sizePolyline (sslength naborPolyline))
  16. (setq i 0)
  17. (setq j 0)
  18. ;-----------------------------------------------------------------------------------------------------------
  19. (while (< i sizeLine)
  20.     (setq P (ssname naborLine i))
  21.     (setq prim (entget P))
  22.     (setq startL (assoc 10 prim)) ;список начала
  23.     (setq endL (assoc 11 prim)) ;список конца
  24.     (setq start (cdr startL)) ;координты начала
  25.     (setq end (cdr endL)) ;координаты конца
  26.     (setq xs (car start)) ;X координата начала
  27.     (setq ys (cadr start)) ;Y координата начала
  28.     (setq xe (car end)) ;X координата конца
  29.     (setq ye (cadr end)) ;Y координата конца
  30.     (setq newxe xe)
  31.     (setq newye ye)
  32.     (setq vX (abs (- xs xe)))
  33.     (setq vY (abs (- ys ye)))
  34.     (cond
  35.         ((< vX dx) (setq newxe xs)) ;новое значение X конца отрезка, если TRUE
  36.         ((< vY dy) (setq newye ys)) ;новое значение Y конца отрезка, если TRUE
  37.     )
  38.     (setq new_end (list 11 newxe newye 0.0)) ;создание нового списка координат конца
  39.     (setq prim (subst new_end endL prim)) ;замена старого списка с координатами конца преобразованным
  40.     (entmod prim) ;применение изменений
  41.     (setq i (1+ i))
  42. )
  43. ;-----------------------------------------------------------------------------------------------------------
  44. ;(while (< j sizePolyline)
  45.     (foreach n (entget (ssname naborPolyline 0))
  46.     (if (= 10 (car n)) (print n)))
  47.     ;(entupd prim) ;регенерация примитива
  48. ;)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement