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

Вернуться   Форум 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.
Просмотров: 1972599
 
Непрочитано 12.10.2011, 14:46
#1661
Pavel_GP

Инженер-гидрограф
 
Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
(command "_.line" "_none" '(67 27 10) "_none" '(86 30 0) "_none" '(67 27 50) "_none" '(86 30 0))
этот код для линии в сети прямоугольных координат.

Я хочу создать линии по географическим координатам - использую команду _'LL

При создании линии по команде _'LL - выдается сообщение введите значение широты (с пробелами). Когда я использую твой код , то вместо широты вводится _none, что следует по прядку за командой _'LL.

(command "_.line" "_'LL" "_none" '(67 27 10) "_none" '(86 30 0) "_none" '(67 27 50) "_none" '(86 30 0))
Pavel_GP вне форума  
 
Непрочитано 12.10.2011, 15:24
1 | #1662
Кулик Алексей aka kpblc
Moderator

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


Ну, я с Civil не работаю.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.10.2011, 17:44
#1663
AlexSheep


 
Регистрация: 08.09.2010
Москва
Сообщений: 28


а если так попробовать?
Код:
[Выделить все]
 (command "_.line" "_'LL" '(67 27 10) '(86 30 0) '(67 27 50) '(86 30 0))
или так:
Код:
[Выделить все]
 (command "_.line" "_'LL" "67 27 10" "86 30 0" "67 27 50" "86 30 0")
А вообще то странно, что "общеавтокадовская" функция Line имеет в Civil'е какую-то непонятную опцию "_'LL"
AlexSheep вне форума  
 
Непрочитано 13.10.2011, 08:27
#1664
Pavel_GP

Инженер-гидрограф
 
Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170


Цитата:
Сообщение от AlexSheep Посмотреть сообщение
а если так попробовать?
Код:
[Выделить все]
 (command "_.line" "_'LL" '(67 27 10) '(86 30 0) '(67 27 50) '(86 30 0))
или так:
Код:
[Выделить все]
 (command "_.line" "_'LL" "67 27 10" "86 30 0" "67 27 50" "86 30 0")
А вообще то странно, что "общеавтокадовская" функция Line имеет в Civil'е какую-то непонятную опцию "_'LL"
1. Первый код не работает
2. Второй код я сам его писал (см. выше) - он отрабатывает ток первую точку, на второй стоп...

Функция _'LL отдельно ее использовать нельзя, она применяется с вызовом основной команды. Основная задача построение примитивов по географическим координатам (Ввод вместо прямоугольных координат (X,Y), - широту и долготу)
Pavel_GP вне форума  
 
Непрочитано 13.10.2011, 08:36
#1665
Кулик Алексей aka kpblc
Moderator

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


Хорошо, почему "стоп"? Что запрашивает Civil? Какие действия выполняются, если построения происходят "вручную"?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 13.10.2011, 08:56
#1666
Pavel_GP

Инженер-гидрограф
 
Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Хорошо, почему "стоп"? Что запрашивает Civil? Какие действия выполняются, если построения происходят "вручную"?
1. Выписка из командной строки ("почему стоп? Что запрашивает Civil"):
Вставка из командной строки:
Команда: SETKA_GK
_.line Первая точка:
Текущая единица изменения широты/долготы: градусы; ввод: ГГ° ММ' СС.СС" (с
пробелами)
>>Введите широту <С067° 00' 00.00">: 67 27 10
>>Введите долготу <В027° 00' 00.00">: 86 30 00
Возобновляется команда SETKA_GK.
Первая точка: 67 27 50
Неверная точка.
; ошибка: Функция отменена
Первая точка:
(478597.0 7.48494e+006 0.0)
Следующая точка или [оТменить]:
Текущая единица изменения широты/долготы: градусы; ввод: ГГ° ММ' СС.СС" (с
пробелами)
>>Введите широту <С067° 27' 10.00">:

Вторую точку просит ввести самостоятельно, а не по коду.

2. Построение линии без кода - самостоятельно::
Команда: _LINE
Первая точка: _'LL
Текущая единица изменения широты/долготы: градусы; ввод: ГГ° ММ' СС.СС" (с
пробелами)
>>Введите широту <С067° 27' 10.00">: 67 27 10
>>Введите долготу <В086° 30' 00.00">: 86 30 00
Возобновляется команда ОТРЕЗОК.
Первая точка:
(478597.0 7.48494e+006 0.0)
Следующая точка или [оТменить]:
Текущая единица изменения широты/долготы: градусы; ввод: ГГ° ММ' СС.СС" (с
пробелами)
>>Введите широту <С067° 27' 10.00">: 67 27 52
>>Введите долготу <В086° 30' 00.00">: 86 30 00
Возобновляется команда ОТРЕЗОК.
Следующая точка или [оТменить]:
(478607.0 7.48624e+006 0.0)
Следующая точка или [оТменить]:

