Научите лиспу на примере (или как kpblc, VVA и компания пытаются обучить чайника лиспу) - Страница 130
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

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

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

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

Со школы не ладится у меня с программированием. Все предметы щелкал, а на экзамене по информатике (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.
Просмотров: 2048830
 
Непрочитано 09.04.2015, 15:16
#2581
Кулик Алексей aka kpblc
Moderator

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


Ну примерно так. Хотя я подозреваю, что структуру списка можно сделать более удобной и простой - но для этого надо смотреть, где и как он формируется.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.04.2015, 15:34
#2582
Vladimir_Sergeevich

рисую дороги, в перерывах курю Lisp
 
Регистрация: 20.04.2011
Пермь
Сообщений: 475
<phrase 1= Отправить сообщение для Vladimir_Sergeevich с помощью Skype™


Весь список у меня состоит из пар кода и точки. на стадии получения исходных данных задаются коды 1 2 - начало и конец трубы 0 10 20 30 - уровни размерных линий
далее идет анализ содержимого, и получаем ключ (тип трубы) для дальнейшей работы
и в границах cond для каждого случая прописано расширение списка в соответствии с нужными размерами и прочими потребностями. Собственно в #2575 и выложил расширение списка для последнего варианта. Дальше уже по этому списку ведутся построения размеров, а в одном из вариантов и полилиний дополнительных (те самые точки 101-116)
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...
Vladimir_Sergeevich вне форума  
 
Непрочитано 09.04.2015, 15:49
#2583
Кулик Алексей aka kpblc
Moderator

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


Offtop: Скажу честно: у меня сейчас мозг затрмучен своими задачками, подробно вникнуть не могу
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.04.2015, 15:31
#2584
Vladimir_Sergeevich

рисую дороги, в перерывах курю Lisp
 
Регистрация: 20.04.2011
Пермь
Сообщений: 475
<phrase 1= Отправить сообщение для Vladimir_Sergeevich с помощью Skype™


И еще хочу попросить критики на такое творчество:
Код:
[Выделить все]
 ;|функция отрисовки полилинии по координатам. генерация типа линий включена
!!Все настройки (слой/цвет/вес и пр) принимаются текущими!!
!!Рисует в активном пространстве!!
(sad-draw-lwpline pt_list blg_list nil t) 
аргументы:
  * список точек WCS
  * список кривизн list/nil
  * глобальная ширина real/nil
  * флаг замкнутости t/nil
возвращаемое значение:
  * ename созданного объекта
|;
(defun sad-draw-lwpline (pt_list blg_list widht fl_close / vertices_list)
	(foreach item pt_list 
		(progn (setq vertices_list (append vertices_list (list 
			(cons 10 item)
			(if blg_list (cons 42 (car blg_list))  (cons 42 0)) ;;blg 
			(cons 91 0) 
			)
			)
			blg_list (cdr blg_list)
			);;setq
		)
	);;foreach
  (entmakex (append 
    (list
		(cons 0 "LWPOLYLINE") 
		(cons 100 "AcDbEntity") 
		(cons 100 "AcDbPolyline")
		;;(cons 6 "ByBlock");linetype
		;;(cons 8 "0");layer
		(cons 62 0)
		(cons 90 (length pt_list)) ;;Number of vertices
		(if fl_close (cons 70 129) (cons 70 128)) 	;;flag
		(if widht (cons 43 widht) (cons 43 0)) 		;;Constant width 
    );;list 1
	vertices_list
	;;(list 210 0.0 0.0 1.0) ;;нормаль
	);;append
  ) ;;_ end of entmakex
);;end sad-draw-lwpline
Собственно, стоит ли расширить список аргументов для возможности задания слоя/цвета/веса/типа линии не по текущим настройкам?
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...
Vladimir_Sergeevich вне форума  
 
Непрочитано 10.04.2015, 15:41
#2585
Кулик Алексей aka kpblc
Moderator

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


Я бы задавал. Только с "перегрузкой": http://autolisp.ru/2009/10/21/lisp-overloading/
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.04.2015, 17:18
#2586
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Offtop:
Цитата:
Сообщение от Vladimir_Sergeevich Посмотреть сообщение
(sad-draw-lwpline...
А почему она "грустная"? Или печальная?
skkkk вне форума  
 
Непрочитано 10.04.2015, 18:23
#2587
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372


Вот как я рисую полилинию.


Код:
[Выделить все]
 (defun ru-pline-add (points is_closed width lineweight ltype / obj)
;| Пример:
(ru-pline-add (list (list 0 0) (list 10000 1000) (list 10000 20000) (list 0 20000)) nil  0 50 "HIDDEN")
|;
  (ru-error-catch
    (function
      (lambda ()
        (setq  obj (vla-addlightweightpolyline (ru-obj-active-space)
                (ru-conv-list-points-to-variant-array
                  (apply
                    'append
                    (mapcar 'ru-conv-3dpoint-to-2dpoint  points
                    ) ;_ end of mapcar
                  ) ;_ end of apply
                ) ;_ end of ru-conv-list-points-to-variant-array
              ) ;_ end of vla-addlightweightpolyline
        ) ;_ end of setq
        (cond
          ((and
             (vlax-read-enabled-p obj)
             (vlax-write-enabled-p obj)
           ) ;_ end of and
           (if is_closed
             (vla-put-closed obj :vlax-true)
           ) ;_ end of if
           (if width
             (vla-put-constantwidth obj width)
           ) ;_ end of if
           (ru-lw-set-for-obj obj lineweight)
           (if Ltype
             (ru-ltype-apply obj Ltype)
           ) ;_ end of if
           (vla-update obj)
           obj
          )
        ) ;_ end of cond
      ) ;_ end of lambda
    ) ;_ end of function
    (function (lambda (x)
                (princ (strcat "\nОШИБКА RU-PLINE-ADD " x))
                nil
              ) ;_ end of lambda
    ) ;_ end of function
  ) ;_ end of ru-error-catch                
) ;_ end of defun
Особенности:
1. Могут быть заданы Ширина, вес, тип линии. Слой всегда текущий, если нужен иной - устанавливается до вызова.
2. Все действия завернуты в ловушку ошибок. При сбое по каким-то причинам вернется NIL и сообщение
3. Список координат "нормализуется".

Назначение функций с именами ru-xxx понятно из их названий.
ShaggyDoc вне форума  
 
Непрочитано 10.04.2015, 19:47
#2588
Кулик Алексей aka kpblc
Moderator

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


Из-за того, что у меня иногда идет обновление или полное изменение функционала (при условии сохранения, я предпочитаю задавать один-два параметра. Ну, например, для создания той же LWPOLYLINE будет всего 2 параметра: первый - список оординат вершин, второй - список из необязательных параметров типа '(("lw" . <Вес>) ("lt" . <Тип>) ("color" . <ICA-цвет>) ...) Если во втором списке что-то пропущено, берем либо текущее значение, либо "по умолчанию" - зависит от назначения функции.
Но это дело вкуса Просто мне держать в голове параметров больше, чем 3 штуки, тяжеловато )))
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 10.04.2015, 23:14
#2589
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Цитата:
Сообщение от Vladimir_Sergeevich Посмотреть сообщение
И еще хочу попросить критики на такое творчество:
Код:
[Выделить все]
 ...(foreach item pt_list (progn (setq vertices_list (append vertices_list (list...
Ну если критики - уже не раз писал, и "разжевывал", что использование append в цикле - это не православно.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 13.04.2015, 07:22
#2590
Vladimir_Sergeevich

рисую дороги, в перерывах курю Lisp
 
Регистрация: 20.04.2011
Пермь
Сообщений: 475
<phrase 1= Отправить сообщение для Vladimir_Sergeevich с помощью Skype™


Offtop:
Цитата:
Сообщение от skkkk Посмотреть сообщение
А почему она "грустная"? Или печальная?
Исторически так сложилось, еще с первого курса пошло тут читай как транслитерацию и аббревиатуру

Дима_, по поводу append нашел только это: "для добавления одного элемента append, да еще и в цикле логарифмически увеличивает время выполнения".
Это все интересно, но... видел еще пяток таких же способов формирования списка и как то альтернативы не попадалось и у самого не придумывается. (Да и не думаю, что придется строить линии больше десятка точек... по крайней мере пока что были максимум по 4)
Дочитал там же замечание, что основной инструмент будет cons, но:
Код:
[Выделить все]
 (append '((0 0) (1 1) (2 2)) '((3 3) (4 4)) )
((0 0) (1 1) (2 2) (3 3) (4 4))

(cons '((0 0) (1 1) (2 2)) '((3 3) (4 4))  )
(((0 0) (1 1) (2 2)) (3 3) (4 4)) ;;лишние скобочки остаются
Алексей, с перегрузкой - интересная идея, покурю на досуге.
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...

Последний раз редактировалось Vladimir_Sergeevich, 13.04.2015 в 07:34.
Vladimir_Sergeevich вне форума  
 
Непрочитано 13.04.2015, 19:59
#2591
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


В общем еще раз - список это не изменяемая стуктура. Функция cons не создает новый список а свзязывает "голову" с "хвостом" - то есть просто говорит - за данным элементом идет такой-то - в случае если "такой-то" это список - то мы можем пробежаться по данной цепочки от начала до конца, при том что в разных точках программы мы можем ссылаться на разные начала одного и того-же списка. В конец неизменяемого списка добавить ничего нельзя, функция append, создает новый список пересчитывая тем-же cons'ом свои аргументы. То есть на каждой итерации мы пересчитываем весь список заново, а если у нас программа чуть посложней и хранит ссылки на свои предыдущие шаги - то хранит она и соответственное количество одинаковых списков - да если и не хранит у Вас основное время не программа, а автоматический сборщик мусора работает.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 14.04.2015, 08:03
#2592
Vladimir_Sergeevich

рисую дороги, в перерывах курю Lisp
 
Регистрация: 20.04.2011
Пермь
Сообщений: 475
<phrase 1= Отправить сообщение для Vladimir_Sergeevich с помощью Skype™


Переработал функцию:
Код:
[Выделить все]
 ;|функция отрисовки полилинии по координатам. генерация типа линий включена
!!Рисует в активном пространстве!!
(sad-draw-lwpline pt_list blg_list (("lweignt" 30) ("widht" 0) ("color" -3) ("ltype" "ByBlock") ("layer" "0") ("closed" t)) ) 
аргументы:
  * список точек WCS
  * список кривизн list/nil
  * список опций (("lweignt" 30) ("widht" 0) ("color" -3) ("ltype" "ByBlock") ("layer" "0") ("closed" t))                 
 возвращаемое значение:
  * ename созданного объекта
|;
(defun sad-draw-lwpline (pt_list blg_list opt_list / obj_lst)
(setq obj_lst nil
	blg_list (reverse blg_list))
(foreach item (reverse pt_list) 
	(setq 
		obj_lst (cons (cons 91 0) obj_lst)
		obj_lst (cons (if blg_list (cons 42 (car blg_list)) (cons 42 0)) obj_lst) ;;blg
		obj_lst (cons (cons 10 item) obj_lst) 
		blg_list (cdr blg_list)
		);;setq
	);;foreach
(foreach item
    (list
		(if (cadr (assoc "widht" opt_list)) (cons 43 (cadr (assoc "widht" opt_list))) (cons 43 0)) 		;;Constant width ++
		(if (cadr (assoc "closed" opt_list)) (cons 70 129) (cons 70 128)) 	;;flag ++
		(cons 90 (length pt_list)) ;;Number of vertices
		(if (cadr (assoc "lweignt" opt_list)) (cons 370 (cadr (assoc "lweignt" opt_list))) ) ;lweignt
		(if (cadr (assoc "color" opt_list)) (cons 62 (cadr (assoc "color" opt_list))) ) ;color
		(if (cadr (assoc "ltype" opt_list)) (cons 6 (cadr (assoc "ltype" opt_list))) ) ;linetype
		(if (cadr (assoc "layer" opt_list)) (cons 8 (cadr (assoc "layer" opt_list))) ) ;layer
		(cons 100 "AcDbPolyline")
		(cons 100 "AcDbEntity") 
		(cons 0 "LWPOLYLINE") 
    );;list
	(setq obj_lst (cons item obj_lst))
	);;foreach
(entmakex  (vl-remove nil obj_lst)) ;;_ end of entmakex
);;end sad-draw-lwpline
Дима_, так лучше будет?
Алексей, прикрутил список необязательных параметров. Что то мне понравилась эта идея, переписал все три своих функции рисования благо они только в одном коде пользовались и то только одна...
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...

Последний раз редактировалось Vladimir_Sergeevich, 14.04.2015 в 15:27.
Vladimir_Sergeevich вне форума  
 
Непрочитано 14.04.2015, 23:03
#2593
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Цитата:
Сообщение от Vladimir_Sergeevich Посмотреть сообщение
Дима_, так лучше будет?
Я пишу несколько в другом стиле - сами судите - лучше Вам такая версия или нет - Вам пользоваться.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 14.04.2015, 23:11
#2594
gomer

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


Цитата:
Сообщение от Vladimir_Sergeevich Посмотреть сообщение
так лучше будет?
не слушайте никого, как вам удобнее, так и пишите
gomer вне форума  
 
Непрочитано 15.04.2015, 06:50
#2595
Vladimir_Sergeevich

рисую дороги, в перерывах курю Lisp
 
Регистрация: 20.04.2011
Пермь
Сообщений: 475
<phrase 1= Отправить сообщение для Vladimir_Sergeevich с помощью Skype™


Дима_, я о том спрашивал, что исключил append из кода совсем. У меня нет таких глубоких знаний, как у Вас, о внутренностях и механике Лиспа и к советам стараюсь прислушиваться.
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...
Vladimir_Sergeevich вне форума  
 
Непрочитано 17.04.2015, 12:00
#2596
Vladimir_Sergeevich

рисую дороги, в перерывах курю Lisp
 
Регистрация: 20.04.2011
Пермь
Сообщений: 475
<phrase 1= Отправить сообщение для Vladimir_Sergeevich с помощью Skype™


Есть вопрос по поводу (sssetfirst nil ss), а именно о подсветке примитивов внешних ссылок/блоков.
Собственно вершинки то показывает, но хочется немного другого.
Например, выполняя _trim, при указании примитива внешней ссылки, примитив подсвечивается (становится пунктирным), как сделать так же программно?
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...
Vladimir_Sergeevich вне форума  
 
Непрочитано 17.04.2015, 15:20
#2597
MrBrown

ПенсионЭр
 
Регистрация: 26.06.2009
Сообщений: 361


Здравствуйте!
Создаю макрос простановки направлений и длин фрагментов полилиний.

Пока сваял вот такое (не без помощи VVA - http://forum.dwg.ru/showthread.php?t=121171 :
Код:
[Выделить все]
 (defun C:DATAR ()

(vl-load-com)
	
  (setq |CMDECHO| (getvar "cmdecho"))
  (setvar "cmdecho" 0)
  (setvar "osmode" 512)	
	
	(setq pl (entsel "\nВыберите фрагмент полилинии/отрезок: "))
	(setq point (cadr pl)
	      pl (vlax-ename->vla-object(car pl))
	      )
	;;;В point - точка выбора полилинии
	;;;Находим ближайшую точку полилинии
	(setq point (vlax-curve-getClosestPointTo pl point))
	;;;Узнаем параметр полилинии в точке
	;;;Параметр целая часть - номер вершины, начиная с 0
	(setq param (vlax-curve-getParamAtPoint pl point))
	(setq vx1 (vlax-curve-getPointAtParam pl (fix param))) ;_предыдущая вершина
	(setq vx2 (vlax-curve-getPointAtParam pl (1+ (fix param)))) ;_следующая вершина

	(setq ang (angtos (- (/ pi 2) (angle vx1 vx2)) 1 4))
	; Последние две цифры - это представление угла и кол-во знаков после запятой.
		; Представление: 
			; 0 - градусы
			; 1 - градусы, минуты, секунды
			; 2 - грады
			; 3 - радианы
			; 4 - геодезическое представление (с указанием сторон света)

	(setq len (rtos (distance vx1 vx2) 2 3))	
	
	
	

  (setq PT1 (getpoint "Укажите точку вставки середины текста: "))
  (setq PT2 (getpoint pt1 "\nУкажите направление текста: "))
;;;Text data
  (setq TAG (strcat ang "\n(" len " м)"))
  (setq ang (angle PT1 PT2))
  ;;;TEXT TO PRINT ON SCREEN
  (entmake (list
	     (cons 0 "MTEXT")
	     (cons 100 "AcDbEntity")
	     (cons 100 "AcDbMText")
	     (cons 7 "Standart")
	     (cons 8 "Направление-расстояние")
	     (cons 71 5)
	     (cons 72 5) ;выравнивание текста (5 - середина)
	     (cons 73 1)
	     (cons 10 PT1)
	     (cons 11 (list 1.0 0.0 0.0))
	     (cons 50 ANG)
	     (cons 41 19.35)
	     (cons 40 (* 0.1 (strlen TAG)))
	     (cons 44 1.0)
	     (cons 1 TAG)
	   )
  )
  (setvar "osmode" 0)
  (setvar "cmdecho" 1)
  (redraw)
  (princ)
  )
Прошу, ответьте на вопросы и дайте подсказки:
1. макрос работает и без объявления переменных. Улучшится ли работа макроса, если их (переменные) объявить в строке "defun ()"?
2. Стоит ли выключать в начале и включать в конце привязки?
3. В М-тексте градусы обозначаются буквой "d". Как сделать замену на значок градуса (верхний кружок)?
4. В функции entmake создания М-текста непонятны строки с dxf-кодом 100. Ну, вторая строчка прямо указывает на М-текст. А первая?Что она означает? И, если это разные понятия, то почему обозначены одним dxf-кодом?
5. Что выполняет строчка (cons 41 19.35)?
6. Как дополнить макрос, чтобы он, кроме полилиний, работал и применительно к отрезкам?
7. Почему-то разные М-тексты получаются разной высоты. У одного фрагмента полилинии, например, высота букв 2.0, у другого 2.2, у третьего - 1.8. Как добиться однообразия?
8. Укажите на явные "ляпы" и потенциальные трудности, чтобы знать, в каком направлении "копать" дальше в освоении AutoLISP.
Спасибо.
p.s. вдогонку: можно ли что-то добавить, чтобы при указании фрагмента полилинии, он подсвечивался?

Последний раз редактировалось MrBrown, 17.04.2015 в 16:01.
MrBrown вне форума  
 
Непрочитано 17.04.2015, 15:34
#2598
gomer

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


-1.да
-2.нет
-3.%%d
-4.разные
-5.Reference rectangle width
-6.никак, параметр для линий и полилиний - разные понятия
gomer вне форума  
 
Непрочитано 17.04.2015, 15:43
#2599
MrBrown

ПенсионЭр
 
Регистрация: 26.06.2009
Сообщений: 361


gomer,
3. Это сочетание я знаю и часто пользуюсь им в автокаде. Но, как "прикрутить" его в макросе к этой строчке:
Код:
[Выделить все]
 (setq ang (angtos (- (/ pi 2) (angle vx1 vx2)) 1 4))
или в другом месте?
5. Это понятие я нашел и перевел. Но не увидел разницы работы макроса при изменении значения (cons 41 ...). Поэтому и спросил.
6. Значит, для линий - отдельный макрос? Или же какая-то отдельная VL- функция, которую можно "прикрутить" к уже существующему макросу?
________________________
через 15 минут: догадываюсь, что по пункту третьему можно сделать функцию замены "d" на значок градуса. И потом, при формировании м-текста её как-то использовать.
Или есть способ проще?

Последний раз редактировалось MrBrown, 17.04.2015 в 15:53.
MrBrown вне форума  
 
Непрочитано 17.04.2015, 16:12
#2600
gomer

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


Цитата:
Сообщение от MrBrown Посмотреть сообщение
как "прикрутить" его в макросе к этой строчке:
(strcat (rtos (dtr (- (/ pi 2) (angle vx1 vx2)))) "%%d")
Цитата:
Сообщение от MrBrown Посмотреть сообщение
Значит, для линий - отдельный макрос?
не обязательно отдельный, но что такое ветвление, надеюсь не нужно рассказывать.
Цитата:
Сообщение от MrBrown Посмотреть сообщение
Или же какая-то отдельная VL- функция, которую можно "прикрутить" к уже существующему макросу?
бесполезно искать "волшебные" функции, священный грааль в автолиспе отсутствует
зы неужели так трудно догадаться, что для отрезков "соседние точки" - это начальная и конечная точка отрезка, которые находятся элементарно по кодам 10 и 11???
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