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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Где сидит информация, что блок был создан с флажком "Scale Uniformly"

Где сидит информация, что блок был создан с флажком "Scale Uniformly"

Ответ
Поиск в этой теме
Непрочитано 26.02.2010, 08:29 #1
Где сидит информация, что блок был создан с флажком "Scale Uniformly"
KAI
 
геологоразведка, строительство
 
Магадан
Регистрация: 14.10.2003
Сообщений: 311

Acad 2008 eng.
Команда _-INSERT ведет себя по разному для блоков, которые были созданы с применением этого флажка или без оного. (То есть либо запрашивает Y scale либо нет).
В DXF кодах ничего подобного не нашел, может где-то еще в дебрях AutoCAD есть такая информация?
__________________
Лень - великий двигатель прогресса!
Просмотров: 2915
 
Непрочитано 26.02.2010, 09:23
#2
Кулик Алексей aka kpblc
Moderator

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


Для описания блока проверяй свойство BlockScaling
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 27.02.2010, 02:24
#3
KAI

геологоразведка, строительство
 
Регистрация: 14.10.2003
Магадан
Сообщений: 311


AutoCAD 2008 - English SP1

Проверяю:

_$ (setq vlaobj (vlax-ename->vla-object en))
(vlax-property-available-p vlaobj 'Name)
(vlax-get-property vlaobj 'Name)

(vlax-property-available-p vlaobj 'Layer)
(vlax-get-property vlaobj 'Layer)

(vlax-property-available-p vlaobj 'BlockScaling)
(vlax-get-property vlaobj 'BlockScaling)

#<VLA-OBJECT IAcadBlockReference 12b48654>
T
"Lump"

T
"Geol_Lump"

nil
; error: ActiveX Server returned the error: unknown name: BLOCKSCALING

Похоже такого свойства у блока нет (причем это не зависит от того создан он с с флажком "Scale Uniformly" или без)
__________________
Лень - великий двигатель прогресса!
KAI вне форума  
 
Непрочитано 27.02.2010, 06:21
#4
Кулик Алексей aka kpblc
Moderator

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


Я ж говорил про описание, а не про вхождение...
Код:
[Выделить все]
(setq obj (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) (vla-get-effectivename (vlax-ename->vla-object (car (entsel))))))
(vla-get-blockscaling obj)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 27.02.2010, 08:53
#5
KAI

геологоразведка, строительство
 
Регистрация: 14.10.2003
Магадан
Сообщений: 311


Алексей!

Ну тупой я в vla.
А если у меня есть только имя блока, а не ename, как в этом случае?
__________________
Лень - великий двигатель прогресса!
KAI вне форума  
 
Непрочитано 27.02.2010, 09:16
#6
Кулик Алексей aka kpblc
Moderator

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


А какая разница?
Код:
[Выделить все]
(setq obj (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) BlockName))
(vla-get-blockscaling obj)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 27.02.2010, 09:41
#7
KAI

геологоразведка, строительство
 
Регистрация: 14.10.2003
Магадан
Сообщений: 311


До этого я уже почти допер, но вот что меня интересует:
если имени такого блока не существует, то vla-item будет выдавать ошибку. А как проверить есть ли такой блок?
__________________
Лень - великий двигатель прогресса!
KAI вне форума  
 
Непрочитано 27.02.2010, 09:46
#8
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,701
Отправить сообщение для Do$ с помощью Skype™


(tblsearch "block" BlockName)
Do$ вне форума  
 
Непрочитано 27.02.2010, 09:49
#9
Кулик Алексей aka kpblc
Moderator

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


Есть два варианта: универсальный и простой.
Простой: проверять наличие описания блока в текущем документе через (tblobjname "block" BlockName)
Универсальный: идти, например, так (в том числе и для неактивного документа сработает):
Код:
[Выделить все]
(vl-load-com)

(defun _dwgru-block-exist-in-doc (doc name / res)
                                 ;|
*    Проверяет, существует ли в документе описание блока с указанным именем
*    Параметры вызова:
	doc - vla-указатель на обрабатываемый документ/ nil -> текущий
	name - имя блока
*    Возвращает vla-указатель на описание блока либо nil, если такого не существует
|;
  (if (not doc)
    (setq doc (vla-get-activedocument (vlax-get-acad-object)))
    ) ;_ end of if
  (if (= (type (setq res (vl-catch-all-apply
                           (function
                             (lambda ()
                               (vla-item (vla-get-blocks doc name))
                               ) ;_ end of lambda
                             ) ;_ end of function
                           ) ;_ end of vl-catch-all-apply
                     ) ;_ end of setq
               ) ;_ end of type
         'vla-object
         ) ;_ end of =
    res
    ) ;_ end of if
  ) ;_ end of defun
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 27.02.2010, 10:20
#10
KAI

геологоразведка, строительство
 
Регистрация: 14.10.2003
Магадан
Сообщений: 311


Выручили, спасибо.
__________________
Лень - великий двигатель прогресса!
KAI вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Где сидит информация, что блок был создан с флажком "Scale Uniformly"



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
на злобу дня !! zaza-noza Разное 63 22.05.2009 15:10
Мониторы LCD CRT Разное 94 17.06.2008 10:51
Юмор 2007 Огурец Разное 1172 29.12.2007 11:16
ЮМОР 2006 =) Perezz!! Разное 1122 04.01.2007 00:46
БРЕД СИВОЙ КОБЫЛЫ Kryaker Разное 1876 29.12.2006 23:41