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

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

Отзеркалить динамический блок с атрибутами

Ответ
Поиск в этой теме
Непрочитано 01.12.2010, 08:30 #1
Отзеркалить динамический блок с атрибутами
gizmo_zx
 
Проектировщик ЭО,ЭМ, ЭОС
 
Нижний Новгород
Регистрация: 18.07.2007
Сообщений: 256

Добрый день.
Все чаще назревает необходимость отзеркалить динамический блок с атрибутами.
Если зеркалить стандартной командой, вроде бы ничего, но сделав _Attsink_attsync вижу, что текст атрибутов тоже перевернулся, а этого не хотелось бы.
Приложил файл что есть и как хотелось бы...
Буду благодарен за любые идеи по этому поводу.

Вложения
Тип файла: dwg
DWG 2007
Чертеж1.dwg (86.2 Кб, 498 просмотров)


Последний раз редактировалось gizmo_zx, 01.12.2010 в 09:54.
Просмотров: 3883
 
Непрочитано 01.12.2010, 08:52
#2
AlexV

Инженер
 
Регистрация: 02.10.2008
С-Пб
Сообщений: 3,686


MIRRTEXT в 0?
__________________
...Не пытайся гнуть ты ложку,
Не вяжи её узлом.
Ложка - ложка понарошку,
А по правде, - это лом!
AlexV на форуме  
 
Непрочитано 01.12.2010, 09:14
#3
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Цитата:
но сделав _Attsink вижу
Код:
[Выделить все]
Command: _attsink
Unknown command "ATTSINK".  Press F1 for help.
Цитата:
MIRRTEXT в 0?
Не особо спасет.
Вложения
Тип файла: dwg
DWG 2004
attmirr2004.dwg (56.1 Кб, 506 просмотров)
Do$ вне форума  
 
Непрочитано 02.12.2010, 10:06
#4
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 571


gizmo_zx, а зачем зеркалировать дин. блок? Если можно используя дин. параметры самого блока задать ему нужную конфигурацию, во всяком случае в том примере блока, что Ты выложил, задать конфигурацию "Как хотелось бы" можно только поменяв значения динамических параметров (хоть в ручную, хоть программно) без использования команды зеркалирования (_mirror) и синхронизации атрибутов (_attsync)
__________________
cadtools
TararykovDG вне форума  
 
Автор темы   Непрочитано 02.12.2010, 14:28
#5
gizmo_zx

Проектировщик ЭО,ЭМ, ЭОС
 
Регистрация: 18.07.2007
Нижний Новгород
Сообщений: 256
<phrase 1= Отправить сообщение для gizmo_zx с помощью Skype™


TararykovDG,проблемма в том что количество блоков несколько десятков, причем разных, (имя разное, графика разная, но атрибуты одинаковые)
И иногда очень хочется отзеркалить их сразу все, а не расстовлять по одному.
gizmo_zx вне форума  
 
Непрочитано 02.12.2010, 15:07
#6
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 571


Неважно какая графика и даже какие атрибуты, важно какие динимические параметры и к каким элементам блока оно привязаны.
Цитата:
И иногда очень хочется отзеркалить их сразу все, а не расстовлять по одному.
Так я и говорил о программном способе расстановки. Например в том фйле что Ты выложил, для того чтобы отзеркалить блок относительно оси X, достаточно значение дин. параметров "Угол" и "Угол1" умножить на -1 (можешь сам попробывать, выбрав какое-нибудь вхождение блока открыть окно свойств и менять "Угол" и "Угол1" дописывая знак "-" перед значением)
Так вот все это можно и программно реализовать. Понятно, что если у Тебя каждый блок совершенно не похож на другой, то универсального способа не получиться.
__________________
cadtools
TararykovDG вне форума  
 
Автор темы   Непрочитано 02.12.2010, 15:26
#7
gizmo_zx

Проектировщик ЭО,ЭМ, ЭОС
 
Регистрация: 18.07.2007
Нижний Новгород
Сообщений: 256
<phrase 1= Отправить сообщение для gizmo_zx с помощью Skype™