И продолжается дальше цикл соединения линии (если нужно дальше строить линии)
Pavel_GP вне форума  
 
Непрочитано 13.10.2011, 09:37
#1667
Кулик Алексей aka kpblc
Moderator

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


В ответ на запрос
Цитата:
Сообщение от Pavel_GP Посмотреть сообщение
Следующая точка или [оТменить]:
что нажимаешь? То же самое и имитируй в коде
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 13.10.2011, 10:59
#1668
Pavel_GP

Инженер-гидрограф
 
Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
В ответ на запрос что нажимаешь? То же самое и имитируй в коде
Код:
[Выделить все]
 1    (defun C:setka_gk ()
2    (command "_.line" "_'LL")
3    (command "67 27 10")
4    (command "86 30 00")
5    (command "67 27 50")
6    (command "86 30 00")
7    )
Так в коде и прописано следущее 67 27 50 (широта), а команда прописывает:
Команда: SETKA_GK
_.line Первая точка:
Текущая единица изменения широты/долготы: градусы; ввод: ГГ° ММ' СС.СС" (с
пробелами)
>>Введите широту <С067° 00' 00.00">: 67 27 10
>>Введите долготу <В027° 00' 00.00">: 86 30 00
Возобновляется команда SETKA_GK.
Первая точка: 67 27 50
Неверная точка.
; ошибка: Функция отменена

эти 3 строки он не должен писать
Первая точка:
(478597.0 7.48494e+006 0.0)
Следующая точка или [оТменить]:
Текущая единица изменения широты/долготы: градусы; ввод: ГГ° ММ' СС.СС" (с
пробелами)
>>Введите широту <С067° 27' 10.00">: а должно сюда прописывать 67 27 50

Показываю как я строю линию самостоятельно при вводе в командную строку:
_.Line "Enter"
_'LL "Enter"
67 27 10 "Enter"
86 30 00 "Enter"
67 27 50 "Enter"
86 30 00 "Enter"
Esc

Линия построена


Первая точка:
(478597.0 7.48494e+006 0.0)
Вот эти цифры - это программа переводит из географических в прямоугольные координаты. Потомучто Автокад - это прямоугольная система.

Есть конечно еще вариант но он долгий:
Забивать в код функцию перевода из географических в прямоугольные - не применяя функцию _'LL
Но мне все таки охота чтоб вопрос решился через функции заложенные в Автокаде, а именно в Civil"е"

Последний раз редактировалось Pavel_GP, 13.10.2011 в 11:22. Причина: дополнил
Pavel_GP вне форума  
 
Непрочитано 13.10.2011, 19:03
#1669
AlexSheep


 
Регистрация: 08.09.2010
Москва
Сообщений: 28


Цитата:
Сообщение от Pavel_GP Посмотреть сообщение
Возобновляется команда SETKA_GK.
Первая точка: 67 27 50
Неверная точка.
; ошибка: Функция отменена
эти 3 строки он не должен писать
Я бы даже сказал что он не должен писать 4 строки, потому как команда SETKA_GK, по идее, возобновляться не должна..... все-таки странная эта опция "_'LL".... проверить негде, Civil'а нет
AlexSheep вне форума  
 
Непрочитано 13.10.2011, 20:56
#1670
Li6-D


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


