Реакторы в ACAD x64 (LISP, ACAD '09 - '10)
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Реакторы в ACAD x64 (LISP, ACAD '09 - '10)

Реакторы в ACAD x64 (LISP, ACAD '09 - '10)

Ответ
Поиск в этой теме
Непрочитано 12.10.2010, 17:57 #1
Реакторы в ACAD x64 (LISP, ACAD '09 - '10)
EfremenkoDO
 
Санкт-Петербург
Регистрация: 24.12.2009
Сообщений: 59

Не выполняется процедура события на 64 разрядной системе ACAD. Пишет что развертка не возможна, а на '10 - что не определено описание. При этом на '09 и '10 х32 (х86) все отлично работает
Просмотров: 5250
 
Непрочитано 12.10.2010, 18:04
#2
hwd

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


Цитата:
Сообщение от EfremenkoDO Посмотреть сообщение
Не выполняется процедура события на 64 разрядной системе ACAD. Пишет что развертка не возможна, а на '10 - что не определено описание. При этом на '09 и '10 х32 (х86) все отлично работает
Предлагаете всем дружно начать медитировать?

п.с. процедура и событие - разные вещи. Развёртка чего, фасадов, коврика, др.? Описание чего, политических взглядов? Работает кто/что?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 12.10.2010, 18:15
#3
EfremenkoDO


 
Регистрация: 24.12.2009
Санкт-Петербург
Сообщений: 59
<phrase 1=


Цитата:
Сообщение от hwd Посмотреть сообщение
Предлагаете всем дружно начать медитировать?

п.с. процедура и событие - разные вещи. Развёртка чего, фасадов, коврика, др.? Описание чего, политических взглядов? Работает кто/что?
вот и я о том же - уже долго медитирую. Пишет ACAD так сам с таким впервые столкнулся
Задам вопрос короче. Отличается ли описание реакторов в х64 от х32?
P.S. Событие обрабатывается процедурой. Не выполняется процедура обработки события на 64 разрядной системе ACAD
EfremenkoDO вне форума  
 
Непрочитано 12.10.2010, 18:22
#4
hwd

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


Цитата:
Сообщение от EfremenkoDO Посмотреть сообщение
вот и я о том же - уже долго медитирую. Пишет ACAD так сам с таким впервые столкнулся
Задам вопрос короче. Отличается ли описание реакторов в х64 от х32?
P.S. Событие обрабатывается процедурой. Не выполняется процедура обработки события на 64 разрядной системе ACAD
Для непонятливых - хотите, чтобы вам помогли - покажите свой код.
У x86 и x64 однозначно различные ветки реестра, в которых они хранят настройки. Вы случаем в реестре не копаетесь своей функцией?
Сам по себе "реактор" в себе кода не несёт и служит лишь для оповещения о произошедшем событии. На основе этих оповещений запускается код методов, подписавшихся на эти события. Событие "реактора" инициализируется в коде ObjectARX.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 12.10.2010, 18:29
#5
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от EfremenkoDO Посмотреть сообщение
Отличается ли описание реакторов в х64 от х32?
На лиспе отличаться не должно. Только ObjectID (способ его получения) отличается: http://forum.dwg.ru/showpost.php?p=566548&postcount=58
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 12.10.2010, 18:31
#6
EfremenkoDO


 
Регистрация: 24.12.2009
Санкт-Петербург
Сообщений: 59
<phrase 1=


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
На лиспе отличаться не должно. Только ObjectID (способ его получения) отличается: http://forum.dwg.ru/showpost.php?p=566548&postcount=58
ок спасибо
вот код
Код:
[Выделить все]
(setvar "DBLCLKEDIT" 0)