Как нижние помещение отзеркалить вверх?
А сли там два десятка блоков?
Вложения
Тип файла: dwg
DWG 2007
Чертеж1.dwg (94.4 Кб, 496 просмотров)
gizmo_zx вне форума  
 
Непрочитано 02.12.2010, 16:50
#8
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 571


Для конкретно этих блоков и для зеркалирования оносительно оси Х и относительно точки вставки каждого блока так
Код:
[Выделить все]
; Пример вызова (mirror_blk)
(defun mirror_blk( / )
  ((lambda(nbr)
     (if nbr
       (foreach item (vl-remove-if 'listp (mapcar 'cadr (ssnamex nbr)))
         (if (= (vla-get-EffectiveName (vlax-ename->vla-object item)) "_gr_r2x_ip23o")
           (foreach dyn (vlax-safearray->list (vlax-variant-value (vla-GetDynamicBlockProperties (vlax-ename->vla-object item))))
             (if (wcmatch (vla-get-PropertyName dyn) "Угол*")
               (vla-put-Value dyn (vlax-make-variant (- 0 (vlax-variant-value (vla-get-Value dyn))) vlax-vbDouble))
               )
             )
           )
         )
       )
     )
    (ssget (list (cons 0 "INSERT")))
    )
  ); end mirror_blk
__________________
cadtools
TararykovDG вне форума  
 
Автор темы   Непрочитано 03.12.2010, 13:55
#9
gizmo_zx

Проектировщик ЭО,ЭМ, ЭОС
 
Регистрация: 18.07.2007
Нижний Новгород
Сообщений: 256
<phrase 1= Отправить сообщение для gizmo_zx с помощью Skype™


А можно сделать выбор по X или по Y.
И сделать фильтр не по полному имени
Не "_gr_r2x_ip23o", а "_gr_*" , т.е. *-любое продолжение.

Например "_gr_r3_ip23o" тоже чтоб поподал.

Буду очень признателен
gizmo_zx вне форума  
 
Непрочитано 03.12.2010, 14:43
#10
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 571


Цитата:
Сообщение от gizmo_zx Посмотреть сообщение
А можно сделать выбор по X или по Y.
Можно сделать относительно любой, задаваемой оси (т. е. прям как в команде "_mirror"). Сейчас очень занят на работе, на выходных попробую сделать.

Цитата:
Сообщение от gizmo_zx Посмотреть сообщение
И сделать фильтр не по полному имени
Не "_gr_r2x_ip23o", а "_gr_*" , т.е. *-любое продолжение.

Например "_gr_r3_ip23o" тоже чтоб поподал.
Тут все зависти от реализации самых блоков, т. е. алгоримт для блока "_gr_r2x_ip23o" может не подходить для других блоков. Выложи файл со всеми нужными блоками, тогда подумаем, что можно сделать
__________________
cadtools
TararykovDG вне форума  
 
Автор темы   Непрочитано 03.12.2010, 15:04
#11
gizmo_zx

Проектировщик ЭО,ЭМ, ЭОС
 
Регистрация: 18.07.2007
Нижний Новгород
Сообщений: 256
<phrase 1= Отправить сообщение для gizmo_zx с помощью Skype™


Все блоки аналогичны _gr_r2x_ip23o
Вложения
Тип файла: dwg
DWG 2007
Чертеж1.dwg (143.6 Кб, 499 просмотров)
gizmo_zx вне форума  
 
Непрочитано 06.12.2010, 08:54
1 | #12
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 571


gizmo_zx, попробуй, но протестируй внимательно мне было некогда
Код:
[Выделить все]
; Вызов: mirror_blk

