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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Я начинаю заниматься программированием LISP (help)

Я начинаю заниматься программированием LISP (help)

Ответ
Поиск в этой теме
Непрочитано 19.02.2006, 20:00
Я начинаю заниматься программированием LISP (help)
mmax
 
Программист широкого профиля.
 
Челябинск
Регистрация: 08.09.2005
Сообщений: 722

Гопода, я начал этим заниматься совсем недавно, буквально в этом месяце. И у меня уже есть грандиозные планы например: чтобы автокад рисовал какие нибудь стандартные детали сам (болты, гайки шурупы итд)

И соответственно у меня начали появляться вопросы на которые г-н Полещук НН в своих произведениях не смог ответить в полном объеме, значит мне понадобится чья нибудь еще помощь.

У меня уже были вопросы которые я задал здесь и получил исчерпывающие ответы. Но если я на кждый вопрос буду создавать отдельный топик, то количество топиков будет = кол-ву вопросов, а вопросов миллион -- администраторы и модераторы данного ресурса наверное понимают о чем я. Да и такое кол-во ссылок не влезет мой..........

Вобщем я хотел бы все свои вопросы помещать в этот топик и надеюсь на поддержку знающих людей.

Всем заранее благодарен.
Просмотров: 78361
 
Непрочитано 21.06.2008, 22:19
#261
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Спасибо за ответ, пока еще не все понял (т.к. друга программиста рядом уже нету) но на нашем с ним следующем "занятии" обсудим, наверное опять спрашивать буду.
__________________
Блог
Red Nova вне форума  
 
Непрочитано 23.06.2008, 00:39
#262
Кулик Алексей aka kpblc
Moderator

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


Одно уточнение: для получения строки многострочного текста только группы 1 может оказаться недостаточно - см. DXF Reference
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.12.2008, 15:27
#263
acyxou


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


Привет всем. Изучаю Lisp потихоньку, но сейчас нужно срочно проделать одну штуку на изучение которой времени нет. Вобщем я написал небольшую прогу, которая меняет папки поиска принтеров, таблиц печати и шаблонов документов.... мне нужно сделать так чтоб прога сама активировалась без ввода команды на ее запуск. Вот собственно мой деревенский код:
Код:
[Выделить все]
(defun С:Paths (/
		      server     ; Путь до сервера "////"
		      path1      ; Путь к файлам принтеров и плоттеров
		      path2      ; Путь к PMP-файлам описаний принтеров
		      path3      ; Путь к файлам таблиц печати
		      path4      ; Путь доступа к файлам шаблонов чертежей
		      )
  (setq server "\\\\")
  (setq path1 (strcat server "Server\\proekts\\AutoCAD_Resources\\Plotters"))
  (setenv "PrinterConfigDir" path1) ; Задание нашего пути доступа к принтерам 
  (setq path2 (strcat server "Server\\proekts\\AutoCAD_Resources\\Plotters\\PMP Files"))
  (setenv "PrinterDescDir" path2) ; Задание нашего пути доступа к PMP-файлам описаний принтеров
  (setq path3 (strcat server "Server\\proekts\\AutoCAD_Resources\\Plott Styles"))
  (setenv "PrinterStyleSheetDir" path3) ; Задание нашего пути доступа к файлам таблиц печати
  (setq path4 (strcat server "Server\\proekts\\AutoCAD_Resources\\Templates"))
  (setenv "TemplatePath" path4) ; Задание нашего пути доступа к к файлам шаблонов чертежей
  (alert "Пути поиска к папкам заданы")
  (princ)
  )
Вобщем этот лисп будет запускать другая программулина, т.е. мне нужно сделать так чтоб он выполнял то, что он должен выполнять сразу же после выполнения команды Appload, т.е. не ждать пока пользователь введет Paths. Вопрос простой, но как это правильно сделать я еще не изучил.... Посоветуйте плиз!
acyxou вне форума  
 
Непрочитано 18.12.2008, 16:42
#264
Кулик Алексей aka kpblc
Moderator

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


В _appload забиваешь файл lsp с примерно таким содержанием:
Код:
[Выделить все]
(defun paths ()
  (setenv "PrinterConfigDir" "\\\\Server\\proekts\\AutoCAD_Resources\\Plotters")
  (setenv "PrinterDescDir" "\\\\Server\\proekts\\AutoCAD_Resources\\Plotters\\PMP Files")
  (setenv "PrinterStyleSheetDir" "\\\\Server\\proekts\\AutoCAD_Resources\\Plott Styles")
  (setenv "TemplatePath" "\\\\Server\\proekts\\AutoCAD_Resources\\Templates")
  ) ;_ end of defun

