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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Отключение регенирации и прорисовке в лисп-е?

Отключение регенирации и прорисовке в лисп-е?

Ответ
Поиск в этой теме
Непрочитано 05.03.2017, 10:51 #1
Отключение регенирации и прорисовке в лисп-е?
prajdziswet
 
Регистрация: 30.03.2015
Сообщений: 152

При выполнении лисп-файла часто выскакивают сообщение прорисовки и регенерации, можно ли их отключить? :
Нажмите на изображение для увеличения
Название: 01.png
Просмотров: 36
Размер:	9.2 Кб
ID:	184562
Нажмите на изображение для увеличения
Название: 02.png
Просмотров: 32
Размер:	13.7 Кб
ID:	184563

Просмотров: 2540
 
Непрочитано 05.03.2017, 11:05
#2
Кулик Алексей aka kpblc
Moderator

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


1. regenmode -> 0
2. Отключи в коде регенерацию
3. Вообще проанализируй код - при неудачной организации обновление будет выполняться слишком часто.
Offtop: Вот думаю, может, статейку нарисовать на эту тему?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 05.03.2017, 13:36
#3
prajdziswet


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
1. regenmode -> 0
стоит в начале (setvar "REGENMODE" 0) -- не помогало,хоть всеравно оставил....но он только в одном файле у меня регенирацию полюбому выбивало (даже при regenmode=0) в остальных прорисовку ...

Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
2. Отключи в коде регенерацию
не совсем понял ==наверное ты про первое (сис.переменную regenmode -> 0)

Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
3. Вообще проанализируй код - при неудачной организации обновление будет выполняться слишком часто.
вроде(хоть не факт) у меня начало выбивать прорисовку когда я блоки начал обрабатывать (чтобы код не переписывать, я их обрабатываю не через vlax, а просто открываю через командную строку и потом закрываю также = согласен коряво, но так все работает не погружаясь в активХ =да все теплится надежда что в консольном автокаде будет работать (accoreconsole), но наверное за прорисовки оно там стопорило=>еще не разбирался, но почему то подозрения на прорисовку,хоть оно ничего не пишет - прерывается на обработке полилинии пару тысяч пройдет и "бах в консоле", в простом автокаде обрабатывало до конца...). Причем на одном блоке может несколько раз прорисовку выбить, а может и несколько пройти и не запросить. (блоки беру с базы чертежа)...
насчет "неудачной организации" =как то размывчато, хоть если вдруг статейку надумаешь, можешь тоже написать от чего зависит... ==потому что я например не понимаю когда эта прорисовка запрашивается(от чего зависит и т.д) автокадом, а не понимая - код не оптимизируешь....


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

Последний раз редактировалось prajdziswet, 05.03.2017 в 13:46.
prajdziswet вне форума  
 
Непрочитано 05.03.2017, 16:05
#4
Кулик Алексей aka kpblc
Moderator

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


А почему ты используешь командные методы? Что препятствует использованию ename или vla?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 05.03.2017, 17:05
#5
prajdziswet


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


1) проще: в плане не надо переводить объект туда, а потом обратно + проще скорректировать dxf, нагляднее чем под vla-объектом что-то просмотреть, ==все наверху...да vla в некоторых местах удобнее, но тут все на виду (хоть ты можешь поспорить)
2) командные методы всегда в памяти, когда постоянно чертишь..
3) активХ много методов которые в accoreconsole не работают, раньше моя программа там отлично работала... например моя очистка поллинии с рекурсией (19970 ,как ты правильно замечал, пока у меня не превышало...) на очень больших объектах может полчаса работать ато и больше = удобнее запустить на консольном автокаде, а в это время на основном чертить = поэтому и стараюсь писать без активХ -чтобы можно было теоретически и на консольном использовать
//правда сча засада - в плане что оно прерывает в консольном (подозрение что запрашивает там же - туже прорисовку и не пишет,хоть надо эхо включить - cmdecho, хоть вроде все равно не писало) и правда там сложнее отладить (в консольном, редактор при командных методах вешается ; вдруг может подскажешь ==жаль если нельзя эту прорисовку отключить)
п.с а так ничего впринципе не препятствует использованию vla

Последний раз редактировалось prajdziswet, 05.03.2017 в 17:12.
prajdziswet вне форума  
 
Непрочитано 05.03.2017, 17:47
#6
Кулик Алексей aka kpblc
Moderator

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


