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

Вернуться   Форум DWG.RU > Программное обеспечение > Вертикальные решения на базе AutoCAD > Fields (связь поля с объектом, как отследить)?

Fields (связь поля с объектом, как отследить)?

Ответ
Поиск в этой теме
Непрочитано 02.11.2009, 15:40 #1
Fields (связь поля с объектом, как отследить)?
Protreck
 
Engeneering
 
Симферополь
Регистрация: 28.03.2007
Сообщений: 53

Меряю площадь с помощью AEC объктов (SPACE), в спецификацию помещений вношу значение площади с помощью полей (Fields). Вопрос: Как отследить на какой именно объект ссылается поле?
Использую ADT 2009+Spds 5
Просмотров: 5572
 
Непрочитано 02.11.2009, 15:44
#2
Кулик Алексей aka kpblc
Moderator

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


Использовать тэги и многовидовые блоки, а также свойства объектов (PropertySet) и ADT-шные таблицы (ScheduleTable)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 02.11.2009, 16:16
#3
Protreck

Engeneering
 
Регистрация: 28.03.2007
Симферополь
Сообщений: 53
<phrase 1=


не так хорошо знаком с ADT. Но если все таки представить такую ситуацию: чистый автокад (не ADT), начерчено 10 одинаковых линий (ну или разных, без разницы. печатаем мультитекст, вставляем в него поле. Полем ссылаемся на свойство объекта (одна из этих десяти линий), например длина, получаем число. после этого беспорядочно перемещаем линии одну за другой, и теперь пытаемся узнать на свойство какой именно линии ссылается наше поле, вот...
Protreck вне форума  
 
Непрочитано 02.11.2009, 16:21
#4
Кулик Алексей aka kpblc
Moderator

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


Вручную, думаю, практически никак. Программно шансы есть.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 02.11.2009, 16:27
#5
Protreck

Engeneering
 
Регистрация: 28.03.2007
Симферополь
Сообщений: 53
<phrase 1=


жаль, но все равно спасибо!
Protreck вне форума  
 
Непрочитано 02.11.2009, 16:40
#6
Кулик Алексей aka kpblc
Moderator

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


Ну вот, как вариант (в указываемом тексте должно быть только одно поле):
Код:
[Выделить все]
(defun dwgru-object-by-field (/ ent owner txt)

                             ;|
*    Подсвечивает объект, с которого взято поле
*    Пример вызова:
(dwgru-object-by-field)
|;

  (vl-load-com)
  (if (and (= (type (setq ent (vl-catch-all-apply
                                (function
                                  (lambda ()
                                    (car (entsel "\nSelect a field <Cancel> : "))
                                    ) ;_ end of lambda
                                  ) ;_ end of function
                                ) ;_ end of vl-catch-all-apply
                          ) ;_ end of setq
                    ) ;_ end of type
              'ename
              ) ;_ end of =
           (setq ent (vlax-ename->vla-object ent))
           (vlax-property-available-p ent 'textstring)
           (not (vl-catch-all-error-p
                  (vl-catch-all-apply
                    (function
                      (lambda ()
                        (vla-fieldcode ent)
                        ) ;_ end of lambda
                      ) ;_ end of function
                    ) ;_ end of vl-catch-all-apply
                  ) ;_ end of vl-catch-all-error-p
                ) ;_ end of not
           (/= (setq txt (vla-fieldcode ent)) (vla-get-textstring ent))
           ) ;_ end of and
    (progn
      (vla-highlight
        (vla-objectidtoobject
          (vla-get-activedocument (vlax-get-acad-object))
          (atoi (substr txt (+ 1 (strlen "_ObjId") (vl-string-search "_ObjId" txt))))
          ) ;_ end of vla-objectidtoobject
        :vlax-true
        ) ;_ end of vla-Highlight
      ) ;_ end of progn
    ) ;_ end of if
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 02.11.2009, 20:59
#7
Andi55

инженер-электрик
 
Регистрация: 12.08.2005
Иркутск
Сообщений: 523
<phrase 1=


Ну через заднюю калитку можно и вручную, но работы прибавится.
Команда leader и посмотрите прилагаемый ролик, лидера надо таскать вместе с объектом, зеленые линии на печать не выводятся.
Миниатюры
Нажмите на изображение для увеличения
Название: Поле.gif
Просмотров: 182
Размер:	198.9 Кб
ID:	28203  
__________________
В MEP моя буква - Е
Andi55 вне форума  
 
Непрочитано 31.03.2015, 02:34
#8
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Ну вот, как вариант (в указываемом тексте должно быть только одно поле):
Понадобился этот функционал, но на х64 системе код не заработал:
Цитата:
Команда: (DWGRU-OBJECT-BY-FIELD)
Select a field <Cancel> : ; ошибка: Ошибка Automation. Отсутствует описание.
Все дело оказалось в том, что на х64 системах ObjectID состоит из 13-ти цифр, а функция atoi обрабатывает максимум 10. Замена функции atof на itof решила проблему. Спасибо, Алексей, как обычно.

Последний раз редактировалось skkkk, 27.01.2020 в 21:26.
skkkk вне форума  
 
Непрочитано 31.03.2015, 19:23
#9
VitalyAF


 
Регистрация: 19.07.2005
Россия
Сообщений: 3,224


skkkk
Вообще-то связи между маркой и объектом в граф. виде были и есть в стандартном исполнении,
стоит ли время тратить на дублирование?
VitalyAF вне форума  
 
Непрочитано 31.03.2015, 21:59
#10
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Ну времени я потратил менее пяти минут с учётом предыдущего поста, а про подобную штатную возможность, стыдно, но не знаю. Как это сделать?
skkkk вне форума  
 
Непрочитано 01.04.2015, 11:17
#11
VitalyAF


 
Регистрация: 19.07.2005
Россия
Сообщений: 3,224


По терминологии ACA, связи это Якоря - Anchor (eng) - связывают объект с маркой,
для визуального контроля, что с чем связано, есть возможность включить граф. дуговой сегмент м-ду объектом и маркой
Вкл/Выкл управляется из ЭП - экранных представлений см. ролик

Последний раз редактировалось VitalyAF, 01.04.2015 в 12:10.
VitalyAF вне форума  
 
Непрочитано 02.04.2015, 15:07
#12
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Цитата:
Сообщение от VitalyAF Посмотреть сообщение
skkkk
Вообще-то связи между маркой и объектом в граф. виде были и есть в стандартном исполнении
Цитата:
Сообщение от VitalyAF Посмотреть сообщение
По терминологии ACA, связи это Якоря
Проглядел, что тема в Вертикальных решениях... В голом Автокаде такого нет, стало быть, не зря все же я пять минут потратил.
skkkk вне форума  
 
Непрочитано 27.01.2020, 16:34
1 | 1 #13
Fitel


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


Цитата:
Сообщение от skkkk Посмотреть сообщение
Замена функции itoa на itof решила проблему.
Правильно было бы написать: "Замена функции atoi на atof решила проблему".
Fitel вне форума  
 
Непрочитано 27.01.2020, 21:27
#14
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,653


Fitel, спасибо, исправил
skkkk вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Вертикальные решения на базе AutoCAD > Fields (связь поля с объектом, как отследить)?

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мониторы LCD CRT Разное 94 17.06.2008 10:51
ЮМОР 2006 =) Perezz!! Разное 1122 04.01.2007 00:46
БРЕД СИВОЙ КОБЫЛЫ Kryaker Разное 1876 29.12.2006 23:41
название поля в Access или как убрать пробел(( Димас Программирование 7 03.08.2006 08:38
Как использовать в FIELDS Лисп переменные (2007)? Startrek AutoCAD 3 11.04.2006 17:39