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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как можно из LISP запросить у юзера выделить произвольные элементы и затем вызвать аналог WMFOUT для сохранения их в изображении?

Как можно из LISP запросить у юзера выделить произвольные элементы и затем вызвать аналог WMFOUT для сохранения их в изображении?

Ответ
Поиск в этой теме
Непрочитано 12.08.2009, 08:47 #1
Как можно из LISP запросить у юзера выделить произвольные элементы и затем вызвать аналог WMFOUT для сохранения их в изображении?
lexluther
 
Регистрация: 19.03.2009
Сообщений: 51

Добрый день,

Как можно из LISP запросить у юзера выделить произвольные элементы и затем вызвать аналог WMFOUT для сохранения их в изображении?

Т.е. мне нужно чтобы вначале ЛИСП спросил юзера выделить какие то элементы что он хочет, затем нажать продолжить, после чего ЛИСП должен сделать то же что и команда WMFOUT, т.е. сохранить селекшен в виде изображения.

У меня проблема с двумя вещами. Какой есть общепринятый способ запросить выделение при помощи ЛИСП и какой в ЛИСП есть аналог команды WMFOUT (или как ее можно удобно вызвать чтобы сократить участие пользователя только к выбору селекшена)?

С уважением
Просмотров: 2215
 
Непрочитано 12.08.2009, 08:54
#2
Кулик Алексей aka kpblc
Moderator

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


Из справки:
Цитата:
This example creates a circle in the current drawing. It then exports the drawing to a file called DXFExprt.DXF, opens a new drawing, and imports the file. Note that an empty selection set is provided as an argument to Export. The Export method ignores selection set information when exporting a DXF file, but a syntax error results if the argument is omitted.
Код:
[Выделить все]
Sub Ch3_ImportingAndExporting()

    ' Create the circle for visual representation
    Dim circleObj As AcadCircle
    Dim centerPt(0 To 2) As Double
    Dim radius As Double
    centerPt(0) = 2: centerPt(1) = 2: centerPt(2) = 0
    radius = 1
    Set circleObj = ThisDrawing.ModelSpace.AddCircle _
                    (centerPt, radius)
    ThisDrawing.Application.ZoomAll

    ' Create an empty selection set
    Dim sset As AcadSelectionSet
    Set sset = ThisDrawing.SelectionSets.Add("NEWSSET")

    'Export the current drawing to a DXF file in the
    ' AutoCAD temporary file directory
    Dim tempPath As String
    Dim exportFile As String
    Const dxfname As String = "DXFExprt"
    tempPath = _
       ThisDrawing.Application.preferences.Files.TempFilePath
    exportFile = tempPath & dxfname
    ThisDrawing.Export exportFile, "DXF", sset 

    ' Delete the empty selection set
    ThisDrawing.SelectionSets.Item("NEWSSET").Delete

    ' Open a new drawing
    ThisDrawing.Application.Documents.Add "acad.dwt"

    ' Define the import
    Dim importFile As String
    Dim insertPoint(0 To 2) As Double
    Dim scalefactor As Double
    importFile = tempPath & dxfname & ".dxf"
    insertPoint(0) = 0: insertPoint(1) = 0: insertPoint(2) = 0
    scalefactor = 2#

    ' Import the file
    ThisDrawing.Import importFile, insertPoint, scalefactor
    ThisDrawing.Application.ZoomAll

End Sub
Код не проверял.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 12.08.2009, 09:55
#3
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,254


На лиспе наверно как-то так:
Код:
[Выделить все]
(if (ssget)
  (progn
    (vl-load-com)
    (setq adoc (vla-get-ActiveDocument (vlax-get-acad-object))
	  file (getfiled "Создание WMF-файла" (getvar "DWGPREFIX") "wmf" 17)
    )
    (vla-Export
      adoc
      (strcat (car (fnsplitl file)) (cadr (fnsplitl file)))
      "wmf"
      (vla-get-ActiveSelectionSet adoc)
    )
    (setq adoc nil
	  file nil
    )
  )
)
Фунцкии:
ssget - выбор примитивов
getfiled - выбор/создание файла с оконным диалогом

Метод Export - экпорт примитивов в файл.
Makswell вне форума  
 
Непрочитано 12.08.2009, 11:22
#4
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,886
<phrase 1= Отправить сообщение для VVA с помощью Skype™


lexluther,
Цитата:
Т.е. мне нужно чтобы вначале ЛИСП спросил юзера выделить какие то элементы что он хочет, затем нажать продолжить, после чего ЛИСП должен сделать то же что и команда WMFOUT, т.е. сохранить селекшен в виде изображения.
Из лиспа также можно вызвать WMFOUT. Или есть какие-то ограничения на использование командных методов?
Код:
[Выделить все]
(defun c:test ()
  (and (setq ss nil ss (ssget "_:L"))
       (command "_WMFOUT" "C:\\TEST.WMF" ss "")
       )
  )
Кстати, вот хороший ресурс. Поможет снять многие вопросы. Вот сборка ссылок. Правда многие уже не актуальны. Ссылки на LISP и не только
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 12.08.2009, 11:44
#5
lexluther


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


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Из справки:

Код не проверял.
Мне надо код на AutoLISP
lexluther вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как можно из LISP запросить у юзера выделить произвольные элементы и затем вызвать аналог WMFOUT для сохранения их в изображении?

Реверс. Автоматическая пакетная печать множества рамок (форматов) из пространства модели и листов
Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
LISP. Вставка в таблицу поля, соотвествующего площади примитива Profan Готовые программы 270 19.07.2020 23:34
Сейсмозащита и сейсмоизоляция существующих, построенных зд. IANationalInformAgentstvo Прочее. Архитектура и строительство 216 20.01.2015 16:51
Мониторы LCD CRT Разное 94 17.06.2008 10:51
Юмор 2007 Огурец Разное 1172 29.12.2007 11:16
ЮМОР 2006 =) Perezz!! Разное 1122 04.01.2007 00:46