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

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

dxf код 284

Ответ
Поиск в этой теме
Непрочитано 27.07.2011, 18:42 #1
dxf код 284
kserg
 
Регистрация: 22.04.2004
Сообщений: 269

В первом чертеже под текстовый примитив expresstools-кая маска (TEXTMASK) подкладывается, и у этого примитва нет dxf кода 284, ....... а во втором чертеже (условно говоря - в копии первого) под тот же текстовый примитив expresstools-кая маска (TEXTMASK) не подкладывается, и у этого примитва есть dxf код 284 (равен 3).

Как избавить примитивы второго чертежа от dxf кода 284 (чтобы пользоваться TEXTMASK из Expresstools) ?

Спасибо.
Просмотров: 7389
 
Непрочитано 27.07.2011, 19:47
#2
VVA

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


Без проверки
Код:
[Выделить все]
(defun C:Rem284 ( / ss i )
  (vl-load-com)
  (and
    (setq i -1)
    (setq ss (ssget "_:L" '((0 . "TEXT"))))
    (while (setq e (ssname ss (setq i (1+ i))))
      (entmakex (vl-remove-if '(lambda(x)(= (car x) 284))(entget e)))
      (entdel e)
      )
    )
  (princ)
  )
Приложи файлик с этим текстом
__________________
Как использовать код на Лиспе читаем здесь

Последний раз редактировалось VVA, 28.07.2011 в 11:49. Причина: Новая версия
VVA вне форума  
 
Автор темы   Непрочитано 28.07.2011, 08:33
#3
kserg


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


AutoCAD2007

Файл, где все нормально - TextMaska-Ok.dwg
Файл, где проблема - TextMaska-Error.dwg

TextMaska-Ok.dwg был получен вставкой расчлененным блоком файла TextMaska-Error.dwg в новый пустой файл.
Вложения
Тип файла: dwg
DWG 2007
TextMaska-Ok.dwg (57.0 Кб, 1612 просмотров)
Тип файла: dwg
DWG 2007
TextMaska-Error.dwg (82.0 Кб, 1619 просмотров)
kserg вне форума  
 
Непрочитано 28.07.2011, 09:05
#4
dimitriy_popov


 
Регистрация: 27.07.2010
Сообщений: 25
Отправить сообщение для dimitriy_popov с помощью Skype™


К скопированному в другой чертеж тексту необходимо повторно применить команду маски. При копировании в другой чертеж данного текста связка между маской и текстом теряется, это моё наблюдение. Такое тоже бывало.
А отсутствие кода 284 говорит о применении к примитиву общих свойств данного класса.
из справки dxf - 284 Shadow mode

0 = Casts and receives shadows
1 = Casts shadows
2 = Receives shadows
3 = Ignores shadows
по умолчанию - no default
__________________
Конструктор КМД, Lisp
dimitriy_popov вне форума  
 
Автор темы   Непрочитано 28.07.2011, 10:29
#5
kserg


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


Цитата:
Сообщение от dimitriy_popov Посмотреть сообщение
К скопированному в другой чертеж тексту необходимо повторно применить команду маски. При копировании в другой чертеж данного текста связка между маской и текстом теряется, это моё наблюдение. Такое тоже бывало.
А отсутствие кода 284 говорит о применении к примитиву общих свойств данного класса.
из справки dxf - 284 Shadow mode

0 = Casts and receives shadows
1 = Casts shadows
2 = Receives shadows
3 = Ignores shadows
по умолчанию - no default
Это-то понятно, однако, хотелось бы - красиво..., типа нажал кнопку, программка обработала объекты/чертеж, ... и ставь себе маски.... А пока тока так - в пустой (новый) рисунок вставляешь "плохой" файл, делаешь настройки такими же как в "плохом" файле (единицы, точность и т.п.), через дизайнцентр перетягиваешь ЛИСТы из "плохого" файла сюда же и - пробуешь ставить маски...

Т.е. как от этого "Shadow mode" (3 = Ignores shadows) избавиться.......

>VVA
Спасибо, но код 284 (с помощью Rem284) не удаляется и, соответственно, проблема остается...

PS.
Про dxf код 284 узнал так: в экспрессовском TEXTMASK.LSP сделал так, чтоб cmdecho было 1, и только после этого увидел как TEXTMASK сообщает: "Неверный тип поля 284 в (entmake)", - и удаляет указываемый мною для маски текстовый примитив.

Последний раз редактировалось kserg, 28.07.2011 в 11:19.
kserg вне форума  
 
Непрочитано 28.07.2011, 11:44
#6
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Цитата:
Сообщение от kserg Посмотреть сообщение
...но код 284 (с помощью Rem284) не удаляется и, соответственно, проблема остается...
"Если враг не сдается его надо уничтожать"
Код:
[Выделить все]
 (defun C:Rem284 ( / ss i )
  (vl-load-com)
  (and
    (setq i -1)
    (setq ss (ssget "_:L" '((0 . "TEXT"))))
    (while (setq e (ssname ss (setq i (1+ i))))
      (entmakex (vl-remove-if '(lambda(x)(= (car x) 284))(cdr (entget e))))
      (entdel e))
    )
  (princ)
  )
Offtop: Надеюсь VVA не против...
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 28.07.2011, 12:03
#7
VVA

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


Дима_, Не против. Именно так с врагами и нужно поступать. Добавил описание проблемы к посту #4 Express Tools Bugs ( Ошибки Express Tools ) Там же выложил обновленный textmaskmip.lsp (Это экспрессовский textmask c исправленными багами). У себя на работе я его гружу после загрузки Express Tools.
kserg, Можешь попробовать маскировать им без применения Rem284 (она уже внутри есть)
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 28.07.2011, 12:03
#8
dimitriy_popov


 
Регистрация: 27.07.2010
Сообщений: 25
Отправить сообщение для dimitriy_popov с помощью Skype™


Необходимо изменить значение кода "284" на "0" в текстовом примитиве.

Код:
[Выделить все]
 
(defun C:Rem284	(/ ss i)
  (vl-load-com)
  (and
    (setq i -1)
    (setq ss (ssget "_:L" '((0 . "TEXT"))))
    (while (setq e (ssname ss (setq i (1+ i))))
      (setq e (entget e))
;;;(setq e (vl-remove-if '(lambda (x) (= (car x) 284)) e))
      (setq e (subst (cons 284 0) (assoc 284 e) e))
      (entmod e)
    )
  
__________________
Конструктор КМД, Lisp
dimitriy_popov вне форума  
 
Автор темы   Непрочитано 28.07.2011, 13:01
#9
kserg


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


Скока букф................
Ета ж фсе выучить нада................

Спасибо всем. Буду разгребать-проверять....

Однако, есть одно НО. и оно очень большое....
Ко мне обращаются с просьбой посмотреть проблемные файлы/чертежи (я не проектировщик) с возможностью исправления их. После чистки-приведения в порядок этих файлов/чертежей я их возвращаю владельцам.
Так вот, в вышеприведенном случае манипуляции с 284-ми кодами касаются уже существующих текстовых примитивов, а вновь создаваемые будут опять иметь код 284=3.......
Вот если бы найти - что за режим в AutoCAD-е (начиная с 2007-го) присваивает такой код примитивам и как одним махом этот режим отменить во всем файле/чертеже (и для будущих примитивов)....................

Последний раз редактировалось kserg, 28.07.2011 в 13:20.
kserg вне форума  
 
Непрочитано 28.07.2011, 13:39
#10
VVA

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


kserg, А озвученный мной в #7 вариант с textmaskmip.lsp чем не устраивает?
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 28.07.2011, 13:57
#11
kserg


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


>VVA
Конечно устраивает, и этот файл textmaskmip.lsp придется отдавать хозяину проблемного файла/чертежа.
...Лишь бы он (textmaskmip.lsp) во всех кадах работал.

Еще раз спасибо !
kserg вне форума  
 
Непрочитано 28.07.2011, 14:19
#12
dimitriy_popov


 
Регистрация: 27.07.2010
Сообщений: 25
Отправить сообщение для dimitriy_popov с помощью Skype™


Пробовал создать текст в АС2010 все в норме, в примитиве текста такой группы 284 нет.
А выбор можно задать автоматом, всех примитивов по заданными свойствами.
__________________
Конструктор КМД, Lisp
dimitriy_popov вне форума  
 
Автор темы   Непрочитано 28.07.2011, 14:51
#13
kserg


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


Цитата:
Сообщение от kserg Посмотреть сообщение
.... Буду разгребать-проверять.......
Разгреб-проверил. Докладываю:

1. AutoCAD2007: удаление (Дима_), замена кода "284" на "0" (dimitriy_popov) - не работают;

2.
Цитата:
Сообщение от dimitriy_popov Посмотреть сообщение
Пробовал создать текст в АС2010 все в норме, в примитиве текста такой группы 284 нет...
то же самое и в AutoCAD2008;

3. В AutoCAD2007 и в AutoCAD2008 : Загрузил textmaskmip.lsp (VVA), но последующее применение TEXTMASK выдало сообщение: неверный список (или хвост списка) "ACET-TEXTMASK". Маска не была создана.


Вывод: AutoCAD2007 ф топку...
kserg вне форума  
 
Непрочитано 28.07.2011, 14:57
#14
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Цитата:
Сообщение от kserg Посмотреть сообщение
1. AutoCAD2007: удаление (Дима_), замена кода "284" на "0" (dimitriy_popov) - не работают;
Может у тебя какая навеска в 2007 стоит которая автоматом в ЛЮБОЙ текст (284 . 0) добавляет - другого объяснения я не вижу.
p.s. покажи на всякий случай лог:
(entget (entlast))
rem284 ....
(entget (entlast))

Ну и для "полного счастья:"
Код:
[Выделить все]
(entmakex '((0 . "text") (10 0 0 0) (40 . 2.5) (1 . "Test 384")))
(entget (entlast))
p.p.s. Уверен что првильно lisp'ы загрузил?
__________________
Когда в руках молоток все вокруг кажется гвоздями.

Последний раз редактировалось Дима_, 28.07.2011 в 15:06.
Дима_ вне форума  
 
Непрочитано 28.07.2011, 15:21
#15
VVA

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


Цитата:
Сообщение от kserg Посмотреть сообщение
но последующее применение TEXTMASK выдало сообщение: неверный список (или хвост списка) "ACET-TEXTMASK". Маска не была создана.
Это я когда писал, скобку не там поставил. Эта глючная версия и попала в загрузку. Файл перезалил. Попробуй textmaskmip снова.
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 28.07.2011, 15:34
#16
dimitriy_popov


 
Регистрация: 27.07.2010
Сообщений: 25
Отправить сообщение для dimitriy_popov с помощью Skype™


Цитата:
Сообщение от kserg Посмотреть сообщение
замена кода "284" на "0" (dimitriy_popov) - не работают
Не доглядел, каюсь. Скопироал текст программы не полностью.
Код:
[Выделить все]
 (defun C:Rem284	(/ ss i)
  (setq i -1)
  (setq ss (ssget "_:L" '((0 . "TEXT"))))
  (while (setq e (ssname ss (setq i (1+ i))))
    (setq e (entget e))
    (setq e (subst (cons 284 0) (assoc 284 e) e))
    (entmod e)
  )
  (princ)
)
__________________
Конструктор КМД, Lisp
dimitriy_popov вне форума  
 
Автор темы   Непрочитано 28.07.2011, 15:53
#17
kserg


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


Цитата:
Сообщение от Дима_ Посмотреть сообщение
Может у тебя какая навеска в 2007 стоит которая автоматом в ЛЮБОЙ текст (284 . 0) добавляет - другого объяснения я не вижу.
p.s. покажи на всякий случай лог:
...
p.p.s. Уверен что првильно lisp'ы загрузил?

Уверен что првильно lisp'ы загрузил?:
сохранял код в lsp-файл, который загружал через appload (или через буфер текст кода вставлял в командную строку), а затем вводил команду Rem284.

покажи на всякий случай лог:
лог до:
Команда: (entget (car (entsel)))
Выберите объект: ((-1 . <Имя объекта: 7efb18a0>) (0 . "TEXT") (330 . <Имя
объекта: 7efedd00>) (5 . "ADDC4") (100 . "AcDbEntity") (67 . 0) (410 . "Model")
(8 . "0") (48 . 1000.0) (284 . 3) (100 . "AcDbText") (10 -1.81041e+006
-5.93061e+006 0.0) (40 . 3721.97) (1 . "Текст") (50 . 0.0) (41 . 1.0) (51 .
0.0) (7 . "Standard") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) (210 0.0 0.0 1.0) (100
. "AcDbText") (73 . 0))
лог после:
Команда: Rem284
Выберите объекты: найдено: 1
Выберите объекты:
Команда:
Команда: (entget (car (entsel)))
Выберите объект: ((-1 . <Имя объекта: 7efdb8e8>) (0 . "TEXT") (330 . <Имя
объекта: 7efd9d00>) (5 . "ADDCD") (100 . "AcDbEntity") (67 . 0) (410 . "Model")
(8 . "0") (48 . 1000.0) (284 . 3) (100 . "AcDbText") (10 -1.81041e+006
-5.93061e+006 0.0) (40 . 3721.97) (1 . "Текст") (50 . 0.0) (41 . 1.0) (51 .
0.0) (7 . "Standard") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) (210 0.0 0.0 1.0) (100
. "AcDbText") (73 . 0))

"...Ну и для "полного счастья:"
(entmakex '((0 . "text") (10 0 0 0) (40 . 2.5) (1 . "Test 384")))
<Имя объекта: 7efdb8f8>
Команда: (entget (entlast))
((-1 . <Имя объекта: 7efdb8f8>) (0 . "TEXT") (330 . <Имя объекта: 7efd9d00>) (5
. "ADDCF") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (48 .
1000.0) (284 . 3) (100 . "AcDbText") (10 0.0 0.0 0.0) (40 . 2.5) (1 . "Test
384") (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "Standard") (71 . 0) (72 . 0) (11
0.0 0.0 0.0) (210 0.0 0.0 1.0) (100 . "AcDbText") (73 . 0))

...навеска в 2007...автоматом в ЛЮБОЙ текст (284 . 0) добавляет...::
Нет. Иначе во втором приложенном dwg-файле коды 284 бы присутствовали.
kserg вне форума  
 
Непрочитано 28.07.2011, 16:00
#18
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Да выходит что не нет, а самое что ненаесть ДА - посмотри внимательно "для полного счастья" - откуда там (284 . 3) появилось - его в "задании" (entmakex...) небыло - попробуй поотключать "все лишнее" кто-то "реакторит" (хотя может это конечно и "фишка" 2007 - но вряд-ли - по карйней мере DXF Reference - на 284 пишет "no default").
__________________
Когда в руках молоток все вокруг кажется гвоздями.

Последний раз редактировалось Дима_, 28.07.2011 в 16:09.
Дима_ вне форума  
 
Автор темы   Непрочитано 28.07.2011, 16:08
#19
kserg


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


>dimitriy_popov
Все-равно не работает.

>VVA
Теперь работает.

>Дима_
Проверил на других машинах (в AutoCAD2007 без всяких навесок, т.е. "голом") - то же самое...
Если и сидит какой паршивец (который "реакторит"), то только в приложенном файле чертежа
TextMaska-Error.dwg, ведь во втором файле (TextMaska-Ok.dwg) - все нормально. Но вот как его (паршивца) оттуда выкурить ?
PS. Пропустил файл через nanocad (99,9999999% гарантии, что реактор бы там сдох) - все то же самое.

Последний раз редактировалось kserg, 28.07.2011 в 16:45.
kserg вне форума  
 
Непрочитано 28.07.2011, 16:36
#20
dimitriy_popov


 
Регистрация: 27.07.2010
Сообщений: 25
Отправить сообщение для dimitriy_popov с помощью Skype™


Цитата:
Сообщение от kserg Посмотреть сообщение
>dimitriy_popov
Все-равно не работает.
Приложенный файл - TextMaska-Error.dwg обрабатывается корректно (AC2010).
Ищи скорее всего причину в реакторах. Какой-то перехватывает создание текста и вносит свои изменения судя по #17.
__________________
Конструктор КМД, Lisp
dimitriy_popov вне форума  
 
Непрочитано 29.07.2011, 10:12
#21
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


То есть (entmakex '((0 . "text") (10 0 0 0) (40 . 2.5) (1 . "Test 384"))) - создает 284 только в определенных файлах? Если запустить в новом чистом документе (2007) что (entget (entlast)) вернет?
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 29.07.2011, 12:39
#22
kserg


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


Цитата:
Сообщение от Дима_ Посмотреть сообщение
То есть (entmakex '((0 . "text") (10 0 0 0) (40 . 2.5) (1 . "Test 384"))) - создает 284 только в определенных файлах? Если запустить в новом чистом документе (2007) что (entget (entlast)) вернет?
Совершенно верно.

В новом чистом документе возвращает:
Команда: (entmakex '((0 . "text") (10 0 0 0) (40 . 2.5) (1 . "Test 384")))
<Имя объекта: 7ef96098>
Команда: (entget (entlast))
((-1 . <Имя объекта: 7ef96098>) (0 . "TEXT") (330 . <Имя объекта: 7ef94cf8>) (5
. "10B") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 .
"AcDbText") (10 0.0 0.0 0.0) (40 . 2.5) (1 . "Test 384") (50 . 0.0) (41 . 1.0)
(51 . 0.0) (7 . "Standard") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) (210 0.0 0.0
1.0) (100 . "AcDbText") (73 . 0))

Т.е. без 284.
kserg вне форума  
 
Непрочитано 29.07.2011, 13:20
#23
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


???????????????????? - тогда у меня вариант только один - глюк 2007.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > dxf код 284



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как поменять 3D высоту на Уровень? DmAK AutoCAD 18 15.06.2015 09:14
Создание форм и шрифтов для AutoCAD Shoorup AutoCAD 6 25.01.2013 17:43
Данные dxf кодов solo123 Программирование 3 21.02.2011 20:12