Цитата:
Сообщение от Pavel_GP Посмотреть сообщение
Есть конечно еще вариант но он долгий:
Забивать в код функцию перевода из географических в прямоугольные - не применяя функцию _'LL
Но мне все таки охота чтоб вопрос решился через функции заложенные в Автокаде, а именно в Civil"е"
Попробуй поставить двойные кавычки "" в конце (command "_.Line" "_.'LL" "_None" "67 27 10" "_None" "86 30 00" ... ''"), чтобы команда завершилась, а не запросила очередную точку. Для рисования замкнутого контура из отрезков в конце можно поставить "_Close".

Последний раз редактировалось Li6-D, 14.10.2011 в 20:49.
Li6-D вне форума  
 
Непрочитано 14.10.2011, 15:25
#1671
Pavel_GP

Инженер-гидрограф
 
Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170


Код:
[Выделить все]
 (defun C:FL_to_XY ()
  (setq fs_grad (getreal "\nВведите градусы южной широты: "))
  (setq fs_min (getreal "\nВведите минуты южной широты: "))
  (setq shir_s (+ (/ fs_min 60) fs_grad))
  (setq shir_sr (* pi (/ shir_s 180.0)))
  (setq lw_grad (getreal "\nВведите градусы западной долготы: "))
  (setq lw_min (getreal "\nВведите минуты западной долготы: "))
  (setq dolg_w (+ (/ lw_min 60) lw_grad))
  (setq    nz (fix (/ (+ 6 dolg_w) 6))
  )
  (setq    L (/ (- dolg_w (+ 3 (* 6 (- nz 1)))) 57.2957951)
  )
  (setq    A (* (expt L 2)
         (-    (+ (- 109500
              (* 574700 (expt (sin shir_sr) 2))
           )
           (* 863700 (expt (sin shir_sr) 4))
        )
        (* 398600 (expt (sin shir_sr) 6))
         )
      )
  )
  (setq    B (* (expt L 2)
         (-    (+ (- 278194
              (* 830174 (expt (sin shir_sr) 2))
           )
           (* 572434 (expt (sin shir_sr) 4))
        )
        (* 16010 (expt (sin shir_sr) 6))
         )
      )
  )
  (setq    C (* (expt L 2)
         (-    (+ (- 672483.4
              (* 811219.9 (expt (sin shir_sr) 2))
           )
           (* 5420 (expt (sin shir_sr) 4))
        )
        (* 10.6 (expt (sin shir_sr) 6))
         )
      )
  )
  (setq    D (* (expt L 2)
         (+    (+ (+ 1594561.25
              (* 5336.535 (expt (sin shir_sr) 2))
           )
           (* 26.79 (expt (sin shir_sr) 4))
        )
        (* 0.149 (expt (sin shir_sr) 6))
         )
      )
  )
  (setq    E (+ (+ 16002.89 (* 66.9607 (expt (sin shir_sr) 2)))
         (* 0.3515 (expt (sin shir_sr) 4))
      )
  )
  (setq    F (* (sin (* shir_sr 2))
         (+ (+ (+ (- E D) C) B) A)
      )
  )
  (setq    Y (- (* 6367558.4968 shir_sr) F)
  )

  (setq    G (* (expt L 2)
         (-    (+ (- 79690
              (* 866190 (expt (sin shir_sr) 2))
           )
           (* 1730360 (expt (sin shir_sr) 4))
        )
        (* 945460 (expt (sin shir_sr) 6))
         )
      )
  )
  (setq    H (* (expt L 2)
         (-    (+ (- 270806
              (* 1523417 (expt (sin shir_sr) 2))
           )
           (* 1327645 (expt (sin shir_sr) 4))
        )
        (* 21701 (expt (sin shir_sr) 6))
         )
      )
  )
  (setq    J (* (expt L 2)
         (-    (+ (- 1070204.16
              (* 2136826.66 (expt (sin shir_sr) 2))
           )
           (* 17.98 (expt (sin shir_sr) 4))
        )
        (* 11.99 (expt (sin shir_sr) 6))
         )
      )
  )
  (setq    K (+ (+    (+ 6378245
           (* 21346.1415 (expt (sin shir_sr) 2))
        )
        (* 107.1590 (expt (sin shir_sr) 4))
         )
         (* 0.5977 (expt (sin shir_sr) 6))
      )
  )
  (setq    M (* (* L (cos shir_sr))
         (+ (+ (- K J) H) G)
      )
  )
  (setq    X (+ 500000 M)
  )
  (command "_.point" X Y)
  (command "")
)


Перевел формулу перехода их географических в прямоугольные в код

Необходимо построить "точку", опять что-то не строится - формула работает, а вот что-то не так ввожу команду при построении точки.
Посмотрите (точку нужно построить по данным X Y).
Вывод Y находится в 061 строке
X находится в 106 строке
Посмотрите плз в самой команде построение точки - я все правильно написал ( я ток учусь лиспу под свое ремесло - извините)

П.С. Модераторы прошу Вас создать отдельную тему Лисп - Civil и перенести туда все мои вопросы и тех кто отвечал на них в новую тему. Спс.

Последний раз редактировалось Pavel_GP, 14.10.2011 в 15:41.
Pavel_GP вне форума  
 
Непрочитано 14.10.2011, 15:29
#1672
Лиспер


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


Это не лисп-код, а html вдобавок полно крякозябр вместо русского текста.
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 14.10.2011, 15:35
#1673
Pavel_GP

Инженер-гидрограф
 
Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170


Цитата:
Сообщение от Лиспер Посмотреть сообщение
Это не лисп-код, а html вдобавок полно крякозябр вместо русского текста.
Перейди со страницы на страницу (84 на 83 и обратно)- крякозябр изчезнет =)