(defun Editor (reac	 argpoint  /	     sset      object
	       dcl_id	 all	   dx	     dy	       Ind
	       IDList	 curScale  indScale  ScaleList allScale
	       Len	 elem	   prop_lst  InsPoint
	      )
;;;;;;;;;;;;;;;
  (defun change_s (sn nlist x y / i name)
    (setq i    (atoi sn)
	  name (strcat "Welding" (itoa (1+ i)))
    )
    (start_image "sld1")
    (fill_image 0 0 x y -2)
    (slide_image 0 0 x y (strcat "Welding(" name ")"))
    (end_image)
  )
;;;;;;;;;;;;;;;;;;;;;
  (setq sset nil)
  (setq sset (ssget (car argpoint)))

  (if sset
    (progn
      (setq object (vlax-ename->vla-object (ssname sset 0)))
      (if (= (vla-get-EffectiveName object) "КМ_Сварка_")
	(progn
	  (setq IDList (Get-PrevNextIDList object))
	  (setq
	    prop_lst (vlax-safearray->list
		       (vlax-variant-value
			 (vla-getdynamicblockproperties object)
		       )
		     ) ;_ end of vlax-safearray->list
	  )
	  (setq dcl_id (load_dialog "d_Editor.dcl"))
	  (if (< (setq dcl_id (load_dialog "d_Editor.dcl")) 0)
	    (exit)
	  )

	  (if (not (new_dialog "slide" dcl_id))
	    (exit)
	  )

	  (setq	allScale
		 (list
		   "1:1"    "1:2"    "1:4"    "1:5"    "1:8"
		   "1:10"   "1:16"   "1:20"   "1:30"   "1:40"
		   "1:50"   "1:100"
		  )
	  )
	  (setq	ScaleList
		 (list
		   1 2 4 5 8 10	16 20 30 40 50 100)
	  )
	  (start_list "kScales")
	  (mapcar 'add_list allScale)
	  (end_list)
	  (if (not (= reac ""))
	    (progn
	      (setq curScale (READ-INI (strcat Dir "\\Custom.ini")
				       "Welding"
				       "Scale"
				       "1:1"
			     )
	      )
	    )
	    (progn (setq curScale "1:1"))
	  )
	  (setq indScale (vl-position curScale allScale))
	  (if (= indScale nil)
	    (setq IndScale 0)
	  )
	  (set_tile "kScales" (itoa IndScale))

	  (setq	VisibilityList
		 (list
		   "МОНТ_СТЫК_СПЛОШ_ВИД"
		   "МОНТ_СТЫК_СПЛОШ_НЕВИД"
		   "МОНТ_СТЫК_ПРЕР_ВИД"
		   "МОНТ_СТЫК_ПРЕР_НЕВИД"
		   "МОНТ_УГЛ_СПЛОШ_ВИД"
		   "МОНТ_УГЛ_СПЛОШ_НЕВИД"
		   "МОНТ_УГЛ_ПРЕР_ВИД"
		   "МОНТ_УГЛ_ПРЕР_НЕВИД"
		   "ЗАВ_СТЫК_СПЛОШ_ВИД"
		   "ЗАВ_СТЫК_СПЛОШ_НЕВИД"
		   "ЗАВ_СТЫК_ПРЕР_ВИД"
		   "ЗАВ_СТЫК_ПРЕР_НЕВИД"
		   "ЗАВ_УГЛ_СПЛОШ_ВИД"
		   "ЗАВ_УГЛ_СПЛОШ_НЕВИД"
		   "ЗАВ_УГЛ_ПРЕР_ВИД"
		   "ЗАВ_УГЛ_ПРЕР_НЕВИД"
		  )
	  )
	  (setq	all
		 (list
		   "Монтажный стыковой сплошной видимый"
		   "Монтажный стыковой сплошной невидимый"
		   "Монтажный стыковой прерывистый видимый"
		   "Монтажный стыковой прерывистый невидимый"
		   "Монтажный угловой сплошной видимый"
		   "Монтажный угловой сплошной невидимый"
		   "Монтажный угловой прерывистыйвидимый"
		   "Монтажный угловой прерывистыйневидимый"
		   "Заводской стыковой сплошной видимый"
		   "Заводской стыковой сплошной невидимый"
		   "Заводской стыковой прерывистый видимый"
		   "Заводской стыковой прерывистый невидимый"
		   "Заводской угловой сплошной видимый"
		   "Заводской угловой сплошной невидимый"
		   "Заводской угловой прерывистый видимый"
		   "Заводской угловой прерывистый невидимый")
	  )
	  (start_list "names")
	  (mapcar 'add_list all)
	  (end_list)

;;;;установка текущего изображения
	  (foreach elem	prop_lst
	    (if	(= (strcase (vla-get-propertyname elem))
		   (strcase "Видимость1")
		)
	      (setq len	(vlax-variant-value
			  (vla-get-Value elem)
			)
	      )
	    )
	  )

	  (setq indScale (vl-position len VisibilityList))
	  (if (= indScale nil)
	    (setq IndScale 0)
	  )
	  (set_tile "names" (itoa IndScale))

	  (setq	dx (dimx_tile "sld1")
		dy (dimy_tile "sld1")
	  )

	  (start_image "sld1")
	  (slide_image
	    0
	    0
	    dx
	    dy
	    (strcat "Welding(Welding" (itoa (1+ IndScale)) ")")
	  )
	  (end_image)

	  (action_tile
	    "accept"
	    "(setq Ind (atoi (get_tile \"names\")))(setq IndScale (atoi (get_tile \"kScales\")))(done_dialog)"
	  )
	  (action_tile "names" "(change_s $value all dx dy)")

	  (start_dialog)
	  (unload_dialog dcl_id)

	  (WRITE-INI (strcat Dir "\\Custom.ini")
		     "Welding"
		     "Scale"
		     (nth indScale allScale)
	  )
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

	  (setq i 0)
	  (while (< i (Length IDList))
	    (progn

	      (setq Object
		     (vla-ObjectIDToObject
		       (vla-get-ActiveDocument (vlax-get-acad-object))
		       (nth i IDList)
		     )
	      )

		(setq
		  prop_lst (vlax-safearray->list
			     (vlax-variant-value
			       (vla-getdynamicblockproperties object)
			     )
			   ) ;_ end of vlax-safearray->list
		)
	      (foreach elem prop_lst
		(if (= (strcase (vla-get-propertyname elem))
		       (strcase "Расстояние1")
		    )
		  (setq	len (vlax-variant-value
			      (vla-get-Value (nth 0 prop_lst))
			    )
		  )
		)
	      )

	      (vla-put-XScaleFactor
		Object
		(nth indScale ScaleList)
	      )

	      (_kpblc-block-dyn-change-values
		Object
		(List (cons "Видимость1" (nth Ind VisibilityList))
		      (cons "Расстояние1" Len)
		)
	      )
	      (setq i (1+ i))
	    )
	  )
	)
	(progn
	  (if (= (strcase (vla-get-objectname object))
		 (strcase "AcDbBlockReference")
	      )
	    (progn
	      (setq VarObject (vlax-variant-value
				(vla-getAttributes Object)
			      )
	      )
	      (if (vl-catch-all-error-p
		    (vl-catch-all-apply
		      'vlax-safearray->list
		      (list VarObject)
		    )
		  )
		(progn
		  (vla-SendCommand
		    (vla-get-ActiveDocument (vlax-get-acad-object))
		    "_bedit "
		  )
		)
		(progn
		  ;;(PSSAttEdit Object)
		  (vla-SendCommand
		    (vla-get-ActiveDocument (vlax-get-acad-object))
		    (strcat "_eattedit ")
		  )
		)
	      )
	    )
	  )
	)
      )
    )
  )
)


(defun rEditor (/)

  (setq	mouser (vlr-mouse-reactor
		 "Реактор мыши: "
		 (list '(:vlr-beginDoubleClick . Editor))
	       )
  )
)
EfremenkoDO вне форума  
 
Непрочитано 12.10.2010, 18:51
#7
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


В x64 еще не сработает метод vla-ObjectIDToObject. Вместо него нужно использовать vla-ObjectIDToObject32, при этом имея не ObjectID , а ObjectID32.

Последний раз редактировалось Александр Ривилис, 12.10.2010 в 18:57.
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 12.10.2010, 19:26
#8
EfremenkoDO


 
Регистрация: 24.12.2009
Санкт-Петербург
Сообщений: 59
<phrase 1=


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
В x64 еще не сработает метод vla-ObjectIDToObject. Вместо него нужно использовать vla-ObjectIDToObject32, при этом имея не ObjectID , а ObjectID32.
Все бы ни чего, но сама функция Editor отрабатывает правильно при вызове ее не из события
EfremenkoDO вне форума  
 
Непрочитано 12.10.2010, 20:38
#9
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Поставь отладочную печать и посмотри на чем происходит вылет.
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 12.10.2010, 21:06
#10
EfremenkoDO


 
Регистрация: 24.12.2009
Санкт-Петербург
Сообщений: 59
<phrase 1=


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Поставь отладочную печать и посмотри на чем происходит вылет.
А как отладить при обработке события? Он же проглатывает все и не пускает запустить пошаговую отладку. Пробовал пищалкой (vlr-reaction-beep) поверить до куда доходит - не сработало
EfremenkoDO вне форума  
 
Непрочитано 12.10.2010, 22:21
#11
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от EfremenkoDO Посмотреть сообщение
А как отладить при обработке события? Он же проглатывает все и не пускает запустить пошаговую отладку. Пробовал пищалкой (vlr-reaction-beep) поверить до куда доходит - не сработало
Я что-то говорил про отладчик (хотя и он должен теоретически работать)? Используй функции (alert ...) или (print ...) или что угодно.

Последний раз редактировалось Александр Ривилис, 12.10.2010 в 22:53.
Александр Ривилис вне форума  
 
Непрочитано 13.10.2010, 10:35
#12
VVA

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


Цитата:
Сообщение от EfremenkoDO Посмотреть сообщение
А как отладить при обработке события?
Есть еще vlr-trace-reaction
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 13.10.2010, 23:52
#13
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Александр Ривилис Посмотреть сообщение
Используй функции (alert ...) или (print ...) или что угодно.
Вырезать все из функции отклика и вставлять обратно до появления ошибки....
gomer вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Реакторы в ACAD x64 (LISP, ACAD '09 - '10)

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как надежно определить, что в x64 системе выполняется 32х разрядный Acad. Pastor Программирование 6 08.09.2010 17:17
Acad 2010 32-bit на Win7 x64 4атланин AutoCAD 7 31.05.2010 19:51
Как получить цвет фона модели ACAD через LISP? EfremenkoDO LISP 3 24.03.2010 12:09
связать параметризацию в ACAD 2010 и lisp Denis777 LISP 5 09.11.2009 20:52
ACAD LT + lisp / vba Кулик Алексей aka kpblc LISP 16 30.03.2006 22:04