Мои динамические блоки [2] - Страница 139
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Динамические блоки > Мои динамические блоки [2]

Мои динамические блоки [2]

Закрытая тема
Поиск в этой теме
Непрочитано 21.04.2011, 23:33
Мои динамические блоки [2]
Кулик Алексей aka kpblc
Moderator
 
LISP, C# (ACAD 200[9,12,13,14])
 
С.-Петербург
Регистрация: 25.08.2003
Сообщений: 40,406

Тема служит продолжением закрытой темы Мои динамические блоки


Спасибо VVA:
В 2010-2011-2012 в редакторе блоков при настройках по умолчанию нельзя добавлять к операциям некоторые вещи, например к операции Flip добавить Strech и т.д.
Проблема:
http://forum.dwg.ru/showpost.php?p=7...postcount=2666
Лечение:
http://forum.dwg.ru/showpost.php?p=7...postcount=2679

==================================================

Проблема:
В некоторых чертежах долго открывается редактор блоков (_bedit)
Лечение:
Проверить в блоке/блоках значение линейных параметров "Максимальное расстояние". Должно быть задано хоть какое-то значение
Блок эдитор открывает несколько минут.

__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Просмотров: 1534922
 
Автор темы   Непрочитано 29.03.2015, 09:55
#2761
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от seregas Посмотреть сообщение
но при редактировании блока все вхождения этого блока в чертеже принимают одинаковый атрибут
Это как? Ты уверен, что у тебя там атрибут? И какова последовательность редактирования?
В общем, файл в студию
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 29.03.2015, 12:07 всех вхождений этого блока
#2762
seregas


 
Регистрация: 17.08.2011
Minsk
Сообщений: 60


Вот файл и там много раз один динамичекский блок,
как сделать мелкую полку на линии и подвинуть на нее номер
Любые изменения в редакторе блоков приводят атрибуты всех вхождений этого блока к одному значению
Вложения
Тип файла: dwg
DWG 2013
fuel i TO.dwg (292.1 Кб, 2016 просмотров)
seregas вне форума  
 
Автор темы   Непрочитано 29.03.2015, 12:19
#2763
Кулик Алексей aka kpblc
Moderator

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


При открытии ACAD2014 сообщил, что "Файл создан в приложении, не лицензированном Autodesk". В файле полно мусора, связи с Excel, внешние ссылки...
И потом, у тебя значение атрибута "завязано" на таблицу свойств блоков. То, что ты его вручную поменял, ничего не значит - сначала поменяй свойства блока.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 29.03.2015, 12:36
#2764
seregas


 
Регистрация: 17.08.2011
Minsk
Сообщений: 60


Цитата:
"Файл создан в приложении, не лицензированном Autodesk"
-- Алексей, ты же знаешь, откуда я скачиваю AutoCAD. Все ссылки с офф. сайта. Первый раз он всегда спрашивает, особенно на чистой винде. Не знаю, почему он не узнает свои дистрибутивы. А ну да, у меня конечно , AutoCAD MEP 2016.
Цитата:
В файле полно мусора
-- все что может очистить ОЧИСТКА, я почистил.
Цитата:
связи с Excel, внешние ссылки
-- мне все это очень надо.
внешние ссылки -- это просто рамка формата, рамка одна листов много, как же без внешних ссылок.
Связи с Excel -- это моя любовь , все на них держится (наконец-то ушел от таблиц в 1 ячейку). Можно половину связей засунут во внешнюю ссылку, то как я помню такая двойная вложенность для связей с Excel через драйвер OCBD --- адски сложная и недостижимая работа для Autodesk. Либо держать всегда открытой внешнюю ссылку и обновляь эти связи принудительно. Поэтому меньше ручной работы, зато 5-6 связей надо умножать на число проектов. А в иделе должны быть 5-6 связей на все проекты.
Есть пару стилей текста оставшихся, непонятных.
Так что мусора там нет.

Но мне нужна эта таблица, там просто порядковые номера. Я ее делал после долгих мучений в прошлом году, и уже не помню как. Есть другие способы сделать 120 номеров в быстрым выбором?
seregas вне форума  
 
Автор темы   Непрочитано 29.03.2015, 12:39
#2765
Кулик Алексей aka kpblc
Moderator

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


Еще раз говорю - открывал в ACAD2014 Вот, похоже, следы вертикалки и выдали.
А так, если "по-быстрому", то только программно, думаю. Вручную это надолго... Если времени хватит, попробую нарисовать для этой конкретной задачи лиспик.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 29.03.2015, 12:40
#2766
art_rrc


 
Регистрация: 28.01.2013
Минск
Сообщений: 375


fuel i TO.dwg
Цитата:
Сообщение от seregas Посмотреть сообщение
как сделать мелкую полку на линии и подвинуть на нее номер
Так что ли?

Цитата:
Сообщение от seregas Посмотреть сообщение
Есть другие способы сделать 120 номеров в быстрым выбором
Потратил на поиск 10 секунд... http://dwg.ru/dnl/1929
art_rrc вне форума  
 
Непрочитано 29.03.2015, 12:48
#2767
seregas


 
Регистрация: 17.08.2011
Minsk
Сообщений: 60


art_rrc, коллега спасибо, но поизошло то , чего я и боялся -- послетали выборы номеров всех блоков. Это неправильно, тем более этот чертеж не единственный.
Там номера отличаются, потому что я некоторые блоки копировал уже настроенными, но это все 1 блок
Этот блок я могуизменить в другом чертеже, но сюда его уже не вставить под старым именем. У меня много таких чертеджей , что мне делать.

Да уже AutoCAD немного странная программа, в каждом блоке можно поменять стиль текста, и это не отразится на других, что не правильно. Зато если поменять его геометрию, то слетают все его текстовые (смысловые) атрибуты, очень умно

Последний раз редактировалось seregas, 29.03.2015 в 12:59.
seregas вне форума  
 
Автор темы   Непрочитано 29.03.2015, 12:58
#2768
Кулик Алексей aka kpblc
Moderator

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


Проверяй.
Код:
[Выделить все]
 (vl-load-com)

