1. ВНИМАНИЕ! В течении пары дней +- будет переезд форума на более защищённый сервер. Возможны периодические перебои в работе.

LISP - Выноска в кружок, нужна поправка...

Тема в разделе "Autodesk", создана пользователем vladant, 21 мар 2013.

  1. Есть такой замечательный лисп

    (defun ntr ()
    (command "_trim" tr1 "" tr2 \e)
    )
    (defun nl ()
    (command "_Line" pt1 pt2 \e))
    (defun C:NK ( / c hold ht r pt2 txt1 txt)
    (princ "\n Прежняя высота текста: ")
    (setq hold (getvar "TEXTSIZE"))
    (princ hold)
    (initget 6)
    (princ (strcat "\n Размер (высота) текста) <" (rtos hold 2 2) ">: "))
    (setq ht (getreal))
    (if (= ht nil) (setq ht hold))
    (setq r (* 1.2 ht))
    (setq pt2 0)
    (while pt2
    (setq pt1 (getpoint "\n Укажите точку 1: "))
    (setq pt2 (getpoint "\n Укажите точку 2: "))
    (if pt2
    (progn
    (nl)
    (setq tr2 (entsel "" ))
    (if (null txt1) (setq txt1 "1")) ; if
    (princ (strcat "\n Введите номер точки <" txt1 ">: ")) ;princ
    (setq txt (getstring))
    (if (= txt "") (setq txt txt1)) ;if
    (command "_CIRCLE" pt2 r)
    (setq tr1 (entlast))
    (command "_TEXT" "_M" pt2 ht "0" txt)
    (setq txt1 (itoa (1+ (atoi txt))))







    (ntr)
    )); progn, if
    ); while
    (princ "\n The end. ")
    (princ)
    )

    После построения выноски убрать ее продолжение отмеченное красным, отредактируйте плиз SAM_1.jpg
     
  2. Alexandr-GR

    Alexandr-GR Форумчанин

    Код:
    (defun C:NK (/ hold ht r pt1 pt2)
        (setq si_va (mapcar 'getvar '(OSMODE CMDECHO)))
        (vl-catch-all-apply
            (function
                (lambda ()
                    (setvar 'CMDECHO 0)
                    (setq hold (getvar "TEXTSIZE"))
                    (initget 6)
                    (princ (strcat "\n Размер (высота) текста) <"
                                  (rtos hold 2 2)
                                  ">: "
                          )
                    )
                    (if (not (setq ht (getreal)))
                        (setq ht hold)
                    )
                    (setq r (* 1.2 ht))
                    (while (setq pt1 (getpoint "\n Укажите точку 1: ")
                                pt2 (if pt1
                                        (getpoint pt1 "\n Укажите точку 2: ")
                                    )
                          )
                        (setvar 'OSMODE 0)
                        (if pt2
                            (progn
                                (vl-cmdf "_Line"
                                        pt1
                                        (polar pt1
                                                (angle pt1 pt2)
                                                (- (distance pt1 pt2) r)
                                        )
                                        ""
                                )
    ;;;(setq tr2 (entsel "" ))
                                (if (null txt1)
                                    (setq txt1 "1")
                                )                    ; if
                                (princ (strcat "\n Введите номер точки <" txt1 ">: ")
                                )                    ;princ
                                (setq txt (getstring))
                                (if (= txt "")
                                    (setq txt txt1)
                                )                    ;if
                                (vl-cmdf "_CIRCLE" pt2 r)
    ;;;(setq tr1 (entlast))
                                (vl-cmdf "_TEXT" "_M" pt2 ht "0" txt)
                                (setq txt1 (itoa (1+ (atoi txt))))
    ;;;(ntr)
                            )
                        )                            ; progn, if
                        (setvar 'OSMODE (car si_va))
                    )                                ; while
                    (princ "\n The end. ")
                    (princ)
                )
            )
        )
        (mapcar 'setvar '(OSMODE CMDECHO) si_va)
    )
     
    chehoff и vladant нравится это.
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie.
    Скрыть объявление