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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Где ошибка в моем макросе для полилинии в локал. версии AutoCAD?

Где ошибка в моем макросе для полилинии в локал. версии AutoCAD?

Ответ
Поиск в этой теме
Непрочитано 09.07.2010, 11:40
Где ошибка в моем макросе для полилинии в локал. версии AutoCAD?
Nosferatu
 
Регистрация: 07.09.2009
Сообщений: 27

Здравствуйте. Буду краток.
была у меня самописная команда "^C^C_PEDIT _j" (join).
Делала она следующее - соединяла отрезки в полилинию.
Соответственно работала только при значении переменной PEDITACCEPT, равной "1". В новом 2010 русском PEDIT вообще не работает. Вместо нее ПОЛРЕД... Только вот "^C^C_ПОЛРЕД _д" (добавить) не работает. Подскажите как написать команду в 2010 русском для соединения отрезков и арок в полилинию ОДНИМ НАЖАТИЕМ КНОПКИ. Официальный путь, как понятно из текста, я знаю. Заранее спасибо.
__________________
"А кто не курит сосиски, тот лох!" (с)

Последний раз редактировалось Nosferatu, 09.07.2010 в 15:33.
Просмотров: 13917
 
Непрочитано 09.07.2010, 16:06
#21
BM60


 
Регистрация: 08.02.2008
Где-то
Сообщений: 8,460


Offtop: Любо-дорого теперь прочесть заголовок, начало и конец этой темы.
__________________
Я дарю не рыбу, а удочку и море.
www.zodchii.ws,
Библиотеки электронных книг
Download
BM60 вне форума  
 
Непрочитано 09.07.2010, 16:08
#22
Кулик Алексей aka kpblc
Moderator

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


Nosferatu, скажу честно: мне будет проще сделать лисп типа
Код:
[Выделить все]
(vl-load-com)

(defun c:mod-ped (/ adoc selset sysvar prec)
  (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
  (setq sysvar (mapcar
                 (function
                   (lambda (x / res)
                     (setq res (cons (car x) (getvar (car x))))
                     (setvar (car x) (cdr x))
                     res
                     ) ;_ end of lambda
                   ) ;_ end of function
                 '(("peditaccept" . 1)
                   ("cmdecho" . 0)
                   )
                 ) ;_ end of mapcar
        ) ;_ end of setq
  (if (and (= (type (setq selset (vl-catch-all-apply
                                   (function
                                     (lambda ()
                                       (ssget)
                                       ) ;_ end of lambda
                                     ) ;_ end of function
                                   ) ;_ end of vl-catch-all-apply
                          ) ;_ end of setq
                    ) ;_ end of type
              'pickset
              ) ;_ end of =
           (= (type (setq prec (vl-catch-all-apply
                                 (function
                                   (lambda ()
                                     (cond
                                       ((getdist "\nТочность соединения <0.0> : "))
                                       (t 0.)
                                       ) ;_ end of cond
                                     ) ;_ end of lambda
                                   ) ;_ end of function
                                 ) ;_ end of vl-catch-all-apply
                          ) ;_ end of setq
                    ) ;_ end of type
              'real
              ) ;_ end of =
           ) ;_ end of and
    (vl-catch-all-apply
      (function
        (lambda ()
          (command "_.pedit" "_m" selset "" "_j" prec "")
          ) ;_ end of lambda
        ) ;_ end of function
      ) ;_ end of vl-catch-all-apply
    ) ;_ end of if
  (foreach item sysvar
    (setvar (car item) (cdr item))
    ) ;_ end of foreach
  (vla-endundomark adoc)
  (princ)
  ) ;_ end of defun
И использовать его.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.07.2010, 16:32
#23
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Цитата:
Сообщение от Nosferatu Посмотреть сообщение
Простите, если кого затруднил. Благодаря этому прекраному форуму я реально быстро получил нужный мне ответ.
Автор давно хочет, понял и признает свою ошибку, вот только не знает как переименовать тему

Теперь протокол:

"Команда: Противоположный угол:
Команда:
Команда:
Команда:

Задайте параметр [Замкнуть/Добавить/Ширина/Вершина/СГладить/СПлайн/Убрать
сглаживание/Типлин/оБратить/Отменить]:

Выберите объекты: Противоположный угол: найдено: 4

Выберите объекты:
Добавлено сегментов: 3

Задайте параметр [Замкнуть/Добавить/Ширина/Вершина/СГладить/СПлайн/Убрать
сглаживание/Типлин/оБратить/Отменить]: *Прервано*"
Это не протокол выполнения макроса, а куски какие-то, выдраные неизвестно откуда. Автор темы мистифицирует форумчан.
Вот реальный протокол выполнения макроса ^C^C_.pedit;_j;
Код:
[Выделить все]
Команда: _.pedit
Выберите полилинию или [Несколько]: _j

