|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,426
|
Во-первых, СПДС - это arx-приложение, там все достаточно сильно друг на друга завязано, и выдрать оттуда кусок ИМХО нереально.
Во-вторых. В BricsCAD'e лично у меня не распозналась в свое время стандартная штукенция - function. Так что я бы не говорил даже о полной совместимости на этом уровне. Попробуй в бриксе запустить: Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 26.06.2007
Воронеж
Сообщений: 151
|
Кулик Алексей aka kpblc, хех... приложение делаю для BricsCAD, а запускаю в Автокад. Попробовал эту прогу оттуда - столкнулся с тем, что не знаю, как её запустить. Приложение-то загрузил, а вот как вызвать его? В Автокаде надо просто написать в командной строке имя после defun, а тут выдаёт ошибку.
Цитата:
ShaggyDoc, что это за язык? ru-app-begin, ru-conv-millimeter-in-paper-to-unit - первый раз вижу (и мой Автокад тоже) =) |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,426
|
Запускай как (test) - в скобках.
Цитата:
![]() _audit иногда подобную ситуацию лечит, но именно иногда. Соответственно приходится использовать _wblock, который в Brics'e (по крайней мере у меня так получилось) не всегда корректно срабатывает, особенно на расширенных данных, сохраненных на примитиве (у меня из 200 примитивов с пользовательскими РД 3 штуки их потеряли после _wblock, также был потерян пользовательский словарь файла; а подробно в причинах я копаться не стал).
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
инженер (КМ) Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837
|
Цитата:
Яж тебе и не давал готового решения... Ну вот сделаешь ты свою выноску из отрезков и текста и что ты с ним дальше будешь делать? Дальше это не выноска, а набор отрезков и текста. И чтоб тебе отредактировать свою выноску тебе надо будет всякие stretсh, move испоользовать, полка сама за текстом не побежит, а значит надо будет её отдельно удлинять. Я тебе предложил leader с любыми стрелками и ассоциированный с ним блок, т.е. двигаешь блок - за ним сам бежит кончик leader-а. Можно без ассоциаций загнать это все в группу и будут всего две ручки для редактирования. Дальше. Надо тебе дополнительную кнопку для поворота. Как ты собираешся свои разобщенные отрезки с текстом крутить вокруг неизвестной точки? А у блока все вместе и базовую точку искать не надо - это точка вставки. Как я уже сказал в случае с блоком и без кнопок здесь все решается просто, но можно и доп. кнопки сделать. Запросто взять entmod и поменять угол??? Да и выравнивание атрибутов туда же??? Хотя, наверное ты прикрепишь расширенные данные и запустишь реакторы - флаг в руки. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,426
|
> Krieger : В бриксе нет реакторов. Только если писать на VC++ dll-ки, которые и подгружать. Но это, как заявлено было, требует нехилого знания С++, MFC и ObjectARX для AutoCAD'a
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,426
|
Есть. Только не error, a *error*
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 26.06.2007
Воронеж
Сообщений: 151
|
вот, представляю вашему вниманию свой окончательный вариант программы построения гребенчатой выноски, выполненный, возможно, не на высоком уровне, но вполне рабочий:
Цитата:
|
|||
![]() |
|
||||
инженер (КМ) Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837
|
>Tonic
По твоему коду: Если нет слоя "6" - выдаст ошибку, значит надо проверить его наличие и если его нет создать. Например так: Код:
При использовании функции command следует отключать привязки (setvar "OSMODE" 0), а после выполнения их возвращать. Вообще все настройки надо бы вернуть т.е. и текущий цвет, и слой. setq можно каждый раз не писать и такой текст: Код:
Код:
Строчку Код:
Код:
Код:
При нажатий кнопки "esc" все полетит в тар-тарары (тем более если еще привязки отключить), для этого случая можно создать функцию *error*, которая и восстановит все значения. |
|||
![]() |
|
||||
Регистрация: 26.06.2007
Воронеж
Сообщений: 151
|
Спасибо! Буду учиться грамотности на автолиспе!
Отлично, в этом коде нет проблем, таких как нелепая временная прямая. Класс! Только я не весь код понимаю. Не могли бы вы дать комментарии? Особенно сложные конструкции с and, if, да и всё остальное =) |
|||
![]() |
|
||||
Регистрация: 26.06.2007
Воронеж
Сообщений: 151
|
Krieger, разобрался в коде, за исключением строк:
dist (/ (- (cadr pt2) (cadr pt3)) (sin (angle pt1 pt2)));вычисляем длину будующего отрезка - каким образом? я что-то смутно представляю, что получится, если координату новой точки разделить на синус угла pt5 (setq pt4 (polar pt3 (angle pt1 pt2) dist)) - pt4 так и не пригодилась, поэтому я её викинул (наверно, ваша описка) (cons 10 (trans pt3 1 0)) - зачем переводить в другую систему координат? ;этот отрезок не является примитивом и исчезнет при первой же перерисовке рисунка - когда программа завершена, и я удаляю полученную выноску, линия остаётся на экране, пока не двинешь линию прокрутки. Поставил в конце (command "_REDRAW") - помогло (cons 50 (angle (trans pt_first 1 0) (trans pt_second 1 0)));угол наклона - зависит от точек? почему? (cons 1 TexP);собсно текст (cons 7... - нет разницы, что список будет склеен не по порядку? '(71 . 0) - не вверх ногами - это, наверно, и так по умолчанию? (cons 11 (trans (polar (polar pt_first (angle pt_first pt_second) (/ (distance pt_first pt_second) 2)) (+ (angle pt_first pt_second) (* 0.5 pi)) 1.5) 1 0));точка вставки (вторая точка привязки) - самая непонятная строка! '(73 . 0) - выравнивание по базовой линии - это как? И ещё: сколько времени было потрачено на написание этого кода? На мой взгляд, очень профессионально, всё продумано до мелочей! |
|||
![]() |
|
|||||||||||||
инженер (КМ) Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
![]() Цитата:
Цитата:
Цитата:
Цитата:
![]() Цитата:
Цитата:
Цитата:
![]() |
||||||||||||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,426
|
> Krieger : Ты что, решил ликбезом по DXF заняться?
> Tonic : учитывая, что в BricsCAD'e достаточно жиденькая справка (по моим общим ощущениям), а также то, что ты работаешь в AutoCAD'e, отлаживая проги, тебе мой совет - находясь в VLIDE, нажми F1 и перейди на DXF Reference - там написано все, что тебе Krieger рассказал и еще немеряно другого ![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 26.06.2007
Воронеж
Сообщений: 151
|
Цитата:
Кулик Алексей aka kpblc, и в Help'е, и в книге Полещука (AutoLISP&VisualLISP) про DXF написано суховато. Вот стандартный список для LINE: Цитата:
|
|||
![]() |