Вставка блока

Автор Тема: Вставка блока  (Прочитано 6496 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн AndreyАвтор темы

  • ADN Club
  • Сообщений: 33
  • Карма: 0
Вставка блока
« : 26-02-2014, 09:36:44 »
Здравствуйте!
Суть вопроса: необходимо переделать код вставки блока с LISP на NET:
Код - Auto/Visual Lisp [Выбрать]
  1. (defun InsertBlock (BlockName /)
  2.     (setq FirstPoint (getpoint "\nУкажите точку вставки блока:"))
  3.     (if (= FirstPoint NIL) (exit))
  4.     (setq Rotate (getangle FirstPoint "\nУкажите направление поворота блока:"))
  5.     (setq CoordX (rtos (nth 0 FirstPoint) 2 4))
  6.     (setq CoordY (rtos (nth 1 FirstPoint) 2 4))
  7.     (vl-cmdf "_.-insert" BlockName (strcat CoordX "," CoordY ",0.00") "1" "1" (angtos Rotate 0 4))
  8. )
Переделка должна быть выполнена так, чтобы сохранялась временная графика с изображением блока при запросе угла поворота и появлялось окно заполнения атрибутов (для соответствующих блоков) как на LISP.
После вставки блока должно продолжиться выполнения кода NET.
Были неудачные попытки использовать за основу следующий код:
Код - C# [Выбрать]
  1. object ActiveDocument = doc.GetAcadDocument();
  2. object[] data = { "_.BLOCKICON " + blk.Name + "\n" };
  3. ActiveDocument.GetType().InvokeMember("SendCommand", System.Reflection.BindingFlags.InvokeMethod, null, ActiveDocument, data);
Спасибо.
« Последнее редактирование: 26-02-2014, 11:04:17 от Andrey »

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Вставка блока
« Ответ #1 : 26-02-2014, 10:15:16 »
В редакторе сообщений пользуйся тэгами оформления кода.

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: Вставка блока
« Ответ #2 : 26-02-2014, 10:29:07 »
Переделка должна быть выполнена так, чтобы сохранялась временная графика с изображением блока
Думаю, тут не обойтись без JIGs: http://through-the-interface.typepad.com/through_the_interface/2007/05/using_a_jig_fro.html

Оффлайн Андрей Бушман

  • ADN Club
  • *****
  • Сообщений: 2000
  • Карма: 163
  • Пишу программки...
    • Блог
  • Skype: Compositum78
Re: Вставка блока
« Ответ #3 : 26-02-2014, 10:37:12 »
Andrey,
Там в раскрывающемся списке есть возможность выбрать конкретный язык, дабы синтаксис подсвечивался надлежащим образом. :)

Оффлайн AndreyАвтор темы

  • ADN Club
  • Сообщений: 33
  • Карма: 0
Re: Вставка блока
« Ответ #4 : 26-02-2014, 11:13:17 »
Появилась идея - есть ли возможность управлять на NET параметрами, передаваемыми в командную строку - запустить команду и где надо передавать фиксированные значения , а где надо прерывать и дать пользователю указать точку и угол

Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
Re: Вставка блока
« Ответ #5 : 26-02-2014, 11:43:19 »
Для "красивого" переноса блока открытых API нет ни в каком диалекте программирования автокада, можно либо вызвать командные методы, либо рисовать запрос точки самому, но тогда если в очередной версии изениться "интерфейс" команды будут различия, другой вопрос - надо ли их делать один-в-один с родными. На dwg.ru была тема про это http://forum.dwg.ru/showthread.php?t=62361, там правда лисп в основном, но в данном случае разницы большой нет  -что там, что здесь (.Net) либо командно, либо в рукопашную.
з.ы. есть еще api express tools...

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Вставка блока
« Ответ #6 : 27-02-2014, 16:18:52 »
там правда лисп в основном, но в данном случае разницы большой нет  -что там, что здесь (.Net) либо командно, либо в рукопашную.
В ObjectARX и .NET есть JIG и если постараться можно получить очень красивую вставку без всяких командных методов.
Например: http://through-the-interface.typepad.com/through_the_interface/2009/03/jigging-an-autocad-block-with-attributes-using-net.html
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дима_

  • ADN Club
  • ****
  • Сообщений: 473
  • Карма: 66
Re: Вставка блока
« Ответ #7 : 27-02-2014, 16:41:29 »
и если постараться можно получить очень красивую вставку без всяких командных методов.
Я про то и пишу - в лиспе тоже можно "без всяких командных методов" - но надо постараться - в той же теме http://forum.dwg.ru/showpost.php?p=687658&postcount=51