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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Не работают лиспы написанные под 2006 ACAD

Не работают лиспы написанные под 2006 ACAD

Ответ
Поиск в этой теме
Непрочитано 10.08.2009, 13:12 #1
Не работают лиспы написанные под 2006 ACAD
semvb
 
Инженер-технолог
 
Мурманск
Регистрация: 18.11.2003
Сообщений: 180

Написанные когда-то (или скачанные) лисп-программы для ACAD 2006 не работают, или криво работают в 2009 и выше. В чем проблема?
Просмотров: 2290
 
Непрочитано 10.08.2009, 13:15
#2
Кулик Алексей aka kpblc
Moderator

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


В очень ясно заданном вопросе. Хотя бы один пример привел, что ли...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 10.08.2009, 13:19
#3
semvb

Инженер-технолог
 
Регистрация: 18.11.2003
Мурманск
Сообщений: 180


;;------------------> Рисование прямоугольника с осевыми линиями
;; Должен быть создан слой с именем "осевая"
;;-------------------------------------------------------------------

(defun c:kvdr ( / pt1 lkv hkv p1 p2 p3 p4 p5 p6 os1 os2 oldlr oldcl oldcp)
(setq sosmo (getvar "osmode"))
(setvar "osmode" 615)
(setq pt1 (getpoint "\nЦентральная точка: "))
(setq lkv (getdist pt1 "\nШирина прямоугольника: "))
(setq hkv (getdist pt1 "\nВысота прямоугольника: "))
(setq p1 (list (-(car pt1) (/ lkv 2.0)) (-(cadr pt1) (/ hkv 2.0))));координаты центра -> в координаты левого нижнего угла p1
(setq p2 (list (car p1) (+(cadr p1) hkv)))
(setq p3 (list (+(car p2) lkv) (cadr p2)))
(setq p4 (list (car p3) (cadr p1)))
(setvar "osmode" 0)
(COMMAND "PLINE" p1 p2 p3 p4 "c")

(setq os1 (* lkv 0.6))
(setq os2 (* hkv 0.6))
(setq p5 (polar pt1 pi os1))
(setq p6 (polar pt1 0 os1))
(setq p7 (polar pt1 (* pi 0.5) os2))
(setq p8 (polar pt1 (* pi 1.5) os2))
(setq oldlr (getvar "clayer")

)
(command "layer" "s" "осевая" ""); перход в слой осевых линий, если известно имя
(command "line" p5 p6 "")
(command "line" p7 p8 "")
(setvar "clayer" oldlr); возврат из слоя осевых линий, если было известно имя

(setvar "osmode" 743)
)
semvb вне форума  
 
Непрочитано 10.08.2009, 13:26
#4
Кулик Алексей aka kpblc
Moderator

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


1. Почему команды и опции без символа "_"?
2. А слой "Осевая" существует?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 10.08.2009, 13:35
#5
semvb

Инженер-технолог
 
Регистрация: 18.11.2003
Мурманск
Сообщений: 180


2. Слой существует, забит в шаблон dwt - у некоторых лиспов не происходит переход в нужный слой, открывается окно выбора слоя и команда обрывается.
1. При написании новых лиспов стал вводить символ "_" перед командой, а все старые и без него неплохо работают в 2006.
semvb вне форума  
 
Непрочитано 10.08.2009, 13:49
#6
Кулик Алексей aka kpblc
Moderator

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


