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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Выполнение команд во 2-м чертеже, создаваемом программой из 1-го чертежа

Выполнение команд во 2-м чертеже, создаваемом программой из 1-го чертежа

Ответ
Поиск в этой теме
Непрочитано 27.02.2013, 09:53 #1
Выполнение команд во 2-м чертеже, создаваемом программой из 1-го чертежа
swkx
 
Регистрация: 22.01.2010
Сообщений: 311

День добрый.

Есть чертеж 1.dwg. В нем запускается лисп, в результате выполнения которого создается новый чертеж, в котором выполняются различные построения.
И они-таки выполнняются, но вот в самом конце не выполняется команда ZOOM

И (vl-cmdf "_zoom" "_extents"), и (vla-ZoomExtents (vlax-get-acad-object)) срабатывают для 1.dwg независимо от того, активирую я 2-й чертеж или нет.

Подскажите, что делать и как жить дальше ??
Просмотров: 3307
 
Непрочитано 27.02.2013, 13:01
#2
Кулик Алексей aka kpblc
Moderator

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


Такими средствами нерешаемо, мне кажется. Можешь написать scr, который будет последовательно (потом) открывать файлы и работать с ними.
Но я этим давно уже не баловался, конкретного решения не подскажу
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 27.02.2013, 13:12
#3
swkx


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


Алексей,

при всём уважении - не верю, что нет простого способа)) По сути, после активации 2.dwg нужно тыцнуть на кнопку.
Разве нельзя программно добраться до нужной кнопки в панели инструментов "Зумирование" ?
Панель-то одна на все чертежи...
swkx вне форума  
 
Непрочитано 27.02.2013, 13:40
#4
Кулик Алексей aka kpblc
Moderator

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


swkx, лисп выполняется только в адресном пространстве текущего документа. Активация другого документа ставит лисп, запущенный в 1.dwg, "на паузу". Активировал обратно 1.dwg -> продолжение лиспа выполняется.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 27.02.2013, 13:41
#5
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от swkx Посмотреть сообщение
нужно тыцнуть на кнопку...
Разве нельзя программно добраться до нужной кнопки в панели инструментов "Зумирование" ?
даже если ты из лиспа и "тыцнешь" по кнопке, то по сути это самое "тыцанье" делает то же, что ты пытался сделать через командную строку. Соответственно и результат будет идентичным. Одно из фундаментальных ограничений лиспа в автокаде - работает в контексте документа.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 27.02.2013, 13:58
#6
swkx


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


kpblc и hwd,

Вы правы, разумеется. И мне это тоже известно, но, думал, вдруг какая-нибудь лазейка завалялась...
swkx вне форума  
 
Непрочитано 27.02.2013, 14:01
#7
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Подскажите, что делать и как жить дальше ??
Как вариант: написать небольшой код на языке, работающем в контексте приложения. В этом коде можешь в цикле перебирать чертежи, активируя их и запуская твой лисп. В этом случае всё будет работать. Либо, если нет желания заморачиваться с указанным мною вариантом, делать всё через скрипт, как уже советовал Алексей.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 27.02.2013, 14:13
#8
swkx


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


Цитата:
Сообщение от hwd Посмотреть сообщение
Как вариант: написать небольшой код на языке, работающем в контексте приложения. В этом коде можешь в цикле перебирать чертежи, активируя их и запуская твой лисп. В этом случае всё будет работать. Либо, если нет желания заморачиваться с указанным мною вариантом, делать всё через скрипт, как уже советовал Алексей.
Если бы речь шла о чем-нибудь серьезном, я бы так и поступил, но в моём случае оно того не стОит.
swkx вне форума  
 
Непрочитано 27.02.2013, 15:22
#9
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Цитата:
Сообщение от swkx Посмотреть сообщение
вдруг какая-нибудь лазейка завалялась...
Ну "из мухи по воробьям" лазйка есть:
Код:
[Выделить все]
 (vl-load-com)
(defun zoomfile(path)
  ((lambda (acad)
     ((lambda (doc)
        (vlax-put-property acad 'Visible T)
        (vlax-invoke-method acad 'ZoomExtents)
        (vlax-invoke-method doc 'Save)
        (vlax-invoke-method acad 'Quit))
      (vlax-invoke-method (vlax-get-property acad 'Documents) 'Open path)))
   (vlax-create-object "autocad.application")))
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 04.03.2013, 15:58
#10
iskatel111


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


а вот на VBA все без проблем
Код:
[Выделить все]
Sub docs()

Dim curdoc As AcadDocument
Dim newdoc As AcadDocument
Dim c(2) As Double

c(0) = 100: c(1) = 100: c(2) = 0


Set curdoc = Documents(ThisDrawing.Name)
Set newdoc = Documents.Add

curdoc.ModelSpace.AddCircle(c, 100).color = acRed
newdoc.ModelSpace.AddCircle(c, 100).color = acGreen

curdoc.SendCommand ("_.zoom _e ")
newdoc.SendCommand ("_.zoom _e ")

End Sub
iskatel111 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Выполнение команд во 2-м чертеже, создаваемом программой из 1-го чертежа



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как грамотно чистить файл чертежа от всякого шлака? (порядок команд) maximus_m_13 AutoCAD 16 27.12.2015 14:37
Несвойственные Автокаду вещи Vova AutoCAD 49 01.02.2012 19:33
Отключить выполнение команд повешенных на AcadDocument_Activate() Ольга_DG Программирование 41 20.05.2011 21:06
Правильное оформление чертежа посредством команд подготовки: _Solview, _Soldraw, _Solprof Рyslan AutoCAD 44 29.11.2010 15:21
В русской версии AutoCAD 2010 SP1 32-bit файл Acad.PGP содержит ошибки. hwd Баги и пожелания в Autodesk 21 21.04.2010 20:27