|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Я начинаю заниматься программированием LISP (help)
Программист широкого профиля.
Челябинск
Регистрация: 08.09.2005
Сообщений: 722
|
||
Просмотров: 80011
|
|
||||
Проектировщик свиноводство Регистрация: 21.08.2003
Сообщений: 2,291
|
Есть и обратное соображение:
mmax задает вопросы чтоб получить ответы. Эти ответы могут быть полезны не только mmaxу. Система один вопрос - один ответ облегчает поиск ответов. Но на практике это тоже редко работает - чаще всего обсуждение начинает уходить в сторону от темы, ветвиться... В общем, мысли вслух. На самом деле я не знаю как лучше. ![]() |
|||
![]() |
|
||||
Регистрация: 29.10.2005
Нижегородская обл.
Сообщений: 219
![]() |
О, тык это любимое дело, нас хоть хлебом не корми
![]() http://dwg.ru/forum/viewtopic.php?t=...r=asc&start=15 |
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
Цитата:
![]() Самое лучшее - разбирать код готовых программ, однако (!), далеко не везде и не всегда соблюдены "правила хорошего тона" программирования, где то при помощи Лиспа тупо изобразили Command-код (иногда без него трудно что то сделать, аккуратно повернуть UCS, к примеру, но в большинстве случаев можно использовать более шустрые методы). Посмотри Лиспы, которые идут с АКАДом и с Экспрессами (хотя, последние порой сильно запутаны), их то писали профи. Цитата:
|
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Цитата:
А как сохранить текущую UCS? Какой способ посоветуете применить для заполнения штампа -- щелкнул мышью по полю штампа после предлагается ввести текст ?? ? ? ? |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Цитата:
![]() ![]() Сохранить текущую USC - а полностью задачу скажи. Может оказаться, что не надо ее сохранять (сам с таким столкнулся). Цитата:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
Цитата:
Цитата:
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
> vk : Но инфу-то в свойства сначала засунуть надо, а это уже другая песня немного (ЯТД).
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
> kpblc:
Ага, надо. Это можно легко сделать программно для группы файлов. Смысл такой что с одной стороны, в блок штампа напрямую мало чего пишется (разве что номер листа), а с другой стороны имеется доступ (на чтение точно) к свойствам без открытия файла. Только количество ограничено... Однако, не без изъянов: в блоке таблица, в ячейке таблицы поле - не обновляется автоматически (2005). |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
> vk : так-так-так, помедленнее пожалуйста.
Сделать программно для группы файлов - да, можно. только файлы надо вскрывать в фоновом режиме када (либо вообще в отдельном процессе) со всеми вытекающими. Цитата:
Поле в блоке, мне так кажется, вообще хреново работает. Проще уж использовать атрибут, наверное?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
> Profan : Уболтал, чертяка языкатый
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
> Fogel : (только прошу - без обид, ок?) MechaniCS 2.0, работает только под 2002. И, кроме того, грешит массой глюков.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 24.10.2005
Новокузнецк
Сообщений: 1,124
![]() |
у меня штамп блоком сделан... объект... авторский коллектив и тп в свойствах файла прописаны и через field в штамп вставляются... так же дата и имя файла с номером закладки... номер и название листа прописываются в атрибутах блока... может несовсем правильно выразился, ГУРУу поправят...
![]() |
|||
![]() |
|
||||
люблю мастерить Регистрация: 21.01.2005
Челябинск
Сообщений: 10,381
|
Цитата:
![]() ![]() |
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
> v_alex
Аналогично. > kpbls Цитата:
Про ограничение не уверен, как то десятка хватает, а больше пока не надо было... |
|||
![]() |
|
||||
Цитата:
![]() |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
> Александр Ривилис : Так тут просто изначально, я так понял, разговор шел про LISP. Ваш файл у меня пользуется популярностью, за что Вам огромное спасибо.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
У меня есть кое какая необычная задумка.
Так как геометрия штампа нам заранее известна, то с помощью ENTMAKE или COMMAND можно сразу заполнить все поля без проблем, те сначала создать функции заполнения с неопределенными переменными он с определенными точками вставки. Остается только заставить систему по щелчку мыши определить какая ячейка выбрана. Для этого мы возьмем и каждую ячейку заштрихуем с помощью вышеуказанных функций, и с помощью ENTLAST получим имена всех штриховок -- теперь каждой ячейке соответствует какаято переменная с именем штриховки. Далее идет в бой функция ENTSEL где пользователю предлагается выбрать какой нибудь объект... конец очевиден -- система получила данные о выбранной ячейке. После того как ячейка заполняется ENTDEL удаляет штриховку. Как вам такой вариант? Ну а UCS здесь нужна для того чтобы не высчитывать нечто универсальное для любого положения штампа относительно МСК или ПСК проще ее перенести в левый нижний угол штампа, впринципе все равно системе нужно знать где находится штамп, те в начале нужно указать левый нижний угол штапа, а потм когда штам будет заполнен ее надо будет вернуть на место, для этого и нужно сохранить ее начальное положение. Ну а потом возникает вопрос как заставить однострочный текст разместиться в две и более строки в поле названия чертежа если название длинное? здесь наверное нужно применить многострочный текс |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Цитата:
Цитата:
Или идет попытка вставки не блока, а просто таблицы? Если именно таблица как примитив када, то там в ней нет вообще однострочного текста - только многострочные, да вдобавок со своим редактором (2005) [/quote]
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
А если посмотреть в сторону анонимных блоков? Смысл такой что при каждой правке штампа старый блок отдает в Лисп-программу свои данные, Лисп рисует новый блок с новыми данными и вставляет на место. Чтоб не париться с выковыриванием текущих данных из примитивов блока, сохранять их желательно в XDATA. Примерно вот так.
Неиспользуемые анонимные блоки пургенятся автоматом толи при сохранении файла, то ли при открытии... Ну это если на блоках замкнуться.... |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
> vk : при всем уважении, немного позволю себе поспорить.
Анонимные блоки не вычищаются. Вычищаются автоматически при закрытии файла блоки разбитых размеров *D. Почему и невозможно восстановить разбитые размеры, кстати. По поводу XDATA... Выяснил я тут одну маленькую тонкость - известно, что их размер ограничен 16кб. Так вот, эти 16 кб дербанятся между всеми зарегистрированными приложениями. Именно поэтому добавить свои XDATA в ВЭ, например, практически нереально - они уже заняты собственно кадом. ИМХО - использовать функции (vlax-ldata-get) и (vlax-ldata-put) - тогда автоматом пишется и словарь, и данные неограничены в объеме. Эдуард тут рассказал, что у него здоровенный файл с такими штуками свободно ворочался.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
> kpblc
Удаляются. И еще, переименовываются. Можно проверить такой функцией: Код:
сохранить, поглядеть список, удалить блок-два-три..., сохранить и закрыть чертеж, открыть, поглядеть список блоков (там же будут *Model_Space, *Paper_Space....), и тэдэ.... Про объемы... 16 килобайт XDATA на каждый примитив... ИМХО, достаточно одного примитива чтоб прицепить к нему все переменные данные блока (ну, разве что кроме логотипа-картинки). Если все же этого не хватит, кто мешает использовать еще один примитив... Хотя, есть конечно и словари. Я об том что данные должны храниться компактно в специально определенном месте (это может быть и внешний файл в принципе), а не выковыриваться из TEXT'ов, содержащихся в блоке... Это конечно не сложно сделать, но к чему лишние трудности? ![]() |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Блоки и таблицы – это не сейчас.
У меня на подходе программа рисующая форматы А1-4 со штампом Ф1 потом я к ней прилеплю Ф2 и Ф2а, строительством не занимаюсь. Рисоваться они будут с помощью отрезков, для толщин линий будут созданы соответствующие слои. Над заполнением штампа я еще размышляю. Предложенный мною способ, описанный выше, даже мне кажется немного извращенным и сложным и очень трудно будет его адаптировать под обезьяну с гранатой. Думаю, лучше будет создать диалог похожий на штамп – так будет удобнее и проще. Худо-бедный DCL генератор я всетаки раздобыл http://www.cad.dp.ua/files/dcg101.zip Вобщем как я понимаю в этом вопросе спасение утопающих очень сложная задача. Подскажите тогда такое: При рисовании _LINE очень часто приходится первую точку щелкать мышью или указывать с клавиатуры, а вторую, указав направление мышью, ввести длину линии те одно число. Как бы этот способ реализовать с помощью Command или vl-cmdf. Область применения я еще пока не определил, но хотелось бы знать заранее вдруг приспичит. |
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
Цитата:
![]() Код:
|
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
Цитата:
Цитата:
![]() |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Всем привет
Оцените мое первое произведение. samo_format_dialog.DCL Код:
Код:
Продолжение samo_format.lsp Код:
Все они имеют значение 1 независимо от выбранных радиокнопок. И не смотря на это диалог работает нормально Продолжение samo_format.lsp Код:
Если из редактора VL приложения запускаются нормально, то с помощью (load “lsp”) из командной строки моя программа которую я считал полностью законченной оказалась очень глючной. Но всеже с глюками я разобрался и теперь хочу узнать какие глюки этой программы будут на чужих компьютерах, скорее всего они будут тк системные переменные мои и ваши могут отличаться и будут вызывать очередные глюки. Прошу всех опробовать и высказать свое мнение и отзывы. |
|||
![]() |
|
|||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
Много кода... Ниасилил...
![]() Навскидку: Цитата:
Цитата:
Ну млин... оно же не просто так называется ФУНКЦИЯ ! Передайте ОДНОЙ функции "Рисовать_Рамку" всего то пару аргументов "Формат" и "Стоймя_ЛЁжмя" - и программа сократится наполовину. Трудоемкость отладки - вчетверо. Цитата:
Цитата:
![]() PS не пробовал, патамушта обещали глюки. PPS Хинт: длинную портянку кода можно сохранить как файл и прикрепить к сообщению, дабы не загромождать страничку форума. Для этого даже придумали специальное поле с кнопочкой "Обзор" |
||||
![]() |
|
||||
Регистрация: 24.02.2006
Сообщений: 13
|
Я совершенно новый человек в программировании. но очень хочется попробовать научиться Автолиспу, книги Полещука, на которую все ссылаются на форуме, не могу достать в магазинах, может, кто-то скажет, даст ссылочку на электронную версию сего продукта? Если начинать, то лучше сначала, скачала множество различных руководств пользователя, и для программирования в частности. Но самих азов нигде нашла. Если можете, помогите .
![]()
__________________
Muchas gracias, senores! |
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
>Vika
Электронную версию вряд ли где то найдете. Как минимум, потому что это не в интересах автора. Вполне возможно, что где то валяется сканированая книга, однако, работать с такой ну уж если только совсем от безысходности.... Поищите классический хит от Аутодеск - "Садовую дорожку". Видел в сети русскоязычную версию, хотя и довольно старую. Однако, для понимания основ, этого вполне достаточно. Не стесняйтесь заглядывать в HELP - там есть множество примеров. |
|||
![]() |
|
||||
Регистрация: 25.08.2005
Сообщений: 2,556
|
Учиться прикладному программированию, занятие конечно полезное и нужное. Но вот относительно рамок и штампов даже не знаю как сказать, что бы не разозлить почтенную публику. Короче, в результате многолетнего использования всяческих программ, блоков, шаблонов в AutoCAD-е и в других CAD-ах осталось только две "синтетические рамки": горизонтальная и вертикальная. Тяну Stretch- ем. И горя не знаю.
![]() ![]() ![]() |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Цитата:
В этом месяце купил у них Visual LISP и секреты адаптации AutoCAD Полещука, так же там есть все его произведения. Недостаток в том, что книгу почтой ждать долго и дороже рублей на 50 выходит. И первое мое произведение, хоть и освистанное профессионалами, вы уже можете опробовать. У меня конечно уже давно была книжечка AutoCAD 2004:Разработка приложений и адаптация но по ней с нуля вряд ли чего поймешь, разве что DCL в обеих одинаковый. |
|||
![]() |
|
||||
инженер Регистрация: 05.12.2005
Москва
Сообщений: 425
|
Цитата:
Скажите а как добавить ELSe? |
|||
![]() |
|
||||
инженер Регистрация: 05.12.2005
Москва
Сообщений: 425
|
Цитата:
|
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Цитата:
AutoCAD 2004:Разработка приложений и адаптация это две разные книги Покупай почтой |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Цитата:
Освистали ![]() Ну да ладно, когдато я в автокаде и элипса не мог начертить. А освистали зря -- многа кода это потому, что она работает без глюков(у меня). Я не стал заниматься математикой чтобы высчитать положения рамок и штампов, прсто я решил двигать ПСК и все рисования рести от левого нижнего угла и возвращать ее на место в конце программы, тоже самое и с привязками(здесь сам Полещук подсказал) Первоначально не предполагалось никаких DEFUN, но суровая жизнь заставила меня применить это чудо, А потом как все глюки были устранены оказалось, что никакой DEFUN и не был нужен, ошибки были не в его отсутствии, но править код обратно не было никаких сил, поэтому решил оставить как есть, но все равно воспользуюсь советами vk. Ну и соответственно я получил кое какие знания. Например очень полезная вещь на мой взгляд Код:
Впринципе должны быть команды-дубли работающие без диалогов, но я их не знаю, а если это какие нибудь ситемные переменные отключающие диалоги в этих командах, то их я трогать не хочу тк придется возвращать обратно. |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Цитата:
Например в первом классе школы учат таблицу умножения. Здесь примерно тоже самое. И эту хигню я продам какому нибудь студенту с кафедры САПР там им такие задания на дом дают. |
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
Цитата:
Маленький секрет: в Лиспе нет ни одного оператора. Есть только функции. Кстати, все они достаточно подробно описаны в хелпе. Даже с примерами. Цитата:
Цитата:
|
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
Цитата:
|
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
Тэээксь...
Запускаем, смотрим что пишет Цитата:
Код:
|
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Цитата:
А вот насчет фланцев это ты верно подметил. Меня просто убивает рисовать эти чертовы круги в кругах, а по краям еще маленькие кружочки, а если это еще фланец муфты вала то еще + шпоночный паз, а еще бывают лючки разной формы, прародителем которых является все тот же круглый фланец, вобщем полная ....... учитывая еще то, что черчение я с детства ненавижу. Так что не думай что проблема фланцев интересна только тебе одному. Создать программу рисования фланца, вид с торца, я хочу уже давно. идея родилась еще раньше чем я обзавелся необходимыми бумажными справочными пособиями по ЛИСПУ. Алгоритм этой программы я пока еще ношу в голове тк программировать еще не умею. Жди, скоро выйдет в свет и эта программа, но сначала я займусь болтами. |
|||
![]() |
|
||||
Регистрация: 29.10.2005
Нижегородская обл.
Сообщений: 219
![]() |
>mmax и forMA
хочу вас поддержать в этих начинаниях, в смысле параметризации, и в частности 3-х мерной на lisp Я сам студент. Вот курсовой: http://dwg.ru/forum/attach_dwg/1139695170.dwg (расширение заменить на zip); выкладывал сдесь уже как-то раз, в теме про дин. блоки (которые кстати меня и разочеровали в конце концов). Фычертил ферму в 3D. Есть мысли параметризировать, (хотя разбиение на виды в акаде некудышное). С удовольчтвием посмотрю на Ваши заморочки. И если их окажется мало, то брошу Inventor ![]() |
|||
![]() |
|
||||
инженер Регистрация: 05.12.2005
Москва
Сообщений: 425
|
Помогите мне сделать модуль проверки длины сваи.
Программа должна , если длины нет, делать запрос на ввод длины сваи заново, если есть выполняться дальше.У меня почему-то она из цикла не выходет, если я после не правильной длины задаю правильную. Код:
|
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Цитата:
|
|||
![]() |
|
|||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
Цитата:
Цитата:
Добавочка: Цитата:
Цитата:
|
||||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Цитата:
Ситуация 1 Есть n условий: первое условие не верно второе верно третье неверно пятое верно .............итд --------- (действие не выполнять или отменить и выполнить все заново) Ситуация2 n услолвий верны ------------ (действие выполнить или продолжить работу программы) На мой взгляд так надо делать обработку неверного ввода в диалоговое окно, когда например не допускется пустой ввод, 0, итд. Или объясните как запретить ввод недопустимых данных в edit box INITGET здесь не (очень) подходит. |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Скажите пожалуйста,
Как нарисовать за один прием много окружностей. Список с центрами уже почти получен Количество окружностей задается пользователем и угадать его можно Но команда отрисовки должна быть одна, в нее надо засунуть список с центрами и одним радиусом. |
|||
![]() |
|
||||
инженер Регистрация: 05.12.2005
Москва
Сообщений: 425
|
Цитата:
|
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
> favorite
Простите, я в недоумении.... Это насколько же плохое знание английского надо иметь для того чтоб сверяя имя функции из вашего же поста букву за буквой (аж две штуки) с именами функций в списке хелпа.... Признайтесь, Вы шутите :?: ![]() ![]() ![]() ![]() ![]() ![]() [ATTACH]1140979281.gif[/ATTACH] |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Цитата:
Расскажу как я реализовал OR. Код:
будет выполнено (действие2) также например если только три условия верны или n-1 условий верно (Действие 1) будет выполнено если все условия верны Действия можно объединять с помощью PROGN те если какието условия не верны==> выполнить первые пять действий; если все верны == выполнить вторые десять действий. Если вместо or использовать PROGN и AND, то получается ситуация: если хотябы одно условие верно ===== выполнить (действие 1) если все не верны ===== выполнить (действие2) Если действие 2 опущено а по условиям выполняться должно оно, то не выполняется ничего и программа если на этом месте не заканчивается -- продолжается дальше. Кстати на этом форуме есть кнопки, кроме "цитата" позволяющие автоматически в текстовое окно вводить имена пользователей????? например чтобы щелкнул по имени пользователя и получилось > favorite |
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
Цитата:
Код:
Цитата:
|
|||
![]() |
|
||||
инженер Регистрация: 05.12.2005
Москва
Сообщений: 425
|
Цитата:
Да я шучу. ![]() ![]() ![]() |
|||
![]() |
|
||||
инженер Регистрация: 05.12.2005
Москва
Сообщений: 425
|
Помогите при изучении далее возникла проблема
Код:
Что сдесь не правильно? И зачем перед 0. двойные кавычки. Вот откуда я это взял http://www.niac.ru/graphinfo.nsf/5f7f2cd00c87d30e432566f9003f057a/fbb061dc26847979432568aa006973a2!OpenDocument |
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
Цитата:
Цитата:
|
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
Цитата:
|
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Цитата:
навреное я устал и меня начало глючить. Пойду посплю |
|||
![]() |
|
||||
инженер Регистрация: 05.12.2005
Москва
Сообщений: 425
|
Помогите.
Разбирая работу со списками не могу понять как, если у меня в блоке есть текст и еще ряд примитивов как уневерсально, добраться до них.
|
|||
![]() |
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
>favorite
"Классические" варианты такие: Код:
Код:
Зачем (terpri) вставил ![]() |
|||
![]() |
|
||||
инженер Регистрация: 05.12.2005
Москва
Сообщений: 425
|
Наверное я плохо объяснил что мне надо в результате работы моей программы получается
((-1 . <Entity name: 7e202b40>) (0 . "INSERT") (330 . <Entity name: 7e3d3cf8>) (5 . "28D8") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbBlockReference") (2 . "Ïðèìèòèâ") (10 23785.8 22829.1 0.0) (41 . 1.0) (42 . 1.0) (43 . 1.0) (50 . 0.0) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0)) Фактически мне нужно не перебрать все объекты, а найти имена примитивов в списке <Entity name: 7e3d3cf8>) , чтобы потом функцией ssget развернуть его и затем подправить. Задача: У меня в блоке текст и я хочу до него добраться. |
|||
![]() |
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
Цитата:
Описание блока (Block) - находится в таблице "BLOCK" (есть такая форма хранения информации в чертеже). В сам чертёж вставляются только "отражения" этой информации (Block Reference). К примеру найдём в таблице "BLOCK" описание блока с названием "My_Block": Код:
Код:
Код:
Код:
Код:
Код:
|
|||
![]() |
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
Цитата:
Классический пример использования функции ENTNEXT (кроме перебора примитивов в блоке) это сбор объектов после расчленения блоков, мультилиний, размеров (тоже кстати блок). Общий алгоритм такой: Код:
|
|||
![]() |
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
Кстати если вы более мение прилично читаете по английски (а это просто необходимо для самотоятельного изучения) лучший сайт для обучения AutoLISP это www.afralisp.co.za . Также для получения бесчисленного количества примеров по любой функции, просто заходите на www.google.com и набираете эту функцию в строке поиска. Особенно хороши японские и корейские сайты
![]() |
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
Цитата:
|
|||
![]() |
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
Цитата:
Да и не всегда нужен набор, иногда нужно просто обработать что-то по одному примитиву. Так что и то и другое хорошо в своём случае ![]() |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Если надо добраться до элементов описания блока (без взрывания), можно попробовать такое:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
> {Smirnoff} : Шутку понял
![]() Просто мне, например, оказалось проще работать через vla-функции - вот и пропагандирую их где ни попадя ![]() ![]() ![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Project Engineer Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392
|
Цитата:
![]() |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Лентяй, Лентяй... Я ж отлично помню всех, кто мне помогал. Если перечислять начну, я ж работать не буду дня два, не меньше!
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Господа, подскажите, как сохранить в переменной имена всех слоев текущего рисунка для передачи их в раскрывающийся список диалогового окна DCL, где пользователю предлагается выбрать один из имеющихся слоев.
Можно получить хотябы даже список с неужными элементами(тип линий, стиль печати), этих ненужных элементов я уже научился выбрасывать из списков. Проблема эта вызвана тем, что я не могу угадать какой слой использует пользователь для рисования допустим осевых линий, поэтому я решил предоставить пользователю выбрать самому выбрать слой для того или иного типа линий. |
|||
![]() |
|
||||
инженер Регистрация: 05.12.2005
Москва
Сообщений: 425
|
Цитата:
Подскажите пытаюсь текст в блоке заменить что-то не получается скажите где я не прав. Код:
|
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
Цитата:
|
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Цитата:
Код:
из такого неустойчивого списка будет сложновато отбросить лишние элементы А нельзя как нибудь не используя АктивХ извлекать имена. Я например до использования этой функции пытался зациклить TBLNEXT, пока безрезультатно. |
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
Цитата:
|
|||
![]() |
|
||||
инженер Регистрация: 05.12.2005
Москва
Сообщений: 425
|
Даааааа Многому мне еще предстоит научиться!
А скажите если я создам блок в котором будут аттрибуты, затем расставлю эти блоки на чертеже. Можно ли зделать программу которая в каждом блоке будет изменять аттрибут на нужное мне значение. Например нумерация свай.???? :?: |
|||
![]() |
|
||||
Регистрация: 11.10.2004
e•burg
Сообщений: 755
|
Цитата:
Цитата:
|
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Цитата:
просто я вместо (test) переменную LAYERS_LST тыркал, вот и чесал голову. Огромное спасибо Apelsinovу за предоставленую информацию. Вопрос к гуру(ам) сколько времени требуется чтобы основательно все изучить, понять и применять знания не обращаясь за помощью к другим. Слышал что ЛИСП умирает и получится так что я его изучил, а он уже в гробу лежит и Билл Гейтс последний гвоздь в крышку заколачивает. |
|||
![]() |
|
||||
Project Engineer Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392
|
Цитата:
|
|||
![]() |
|
||||
Регистрация: 11.10.2004
e•burg
Сообщений: 755
|
Цитата:
![]() ![]() Цитата:
![]() |
|||
![]() |
|
||||
инженер Регистрация: 05.12.2005
Москва
Сообщений: 425
|
Вопрос в почему в справке Vlisp я не могу найти написание таких функций как "_.insert" и "_.regenall" и что означает "_."?
(command "_.regenall")-здесь еще нужны какие-то параметры? Код:
Что не так? Объясните |
|||
![]() |
|
|||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
Цитата:
Цитата:
Цитата:
Цитата:
|
||||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Господа, подскажиете такую вещь.
Насколько я понимаю LISP - приложение нельзя внедрить в Файл рисунка, а очень бы хотелось чтобы программа выполнялась при открытии документа; acaddoc.lsp acad.lsp и автозагрузка здесь не катят тк программа должна выполняться на чужом компьютере. Скажите пожалуйста как на VBA создать внедренный макрос который бы выполнил лисп функцию (load "plot.lsp") те при открытии рисунка появляется сообщение с кнопками Да Нет если нажать да то выполнится лисп функция Связано это с тем, что печать на плоттере я осуществляю в фирмах, предоставляющих такую услугу, и мне уже надоело объяснять работникам фирмы, что формат А1 в на листе 620*940 разместится в масштабе 1:1 без вписывания, а они утверждают обратное -- типа ихние плоттеры имеют меньшую площадь печати чем формат А1 и умудряются вписывать формат с уменьшением масштаба в такую обширную площадь печати, что недопустимо для машиностроительных чертежей, к настройке печати они меня не допускают и моих советов не слушают тк считают ниже своего достоинства давать настраивать печать какомуто студенту. Тк мои познания автокада в последнее время несколько расширились и дрова плоттера установлены на моем компьютере, то печать я могу настраивать дома, и уменя все получается. |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Уважаемые господа, получил списки
Код:
Уж я их и переворачивал и объединял и чего только не делал а они всеравно ни ENTMAKE. Количество элементов в списках зависит от нужд пользователя. Начала и концы линий соответствуют правилу: Для первой первые элементы обоих списков Для второй вторые Для третьей третьи ИТД Это из моей программы для рисования фланца. Фланец уже рисуется, а осевые не проставляются, списки приведенные выше – координаты осевых для крепежных отверстий . |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Цитата:
Попробуем завтра, что нам Елпанов Евгений предложил. |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Цитата:
В лисп функции будет предусмотрено копирование этого файла в нужное место и последующе его удаление, а также будут заданы нужные мне параметры печати и автоматический запуск печати. Вот только надо сделать так чтобы функция выполнилась сама при открытии рисунка, но лисп здесь безсилен должен помочь VBA. |
|||
![]() |
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,202
![]() |
>mmax
Цитата:
1)Что тебе мешает настроить layout под нужный лист без полей если у тебя есть драйвера ИХ плоттера? Им надо будет просто нажать на кнопку "печать". 2) И кто заставит их запустить макрос, если ты его сможешь написать, если не проходит даже первый вариант? |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
>favorite № 107
По сваям см. здесь Последний раз редактировалось VVA, 18.09.2015 в 23:42. |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Цитата:
Если рассказать детально, то есть такая папка "Принтеры и факсы" в "Панели управления" там можно настроить размеры листа. По умолчанию там предлагается целый набор стандартных листов ,штук 50, размеры которых нельзя изменить, но есть 5 листов под названием Custom 1, 2, итд, размеры которых можно менять если принтер эти размеры поддерживает, но по умолчанию они имеют стандартные размеры. Беда в том что работники фирмы даже не подозревают что размеры листа можно менять. Они используют листы размером 620*940, а при печати выбирают лист "ISO A1 oversais" -- соответственно принтер тоже думает что у него стоит стандартный формат А1 и расчитывает его с полями для этого формата и глюк еще в том что хоть и "ISO A1 oversais" предусматривает печать без полей, поля по 5 мм всетаки есть--про калибровку работники фирмы тоже не догадываются. Впринципе если печатать без рамки 841*594, то чертеж более менее соответствует масштабу, но лишние края обрезать приходится ножницами и мне эту рамку приходится рисовать карандашом чтобы было видно где резать(напоминаю -- реальные размеры листа 620*940). Если я у себя на компьютере настрою размеры листа Custom 1 в соответствии с реальными размерами листа 620*940 то в пространстве листа область печати получается много больше чем формат А1 и рамка 841*594 болтается там как гвоздь в стакане. Но когда я приношу рисунок на печать то Автокад выдает сообщение на несоответствие настроек листов в принтере, тоесть надо заставить фирму тоже настроить Custom 1 по моим требованиям. .PC3 файл мог бы решить решить эту проблему. Как я заметил если в нем вызвать окно настроек принтера, такое же как и в папке "Принтеры и факсы" и задать нужные значения листов, то эти изменения сохранятся только в PC3 и никак не влияет на системные настройки в "Принтерах и факсах", что очень бы порадовало бы фирмачей, которые не хотят отступать от умолчаний ни на шаг. Но этот РС3 предательски отображается в списке принтеров при настройке печати и раздражает пугливых работников. Цитата:
А проехать по ушам работников, что этот макрос запускает какую нибудь автоматическую прорисовку стандартных объектов и типов линий , которые хранятся lsp файле, а также запускает печать с нужными параметрами. Для наглядности еще дома отключить все слои, а лисп-функция их включит, получится что не запустив макрос – рисунок будет голым то и печатать его нет смысла, а я всетаки постоянный клиент итп итд. Чем вызвана эта проблема в целом: Фирмы по оказанию услуг печати больших форматов для населения просто боятся простоев оборудования по причине сбоев программного и аппаратного обеспечения тк это их хлеб. И клиентов они не подпускают к настройкам потомучто боятся, что клиент в силу своей неопытности может внести какиенибудь изменения и просто чего нибудь напортачить, и после неумелых действий клиента их могут ждать сбои, простои итп. А обучить работников предприниматели просто не могут – таким вещам нигде не учат. В сложившейся ситуации мой PC3 был бы революционным решением в деятельности фирмы – теперь они могли бы говорить, что формат А1 полностью вписывается в лист без искажений, но мысль о том что какой то файл предоставленный клиентом да еще который надо скопировать в скрытую системную папку да еще какая то там Панель управления приводит их в ужас. И то что я предлагал хозяевам фирм бесплатно обучить персонал использованию РС3 не возымело на них никакого действия. Поэтому мне надо самому для себя принимать какие нибудь революционные решения иначе мои чертежи будут печататься в формате 835*589 а линию отреза полей мне приходится рисовать самому. Такую политику ведут все фирмы в нашем городе |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Цитата:
Сколько мне приходится их уговаривать, спорить чтобы они сделали все по моему все безрезультатно учитывая то что с листа они берут по 100р, а мои требования к печати не выполняют. однажды просто сказали: "Молодой человек, если вы умнее нас, то купите свой плоттер и печатайте как вам вздумается." В такие моменты мне хочется написать чтонибудь типа (vl file delete "systemroot\*.*) :twisted: |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Цитата:
|
|||
![]() |
|
||||
Регистрация: 14.03.2006
Сообщений: 863
|
в обчем маленький ликбез
в acade с недавних пор 4 автозагружаемых лиспа: acad2000.lsp - системный, загружается при старте системы acad2000doc.lsp - системный, каждый раз загружается при открытии или создании нового файла acad.lsp - пользовательский, загружается при старте системы acaddoc.lsp - пользовательский, каждый раз загружается при открытии или создании нового файла так вот, acad загрузит один ближайший acaddoc.lsp, а искать будет прежде всего в той папке, где лежит файл чертежа, и только потом, если не найдет, начнет рыть во всяких support file searh path, по порядку причем... Код:
![]() дерзайте... |
|||
![]() |
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,202
![]() |
Цитата:
|
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Цитата:
:?: Не могу прикрепить картинку средствами этого форума :?: Эта картинка расположена в Череповецкой локальной городской сети и может быть недоступна некоторым пользователям. ![]() При "Oversize: ISO A1" он будет без наружных рамок и чтобы обрезать лист ножницами надо будет самому нарисовать наружную рамку. Обрезать надо для тогочтобы сложить лист в курсовик и излишние поля только помешают. И как я уже говорил выше меня не допускают к настройкам печати даже если я сделаю чтото неправильно и за повторную печать заплачу как за два листа и при всем этом они умудряются вписать А1 формат с уменьшением масштаба в этот злополучный "Oversize: ISO A1" Ну и насколько я изучил печать не имея плоттера, а только его драйвер, то в "Oversize: ISO A1" я смогу добиться масштаба 1:1, но наружные рамки могут не пропечататься тк находятся на самом краю печатного края точнее совпадают с ним. Плоттер ничего не режет. Так что Custom всетаки лучше и реальнее отображает картину. Ну и при открытии рисунка печать пойдет сама не надо будет ничего настраивать. Вобщем хочу создать этакого печатного троянца который будет действовать по моим правилам а не по ихним. Ну и в продожение темы нашел тут нечто такое под названием PLOTSETTINGS, которое размещается в секции OBJECTS, а так же список DXF кодов к ним. На мой взгляд с помощью этого PLOTSETTINGS можно настроить печать лучше и прощще чем с помощью COMMAND. Но при помощи моих знаний объектной модели я так и не смог получить возвращаемого значения с кодом ((0 . "PLOTSETTINGS") (итд) (итп)) Скажите как воспользоваться данным свойством, модифицировать его и отправить на печать. |
|||
![]() |
|
||||
Регистрация: 14.03.2006
Сообщений: 863
|
to mmax
что то ты совсем отчаялся если такой обходной путь ищешь... Plotsettings - это pagesetup, для каждого layout и для модели эта группа будет... Так вот, чтобы получить ((0 . "PLOTSETTINGS") надо сначала получить ((0 . "имянужногоLayout") а уже затем из этого составного объекта можно выдернуть ((0 . "PLOTSETTINGS") и все остальное Ежели хочешь погеморроиться поищи в хелпе акада на тему Creating & modifying complex entities соответственно возникают еще два вопроса 1 лирический - вот я в свое время защищался так преподы нас с масштабом не прессовали - аппаратные ограничения, понимали блин... 2 практический - что мешает дома отпечатать в файл *.pln со всеми нужными настройками, а в фирме просто скопировать это дело на плоттер? при такой процедуре все без спросу работает а вообще ищи нормальную контору с нулевочкой или рулонной A1 - никто ведь не запретит расположить лист на плоттере вертикально? |
|||
![]() |
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
>mmax
Собственно создание чертежей для плотера которого нет не представляет большой проблемы, при одном условии. Надо иметь файлы шаблонов *.dwt созданные для этого плотера (естественно с рамками, потому что при отсутствии плотера невидно границ листа). При нестандарных форматах это кречно не спасает, однако со стандарными очень помогает. >Zouss Без обид. Писать определние параметров печати в s::startup - вредный совет - поскольку если эта функция переопределена, то работает при загрузке всех чертежей в данном сеансе, т. е. получается что при загрузке её из одной из копий acaddoc.lsp я на весь сеанс работы получаю измененение параметров печати во всех открываемых чертежах :evil: Если уже на то пошло, не проще ли просто после тела функции в файле acaddoc.lsp сразу её вызвать (defun My_Fun() ...) (My_Fun) ? Копии acaddoc.lsp конечно в опрелённых случаях выход, но что то мне не совсем нравится. Если такая копия будет случайно перемещеня не в "свою" папку и будет что то творить при открытии чертежей? Большинство контор даже не имеют специалиста который сможет догадатся о причинах подобных "глюков". Насчёт параметров печати, то их намного проще менять ActiveX - методами. |
|||
![]() |
|
||||
Регистрация: 14.03.2006
Сообщений: 863
|
Цитата:
а для нашего конкретного случая - простая проверка, например на наличие специфических блоков в файле или еще как нибудь вполне достаточна чтобы избежать возможных проблем собсна я и не обижаюсь - все что я хотел, так это показать самый примитивный, а значит легко и быстро реализуемый способ автозапуска lsp на чужой машине |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Насколько я знаю, применение S::Startup чревато некорректной работой AutoCAD - порядок вызова этой функции неопределен, и она может вызываться до момента загрузки всех необходимых модулей (lsp и arx) AutoCAD. Т.е. можно получить необъяснимый глюк нормально работающего кода.
Никто не мешает своему коду дать имя нечто типа Код:
Код:
По крайней мере, я бы сделал так.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 14.03.2006
Сообщений: 863
|
все же продолжаю оставаться при своем мнении, и вот почему
порядок вызова s::startup как раз таки определен - она запустится при загрузке *.lsp, но после того как все (defun этого файла будут проинициализированы. то есть наш s::startup может пользовать любую функцию загружаемого *.lsp предлагаемый вами вариант автозапуска при загрузке *.lsp заключается в том чтобы вынести например (zouss:starter) за пределы любой функции Но тогда, если (zouss:starter) использует какую либо другую функцию, то эта самая другая должна находиться в буквальном смысле выше описания нашего стартера, да и сам стартер должен быть описан выше первого вызова Вот откуда растут ноги необъяснимых глюков, чаще всего как раз для файлов типа acad.lsp и acaddoc.lsp где бывает много обращений к общим функциям блин нагрузил че-то... в обчем уважаемые оппоненты, если что киньте в меня кодом, а уж я в него внесу ошибку... |
|||
![]() |
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
>Zouss
Цитата:
![]() s::startup - действительно в некоторых случаях глючит, особенно при наличии приложений подгружающих *.arx по какой то своей логике. Я вообще не пользуюсь ни acaddoc.lsp ни s::startup, пишу всё в соответствующие *.mnl. В данном случае это конечно не проходит т. к. речь идёт о передаче файлов вместе с лиспами. В общем дело вкуса... А в данном случае с распечаткой программировать ничего не надо. Просто надо поиметь *.dwt сделанные для распечатки из пространства листов на разные форматы для соответствующего плотера. |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
До сегодняшнего дня я мирился с тем, что формат А1 = 835*589. Но теперь я буду играть по своим правилам.
А теперь представьте себе как округлятся глаза у девочки, которая будет печатать мои чертежи точнее когда он напечатается сам без предупреждения... |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Цитата:
|
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Цитата:
Все настройки печати можно поместить в список с DXF кодами у меня на них есть расшифровка на две страницы. Мне кажется достаточно сварганить список например ((0. "Plotsettings") (2 . "HP450.PC3") (4 . "oversise ISO A1") (44 841) (45 594) (И . "так далее")) -- печать сконфигурирована Вот только явно что entmake не запустит печать а этот список без определенных действий над ним не внедрится в базу рисунка. Скажите пожалуйста как запустить печать с параметрами из этого списка. |
|||
![]() |
|
||||
Регистрация: 14.03.2006
Сообщений: 863
|
Цитата:
вот например как создается полилиния (пример из хелпа acada) Код:
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Через (entmake) сделать Viewport нельзя, о чем прописывается в справке.
Насчет plotsettings - я думаю, что через (entmake) до них слишком тяжело будет добраться. Скорее всего, придется идти через (vla-) функции.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,202
![]() |
mmax
ИМХО - Вы просто плохо себе представляете сложность поставленной задачи, она никак не согласуется с названием темы. Однако я верю что при желании у вас все получится (хотя, я считаю что оно того не стоит). Исключительно ради примера, из моей мусорной корзинки такое произведение в тему (авось Вам поможет). ПРЕДУПРЕЖДЕНИЕ: глюков там может быть немеряно, сам я этим не поьзуюсь, но когда-то оно работало, для примера сойдет. Программа по выделенному участку в модели с заданным масштабом строит ВЭ в листе, для которого присваивается подбираемый формат и плоттер в зависимости от величины ВЭ, основная вызываемая функция C:APEL-PLOT-FORMAT. Код:
|
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Цитата:
Я всетаки понял что запустить печать на чужом компьютере без моего участия лучше всетаки с помощью Код:
Программа предположительно на 2-3 строчки. |
|||
![]() |
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,202
![]() |
Цитата:
Код:
|
|||
![]() |
|
||||
инженер Регистрация: 05.12.2005
Москва
Сообщений: 425
|
Я смотрю тема пользуется популярность.
Поздравьте меня на конецто мне привезли книжку " LISP Секреты адоптации" У меня вопрос требуется Сделать такую чтуку (4."fg") Fg -переменная и должна меняться
Фрагмент программы. |
|||
![]() |
|
||||
инженер Регистрация: 05.12.2005
Москва
Сообщений: 425
|
Спасибо, но я вот так сделат
вместо cons Vl-lisT* вставил и получилось
А что делает rtos? |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Гспода, предлагаю вам на освистание программу черчения фланца.
В ней устранены все глюки и при принудительном выходе все переменные возвращаются на свои места. В создании принимали участие: vk Apelsinov Елпанов Евгений [ATTACH]1142976684.rar[/ATTACH] |
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
Цитата:
![]() ![]() [ATTACH]1142989090.gif[/ATTACH] Правда, в командной строке была какая то ругань, но с этим, я думаю, можно смириться ![]() Шутка, конечно. А если серьезно, никогда не верь пользовательскому вводу. Каждое значение надо проверять. Капустная грядка получилась когда ввел отфонарные, явно неправильные значения. Правда, повторить не удалось, видимо, фонарь погас ![]() |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
> mmax : Несколько замечаний можно?
1. В самом конце файла проверь - поставлено двоеточие ":" вместо точки с запятой ";". 2. Что будет, если диалог не найден (не найден файл диалога, диалог не загрузился и проч?) 3. Внешние функции (типа получения списка имен слоев) можно засунуть как локальные в тело основной программы. 4. Можно заменить строку Код:
Код:
6. Несколько строк setq подряд желательно объединять в одну. Т.е. заменить Код:
Код:
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
К сожалению в 2006 работает глюкаво -- глюки с повторным запуском, которые отсутствовали в 2005. Вринципе эту функцию надо будет переработать. Хотя это не очень нужная функция можно от нее отказаться. Если в 2005 иногда оставался полигон то в 2006 появились какието странные точки соответствующие центрам отвертий.
Цитата:
Цитата:
Цитата:
Цитата:
Код:
Цитата:
![]() |
|||||
![]() |
|
|||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
Цитата:
Код:
Код:
Код:
Цитата:
Цитата:
![]() ![]() |
||||
![]() |
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,202
![]() |
Код:
__________________
apel.fas |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Цитата:
А вот отверстия бывают в основном для болтов М10 М16...... итд, если запросить радиус то например у механика мозги больше закипят. Хотя программа создавалась как раз для тупого ввода и при тупом вводе проще получить худобедный фланец оперируя радиусами, а так как болты измеряются в диаметрах то им и дан диаметр. Вобщем по этому вопросу можно целую тему открыть и долго дискутировать. А по поводу ввода текста или нецелых чисел в поле "количество", то тут все сделано, недаром там есть функция ALERT с предупреждением. Вчера перешел на 2006 и появились баги ведем отладку. |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Уважаемые господа, вам представилась возможность оценить мой первый шедевр «Фланец», а также пользователям Автокад 2006 все его баги.
Баги я исправлю, но есть вопросы вопросы и еще раз вопросы. Проблемы автоповтора уже устранил, они скрывались в команде установки текущего слоя -- неверный синтаксис команды VL-CMDF хотя слой и устанавливается, но Автокад после установки слоя выкладывает кучу мата. -- Спасибо kpblcу Включение выключение привязок походу здесь не страдает, потомучто программа была рассчитана на редактирование привязок в момент выбора точки вставки тк без привязок или возможности их редактирования указание точки будет затруднительным. ??????????????????????????????????????????? Осталась одна проблема (getpoint) CMDECHO страдает, что делать? Как позволить пользователю нажать ESK безболезненно? Если например он задал количество фланцев 100 и решил что это много и только в момент выбора точки вставки он может отказаться от продолжения программы. ??????????????????????????????????????????? |
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
Цитата:
В начале программы ставишь точку возврата. Можно через команду _.UNDO, а можно где то в начале, пока не было сделано изменений Код:
Код:
Код:
![]() ![]() ![]() Разумеется, *error* нужно так же локализовать. Кстати, ее можно переопределять по ходу программы любое число раз. Это даст возможность отследить какие то специфические ошибки. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
> mmax : Честно скажу, я не запускал на выполнение код. Есть вопрос: а почему бы не сделать цикл такого типа:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Project Engineer Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392
|
Я, оно, канешна, дико извиняюсь
![]() ![]() Да, главное забыл! Такая программа уже выкладывалась в Download. Я ее использовал - работает, как часы. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
> Лентяй : Так и ссылочку покажи на download-е
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
>favorite №162
Цитата:
2- имя блока Можно использовать шаблоны, как в ф-ции wcmatch Код:
- все в имени которых есть блок (мойблок, блок1, и т.д.) - все, заканчивающиеся на _с (krug_c, treug_c и т.д.) - и в придачу к ним блок TEST |
|||
![]() |
|
||||
Project Engineer Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392
|
Цитата:
![]() |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
> Лентяй : я далек от таких проблем, мене оно не треба. Ссылка больше нужна mmax, так что от его имени (да и от моих юзеров) Тебе земной поклон (ох-охо-ох, теперь бы разогнуться
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Project Engineer Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392
|
Цитата:
Цитата:
|
|||
![]() |
|
|||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Цитата:
Цитата:
Стандартов много, а две окружности по краям кружочки, -- одни для всех. Если выбирать из ГОСТа то должна бвыть хорошая база данных, а здесь и двух страниц кода не наберется. Да и вообще перед выбором фланца его предварительно надо расчитать руками и оформить расчеты на бумаге и на этой же бумаге в конце расчета указать "выбран фланец ГОСТ ххххх " и вроде только тогда приступают к черчению. Так почему бы просто не указать три радиуса да количество отверстий так более универсально будет. Цитата:
Нецелые округляются до целых. А программ позволяет рисовать не только фланцы, но и наборы окружностей по заданному алгоритму. Цитата:
Огромное им спасибо. |
||||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Фланец готов полностью если не считать нажатие ЕSC во время указания точки.
И еще один БЭД не очень значительный. Не буду приводить пока полностью всю программу суть проблемы можно извлечь отсюда: Код:
Код:
Почему вообще возникает такая проблема? И почему точка получает инвалидность именно при втором и третьем запуске а при других запусках нет я пробовал (repeat 50 (test)) тоже только второй и третий раз. Пробовал просто от балды Код:
Скажите как избавиться от инвалидности вообще. |
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
Цитата:
В любом случае, в первую очередь поглядеть в дебагере (или же просто через (princ) вывести содержимое переменной cpoint в командную строку), в какой момент дурь лезет, убедиться что точка передается верно. Ну и наверняка стоит обратить внимание на функцию (initget). PS 2006 не имею, потому посмотреть не смогу. Может там что то изменили в (getpoint) - это в хелп лезть надоть.... |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Цитата:
Забыл напомнить если запускать из редактора VisualLISP, то все проходит гладко, а если запустить с помошью (load) или через Tools==>Load App... тогда вылезает этот косяк, И вообще я давно заметил, что если из редактора VisualLISP программы идут без косяков, то это не значит, что они будут работать нормально вне редактора -- при вызове другими средствами. |
|||
![]() |
|
||||
инженер Регистрация: 05.12.2005
Москва
Сообщений: 425
|
Помогите. При изучении возникли вопросы .
Пробую программу написать для спецификации арматуры. Как из файла прочесть нужную строку командой read-line требуется прочесть 7 строку, но сразу команду read -line не повторяя. Можно ли это сделать и как? Тотже самый вопрос по Entsel у меня блок с аттрибутами требуется вычленить к примеру 3 аттрибут, я делал так (entnext(entnext (entnext gggg))) Можно как-то иначе Entnext не повторяя? Причем предварительно записав предыдушие значения имен аттрибутов в локальные переменные. Я организовал так: Код:
|
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
> mmax
Таки что же в таком случае дает вывод текущих значений в командную строку? И еще, бормотание в командной строке можно придавить - системные переменные cmdecho и nomutt (последняя не документирована была) > favorite По первому - вопросу читать построчно, в цикле. По второму - можно попробовать "угадать" хендл (5 группа DXF) и по нему выцепить. А можно и не угадать. Перебором надежнее. Ну и еще есть метод GetAttributes. Записать в переменные можно так Код:
![]() Проверяем Цитата:
|
|||
![]() |
|
||||
Регистрация: 14.03.2006
Сообщений: 863
|
информация то favorite комментарии from all
Код:
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Цитата:
Цитата:
Я бы до значения атрибута добирался по его тэгу, честно говоря. Хотя и тут могут быть проблемы - а если тэги повторяются?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
CAD Регистрация: 28.08.2003
Киев
Сообщений: 1,834
![]() |
Цитата:
Цитата:
Lisp язык списков, и функций работы со списками хватает практически для всех задач подобного класса. И не надо лохматить бабушку! |
|||
![]() |
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,202
![]() |
Цитата:
Код:
__________________
apel.fas |
|||
![]() |
|
||||
инженер Регистрация: 05.12.2005
Москва
Сообщений: 425
|
Help
У меня есть список Позиция Количество 1 2 1 3 1 3 2 4 3 3 3 3 - - n 5 Как сделать чтобы у меня выбор проходил и ссумировалось количество по всем позициям, для каждой позиции отдельно. Причем как вы наверное поняли количество позиций, может быть очень большим. (требуется сумм для каждой позиции вывести.) поэтому методом перебора, то ест (cond (= 1....200 Позиция)) (setq Количество (1+ Количество)) не пройдет, так как необходимо каким-то образом менять имя переменной. Есть каке-то идеи. Как это можно реализовать? ЧТо касается предыдущего вопроса. Список действительно структурированный. Поэтому я обощелся While и простым перебором строк. Спасибо |
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
Цитата:
Что то ваш список не очень то на список похож... по крайней мере, на лисповский ![]() Ну да ладно. Предположим, что это файл структурированый, c:\pos.txt .... Вот один из вариантов, не самый удачной, но все ж... Код:
Цитата:
|
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Цитата:
Код:
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
А если попробовать такое
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,202
![]() |
mmax
Вот пример отрисовки через ActiveX, попробуйте это, врядли будут лишние шептанья: Код:
Alan Цитата:
__________________
apel.fas |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
А вообщето мне надо правильный многоугольник
окружность можно построить с помощью ENTMAKE тогда рычать не будет. А вот многоугольник так просто с помощью ENTMAKE не построить, надо сначала найти координаты вершин. В отличии от команды POLIGON там нет центра описывающей окружности хотя есть количество вершин. :? |
|||
![]() |
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,202
![]() |
mmax
Любой акадовский примитив можно вставить в текущее пространство лиспом, как известно тремя способами: 1. Через command (или лучше vl-cmdf) 2. Через entmake. 3. Методами ActiveX. У каждого способа свои полюсы и минусы. Не стоит путать КОММАНДЫ и ПРИМИТИВЫ. Нет примитива - МНОГОУГОЛЬНИК - есть примитив ПОЛИЛИНИЯ (и 3 ее разновидности). То есть нарисовать многоугольник полилинией вы можете любым вышеперечисленным способом, однако для отрисовки 2-мя последними вам придется рассчитать координаты вершин.
__________________
apel.fas |
|||
![]() |
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,202
![]() |
Zouss
А вы думаете я говоря "расчитать" что имел ввиду? Это же. Но вот что Вы там у пользователя запрашивать станете, и станете ли - это уже зависит от конкретных целей.
__________________
apel.fas |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Цитата:
Но если пользоваться командами то насколько я заметил команды выполняются правильно, но выводят сообщения об ошибках причем не только в вышеперечисленном случае -- такие вещи могут напугать пользователя. А если найти координаты другим способом, то соответственно команды не понадобятся вообще. Нарисовать многоугольник с помощью (command или vl-cmdf "_poligon") а потом с помощью entget получить координаты -- это путь наименьшего сопротивления. Ну и соответственно если я не хочу видеть сообщения об инвалидных объектах, то от командного сценария придется отказаться. |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Ну ладно с глюками разобрались.
Возникает новый вопрос. Как реализовать, хотябы даже на примере моего фланца, функцию вставки фланца так чтобы было видно что вставляем. У меня два мнеия на этот счет 1. Фланец рисуется гденибудь, например на невидимом слое или слоях тк типы линий разные, полученные примитивы добавляются в набор, копируются с начальной точкой вставки, удаляются вместе со слоями, далее отдаем пользователю на растерзание команду вставки. 2. все тоже самое только из примитивов создаем блок, отдаем пользователю вставку блока, Если пользователь ткнул мышью, запоминаем точку вставки, и относительно точки вставки заново отрисовываем примитивы и удаляем блок. ??????????Я правильно мыслю??????????? |
|||
![]() |
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
![]() |
Цитата:
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
ИМХО: Купить "САПР на базе" - там решение есть. Я не очень его понял, втупую скопировал и все.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 14.03.2006
Сообщений: 863
|
само красивше будет если сначала, в DCL то есть, будет картинка со схемкой фланца, где будет видно-понятно какой параметр для чего нужен
Потом создаем блок там где надо и натравливаем на него команду move - не надо ничего удалять и с перерисовкой на экране париться точно так же можно поступить и с многоугольником - сначала запрашиваем у пользователя его центр и прочее, как в команде polygon; потом entmake его с использованием (polar pt ang dist), а потом rotate на него Чтоб совсем обойтись без вызова (command... можно при запросе параметров отрисовывать многоугольник через grdraw, делая "визуальнее", но тогда у нас будет два почти одинаковых куска программы вычисляющих вершины многоугольника - один для (grdraw... другой для (entmake... в общем тут главное не перемешивать, не чередовать куски кода разного назначения - сначала спросить все у пользователя все параметры объекта, потом создать его, потом помучить с расположением - и править удобно и вероятность необъяснимых ошибок меньше |
|||
![]() |
|
||||
Проектировщик ВК. LISP-любитель. Регистрация: 15.12.2003
Москва
Сообщений: 1,202
![]() |
Цитата:
Для создания файла, воспользуйтесь опцией File при запросе: command: Specify first corner [File] <exit>: НО! Еще раз предупреждаю - код размещен исключительно в ознакомительных целях, это не "готовая программа".
__________________
apel.fas |
|||
![]() |
|
||||
Программист широкого профиля. Регистрация: 08.09.2005
Челябинск
Сообщений: 722
|
Господа, я тут гдето видел что можно читать LISPом диалоги созданые в VBA.
Для этого я создал форму коды пока не добавлял, загрузил полученый DVB файл, и проделал такую операцию. Код:
Код:
Заметил разницу в ActiveVBProject здесь оно равно nil Код:
Но на этом почемуто дальше хождение по иерархии закончилось Нет функции (vla-get-ActiveVBProject) Значит этот путь неверный. Подскажите как достучаться до активного проекта?????????????? И вообще можно ли читать диалоги бейсика, если можно то стоит ли. |
|||
![]() |
|
||||
инженер Регистрация: 05.12.2005
Москва
Сообщений: 425
|
Я написал программу для работы которой требуется определенный блок с аттрибутом. Этот блок я копирую из файла вручную. Есть ли возможность чтобы при запуске моей программы этот блок автоматически или создавался, или просто вставлялся из файла вкотором он находится . Какие есть соображениея по этому поводу?
Еще вопрос можноли Entmake или средствами Activex создать блок с вложенными аттрибутами по коду как это сделать если есть пример скиньте, чтобы я мог посмотреть. Спасибо. |
|||
![]() |
|
||||
Project Engineer Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392
|
Цитата:
![]() Цитата:
Код:
Цитата:
|
|||
![]() |
|
||||
инженер Регистрация: 05.12.2005
Москва
Сообщений: 425
|
Решил я поинтересоваться , кто пользуется OBjectDCL.
Вчера я поставил, начал разбираться,просто здоро, я нашел версию 3.0 . ![]() Не знаю может есть более поздняя. Может ссылки на какую-нибудь литературу на русском у кого есть, а то закалибался по их справке изучать. Хотя не плохо получается и по англ справке. И еще не могу понять для чего в ActiveX нужны варианты ,как их использовать. Кроме VLax-3D-point Не могу придумать применения другим. :?: |
|||
![]() |
|
||||
инженер Регистрация: 05.12.2005
Москва
Сообщений: 425
|
>Лентяй , а чего-нибудь попроше нельзя придумать, как-то сложно ничего не понял
![]() |
|||
![]() |
|
||||
Project Engineer Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392
|
Цитата:
Код:
ins_pt - Insertion Point - точка вставки (список из 3-ч координат); blk_prp - Block properties - свойства блока - список; att_val - Attribute Values - значения атрибутов (список) adoc - Active Document - открытый чертеж (объект) blk - Block - блок, с которым работаем (объект) Код:
Код:
[/code] Код:
Код:
Код:
Код:
Код:
Код:
Код:
Код:
Код:
![]() |
|||
![]() |
|
||||
инженер Регистрация: 05.12.2005
Москва
Сообщений: 425
|
Большое спасибо. Надо попробовать что-то такое написать.
![]() ПРОГРАММА построения круга по координатам с диалоговым окном Код:
|
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Попробуй сделать в форме еще одну кнопку, типа применить.
В неё забей команду по построению круга с введенными данными. Кстати у тебя ObjectDCL демо или лицензионная. Вот пример отрисовки сетки. (использует блок спецификации, так что программу надо запукать из приложенного файла или внедрить блок спецификации в новый файл) Архи закидывать не буду. Тестировалось на 2006 Автокаде (русская версия) [ATTACH]1145171518.rar[/ATTACH]
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
инженер Регистрация: 05.12.2005
Москва
Сообщений: 425
|
Насколько я понял демоверсия , иначебы надпись не показывала при загрузке окна. По поводу еще одной кнопки я не очень понял, у меня есть кника Полещук Разработка приложений настройка и адаптация , там есть пример вроде бы я правильно понял, но почему-то не срабатывает.
Также пробую программу для расстановки свай написать. Почему-то при нажатии на кнопу graphicbutton программа то нормально срабатывает то вообще не срабатывает и CAD вырубает,пишет ошибка C++ итд, из-за чего это происходит понять не могу. Код:
Код:
[ATTACH]1145193300.rar[/ATTACH] |
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Ну конечно у меня ДЕМО-версия программы.
А у вас Лицензионка? Скиньте мне полную версию вашего приложния с файлами ObjectDCL. Попробую поковыряться. Правда Я и сам то недавно этим начал заниматься.
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
инженер Регистрация: 05.12.2005
Москва
Сообщений: 425
|
Цитата:
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Одно нажатие Esc:
Код:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Как ни странно не работает. Или я не правильно объяснил... допустим я выделил несколько примитивов. Хочу отменить выделение. Жму ESC кнопку - а нужно сделать кнопку для лентяя в одно нажатие "отмены" на какой либо панели.
^C^C - отменяет команду любую, но не отменяет выделение
__________________
Поезд который устал от ржавого здравомыслия рельсов... |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Пока лентяй будет наматывать километры, двигая мышку с текущей позиции курсора до кнопки и обрато, не лучше ли ему кликнуть правой кнопрой мыши и выбрать "Отменить выбор". Побереги экран для более полезных кнопок.
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Цитата:
Zouss, спасибо за подсказку чего-то тормознул и не поискал хорошо. Хотя искал...
__________________
Поезд который устал от ржавого здравомыслия рельсов... |
||||
![]() |
|
||||
Еще проблемка-вопросик: Нужно нарисовать точку из штриховки.
Делаю я ее так: Код:
Как это проделать?
__________________
Поезд который устал от ржавого здравомыслия рельсов... |
||||
![]() |
|
||||
Zouss, Donut в процессе эксплуатации не оправдал себя. 1.я причина: при растягивании некоторых объектов иногда захватывается точка и получается квадратное кольцо - что ни есть гуд. 2.я причина: при использовании привязки иногда привязывается к маркеру не к тому которому надо. У Donutа их 4 и расположены они не так как хотелось бы, а у штриховки один маркер и точно по центру - что очень удобно.
__________________
Поезд который устал от ржавого здравомыслия рельсов... |
||||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Пробуй так
Код:
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Еще вариант без лиспа
Код:
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
А, может, как-нибудь так?
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Цитата:
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Еще вопрос:
Не очень понимаю как работает ^P. В каких случаях это будет работать, а в каких нет? Как в макросах можно подавить запросы в командной строке?
__________________
Поезд который устал от ржавого здравомыслия рельсов... Последний раз редактировалось Shoorup, 02.04.2008 в 09:45. |
||||
![]() |
|
||||
VVA, справку умею открывать - пасибо.
Вопрос не в том что это, а как это работает? Выдержка из справки для переменной MENUECHO: Цитата:
__________________
Поезд который устал от ржавого здравомыслия рельсов... |
||||
![]() |
|
||||
Регистрация: 14.03.2006
Сообщений: 863
|
эхо-вывод в командную строку, меню в acad это ведь ничего особенного, просто оно (меню) пишет то что нужно в командную строку вместо вас и гораздо быстрее
MENUECHO или ^p это чисто косметика работает не только с diesel, но и вообще. просто иногда при отладке макросов бывает нужно посмотреть, что же все таки происходит, вот и включаем отображение всех запросов, даже тех на которые сам макрос и отвечает |
|||
![]() |
|
||||
Engineer Регистрация: 05.09.2003
New-York
Сообщений: 10,288
|
19-02-06 ММАХ сказал
Цитата:
|
|||
![]() |
|
||||
проектант Регистрация: 31.01.2007
город-Герой ОДЕССА
Сообщений: 26
|
Люди, помогите чайнику, а?
Наваял когда-то, при неоценимой помощи форумчан программулину. Она долго работала, радость приносила. Так долго, что я ее и подзабывать начал. Потом сменили кад, я подгрузил ее, но программулина работать перестала. Файл с прогой старый, и не отлажен (конечный вариант не сохранил- да знаю кто я... ![]() Может это и старая версия, не без багов. Но те баги я хоть и смутно но помню. Вроде их поправил ![]() Но прога стала выдавать непонятное сообщение в редакторе (окно консоль VL): $ ; ошибка: unknown format directive: "[" А такой не было, это точно. Я точно помню что раньше хоть в проге и и были дурацкие ошибки, но такой мессаги она мне не давала! Кстати символа "[" в тексте проги нет совсем! Да и еще. Кусочки проги проверка пропускает, в комстроку када они лезут без матюков, а при выполнении функции кад пишет что она не определена, хотя съедает ее без претензий! Если надо текст проги выложу (он махонький), просто чтоб здесь не пачкать..., может есть простой моментальный ответ на вопрос что значит это сообщение, и как это лечится? Спасибо! Последний раз редактировалось Kline_Kinder, 04.04.2008 в 20:33. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Подобное бывало на официальных локализациях AutoCAD 2005 (как с сервис-паком, так и без) и на 2006 (без сервис-пака). На последующих вроде не было.
Выкладывать код лично я особого смысла не вижу - ошибка самого AutoCAD'a (спасибо кривым ручкам локализаторов). Решение на caduser.ru Profan выкладывал - оно сводилось к редактированию штатных dll.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Установи (на всяк случай) service-pack - возможно, ошибка исчезнет.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
проектант Регистрация: 31.01.2007
город-Герой ОДЕССА
Сообщений: 26
|
Нет его
![]() Начальству выскажу ФЭ, пусть ищет SP ![]() Устанавливаю счас старый кад, а план местности по данным с буссоли буду чертить уже завтра. Спасибо, за то что наставили на путь истинный. То что это не мой баг, избавляет от штудирования основательно подзабытой инфы о лиспе ![]() Еще раз спасибо. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
А чего его искать-то, этот service-pack? Вот оно
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
проектант Регистрация: 31.01.2007
город-Герой ОДЕССА
Сообщений: 26
|
Новости
SP2 для 2007рус- ошибку не исправил SP для 2005рус- ошибку не исправил (монтировал 2005+SP поверх 2007р) Монтаж 2008 (англ)- ошибки нет, прога работает ![]() Спасибо! Я сюда наверняка загляну, по-этому напишите если прога кому-нить нужна. Прога чертит характерные точки плана местности, по данным полученным при съемке артиллерийской буссолью ПАБ-2Б ![]() |
|||
![]() |
|
||||
Регистрация: 11.10.2007
Gomel
Сообщений: 68
|
Надо начертить линию р1 р2 Координату p1 получаю через getpoint , точку p2 следующим оброзом
(setq p2 (vlax-curve-getclosestpointto (vlax-ename->vla-object (car ent)) p1) ) Теперь через команду (command "_line" p1 p2 "")... ничего не получаетья и через (vl-cmdf "_line" p1 p2 "")... вроде понимаю что чего то не хватает а вот чего не знаю... подскажите как правильно сделать пожалста |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
1.
vlax-curve-* принимают и возвращают координату в МСК (WCS) getpoint, entsel и command - в ПСК (UCS) (наводка: trans) 2. Отключить привязки (OSMODE) или так (command "_line" "_non" p1 "_non" p2 "")
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Регистрация: 11.10.2007
Gomel
Сообщений: 68
|
Кода такой (код кажеться kpblc писал) хочу сделать для себя... но не получаеться, должен рисоваться перпендикуляр к выбранной линии до точки... не получаеься ничего... возрващает тока значение точки и все..
больше ничего сделать не могу... не понимаю... помогиет плз (defun C:test (/ ent p1 p2) (vl-load-com) (if (and (= (type (setq ent (vl-catch-all-apply '(lambda () (entsel "\nВыбрать объект (линия) <Выход> : " ) ;_ end of entsel ) ;_ end of lambda ) ;_ end of vl-catch-all-apply ) ;_ end of setq ) ;_ end of type 'list ) ;_ end of = (= (type (setq p1 (vl-catch-all-apply '(lambda () (cond ((getpoint "\n Точка <или последнее> : " ) ;_ end of getpoint ) (t (cadr ent)) ) ;_ end of cond ) ;_ end of lambda ) ;_ end of vl-catch-all-apply ) ;_ end of setq ) ;_ end of type 'list ) ;_ end of = ) ;_ end of and (setq p2 (trans (vlax-curve-getclosestpointto (vlax-ename->vla-object (car ent)) p1) 1 0) ) ;_ end of setq (command "_line" "_non" p1 "_non" p2 "") ) ;_ end of if ) ;_ end of defun |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Про progn в IF забыл
Код:
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Нажимаешь на # , появляются тэги
Цитата:
По поводу IF (IF <УСЛОВИЕ> <УСЛОВИЕ=ИСТИНА> <УСЛОВИЕ=ЛОЖЬ>) Конструкцию IF тоже расткасил в эти же цвета Код:
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Регистрация: 11.10.2007
Gomel
Сообщений: 68
|
Еще вопрос есть. функция Fix возвращает целое число, но происходит у меня не всегда правильно, (fix 23.0) возвращает в какой то ситуации 23 а иногда 22, что может быть причиной ?
Последний раз редактировалось ALFMario, 13.05.2008 в 11:02. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
ALFMario, твою ситуацию повторить не удалось (сколько ни пытался).
Syrex, поищи по форуму. Такая тема точно была, это я помню.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 25.08.2005
Сообщений: 2,556
|
Цитата:
http://www.caduser.ru/cgi-bin/f1/board.cgi?t=19162TV |
|||
![]() |
|
||||
Тему не читал. Посоветуйте пожалста книжку по изучению лисп-а, только так чтобы для полного чайника в этом деле.
__________________
Блог |
||||
![]() |
|
||||
Ладно, с летературой разобрался, пытаюсь написать с другом лисп, и вот возникли вопросы, может кто подскажет.
1. Как определить список выделенных обьектов? 2. Как определить тип выделенного обьекта? 3. Как получить текст из выделенного Mtext а или Text a? 4. Как получить имена Layout ов? Заранее спасибо.
__________________
Блог |
||||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
1.Создаем набор
(setq ss (ssget)) Преобразуем набор в список (setq lst (_dwgru-conv-pickset-to-list ss)) Код _dwgru-conv-pickset-to-list 2. Имя примитива хнатится в поле с номером 0 Код:
4. (getvar "CTAB") - текущий (layoutlist) - все
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Спасибо за ответ, пока еще не все понял (т.к. друга программиста рядом уже нету) но на нашем с ним следующем "занятии" обсудим, наверное опять спрашивать буду.
![]()
__________________
Блог |
||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Одно уточнение: для получения строки многострочного текста только группы 1 может оказаться недостаточно - см. DXF Reference
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 12.07.2008
Сообщений: 211
|
Привет всем. Изучаю Lisp потихоньку, но сейчас нужно срочно проделать одну штуку на изучение которой времени нет. Вобщем я написал небольшую прогу, которая меняет папки поиска принтеров, таблиц печати и шаблонов документов.... мне нужно сделать так чтоб прога сама активировалась без ввода команды на ее запуск. Вот собственно мой деревенский код:
Код:
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
В _appload забиваешь файл lsp с примерно таким содержанием:
Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 18.12.2008
Сообщений: 1
|
Всем привет. У меня такой простенький вопрос. Нужно чтоб моя прога создавала размерный стиль с определенными параметрами. У меня есть файл с этим стилем, я набираю в командной строке (tblsearch "dimstyle" "имя") и он мне выдает список кодов. Дальше я его копирую и вставляю в entmake. В итоге получается следующее:
Цитата:
Подскажите что делаю не так и как правильно, буду очень благодарен. Уже замучился ![]() |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
340-ю группу надо менять. На форуме была тема по программному созданию размерных стилей - поищи.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Инженер-строитель Регистрация: 15.08.2007
Киров
Сообщений: 2,204
|
По поводу вопроса из поста #265.
Сказав "красиво", я имел ввиду следущее. Допустим, есть список из точечных пар (СВОЙСТВО . ЗНАЧЕНИЕ_СВОЙСТВА) Код:
|
|||
![]() |
|
||||
Конструирование в области нефтеразведки Регистрация: 10.02.2006
Гомель
Сообщений: 321
|
Если
Цитата:
Код:
vla_obj - vla-объект |
|||
![]() |
|
||||
Регистрация: 02.02.2009
Сообщений: 2
|
Товарищи!!!
Начал пробывать тяжкие попытки работать с Lisp и столкнулся с незнанием азов програмирования) Ввожу команды четко по учебнику точно по учебнику с содержанием (comand "_.LINE" "0.0" "210.0") (comand "210,297" "0,297") (comand "_C") после чего получаю ответ типа ; îøèáêà: no function definition: COMAND Подскажите с чем это может быть связано либо приведите пример правильного блока команд Заранее спасибо |
|||
![]() |
|
||||
Регистрация: 13.02.2009
Сообщений: 25
|
Хочу в программе AutoLISP написать программку Магический квадрат.
Это программка каким-то образом угадывает английские буквы на основе чисел. Вот ссылка: http://www.ugbereg.ru/magic.html Вопрос: Может у кого есть идеи по переносу данной программки на этот язык програмирования ![]() |
|||
![]() |
|
||||
Регистрация: 11.10.2004
e•burg
Сообщений: 755
|
Цитата:
![]() ЗЫЖ На сайте, куда ведёт ссылка пытаются отрабатывать какие-то скрипты (у меня зарезаны по дефолту), те, кто решит заглянуть, проявите осторожность - неисключены неприятности. Последний раз редактировалось Alaspher, 13.02.2009 в 11:46. Причина: добавление примечания |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
Zouss, это ты про кого?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
проектирование Регистрация: 29.11.2007
Москва
Сообщений: 311
|
Какое-то кидалово с этим квадратом. Расчитан на блондинок:
3. Найдите это число в таблице и символ, которому оно соответствует. И все люди интуитивно указателем мышки пробегают мимо загаданного символа. Тут не трудно угадать. Вот вы попробуйте просто загадать число и указателем вообще в поле знаков не шевелить - хрен чего этот квадрат угадает. ![]()
__________________
Обмениваю незнание на время. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Цитата:
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Регистрация: 20.01.2009
Сообщений: 1,170
|
Есть вопрос по VLA объектам.
Пишу програмку, которая перебирает все примитивы чертежа отбирая нужные для работы. при нахождении нового нужного объекта я сохраняю его параметры (имя и идентификатор) в точечной паре. Пару добавляю в список для последующей работы только с нужными объектами: Код:
Код:
Код:
Я чтот о делаю не так, или после создания второго VLA объекта первый перестает существовать и его адрес становится недействительным? Собственно проблему я уже решил, сохраняя не идентификатор VLA объекта а идентификатор примитива, но любопытство осталось... |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
nth работает только со списками, а для точечных пар используй car и cdr
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,450
|
А ты проверни в vlide:
Код:
Добавлено: Туда же... Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Инженер-строитель Регистрация: 15.08.2007
Киров
Сообщений: 2,204
|
|
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Makswell, Наверное имелось ввиду
Код:
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |