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

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

Произвольное смещение многострочных атрибутов в блоке.

Ответ
Поиск в этой теме
Непрочитано 22.12.2008, 15:26 #1
Произвольное смещение многострочных атрибутов в блоке.
Makswell
 
Инженер-строитель
 
Киров
Регистрация: 15.08.2007
Сообщений: 2,254

Всем привет.

Даже не знаю, может надо было сразу в в программирование, но тем не менее - может не так всё мрачно окажется.

Суть проблемы такая. В блоке присутствуют многострочные атрибуты. И они время от времени произвольно смещаюся. Причем, как показало изучение атрибутов через объектную модель, смещение происходит именно в самом описании блока (т.е. в семействе блоков), а не во вхождении. Но в том то и дело, что сам блок не редактировался!

Прикладываю файлы (формат 2007): в одном блок - как он должен быть, во втором произошло смещение (ещё раз подчеркну - редактирование блока ни коим образом не применялось).

Вот лисп, которым я смотрел интересующие меня свойства многострочных атрибутов в данном блоке:
Код:
[Выделить все]
(vlax-for fam_item
	  (vla-Item
	    (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object)))
	    "M-Форматка(дин_блок)_подшивка"
	  )
  (if (= (vla-get-ObjectName fam_item) "AcDbAttributeDefinition")
    (if	(= (vla-get-MTextAttribute fam_item) :vlax-true)
      (progn
	(mapcar	'(lambda (x)
		   (princ x)
		   (princ "=")
		   (if (= (type (vlax-get-property fam_item x)) 'variant)
		     (princ (vlax-safearray->list
			      (vlax-variant-value (vlax-get-property fam_item x))
			    )
		     )
		     (princ (vlax-get-property fam_item x))
		   )
		   (terpri)
		 )
		(list 'TagString     'Alignment	    'InsertionPoint
		      'MTextBoundaryWidth	    'MTextDrawingDirection
		      'TextAlignmentPoint
		     )
	)
	(terpri)
      )
    )
  )
)
Лисп показал, что у атрибута "ПРОЕКНАЯ_ФИРМА" изменились свойства InsertionPoint и TextAlignmentPoint. Вот так вот сами по себе взяли и изменились.

Вопрос как всегда: кто виноват и что делать?

ЗЫ Автокад 2008 - SP1 русский

Вложения
Тип файла: zip Приложение.zip (81.1 Кб, 254 просмотров)

Просмотров: 53684
 
Непрочитано 22.12.2008, 19:27
#2
RomanM

инженер
 
Регистрация: 25.04.2006
Москва
Сообщений: 1,195


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

ЗЫ Автокад 2008 - SP1 русский

Вот это очень странно.

Описываемый Вами глюк, в моем английском Acade 2008 вылечился установкой SP1.
RomanM вне форума  
 
Автор темы   Непрочитано 23.12.2008, 08:29
#3
Makswell

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


Вот, подобная тема была:
http://www.caduser.ru/cgi-bin/f1/board.cgi?t=43940Vn
Там я писал, что помогает _ATTSYNC. Но это помогает при смещении атрибутов в вхождении блока. Такое тоже происходило, я применял _ATTSYNC и особо не волновался, хотя напряг какой-то был. А сейчас смещение стало происходить именно в описании блока. Вот это уже совсем безобразие.

И ещё немного мыслей вслух:

1. Смещение во вхождении блока происходило, когда созданный мной рисунок пересохранияли в AutoCAD MEP. Может такое происходило не всегда, но определённая зависимость прослеживается.

2. Смещение в описании блока происходит при сохранении моего рисунка на другой машине с такой же конфигурацией, как у меня - Автокад 2008 (SP1 русский). Опять же - это может происходить не всегда (скажу так, при распечатке подшивки, состоящей из 86 листов, 18 листов распечатались со смещёнными атрибутами). Или же наоборот (хотя не так уверен), когда я сохранию чужой рисунок: например в подшивке делаю "сохранить все листы".

ЗЫ Если нужна какая либо дополнительная информация, то с удовольствием её предоставлю. Спрашивайте.

Добавлено:
Кстати, Автокад конкретно вот такой:
Миниатюры
Нажмите на изображение для увеличения
Название: About.png
Просмотров: 319
Размер:	4.8 Кб
ID:	13932  

Последний раз редактировалось Makswell, 23.12.2008 в 09:23. Причина: добавил...
Makswell вне форума  
 
Автор темы   Непрочитано 11.01.2009, 14:05
#4
Makswell

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


Долгое время следил за данной ситуацией. Статистика показала следующее.
Дано: 5 компов, на которых производилась работа с файлами, содержащими данный блок. На всех 5-ти машинах одинаковый Автокад 2008 SP1 русский.
На 3-х ЭВМ (включая мою) всё происходит нормально - ничего никуда не смещается.
На 2-х компьютерах происходит смещение многострочного атрибута "ПРОЕКНАЯ_ФИРМА" в описании блока. Этот атрибут смещается сразу после открытия файла. Закономерность смещения не выявлена, т.е. смещается куда ни попадя. Остальные многострочные атрибуты ведут себя нормально.

