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

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

Перебрать "выноски спецификации"

Ответ
Поиск в этой теме
Непрочитано 18.06.2010, 06:31 #1
Перебрать "выноски спецификации"
AnTe
 
Регистрация: 10.06.2010
Сообщений: 7

Здравствуйте. У меня стоит задача, перебрать все выноски спецификации.

"Выноска спецификации" - объект MechaniCS-а.

Когда в автокаде нажимаю на нём правую кнопку, и выбираю "свойства" - в верхнем поле (выпадающий список) стоит его имя "mscSpcLeader". Нужно прочитать его свойства, например, "позиция" (текст), или "обозначение".

Прочитал несколько мануалов по автолиспу, и, честно говоря, понял мало наверное, вдобавок сказывается абсолютное отсутствие практики работы в AutoCAD

Просмотрел тред, про координаты точек в файл http://forum.dwg.ru/showthread.php?t=20509
параметры окружностей, в файл http://forum.dwg.ru/showthread.php?t=53721

Если я правильно понимаю, эти примеры мне совсем не подходят?

Например, в первом варианте (setq ss (ssget '((0 . "POINT")))) ;_Выбираем объект Автокада ТОчка
во втором выбирают окружности по ключевому слову "CIRCLE"
а мне по какому выбирать - наверное, неизвестно?

Ну или хотя бы, подскажите стоит ли вообще браться за эту задачу?
Насколько она сложна?

спасибо.
Просмотров: 3801
 
Непрочитано 18.06.2010, 11:56
#2
CB

Конструирование в области нефтеразведки
 
Регистрация: 10.02.2006
Гомель
Сообщений: 321


Набери в командной строке: (entget (car (entsel))), выбери интересующий тебя объект и посмотри в списке его свойства...
CB вне форума  
 
Автор темы   Непрочитано 18.06.2010, 12:52
#3
AnTe


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


спасибо, попробовал:

((-1 . <Имя объекта: 7ef8b0c8>) (0 . "mcsSpcLeader") (330 .
<Имя объекта: 7ef69cf8>) (5 . "111") (100 . "AcDbEntity") (67 . 0) (410 .
"Model") (8 . "0") (100 . "mcsDbObject") (100 . "mcsDbObjectSpcLeader") (90 .
1) (301 . "Name") (300 . "Выноска спецификации") (301 . "Info") (300 . "Выноска
спецификации") (301 . "Scale") (40 . 1.0) (301 . "Размер стрелки") (40 . 0.5)
(301 . "Высота текста") (40 . 7.0) (301 . "Наклон текста") (40 . 15.0) (301 .
"Цвет текста") (90 . 16711680))

выделил жирным, наверное, нужное. т.к. точка той же командой отображается так: ((-1 . <Имя объекта: 7ef8b040>) (0 . "POINT") (330 . <Имя
объекта: 7ef69cf8>) (5 . "100") (100 . "AcDbEntity") (67 . 0) (410 . "Model")
(8 . "0") (100 . "AcDbPoint") (10 169.141 127.05 0.0) (210 0.0 0.0 1.0) (50 .
0.0))


однако, если (setq ss (ssget '((0 . "POINT")))) - позволяет выбирать точки, то команда (setq ss (ssget '((0 . "mcsSpcLeader")))) - не позволяет выбрать ничего, включая выноску, которая вот, передо мною, на чертеже.

Даже когда на ней щёлкаю, отвечает "Выберите объекты: найдено: 0, всего: 0"

А какой конструкцией можно перебрать ВСЕ объекты на чертеже?
AnTe вне форума  
 
Непрочитано 18.06.2010, 13:49
#4
Александр Ривилис

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


Попробуй (setq ss (ssget '((0 . "MCSSPCLEADER"))))
Александр Ривилис вне форума  
 
Непрочитано 18.06.2010, 14:01
#5
Кулик Алексей aka kpblc
Moderator

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


На СПДС GraphiCS вплоть до версии 4.1 подобный фокус не работал (как сейчас дело обстоит - не знаю). Приходилось получать набор, а потом отфильтровывать нужные примитивы.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 18.06.2010, 14:02
#6
AnTe


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


Цитата:
Попробуй (setq ss (ssget '((0 . "MCSSPCLEADER"))))
неа, всё то же: выбрано 0

А нельзя ли автоматически перебрать ВСЕ объекты на чертеже, и куда-нибудь вывести их "имена"?

и,.... похоже, до окончательного решения, мне, как до луны пешком?
AnTe вне форума  
 
Непрочитано 18.06.2010, 14:08
#7
Кулик Алексей aka kpblc
Moderator

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


Посмотри темы http://www.google.ru/custom?hl=ru&in...%3Azeqjjx-kn0v
Там, конечно, для СПДС GraphiCS, но сути это не меняет
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.06.2010, 14:10
#8
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


AnTe, выложи в эту тему маленький файлик *.dwg с необходимым тебе примитивом. Заодно, обозначь этот примитив, чтоб было проще его найти визуально. На досуге, посмотрю чем можно помочь...
Елпанов Евгений вне форума  
 
Непрочитано 18.06.2010, 14:11
#9
Кулик Алексей aka kpblc
Moderator

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


Елпанов Евгений, без ObjectEnabler'a (ИМХО) можно и не пытаться.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 18.06.2010, 14:14
#10
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
без ObjectEnabler'a (ИМХО) можно и не пытаться.
как сказать...
Попытка - не пытка
Елпанов Евгений вне форума  
 
Непрочитано 18.06.2010, 14:41
#11
Александр Ривилис

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


Цитата:
Сообщение от Елпанов Евгений Посмотреть сообщение
как сказать...
Без энейьблера это будет прокси.
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 21.06.2010, 04:51
#12
AnTe


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


Цитата:
Сообщение от Елпанов Евгений Посмотреть сообщение
AnTe, выложи в эту тему маленький файлик *.dwg с необходимым тебе примитивом. Заодно, обозначь этот примитив, чтоб было проще его найти визуально. На досуге, посмотрю чем можно помочь...
Прикладываю файл, в нём точка, линия и выноска спецификации, с меткой (номер позиции) "555"

Второй файл - на всякий случай, пример реального чертежа, (из которого наши конструкторы получают спецификацию, средствами MechaniCS)

ps а что такое обжектэнеблейр и прокси?
Вложения
Тип файла: dwg
DWG 2004
пример с выноской 555.dwg (26.3 Кб, 539 просмотров)
Тип файла: dwg
DWG 2000
чертеж.dwg (249.5 Кб, 531 просмотров)
AnTe вне форума  
 
Автор темы   Непрочитано 06.07.2010, 13:43
#13
AnTe


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


Мда, похоже, действительно, из объекта "выноска" нифига не взять.

Я надеялся, что дело в моей некомпетентности, со мной работает девушка, которая запросто в лиспе изменяла в механиксовском "основная надпись" все параметры, проставляя, например, имя-фамилиё-инвентарный номер. Оказывается, все эти буковки прекрасно отображаются, например, при использовании рекомендованных мне выше команд.

Недавно она попробовала обратиться к какому-то другому объекту механикса, и получила ту же белиберу, что пишется у меня. Нужных свойств нет, одни шифры какие-то

В общем - облом, по-полной...
AnTe вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Перебрать "выноски спецификации"



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как перебрать все текстовые строки в открытом Автокадовском файле используя AutoLISP? lexluther LISP 9 26.08.2009 17:37