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

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

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

Закрытая тема
Поиск в этой теме
Непрочитано 07.11.2006, 15:22
Мои динамические блоки
Shoorup
 
Минск
Регистрация: 16.09.2006
Сообщений: 1,587

Прогресс и опыт не стоит на месте. А по этому хочу поделиться своим опытом по созданию динамических блоков и конечно посмотреть на чужой.
Динамические блоки очень мощный инструмент, а умело им пользоваться далеко не каждый умеет. Уверен большинство идей (ухищрений, модификаций, построений) можно применить и для своей работы тем самым свести к минимуму однотонную и трудоемкую работу => что я и предлагаю на данной теме.
---
Дополнительно (спасибо 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
----
Тема закрыта, продолжение: http://forum.dwg.ru/showthread.php?t=66721
__________________
Поезд который устал от ржавого здравомыслия рельсов...

Последний раз редактировалось Кулик Алексей aka kpblc, 09.11.2011 в 14:01.
Просмотров: 1867748
 
Непрочитано 19.10.2007, 09:20
#81
Konstr. M.

ПГСник
 
Регистрация: 17.10.2007
Тюмень
Сообщений: 15


Можно ли создать дин. блок, чтобы он определял границы, т.е. как в SPDS при определении площади по внутренней точке??
Konstr. M. вне форума  
 
Непрочитано 19.10.2007, 10:39
#82
Krieger

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


чего?
Krieger вне форума  
 
Автор темы   Непрочитано 19.10.2007, 10:48
#83
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Цитата:
Сообщение от Konstr. M. Посмотреть сообщение
Можно ли создать дин. блок, чтобы он определял границы, т.е. как в SPDS при определении площади по внутренней точке??
Я б конечно и рад бы тебе помочь.. но с SPDS не встречался. так что распиши более подробно что необходимо сделать.
но чую что такое низя сделать
Если бы динамические блоки были бы более расширены в своих возможностях я б уже давно свой бы САПР написал без использования программирования)). Они примитивны очень. Жаль что после 2006 акада они никак не совершенствуються. Ну очень бы например хотелось бы чтобы создавалось несколько параметров видимости. Еще бы например хотелось бы чтобы маркеры можно было менять по цвету (не все сразу, а каждый маркер своим цветом), может даже подпись под этот маркер. Много чего хотелось бы...
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 19.10.2007, 10:49
#84
Кулик Алексей aka kpblc
Moderator

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


Соскучились по _.boundary
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.10.2007, 11:05
#85
Konstr. M.

ПГСник
 
Регистрация: 17.10.2007
Тюмень
Сообщений: 15


_.boundary определяет только контур.
Занимаюсь проектированием фасадных систем. Есть необходимость в присваивании облицовочной панели своего порядкового номера. Дин. блок с атрибутом номера я создал, но постоянно тянуть за ручки до краев панели надоедает. Вот и хотелось бы, чтобы когда щелкаещь внутри контура панели, блок определял тот самый контур и вставлял порядковый номер и имел атрибуты ширины и высоты данной панели, которые будут отражаться в спецификации.
Оьяснил как смог.
Konstr. M. вне форума  
 
Непрочитано 19.10.2007, 11:10
#86
Кулик Алексей aka kpblc
Moderator

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


А не проще сделать блок с атрибутом и использовать любой из автонумераторов? Недавно, занимаясь поиском по форуму, натыкался...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.10.2007, 11:12
#87
Konstr. M.

ПГСник
 
Регистрация: 17.10.2007
Тюмень
Сообщений: 15


Вот блок маркировки панели. чтоб понятней было о чем я.
Вложения
Тип файла: dwg
DWG 2004
маркировка.dwg (47.1 Кб, 6611 просмотров)
Konstr. M. вне форума  
 
Непрочитано 19.10.2007, 11:13
#88
Konstr. M.

ПГСник
 
Регистрация: 17.10.2007
Тюмень
Сообщений: 15


Разве автонумератор вставляет блок в чертеж?? Где взять такой нумератор??
Konstr. M. вне форума  
 