Этот атрибут "ПРОЕКНАЯ_ФИРМА" содержит значение по-умолчанию %<\AcSm SheetSet.Проектная фирма \f "%tc3">%, т.е. поле, ссылающееся на дополнительное свойство подшивки "Проектная фирма". Может в этом какая-то загвоздка?
Makswell вне форума  
 
Непрочитано 16.01.2009, 07:02
#5
ie.spb

Инженер
 
Регистрация: 21.08.2007
Сообщений: 586
<phrase 1=


Я подшивками не пользуюсь, а проблема возникает периодически. Как вариант просто создаю блок заново и все
__________________
Склероз нельзя вылечить, но о нем можно забыть.
(Ф. Раневская)
ie.spb вне форума  
 
Автор темы   Непрочитано 16.01.2009, 08:39
#6
Makswell

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


Djonikbishkek, у меня, если можно 2 вопроса:
1. У тебя установлен SP на Автокад?
2. Вот создал ты новый блок с нуля. И как он ведёт себя в дальнейшем? Смещения со временем не происходит?

PS Кстати, я пока сделал такое шаманство:
У всех пользователей при открытии файлов автоматически запускается такой лисп:
Код:
[Выделить все]
(defun m_hotfix_multatt_move (/ blk ins_pt align_pt)
  (setq	blk
	 (vl-catch-all-apply
	   'vla-Item
	   (list (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object)))
		 "M-Форматка(дин_блок)_подшивка"
	   )
	 )
  )
  (if (not (vl-catch-all-error-p blk))
    (progn
      (setq ins_pt   '(-35.5 11.25 0.0)
	    align_pt '(-30.0 12.5 0.0)
      )
      (vlax-for	fam_item blk
	(if (= (vla-get-ObjectName fam_item) "AcDbAttributeDefinition")
	  (if (= (vla-get-TagString fam_item) "ПРОЕКНАЯ_ФИРМА")
	    (if
	      (not
		(equal (vlax-safearray->list
			 (vlax-variant-value (vla-get-InsertionPoint fam_item))
		       )
		       ins_pt
		       0.01
		)
	      )
	       (progn
		 (vla-put-InsertionPoint fam_item (vlax-3D-point ins_pt))
		 (vla-put-TextAlignmentPoint fam_item (vlax-3D-point align_pt))
		 (vl-cmdf "_.ATTSYNC" "_N" "M-Форматка(дин_блок)_подшивка")
		 (alert "Атрибут ПРОЕКНАЯ_ФИРМА возвращён на место")
	       )
	    )
	  )
	)
      )
    )
  )
  (princ)
)


(m_hotfix_multatt_move)
Ничего нового по этому вопросу пока не придумал.

В будущем, если проблема останется, я уже решил, что вместо блока с атрибутами будут просто линии с многострочными текстами. НО пока этого делать не хочется, ведь 3 из 5-ти компов работают корректно. Так что я ещё надеюсь, что проблему можно решить.

PPS Конечно напрашивается переустановка Автокада на 2-х машинах. Но пока этого делать не хочется, да и времени нет, работы много. Если всё же Автокад будет переустановлен, то о результатах обязательно напишу.
Makswell вне форума  
 
Непрочитано 16.01.2009, 09:08
#7
ie.spb

Инженер
 
Регистрация: 21.08.2007
Сообщений: 586
<phrase 1=


Цитата:
Сообщение от Makswell Посмотреть сообщение
Djonikbishkek, у меня, если можно 2 вопроса:
1. У тебя установлен SP на Автокад?
2. Вот создал ты новый блок с нуля. И как он ведёт себя в дальнейшем? Смещения со временем не происходит?
Сервис пак стоит. А насчет создания блоков никак не могу понять закономерность. просто 50/50 одни блоки ведут себя нормально, а у других атрибуты съезжают. По этому перед распечаткой в обязательном порядке синхронизирую атрибуты
__________________
Склероз нельзя вылечить, но о нем можно забыть.
(Ф. Раневская)
ie.spb вне форума  
 
Непрочитано 16.01.2009, 14:10
#8
kha

BIM, С#, AutoCAD, LISP
 
Регистрация: 15.03.2006
Дуброво
Сообщений: 657


Заметил подобное поведение, когда ставил два поля друг за другом в однострочном атрибуте. В 2006-м акаде всё в порядке, а в 2008-м второе поле убегает вниз, не получается сделать в одну строку.
Пришлось ставить два атрибута друг за другом
kha вне форума  
 
Непрочитано 06.07.2009, 09:15 Многострочный атрибут в динблоке живет своей жизнью...
#9
Axe-d

иллюстратор
 
Регистрация: 10.04.2007
с берегов Забобурыхи
Сообщений: 4,899
<phrase 1= Отправить сообщение для Axe-d с помощью Skype™


Отчего-то съезжает привязка многострочного атрибута (в файле - атрибут "НАИМЕНОВАНИЕ_ИЗОБРАЖЕНИЙ") при последующем открытии файлов. Синхронизация тока хуже делает - надпись делается одной строкой. Или чего я не догоняю, или не догоняет 8-й акад...
Вложения
Тип файла: dwg
DWG 2004
Чертеж2.dwg (331.3 Кб, 2138 просмотров)
__________________
Велика Россия, а колонну поставить некуда
Axe-d вне форума  
 
