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

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

Динамич. блоки. Програмное изм. свойств

Ответ
Поиск в этой теме
Непрочитано 05.10.2007, 11:44 #1
Динамич. блоки. Програмное изм. свойств
ct_ycte
 
Россия
Регистрация: 29.08.2007
Сообщений: 28

Здравствуйте!!!
Создал динам. блок, например с изменением его длины. При его выделении появляется ручка где показаны все возможные варианты длины.
Вопрос: А нельзя изменение длины(для этого случая) запрограммировать на кнопку?

Спасибо за помощь!!!

(Просто хочется сделать форматы на основе динам. блоков с удобным интерфейсом)
Просмотров: 11957
 
Непрочитано 05.10.2007, 11:58
#2
VVA

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


http://forum.abok.ru/index.php?showtopic=14612&st=360
пост 378
*** Добавлено
Ссылка на caduser
LISP. Изменение свойств(а) динамических блоков.

Последний раз редактировалось VVA, 28.12.2010 в 15:45.
VVA вне форума  
 
Непрочитано 05.10.2007, 12:14
#3
Кулик Алексей aka kpblc
Moderator

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


Тогда уж http://forum.abok.ru/index.php?showtopic=14612&st=377
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 05.10.2007, 12:58
#4
Diman111

промышл проектант
 
Регистрация: 26.05.2005
Изовсехщелей
Сообщений: 323


Послали так послали
- а вопрос то интересный - вернее на него ответ )
Diman111 вне форума  
 
Автор темы   Непрочитано 05.10.2007, 14:03
#5
ct_ycte


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


Да, я думал что решение по проще будет.
ct_ycte вне форума  
 
Автор темы   Непрочитано 05.10.2007, 14:59
#6
ct_ycte


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


Вставить динам. блок не проблема.

Когда мы его выделяем в чертеже, все параметры которыми мы его наделили (т.е. растяжение, отображение и т.д.) отображаюся в окне свойства и каждый со своим списком вариантов.
Может программно можно туда обращаться чтоб менять значение?

Спасибо за помощь!!!
ct_ycte вне форума  
 
Непрочитано 05.10.2007, 15:57
#7
Кулик Алексей aka kpblc
Moderator

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


Можно. Как пример http://www.autocad.ru/cgi-bin/f1/board.cgi?t=36637zq
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 05.10.2007, 17:00
#8
Krieger

инженер (КМ)
 
Регистрация: 30.10.2004
Красноярск
Сообщений: 3,837


Кулик Алексей aka kpblc
Ты, кстати, обнови там функцию-то, у ней же баг высветился...
Krieger вне форума  
 
Автор темы   Непрочитано 05.10.2007, 17:19
#9
ct_ycte


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


А у меня все программы по ссылке http://www.autocad.ru/cgi-bin/f1/board.cgi?t=36637zq выдает ошибку
слишком мало аргументов.
програму вызывал (_KPBLC-GET-DYN-BLOCK-LIST-PROP-AND-VALUES)
ct_ycte вне форума  
 
Непрочитано 05.10.2007, 17:21
#10
Кулик Алексей aka kpblc
Moderator

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


Да там столько багов, высветилось при переходе на 2007, что проще новое написать Направление указано, а там уж как карта ляжет... Если разрабатывать универсалку (как я люблю), то тут кода страницы на 3 будет, не меньше.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 05.10.2007, 17:29
#11
ct_ycte


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


Смотри, допустим я знаю как называется дим. блок(т.е. мне не надо его искать)., знаю имя свойства.
Т.е. я его уже вставил в чертеж и мне только надо изменить одно из свойств динам. блока.

Если так вопрос поставить.
ct_ycte вне форума  
 
Непрочитано 05.10.2007, 17:48
#12
Кулик Алексей aka kpblc
Moderator

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