Я просто сразу в Civil"е" писал.=), в это разделе сам код я не даю на рассмотрение - дело в другом - точка

Если нужно код закину сюда в txt
Pavel_GP вне форума  
 
Непрочитано 14.10.2011, 15:42
1 | #1674
Лиспер


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


Сравни:
Код:
[Выделить все]
_$ (setq fs_min 1)
(/ fs_min 60)
1
0
_$ (setq fs_min 1)
(/ fs_min 60.)
1
0.0166667
P.S. Привязку перед командой кто снимать будет?
P.P.S. Строку (command "_.point" ... можно запросто заменить на (entmakex (list '(0 . "POINT") (cons 10 (list x y))))
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Непрочитано 14.10.2011, 21:28
1 | #1675
Li6-D


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


Цитата:
Сообщение от Pavel_GP Посмотреть сообщение
Посмотрите плз в самой команде построение точки - я все правильно написал ( я ток учусь лиспу под свое ремесло - извините)
И еще, в 108-ой строке напиши так: (command "_.Point" (list X Y))
Cтрочку ниже можно убрать - при рисовании точки она необязательна.
Посмотри еще здесь
Li6-D вне форума  
 
Непрочитано 17.10.2011, 15:31
#1676
Pavel_GP

Инженер-гидрограф
 
Регистрация: 15.09.2011
г.г. Ленинград
Сообщений: 170


Цитата:
Сообщение от Лиспер Посмотреть сообщение
P.S. Привязку перед командой кто снимать будет?
P.P.S. Строку (command "_.point" ... можно запросто заменить на (entmakex (list '(0 . "POINT") (cons 10 (list x y))))
__________________
Цитата:
Сообщение от Li6-D Посмотреть сообщение
И еще, в 108-ой строке напиши так: (command "_.Point" (list X Y))
Cтрочку ниже можно убрать - при рисовании точки она необязательна.
Спс. Точка строится.

Пысы Будут еще вопросы (далеко не убегайте =))

преобразовал формулы в другой код более понятный для меня =)
Код:
[Выделить все]
 ;для WGS84
(defun C:FL_to_XY ()
  (setq fs_grad (getreal "\nВведите градусы южной широты: "))
  (setq fs_min (getreal "\nВведите минуты южной широты: "))
  (setq fs_sek (getreal "\nВведите секунды южной широты: "))
                    ;перевод широты в радианы
  (setq    shir_r (/ (* (+    (+ fs_grad (/ fs_min 60.))
            (/ fs_sek 3600.)
             )
             pi
          )
          180.
           )
  )
  (setq lw_grad (getreal "\nВведите градусы западной долготы: "))
  (setq lw_min (getreal "\nВведите минуты западной долготы: "))
  (setq lw_sek (getreal "\nВведите секунды западной долготы: "))
  (setq    dolg (+    (+ lw_grad (/ lw_min 60.)) ;перевод долготы в градусы
        (/ lw_sek 3600.)
         )
  )
  (setq dolg_r (/ (* dolg pi) 180.))    ;перевод долготы в радианы
  (setq    nz (fix (/ (+ 6. dolg) 6.))    ;номер зоны
  )
  (setq    L (/ (* (+ 3. (* 6. (- nz 1.))) pi) 180.) ;Осевой меридиан
  )
  (setq a 6378137.0)            ;большая полуось
  (setq f (/ 1. 298.25722356))        ;полярное сжатие
  (setq e2 (* f (- 2. f)))        ; 1-й эксцентриситет
  (setq e4 (expt e2 2.))
  (setq e6 (* e2 e4))
  (setq e_2 (/ e2 (- 1. e2)))        ;2-й эксцентриситет
  (setq sf2 (expt (sin shir_r) 2.))
  (setq cf2 (expt (cos shir_r) 2.))
  (setq tg (/ (sin shir_r) (cos shir_r)))
  (setq tg2 (/ sf2 cf2))
  (setq N (/ a (sqrt (- 1. (* e2 sf2)))))
  (setq c (* e_2 cf2))
  (setq A_1 (* (- dolg_r L) (cos shir_r)))
  (setq    M (* a
         (-    (+ (- (* (- (- (- 1.(/ e2 4.))
                   (/ (* 3. e4) 64.)
                )
                (/ (* 5. e6) 256.)
             )
             shir_r
              )
              (* (+ (+ (/ (* 3. e2) 8.)
                   (/ (* 3. e4) 32.)
                )
                (/ (* 45. e6) 1024.)
             )
             (sin
               (* 2. shir_r)
             )
              )
           )
           (* (+ (/ (* 15. e4) 256.)
             (/ (* 45. e6) 1024.)
              )
              (sin
            (* 4. shir_r)
              )
           )
        )
        (* (/ (* 35. e6) 3072.) (sin (* 6. shir_r)))
         )
      )
  )
  (setq    Y_1 (* N
           (+ (+ A_1
             (*    (+ (- 1. tg2) c)
            (/ (expt A_1 3.) 6.)
             )
          )
          (* (-    (+ (+ (- 5. (* 18. tg2))
                  (expt tg2 2.)
               )
               (* 72. c)
            )
            (* 58. e_2)
             )
             (/ (expt A_1 5.) 120.)
          )
           )
        )
  )
  (setq    X (+ M
         (*    (* N tg)
        (+ (+ (/ (expt A_1 2.) 2.)
              (* (+ (+ (- 5. tg2)
                   (* 9. c)
                )
                (* 4. (expt c 2.))
             )
             (/ (expt A_1 4.) 24.)
              )
           )
           (* (- (+ (+ (- 61. (* 58. tg2))
                   (expt tg2 2.)
                )
                (* 600. c)
             )
             (* 330. e_2)
              )
              (/ (expt A_1 6.) 720.)
           )
        )
         )
      )
  )
  (setq    Y (+ 500000.0 Y_1)
  )
  (command "_.Point" "_none" (list Y X))
)


Вопрос1. Как построить несколько точек, не используя постоянно многоэтажную формулу для каждой точки?
Вопрос2. Как выделить все объекты с помощью команды в лиспе?

Спс.

Последний раз редактировалось Pavel_GP, 18.10.2011 в 11:17. Причина: добавил вопросы
Pavel_GP вне форума  
 
Непрочитано 23.10.2011, 15:09
#1677
AMATOP


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


Извините, за тупость обильно приправленную, увы, ленью, но ... как создать пустой список?
Т.е. переменная, типа список, есть, но внутри ничего нет! Другими словами, это как перед входом в супермаркет - нужно взять тележку, но пустую. А в LISP-е у меня получаеться только тогда, когда в "тележку" какой-нибудь "мусор" закинешь!
AMATOP вне форума  
 
Непрочитано 23.10.2011, 15:17
#1678
Oliver_88

"ценный кадр"
 
Регистрация: 02.12.2010
Сообщений: 115
<phrase 1=


Вот это явно подзадача. Хотелось бы услышать саму задачу.
Я по глупости так делал когда-то
Код:
[Выделить все]
 (setq lst '())

Последний раз редактировалось Oliver_88, 23.10.2011 в 15:19. Причина: Добавил
Oliver_88 вне форума  
 
Непрочитано 23.10.2011, 15:25
#1679
AMATOP


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


Спасибо за оперативность, все сраслось!
Вот:
Код:
[Выделить все]
 (setq spisok '())
(setq nabor (ssget))
(setq kolvo (sslength nabor))
(while (<= 0 kolvo)
  (setq kolvo(1- kolvo))
(vl-load-com)
(setq object (ssname nabor kolvo))
(setq spisok (append (list (vlax-get-property (vlax-ename->vla-object object) 'Angle)) spisok)))
О! Так намного изящней! Еще раз громаднейшее спасибо!
Это я про код в следующем посте от Oliver_88

Последний раз редактировалось AMATOP, 23.10.2011 в 16:05.
AMATOP вне форума  
 
Непрочитано 23.10.2011, 15:38
#1680
Oliver_88

"ценный кадр"
 
Регистрация: 02.12.2010
Сообщений: 115
<phrase 1=


Код:
[Выделить все]
     (setq nabor (ssget))
    (setq kolvo (sslength nabor))
    (while (< 0 kolvo)
      (setq kolvo (1- kolvo))
      (vl-load-com)
      (setq object (ssname nabor kolvo))
      (setq spisok (cons (vlax-get-property (vlax-ename->vla-object object) 'Angle) spisok))
      )
Oliver_88 вне форума  
Ответ
Вернуться   Форум 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