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

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

Проблема з командой _-insert

Ответ
Поиск в этой теме
Непрочитано 13.04.2009, 11:25 #1
Проблема з командой _-insert
tolapap
 
Регистрация: 13.04.2009
Сообщений: 15

При использовании функции Autocad зависает!
В чом ошибка ?

Код:
[Выделить все]
(defun prof ( / dcl_id all dx dy) 
(alert "\nЖдите..  Программа загружается …") 
(setq dcl_id (load_dialog "C:\\Program Files\\AutoCAD 2009\\AcadLsp\\St_prof\\prof.dcl")) 
(new_dialog "prof" dcl_id) 
(action_tile "cancel" "(done_dialog 0)") 
(action_tile "accept" "( insertprof)") 
; Имена изображений 
(setq all 
  (list "001" "002" )) 
(start_list "names") 
(mapcar 'add_list all) 
(end_list) 
; Отметка первого в списке имени 
(set_tile "names" "0") 
; Размеры левого графического элемента 
(setq dx (dimx_tile "sld1") dy (dimy_tile "sld1")) 
; Загрузка первого слайда 
(start_image "sld1") 
(slide_image 0 0 dx dy "My(001)") 
(end_image) 
; Обработка выбора имени в списке 
(action_tile "names" "(change_s $value all dx dy)") 
(start_dialog) 
(unload_dialog dcl_id) 
); defun slide 
; Функция при нажатии на ОК! 
(defun insertprof() 
(alert "Кнопка ОК!") 
(setvar "CMDECHO" 0) 
(setq old_osmode (getvar "OSMODE")) 
(setvar "OSMODE" 0) 
(command "_-INSERT" "C:\\Program Files\AutoCAD 2009\AcadLsp\St_prof\Block\001") 
(alert "Фнкция вставки") 
(done_dialog 0) 
); 
; Функция смены слайда 
(defun change_s (sn nlist x y / i name) 
  (setq i (atoi sn) name (nth i nlist)) 
  ; Замена слайда 
  (start_image "sld1") 
  (fill_image 0 0 x y -2) 
  (slide_image 0 0 x y (strcat "My(" name ")")) 
  (end_image) 
);

Последний раз редактировалось tolapap, 13.04.2009 в 12:27.
Просмотров: 6286
 
Непрочитано 13.04.2009, 12:57
#2
Кулик Алексей aka kpblc
Moderator

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


Код:
[Выделить все]
(command "_-INSERT" "c:\\\\Program Files\\AutoCAD 2009\\AcadLsp\\St_prof\\Block\\001.dwg")
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 13.04.2009, 13:45
#3
tolapap


 
Регистрация: 13.04.2009
Сообщений: 15
<phrase 1=


Результат такой самый!!!!
когда запускаю функцию insertprof з командной строки все Ок!!
tolapap вне форума  
 
Непрочитано 13.04.2009, 14:05
#4
Makswell

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


Забыли про опции команды _-INSERT. Поэтому надо хотя бы так:
Код:
[Выделить все]
(command "_-INSERT"
	 "c:\\Program Files\\AutoCAD 2009\\AcadLsp\\St_prof\\Block\\001.dwg"
	 (getpoint)
	 "" 
	 "" 
	 "" 
)
Или со всеми опциями
Код:
[Выделить все]
(command "_-INSERT"
	 "c:\\Program Files\\AutoCAD 2009\\AcadLsp\\St_prof\\Block\\001.dwg"
	 (getpoint)
	 "1" ;масштаб по оси X
	 "1" ;масштаб по оси Y
	 "0" ;угол поворота
)
PS Алексей, что-то со слешами после С: у тебя перебор
Makswell вне форума  
 
Непрочитано 13.04.2009, 14:07
#5
Кулик Алексей aka kpblc
Moderator

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


Ага, перебор, не спорю. Сейчас голову ломаю насчет приведения старых чертежей с СПДС в норму, на нормальные коды сил уже не хватает
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 13.04.2009, 14:26
#6
tolapap


 
Регистрация: 13.04.2009
Сообщений: 15
<phrase 1=


Цитата:
Сообщение от Makswell Посмотреть сообщение
Забыли про опции команды _-INSERT. Поэтому надо хотя бы так:
Код:
[Выделить все]
(command "_-INSERT"
	 "c:\\Program Files\\AutoCAD 2009\\AcadLsp\\St_prof\\Block\\001.dwg"
	 (getpoint)
	 "" 
	 "" 
	 "" 
)
Или со всеми опциями
Код:
[Выделить все]
(command "_-INSERT"
	 "c:\\Program Files\\AutoCAD 2009\\AcadLsp\\St_prof\\Block\\001.dwg"
	 (getpoint)
	 "1" ;масштаб по оси X
	 "1" ;масштаб по оси Y
	 "0" ;угол поворота
)
PS Алексей, что-то со слешами после С: у тебя перебор
Со слешами намано!
Когда функция insertprof запускается от нажатия конопки "ОК" диалога то все виснет, когда ф-цию insertprof запускаю простим вводом в командной строке Autocada все работает з двума слешами (с 1 слешом говорит "неверное имя файла" ) и без оций команды
Ставил опции команды результат тотже
tolapap вне форума  
 
Непрочитано 13.04.2009, 14:40
#7
ытя


 
Регистрация: 23.09.2005
СПб
Сообщений: 428


Попробуй так
(command "_-INSERT" "C://Program Files/AutoCAD 2009/AcadLsp/St_prof/Block/001")
ытя вне форума  
 
Автор темы   Непрочитано 13.04.2009, 14:49
#8
tolapap


 
Регистрация: 13.04.2009
Сообщений: 15
<phrase 1=


Цитата:
Сообщение от ытя Посмотреть сообщение
Попробуй так
(command "_-INSERT" "C://Program Files/AutoCAD 2009/AcadLsp/St_prof/Block/001")
Неработае!!!
Из диалога-виснет
Из командной строки-неверное имя блока
tolapap вне форума  
 
Непрочитано 13.04.2009, 14:50
#9
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627



Offtop:
Потом попробуй так:
(command "_-INSERT" "C:/\Program Files\/AutoCAD 2009/AcadLsp\St_prof/Block\001")

Profan вне форума  
 
Автор темы   Непрочитано 13.04.2009, 15:02
#10
tolapap


 
Регистрация: 13.04.2009
Сообщений: 15
<phrase 1=


Цитата:
Сообщение от Profan Посмотреть сообщение

Offtop:
Потом попробуй так:
(command "_-INSERT" "C:/\Program Files\/AutoCAD 2009/AcadLsp\St_prof/Block\001")

РЕЗУЛЬТАТА Ноль!!!
tolapap вне форума  
 
Непрочитано 13.04.2009, 15:12
#11
Кулик Алексей aka kpblc
Moderator

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


1. А файл c:\program files\autocad 2009\acadlsp\st_prof\block\001.dwg вообще существует?
2. А если этому файлу (который c:\program files...) _.audit не пытались делать? А очистить от мусора?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 13.04.2009, 15:27
#12
tolapap


 
Регистрация: 13.04.2009
Сообщений: 15
<phrase 1=


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
1. А файл c:\program files\autocad 2009\acadlsp\st_prof\block\001.dwg вообще существует?
2. А если этому файлу (который c:\program files...) _.audit не пытались делать? А очистить от мусора?

Файл есть!
функция insertprof работает и вставлается блок єтого файла когда запускаю : (insertprof) в Autocade, а когда обрабитивается собитие
Код:
[Выделить все]
(action_tile "accept" "( insertprof)")
при нажатии на кнопку "ОК" все виснет
Второй вопрос я не понял
Мусора нет!

Последний раз редактировалось tolapap, 13.04.2009 в 15:33.
tolapap вне форума  
 
Непрочитано 13.04.2009, 15:46
#13
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


tolapap Поясни несколько моментов:
1. Кто задает точку вставки блока 001.dwg ?
2. Кто задает масштабные коэффициенты и угол поворота блоку 001.dwg ?
3. Чего ты хочешь добаться от insertprof? Что бы блок куда-то вставился или чтобы остался болтаться на курсоре, а пользователь сам указывал точку вставки, масштаб и угол поворота?

Код:
[Выделить все]
(defun insertprof( / dwg )
(vl-load-com)  
(alert "Кнопка ОК!")
(done_dialog 0)   
(setvar "CMDECHO" 0) 
(setq old_osmode (getvar "OSMODE")) 
(setvar "OSMODE" 0)
(setq dwg (findfile "c:\\Program Files\\AutoCAD 2009\\AcadLsp\\St_prof\\Block\\001.dwg"))
(cond
  ((null dwg)
   (alert "File not found")
   )
  ((and dwg (null (VL-FILE-SYSTIME dwg)))
   (alert "There is no access to a file")
   )
  ((and dwg (VL-FILE-SYSTIME dwg))
   (setvar "CMDECHO" 1)
   (command "_-INSERT" dwg)
   )
  (t nil)
  )
 (while (> (getvar "CMDACTIVE") 0)(command pause))
(alert "Функция вставки") 
);
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 13.04.2009, 16:03
#14
tolapap


 
Регистрация: 13.04.2009
Сообщений: 15
<phrase 1=


Цитата:
Сообщение от VVA Посмотреть сообщение
tolapap Поясни несколько моментов:
1. Кто задает точку вставки блока 001.dwg ?
2. Кто задает масштабные коэффициенты и угол поворота блоку 001.dwg ?
3. Чего ты хочешь добаться от insertprof? Что бы блок куда-то вставился или чтобы остался болтаться на курсоре, а пользователь сам указывал точку вставки, масштаб и угол поворота?

Код:
[Выделить все]
(defun insertprof( / dwg )
(vl-load-com)  
(alert "Кнопка ОК!")
(done_dialog 0)   
(setvar "CMDECHO" 0) 
(setq old_osmode (getvar "OSMODE")) 
(setvar "OSMODE" 0)
(setq dwg (findfile "c:\\Program Files\\AutoCAD 2009\\AcadLsp\\St_prof\\Block\\001.dwg"))
(cond
  ((null dwg)
   (alert "File not found")
   )
  ((and dwg (null (VL-FILE-SYSTIME dwg)))
   (alert "There is no access to a file")
   )
  ((and dwg (VL-FILE-SYSTIME dwg))
   (setvar "CMDECHO" 1)
   (command "_-INSERT" dwg)
   )
  (t nil)
  )
 (while (> (getvar "CMDACTIVE") 0)(command pause))
(alert "Функция вставки") 
);
Есть Диалог prof.dcl
Код:
[Выделить все]
prof: dialog{label="Просмотр слайдов из библиотеки";
:row{
  :column{label="Номер профіля";
    
	:popup_list{key="names";list="";width=24;height=6.5;}
  }
  :column{label="Ескіз";
    :image{key="sld1";color=-2;width=50;height=10;}
  }
}
spacer_1;
ok_cancel;


}
B мне нужно что бы вставлялся файл в виде блока при нажатии на кнопку "ОК" которий вибран в списке, а пользователь сам указывал точку вставки, масштаб и угол поворота
tolapap вне форума  
 
Непрочитано 14.04.2009, 08:50
#15
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


ИМХО у Вас проблема не с командой "_-insert" а с передачей имени блока в эту команду.
С уважением Дегтярев Евгений.
E-degtyarev вне форума  
 
Автор темы   Непрочитано 14.04.2009, 10:38
#16
tolapap


 
Регистрация: 13.04.2009
Сообщений: 15
<phrase 1=


Все получилось
Код:
[Выделить все]
(defun prof ( / dcl_id all dx dy)
(setvar "CMDECHO" 0)
(setq old_osmode (getvar "OSMODE"))
(setvar "OSMODE" 0)
(alert "\nЖдите..  Программа загружается …")
(setq dcl_id (load_dialog "C:\\Program Files\\AutoCAD 2009\\AcadLsp\\St_prof\\prof.dcl"))
(new_dialog "prof" dcl_id)
; Имена изображений
(setq all
  (list "001" "002" ))
(start_list "names")
(mapcar 'add_list all)
(end_list)
; Отметка первого в списке имени
(set_tile "names" "0")
; Размеры левого графического элемента
(setq dx (dimx_tile "sld1") dy (dimy_tile "sld1"))
; Загрузка первого слайда
(start_image "sld1")
(slide_image 0 0 dx dy "My(001)")
(end_image)
; Обработка выбора имени в списке
(action_tile "names" "(change_s $value all dx dy)")
(action_tile "cancel" "(done_dialog 0)")



(setq what_next 8)
(action_tile "accept" "(done_dialog 1)") 
(setq what_next (start_dialog))
(cond 
((= what_next 1) (command "_-INSERT" "C:\\Program Files\\AutoCAD 2009\\AcadLsp\\St_prof\\Block\\001") )
)


(start_dialog)
(unload_dialog dcl_id)
); defun slide

; Функция смены слайда
(defun change_s (sn nlist x y / i name)
  (setq i (atoi sn) name (nth i nlist))
  ; Замена слайда
  (start_image "sld1")
  (fill_image 0 0 x y -2)
  (slide_image 0 0 x y (strcat "My(" name ")"))
  (end_image)
);

Последний раз редактировалось tolapap, 14.04.2009 в 15:47.
tolapap вне форума  
 
Непрочитано 14.04.2009, 16:02
#17
E-degtyarev

Помогаю, кому делать нечего.
 
Регистрация: 27.03.2009
Русская деревня
Сообщений: 394


Извините, немножко опоздал.

И все же посмотрите быстренький набросок- в качестве примера использования "_-insert" вставка обозначения шероховатости поверхности:
Код:
[Выделить все]
(defun obrab (/ dcl_id)
  (setq dcl_id (load_dialog "obr_new.dcl"))
  (setq	what_next 5
  )
  (while (> what_next 1)
    (new_dialog "obr_new" dcl_id "" '(0 0))
    (setq list_Rz nil)
    (setq list_Rz (cons "Rz20" list_Rz))
    (setq list_Rz (cons "Rz40" list_Rz))
    (setq list_Rz (cons "Rz80" list_Rz))
    (setq list_Rz (cons "Rz320" list_Rz))
    (setq list_Rz (cons "Rz500" list_Rz))
    (setq list_Rz (cons "Rz160" list_Rz))
    (start_list "list_Rz")
    (mapcar 'add_list list_Rz)
    (end_list)
    (setq pick_Rz "0")
    (action_tile "list_Rz" "(setq pick_Rz $value)")
    (action_tile "MyOK" "(done_dialog 4)")
    (action_tile "cancel" "(done_dialog 1)")
    (setq what_next (start_dialog))
    (if	(= what_next 4)
      (inp_obr)
    )
  )
)
(defun inp_obr (/ OATD my_atr ob_atr)
  (setq my_atr (nth (atoi pick_Rz) list_Rz))
  (setq pp1 (getpoint "\nТочка вставки:"))
  (setvar "attdia" 0)
  (setvar "cmdecho" 1)
  (command "_-INSERT" "obr_1" pp1 "" "" pause my_atr)
)
(obrab)


obr_new : dialog {
 label = "Шероховатость поверхности";
        : popup_list {
         key = "list_Rz";
       		}
      : button {
     label = "Выполнить";
     key = "MyOK";
	   }
   cancel_button;
}
Вложения
Тип файла: dwg OBR_1.DWG (40.8 Кб, 51 просмотров)
E-degtyarev вне форума  
 
Автор темы   Непрочитано 14.04.2009, 16:07
#18
tolapap


 
Регистрация: 13.04.2009
Сообщений: 15
<phrase 1=


E-degtyarev
Спасибо!
tolapap вне форума  
 
Непрочитано 14.12.2010, 21:38
#19
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,680


Почему в разных файлах _-insert ведет себя по-разному? В одном его опция масштаба одна, а в другом - две: по X и Y. Из-за этого не работают правильно макросы и лиспы на командном методе

Добавлено:
Выход нашел - сразу после имени даю опцию "_scale" ("Масштаб"):
Код:
[Выделить все]
(command "_-insert" "Имя_блока" "_scale" "1" pause pause)
но вопрос (почему в разных файлах по умолчанию предлагаются разные опции?) остается непонятным

Добавлено 2:
В первом случае блок был создан вручную, а во втором - лиспом
Код:
[Выделить все]
(defun c:задв (/ ss)
  (setq ss (ssadd))
  (command "_wipeout" "-1.50,1.25" "-1.50,-1.25" "1.50,1.25" "1.50,-1.25" "")
  (ssadd (entlast) ss)
  (command "_pline" "0.00,0.75" "0.00,-0.75" "")
  (ssadd (entlast) ss)
  (command "_circle" "0.0,0.0" "0.26")
  (ssadd (entlast) ss)
  (command "_-hatch" "в" "_l" "" "_p" "solid" "")
  (ssadd (entlast) ss)
  (command "_change" ss "" "_p" "_color" "_byblock" "_ltype" "continuous" "_lweight" "0.30" "Слой" "0" "")   
  (command "_-block" "Задвижка" "0,0" ss "")
)
Вложения
Тип файла: dwg
DWG 2007
1.dwg (62.5 Кб, 747 просмотров)
Тип файла: dwg
DWG 2007
2.dwg (57.5 Кб, 745 просмотров)

Последний раз редактировалось skkkk, 14.12.2010 в 22:45.
skkkk вне форума  
 
Непрочитано 14.12.2010, 22:32
#20
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


Цитата:
Сообщение от skkkk Посмотреть сообщение
но вопрос (почему в разных файлах по умолчанию предлагаются разные опции?) остается непонятным
Предролагаю что, для этих блоков задана опция - Одинаковй масштаб.
Которую можно задать (галочку поставить) при создании блока. Ну и при редактировании блока, в палитре есть такой пункт (Одинаковй масштаб - Да/нет).
Vildar вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Проблема з командой _-insert



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с файлом после импорта из Компас Alex 166 AutoCAD 7 22.08.2008 10:33
Проблема с ксероксом Canon PC860 _Oleg_ Разное 5 26.12.2007 10:18
Regen Holon Программирование 28 03.08.2007 15:18
Insert + entsel Gaa Программирование 11 01.06.2006 19:08