*Неверный выбор*
Требуется точка или Рамка/Последний/Секрамка/БОКС/Все/Линия/РМн-угол/СМн-угол
Выберите полилинию или [Несколько]:
Выберите полилинию или [Несколько]: *Прервано*
Profan вне форума  
 
Автор темы   Непрочитано 09.07.2010, 16:56
#24
Nosferatu


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


Цитата:
Сообщение от Profan Посмотреть сообщение
Это не протокол выполнения макроса, а куски какие-то
что вы все на меня нападаете?
мне сказали после выполнения команды нажать F2 и скопировать оттуда непонятные слова, я так и сделал! Вообще, вначале был простой вопрос и сразу был правильный ответ. Зачем пошла лабуда про кривые руки и то, что макрос, который работает, работать в принципе не может, когда я его уже 3 года юзаю, я не понимаю! Теперь я что-то мистифицирую... Да елы-палы!
__________________
"А кто не курит сосиски, тот лох!" (с)
Nosferatu вне форума  
 
Непрочитано 09.07.2010, 16:59
#25
Кулик Алексей aka kpblc
Moderator

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


Nosferatu, тихо-тихо Ты лучше скажи, мой лиспик исключил из рассмотрения или нет?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 09.07.2010, 17:12
#26
sasha_lif

Дизайнер-конструктор
 
Регистрация: 29.05.2004
Kiev
Сообщений: 1,179
<phrase 1=


Nosferatu, если часто пользуешся часто pedit, то попробуй
PL-JOIN
из
Новые команды для работы с полилинией. http://dwg.ru/dnl/607
Цитата:
PL-JOIN -Объединение полилиний чохом
PL-JOIN3D -Объединение 3D полилиний
Позволит объединять не по одному контуру, очень классная штука!
__________________
Kiev, Ukraine
sasha_lif вне форума  
 
Непрочитано 09.07.2010, 17:29
#27
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Nosferatu, это уже дело принципа. Я всяких макросов в свое время горы понаделал. Не работает у меня этот макрос ни в одной версии. О каких непонятных словах ты пишешь, если у тебя русская версия? Тогда хоть словами опиши, что у тебя выполняется после нажатия кнопки с этим макросом.
А вот как выглядит протокол выполнения команды "_pedit" для 4 отрезков при PEDITACCEPT, равной 1 (AutoCAD 2006 РУС, AutoCAD 2011 РУС):
Код:
[Выделить все]
Команда: _pedit
Выберите полилинию или [Несколько]: Н
Выберите объекты: Противоположный угол: найдено: 4
Выберите объекты:
Задайте опцию [Замкнуть/Разомкнуть/Добавить/Ширина/СГладить/СПлайн/Убрать 
сглаживание/Типлин/Отменить]: Д
Способ добавления = Удлинить
Значение допуска или [Способ] <0.0000>: 0
Добавлено сегментов: 3
Задайте опцию [Замкнуть/Разомкнуть/Добавить/Ширина/СГладить/СПлайн/Убрать 
сглаживание/Типлин/Отменить]:
Команда:
Нет, что-то он не договаривает.
Profan вне форума  
 
Автор темы   Непрочитано 09.07.2010, 19:12
#28
Nosferatu


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Nosferatu, тихо-тихо Ты лучше скажи, мой лиспик исключил из рассмотрения или нет?
Кулик Алексей aka kpblc, это для меня очень сложно, но большое Вам человеческое спасибо за попытку помочь

Цитата:
Сообщение от Profan Посмотреть сообщение
Не работает у меня этот макрос ни в одной версии.
у меня и моих коллег работает в версии:"^C^C_.pedit;_j;"


Цитата:
Сообщение от Profan Посмотреть сообщение
Тогда хоть словами опиши
Описываю.
Есть два отрезка, концы которых совпадают. Отрезки не лежат на одной прямой. Выделяем первый, нажимаем кнопочку, выделяем оба (или все, если их больше). Затем пробел или интер. Он все еще в режиме команды, поэтому жмем Esc. Готов поспорить, так заработает. :-)

Цитата:
Сообщение от sasha_lif Посмотреть сообщение
Nosferatu, если часто пользуешся часто pedit, то попробуй
PL-JOIN
из
Новые команды для работы с полилинией. http://dwg.ru/dnl/607

Цитата:




PL-JOIN -Объединение полилиний чохом
PL-JOIN3D -Объединение 3D полилиний




Позволит объединять не по одному контуру, очень классная штука!
sasha_lif, спасибо, в понедельник обязательно посмотрю
__________________
"А кто не курит сосиски, тот лох!" (с)
Nosferatu вне форума  
 
Непрочитано 09.07.2010, 22:06
2 | #29
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Nosferatu.
Вот это важно:
Цитата:
Выделяем первый, нажимаем кнопочку, выделяем оба (или все, если их больше).
При таком порядке действий макрос действительно работет.
А теперь попробуй вот такой макрос:
Код:
[Выделить все]
^C^C_.select;\_.pedit;_m;_p;;_j;;;
Здесь предварительно ничего выделять не надо, сразу нажимаем кнопку.
Profan вне форума  
 
