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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > AUTOCAD 2016 не работает программа вырезания фрагмента генплана Помогите внести изменения.

AUTOCAD 2016 не работает программа вырезания фрагмента генплана Помогите внести изменения.

Ответ
Поиск в этой теме
Непрочитано 19.01.2016, 20:29 1 | #1
AUTOCAD 2016 не работает программа вырезания фрагмента генплана Помогите внести изменения.
jackUAROBEY
 
Проектировщик ВК
 
Анапа
Регистрация: 18.09.2014
Сообщений: 55

Всем привет. Программа Fragm_Den во вложении, вырезание фрагмента генплана не корректно работает в AUTOCAD2016. Если в чертеже есть маскировка или рисунок выдает ошибку internal error. При удалении маскировки все работает. До этого на AUTOCAD2012 такой проблемы не было. Глючит в этом месте. В лиспе отмечено
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
(mapcar '(lambda (q)

(if (= (car q) 14)(progn

(setq aa13 (cdr q)
aa13 (mapcar '- aa13 aa14)
aa13 (mapcar '- (mapcar '* aa11 (list (car aa13)(car aa13)))
(mapcar '* aa12 (list (cadr aa13)(cadr aa13))))
aa13 (mapcar '+ aa10 aa13))

(command (trans aa13 0 1))
))

) aa9)
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Вложения
Тип файла: lsp Fragm_Den1.lsp (19.7 Кб, 142 просмотров)
Тип файла: dwg
DWG 2007
Чертеж1.dwg (154.6 Кб, 519 просмотров)


Последний раз редактировалось jackUAROBEY, 20.01.2016 в 08:17.
Просмотров: 27350
 
Непрочитано 19.01.2016, 21:04
1 | #2
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,004


Обратитесь к автору программы "Замечания и предложения по адресу [email protected]"
Сергей812 вне форума  
 
Автор темы   Непрочитано 20.01.2016, 08:15
#3
jackUAROBEY

Проектировщик ВК
 
Регистрация: 18.09.2014
Анапа
Сообщений: 55



Я на эту почту уже писал не отвечает.
jackUAROBEY вне форума  
 
Непрочитано 21.01.2016, 19:23
1 | #4
kp+

идущий по граблям
 
Регистрация: 26.05.2005
Сообщений: 5,091


Где-то на форуме писали, что в новейших версиях Акада функция (command) работает как-то иначе, чем в более ранних. А перед началом выделенного фрагмента как раз есть ее вызов
Код:
[Выделить все]
(command "_.pline")
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
(mapcar '(lambda (q)

(if (= (car q) 14)(progn

(setq aa13 (cdr q)
      aa13 (mapcar '- aa13 aa14)
      aa13 (mapcar '- (mapcar '* aa11 (list (car aa13)(car aa13)))
		   (mapcar '* aa12 (list (cadr aa13)(cadr aa13))))
		      aa13 (mapcar '+ aa10 aa13))

(command (trans aa13 0 1))
))

) aa9)
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Потом при выполнении какого-то условия следующей функцией (command) передаются данные для построения полилинии, начатой по вызвову предыдущей (command). Т.е. еще не завершилась команда, посланная в ком. строку первой (command), и уже вызывается вторая.
Получается как бы вложенный вызов второй (command) внутри первой. Видимо, по правилам Acad 2016 так уже нельзя. У самого Акада 2016 нет, поэтому больше подсказать не могу. Разве что переписать этот фрагмент "некомандными" методами.
kp+ вне форума  
 
Непрочитано 22.01.2016, 10:07
1 | #5
Wion

Инженер-проектировщик
 
Регистрация: 05.11.2014
Санкт-Петербург
Сообщений: 19


Может все дело в вызове "command" ?

http://forum.dwg.ru/showpost.php?p=1328098&postcount=8
Wion вне форума  
 
Автор темы   Непрочитано 29.01.2016, 09:47
#6
jackUAROBEY

Проектировщик ВК
 
Регистрация: 18.09.2014
Анапа
Сообщений: 55


Код:
[Выделить все]
 (setvar "DELOBJ" 1)
:++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
(apply 'command (cons "_.pline"
			(vl-remove nil
			  (mapcar ' (lambda (q)
				     (if (= (car q) 14)
				      (progn
				       (setq aa13 (cdr q)
					aa13 (mapcar '- aa13 aa14)
					aa13 (mapcar '- (mapcar '* aa11 (list (car aa13)(car aa13)))
					      (mapcar '* aa12 (list (cadr aa13)(cadr aa13))))
					aa13 (mapcar '+ aa10 aa13))
				       (trans aa13 0 1)				      
				       );progn
				      );if
				     );lambda
				  aa9);mapcar
			  )
			)
	 )
;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Проблему решил. Заменил фрагмент кода. Всем спасибо.
Вложения
Тип файла: lsp Fragm_Den.lsp (20.0 Кб, 239 просмотров)
jackUAROBEY вне форума  
 
Непрочитано 04.03.2016, 08:39
#7
sergant2la


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


Доброе утро! Помогите решить проблему. В AutoCAD 2016 SP1 программа выдает такое сообщение "Неправильное ключевое слово" Задайте параметр: Замкунть, Разомкнуть, Сплайн, Убрать сглаживание, обратить, Отменить. Что делать?
sergant2la вне форума  
 
Непрочитано 04.03.2016, 08:53
#8
sergant2la


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


Скрин проблемы
Миниатюры
Нажмите на изображение для увеличения
Название: Неправильное ключевое слово.png
Просмотров: 174
Размер:	8.0 Кб
ID:	166483  
sergant2la вне форума  
 
Непрочитано 04.03.2016, 09:28
#9
trushev


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


Цитата:
Сообщение от sergant2la Посмотреть сообщение
Что делать?
Скорее всего решение в #5. И обратите внимание на различия синтаксиса функций:
Синтаксис функции command-s:
(command-s [cmdname [arguments ...]]).
Синтаксис функции command:
(command [cmdname [arguments ...]] ... [cmdname [arguments ...]]).
trushev вне форума  
 
Непрочитано 04.03.2016, 19:49
#10
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Судя по сообщению на картинке проблема в красной строчке
Цитата:
(defun *error* (msg)
(vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
(if (< (atof (getvar "ACADVER")) 17.1)
(vla-sendcommand (vla-get-activedocument
(vlax-get-acad-object)) "_.undo 1 ")
(command nil nil nil nil "_.undo" 1))
(princ "\nВыход во время обработки данных\n")
)
Попробуй без этой строчки (оставлена синяя скобка)

Код:
[Выделить все]
(defun *error* (msg)
(vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
(if (< (atof (getvar "ACADVER")) 17.1)
(vla-sendcommand (vla-get-activedocument
(vlax-get-acad-object)) "_.undo 1 ")
) ;_ (command nil nil nil nil "_.undo" 1)
(princ "\nВыход во время обработки данных\n")
)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 11.03.2016, 08:43
#11
sergant2la


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


Цитата:
Сообщение от VVA Посмотреть сообщение
Судя по сообщению на картинке проблема в красной строчке

Попробуй без этой строчки (оставлена синяя скобка)

Код:
[Выделить все]
(defun *error* (msg)
(vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
(if (< (atof (getvar "ACADVER")) 17.1)
(vla-sendcommand (vla-get-activedocument
(vlax-get-acad-object)) "_.undo 1 ")
) ;_ (command nil nil nil nil "_.undo" 1)
(princ "\nВыход во время обработки данных\n")
)

Огромное спасибо!!! Удалил строчку, всё стало работать.
sergant2la вне форума  
 
Непрочитано 19.04.2016, 11:46
#12
brokman


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


VVA
Так как правильно, удалить строчку и оставить скобку или ваш код
Код:
[Выделить все]
(defun *error* (msg)
(vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
(if (< (atof (getvar "ACADVER")) 17.1)
(vla-sendcommand (vla-get-activedocument
(vlax-get-acad-object)) "_.undo 1 ")
) ;_ (command nil nil nil nil "_.undo" 1)
(princ "\nВыход во время обработки данных\n")
)
brokman вне форума  
 
Непрочитано 19.04.2016, 13:01
#13
brokman


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


Сначала было ошибка как в посте 8, вставил этот код
Код:
[Выделить все]
(defun *error* (msg)
(vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
(if (< (atof (getvar "ACADVER")) 17.1)
(vla-sendcommand (vla-get-activedocument
(vlax-get-acad-object)) "_.undo 1 ")
) ;_ (command nil nil nil nil "_.undo" 1)
(princ "\nВыход во время обработки данных\n")
)
в лисп из поста 6, вылазит след:\

Autocad 2015 SP2 лицензия
Миниатюры
Нажмите на изображение для увеличения
Название: Ошибка.png
Просмотров: 76
Размер:	22.5 Кб
ID:	169051  

Последний раз редактировалось brokman, 19.04.2016 в 14:34.
brokman вне форума  
 
Непрочитано 19.04.2016, 18:42
1 | 1 #14
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от brokman Посмотреть сообщение
Так как правильно, удалить строчку и оставить скобку или ваш код
В #10 удалить красное, оставить синее
Код во вложении у меня работает
Вложения
Тип файла: lsp Fragm_Den_VVA_2016.lsp (20.2 Кб, 538 просмотров)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 20.04.2016, 11:00
#15
brokman


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


В принципе всё работает, но если в одном месте много всяких блоков, подвшивка и элементов с разными слоями, то выдает, то что я написал выше. файл скинуть пока не могу, вечером скину.
brokman вне форума  
 
Непрочитано 08.04.2017, 23:02
2 | #16
petro_f

Проектировщик
 
Регистрация: 06.10.2016
СПб
Сообщений: 299
Отправить сообщение для petro_f с помощью Skype™


Цитата:
Сообщение от VVA Посмотреть сообщение
В #10 удалить красное, оставить синее
Код во вложении у меня работает
Добрый день коллеги. Немного поправил и дополнил плагин:
  1. При взрыве блока (если он попадает по линии разрыва) удаляются невидимые аттрибуты (взял функцию "Burst without Invisible Attributes" http://www.lee-mac.com/upgradedburst.html) [ver. 2016_burst.zip ].
  2. Добавил рисование линий разрыва и выбор 2 или 4 линии [ver. >= 2.1].
  3. Добавил отдельный функционал рисования линий разрыва. Команда BREAK-LINE [ver. >= 2.1]. Добавил одинарную линию разрыва [ver. >= 2.4].
  4. Немного "причесал" исходный код, что бы было понятно к какой функции какая команда принадлежит [ver. >= 2.1].
  5. Добавил защиту от падений, если вдруг плагин запустят в пространстве листа [ver. >= 2.1].
  6. Добавил функционал блокировки или разблокировки слоёв при работе плагина [ver. >= 2.1].
  7. Добавил функцию запоминания исходных настроек автокада при запуске плагина и возврата к данным настройкам после завершения работы плагина или его вылета по ошибке [ver. >= 2.1].
  8. Поправил функцию рисования задней линии при выборе двойной линии разрыва по команде BREAK-LINE [ver. >= 2.3].
  9. Убрал отключение привязки при указании точек линий обрезки [ver. >= 2.7].
  10. Мелкие исправления алгоритма [ver. >= 2.8].
  11. Исправлен косяк описанный тут и тут [ver. >= 2.9].
  12. Мелкие исправления алгоритма. Добавил возможность обработки штриховки через взрыв, так как старый алгоритм обработки не корректно обрезает штриховку. [ver. >= 2.9se].

P.S. Взрыв блока с подчисткой невидимых атрибутов я добавил из-за того, что у меня куча блоков со скрытыми атрибутами и не очень удобно потом это всё подчищать.
P.P.S. Переменная масштаба рисуемых линий берётся из переменной DIMSCALE. Установка переменной (setvar "DIMSCALE" 100) в консоли, где 100 нужное Вам значение.

Может кому пригодится такой вариант плагина.

P.S. Тестил акад 2015-2018
Вложения
Тип файла: zip Fragm_Den_2016_burst.zip (7.5 Кб, 171 просмотров)
Тип файла: rar Fragm_Den [ver. 2.7].rar (12.3 Кб, 117 просмотров)
Тип файла: rar Fragm_Den [ver. 2.8].rar (15.4 Кб, 49 просмотров)
Тип файла: rar Fragm_Den [ver. 2.9].rar (15.4 Кб, 160 просмотров)
Тип файла: zip Fragm_Den [ver. 2.9se].zip (16.1 Кб, 29 просмотров)
__________________
Если ты разговариваешь с идиотом - убедись что он не занят тем же!

Последний раз редактировалось petro_f, 07.10.2022 в 11:59. Причина: Обновление плагина от 07.10.2022
petro_f вне форума  
 
Непрочитано 30.05.2017, 15:58
#17
Composter

Отопление и вентиляция
 
Регистрация: 31.10.2008
Москва
Сообщений: 445


Запустил Fragm_Den_2016_burst все нормально сработало.
Поробовал Fragm_Den [ver. 2.5] выдало следущее
Цитата:
Fragm_Den_petro_f.lsp successfully loaded.
Command: ; error: syntax error
autocad 2014
Composter вне форума  
 
Непрочитано 30.05.2017, 21:04
1 | #18
petro_f

Проектировщик
 
Регистрация: 06.10.2016
СПб
Сообщений: 299
Отправить сообщение для petro_f с помощью Skype™


Цитата:
Сообщение от Composter Посмотреть сообщение
Запустил Fragm_Den_2016_burst все нормально сработало.
Поробовал Fragm_Den [ver. 2.5] выдало следущее


autocad 2014
Поправил архив. Оказывается "сглючил" редактор и склеил несколько фрагментов программы. Странно, что 8 скачиваний и только один человек отписался об этом
Composter скачайте заново и попробуйте запустить.
__________________
Если ты разговариваешь с идиотом - убедись что он не занят тем же!
petro_f вне форума  
 
Непрочитано 31.05.2017, 12:59
#19
SergAM243

инженерю чуть
 
Регистрация: 14.07.2008
Севастополь
Сообщений: 40
<phrase 1=


Запустил Fragm_Den_petro_f.lsp Акад2015 чистый.
С принудительной отрисовкой цветом "черный" и толщиной 0,18 можно смириться.
Хотя, по-моему, лучше оставить с текушими настройками слоя.
Снимает все настройки привязок и не возвращает в исходное.
При отрисовке брек-линии отрисовывает ее величиной 10 мм. Для строителей и черчении объектов в масштабе 1:1 - это очень мало.
Можно ли, чтобы он (она), лисп (прога), брал масштаб из чертежа?
Ну и в любом случае большое спасибо за доработку программы под последние АКАДы.
SergAM243 вне форума  
 
Непрочитано 31.05.2017, 21:21
#20
petro_f

Проектировщик
 
Регистрация: 06.10.2016
СПб
Сообщений: 299
Отправить сообщение для petro_f с помощью Skype™


Цитата:
Сообщение от SergAM243 Посмотреть сообщение
Запустил Fragm_Den_petro_f.lsp Акад2015 чистый.
С принудительной отрисовкой цветом "черный" и толщиной 0,18 можно смириться.
Хотя, по-моему, лучше оставить с текушими настройками слоя.
Снимает все настройки привязок и не возвращает в исходное.
При отрисовке брек-линии отрисовывает ее величиной 10 мм. Для строителей и черчении объектов в масштабе 1:1 - это очень мало.
Можно ли, чтобы он (она), лисп (прога), брал масштаб из чертежа?
Ну и в любом случае большое спасибо за доработку программы под последние АКАДы.
Масштаб берётся из переменной DIMSCALE - установка переменной (без кавычек) - "(setvar "DIMSCALE" 100)". Или поиск и замена по плагину: найти "(getvar "DIMSCALE")" заменить на "(getvar "НУЖНАЯ_ВАМ_ПЕРЕМЕННАЯ")". У себя я использую например переменную USERR1.

По поводу привязок - в автокаде есть небольшой косяк... я и так их откатываю при аварии плагина, но это не всегда выходит. Попробуйте версию 2.6.
P.S. При работе плагина, когда вылетали привязки, в консоли что было написано "Программа завершила свою работу" или что либо про ошибку?
__________________
Если ты разговариваешь с идиотом - убедись что он не занят тем же!

Последний раз редактировалось petro_f, 31.05.2017 в 21:27.
petro_f вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > AUTOCAD 2016 не работает программа вырезания фрагмента генплана Помогите внести изменения.

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Какой язык перспективен для инженера-конструктора с условием The_Mercy_Seat Программирование 705 17.03.2021 14:19
Информация по идентификационным кодам программ в сетевых лицензиях Autodesk KSI AutoCAD 1 14.09.2009 15:59
Фундамент с динамическими нагрузками в Scad Tlelaxu SCAD 9 31.08.2007 10:44