prajdziswet, в описании блока примитивы обычно лежат именно в "мировой" системе координат.
Второе. Командные методы вызовут регенерацию после выхода из редактора блоков, хочешь ты того или нет
Третье. В accoreconsole действительно масса вещей не работает. Но, во-первых, тебе никто не мешает использовать entmod + entupd. А, во-вторых, почему именно accoreconsole? Почему не использовать ObjectDBX, и работать именно через него? Там, конечно, есть свои ограничения, но их нередко можно игнорировать. Какая твоя задача-то?

----- добавлено через ~2 мин. -----
Кстати:
http://autolisp.ru/2010/04/08/procee...tive-document/
http://autolisp.ru/2015/10/20/objectdbx-limits/
http://forum.dwg.ru/showthread.php?p=351547#post351547
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 05.03.2017, 19:16
#7
prajdziswet


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Какая твоя задача-то?
запутал ты меня ...задача таже обработка примитивов в блоке (а точнее очистка чертежа и ускорее его):
1) я бью на квадраты выбирая примитивы в квадрате ssget (обрабатывает быстрее чем засунуть все сразу, тут рекурсия),
2) перевожу простые примитивы (сплайны, отрезки, дуги) в полилинии _pedit, этой же командой сливаю полилинии
3) алгоритмом удаляю вершины, оптимизируя полилинию и entmod обновляю (надо попробывать entupd )
4) получаю имена блоков из базы, открываю блок провожу теже действия 1-3 ,закрываю блок
действия 1-3:
Нажмите на изображение для увеличения
Название: 01.png
Просмотров: 19
Размер:	32.9 Кб
ID:	184573
Нажмите на изображение для увеличения
Название: 02.png
Просмотров: 19
Размер:	14.3 Кб
ID:	184574
Нажмите на изображение для увеличения
Название: 03.png
Просмотров: 19
Размер:	10.5 Кб
ID:	184575
(даже если не столь внушительная очистка, при переводе спланов и их очистка - чертежи быстрее работают (если их много было))
при действии 4 (выскакивает окно прорисовки) которое приходится вручную отвечать, вот его нехочется получать сообщения прорисовки...

п.с
1)
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Почему не использовать ObjectDBX
почти знания о нем нулевые (что то делал net api)...
2) при запуске лиспа автокад занимает время от полчаса и более (может и быстро зависит от файла и количество объектов; полчаса примерно это для указзаного файла 180 тыс) = чтобы не занимать автокад на это время (а работать в нем -чертить), запускать через accoreconsole удобно (счас приходится через автокад)

задача "не получать эти окна прорисовки", "желательно ускорение обрабоки", "не занимать автокад, чтобы можно было работь паралельно с программой очистки" (раньше решал через accoreconsole)
prajdziswet вне форума  
 
Непрочитано 05.03.2017, 21:18
#8
kp+

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


Цитата:
Сообщение от prajdziswet Посмотреть сообщение
2) перевожу простые примитивы (сплайны, отрезки, дуги) в полилинии _pedit, этой же командой сливаю полилинии
3) алгоритмом удаляю вершины, оптимизируя полилинию и entmod обновляю (надо попробывать entupd )
Посмотрите исходные коды pltools, там это реализовано некомандными методами.
kp+ вне форума  
 
Автор темы   Непрочитано 05.03.2017, 22:59
#9
prajdziswet


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


Цитата:
Сообщение от kp+ Посмотреть сообщение
Посмотрите исходные коды pltools, там это реализовано некомандными методами.
а вы смотрели?

вы цитируете: перевожу простые примитивы (сплайны, отрезки, дуги) в полилинии _pedit,
в ptools реализовано преобразование линейных объектов в 2д полилинию, причем сдалано на активХ и не факт если преобразовать все (сплайны, отрезки, дуги) будет быстрее чем это выполнит встроенная команда "полред"...
вы цитируете: ..._pedit, этой же командой сливаю полилинии
посмотрите п-тулс, чем выполняется слияние полилиний?!
вы цитируете:алгоритмом удаляю вершины, оптимизируя полилинию и entmod обновляю
entmod - это командный метод? (я не передаю команду в командную строку автокада, это команда лисп-а, да оно обновляет примитив эт да)