Во-первых, знать имя дин.блока мало. Надо знать его конкретное вхождение. Во-вторых, дин.свойство может быть индексируемым (перечисляемым) - типа "красный желтый зеленый в_горошек" или неиндексируемым (длина, например). В-третьих, блок может лежать на заблокированном слое или принадлежать другому блоку, который тоже неизвестно как лежит. В-четвертых, изменение значения дин.свойства может вызвать изменение видимости некоторых примитивов дин.блока, а эти примитивы могут быть положены на замороженный или заблокированный в данный момент слой. Соответственно необходимо:
- проверить правильность передачи данных. Если указателя на блок нет, запросить. Если имени дин.свойства нет, запросить. Если свойство индексируемое, запросить новое значение. Или не запрашивать - подобные решения зависят от области применения лиспа.
- проверить, работа выполняется со вхождением блока или нет?
- проверить, а динамический ли блок?
- проверить владельца дин.блока. Если внешняя ссылка, то механизм работы меняется принципиально и я его реализовать не могу. При этом помнить о том, что дин.блок может входить внутрь блока, который входит во внешнюю ссылку.
- проверить наличие у этого дин.блока этого свойства
- если свойство есть и оно индексируемое, проверить - попадает ли передаваемое значение в допустимый диапазон
- разморозить и разблокировать слои. Возможно, придется проходить по всем слоям файла, так как вычислить владельца дин.свойства мне пока не удалось
- изменить свойство. При этом помнить, что свойства могут отображаться как числовые или строковые переменные, а передаваться должны как variant (по-моему).
- обновить вхождение блока.
- регенерировать текущий (если активна закладка модели) или все (если активна закладка листа) видовые экраны.
- восстановить состояние слоев.
На каждом этапе надо отслеживать возможность ошибки. Приходится помнить, что vla-get-allowedvalues (вроде так пишется) возвращает "не список"; что тупое применение GetDynProperties может выбить acad в непонятное состояние (особенно для описаний блоков или внешних ссылок); что слишком большая вложенность обработчика ошибок может не сработать...
Если писать нормально работающую программу на это, то тут явно не на 3 строки. Хотя, если исключить все эти отловы, то можно и 3-4 строками обойтись. Но использовать такое я не рискну.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 05.10.2007, 19:34
#13
VVA

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


>ct_ycte Ты хочешь программно изменять свойства, но не хочешь в программах разбираться.
Берешь программы по ссылке №2
Если свойство индексируемое (перечисляемое). Обычно по умолчанию Visible - это имя. В объекте значения храняться в Allowedvalues, а текущее в Value.
Допустим в чертеже вставлен блок, у него есть перечисляемое свойство "Visible" и значения Круг, Квадрат, Треугольник
тогда

Код:
[Выделить все]
(SetDynamicBlockPropertyNameAllowedValue  (vlax-ename->vla-object (car(entsel))) "Visible" "Круг")
Установит свойсво в Круг

Если есть неиндексируемое свойство, например "Distance"

Код:
[Выделить все]
(SetDynamicBlockPropertyNameValue (vlax-ename->vla-object (car(entsel))) "Distance" 200)
Установит его в 200.

PS Пишу без Автокада, за правильное написание vlax-ename->vla-object и парность скобок не ручаюсь
VVA вне форума  
 
Автор темы   Непрочитано 07.10.2007, 18:10
#14
ct_ycte


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


Я в таком коде не вжизнь не разберусь
ct_ycte вне форума  
 
Непрочитано 08.10.2007, 11:00
#15
VVA

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


Пользуйся готовыми ф-циями. По принципу черного ящика, известно что на входе и на выходе.
VVA вне форума  
 
Автор темы   Непрочитано 11.10.2007, 14:03
#16
ct_ycte


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


Спасибо Вам ребята!!!
Вроде разобрался!
Надесь к вам еще можно будет обратится за помощью.
Очень на это расчитываю!
ct_ycte вне форума  
 
Автор темы   Непрочитано 11.10.2007, 19:01
#17
ct_ycte


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


снова я.
Не как не могу понять как правильноуказать имя блока чтоб не выдавал запрос на выбор
"\nУкажите блок <Отмена> : "

