|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
06.10.2010, 16:28 | #1 | |
Autocad 2008 Autolisp Открытие чертежа
Регистрация: 01.07.2010
Сообщений: 521
|
||
Просмотров: 12490
|
|
||||
Программист-энтузиаст Регистрация: 17.07.2009
Воронеж
Сообщений: 571
|
Zaghim, посмотри тут
http://autolisp.ru/2010/04/08/procee...tive-document/
__________________
cadtools |
|||
|
||||
Регистрация: 01.07.2010
Сообщений: 521
|
Документ открыл таким способом
(vla-open (vla-get-Documents (vlax-get-acad-object)) "путь и имя" :vlax-true " ") т.е. чертеж стал активным, в нем можно сделать то, что я хочу. Как его теперь закрыть и что самое главное, как сделать что бы сохранилось то значение, которое мне нужно? |
|||
|
||||
Цитата:
Подробнее - Работа с неактивным документом Там же есть примеры
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
Регистрация: 01.07.2010
Сообщений: 521
|
Смотрите, мне нужна координата. Я передаю туда координату и получить назад тоже должен ее. Я думаю это можно сделать, если я сохраню координату в файл, в новом чертеже ее прочитаю и сохраню опять в этот файл уже другую. Вопрос в том как закрыть активный документ. Через close закрывает все окна кроме активного(((( А вот с неактивным вообще хз, ничего не понял и примеры какие-то непонятные(((
|
|||
|
||||
Почитай Последовательное применение lisp-функции к множеству файлов DWG
Ты пытаешься реализовать вариант №1 из #4. Тогда не нужно делать файл активным, а работать через указатель на документ (открытый файл)
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
Я просто удивлен! Все время пользуюсь vla-Open и vla-Close и не знал, что открыть и закрыть файл вообще проблема.
vla-Close закрывает документ как с сохранением, так и без, как с прежним именем, так и с новым, типа Save As. vla-Open применяю к указателю на Documents, а когда открыл - сохраняю указатель на открывшийся документ и применяю к нему vla-Close. Сколько не напрягал мозг, а так и не понял почему такие ассы как VVA и Kpblc открывают документ по другому? Ну мелькнет в окне и что? |
||||
|
||||
Да без проблем. Только про значение поясни. Ты в файле что-то меняешь и далее save делаешь?
А код - Код:
Я заметил, что ты открываешь файл с аргументом :vlax-true - это только для чтения, а :vlax-falce - с возможностью редактирования. Может поэтому у тебя не сохранялись данные? Последний раз редактировалось Supermax, 06.10.2010 в 23:12. |
||||
|
||||
Регистрация: 01.07.2010
Сообщений: 521
|
Так постараюсь еще раз более подробно. У меня открыт один чертеж, на нем есть всяческие линии. Есть такой же второй чертеж, тоже с линиями, но отличающийся своим расстоянием друг от друга. Я тыкаю точку - получаю координату - расстояние до соседней линии по оси Y. Затем запоминаю ее и заношу в атрибуты динамического блока. Ок, все круто. А теперь мне нужно получить вторую точку из другого чертежа и занести ее в этот же блок! Т.е. я открываю второй чертеж, причем точка куда я тыкнул 1 раз должна быть уже не нил на новом чертеже. Нахожу там координату до соседней линии, сохраняю ее, закрываю чертеж без сохранения и возвращаюсь к начальному чертежу, далее вношу второе значение во второй атрибут динамического блока. Во так думаю понятнее)
Про сохранение. Когда мы работаем на одном чертеже и выполняем там свой лисп, то все значения, сохраненные в переменных, будут доступны только на этом чертеже, т.е. если я открою новый чертеж и посмотрю, что у меня лежит в переменной допустим а1, там будет нил, хотя на первом оно равно 20, к примеру. Вот о чем я и говорил. Такая структура не работает... (setq doc1 (vla-open (vla-get-Documents (vlax-get-acad-object)) "путь и имя" :vlax-true " ")) (setq bp2 bp1) (setq bp2 (polar bp2 0 10000)) (vla-Close doc1 :vlax-true ) т.е. при открытие нового чертежа все значения ставятся нил Последний раз редактировалось Zaghim, 07.10.2010 в 10:18. |
|||
|
||||
Цитата:
Цитата:
__________________
Как использовать код на Лиспе читаем здесь |
||||
|
||||
Регистрация: 01.07.2010
Сообщений: 521
|
Вот о чем я и говорил. Такая структура не работает...
(setq doc1 (vla-open (vla-get-Documents (vlax-get-acad-object)) "путь и имя" :vlax-true " ")) (setq bp2 bp1) (setq bp2 (polar bp2 0 10000)) (vla-Close doc1 :vlax-true ) т.е. при открытие нового чертежа все значения ставятся нил. Хм,хм ... т.е. подгрузить чертеж х-рефом, заморозив предварительно все что есть на чертеже, выполнить мои махинации и потом х-реф удалить? А вот с vl-propagate сейчас попробую, есть еще две функции vl-bb-set and vl-bb-ref щас и их изучим |
|||
|
||||
Zaghim, создай два лип-файла. 1-й - макрос активного окна, в котором пользователя просят ткнуть в точку. Макрос создает переменную с заранее тобой придуманным именем. Запускает второй лисп-файл, где координаты точки берутся из переменной и расчитывается число, которое записывается во вторую переменную с заранее придуманным тобой именем (переменные надо определять, как правильно напоминает тебе Do$). Затем первый лисп создает набор файлов для обработки (все переменные автоматом там пропишутся) и через vla-SendCommand запускаешь в неактивном документе второй лисп, считываешь вторую переменную, запускаешь в следующем документе второй лисп и т.д.
Все происходит из первого, активного документа. Ты опять открываешь файл "только для чтения" Код:
Последний раз редактировалось Supermax, 07.10.2010 в 10:49. |
||||
|
||||
Регистрация: 01.07.2010
Сообщений: 521
|
Не не не))
DO$ правду сказал! Получилось все дело вот каким простым способом вез всяких там наворотов с ObjectDBX!!! (vl-propagate 'bp1) (vl-propagate 'bp2) (setq doc1 (vla-open (vla-get-Documents (vlax-get-acad-object)) "путь и имя" :vlax-true " ")) (setq bp2 bp1) (setq bp2 (polar bp2 0 10000)) (vla-Close doc1 :vlax-false ) Вот так вот...значение есть, теперь можем делать, что ходим, единственное экран теперь будет мелькать туда сюда...но это уже ерунда! Файл мне и нужно открывать только для чтения, я в нем ничего не меняю, только получаю свое и сваливаю) Еще ерунда в том, что физически файл не закрывается, т.е. я возвращаюсь к первому чертежу, а тот остается... вот это большая беда! |
|||
|
||||
Блин! Куда ты возвращаешся? Ты из какого файла запускаешь коды? Из какого документа ты делаешь vla-Open? И как ты замеряешь расстояние, если ты функцию polar запускаешь не в открытом тобою документе, а в том, в котором сидишь?
надо делать Цитата:
|
||||
|
||||
Как он у тебя становится активным?!!! Ты ему что vla-Activate делаешь?
Ты хоть на монитор смотришь? Ты что перед сабой видишь? Твоя Цитата:
|
||||
|
Опции темы | Поиск в этой теме |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Видеоуроки AutoCAD | kosmax | AutoCAD | 173 | 17.02.2017 15:08 |
Проблемма с установкой AutoCAD 2008 | Alxndr1697 | AutoCAD | 27 | 24.04.2010 21:43 |
Ищу любое рукодство пользователя AutoCAD Electrical 2008 | DAM | Поиск литературы, чертежей, моделей и прочих материалов | 3 | 07.10.2009 17:20 |
Книга Хейфеца А.Л. 3D-технология построения чертежа. AutoCAD. 3-е изд. | BM60 | Разное | 22 | 16.02.2009 09:55 |
не удаляется AutoCAD Architecture 2008 | ПалычЪ | AutoCAD | 4 | 19.12.2007 09:53 |