п.с как Алексей правильно заметил
Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Почему не использовать ObjectDBX
, но вся проблема чтобы перейти у меня знания нулевые (инфы нормальной по-русски я не встречал ObjectDBX, Алексей может что порекомендует...еще ObjectARX или Net API можно что-то найти, но это не облегчает то что знаний у меня активной разработки нету)...ObjectDBX решил бы мою проблему насчет "занятости автокада", поэтому у меня на ум приходит пока что accoreconsole (поэтому я стараюсь не использовать активХ лисп-а)
самая проблема что я использую командный метод открытия и закрытия блока, тут начинаются "запросы прорисовки"(большинство из запросов приходится на блоки), можно было использовать активХ(vla-...), но тогда у меня автокад выпадает на время обработки лисп-а (accoreconsole можно вызвать несколько, причем автокадом самим я спокойно смогу пользоватся)...
задал вопрос начет "прорисовки", в надежде что может есть переменная типа "regenmode" или кто подскажет как выкрутится (потому что куча умных людей-на порядок умнее меня в этих вопросах, иногда читают и подсказывают что-то толковое, или хорошую идею)
prajdziswet вне форума  
 
Непрочитано 05.03.2017, 23:26
#10
skkkk


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
в описании блока примитивы обычно лежат именно в "мировой" системе координат.
Разве? Я тут недавно столкнулся с задачей получить координаты объекта в блоке и с задачей программно изменить параметр растяжения в динамическом блоке. Через ActiveX значения мне выдавались в системе координат объекта. И trans их совершенно не хочет конвертировать в мировую. Я так понимаю, что там играет роль матрица преобразования координат, которая возвращается функцией nentsel. Но я что-то поленился вгружаться в то, как это работает, да и время поджимало, и я просто "перегнал" координаты polar'ом. Знаю, неправильно, и не обработал моменты с масштабом и углом поворота блоков, но в той конкретной задаче этого не требовалось.
Хотелось бы все же понять, как получить координаты объекта в блоке в мировой СК?
skkkk вне форума  
 
Непрочитано 05.03.2017, 23:26
#11
Кулик Алексей aka kpblc
Moderator

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


Пам-пам-пам... Я сейчас капитально выпимши, поэтому могу не менее капитально очепятываться
Сугубо ИМХО: если надо преобразовать сплайны в полилинии, для этого совсем необязательно использовать командные методы. Мне кажется, что создать полилинию на основе сплайна не так уж и сложно: основная проблема в том, чтобы определить алгоритм. Придумаешь это - остальное становится тупо делом техники.
ObjectDBX я на autolisp.ru расписывал, это не так уж и сложно на самом деле.
P.S. Остальное уже завтра, сейчас практически сплю
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 06.03.2017, 10:39
#12
prajdziswet


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Мне кажется, что создать полилинию на основе сплайна не так уж и сложно: основная проблема в том, чтобы определить алгоритм.
согласен, у меня была такая первоначальная идея, но потом чтобы не заморачиваться...да и посмотрев на слияние полилиний (раньше програмно сливал, а не _pedit), так командно оказалось быстрее (ну если не все сразу скармливать _pedit а кусками)

У меня появилась идея: а если не отключать прорисовку, а наоборот регенерировать или освежать в обрабатываемом куске, не исчезнет ли "окно запроса прорисовки"? (да может оно станет чуть медленнее, но может будет терпимо...)

п.с а насчет алгоритмом создавать полилинию, еще раз подумаю (но это наверное следующий шаг, вот это надо будет мне почитать https://habrahabr.ru/post/264191/ ) ...пока и время более или менее удовлетворительно, единственно "запросы прорисовки" раздражают, да и что параллельно пока не получается запускать (раньше на accoreconsole работало, пока что-то я не переусовершенствовал )

----- добавлено через ~22 ч. -----
попробывал регенерацию - эффект тот же, "окна прорисовки" не исчезли...
prajdziswet вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Отключение регенирации и прорисовке в лисп-е?

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Интересно где работают ЛИСП программисты? dextron3 LISP 114 17.12.2017 13:53
Нужна помощь по изменению лиспа "Вставка пикетажа" в лисп "вставка плюсовой точки" sosococo LISP 8 27.01.2016 13:36
Что прописать в acad.lsp чтобы всегда загружались пользовательские лисп команды? overband LISP 43 07.02.2013 14:47
Лисп присадки мебельной фурнитуры Скулачёв А. LISP 18 20.08.2008 13:59
Лисп для копирования данных нескольких мтекстов по принципу расположения. Red Nova LISP 14 18.06.2008 22:08