Лисп не работает на русской версии автокада

Автор Тема: Лисп не работает на русской версии автокада  (Прочитано 14433 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн demon065Автор темы

  • ADN OPEN
  • Сообщений: 6
  • Карма: 0
День добрый у меня есть лисп файл но почему то он работает только на английской версии автокада. у меня есть еще вопрос по данному липс файлу, его предназначение это обводить полелинией замкнутый контур и вставлять площадь в чертеж, то есть один контур одна площадь. А можно ли сделать так что бы он вставлял площадь нескольких контуров но уже в сумме? Может кто поможет? За ранее благодарю!


Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1116
  • Карма: 173
В лиспе используются командные методы, причем прописаны они для английской версии. Посмотри http://autolisp.ru/2010/03/04/localization/ - это на будущее :)
Дальше. Команда _.bpoly может не сработать или сработать неверно. Если тебя это не напрягает - то пускай будет так. Хотя лично я предпочел бы по минимуму использовать команды: их поведение может отличаться в разных версиях.
Следующее :) Я бы заменил _.bpoly на _.-boundary с запросом точки - работать, возможно, станет немного комфортнее.
И самое главное: создание текста надо делать с учетом того, что для текущего текстового стиля может быть задана фиксированная высота.
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Отмечено как Решение Александр Ривилис 13-09-2016, 12:49:03

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1116
  • Карма: 173
Как варианты, для начала - во вложении. (Хотя, если честно, у А.Ривилиса есть прекрасная программа GeomProps, которая делает все это и еще массу всякого ;))
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн demon065Автор темы

  • ADN OPEN
  • Сообщений: 6
  • Карма: 0
Как варианты, для начала - во вложении. (Хотя, если честно, у А.Ривилиса есть прекрасная программа GeomProps, которая делает все это и еще массу всякого ;))
Как я и хотел, спасибо!Появилось одно но, ранее после клика на область оставалась поллиния а сейчас  она исчезает.  :'(

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1116
  • Карма: 173
Я это сделал специально, чтобы не замусоривать чертеж. Но если надо оставить - то в коде убери инструкцию entdel. Контур будет оставаться на месте.
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Появилось одно но, ранее после клика на область оставалась поллиния а сейчас  она исчезает.  :'(
поставь точку с запятой перед:
Код - Auto/Visual Lisp [Выбрать]
  1. (entdel ent_last)
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн demon065Автор темы

  • ADN OPEN
  • Сообщений: 6
  • Карма: 0
Я это сделал специально, чтобы не замусоривать чертеж. Но если надо оставить - то в коде убери инструкцию entdel. Контур будет оставаться на месте.
спасибо! дело в том что я использую этот лисп для подсчета площади в поперечных сечений(для информации) Еще раз спасибо

Оффлайн demon065Автор темы

  • ADN OPEN
  • Сообщений: 6
  • Карма: 0
Появилось одно но, ранее после клика на область оставалась поллиния а сейчас  она исчезает.  :'(
поставь точку с запятой перед:
Код - Auto/Visual Lisp [Выбрать]
  1. (entdel ent_last)