(defun c:att2prop (/ adoc _kpblc-conv-vla-to-list attname propname blockname selset err)

  (defun _kpblc-conv-vla-to-list (value / res)
                                 ;|
*    Преобразовывает vlax-variant или vlax-safearray в список.
|;
    (cond
      ((listp value)
       (mapcar (function _kpblc-conv-vla-to-list) value)
       )
      ((= (type value) 'variant)
       (_kpblc-conv-vla-to-list (vlax-variant-value value))
       )
      ((= (type value) 'safearray)
       (if (>= (vlax-safearray-get-u-bound value 1) 0)
         (_kpblc-conv-vla-to-list (vlax-safearray->list value))
         ) ;_ end of if
       )
      ((and (= (type value) 'vla-object)
            (vlax-property-available-p value 'count)
            ) ;_ end of and
       (vlax-for sub value
         (setq res (cons sub res))
         ) ;_ end of vlax-for
       )
      (t value)
      ) ;_ end of cond
    ) ;_ end of defun

  (setq attname   "АТРИБУТ"
        propname  "user2"
        blockname "Операция-Топливо"
        ) ;_ end of setq

  (if (and (= (type (setq selset (vl-catch-all-apply
                                   (function
                                     (lambda (/ ss tab item)
                                       (setq ss (ssget "_:L" '((0 . "INSERT") (66 . 1))))
                                       (repeat (setq tab  nil
                                                     item (sslength ss)
                                                     ) ;_ end setq
                                         (setq tab (cons (ssname ss (setq item (1- item))) tab))
                                         ) ;_ end of repeat
                                       (vl-remove-if-not
                                         (function
                                           (lambda (x)
                                             (= (vla-get-effectivename x) blockname)
                                             ) ;_ end of LAMBDA
                                           ) ;_ end of function
                                         (mapcar (function vlax-ename->vla-object) tab)
                                         ) ;_ end of vl-remove-if-not
                                       ) ;_ end of LAMBDA
                                     ) ;_ end of function
                                   ) ;_ end of VL-CATCH-ALL-APPLY
                          ) ;_ end of setq
                    ) ;_ end of type
              'list
              ) ;_ end of =
           selset
           ) ;_ end of and
    (progn
      (vla-startundomark (setq adoc (vla-get-activedocument (vlax-get-acad-object))))
      (foreach ent selset
        (if (vl-catch-all-error-p
              (setq err (vl-catch-all-apply
                          (function
                            (lambda (/ att dynprop)
                              (setq att     (vla-get-textstring
                                              (car (vl-remove-if-not
                                                     (function
                                                       (lambda (x)
                                                         (= (strcase (vla-get-tagstring x))
                                                            (strcase attname)
                                                            ) ;_ end of =
                                                         ) ;_ end of lambda
                                                       ) ;_ end of function
                                                     (_kpblc-conv-vla-to-list
                                                       (vla-getattributes ent)
                                                       ) ;_ end of _kpblc-conv-vla-to-list
                                                     ) ;_ end of vl-remove-if-not
                                                   ) ;_ end of car
                                              ) ;_ end of vla-get-textstring
                                    dynprop (car (vl-remove-if-not
                                                   (function
                                                     (lambda (x)
                                                       (= (strcase (vla-get-propertyname x))
                                                          (strcase propname)
                                                          ) ;_ end of =
                                                       ) ;_ end of lambda
                                                     ) ;_ end of function
                                                   (_kpblc-conv-vla-to-list
                                                     (vla-getdynamicblockproperties ent)
                                                     ) ;_ end of _kpblc-conv-vla-to-list
                                                   ) ;_ end of vl-remove-if-not
                                                 ) ;_ end of car
                                    ) ;_ end of setq
                              (vla-put-value dynprop att)
                              ) ;_ end of lambda
                            ) ;_ end of function
                          ) ;_ end of vl-catch-all-apply
                    ) ;_ end of setq
              ) ;_ end of vl-catch-all-error-p
          (princ (strcat "\nError : " (vl-catch-all-error-message err)))
          ) ;_ end of if
        ) ;_ end of foreach
      (vla-endundomark adoc)
      ) ;_ end of progn
    ) ;_ end of if
  ) ;_ end of defun
Параметры можно поменять в строках
Код:
[Выделить все]
   (setq attname   "АТРИБУТ"
        propname  "user2"
        blockname "Операция-Топливо"
        ) ;_ end of setq
attname - имя атрибута
propname - имя устанавливаемого динамического свойства
blockname - имя блока.

Работу кода во всех случаях не гарантирую
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 29.03.2015, 13:01
#2769
art_rrc


 
Регистрация: 28.01.2013
Минск
Сообщений: 375


Я файл подправил-прикрепил не особо вникая.. Сейчас посмотрел внимательнее и есть резонный вопрос.. А зачем такая таблица? Чтоб не от руки вбивать данные в атрибут?
Возможно вам нужно изменить саму логику блока.

Добавлено:
Ну если уж вдаваться в программирование, то я бы сделал так.. Создал бы блок с таким же функционалом, но немного другой логикой, без таблицы. И написал бы макрос на автозамену старых блоков на новые с копированием данных атрибута 1 во второй, назначением таких же дин. параметров и удалением начального блока..

Последний раз редактировалось art_rrc, 29.03.2015 в 13:10.
art_rrc вне форума  
 
Непрочитано 29.03.2015, 13:34
#2770
seregas


 
Регистрация: 17.08.2011
Minsk
Сообщений: 60


алексей, что то att2prop.lsp не запускается, синтаксическая ошибка
seregas вне форума  
 
Автор темы   Непрочитано 29.03.2015, 13:41
#2771
Кулик Алексей aka kpblc
Moderator

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


seregas, специально только что перепроверил - все работает.
Increase Size Decrease Size LoadLispFromDWGRubyOpera.wmv
http://www.youtube.com/watch?v=wFKc6EfRofo
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 29.03.2015, 14:04
#2772
seregas


 
Регистрация: 17.08.2011
Minsk
Сообщений: 60


Я так понял, что при изменени блока слетает именно выбор атрибута в таблице, сами атрибуты, не привязанные к таблице выбора (я уже смутно помню как это делал ) держаться намертво, что позволяет не терять надежду на возрождение Autodesk :^)

алексей, Что-то сложновато у меня с этм LISP. Спасибо. Вечером попробую протестировать !

Последний раз редактировалось seregas, 29.03.2015 в 14:20.
seregas вне форума  
 
Непрочитано 30.03.2015, 15:00
#2773
Sirius2w

Проектировщик ТХ
 
Регистрация: 16.11.2009
Сообщений: 139
Отправить сообщение для Sirius2w с помощью Skype™


Что не так с массивом в дин.блоке?
массив создал с шагом 2400 между столбцами, шаг приращения параметра 1200.
Во время тестирования блока делаю первый шаг 1200, все нормально, 2400 - косяк - пропадает связь (зеленая планочка на плане)
следующий шаг 3600 - связь появляется там где нужно... и так далее
проблемы при шагах кратно 2400...
Вложения
Тип файла: dwg
DWG 2010
Чертеж3.dwg (115.4 Кб, 1605 просмотров)
Sirius2w вне форума  
 
Непрочитано 30.03.2015, 22:24
#2774
art_rrc


 
Регистрация: 28.01.2013
Минск
Сообщений: 375


Цитата:
Сообщение от Sirius2w Посмотреть сообщение
Что не так с массивом в дин.блоке?
Особо не вникал, но если все правильно понял.. то суть примерно такая..
Вложения
Тип файла: dwg
DWG 2010
art_Чертеж3.dwg (98.5 Кб, 1567 просмотров)
art_rrc вне форума  
 
Непрочитано 31.03.2015, 08:59
#2775
Sirius2w

Проектировщик ТХ
 
Регистрация: 16.11.2009
Сообщений: 139
Отправить сообщение для Sirius2w с помощью Skype™


Суть такая но не понятно, почему именно так работает массив ... ведь какая разница где находится геометрия (в вашем случае она совмещена с базой, в моем геометрия стоит на своем месте).
Кстати обнаружил, что направляющая 1200 мм остается на месте в предложенном варианте, а это не правильно такой вариант не подходит.

Последний раз редактировалось Sirius2w, 31.03.2015 в 09:18.
Sirius2w вне форума  
 
Непрочитано 31.03.2015, 12:15
#2776
art_rrc


 
Регистрация: 28.01.2013
Минск
Сообщений: 375


Цитата:
Сообщение от Sirius2w Посмотреть сообщение
Суть такая но не понятно, почему именно так работает массив ... ведь какая разница где находится геометрия (в вашем случае она совмещена с базой, в моем геометрия стоит на своем месте).
Кстати обнаружил, что направляющая 1200 мм остается на месте в предложенном варианте, а это не правильно такой вариант не подходит.
Я надеюсь не надо объяснять значение слова "суть". Вам никто не обещал идеально работающий блок. Если что-то не едет куда вам нужно, добавьте в операцию перемещения эти объекты, в чем проблема то? По поводу массива.. кол-во элементов считается как trunc(L/a). Где L - длина параметра, а - шаг заданный в операции, trunc - функция, отбрасывающая дробную часть. Таким образом в вашем изначальном варианте trunc(3600/2400)=1 элемент -> чтоб это исправить нужно базу параметра (левую ручку) отодвинуть на 1200 влево, чтоб получилось 4800/2400=2 . В общем просто поэкспериментируйте...
art_rrc вне форума  
 
Непрочитано 31.03.2015, 13:21
#2777
Sirius2w

Проектировщик ТХ
 
Регистрация: 16.11.2009
Сообщений: 139
Отправить сообщение для Sirius2w с помощью Skype™


спасибо за разъяснение алгоритма.
Но похоже одним параметром в моем случае не обойтись т.к. при смещении ручки влево на 1200 лишняя копия крайнего правого элемента получается.
Значит нужно операции массива разделить на два линейных параметра. Для одного из них сместить базу на 1200 влево и к нему привязать операцию массива для левых элементов.

Последний раз редактировалось Sirius2w, 31.03.2015 в 14:31.
Sirius2w вне форума  
 
Непрочитано 03.04.2015, 11:48
#2778
Sirius2w

Проектировщик ТХ
 
Регистрация: 16.11.2009
Сообщений: 139
Отправить сообщение для Sirius2w с помощью Skype™


Добрый день. Возникла ошибка с одним блоком - ранее работал нормально, сейчас при попытке выбора Акад выдает фатальную ошибку и улетает..
вот блок для теста.
и скрин ошибки
Вложения
Тип файла: dwg
DWG 2010
Чертеж2.dwg (107.4 Кб, 1275 просмотров)
Sirius2w вне форума  
 
Непрочитано 05.04.2015, 10:15
#2779
wer8


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


Добрый день. Помогите сделать в блоке на лестничные лотки перфорацию полки чтоб она выполнялась появлялась при растягивании по ширине и по длине вариант с видемостью не очень хорошо. И еще один момент к блоку т.к. длина лотка ограничена 3 м как сделать чтоб при достяжении данной длины начинался новый лоток при этом не копируя блок.
Вложения
Тип файла: dwg
DWG 2010
Лотки лестничные.dwg (256.4 Кб, 1210 просмотров)
wer8 вне форума  
 
Непрочитано 05.04.2015, 17:09
#2780
Алексейский

мостовик
 
Регистрация: 23.04.2009
Екатеринбург
Сообщений: 6


Буду благодарен за советы и рекомендации профи, хочу создать сложный динамический блок:
1) Чтобы при "растягивании" фигура повторяла себя 2,3,4,5... раз.
2) Чтобы каждой последующей фигуре присваивался номер 2,3,4,5...
В приложеных рисунках изобразил что хочу получить.
КАК ЭТО СДЕЛАТЬ?


Последний раз редактировалось Кулик Алексей aka kpblc, 05.04.2015 в 19:41.
Алексейский вне форума  
Закрытая тема
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Динамические блоки > Мои динамические блоки [2]



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамические блоки при копировании перестают быть динамическими. *Voland* Динамические блоки 11 04.07.2012 10:51
Мои динамические блоки Shoorup Динамические блоки 2713 21.04.2011 23:34
соединить динамические блоки отрезками по кротчайшему пути gizmo_zx Программирование 18 06.09.2010 20:32
Глюк. Динамические блоки становится статическим! b_anton Динамические блоки 10 24.06.2008 16:27
HELP!!! Динамические блоки? Bdod Динамические блоки 13 07.04.2007 08:59