Непрочитано 19.10.2007, 11:49
#89
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Цитата:
Сообщение от Konstr. M. Посмотреть сообщение
Разве автонумератор вставляет блок в чертеж?? Где взять такой нумератор??
На autocad.ru здесь http://www.autocad.ru/cgi-bin/f1/board.cgi?t=35270rf
Но пока он . Держи из моих загашников
Код:
[Выделить все]
;http://www.autocad.ru/cgi-bin/f1/board.cgi?t=35270rf
(defun c:binc (/ oldStart oldPref oldSuf oldEcho
        oldSize oldBlock temBl *error* att attr apnum:tag pt)
;==== Local functions ============  
  (defun *error* (msg)(setvar "CMDECHO" oldEcho)(setvar "ATTDIA" att)(setvar "ATTREQ" attr)(princ)); end *error*
  (defun mip-conv-to-str (dat)
  (cond ((= (type dat) 'INT)(setq dat (itoa dat)))
         ((= (type dat) 'REAL)(setq dat (rtos dat 2 12)))
        ((null dat)(setq dat ""))
        (t (setq dat (vl-princ-to-string dat)))))
;; obj - Ename or Vla object of block
;; att_list - list ((Tag_Name1 . Value1)(Tag_Name2 . Value2) ...)
;;                 Tag_Name - string
;;                    Value - string
(defun mip-block-setattr-bylist (obj att_list / txt lst)
(if (= (type obj) 'ENAME)(setq obj (vlax-ename->vla-object obj)))
(setq att_list (mapcar '(lambda(x)(cons (strcase (mip-conv-to-str(car x)))(mip-conv-to-str(cdr x)))) att_list))
  (if (and obj
           (not(vlax-erased-p obj))
           (= (vla-get-ObjectName obj) "AcDbBlockReference")
    (eq :vlax-true (vla-get-HasAttributes obj))
    (vlax-property-available-p obj 'Hasattributes)
    (vlax-write-enabled-p obj)
      )
    (vl-catch-all-apply
      (function
 (lambda ()
          (foreach at (vlax-invoke obj 'Getattributes)
            (if (setq lst (assoc(strcase(vla-get-TagString at)) att_list))
              (vla-put-TextString at (cdr lst))
            )
            )
          )
        )
      )
    )
  )
;==== Local functions END ============
  
  ;====================================================================
  (setq apnum:Block "BlockName") ;_Впиши имя блока здесь  
  (setq apnum:tag "Nomer")       ;_Впиши имя тага атрибута
  ;===================================================================
  (if(not apnum:Size)(setq apnum:Size 1.0))
  (if(not apnum:Num)(setq apnum:Num 1))
  (if(not apnum:Pref)(setq apnum:Pref ""))
  (if(not apnum:Suf)(setq apnum:Suf ""))
  (setq  oldStart apnum:Num oldSize apnum:Size
         oldPref apnum:Pref oldSuf apnum:Suf
         apnum:Block (mip-conv-to-str apnum:Block)
         apnum:tag (mip-conv-to-str apnum:tag)
         oldEcho (getvar "CMDECHO")
         att (getvar "ATTDIA") attr (getvar "ATTREQ")); end setq
  (setvar "ATTDIA" 0)(setvar "ATTREQ" 0)
  (setvar "CMDECHO" 0)
    (setq apnum:Pref
    (getstring T
      (strcat "\nType prefix:(If you want to delete prefix type ' ' (press SPACE key on keyboard) <"apnum:Pref"> :")))
  (if(= "" apnum:Pref)(setq apnum:Pref oldPref))
  (if(= " " apnum:Pref)(setq apnum:Pref ""))
  (setq apnum:Suf
    (getstring T
       (strcat "\nType suffix:(If you want to delete prefix type ' ' (press SPACE key on keyboard) <"apnum:Suf"> :")))
  (if(= "" apnum:Suf)(setq apnum:Suf oldSuf))
  (if(= " " apnum:Suf)(setq apnum:Suf ""))
  (setq apnum:Num
    (getint
      (strcat "\nSpecify start number <"(itoa apnum:Num)">: ")))
  (if(null apnum:Num)(setq apnum:Num oldStart))
  (setq apnum:Size
    (getreal
      (strcat "\nSpecify block scale <"(rtos apnum:Size)">: ")))
  (if(null apnum:Size)(setq apnum:Size oldSize))
  (if apnum:Block(setq oldBlock apnum:Block))
;;;  (setq temBl
;;;     (entsel(strcat "\nSelect block <"
;;;         (if apnum:Block apnum:Block "not difined") "> > "))); end setq
  (cond
    ((null (tblsearch "BLOCK" apnum:Block))
     (alert (strcat "Block " apnum:Block " not found"))
     (setq apnum:Block nil)
     ); end condition #0
    ((and apnum:Block(not temBl)(tblsearch "BLOCK" apnum:Block))
    (setq apnum:Block oldBlock)
     ); end condition #1
    ((and tembl (= 1 (cdr(assoc 66(entget(car temBl))))))
    (setq apnum:Block(cdr(assoc 2(entget(car temBl)))))
    ); end condition #2
    (t
     (princ "\nBlock not contains attribute! ")
     (setq apnum:Block nil)
     ); end condition #3
    ); end cond
  (if apnum:Block
    (progn
(while T
  (princ "\n>>> Pick insertion point or press Esc to quit <<<\n")
  (command "_-insert" apnum:Block "_s" apnum:Size pause "0")
   (mip-block-setattr-bylist (entlast)
     (list(cons (strcase (mip-conv-to-str apnum:tag))
                (strcat apnum:Pref(itoa apnum:Num)apnum:Suf))))
    (setq apnum:Num (1+ apnum:Num))
  ); end while
); end progn
    ); end if
  (setvar "ATTDIA" att)(setvar "ATTREQ" attr)
  (princ)
  )
Найди эти строчки
Код:
[Выделить все]
 (setq apnum:Block "BlockName") ;_Впиши имя блока здесь  
  (setq apnum:tag "Nomer")       ;_Впиши имя тага атрибута
и впиши нужные тебе имя блока и таг атрибута
VVA вне форума  
 
Непрочитано 19.10.2007, 11:54
#90
Кулик Алексей aka kpblc
Moderator

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


Только если самому написать Сейчас расковыряю твой блок - посмотрим, что можно сделать. Вдруг чего получится?
---
Добавлено: Опа, все, дальше воевать нечего.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.10.2007, 12:02
#91
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,990
<phrase 1= Отправить сообщение для VVA с помощью Skype™


> Кулик Алексей aka kpblc
Цитата:
Опа, все, дальше воевать нечего.
Извини, что не удалось повоевать.
>Konstr. M. Вариант для этого блока
Код:
[Выделить все]
 
;====================================================================
(setq apnum:Block "Кассета") ;_Впиши имя блока здесь 
(setq apnum:tag "Марка") ;_Впиши имя тага атрибута
;===================================================================
1. указываешь как префикс
VVA вне форума  
 
Непрочитано 19.10.2007, 12:08
#92
Konstr. M.

ПГСник
 
Регистрация: 17.10.2007
Тюмень
Сообщений: 15


Спасибо конечно за помощь, но обьясните не програмисту КУДА этот код писать?????
Konstr. M. вне форума  
 
Непрочитано 19.10.2007, 12:21
#93
Кулик Алексей aka kpblc
Moderator

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


dwg.ru/art/8
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 19.10.2007, 14:05
#94
Konstr. M.

ПГСник
 
Регистрация: 17.10.2007
Тюмень
Сообщений: 15


Спасибо. Все понятно. Буду разбираться.
Konstr. M. вне форума  
 
Автор темы   Непрочитано 31.10.2007, 10:46
#95
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Хотелось бы услышать Ваше мнение!
Вот думаю написать статейку про динамические блоки. В статье дать рекомендации по оформлению и правильному составлению динамического блока с примерами.
Что скажите? Стоит ли браться или это никому не нужно?
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 01.11.2007, 09:14
#96
Alex_61

Инженер-электрик
 
Регистрация: 14.08.2006
Ростов-на-Дону
Сообщений: 12


Доброго дня!

Вашу идею по поводу статьи поддерживаю, тем паче что у самого кое что накопилось в качестве примеров, могу помочь.

Да еще, по поводу блоков, с помощь блоков сделал однолинейные схемы, компановки шкафов (целая библиотека Rittal, Moeller, Siemens), но есть одно но: спецификациии делаю почти вручную, так как не знаю как настроить вывод таблицы в нужный формат (пользуюсь командой EATTEXT), приходится ее потом редактировать (размеры ячеек), и плюс ко всему взрывать, так как после регенерации таблица опять принимает первоначальный вид. Мож кто подкажет как извлекать данные атрибутов блоков в таблицу нужного вида и размера.
__________________
Не ошибается тот - кто не чего не делает.
Alex_61 вне форума  
 
Автор темы   Непрочитано 03.11.2007, 09:25
#97
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


У кого есть чем поделиться интересными блоками выкладывайте...
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Автор темы   Непрочитано 03.11.2007, 09:30
#98
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


Цитата:
Сообщение от Shoorup Посмотреть сообщение
можно ли создать несколько параметров видимости (может лисп)?
Цитата:
Сообщение от DEM Посмотреть сообщение
Ну нету пока такой возможности.
Да и зачем вам несколько параметров видимости, для какой задачи.
Привидите пример.
С помощью лиспа нечто подобное можно сделать но это будет лишь замена блока, другим по выбору с текущей точкой вставки.
Но это бут не интерактивная команда.
Где то что то подобное лежало, только тут надо буде выполненять замену одного блока, возможно использовать какие то метки для определения на какие блоки можно заменить этот блок ну и т.д.
Плюс еще наверное надо будет создать диалоговое окошко.
В принципе программка не очень сложная, ток посидеть надо бут.
Кому интересно заходите сюда: http://dwg.ru/f/showthread.php?t=14519&page=2
оказывается несколько параметров видимости может быть но тема не развита до конца
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
 
Непрочитано 03.11.2007, 13:47
#99
Krieger

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


Цитата:
Сообщение от Shoorup Посмотреть сообщение
У кого есть чем поделиться интересными блоками выкладывайте...
В смысле для статьи?
Вот, держи это.
Как то был вопрос на форуме как сделать блок у которого атрибуты в нем всегда были бы с нулевым углом поворота, как не крути сам блок. Частично можно решить таким образом, см. блок. Т.е. ставить параметр "точка" за которым передвигается атрибут, а точку гоняют другие действия (Action). При этом в свойствах параметра точки установить наследование действий (Chain actions). В этом же примере показано перемещение базовой точки.
Вложения
Тип файла: dwg
DWG 2007
Kr_D_LineSection.dwg (61.1 Кб, 6839 просмотров)
Krieger вне форума  
 
Автор темы   Непрочитано 03.11.2007, 15:57
#100
Shoorup


 
Регистрация: 16.09.2006
Минск
Сообщений: 1,587
<phrase 1= Отправить сообщение для Shoorup с помощью Skype™


отличный пример! спасибо
__________________
Поезд который устал от ржавого здравомыслия рельсов...
Shoorup вне форума  
Закрытая тема
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Динамические блоки > Мои динамические блоки

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

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