Автор темы   Непрочитано 10.07.2010, 10:26
#30
Nosferatu


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


Цитата:
Сообщение от Profan Посмотреть сообщение
Вот это важно
я подозревал, что в этом загвоздка.
В понедельник попробую, спасибо :-)
__________________
"А кто не курит сосиски, тот лох!" (с)
Nosferatu вне форума  
 
Непрочитано 10.07.2010, 13:02
#31
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Nosferatu.
Еще замечания. Если вернуться к твоему макросу, то он не будет работать при отключенном предварительном выборе объектов (переменная PICKFIRST = 0). И, конечно, в случае удачной работы твоего макроса, обрывать комадну по Esc нет нужды, команда нормально завершится при нажатии Enter или пробела.
Profan вне форума  
 
Автор темы   Непрочитано 10.07.2010, 13:11
#32
Nosferatu


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


Цитата:
Сообщение от Profan Посмотреть сообщение
Еще замечания.
Буду знать, спасибо!
__________________
"А кто не курит сосиски, тот лох!" (с)
Nosferatu вне форума  
 
Непрочитано 10.07.2010, 19:35
#33
mnasoft

инженер
 
Регистрация: 07.07.2010
Украина
Сообщений: 2


Макрос, объединяющий объекты со смежными концами можно записать так:
^C^C(setq temp_Ss (ssget))(command "PEDITACCEPT" "1" "_pedit" (ssname temp_Ss 0) "j" temp_Ss "" "")
mnasoft вне форума  
 
Автор темы   Непрочитано 11.07.2010, 07:06
#34
Nosferatu


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


Цитата:
Сообщение от mnasoft Посмотреть сообщение
можно записать так
Не, Вы что издеваетесь? вообще ж ничего не понятно, как в лиспе Алексея! Но, все равно спасибо, маэстро
Раз пошла такая пьянка, скажите, пожалуйста - с чего лучше начать изучение темы написания макросов - с книги, которую мне посоветовали скачать в начале темы?
__________________
"А кто не курит сосиски, тот лох!" (с)
Nosferatu вне форума  
 
Непрочитано 11.07.2010, 07:37
#35
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Да, советую эту книгу прочитать обязательно.
http://dwg.ru/dnl/3480
Profan вне форума  
 
Автор темы   Непрочитано 12.07.2010, 15:45
#36
Nosferatu


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


Цитата:
Сообщение от Profan Посмотреть сообщение
^C^C_.select;\_.pedit;_m;_p;;_j;;;
работает иделаьно, но для Вас это, скорее всего не новость

Цитата:
Сообщение от Profan Посмотреть сообщение
Да, советую эту книгу прочитать обязательно.
http://dwg.ru/dnl/3480
Спасибо, еще раз.
Считаю тему можно закрывать.
__________________
"А кто не курит сосиски, тот лох!" (с)
Nosferatu вне форума  
 
Непрочитано 12.07.2010, 17:20
#37
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Цитата:
Сообщение от Nosferatu Посмотреть сообщение
работает иделаьно, но для Вас это, скорее всего не новость.
Да, не новость. Применение в макросе команды "_select" ("выбрать") помогает решить многие проблемы. Это связано не в последнюю очередь с тем, что единственная косая черта позволяет произвести многократный выбор объектов...
Profan вне форума  
 
Непрочитано 19.07.2010, 18:29
#38
Вуфля


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


Помогите! =( соединила отрезки один объект(полилиния) а как их разомкнуть обратно?? а то я с рамерами напутала...
Вуфля вне форума  
 
Непрочитано 19.07.2010, 18:43
#39
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Пошутила, наверное...
Если чертеж еще не закрывался после объединения в одну полилинию, то можно последовательно отменить выполненные команды вплоть до нужной.
Если чертеж был сохранен 1 раз и закрыт, то надо искать файл *.bak.
Profan вне форума  
 
Непрочитано 19.07.2010, 18:52
#40
Вуфля


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


не пошутила. я весь день черчу одно задание..а когда стала размеры выстовлять увидела, что съехала по замерам=/ а может можно как то уменьшить стенки?
Вуфля вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Где ошибка в моем макросе для полилинии в локал. версии AutoCAD?

Реклама i


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возможно ли установить AutoCAD 2009 и 2010 в рамках одной системы и избежать конфликтов? anonymous AutoCAD 11 14.03.2012 10:36
Дуги из AutoCAD в ArchiCAD "выпрямляются"....(((Помогите пжста!Блондиню... anele_art AutoCAD 4 31.03.2010 05:45
AutoCad 2004 и 2008 на одной машине esquire_vik AutoCAD 3 07.05.2009 11:00
Нет ни одной панели AutoCAD 2009LT Mikhailka AutoCAD 2 23.02.2009 16:11
Как поставить два AutoCAD на одной машине? Chief Justice AutoCAD 6 24.07.2006 09:36