В первой команде все нормально выделяет а вот вторая команда вообще запускаться не хочет
Код - Auto/Visual Lisp [Выбрать]
  1. (vl-load-com)
  2.  
  3. (defun c:area1 (/ adoc ent_last ent_prev pt)
  4.   (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
  5.   (if (and (setq ent_prev (entlast))
  6.            (vl-cmdf "_.-boundary" pause "")
  7.            (setq ent_last (entlast))
  8.            (not (equal ent_prev ent_last))
  9.            (= (type
  10.                 (setq pt (vl-catch-all-apply (function (lambda () (getpoint "\nТочка вставки текста <Отмена> : ")))))
  11.                 ) ;_ end of type
  12.               'list
  13.               ) ;_ end of =
  14.            pt
  15.            ) ;_ end of and
  16.     (progn (entmakex (list '(0 . "TEXT")
  17.                            '(100 . "AcDbEntity")
  18.                            '(100 . "AcDbText")
  19.                            (cons 10 pt)
  20.                            '(40 . 2.5)
  21.                            (cons 1 (rtos (vla-get-area (vlax-ename->vla-object ent_last)) 2 2))
  22.                            '(50 . 0.0)
  23.                            '(41 . 1.0)
  24.                            '(51 . 0.0)
  25.                            '(71 . 0)
  26.                            '(72 . 0)
  27.                            '(11 0.0 0.0 0.0)
  28.                            '(210 0.0 0.0 1.0)
  29.                            '(100 . "AcDbText")
  30.                            '(73 . 0)
  31.                            ) ;_ end of list
  32.                      ) ;_ end of entmakex
  33. ;(entdel ent_last)
  34.            ) ;_ end of progn
  35.     ) ;_ end of if
  36.   (vla-endundomark adoc)
  37.   (princ)
  38.   ) ;_ end of defun
  39.  
  40. (defun c:area_multi (/ adoc ent_prev ent_last area pt)
  41.   (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
  42.   (setq area 0.)
  43.   (while (and (setq ent_prev (entlast))
  44.               (vl-cmdf "_.-boundary" pause "")
  45.               (setq ent_last (entlast))
  46.               (not (equal ent_prev ent_last))
  47.               ) ;_ end of and
  48.     (progn (setq area (+ area (vla-get-area (vlax-ename->vla-object ent_last))));(entdel ent_last))
  49.     ) ;_ end of while
  50.   (if (and (= (type
  51.                 (setq pt (vl-catch-all-apply (function (lambda () (getpoint "\nТочка вставки текста <Отмена> : ")))))
  52.                 ) ;_ end of type
  53.               'list
  54.               ) ;_ end of =
  55.            pt
  56.            ) ;_ end of and
  57.     (entmakex (list '(0 . "TEXT")
  58.                     '(100 . "AcDbEntity")
  59.                     '(100 . "AcDbText")
  60.                     (cons 10 pt)
  61.                     '(40 . 2.5)
  62.                     (cons 1 (rtos area 2 2))
  63.                     '(50 . 0.0)
  64.                     '(41 . 1.0)
  65.                     '(51 . 0.0)
  66.                     '(71 . 0)
  67.                     '(72 . 0)
  68.                     '(11 0.0 0.0 0.0)
  69.                     '(210 0.0 0.0 1.0)
  70.                     '(100 . "AcDbText")
  71.                     '(73 . 0)
  72.                     ) ;_ end of list
  73.               ) ;_ end of entmakex
  74.     ) ;_ end of if
  75.   (vla-endundomark adoc)
  76.   (princ)
  77.   ) ;_ end of defun
Что делаю не так?
« Последнее редактирование: 13-09-2016, 12:11:50 от Александр Ривилис »

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
demon065
1. Прочитай у меня в подписи как следует форматировать код на форуме и исправь свое сообщение.
2. Во второй команде комментарий распространился на еще одну закрывающуюся скобку.
Замени:
Код - Auto/Visual Lisp [Выбрать]
  1. (progn (setq area (+ area (vla-get-area (vlax-ename->vla-object ent_last))));(entdel ent_last))
на
Код - Auto/Visual Lisp [Выбрать]
  1. (progn (setq area (+ area (vla-get-area (vlax-ename->vla-object ent_last)))))
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн demon065Автор темы

  • ADN OPEN
  • Сообщений: 6
  • Карма: 0
demon065
1. Прочитай у меня в подписи как следует форматировать код на форуме и исправь свое сообщение.
2. Во второй команде комментарий распространился на еще одну закрывающуюся скобку.
Замени:
Код - Auto/Visual Lisp [Выбрать]
  1. (progn (setq area (+ area (vla-get-area (vlax-ename->vla-object ent_last))));(entdel ent_last))
на
Код - Auto/Visual Lisp [Выбрать]
  1. (progn (setq area (+ area (vla-get-area (vlax-ename->vla-object ent_last)))))
Делал я как вы мне скинули, и точку с запятой ставил и удалял. При згрузке  он выводит только первую команду вторую он не видит

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Код - Auto/Visual Lisp [Выбрать]
  1. (vl-load-com)
  2.  
  3. (defun c:area1 (/ adoc ent_last ent_prev pt)
  4.   (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
  5.   (if (and (setq ent_prev (entlast))
  6.            (vl-cmdf "_.-boundary" pause "")
  7.            (setq ent_last (entlast))
  8.            (not (equal ent_prev ent_last))
  9.            (= (type
  10.                 (setq pt (vl-catch-all-apply (function (lambda () (getpoint "\nТочка вставки текста <Отмена> : ")))))
  11.                 ) ;_ end of type
  12.               'list
  13.               ) ;_ end of =
  14.            pt
  15.            ) ;_ end of and
  16.     (progn (entmakex (list '(0 . "TEXT")
  17.                            '(100 . "AcDbEntity")
  18.                            '(100 . "AcDbText")
  19.                            (cons 10 pt)
  20.                            '(40 . 2.5)
  21.                            (cons 1 (rtos (vla-get-area (vlax-ename->vla-object ent_last)) 2 2))
  22.                            '(50 . 0.0)
  23.                            '(41 . 1.0)
  24.                            '(51 . 0.0)
  25.                            '(71 . 0)
  26.                            '(72 . 0)
  27.                            '(11 0.0 0.0 0.0)
  28.                            '(210 0.0 0.0 1.0)
  29.                            '(100 . "AcDbText")
  30.                            '(73 . 0)
  31.                            ) ;_ end of list
  32.                      ) ;_ end of entmakex
  33.            ) ;_ end of progn
  34.     ) ;_ end of if
  35.   (vla-endundomark adoc)
  36.   (princ)
  37.   ) ;_ end of defun
  38.  
  39. (defun c:area_multi (/ adoc ent_prev ent_last area pt)
  40.   (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
  41.   (setq area 0.)
  42.   (while (and (setq ent_prev (entlast))
  43.               (vl-cmdf "_.-boundary" pause "")
  44.               (setq ent_last (entlast))
  45.               (not (equal ent_prev ent_last))
  46.               ) ;_ end of and
  47.     (progn (setq area (+ area (vla-get-area (vlax-ename->vla-object ent_last)))))
  48.     ) ;_ end of while
  49.   (if (and (= (type
  50.                 (setq pt (vl-catch-all-apply (function (lambda () (getpoint "\nТочка вставки текста <Отмена> : ")))))
  51.                 ) ;_ end of type
  52.               'list
  53.               ) ;_ end of =
  54.            pt
  55.            ) ;_ end of and
  56.     (entmakex (list '(0 . "TEXT")
  57.                     '(100 . "AcDbEntity")
  58.                     '(100 . "AcDbText")
  59.                     (cons 10 pt)
  60.                     '(40 . 2.5)
  61.                     (cons 1 (rtos area 2 2))
  62.                     '(50 . 0.0)
  63.                     '(41 . 1.0)
  64.                     '(51 . 0.0)
  65.                     '(71 . 0)
  66.                     '(72 . 0)
  67.                     '(11 0.0 0.0 0.0)
  68.                     '(210 0.0 0.0 1.0)
  69.                     '(100 . "AcDbText")
  70.                     '(73 . 0)
  71.                     ) ;_ end of list
  72.               ) ;_ end of entmakex
  73.     ) ;_ end of if
  74.   (vla-endundomark adoc)
  75.   (princ)
  76.   ) ;_ end of defun
  77.  
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей Кулик

  • Administrator
  • *****
  • Сообщений: 1116
  • Карма: 173
Я проверял в 2016 - команда area_multi доступна и работает.
Все, что сказано - личное мнение.

Правила форума существуют не просто так!

Приводя в сообщении код, не забывайте про его форматирование!

Оффлайн demon065Автор темы

  • ADN OPEN
  • Сообщений: 6
  • Карма: 0
Код - Auto/Visual Lisp [Выбрать]
  1. (vl-load-com)
  2.  
  3. (defun c:area1 (/ adoc ent_last ent_prev pt)
  4.   (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
  5.   (if (and (setq ent_prev (entlast))
  6.            (vl-cmdf "_.-boundary" pause "")
  7.            (setq ent_last (entlast))
  8.            (not (equal ent_prev ent_last))
  9.            (= (type
  10.                 (setq pt (vl-catch-all-apply (function (lambda () (getpoint "\nТочка вставки текста <Отмена> : ")))))
  11.                 ) ;_ end of type
  12.               'list
  13.               ) ;_ end of =
  14.            pt
  15.            ) ;_ end of and
  16.     (progn (entmakex (list '(0 . "TEXT")
  17.                            '(100 . "AcDbEntity")
  18.                            '(100 . "AcDbText")
  19.                            (cons 10 pt)
  20.                            '(40 . 2.5)
  21.                            (cons 1 (rtos (vla-get-area (vlax-ename->vla-object ent_last)) 2 2))
  22.                            '(50 . 0.0)
  23.                            '(41 . 1.0)
  24.                            '(51 . 0.0)
  25.                            '(71 . 0)
  26.                            '(72 . 0)
  27.                            '(11 0.0 0.0 0.0)
  28.                            '(210 0.0 0.0 1.0)
  29.                            '(100 . "AcDbText")
  30.                            '(73 . 0)
  31.                            ) ;_ end of list
  32.                      ) ;_ end of entmakex
  33.            ) ;_ end of progn
  34.     ) ;_ end of if
  35.   (vla-endundomark adoc)
  36.   (princ)
  37.   ) ;_ end of defun
  38.  
  39. (defun c:area_multi (/ adoc ent_prev ent_last area pt)
  40.   (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
  41.   (setq area 0.)
  42.   (while (and (setq ent_prev (entlast))
  43.               (vl-cmdf "_.-boundary" pause "")
  44.               (setq ent_last (entlast))
  45.               (not (equal ent_prev ent_last))
  46.               ) ;_ end of and
  47.     (progn (setq area (+ area (vla-get-area (vlax-ename->vla-object ent_last)))))
  48.     ) ;_ end of while
  49.   (if (and (= (type
  50.                 (setq pt (vl-catch-all-apply (function (lambda () (getpoint "\nТочка вставки текста <Отмена> : ")))))
  51.                 ) ;_ end of type
  52.               'list
  53.               ) ;_ end of =
  54.            pt
  55.            ) ;_ end of and
  56.     (entmakex (list '(0 . "TEXT")
  57.                     '(100 . "AcDbEntity")
  58.                     '(100 . "AcDbText")
  59.                     (cons 10 pt)
  60.                     '(40 . 2.5)
  61.                     (cons 1 (rtos area 2 2))
  62.                     '(50 . 0.0)
  63.                     '(41 . 1.0)
  64.                     '(51 . 0.0)
  65.                     '(71 . 0)
  66.                     '(72 . 0)
  67.                     '(11 0.0 0.0 0.0)
  68.                     '(210 0.0 0.0 1.0)
  69.                     '(100 . "AcDbText")
  70.                     '(73 . 0)
  71.                     ) ;_ end of list
  72.               ) ;_ end of entmakex
  73.     ) ;_ end of if
  74.   (vla-endundomark adoc)
  75.   (princ)
  76.   ) ;_ end of defun
  77.  
видимо руки у меня не с того места растут.... Спасибо Вам! Очень помогли

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Спасибо Вам!
Спасибо не мне, а Алексею.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение