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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Ассоциативные размеры

Ассоциативные размеры

Ответ
Поиск в этой теме
Непрочитано 15.05.2006, 17:23 #1
Ассоциативные размеры
IgorSYS
 
ПГС
 
Москва
Регистрация: 09.03.2006
Сообщений: 199

Подскажите, пожалуйста,
как отменить ассоциативные привязки
в уже созданных ассоциативных размерах?
Просмотров: 22890
 
Непрочитано 15.05.2006, 17:27
#2
Кулик Алексей aka kpblc
Moderator

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


_.dimdisassociate
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 15.05.2006, 17:33
#3
IgorSYS

ПГС
 
Регистрация: 09.03.2006
Москва
Сообщений: 199
<phrase 1=


Спасибо большое
IgorSYS вне форума  
 
Непрочитано 16.05.2006, 06:40
#4
v_alex


 
Регистрация: 24.10.2005
Новокузнецк
Сообщений: 1,124
<phrase 1=


а по всем листам сразу?
v_alex вне форума  
 
Непрочитано 16.05.2006, 08:35
#5
Кулик Алексей aka kpblc
Moderator

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


> v_alex: программно, что ли?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 16.05.2006, 09:07
#6
v_alex


 
Регистрация: 24.10.2005
Новокузнецк
Сообщений: 1,124
<phrase 1=


Цитата:
Сообщение от kpblc
> v_alex: программно, что ли?
думаю что да... :roll: если закладок много, то времени много отнимет такая процедура... а если еще несколько файлов... (тонкий намек)...
v_alex вне форума  
 
Непрочитано 16.05.2006, 10:02
#7
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,917
<phrase 1=


А у меня другой вопрос, а как ассоциировать размер с каким либо обьектом???
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Непрочитано 16.05.2006, 10:19
#8
Кулик Алексей aka kpblc
Moderator

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


Ох, пользуетесь вы моей добротой и нежеланием выполнять прямые обязанности
В общем так. Сделать сразу на несколько файлов у меня не получилось - там через vla-функции не удалось добраться до размеров. А так, для конкретного файла, можно. Вариант полностью на все (только снос ассоциативности! восстановить ее не получится!) пространства:
Код:
[Выделить все]
(defun c:disassdim (/ *kpblc-activedoc* *error* selset ent)
  (defun _kpblc-layer-status-restore (/ item)
    (if	*kpblc-list-layer-status*
      (progn
	(foreach item *kpblc-list-layer-status*
	  (vla-put-layeron (car item) (cdr (assoc "on" (cdr item))))
	  (vla-put-lock (car item) (cdr (assoc "lock" (cdr item))))
	  (if (not (equal (vla-get-activelayer *kpblc-activedoc*) (car item)))
	    (vla-put-freeze (car item) (cdr (assoc "freeze" (cdr item))))
	    ) ;_ end of if
	  ) ;_ end of foreach
	(setq *kpblc-list-layer-status* nil)
	) ;_ end of progn
      ) ;_ end of if
    ) ;_ end of defun

  (defun _kpblc-layer-status-save (layers-on / item)
    (if	*kpblc-list-layer-status*
      (setq *kpblc-list-layer-status* nil)
      ) ;_ end of if
    (vlax-for item (vla-get-layers *kpblc-activedoc*)
      (setq *kpblc-list-layer-status*
	     (append *kpblc-list-layer-status*
		     (list
		       (list item
			     (cons "freeze" (vla-get-freeze item))
			     (cons "lock" (vla-get-lock item))
			     (cons "on" (vla-get-layeron item))
			     ) ;_ end of list
		       ) ;_ end of list
		     ) ;_ end of append
	    ) ;_ end of setq
      (if layers-on
	(progn
	  (vla-put-layeron item :vlax-true)
	  (vla-put-lock item :vlax-false)
	  (if (not (equal (vla-get-activelayer *kpblc-activedoc*) item))
	    (vla-put-freeze item :vlax-false)
	    ) ;_ end of if
	  ) ;_ end of progn
	) ;_ end of if
      ) ;_ end of vlax-for
    ) ;_ end of defun

  (defun *error* (msg)
    (_kpblc-layer-status-restore)
    (vla-endundomark *kpblc-activedoc*)
    (princ msg)
    (princ)
    ) ;_ end of defun

  (vl-load-com)
  (setq *kpblc-activedoc* (vla-get-activedocument (vlax-get-acad-object)))
  (vla-startundomark *kpblc-activedoc*)
  (_kpblc-layer-status-save t)
  (if (setq selset (ssget "_X" '((0 . "DIMENSION"))))
    (while (and selset (> (sslength selset) 0))
      (setq ent (ssname selset 0))
      (ssdel ent selset)
      (entmake (vl-remove-if
		 '(lambda (x) (member (car x) '(-1 102 330 360)))
		 (entget ent)
		 ) ;_ end of vl-remove-if
	       ) ;_ end of entmake
      (entdel ent)
      ) ;_ end of while
    ) ;_ end of if
  (_kpblc-layer-status-restore)
  (vla-regen *kpblc-activedoc* acallviewports)
  (vla-endundomark *kpblc-activedoc*)
  (princ)
  ) ;_ end of defun