Непрочитано 06.07.2009, 09:44
#10
Victor


 
Регистрация: 14.06.2009
Бат-Ям
Сообщений: 295


У меня его открыл 2004. Жаль нет 14. Так не должно быть если вы сохраняете в формате 2008.

Последний раз редактировалось Victor, 06.07.2009 в 10:24.
Victor вне форума  
 
Непрочитано 06.07.2009, 09:56
#11
Axe-d

иллюстратор
 
Регистрация: 10.04.2007
с берегов Забобурыхи
Сообщений: 4,899
<phrase 1= Отправить сообщение для Axe-d с помощью Skype™


Ничего подобного, поискав в похожих темах, решил, что дело в формате. Перевел - та же самая котовасия: открываю редактор блоков - атрибут опять не на месте.
__________________
Велика Россия, а колонну поставить некуда
Axe-d вне форума  
 
Непрочитано 06.07.2009, 10:11
#12
Кулик Алексей aka kpblc
Moderator

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


Axe-d, ServicePack установлен?
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 06.07.2009, 10:26
#13
Axe-d

иллюстратор
 
Регистрация: 10.04.2007
с берегов Забобурыхи
Сообщений: 4,899
<phrase 1= Отправить сообщение для Axe-d с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Axe-d, ServicePack установлен?
Как это можно выяснить?

Впрочем, судя по всему нет...
__________________
Велика Россия, а колонну поставить некуда
Axe-d вне форума  
 
Непрочитано 06.07.2009, 10:35
#14
tutanhamon


 
Блог
 
Регистрация: 06.09.2007
Архангельск/СПб
Сообщений: 455


Кулик Алексей aka kpblc,
Цитата:
Axe-d, ServicePack установлен?
К сожалению, SP в данном случае помогает весьма выборочно. Такая проблема может возникать кроме того при применении шрифта RomanS.shx. Подробнее см. по ссылке
tutanhamon вне форума  
 
Непрочитано 06.07.2009, 10:55
#15
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,555
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Axe-d, проблема подымалась неоднократно. Например, смотри внизу страницы "Похожие темы"
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 06.07.2009, 11:11
#16
Axe-d

иллюстратор
 
Регистрация: 10.04.2007
с берегов Забобурыхи
Сообщений: 4,899
<phrase 1= Отправить сообщение для Axe-d с помощью Skype™


Смотрел, смотрел - в похожих темах симптомы были несколько иные.
__________________
Велика Россия, а колонну поставить некуда
Axe-d вне форума  
 
Непрочитано 06.07.2009, 13:45
#17
vadim_evg1


 
Регистрация: 08.01.2007
Рус
Сообщений: 398


Цитата:
Сообщение от Axe-d Посмотреть сообщение
Отчего-то съезжает привязка многострочного атрибута (в файле - атрибут "НАИМЕНОВАНИЕ_ИЗОБРАЖЕНИЙ") при последующем открытии файлов. Синхронизация тока хуже делает - надпись делается одной строкой. Или чего я не догоняю, или не догоняет 8-й акад...
У тебя ширина рамки атрибута - 0
Поставь 60 и все нормально будет
Вложения
Тип файла: dwg
DWG 2007
Чертеж2.dwg (84.8 Кб, 2112 просмотров)
vadim_evg1 вне форума  
 
Непрочитано 06.07.2009, 15:22
#18
wetr

инженер
 
Регистрация: 09.08.2006
Владивосток
Сообщений: 1,555
<phrase 1= Отправить сообщение для wetr с помощью Skype™


Цитата:
Сообщение от Axe-d Посмотреть сообщение
Смотрел, смотрел - в похожих темах симптомы были несколько иные.
Раз смотрел - чего там же не написал? Судя по описанию проблемы - симптомы одинаковые.
Цитата:
живет своей жизнью...
разве кто догадается?
По теме, если я все таки правильно понял проблему, то прав vadim_evg1. Только ширину атрибуту меняй обязательно ВНУТРИ редактора блоков, а не у вхождения с помощью команды
Код:
__________________
14 Ибо если вы будете прощать людям согрешения их, то простит и вам Отец ваш Небесный (Мф 6, 14)
wetr вне форума  
 
Непрочитано 07.07.2009, 16:07
#19
tugris


 
Регистрация: 07.03.2008
Сообщений: 50


У меня тоже самое в акаде 2010. Не понимаю пока в чем дело.
tugris вне форума  
 
Непрочитано 07.07.2009, 16:14
#20
Кулик Алексей aka kpblc
Moderator

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


2 темы объединены.
__________________

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

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Устанавливаемые атрибуты в динамическом блоке и работа с подшивкой. Dmitriy_Altproekt Динамические блоки 45 09.12.2015 10:38
Порядок атрибутов в блоке {Smirnoff} Программирование 10 22.04.2013 16:03
Смещение многострочных атрибутов AutoCad 2008 Abramov AutoCAD 4 03.08.2007 12:33