(defun c:paths ()
  (paths)
  (princ)
  ) ;_ end of defun

(paths)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.12.2008, 16:59
#265
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Раз тему подняли, напишу сюда.
Программно создаю Мтекст. Присваиваю переменной prim vla-указатель на этот Мтекст.
Далее заполняю свойства:
Код:
[Выделить все]
(vla-put-AttachmentPoint prim 7)	;выравнивание
(vla-put-BackgroundFill prim :vlax-false) ;фон
(vla-put-DrawingDirection prim 5)	;направление текста
(vla-put-Height prim 2.5)		;высота
(vla-put-Layer prim "M-08-текст")	;слой
(vla-put-LineSpacingStyle prim 1)	;стиль межстрочного интервала
(vla-put-Linetype prim "ByLayer")	;тип линии
(vla-put-LinetypeScale prim 1.0)	;масштаб типа линии
(vla-put-StyleName prim "M-Standard_0") ;текстовый стиль
Так вот вопрос: как это можно сделать более красиво?
Makswell вне форума  
 
Непрочитано 18.12.2008, 17:16
#266
Дима_

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


Создавая через dxf эту безобразие можно задать все сразу.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 18.12.2008, 18:00
#267
acyxou


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


Кулик Алексей aka kpblc спасибо огромное! То что нужно!
acyxou вне форума  
 
Непрочитано 18.12.2008, 19:22
#268
kuzmich1


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