И вариант для только пространтв листа:
Код:
[Выделить все]
(defun c:disassdim (/ *kpblc-activedoc* *error* selset ent)
  (defun _kpblc-layer-status-restore (/ item)
    (if	*kpblc-list-layer-status*
      (progn
	(foreach item *kpblc-list-layer-status*
	  (vla-put-layeron (car item) (cdr (assoc "on" (cdr item))))
	  (vla-put-lock (car item) (cdr (assoc "lock" (cdr item))))
	  (if (not (equal (vla-get-activelayer *kpblc-activedoc*) (car item)))
	    (vla-put-freeze (car item) (cdr (assoc "freeze" (cdr item))))
	    ) ;_ end of if
	  ) ;_ end of foreach
	(setq *kpblc-list-layer-status* nil)
	) ;_ end of progn
      ) ;_ end of if
    ) ;_ end of defun

  (defun _kpblc-layer-status-save (layers-on / item)
    (if	*kpblc-list-layer-status*
      (setq *kpblc-list-layer-status* nil)
      ) ;_ end of if
    (vlax-for item (vla-get-layers *kpblc-activedoc*)
      (setq *kpblc-list-layer-status*
	     (append *kpblc-list-layer-status*
		     (list
		       (list item
			     (cons "freeze" (vla-get-freeze item))
			     (cons "lock" (vla-get-lock item))
			     (cons "on" (vla-get-layeron item))
			     ) ;_ end of list
		       ) ;_ end of list
		     ) ;_ end of append
	    ) ;_ end of setq
      (if layers-on
	(progn
	  (vla-put-layeron item :vlax-true)
	  (vla-put-lock item :vlax-false)
	  (if (not (equal (vla-get-activelayer *kpblc-activedoc*) item))
	    (vla-put-freeze item :vlax-false)
	    ) ;_ end of if
	  ) ;_ end of progn
	) ;_ end of if
      ) ;_ end of vlax-for
    ) ;_ end of defun

  (defun *error* (msg)
    (_kpblc-layer-status-restore)
    (vla-endundomark *kpblc-activedoc*)
    (princ msg)
    (princ)
    ) ;_ end of defun

  (vl-load-com)
  (setq *kpblc-activedoc* (vla-get-activedocument (vlax-get-acad-object)))
  (vla-startundomark *kpblc-activedoc*)
  (_kpblc-layer-status-save t)
  (if (setq selset (ssget "_X" '((0 . "DIMENSION") (410 . "~Model"))))
    (while (and selset (> (sslength selset) 0))
      (setq ent (ssname selset 0))
      (ssdel ent selset)
      (entmake (vl-remove-if
		 '(lambda (x) (member (car x) '(-1 102 330 360)))
		 (entget ent)
		 ) ;_ end of vl-remove-if
	       ) ;_ end of entmake
      (entdel ent)
      ) ;_ end of while
    ) ;_ end of if
  (_kpblc-layer-status-restore)
  (vla-regen *kpblc-activedoc* acallviewports)
  (vla-endundomark *kpblc-activedoc*)
  (princ)
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 16.05.2006, 10:20
#9
v_alex


 
Регистрация: 24.10.2005
Новокузнецк
Сообщений: 1,124
<phrase 1=


Цитата:
Сообщение от zenon
А у меня другой вопрос, а как ассоциировать размер с каким либо обьектом???
_.dimreassociate
v_alex вне форума  
 
Непрочитано 16.05.2006, 10:20
#10
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от zenon
А у меня другой вопрос, а как ассоциировать размер с каким либо обьектом???
_.dimreassociate, кажется.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 16.05.2006, 10:24
#11
v_alex


 
Регистрация: 24.10.2005
Новокузнецк
Сообщений: 1,124
<phrase 1=


2 kpblc блин... как быстро ты их пишешь... я попытался написать... пол дня ковырялся... больше не писал... к сожалению времени нет... за доброту спасибо... а вот нежелание выполнять свои обязанности свойственно всем человекообразным... лень - двигатель прогресса... ... еще раз спасибо за внимание к проблемам простых пользователей AutoCAD'a...
v_alex вне форума  
 
Непрочитано 16.05.2006, 10:39
#12
Кулик Алексей aka kpblc
Moderator

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


> v_alex : ты проверь сначала, я-то создал по 2 размера в каждом пространстве да по слоям их разнес.
---
Добавлено: спешил, вот и результат - локальные функции не внес. В общем, чтоб код не переделывать, вместо
Код:
[Выделить все]
(defun c:disassdim (/ *kpblc-activedoc* *error* selset ent)
Надо поставить
Код:
[Выделить все]
(defun c:disassdim (/ *kpblc-activedoc* *error* selset ent _kpblc-layer-status-restore _kpblc-layer-status-save)
И в представленном варианте, конечно, работать будет, но "исправленный вариант" все же покрасивше будет
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 16.05.2006, 11:12
#13
v_alex


 
Регистрация: 24.10.2005
Новокузнецк
Сообщений: 1,124
<phrase 1=


проверено... работает на всем файле...
v_alex вне форума  
 
Непрочитано 18.05.2006, 12:24
#14
v_alex


 
Регистрация: 24.10.2005
Новокузнецк
Сообщений: 1,124
<phrase 1=


поправка... прекрасно работает если ассоциативность не связана с пространством модели... в случае с моделью возвращает dim scale linear в еденицу... соответственно все размеры летят в тартары и приходится масштам забивать вручную...
v_alex вне форума  
 
Непрочитано 18.05.2006, 12:39
#15
Кулик Алексей aka kpblc
Moderator

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


А вот это уже забавно, потому как такого быть не должно. Наводящий вопрос - СПДС / MechaniCS не использовался при простановке размеров,
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.05.2006, 12:44
#16
v_alex


 
Регистрация: 24.10.2005
Новокузнецк
Сообщений: 1,124
<phrase 1=


AutoCAD 2005 English... из примочек только Express и ATable...
v_alex вне форума  
 
Непрочитано 18.05.2006, 12:49
#17
Кулик Алексей aka kpblc
Moderator

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


На размерах именно dimscale слетает?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.05.2006, 13:02
#18
v_alex


 
Регистрация: 24.10.2005
Новокузнецк
Сообщений: 1,124
<phrase 1=


до применения лиспа dim scale linear = -20, после примения получается dim scale linear = 1

з.ы. склоняюсь к мысли что в данной ситуации лучше пользоваться размерами без ассоциации с разными стилями с масштабными коэффициентами равными масштабу vporta...
v_alex вне форума  
 
Непрочитано 18.05.2006, 13:28
#19
AY

webcad.pro
 
Регистрация: 06.01.2005
Московская обл.
Сообщений: 501


>kpblc
Цитата:
А вот это уже забавно, потому как такого быть не должно
Отнють, это наверняка твоя програмка коэффициентик портит. Потому как лежит он в расширенных данных примитива, которые во вновь созданном объекте забыты.

(-3 ("ACAD" (1000 . "DSTYLE") (1002 . "{") (1070 . 144) (1040 . 333.0) (1002 . "}")))
AY вне форума  
 
Непрочитано 18.05.2006, 13:37
#20
Кулик Алексей aka kpblc
Moderator

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


Совсем странно. ПО идее-то создается новый примитив, с которого копируется все что можно... Блин, попробую завтра еще поковырять, напомнись только
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Ассоциативные размеры