| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Научите лиспу на примере (или как kpblc, VVA и компания пытаются обучить чайника лиспу)

Научите лиспу на примере (или как kpblc, VVA и компания пытаются обучить чайника лиспу)

Ответ
Поиск в этой теме
Непрочитано 20.07.2008, 20:12
Научите лиспу на примере (или как kpblc, VVA и компания пытаются обучить чайника лиспу)
Red Nova
 
ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Торонто
Регистрация: 23.10.2007
Сообщений: 1,980

Со школы не ладится у меня с программированием. Все предметы щелкал, а на экзамене по информатике (Visual foxpro) программку типа суммирования столбцов списал у соседа (это уже в университете).
Не смотря на эте намерен научится писать программы для Автокада на лиспе, скачал книгу Хювенена, несколько примеров создания программ, но после получасового “смотрения” таких книг мое мышление явно притормаживает.
Решил пойти другим путем.
Нашел самый короткий лисп из моей коллекции, и прошу программистов с этого форума пошагово объяснить какой символ что означает. Надеюсь на вашу помощь.


Код:
[Выделить все]
(defun c:make-blocks-explodeable (/ adoc)
  (vl-load-com)
  (vla-startundomark
    (setq adoc (vla-get-activedocument (vlax-get-acad-object)))
    ) ;_ end of vla-startundomark
  (vlax-for blk_def (vla-get-blocks adoc)
    (if (and (equal (vla-get-isxref blk_def) :vlax-false)
             (equal (vla-get-islayout blk_def) :vlax-false)
             ) ;_ end of and
      (vl-catch-all-apply '(lambda () (vla-put-explodable blk_def :vlax-true)))
      ) ;_ end of if
    ) ;_ end of vlax-for
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
_____________________________________________________________________________________________________________

Прошло много лет и топик теперь представляет из себя площадку для обучения азов программирования для многих начинающих.
Так что начинающие лиспогрызы приветствуются .
__________________
Блог

Последний раз редактировалось Red Nova, 12.07.2017 в 05:43.
Просмотров: 1973864
 
Непрочитано 18.05.2010, 17:36
#861
mmax

Программист широкого профиля.
 
Регистрация: 08.09.2005
Челябинск
Сообщений: 722


Цитата:
Сообщение от gomer Посмотреть сообщение
>mmax: Кто потом обезьян собирать будет?
будет конечно лучше гранаты не выдавать. Обезьянам.
mmax вне форума  
 
Непрочитано 18.05.2010, 19:57
#862
grachev.p

конструктор мебели
 
Регистрация: 28.02.2010
г. Гатчина
Сообщений: 27


Цитата:
Сообщение от gomer Посмотреть сообщение
это могло бы выглядеть так:
Если честно, вот сколько читаю я про эту люмбда функцию у Полещука, так и не могу никак сообразить, как она работает
grachev.p вне форума  
 
Непрочитано 18.05.2010, 20:28
#863
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,855


Цитата:
Сообщение от grachev.p Посмотреть сообщение
Если честно, вот сколько читаю я про эту люмбда функцию у Полещука, так и не могу никак сообразить, как она работает
http://autolisp.ru/2009/09/16/lambda-functions/ не поможет?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.05.2010, 20:33
#864
grachev.p

конструктор мебели
 
Регистрация: 28.02.2010
г. Гатчина
Сообщений: 27




Спасибо, Алексей Прочитаю твою статью, думаю, что поможет.
grachev.p вне форума  
 
Непрочитано 22.05.2010, 09:57
#865
superkot007


 
Регистрация: 15.01.2010
Сообщений: 254


Можно попросить модифицировать LISP из http://forum.dwg.ru/showpost.php?p=564014&postcount=828 еще и "под" D-text и блоки (выравнивание по базовой точке)?

Помогите, пожалуйста, со следующими проблемами
1. Перенос объекта (блок, текст, отрезок, и пр. 2D-объекты) с базовой точкой в нужную точку на чертеже?
2. Разбить M-TEXT в D-TEXT с сохранением, если возможно, выравниваний M-TEXT'а
3. Преобразование полилинии в отрезки (может, плохо искал по форуму, но не нашел; с преобразованием отрезков в полилинии видел темы)
4. Переделать lisp из G-tools
Код:
[Выделить все]
;;;------------------------------------>JOIN1<-------------------------------------;;;
;;;                Команда объединения двух отрезков, дуг или текста               ;;;
;;;                            JOIN1.lsp Version 1.2                              ;;;
;;;                          Автор: Протасов Георгий                               ;;;
;;;Программа объединяет два отрезка или дуги, соединяя их наиболее удаленные точки,;;;
;;;замыкает дуги, объединяет текст                                                 ;;;
;;;--------------------------------------------------------------------------------;;;

(DEFUN JOIN1 ( / ed1 ed2
      cmdecho-save error-save
      REMDXFCODE ANGDISTANCE CLOSEELLIPSE CLOSEARC JOINLINES JOINELLIPSES JOINARCHES)
   (SETQ error-save *error*
      cmdecho-save (GETVAR "CMDECHO")
      );SETQ
 
   (DEFUN *error* (msg)
      (IF  error-save (SETQ *error* error-save))
      (IF msg (PRINC "\nВыполнение функции прервано "))
      ;; Восстановление значений системных переменных
      (SETVAR "CMDECHO" cmdecho-save)
      (IF ed1 (REDRAW (CDR (ASSOC -1 ed1)) 4))
      (PRINC)
      );DEFUN

   ;; Функция удаления всех вхождений DXF кода из описания примитива
   (DEFUN REMDXFCODE (code l)
      (COND
         ((NULL l) nil)
         ((= code (CAAR l)) (REMDXFCODE code (CDR l)))
         ((EQUAL n (CAR l)) (REMDXFCODE code (CDR l)))
         (t (CONS (CAR l) (REMDXFCODE code (CDR l))))
         );COND
      );DEFUN

   ;; Функция определения углового расстояния
   (DEFUN ANGDISTANCE (ang1 ang2)
      (COND
         ((> (ABS (- ang1 ang2)) pi) (- (* 2 pi) (ABS (- ang1 ang2))))
         (t (ABS (- ang1 ang2)))
         );COND
      );DEFUN

   ;; Функция замыкания эллипса
   (DEFUN CLOSEELLIPSE (ed)
      (SETQ
         ed (SUBST (CONS 41 0.0)(ASSOC 41 ed) ed)
         ed (SUBST (CONS 42 (* 2 pi))(ASSOC 42 ed) ed)
         );SETQ
      (ENTMOD  ed)
      );DEFUN

   ;; Функция замыкания дуги
   (DEFUN CLOSEARC (ed / ed1 code)
      (SETQ ed1 (SUBST (CONS 0 "CIRCLE")(ASSOC 0 ed) ed))
      (FOREACH code '(-1 5 50 51 100 102 330 360)
         (SETQ ed1 (REMDXFCODE code ed1))
         );FOREACH
      (ENTMAKE  ed1)
      (ENTDEL (CDR (ASSOC -1 ed)))
      );DEFUN

   ;;Функция обединения текста
   (DEFUN JOINTEXT (ed1 ed2 / txt1 txt2)
      (SETQ
         txt1 (CDR (ASSOC 1 ed1))
         txt2 (CDR (ASSOC 1 ed2))
         txt1 (IF (= " " (SUBSTR txt1 (STRLEN txt1)))
            (STRCAT txt1 txt2)
            (STRCAT txt1 " " txt2)
            );IF
         );SETQ
      (SETQ ed1 (SUBST (CONS 1 txt1)(ASSOC 1 ed1) ed1))
      (ENTMOD ed1)
      (ENTDEL (CDR (ASSOC -1 ed2)))
      );DEFUN

   ;;Функция обединения отрезков
   (DEFUN JOINLINES (ed1 ed2 / p1 p2 p3 p4 pnt1 pnt2)
      (SETQ
         p1 (CDR (ASSOC 10 ed1))
         p2 (CDR (ASSOC 11 ed1))
         p3 (CDR (ASSOC 10 ed2))
         p4 (CDR (ASSOC 11 ed2))
         );SETQ
      (IF (> (MAX (DISTANCE p1 p3) (DISTANCE p1 p4))
            (MAX (DISTANCE p2 p3) (DISTANCE p2 p4)))
         (SETQ pnt1 p1)
         (SETQ pnt1 p2)
         );IF
      (IF (> (DISTANCE pnt1 p3) (DISTANCE pnt1 p4))
         (SETQ pnt2 p3)
         (SETQ pnt2 p4)
         );IF
      (SETQ
         ed1 (SUBST (CONS 10 pnt1)(ASSOC 10 ed1) ed1)
         ed1 (SUBST (CONS 11 pnt2)(ASSOC 11 ed1) ed1)
         );SETQ
      (ENTMOD ed1)
      (ENTDEL (CDR (ASSOC -1 ed2)))
      );DEFUN

   ;;Функция обединения эллиптических дуг
   (DEFUN JOINELLIPSES (ed1 ed2 / a1 a2 a3 a4 ang1 ang2)
      (COND
         ((NOT (EQUAL (CDR (ASSOC 10 ed1)) (CDR (ASSOC 10 ed2))))
            (PRINC "\nНе совпадают центры дуг! ")
            (IF ed1 (REDRAW (CDR (ASSOC -1 ed1)) 4))
            )
         ((OR
               (NOT (EQUAL (CDR (ASSOC 11 ed1)) (CDR (ASSOC 11 ed2))))
               (NOT (EQUAL (CDR (ASSOC 40 ed1)) (CDR (ASSOC 40 ed2))))
               );OR
            (PRINC "\nНе совпадают полуоси эллипсов! ")
            (IF ed1 (REDRAW (CDR (ASSOC -1 ed1)) 4))
            )
         (t (SETQ
               a1 (CDR (ASSOC 41 ed1))
               a2 (CDR (ASSOC 42 ed1))
               a3 (CDR (ASSOC 41 ed2))
               a4 (CDR (ASSOC 42 ed2))
               );SETQ
            (IF (< (ANGDISTANCE a1 a4) (ANGDISTANCE a2 a3))
               (SETQ
                  ang1 a3
                  ang2 a2
                  );SETQ
               (SETQ
                  ang1 a1
                  ang2 a4
                  );SETQ
               );IF
            (SETQ
               ed1 (SUBST (CONS 41 ang1)(ASSOC 41 ed1) ed1)
               ed1 (SUBST (CONS 42 ang2)(ASSOC 42 ed1) ed1)
               );SETQ
            (ENTMOD ed1)
            (ENTDEL (CDR (ASSOC -1 ed2)))
            );t
         );COND
      );DEFUN

   ;;Функция обединения круговых дуг
   (DEFUN JOINARCHES (ed1 ed2 / a1 a2 a3 a4 ang1 ang2)
      (COND
         ((NOT (EQUAL (CDR (ASSOC 10 ed1)) (CDR (ASSOC 10 ed2))))
            (PRINC "\nНе совпадают центры дуг! ")
            (IF ed1 (REDRAW (CDR (ASSOC -1 ed1)) 4))
            )
         ((NOT (EQUAL (CDR (ASSOC 40 ed1)) (CDR (ASSOC 40 ed2))))
            (PRINC "\nНе совпадают радиусы дуг! ")
            (IF ed1 (REDRAW (CDR (ASSOC -1 ed1)) 4))
            )
         (t (SETQ
               a1 (CDR (ASSOC 50 ed1))
               a2 (CDR (ASSOC 51 ed1))
               a3 (CDR (ASSOC 50 ed2))
               a4 (CDR (ASSOC 51 ed2))
               );SETQ
            (IF (< (ANGDISTANCE a1 a4) (ANGDISTANCE a2 a3))
               (SETQ
                  ang1 a3
                  ang2 a2
                  );SETQ
               (SETQ
                  ang1 a1
                  ang2 a4
                  );SETQ
               );IF
            (SETQ
               ed1 (SUBST (CONS 50 ang1)(ASSOC 50 ed1) ed1)
               ed1 (SUBST (CONS 51 ang2)(ASSOC 51 ed1) ed1)
               );SETQ
            (ENTMOD ed1)
            (ENTDEL (CDR (ASSOC -1 ed2)))
            );t
         );COND
      );DEFUN
 
;;; Основной текст программы
   (SETVAR "CMDECHO" 0)
   (COMMAND "_.undo" "_begin")
   (SETQ ed1 (ENTGET (CAR (ENTSEL "\nВыберите 1-ю линию, дугу или текст"))))
   (WHILE (NOT (MEMBER (CDR (ASSOC 0 ed1)) '("LINE" "ELLIPSE" "ARC" "TEXT")))
      (PROGN
         (PRINC "\nНеверный тип примитива! ")
         (SETQ ed1 (ENTGET (CAR (ENTSEL "\nВыберите 1-ю линию, дугу или текст"))))
         );PROGN
      );IF
   (REDRAW (CDR (ASSOC -1 ed1)) 3)
   (COND
      ((EQ (CDR (ASSOC 0 ed1)) "ARC")
         (SETQ ed2 (ENTSEL "\nВыберите 2-ю дугу или <ENTER>, чтобы замкнуть"))
         (IF (NULL ed2) (CLOSEARC ed1)
            (PROGN
               (SETQ ed2 (ENTGET (CAR ed2)))
               (WHILE (NOT (EQ (CDR (ASSOC 0 ed2)) "ARC"))
                  (PROGN
                     (PRINC "\nНеверный тип примитива! ")
                     (SETQ ed2 (ENTGET (CAR (ENTSEL "\nВыберите 2-ю дугу"))))
                     );PROGN
                  );WHILE
               (JOINARCHES ed1 ed2)
               );PROGN
            );IF
         );ARC
      ((EQ (CDR (ASSOC 0 ed1)) "ELLIPSE")
         (SETQ ed2 (ENTSEL "\nВыберите 2-ю дугу или <ENTER>, чтобы замкнуть"))
         (IF (NULL ed2) (CLOSEELLIPSE ed1)
            (PROGN
               (SETQ ed2 (ENTGET (CAR ed2)))
               (WHILE (NOT (EQ (CDR (ASSOC 0 ed2)) "ELLIPSE"))
                  (PROGN
                     (PRINC "\nНеверный тип примитива! ")
                     (SETQ ed2 (ENTGET (CAR (ENTSEL "\nВыберите 2-ю дугу"))))
                     );PROGN
                  );WHILE
               (JOINELLIPSES ed1 ed2)
               );PROGN
            );IF
         );ELLIPSE
      ((EQ (CDR (ASSOC 0 ed1)) "LINE")
         (SETQ ed2 (ENTGET (CAR (ENTSEL "\nВыберите 2-ю линию"))))
         (WHILE (NOT (EQ (CDR (ASSOC 0 ed2)) "LINE"))
            (PROGN
               (PRINC "\nНеверный тип примитива! ")
               (SETQ ed2 (ENTGET (CAR (ENTSEL "\nВыберите 2-ю линию"))))
               );PROGN
            );WHILE
         (JOINLINES ed1 ed2)
         );LINE
      ((EQ (CDR (ASSOC 0 ed1)) "TEXT")
         (SETQ ed2 (ENTGET (CAR (ENTSEL "\nВыберите 2-й текст"))))
         (WHILE (NOT (EQ (CDR (ASSOC 0 ed2)) "TEXT"))
            (PROGN
               (PRINC "\nНеверный тип примитива! ")
               (SETQ ed2 (ENTGET (CAR (ENTSEL "\nВыберите 2-й текст"))))
               );PROGN
            );WHILE
         (JOINTEXT ed1 ed2)
         );TEXT
      );COND
   (REDRAW (CDR (ASSOC -1 ed1)) 4)
   (COMMAND "_.undo" "_end")
   (SETVAR "CMDECHO" cmdecho-save)
   (SETQ *error* error-save)
   (PRINC)
   );DEFUN

(IF (OR (NULL C:JOIN1)
      (NOT (LISTP C:JOIN1))
      );OR
   (DEFUN C:JOIN1 ()
      (JOIN1)
      );DEFUN
   );IF
(PRINC "\nJOIN1.lsp загружен... ")
(PRINC "\nДобавлена команда JOIN1...")
(PRINC)
под объединение отрезков по выделению (иногда несколько отрезков - больше 2-х - находятся один под одним, бывают разной длины). Хотелось бы "кучей" объединять выделенное в один отрезок
P.S. Для циклической работы команд нужно добавить в пункте меню * (*^c^c) ?
superkot007 вне форума  
 
Непрочитано 22.05.2010, 20:29
#866
grachev.p

конструктор мебели
 
Регистрация: 28.02.2010
г. Гатчина
Сообщений: 27


Цитата:
Сообщение от superkot007 Посмотреть сообщение
под объединение отрезков по выделению (иногда несколько отрезков - больше 2-х - находятся один под одним, бывают разной длины). Хотелось бы "кучей" объединять выделенное в один отрезок
А чем _overkill из ET для этого не подходит?
grachev.p вне форума  
 
Непрочитано 22.05.2010, 21:54
#867
superkot007


 
Регистрация: 15.01.2010
Сообщений: 254


Цитата:
Сообщение от grachev.p Посмотреть сообщение
А чем _overkill из ET для этого не подходит?
Подходит для ограниченного круга задач...

1. Отрезки должны полностью или частично накладываться друг на друга
2. Если отрезки под углом, отличающимся от 0 - никакого толку от _overkill
3. Меню ET "закрыто" (настройка админская такая на работе)
4. Мелочь, но... "лишнее" диалоговое окно, да и с "буржуйским" напряжно...

Хотя за совет спасибо Надеюсь, кто-нибудь поможет в моих проблемах
superkot007 вне форума  
 
Непрочитано 26.05.2010, 00:40
#868
grachev.p

конструктор мебели
 
Регистрация: 28.02.2010
г. Гатчина
Сообщений: 27


Подскажите пожалуйста.

Вот лисп, который делает подобие на нужный мне слой, величина которого зависит от масштаба аннотаций. Все бы ничего, не не пойму, как сделать так, чтобы при прерывании клавишей Esc или какой-либо другой командой слой все равно восстанавливался на тот, который был до выполнения этого лиспа?

Код:
[Выделить все]
(defun c:KKK (/ AnnScaleValue offset_value)
(setq     adoc         (vla-get-activedocument (vlax-get-acad-object))
    OldLayer    (getvar "CLAYER")
    AnnScaleValue    (getvar "CANNOSCALEVALUE")
    offset_value    (/ 3 AnnScaleValue)
    lst         (vl-sort
                  ((lambda (/ res name)
                   (vlax-for item (vla-get-layers adoc)
                       (if (not (wcmatch (setq name (vla-get-name item)) "*|*"))
                       (setq res (cons name res))
                       ) ;_ end of if
                   ) ;_ end of vlax-for
                   (reverse res)
                   ) ;_ end of lambda
                  )
                  '<
              ) ;_ end of vl-sort
) ;_ end of setq
(if (member "Кант" (reverse (member "Кант" lst)))
    (setvar "CLAYER" "Кант")
    (vl-cmdf "_layer" "_make" "Кант" "_color" 13 "" "_lw" 1.00 "" "") ;_ end of vl-cmdf
)
(command "_offset" "_L" "_current" offset_value)
(while (/= (logand (getvar "cmdactive") 31) 0)
    (command pause)
) ;_ end of while
(setvar "CLAYER" OldLayer)
)
grachev.p вне форума  
 
Непрочитано 26.05.2010, 10:18
#869
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


1. Попробуй все command заменить на vl-cmdf
2. Используй это: http://forum.dwg.ru/showthread.php?t=22945
Do$ вне форума  
 
Непрочитано 26.05.2010, 10:27
1 | #870
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992


Цитата:
Сообщение от grachev.p Посмотреть сообщение
не не пойму, как сделать так, чтобы при прерывании клавишей Esc
Основное выделил красным. Вдобавок не вижу смысла в том, чтобы перебирать и сортировать слои vl-* функциями для того, чтобы проверить наличие слоя. Кроме того опция _make команды _-layer создает слой и устанавливает его текущим. От конструкции (if (tblsearch "LAYER" "Кант") можно отказаться, оставив просто (command "_-Layer" ...)

Код:
[Выделить все]
(defun c:KKK (/ AnnScaleValue offset_value *error*)
  (defun *error* (msg)
    (setvar "CLAYER" OldLayer)
    (princ msg)
    (princ)
    )
(setq OldLayer    (getvar "CLAYER")
      AnnScaleValue    (getvar "CANNOSCALEVALUE")
      offset_value    (/ 3 AnnScaleValue)
) ;_ end of setq
(if (tblsearch "LAYER"  "Кант")
    (setvar "CLAYER" "Кант")
    (command "_-layer" "_make" "Кант" "_color" 13 "" "_lw" 1.00 "" "")
)
(command "_offset" "_L" "_current" offset_value)
(while (/= (logand (getvar "cmdactive") 31) 0)
    (command pause)
) ;_ end of while
(setvar "CLAYER" OldLayer)
)
Цитата:
Можно попросить модифицировать LISP из http://forum.dwg.ru/showpost.php?p=564014&postcount=828 еще и "под" D-text и блоки (выравнивание по базовой точке)?
Сделал. Пробуй
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 26.05.2010 в 10:40.
VVA вне форума  
 
Непрочитано 27.05.2010, 15:39
#871
grachev.p

конструктор мебели
 
Регистрация: 28.02.2010
г. Гатчина
Сообщений: 27




Цитата:
Сообщение от VVA Посмотреть сообщение
Цитата:
Сообщение от grachev.p Посмотреть сообщение
не не пойму, как сделать так, чтобы при прерывании клавишей Esc
Основное выделил красным. Вдобавок не вижу смысла в том, чтобы перебирать и сортировать слои vl-* функциями для того, чтобы проверить наличие слоя. Кроме того опция _make команды _-layer создает слой и устанавливает его текущим. От конструкции (if (tblsearch "LAYER" "Кант") можно отказаться, оставив просто (command "_-Layer" ...)

Спасибо. Более менее теперь понял работу функции *error*.


Цитата:
Сообщение от Do$ Посмотреть сообщение
1. Попробуй все command заменить на vl-cmdf
2. Используй это: http://forum.dwg.ru/showthread.php?t=22945
Тоже проясняется ситуация по этому отлову ошибок.
grachev.p вне форума  
 
Непрочитано 27.05.2010, 19:11
#872
superkot007


 
Регистрация: 15.01.2010
Сообщений: 254


Цитата:
Сообщение от VVA Посмотреть сообщение
Сделал. Пробуй
Спасибо, работает (никто и не сомневался) . А "преобразование" мульти-текст в однострочный можно попросить сделать?
superkot007 вне форума  
 
Непрочитано 27.05.2010, 19:38
#873
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992


Цитата:
Сообщение от superkot007 Посмотреть сообщение
А "преобразование" мульти-текст в однострочный можно попросить сделать?
1. LISP. Очистка форматирования многострочного текста
2. _explode или _Xplode на выбор
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 27.05.2010, 21:30
#874
superkot007


 
Регистрация: 15.01.2010
Сообщений: 254


Цитата:
Сообщение от VVA Посмотреть сообщение
1. Не догоняю, как запускать
2. _explode разбивает в полилинии, _Xplode не дает никакого эффекта...
Вообще пробовал на 2011-ом (хотя вряд ли от версии зависит)
superkot007 вне форума  
 
Непрочитано 27.05.2010, 21:56
#875
grachev.p

конструктор мебели
 
Регистрация: 28.02.2010
г. Гатчина
Сообщений: 27


Цитата:
Сообщение от superkot007 Посмотреть сообщение
2. _explode разбивает в полилинии, _Xplode не дает никакого эффекта...
Вообще пробовал на 2011-ом (хотя вряд ли от версии зависит)
_explode разбивает как надо М-Текст, то есть в однострочный. Честно говоря, хотел сразу тебе такой вариант предложить, но потом подумал, что ты уже его испробовал и тебе нужно что-то другое.

Автокад тоже 2011.

А _xplode тоже эффекта не дает.
grachev.p вне форума  
 
Непрочитано 27.05.2010, 23:09
#876
superkot007


 
Регистрация: 15.01.2010
Сообщений: 254


Цитата:
Сообщение от grachev.p Посмотреть сообщение
_explode разбивает как надо М-Текст, то есть в однострочный.
Действительно, ступил, наверное, вводил _exploded (больше никак не могу объяснить)
superkot007 вне форума  
 
Непрочитано 28.05.2010, 09:49
#877
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992


Да, _XPLODE почему-то не разбивает мтекст. Сама команда задумывалась как расширение EXPLODE. Читать про XPLODE
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 28.05.2010, 10:16
#878
alex8888

Инженер
 
Регистрация: 27.04.2009
Deutschland
Сообщений: 208


Очередная загвоздка

Подскажите, как в коде http://forum.dwg.ru/showpost.php?p=565984&postcount=836

путем vla- выбрать только объекты с определенного уровня в выделяемой области?
И насколько правильно командным методом вот так :
Цитата:
(setq NABOR (ssget "_X" '((8 . "0,SF-TEXT,LASER-TEXT"))))
?
alex8888 вне форума  
 
Непрочитано 29.05.2010, 10:53
#879
superkot007


 
Регистрация: 15.01.2010
Сообщений: 254


Напишите, пожалуйста, lisp для загрузки файла меню (естественно, все в одной папке) и путей к вспомогательным файлам (включая все подпапки), и lisp для их выгрузки
superkot007 вне форума  
 
Непрочитано 29.05.2010, 11:59
#880
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


(command "menuload" "menufile.mns")
(command "menuunload" "menugroupname")
gomer вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Научите лиспу на примере (или как kpblc, VVA и компания пытаются обучить чайника лиспу)

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Вставка в таблицу поля, соотвествующего площади примитива Profan Готовые программы 272 06.06.2021 23:12
Сейсмозащита и сейсмоизоляция существующих, построенных зд. IANationalInformAgentstvo Прочее. Архитектура и строительство 216 20.01.2015 16:51
Мониторы LCD CRT Разное 94 17.06.2008 10:51
ЮМОР 2006 =) Perezz!! Разное 1122 04.01.2007 00:46