Имя блока block11.

Может подскажите, пожалуйста.

Например в этой програмке.
(defun _kpblc-change-dyn-block-prop (ent name value / adoc prop value_lst blk)
;|
* Функция изменения свойства динамического блока.
* Параметры вызова:
* ent указатель на блок (vla-, ename или string). Строка воспринимается
как хендл объекта. nil -> запрашивается у пользователя
* name имя дин.свойства
* value новое значение
* Функция проверяет, является ли переданный примитив указателем на динамический
* блок, наличие у этого дин.блока указанного свойства и возможности назначения
* value.
|;
(vl-load-com)
(vl-catch-all-apply
'(lambda ()
(setq ent (cond (ent)
(t (car (entsel "\nУкажите блок <Отмена> : ")))
) ;_ end of cond
) ;_ end of setq
) ;_ end of lambda
) ;_ end of vl-catch-all-apply
(vla-startundomark
(setq adoc (vla-get-activedocument (vlax-get-acad-object)))
) ;_ end of vla-StartUndoMark
(if
(vl-catch-all-error-p
(vl-catch-all-apply
(function
(lambda ()
(if
(and (setq
ent (cond
((= (type ent) 'ename) (vlax-ename->vla-object ent))
((= (type ent) 'vla-object) ent)
((= (type ent) 'str)
((lambda (/ tmp)
(vl-catch-all-apply
'(lambda () (setq tmp (vla-handletoobject ent)))
) ;_ end of vl-catch-all-apply
tmp
) ;_ end of lambda
)
)
(t nil)
) ;_ end of cond
) ;_ end of setq
(= (strcase (vla-get-objectname ent) t) "acdbblockreference")
(= (vla-get-isdynamicblock
(setq
blk (vla-item (vla-get-blocks adoc)
(vla-get-effectivename ent)
) ;_ end of vla-item
) ;_ end of setq
) ;_ end of vla-get-isxref
:vlax-true
) ;_ end of =
name
(= (type name) 'str)
value
(setq
prop (car (vl-remove-if-not
'(lambda (x)
(= (strcase (vla-get-propertyname x))
(strcase name)
) ;_ end of =
) ;_ end of lambda
(vlax-safearray->list
(vlax-variant-value
(vla-getdynamicblockproperties ent)
) ;_ end of vlax-variant-value
) ;_ end of vlax-safearray->list
) ;_ end of vl-remove-if-not
) ;_ end of car
) ;_ end of setq
(member
value
(mapcar 'vlax-variant-value
(vlax-safearray->list
(vlax-variant-value (vla-get-allowedvalues prop))
) ;_ end of vlax-safearray->list
) ;_ end of mapcar
) ;_ end of member
) ;_ end of and
(progn
(vla-put-value
prop
(vlax-make-variant
value
(vlax-variant-type (vla-get-value prop))
) ;_ end of vlax-make-variant
) ;_ end of vla-put-value
(vla-update ent)
) ;_ end of progn
(princ "\nТакого значения или свойства в блоке нет")
) ;_ end of if
) ;_ end of lambda
) ;_ end of function
) ;_ end of vl-catch-all-apply
) ;_ end of vl-catch-all-error-p
(princ (strcat "\nОшибка выполнения :: " (itoa (getvar "errno"))))
) ;_ end of if
(vla-endundomark adoc)
(princ)
) ;_ end of defun
ct_ycte вне форума  
 
Непрочитано 12.10.2007, 07:26
#18
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


Цитата:
Сообщение от ct_ycte
Не как не могу понять как правильно указать имя блока чтоб не выдавал запрос на выбор
Никак - функция работает со вставкой блока, а не с его определением. Что-бы не было запроса на указание объекта, его надо передать в виде аргумента, о чём прямо сказано в описании функции:
Цитата:
Сообщение от ct_ycte
* Параметры вызова:
* ent указатель на блок (vla-, ename или string). Строка воспринимается
как хендл объекта. nil -> запрашивается у пользователя
Alaspher вне форума  
 
Непрочитано 08.11.2007, 14:55 Про программное изменение свойств динамического блока
#19
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Очень-ца интересная тема, однако. Только что-то не туда ушла. Надо подкорректировать чуток.
В свете последних достижений по расковыриванию свойств динамического блока хотелось бы обсудить дальнейшее будующее такой информации и воплотить пару идей.
Надо написать лиспик, который находит в словаре lookup с заданным именем. Имя это записано в 300 DXF код и его надо портить, а потом восстанавливать.
Если lookup не испорченный, его имя видно в редакторе блока, а если его имя изменилось, а всю остальную динамическую лабуду об этом не предупредили, то активатор lookupa исчезает из редактора. В какое имя переименовали это несчастный lookup, допустим забыли, как узнать какой lookup порченный?
Рассуждаю в слух: Заходим в редактор блока и выделяем все, что выделяется. Мы имена можем прочесть? Нет entget выдает только код -1. А вот совпадает он с тем кодом, что в словаре не знаю.

Я что хочу? Я хочу испортить это имя, это даст возможность вставить много параметров видимости, а потом его исправить. Давно хочу сделать этот эксперемент, но все руки не доходят, может командно это сделаем?

Kpblc, ау! Давай тут динамические блоки разбирать.
Supermax вне форума  
 
Непрочитано 08.11.2007, 14:59
#20
Елпанов Евгений

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


Цитата:
Сообщение от Supermax Посмотреть сообщение
Очень-ца интересная тема, однако. Только что-то не туда ушла. Надо подкорректировать чуток.
В свете последних достижений по расковыриванию свойств динамического блока хотелось бы обсудить дальнейшее будующее такой информации и воплотить пару идей.
Надо написать лиспик, который находит в словаре lookup с заданным именем. Имя это записано в 300 DXF код и его надо портить, а потом восстанавливать.
Если lookup не испорченный, его имя видно в редакторе блока, а если его имя изменилось, а всю остальную динамическую лабуду об этом не предупредили, то активатор lookupa исчезает из редактора. В какое имя переименовали это несчастный lookup, допустим забыли, как узнать какой lookup порченный?
Рассуждаю в слух: Заходим в редактор блока и выделяем все, что выделяется. Мы имена можем прочесть? Нет entget выдает только код -1. А вот совпадает он с тем кодом, что в словаре не знаю.

Я что хочу? Я хочу испортить это имя, это даст возможность вставить много параметров видимости, а потом его исправить. Давно хочу сделать этот эксперемент, но все руки не доходят, может командно это сделаем?

Kpblc, ау! Давай тут динамические блоки разбирать.
Я же вам говорил - ничего не надо ломать!
Достаточно просто добавить дополнительные объекты lookup и внутри них дополнительные действия... Перечитайте еще раз мои рекомендации, они основаны на реальных тестах!
Елпанов Евгений вне форума  
 
Непрочитано 08.11.2007, 15:07
#21
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Да, читал я все и понимаю прекрасно. Только наука взломология ушла чуток вперед.
Дело в том, что параметр видимости может быть доступен только один в текущий момент. В первом (нулевом) уровне все прекрасно, можно динамические свойства устанавливать и графику. Во втором и выше вы можете поставить только графику и завязать ее видимость на окна в этом уровне. Сделать это можно (пока, не сомневаюсь) только в редакторе. И причем после слома lookupa, который должен быть последним из установленных динамических свойств первого (нулевого) уровня. После того, как все visibility сделаны и графика в них установлена, можно починить lookup и станет доступен нулевой уровень visibility, где уже динамическими свойствами завязать графику других visibility.
Вот такая вот безумная идея. Вручную я это уже делал, но вспотел безбожно. Надо сделать специальный гаечный ключ.
Supermax вне форума  
 
Непрочитано 08.11.2007, 15:10
#22
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Евгений, ты до сих пор считаешь, что я параметры видимости сам вставлял в словарь?
Да они сами туда вставляются, как только lookup нарушаешь!
Supermax вне форума  
 
Непрочитано 08.11.2007, 15:15
#23
Елпанов Евгений

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


Цитата:
Сообщение от Supermax Посмотреть сообщение
Евгений, ты до сих пор считаешь, что я параметры видимости сам вставлял в словарь?
Да они сами туда вставляются, как только lookup нарушаешь!
Я показывал дерево взаимосвязей объектов для описания динамических блоков. Короче, я полностью переписывал три нижних уровня, со всеми динамическими свойствами и.т.д...
Делал все полностью программно, но не единой программой, а частями, хотя все из лисп редактора.
Елпанов Евгений вне форума  
 
Непрочитано 08.11.2007, 15:26
#24
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Да и я тоже самое делал, да только взаимосвязь "левых" visibility обнаруживается только при их установке через редактор. Правда с динамическими свойствами вкупе я не пробовал.
И еще очень хочу перенести stretch в другой блок, да никак не разберусь с вот этим:
Код:
[Выделить все]
(92 . 0) Ну это счетчик, я и так понял.
(93 . 0) Это всегда в нуле никогда не встречал другого значения, наверное маркер.
(94 . 2) 
(91 . 0) 
(91 . 1) 
(92 . -1) Это и ниже вроде кода - не совсем еще проанализировал, но всегда оно одно и тоже.
(92 . -1) 
(92 . -1) 
(92 . 1) 
(92 . -1)
Supermax вне форума  
 
Непрочитано 08.11.2007, 15:43
#25
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


А дерево шикарное, да вот беда, его надо в витрину выставить, а оно почти недосигаемо. Может и в эту тему его вставить?
Да! Надо, однако.
Евгений - это твое, тебе и вставлять.
Supermax вне форума  
 
Непрочитано 08.11.2007, 18:36
#26
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Последние наблюдения:
В блоке лежит примитив, скажем полилиния. Я вхожу в редактор и делаю (entget (car (entsel))).
-1 DXF код показывает от вхождения к вхождению все время разные значения. Но если я захожу в параметр visibility и смотрю там на этот примитив, то его -1 код всегда один и тот же.
Вот чем они отличаются:

Данные (entget (car (entsel)))
Код:
[Выделить все]
((-1 . <Entity name: 7e995218>) 
(0 . "LWPOLYLINE") 
(330 . <Entity name: 7e984cf8>) 
(5 . "133") 
(100 . "AcDbEntity") 
(67 . 0) 
(410 . "Model") 
(8 . "0") 
(100 . "AcDbPolyline") 
(90 . 4) 
(70 . 1) 
(43 . 0.0) 
(38 . 0.0) 
(39 . 0.0) 
(10 0.0 104.334) 
(40 . 0.0) 
(41 . 0.0) 
(42 . 0.0) 
(10 246.811 104.334) 
(40 . 0.0) 
(41 . 0.0) 
(42 . 0.0) 
(10 246.811 0.0) 
(40 . 0.0) 
(41 . 0.0) 
(42 . 0.0) 
(10 0.0 0.0) 
(40 . 0.0) 
(41 . 0.0) 
(42 . 0.0) 
(210 0.0 0.0 1.0))
Данные через visibility
Код:
[Выделить все]
((-1 . <Entity name: 7e984fb0>) 
(0 . "LWPOLYLINE") 
(330 . <Entity name: 7e984f70>) 
(5 . "EE") 
(100 . "AcDbEntity") 
(67 . 0) 
(8 . "0") 
(100 . "AcDbPolyline") 
(90 . 4) 
(70 . 1) 
(43 . 0.0) 
(38 . 0.0) 
(39 . 0.0) 
(10 0.0 104.334) 
(40 . 0.0) 
(41 . 0.0) 
(42 . 0.0) 
(10 246.811 104.334) 
(40 . 0.0) 
(41 . 0.0) 
(42 . 0.0) 
(10 246.811 0.0) 
(40 . 0.0) 
(41 . 0.0) 
(42 . 0.0) 
(10 0.0 0.0) 
(40 . 0.0) 
(41 . 0.0) 
(42 . 0.0) 
(210 0.0 0.0 1.0))
Отличие весьма существенные. Так, что перетаскивать простым копированием примитивы в visibility врядли получится.
Интересно как себя поведут vla-функции в покареженном блоке?
Supermax вне форума  
 
Непрочитано 08.11.2007, 18:48
#27
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Хотя можно поробовать стерать и 410 код вместе с -1 и 5.

А вот таже полилиния, только в пространстве модели с координатами как в блоке (место точки вставки в 0,0,0).

Код:
[Выделить все]
((-1 . <Entity name: 7e995250>) 
(0 . "LWPOLYLINE") 
(330 . <Entity name: 7e984cf8>) 
(5 . "13A") 
(100 . "AcDbEntity") 
(67 . 0) 
(410 . "Model") 
(8 . "0") 
(100 . "AcDbPolyline") 
(90 . 4) 
(70 . 1) 
(43 . 0.0) 
(38 . 0.0) 
(39 . 0.0) 
(10 0.0 104.334) 
(40 . 0.0) 
(41 . 0.0) 
(42 . 0.0) 
(10 246.811 104.334) 
(40 . 0.0) 
(41 . 0.0) 
(42 . 0.0) 
(10 246.811 0.0) 
(40 . 0.0) 
(41 . 0.0) 
(42 . 0.0) 
(10 0.0 0.0) 
(40 . 0.0) 
(41 . 0.0) 
(42 . 0.0) 
(210 0.0 0.0 1.0))
Я просто блок взорвал и переместил полилинию в 0,0,0.

Последний раз редактировалось Supermax, 08.11.2007 в 18:53.
Supermax вне форума  
 
Непрочитано 08.11.2007, 18:52
#28
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


330 - всегда постоянный, что в блоке, что за пределами его.

Чтобы вставить графику в блок, в свойство visibility, надо подставить нужный 330 код от этого visibility и стереть кое-что не нужное. Можно и обратно делать тоже самое. Можно свой редактор блоков сделать.

Последний раз редактировалось Supermax, 08.11.2007 в 18:58.
Supermax вне форума  
 
Непрочитано 08.11.2007, 21:41
#29
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Надо попробовать изменить объект динамических свойств из под редактора блоков. То есть произвести модификацию свойства из пространства редактора. Если получится, то это даст представление о связи символов свойств с описанием объектов модели.
Supermax вне форума  
 
Непрочитано 08.11.2007, 22:44
#30
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Что такое код 95 в словаре "ACAD_EVALUATION_GRAPH"?
Счетчик созданного свойства. Если все время удалять Stretch, а потом вставлять и опять удалять и вставлять, 95 код над этим элементом в словаре прибавляет от раза к разу единицу.

Код:
[Выделить все]
((-1 . <Entity name: 7ef81628>) 
(0 . "ACAD_EVALUATION_GRAPH") 
(5 . "1AD") 
(102 . "{ACAD_REACTORS") 
(330 . <Entity name: 7ef81620>) 
(102 . "}") 
(330 . <Entity name: 7ef81620>) 
(100 . "AcDbEvalGraph") 
(96 . 6) 
(97 . 6) 
(91 . 0) Счетчик по порядку описания свойства начинается в словаре "ACAD_EVALUATION_GRAPH" начинается с 0
(93 . 32) Разрядность представления в базе
(95 . 1) Счетчик последовательности создания свойства. был создан в первую очередь, но стоит убить и опять вставить примет значение последнего созданного 95 кода +1.
(360 . <Entity name: 7ef81630>) это словарь где описано свойство distance
(92 . -1) Про -1 могу сказать только одно: Скорее всего это признак неопределенности или отсутствия значения
(92 . -1) 
(92 . 0) 
(92 . 0) 
(91 . 1) 
(93 . 32) 
(95 . 6) а здесь его номер в базе последовательностей создания. Если убивать stretch и опять вставлять будет расти на 1.
(360 . <Entity name: 7ef81638>) вот это stretch
(92 . 0) 
(92 . 0) 
(92 . -1) 
(92 . -1) 
(92 . 0) 
(93 . 0) 
(94 . 2) 
(91 . 0) 
(91 . 1) 
(92 . -1) 
(92 . -1) 
(92 . -1) 
(92 . -1) 
(92 . -1))

Последний раз редактировалось Supermax, 12.11.2007 в 15:26.
Supermax вне форума  
 
Непрочитано 12.11.2007, 15:22 Про недокументированные данные
#31
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Некоторые люди считают, что если данные не документированы, то и изучать их не надо, поскольку в следующих версиях программы они могут быть изменены.
Отвечу следующее: Да они обязательно будут изменены, поскольку совершенства в этой области не достигло своего апогея. Но если при этом совершенствовании будет нарушена приемственность форматов одной программы в другую - это будет уже две разных программы и выбор какой пользоваться за пользователем естественно.
Вот есть у меня 2006 кад, в котром я могу создавать динамические блоки с несколькими параметрами видимости, а 2007 даже 3Dорбит в редакторе блоков работать перестал (правда в 2008 восстановили), так и что? Закроют в 2009 каде вообще динамические свойства (я лично сомневаюсь) и будем держать сразу несколько кадов. Расковыряем 2006 на все 100 и будем его модернизировать сами. Да я думаю, что в конце концов эти сведения опубликуют, как только поймут, что публиковать уже поздно.
Supermax вне форума  
 
Непрочитано 12.11.2007, 18:55
#32
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Я нашел закономерность по которой образуются коды выделенные красным.

(91 . 14)
(93 . 32)
(95 . 31)
(360 . <Entity name: 7efa1ac0>)
(92 . 11)
(92 . 11)
(92 . -1)
(92 . -1)


В них определена связь объектов друг с другом и одновременно последовательность описания в зависимости от последовательности создания. (да не треснут ваши головы)
Supermax вне форума  
 
Непрочитано 12.11.2007, 22:38 Про свойства
#33
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Вот что я нарыл:
Цитата:
Поле parent используется для построения иерархической структуры; дерева объектов. Каждому объекту присваивается его порядковый номер при следовании в файле, поле parent выставляется в -1, если у данного объекта нет родителя. Вот пример.

Код:
[Выделить все]
объект | номер | parent
--------+-------+--------
    A   |   0   |   -1
    B   |   1   |    0                    A
    C   |   2   |    1          +---------+----+
    D   |   3   |    2          B         K    N
    E   |   4   |    1     +----+----+    +    +
    F   |   5   |    4     C    E    H    L    O
    G   |   6   |    5     +    +    +    +    +
    H   |   7   |    1     D    F    I    M    P
    I   |   8   |    7          +    +
    J   |   9   |    8          G    J
    K   |  10   |    0
    L   |  11   |   10
    M   |  12   |   11
    N   |  13   |    0
    O   |  14   |   13
    P   |  15   |   14
Насколько я понял, дерево используется следующим образом: если к какому-то узлу дерева применяется преобразование, то оно же автоматически применяется и ко всем узлам, "растущим" из этого. То есть, если объект B в нашем примере есть рука, а объекты C, D, E, F, G, H, I, J - пальцы, то при повороте руки пальцы должны повернуться автоматически, вместе с рукой. В результате блок CHUNK_TRACKROTATE для пальцев может быть пустым, а пальцы будут вращаться вместе с рукой.
Вот от сюда:
http://www.enlight.ru/faq3d/articles/75.htm

Не находите сходство?
Я по этому примеру опишу эти красные коды 92, но чуть позже.

Последний раз редактировалось Supermax, 12.11.2007 в 22:49.
Supermax вне форума  
 
Непрочитано 19.11.2007, 15:26
#34
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Вот сюда я выложил программу, которая заполняет Lookup-ы из Excel.
http://dwg.ru/f/showthread.php?t=8940&page=6

Пост№114
Supermax вне форума  
 
Непрочитано 22.11.2007, 23:39
#35
Владимир М

-
 
Регистрация: 31.07.2005
Ухта
Сообщений: 381
<phrase 1=


Проверь свой макрос Supermax, что-то он мне не нравится (не срабатывает). Он автоматом начинает работать, когда подгужаешь LISPик через Сервис - AutoLISP - Приложения
AutoCAD Ругается таким образом: (load "Excel-Loocup.lsp" "Фаил Excel-Loocup.lsp не найден") "Фаил
Excel-Loocup.не найден"
__________________
Я не волшебник, я только учусь…
Владимир М вне форума  
 
Непрочитано 23.11.2007, 18:22
#36
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Не знаю что у тебя за кад. НО! Если лисп загружать ручками, то есть через Tools\AutoLISP\Load Application, то путь не нужен вообще. А вот если ты положил мой лисп в свою папочку для лиспов и хочешь кнопочкой его от туда вызвать, а судя по
Цитата:
(load "Excel-Loocup.lsp" "Фаил Excel-Loocup.lsp не найден")
именно это ты и хочешь сделать, то тебе путь лежит в Tools\Option\Files\Support File Search Path\ с нажатием Add и Browse... Далее тыкаешь в папочку где лежит твой (бывший мой) лисп и нажимаешь Apply то есть применить.
Удачи!
Supermax вне форума  
 
Непрочитано 23.11.2007, 18:59
#37
VVA

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


>Supermax Я бы в темах, где публиковал программы дал ссылки на download. Ведь там самое свежее
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 23.11.2007, 19:03
#38
Supermax

Руководитель фирмы
 
Регистрация: 28.03.2007
Москва
Сообщений: 1,831
Отправить сообщение для Supermax с помощью Skype™


Дык, я ж давал! Да и в темах ничем не отличаются по свежести от тех. Правда не все в данлоад кладу. Ну кому нужны лиспы для ковыряния дин. блоков? Да и народ как-то вяло темой этой интересуется. Качают, а зачем сами наверное не знают.

Не, правда твоя, в данлоад не давал. Так на главной и так пару дней висит и маячит, неужели не замечают?
Supermax вне форума  
 
Непрочитано 24.11.2007, 18:22
#39
Владимир М

-
 
Регистрация: 31.07.2005
Ухта
Сообщений: 381
<phrase 1=


Supermax, как это мало интересуются? То чем ты занимался и что выложил это класс! Эта помощь просто супер! теперь дин блоки можно очень быстро делать (где много позиций). Я доволен! Спасибо огромное всем кто этим занимался и тебе огромное что выложил сюда! Просто нет слов!
__________________
Я не волшебник, я только учусь…
Владимир М вне форума  
 
Непрочитано 17.04.2009, 17:21
#40
Juss_00

Инженер
 
Регистрация: 11.12.2007
Москва
Сообщений: 295


Скажите пожалуйста, тока без страшных кодов.)
Есть ли теперь возможность использовать больше одного параметра видимости в динамических блоках?

Visibility Set - это и есть то самое?

Теперь знаю что есть такие блоки. Увидел файл с 5 параметрами видимости. ))
Просвятите где самое лаконичное объяснение или тупо где "кнопку" сделать для вставки ещё видимостей.
__________________
Live as though tomorrow you will die,
Study as though you will live eternally.

Последний раз редактировалось Juss_00, 17.04.2009 в 17:32. Причина: Непрочёл исходную тему до конца
Juss_00 вне форума  
 
Непрочитано 17.04.2009, 19:51
#41
Кулик Алексей aka kpblc
Moderator

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


Juss_00, ищи тему "Создание дополнительных параметров Visibility Set" (автор - Supermax)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Динамич. блоки. Програмное изм. свойств

Опции темы Поиск в этой теме
Поиск в этой теме:

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