Всем привет. У меня такой простенький вопрос. Нужно чтоб моя прога создавала размерный стиль с определенными параметрами. У меня есть файл с этим стилем, я набираю в командной строке (tblsearch "dimstyle" "имя") и он мне выдает список кодов. Дальше я его копирую и вставляю в entmake. В итоге получается следующее:
Цитата:
; создание размерного стиля "имя"
(defun c:nnn()
(entmake '((0 . "DIMSTYLE") (2 . "имя") (70 . 0) (3 . "") (4 . "") (5 . "") (6 . "") (7 . "") (40 . 10.0) (41 . 4.0) (42 . 0.5) (43 . 10.0) (44 . 0.5) (45 . 0.0) (46 . 0.0) (47 . 0.0) (48 . 0.0) (140 . 7.0) (141 . -4.0) (142 . 0.0) (143 . 0.0394) (144 . 1.0) (145 . 0.0) (146 . 1.0) (147 . 0.5) (71 . 0) (72 . 0) (73 . 0) (74 . 0) (75 . 0) (76 . 0) (77 . 1) (78 . 8) (170 . 0) (171 . 2) (172 . 1) (173 . 0) (174 . 0) (175 . 0) (176 . 256) (177 . 256) (178 . 7) (270 . 2) (271 . 0) (272 . 0) (273 . 2) (274 . 2) (340 . <Entity name: 7ef5edc0>) (275 . 0) (280 . 0) (281 . 0) (282 . 0) (283 . 1) (284 . 0) (285 . 0) (286 . 0) (287 . 3) (288 . 0)))
)
Запускаю и он выдает: error: extra cdrs in dotted pair on input.
Подскажите что делаю не так и как правильно, буду очень благодарен. Уже замучился
kuzmich1 вне форума  
 
Непрочитано 18.12.2008, 20:40
#269
Кулик Алексей aka kpblc
Moderator

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


340-ю группу надо менять. На форуме была тема по программному созданию размерных стилей - поищи.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.12.2008, 08:24
#270
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


И не только 340-ю...
В список надо, как минимум, ещё добавить:
Код:
[Выделить все]
(cons 100 "AcDbSymbolTableRecord")
(cons 100 "AcDbDimStyleTableRecord")
Добавлено:
kuzmich1, также посмотри, что возвращает:
Код:
[Выделить все]
(if (tblsearch "dimstyle" "имя")
  (entget (tblobjname "dimstyle" "имя"))
)
Makswell вне форума  
 
Непрочитано 19.12.2008, 08:36
#271
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


По поводу вопроса из поста #265.
Сказав "красиво", я имел ввиду следущее. Допустим, есть список из точечных пар (СВОЙСТВО . ЗНАЧЕНИЕ_СВОЙСТВА)
Код:
[Выделить все]
(list (cons 'AttachmentPoint 7)
      (cons 'BackgroundFill :vlax-false)
      (cons 'DrawingDirection 5)
      (cons 'Height 2.5)
      (cons 'Layer "M-08-текст")
      (cons 'LineSpacingStyle 1)
      (cons 'Linetype "ByLayer")
      (cons 'LinetypeScale 1.0)
      (cons 'StyleName "M-Standard_0")
)
В общем-то вопрос простой - именно азы лиспа. Как будет выглядеть конструкция с применением этого списка, а также функции vlax-put-property, которая меняла бы свойства МТекста?
Makswell вне форума  
 
Непрочитано 19.12.2008, 11:02
#272
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


Цитата:
Сообщение от Makswell Посмотреть сообщение
Как будет выглядеть конструкция с применением этого списка, а также функции vlax-put-property, которая меняла бы свойства МТекста?
Как-то так:
Код:
[Выделить все]
(defun demo (/ doc prim sps)
 (setq doc  (vla-get-activedocument (vlax-get-acad-object))
       sps  (vla-get-modelspace doc)
       prim (vla-addmtext sps (vlax-3d-point 0.0 0.0) 100 "Демо текст")
 )
 (foreach a (list (list 'AttachmentPoint 7)
                  (list 'BackgroundFill :vlax-false)
                  (list 'DrawingDirection 5)
                  (list 'Height 2.5)
                  (list 'Layer "M-08-текст")
                  (list 'LineSpacingStyle 1)
                  (list 'Linetype "ByLayer")
                  (list 'LinetypeScale 1.0)
                  (list 'StyleName "M-Standard_0")
            )
  (apply (function vlax-put-property) (cons prim a))
 )
 (princ)
)
Демка без проверок.
Alaspher вне форума  
 
Непрочитано 19.12.2008, 11:10
#273
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Alaspher, спасибо. То что нужно.
Makswell вне форума  
 
Непрочитано 19.12.2008, 11:38
#274
CB

Конструирование в области нефтеразведки
 
Регистрация: 10.02.2006
Гомель
Сообщений: 321


Если
Цитата:
есть список из точечных пар (СВОЙСТВО . ЗНАЧЕНИЕ_СВОЙСТВА)
то можно так
Код:
[Выделить все]
(mapcar
  '(lambda (x y)
     (vlax-put-property vla_obj x y)
   ) ;_ end of lambda
  (mapcar 'car lst)
  (mapcar 'cdr lst)
) ;_ end of mapcar
где lst список из #271
vla_obj - vla-объект
CB вне форума  
 
Непрочитано 19.12.2008, 11:52
#275
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


CB, да это тоже неплохо. Это я и имел ввиду, сказав "красиво"
Makswell вне форума  
 
Непрочитано 02.02.2009, 12:21 Помогите Ламеру(((((
#276
merlin777


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


Товарищи!!!
Начал пробывать тяжкие попытки работать с Lisp
и столкнулся с незнанием азов програмирования)
Ввожу команды четко по учебнику точно по учебнику
с содержанием
(comand "_.LINE" "0.0" "210.0")
(comand "210,297" "0,297")
(comand "_C")
после чего получаю ответ типа

; îøèáêà: no function definition: COMAND

Подскажите с чем это может быть связано
либо приведите пример правильного блока команд
Заранее спасибо
merlin777 вне форума  
 
Непрочитано 02.02.2009, 12:24
#277
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Точно по учебнику?
Нет функции comand, есть command
Makswell вне форума  
 
Непрочитано 02.02.2009, 12:27
#278
merlin777


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


Спасибо
А можете привести пример стандартной команды для изображения круга или прямоугольника
merlin777 вне форума  
 
Непрочитано 13.02.2009, 11:30 Написание программы Магический квадрат
#279
gve2005


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


Хочу в программе AutoLISP написать программку Магический квадрат.
Это программка каким-то образом угадывает английские буквы на основе чисел. Вот ссылка: http://www.ugbereg.ru/magic.html

Вопрос: Может у кого есть идеи по переносу данной программки на этот язык програмирования
gve2005 вне форума  
 
Непрочитано 13.02.2009, 11:44
#280
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


Цитата:
Сообщение от gve2005 Посмотреть сообщение
Хочу в программе AutoLISP написать программку Магический квадрат.
Это программка каким-то образом угадывает английские буквы на основе чисел. Вот ссылка: http://www.ugbereg.ru/magic.html

Вопрос: Может у кого есть идеи по переносу данной программки на этот язык програмирования
Это "программка" показывает символ, который одинаков у всех возможных результатов, т.е. 9, 18, 27, 36, 45, 54, 63, 72, 81. Поскольку так же забит и 0, то "алгоритм" работает и с однозначными числами.

ЗЫЖ На сайте, куда ведёт ссылка пытаются отрабатывать какие-то скрипты (у меня зарезаны по дефолту), те, кто решит заглянуть, проявите осторожность - неисключены неприятности.

Последний раз редактировалось Alaspher, 13.02.2009 в 11:46. Причина: добавление примечания
Alaspher вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Я начинаю заниматься программированием LISP (help)

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