(defun c:mirror_blk( / mirr_state)
  ((lambda(nbr)
     (if (and nbr (not (vl-catch-all-error-p nbr)))
       ((lambda(pnt1)
	  (if (not (vl-catch-all-error-p pnt1))
	    ((lambda(pnt2)
	       (if (not (vl-catch-all-error-p pnt2))
		 ((lambda(ang del)
                    (sssetfirst nil nil)
		    (if (not (vl-catch-all-error-p del))
		      (progn
			(if (or (not del) (member del (list "Нет" "No")))
			  (vl-cmdf "_.copy" nbr "" '(0.0 0.0 0.0) '(0.0 0.0 0.0))
			  )
			(foreach item (mapcar 'vlax-ename->vla-object (vl-remove-if 'listp (mapcar 'cadr (ssnamex nbr))))
			  (if (or (wcmatch (vla-get-EffectiveName item) "_gr_*")
				  (wcmatch (vla-get-EffectiveName item) "щит магистральный")
				  )
			    ((lambda(ins_pnt lst_dyn_param)
			       ((lambda(inters_pnt)
				  (vla-put-InsertionPoint item (vlax-3d-point (polar ins_pnt
										     (angle ins_pnt inters_pnt)
										     (* 2 (distance ins_pnt
												    inters_pnt
												    )
											)
										     )
								 )
				    )
				  )
				 (inters (list (car pnt1) (cadr pnt1) (caddr ins_pnt))
					 (list (car pnt2) (cadr pnt2) (caddr ins_pnt))
					 ins_pnt
					 (polar ins_pnt (+ ang (* 0.5 pi)) 1)
					 nil
					 )
				 )
			       (foreach dyn lst_dyn_param
				 (cond
				   ((= (vla-get-PropertyName dyn) "Угол")
				    (vla-put-Value dyn (vlax-make-variant (- (* 2 ang) (vlax-variant-value (vla-get-Value dyn))) vlax-vbDouble))
				    (if (and (> (vlax-variant-value (vla-get-Value dyn)) (* 0.5 pi)) (< (vlax-variant-value (vla-get-Value dyn)) (* 1.5 pi)))
				      (setq mirr_state 1)
				      (setq mirr_state 0)
				      )
				    )
				   ((= (vla-get-PropertyName dyn) "Отраженное состояние")
				    (vla-put-Value dyn (vlax-make-variant mirr_state vlax-vbInteger))
				    )
				   ((= (vla-get-PropertyName dyn) "Угол1")
				    (vla-put-Value dyn (vlax-make-variant (- (* 2 ang) (vlax-variant-value (vla-get-Value dyn))) vlax-vbDouble))
				    )
				   )
				 )
			       )
			      (vlax-safearray->list (vlax-variant-value (vla-get-InsertionPoint item)))
			      (vlax-safearray->list (vlax-variant-value (vla-GetDynamicBlockProperties item)))
			      )
			    )
			  )
			)
		      )
		    )
		   (angle pnt1 pnt2)
		   (progn
		     (initget "Да Нет Yes No")
		     (vl-catch-all-apply 'getkword
		       (list "\nУдалить исходные объекты? [Да/Нет] <Нет>: ")
		       )
		     )
		   )
		 )
               (sssetfirst nil nil)
	       )
	      (progn
		(initget 1)
		(vl-catch-all-apply 'getpoint
		  (list pnt1 "\nВторая точка оси отражения: ")
		  )
		)
	      )
            (sssetfirst nil nil)
	    )
	  )
	 (progn
	   (initget 1)
	   (vl-catch-all-apply 'getpoint
	     (list "\nПервая точка оси отражения: ")
	     )
	   )
	 )
       )
     )
    (if (cadr (ssgetfirst))
      (cadr (ssgetfirst))
      (vl-catch-all-apply 'ssget
	(list (list (cons 0 "INSERT")))
	)
      )
    )
  (princ)
  ); end mirror_blk
__________________
cadtools
TararykovDG вне форума  
 
Автор темы   Непрочитано 07.12.2010, 09:32
#13
gizmo_zx

Проектировщик ЭО,ЭМ, ЭОС
 
Регистрация: 18.07.2007
Нижний Новгород
Сообщений: 256
<phrase 1= Отправить сообщение для gizmo_zx с помощью Skype™


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

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сделать динамический блок из нескольких солид тел? Scrubber Динамические блоки 5 22.09.2010 22:29
Динамический блок с вложенным динамическим блоком? Sync02 Динамические блоки 17 18.05.2009 17:51
Tool palettes и блок с атрибутами serg01 Динамические блоки 3 04.07.2008 08:06
Как добавить атрибуты в динамический блок? Archeo Динамические блоки 20 17.11.2006 11:30
Динамический блок с атрибутами не масштабируется? X-DeViL Динамические блоки 7 24.11.2005 11:59