Код:
[Выделить все]
(defun c:kvdr1 (/ adoc *error* pt1 len height ent1 ent2 ent3)
  (defun *error* (msg)
    (foreach item (list ent1 ent2 ent3)
      (if item
        (entdel ent1)
        ) ;_ end of if
      ) ;_ end of foreach
    (vla-endundomark adoc)
    (princ msg)
    (princ)
    ) ;_ end of defun

  (vl-load-com)
  (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
  (if (and (= (type (setq pt1 (vl-catch-all-apply
                                (function
                                  (lambda ()
                                    (getpoint "\nЦентральная точка <Отмена> : ")
                                    ) ;_ end of lambda
                                  ) ;_ end of function
                                ) ;_ end of vl-catch-all-apply
                          ) ;_ end of setq
                    ) ;_ end of type
              'list
              ) ;_ end of =
           (= (type (setq len (vl-catch-all-apply
                                (function
                                  (lambda ()
                                    (getdist pt1 "\nШирина прямоугольника <Отмена> : ")
                                    ) ;_ end of lambda
                                  ) ;_ end of function
                                ) ;_ end of vl-catch-all-apply
                          ) ;_ end of setq
                    ) ;_ end of type
              'real
              ) ;_ end of =
           (= (type (setq height (vl-catch-all-apply
                                   (function
                                     (lambda ()
                                       (getdist pt1 "\nВысота прямоугольника <Отмена> : ")
                                       ) ;_ end of lambda
                                     ) ;_ end of function
                                   ) ;_ end of vl-catch-all-apply
                          ) ;_ end of setq
                    ) ;_ end of type
              'real
              ) ;_ end of =
           ) ;_ end of and
    (setq ent1 (entmakex (list '(0 . "LWPOLYLINE")
                               '(100 . "AcDbEntity")
                               '(8 . "Осевая")
                               '(100 . "AcDbPolyline")
                               '(90 . 4)
                               '(70 . 1)
                               '(43 . 0.0)
                               '(38 . 0.0)
                               '(39 . 0.0)
                               (cons 10 (list (- (car pt1) (/ len 2.)) (- (cadr pt1) (/ height 2.))))
                               (cons 10 (list (+ (car pt1) (/ len 2.)) (- (cadr pt1) (/ height 2.))))
                               (cons 10 (list (+ (car pt1) (/ len 2.)) (+ (cadr pt1) (/ height 2.))))
                               (cons 10 (list (- (car pt1) (/ len 2.)) (+ (cadr pt1) (/ height 2.))))
                               '(210 0.0 0.0 1.0)
                               ) ;_ end of list
                         ) ;_ end of entmakex
          ent2 (entmakex (list (cons 0 "LINE")
                               (cons 10 (list (car pt1) (- (cadr pt1) (* height 0.75))))
                               (cons 11 (list (car pt1) (+ (cadr pt1) (* height 0.75))))
                               ) ;_ end of list
                         ) ;_ end of entmakex
          ent3 (entmakex (list (cons 0 "LINE")
                               (cons 10 (list (- (car pt1) (* len 0.75)) (cadr pt1)))
                               (cons 11 (list (+ (car pt1) (* len 0.75)) (cadr pt1)))
                               ) ;_ end of list
                         ) ;_ end of entmakex
          ) ;_ end of setq
    ) ;_ end of if
  (vla-endundomark adoc)
  (princ)
  )
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 10.08.2009, 14:12
#7
semvb

Инженер-технолог
 
Регистрация: 18.11.2003
Мурманск
Сообщений: 180


Спасибо, только поясни пожалуйста принцип, у меня много таких зависших лиспов!
semvb вне форума  
 
Непрочитано 10.08.2009, 14:14
#8
Кулик Алексей aka kpblc
Moderator

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


Принцип? Уйти от применения командных методов.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 10.08.2009, 14:55
#9
semvb

Инженер-технолог
 
Регистрация: 18.11.2003
Мурманск
Сообщений: 180


C вводом данных более-менее понятно, как перейти в нужный слой и что за список:
(list '(0 . "LWPOLYLINE")
'(100 . "AcDbEntity")
'(8 . "Осевая")
'(100 . "AcDbPolyline")
'(90 . 4)
'(70 . 1)
'(43 . 0.0)
'(38 . 0.0)
'(39 . 0.0)
(cons 10 (list (- (car pt1) (/ len 2.)) (- (cadr pt1) (/ height 2.))))
(cons 10 (list (+ (car pt1) (/ len 2.)) (- (cadr pt1) (/ height 2.))))
(cons 10 (list (+ (car pt1) (/ len 2.)) (+ (cadr pt1) (/ height 2.))))
(cons 10 (list (- (car pt1) (/ len 2.)) (+ (cadr pt1) (/ height 2.))))
'(210 0.0 0.0 1.0)
semvb вне форума  
 
Непрочитано 10.08.2009, 15:10
#10
Кулик Алексей aka kpblc
Moderator

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


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

Инженер-технолог
 
Регистрация: 18.11.2003
Мурманск
Сообщений: 180


Я это и имел в виду, не могу найти полную расшифровку кодов примитивов, где что под каким номером
semvb вне форума  
 
Непрочитано 11.08.2009, 08:00
#12
Кулик Алексей aka kpblc
Moderator

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


semvb, так ты открой DXF Reference - там все написано (правда, по-английски).
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 11.08.2009, 08:22
#13
semvb

Инженер-технолог
 
Регистрация: 18.11.2003
Мурманск
Сообщений: 180


Вот с английским как раз и проблема, а на русском нет?
semvb вне форума  
 
Непрочитано 11.08.2009, 08:23
#14
Кулик Алексей aka kpblc
Moderator

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


Насколько я знаю, некоторая часть была переведена в книгах Н.Н.Полещука.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 11.08.2009, 09:04
#15
Disney

Геодезист
 
Регистрация: 12.03.2009
Сибирь (где медведи по улицам ходят)
Сообщений: 860
Отправить сообщение для Disney с помощью Skype™


Цитата:
Сообщение от semvb Посмотреть сообщение
Я это и имел в виду, не могу найти полную расшифровку кодов примитивов, где что под каким номером

Можно методом «научного тыка», получаешь entget-ом список и ищешь, что тебе нужно.
Например:
Хочешь узнать под каким кодом цвет, красишь примитив в 5 (синий) цвет, получаешь entget-ом список:
Цитата:
((-1 . <Имя объекта: 7ef8bf10>) (0 . "LWPOLYLINE") (330 . <Имя
объекта: 7ef01cf8>) (5 . "3CB2") (100 . "AcDbEntity") (67 . 0) (410 . "Model")
(8 . "0") (62 . 5) (100 . "AcDbPolyline") (90 . 2) (70 . 0) (43 . 0.0) (38 .
0.0) (39 . 0.0) (10 214.778 256.467) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10
270.31 285.265) (40 . 0.0) (41 . 0.0) (42 . 0.0) (210 0.0 0.0 1.0))
находишь 5 в точечной паре (62 . 5), значит скорее всего цвет идёт под 62 кодом
__________________
Почему все вдруг становятся умными, когда уже не надо?
Disney вне форума  
 
Автор темы   Непрочитано 11.08.2009, 13:02
#16
semvb

Инженер-технолог
 
Регистрация: 18.11.2003
Мурманск
Сообщений: 180


спасибо, будем пробовать!
semvb вне форума  
 
Непрочитано 12.08.2009, 09:59
#17
Do$

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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Код:
[Выделить все]
(defun c:kvdr1 (/ adoc *error* pt1 len height ent1 ent2 ent3)
  (defun *error* (msg)
    (foreach item (list ent1 ent2 ent3)
      (if item
        (entdel ent1)
        ) ;_ end of if
      ) ;_ end of foreach
    (vla-endundomark adoc)
    (princ msg)
    (princ)
    ) ;_ end of defun

  (vl-load-com)
  ....
)
Описание функции внутри другой функции?
Do$ вне форума  
 
Непрочитано 12.08.2009, 10:02
#18
Кулик Алексей aka kpblc
Moderator

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


А что такого? Это нормально.
---
Уточнение: в LISP, реализованном в AutoCAD - это нормально.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.08.2009, 10:05
#19
Do$

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


Возьмем на вооружение! Спасибо
Do$ вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Не работают лиспы написанные под 2006 ACAD



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамические блоки работают с атрибутами! (ACAD 2006) =mik= Динамические блоки 14 16.08.2013 19:08
Acad LT 2006 через SuperTools 2006 Gaa Программирование 4 16.08.2005 19:54
Горячие клавиши в ACAD 2006 Saret AutoCAD 4 12.07.2005 22:20
Acad 2006 в Питере! X-DeViL AutoCAD 4 06.04.2005 07:28
Официальная информация о версии ACAD 2006 Alaspher AutoCAD 22 21.03.2005 15:20