dwg.ru forum rss xml
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму |

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

Замена динамических блоков

Версия для печати
 
Ответ
Опции темы Поиск в этой теме
Непрочитано 17.08.2011, 17:56
Замена динамических блоков
Serge_Y
 
инженер-конструктор
 
Минск
Регистрация: 29.05.2004
Сообщений: 279

Serge_Y вне форума Вставить имя

День добрый!
А можно ли создать программу, которая бы меняла один динамический блок на другой с учетом уже всех выполненных трансформаций исходного блока? Например, есть два динамических блока, которые отличаются только цветом примитивов. Произведя изменение первого блока (например растянув его, повернув, и т.д.) нужно заменить его другим блоком, но так, чтобы все изменения в геометрии остались.
Спасибо
Просмотров: 17201
 
Непрочитано 21.01.2013, 12:55
#61
Do$

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


Вдобавок к #57:
Накинь еще пяток-другой пунктов, если блоки с атрибутами.
Do$ вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 21.01.2013, 12:58
#62
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Дима_ Посмотреть сообщение
Мне кажется эти пункты полностью решить никак не получится.
Зависит от конкретной ситуации... Если, к примеру, была завязка на чтение значения радиуса окружности, а в новом определении вместо окружности под тем же идентификатором вдруг стал прямоугольник, то в этом случае конечно, без вариантов, поскольку радиуса там и в помине нет. Но если в новом блоке под тем же ObjectId будет окружность или дуга (к примеру), то очень даже решаемо.
Цитата:
Сообщение от Do$
Вдобавок к #57:
Накинь еще пяток-другой пунктов, если блоки с атрибутами.
Я не выделял это в отдельный пункт, поскольку это частный случай для п.2 (во всяком случае они схожи по сути и решению).
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:

Последний раз редактировалось hwd, 21.01.2013 в 13:04.
hwd вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 21.01.2013, 17:37
#63
Do$

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


Цитата:
Сообщение от hwd Посмотреть сообщение
Я не выделял это в отдельный пункт, поскольку это частный случай для п.2 (во всяком случае они схожи по сути и решению).
Цитата:
2. На некоторые свойства "старых" вхождений блоков, в чертеже могут иметься ссылки в виде полей - банальная замена блоков разрушит все связи.
Это только часть задачи. Помимо значений, у них могут быть собственные геометрические характеристики: положение, поворот и т.п. А еще цвет, шрифт, коэффициент сжатия, угол наклона и т.п. К тому же, может оказаться что у заменяющего и заменяемого блока разное количество атрибутов... Так что, с атрибутами еще отдельно придется плотно разбираться.
Do$ вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 20.04.2014, 12:49
#64
Krovlaf

геология, геодезия
 
Регистрация: 29.05.2009
Хабаровск
Сообщений: 174


Уважаемый Do$! Не могли ли Вы, по возможности, дополнить Ваш лисп выбором всех заменяемых динамических блоков и множественным выбором рамкой? По моему, из всего вышепредложенного, bchange.LSP наиболее корректно меняет динамические блоки.
Krovlaf вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 07.08.2015, 02:35
#65
Krovlaf

геология, геодезия
 
Регистрация: 29.05.2009
Хабаровск
Сообщений: 174


Нашел! Весьма неплохой "реплейсер" блоков. Насчет особенностей сохранения динамических свойств сильно не разбирался. Для меня важно было сохранение значений атрибутов с совпадающими именами в заменяемых блоках без учета количества самих атрибутов, а также множественный выбор заменяемых блоков. Все это прекрасно реализовано.
Krovlaf вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 07.08.2015, 04:55
#66
АлексЮстасу

топограф, технолог
 
Регистрация: 24.05.2009
Москва
Сообщений: 2,633


Цитата:
Сообщение от Krovlaf Посмотреть сообщение
Нашел! Весьма неплохой "реплейсер" блоков.
Загрузка выдает сообщение: The RBLOC.dcl file is not found. Или это не программа еще для пользователей?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 07.08.2015, 06:05
#67
Krovlaf

геология, геодезия
 
Регистрация: 29.05.2009
Хабаровск
Сообщений: 174


Наверное, я сделал несколько коряво (как правильно компиллировать lsp и dcl, подскажут наши уважаемые лисперы).
В тексте представленного кода две части - RBLOC V2.22 и RBLOC.DCL V2.20. Я скопировал первую часть файла и обозвал это rb.lsp вторую часть назвал, как потребовала программа rbloc.dcl. Далее, все как обычно для запуска приложений (оба файла в папку с приложениями к Акаду). Единственное, в файле RBLOC.DCL нужно удалить строку с названием (** Rbloc.dcl **), а то ошибку выдает.
Krovlaf вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 14.08.2015, 22:49
#68
Кулик Алексей aka kpblc
Moderator

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


Код:
[Выделить все]
 ;;;=================================================================
;;;
;;; RBLOC V2.22
;;;
;;; Replace a block with another
;;;
;;; Copyright (C) Patrick_35
;;; Translated to English and cosmetic changed by Igal Averbuh 2015
;;;=================================================================

(defun c:rb (/             bl            conserver_attr              conserver_dyna              dcl_id
             echo          echu          echx          echy          echz          js            liste_bl
             obj_liste     old_error     redef         resultat      selectiono    selectionr    *errrbloc*
             msgbox        affiche_choix idem_lst      ech_u         affiche_dial  liste_choix   liste_sel
             selection     verif_valeur  parcourir     selection_ecran             changer_blocs dcl_file
             )

;;;---------------------------------------------------------------
;;;
;;; Gestion des erreurs
;;;
;;;---------------------------------------------------------------

  (defun *errrbloc* (msg)
    (if (/= msg "Function cancelled")
      (if (= msg "quit / exit abort")
        (princ)
        (princ (strcat "\nErreur : " msg))
        ) ;_ end of if
      (princ)
      ) ;_ end of if
    (setq *error* old_error)
    (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
    (princ)
    ) ;_ end of defun

;;;---------------------------------------------------------------
;;;
;;; Message
;;;
;;;---------------------------------------------------------------

  (defun msgbox (titre bouttons message / reponse wshshell)
    (vl-load-com)
    (setq wshshell (vlax-create-object "WScript.Shell"))
    (setq reponse (vlax-invoke wshshell 'popup message 0 titre (itoa bouttons)))
    (vlax-release-object wshshell)
    reponse
    ) ;_ end of defun

;;;---------------------------------------------------------------
;;;
;;; Affichage tu type de s?lection du bloc d'origine
;;;
;;;---------------------------------------------------------------

  (defun affiche_choix ()
    (if (eq selectiono "0")
      (if js
        (set_tile "texte1" (strcat "Multiply Selection of " (itoa (sslength js)) " block(s)"))
        (set_tile "texte1" "Multiply Selection in whole drawing")
        ) ;_ end of if
      (if js
        (set_tile "texte1" (strcat "Final Selection of " (itoa (sslength js)) " block(s)"))
        (set_tile "texte1" "Final Selection in whole drawing")
        ) ;_ end of if
      ) ;_ end of if
    ) ;_ end of defun

;;;---------------------------------------------------------------
;;;
;;; Comparaison des deux listes
;;;
;;;---------------------------------------------------------------

  (defun idem_lst ()
    (if (and (eq (1- (atoi selectiono)) (atoi selectionr)) (not redef))
      (progn
        (set_tile "texte2" "The orriginal and replacement block can not be same")
        (mode_tile "accept" 1)
        (mode_tile "cancel" 2)
        ) ;_ end of progn
      (progn
        (if redef
          (set_tile "texte2" (strcat "Block : " redef))
          (set_tile "texte2" "")
          ) ;_ end of if
        (mode_tile "accept" 0)
        (mode_tile "accept" 2)
        ) ;_ end of progn
      ) ;_ end of if
    ) ;_ end of defun

;;;---------------------------------------------------------------
;;;
;;; Gestion de l'afficjage des facteurs d'?chelles
;;;
;;;---------------------------------------------------------------

  (defun ech_u ()
    (if (eq echo "1")
      (progn
        (mode_tile "fact_x" 1)
        (mode_tile "fact_y" 1)
        (mode_tile "fact_z" 1)
        (mode_tile "uniforme" 1)
        ) ;_ end of progn
      (progn
        (mode_tile "fact_x" 0)
        (mode_tile "uniforme" 0)
        (if (eq echu "1")
          (progn
            (mode_tile "fact_y" 1)
            (mode_tile "fact_z" 1)
            ) ;_ end of progn
          (progn
            (mode_tile "fact_y" 0)
            (mode_tile "fact_z" 0)
            ) ;_ end of progn
          ) ;_ end of if
        ) ;_ end of progn
      ) ;_ end of if
    ) ;_ end of defun

;;;---------------------------------------------------------------
;;;
;;; Afficher la boite de dialogue
;;;
;;;---------------------------------------------------------------

  (defun affiche_dial ()
    (new_dialog "rbloc" dcl_id)
    (set_tile "titre" "Block Replacer V2.22")
    (start_list "listeo")
    (add_list "** Blocks List **")
    (mapcar 'add_list liste_bl)
    (end_list)
    (set_tile "listeo" selectiono)
    (set_tile "attr" conserver_attr)
    (set_tile "dyna" conserver_dyna)
    (affiche_choix)
    (start_list "lister")
    (mapcar 'add_list liste_bl)
    (end_list)
    (set_tile "lister" selectionr)
    (if redef
      (mode_tile "lister" 1)
      (mode_tile "lister" 0)
      ) ;_ end of if
    (set_tile "echori" echo)
    (set_tile "fact_x" echx)
    (set_tile "fact_y" echy)
    (set_tile "fact_z" echz)
    (set_tile "uniforme" echu)
    (ech_u)
    (idem_lst)
    ) ;_ end of defun

;;;---------------------------------------------------------------
;;;
;;; Comparaison avec la liste du bloc rempla?ant
;;;
;;;---------------------------------------------------------------

  (defun liste_choix (val)
    (setq selectiono val
          js nil
          ) ;_ end of setq
    (affiche_choix)
    (idem_lst)
    ) ;_ end of defun

;;;---------------------------------------------------------------
;;;
;;; Comparaison avec la liste du bloc d'origine
;;;
;;;---------------------------------------------------------------

  (defun liste_sel (val)
    (setq selectionr val)
    (idem_lst)
    ) ;_ end of defun

;;;---------------------------------------------------------------
;;;
;;; S?lection dans le dessin suivant un filtre
;;;
;;;---------------------------------------------------------------

  (defun selection (/ js1)
    (if (eq selectiono "0")
      (setq js1 (ssget (list (cons 0 "INSERT"))))
      (setq js1 (ssget (list (cons 0 "INSERT") (cons 2 (strcat (nth (1- (atoi selectiono)) liste_bl) ",`*U*")))))
      ) ;_ end of if
    (and js1
         (setq js js1)
         ) ;_ end of and
    ) ;_ end of defun

;;;---------------------------------------------------------------
;;;
;;; V?rification que la valeur z?ro n'est pas entr?e
;;;
;;;---------------------------------------------------------------

  (defun verif_valeur (var val)
    (if (zerop (read val))
      (cond
        ((= var "x")
         (set_tile "texte3" "The X Scale factor can not be 0")
         (mode_tile "fact_x" 2)
         )
        ((= var "y")
         (set_tile "texte3" "The Y Scale factor can not be 0")
         (mode_tile "fact_y" 2)
         )
        ((= var "z")
         (set_tile "texte3" "The Z Scale factor can not be 0")
         (mode_tile "fact_z" 2)
         )
        ) ;_ end of cond
      (cond
        ((= var "x")
         (set_tile "texte3" "")
         (setq echx val)
         )
        ((= var "y")
         (set_tile "texte3" "")
         (setq echy val)
         )
        ((= var "z")
         (set_tile "texte3" "")
         (setq echz val)
         )
        ) ;_ end of cond
      ) ;_ end of if
    ) ;_ end of defun

;;;---------------------------------------------------------------
;;;
;;; Rechercher un bloc en tant que fichier
;;;
;;;---------------------------------------------------------------

  (defun parcourir (/ fic n result trouve)
    (if (setq fic (getfiled "Select External Block" "" "dwg" 16))
      (progn
        (setq n 0
              redef nil
              ) ;_ end of setq
        (while (nth n liste_bl)
          (if (eq (strcase (nth n liste_bl)) (strcase (vl-filename-base fic)))
            (progn
              (setq trouve t)
              (setq result (msgbox "Existing Block"
                                   (+ 4 48 256)
                                   (strcat "The Block "
                                           (strcase (nth n liste_bl))
                                           " Exist in the drawing.\nDo you want to replace it?"
                                           ) ;_ end of strcat
                                   ) ;_ end of msgbox
                    ) ;_ end of setq
              (if (eq result 6)
                (setq redef fic
                      selectionr (itoa n)
                      ) ;_ end of setq
                (setq redef nil
                      selectionr (itoa n)
                      ) ;_ end of setq
                ) ;_ end of if
              ) ;_ end of progn
            ) ;_ end of if
          (setq n (1+ n))
          ) ;_ end of while
        (or trouve redef (setq redef fic))
        ) ;_ end of progn
      ) ;_ end of if
    ) ;_ end of defun

;;;---------------------------------------------------------------
;;;
;;; Selection d'un bloc remplacant sur l'?cran
;;;
;;;---------------------------------------------------------------

  (defun selection_ecran (/ bl n no sel)
    (while (not (setq sel (ssget "_:E:S" (list (cons 0 "INSERT")))))
      (princ "\nPlease Select Block.")
      ) ;_ end of while
    (setq no (vlax-ename->vla-object (ssname sel 0))
          no (if (vlax-property-available-p no 'effectivename)
               (vla-get-effectivename no)
               (vla-get-name no)
               ) ;_ end of if
          ) ;_ end of setq
    (setq sel (tblsearch "block" no)
          n   0
          ) ;_ end of setq
    (if (and (not (eq (logand (cdr (assoc 70 sel)) 1) 1))
             (not (eq (logand (cdr (assoc 70 sel)) 4) 4))
             (not (eq (logand (cdr (assoc 70 sel)) 16) 16))
             ) ;_ end of and
      (while (setq bl (nth n liste_bl))
        (if (eq (cdr (assoc 2 sel)) bl)
          (setq selectionr (itoa n))
          ) ;_ end of if
        (setq n (1+ n))
        ) ;_ end of while
      (msgbox "" 48 "This block is an xref.")
      ) ;_ end of if
    ) ;_ end of defun

;;;---------------------------------------------------------------
;;;
;;; Remplacer un bloc par un autre
;;;
;;;---------------------------------------------------------------

  (defun changer_blocs (/ bl n nbl nn no nw imod nom cont result sav_dyna tot)
    (if (and (not js) (eq selectiono "0"))
      (progn
        (setq result (msgbox "ATTENTION !!!"
                             (+ 4 16 256)
                             "You will replace all blocks of the drawing by a TYPE ONLY !!!\nDo you want to continue?"
                             ) ;_ end of msgbox
              ) ;_ end of setq
        (if (eq result 7)
          (setq cont t)
          ) ;_ end of if
        ) ;_ end of progn
      ) ;_ end of if
    (if (not cont)
      (progn
        (setq imod (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))))
        (if redef
          (progn
            (vla-delete (vla-insertblock imod (vlax-3d-point '(0.0 0.0 0.0)) redef 1 1 1 0))
            (setq nom (vl-filename-base redef))
            ) ;_ end of progn
          (setq nom (nth (atoi selectionr) liste_bl))
          ) ;_ end of if
        (if (not js)
          (if (eq selectiono "0")
            (setq js (ssget "x" (list (cons 0 "INSERT"))))
            (setq
              js (ssget "x" (list (cons 0 "INSERT") (cons 2 (strcat (nth (1- (atoi selectiono)) liste_bl) ",`*U*"))))
              ) ;_ end of setq
            ) ;_ end of if
          ) ;_ end of if
        (setq n 0
              tot 0
              ) ;_ end of setq
        (while (ssname js n)
          (setq bl (entget (ssname js n))
                nw (vlax-ename->vla-object (ssname js n))
                no (if (vlax-property-available-p nw 'effectivename)
                     (vla-get-effectivename nw)
                     (vla-get-name nw)
                     ) ;_ end of if
                ) ;_ end of setq
          (if (or (eq selectiono "0")
                  (and (not (eq selectiono "0"))
                       (eq no (nth (1- (atoi selectiono)) liste_bl))
                       ) ;_ end of and
                  ) ;_ end of or
            (progn
              (and (eq conserver_dyna "1")
                   (eq (vla-get-isdynamicblock nw) :vlax-true)
                   (setq sav_dyna (mapcar '(lambda (x) (cons (vla-get-propertyname x) (vla-get-value x)))
                                          (vlax-invoke nw 'getdynamicblockproperties)
                                          ) ;_ end of mapcar
                         ) ;_ end of setq
                   ) ;_ end of and
              (if (eq conserver_attr "1")
                (if (not (eq (strcase no) (strcase nom)))
                  (setq bl (subst (cons 2 nom) (assoc 2 bl) bl))
                  ) ;_ end of if
                (progn
                  (setq nbl (entget (vlax-vla-object->ename (vla-insertblock imod
                                                                             (vlax-3d-point (cdr (assoc 10 bl)))
                                                                             nom
                                                                             (cdr (assoc 41 bl))
                                                                             (cdr (assoc 42 bl))
                                                                             (cdr (assoc 43 bl))
                                                                             (cdr (assoc 50 bl))
                                                                             ) ;_ end of vla-insertblock
                                                            ) ;_ end of vlax-vla-object->ename
                                    ) ;_ end of entget
                        ) ;_ end of setq
                  (entdel (cdr (assoc -1 bl)))
                  (foreach n '(6 8 44 45 67 70 71 210 410)
                    (setq nbl (subst (assoc n bl) (assoc n nbl) nbl))
                    ) ;_ end of foreach
                  (setq bl nbl)
                  ) ;_ end of progn
                ) ;_ end of if
              (if (eq echo "0")
                (if (eq echu "0")
                  (setq bl (subst (cons 41 (atof echx)) (assoc 41 bl) bl)
                        bl (subst (cons 42 (atof echy)) (assoc 42 bl) bl)
                        bl (subst (cons 43 (atof echz)) (assoc 43 bl) bl)
                        ) ;_ end of setq
                  (setq bl (subst (cons 41 (atof echx)) (assoc 41 bl) bl)
                        bl (subst (cons 42 (atof echx)) (assoc 42 bl) bl)
                        bl (subst (cons 43 (atof echx)) (assoc 43 bl) bl)
                        ) ;_ end of setq
                  ) ;_ end of if
                ) ;_ end of if
              (entmod bl)
              (entupd (cdr (assoc -1 bl)))
              (setq nw (vlax-ename->vla-object (cdr (assoc -1 bl))))
              (and (eq conserver_dyna "1")
                   (eq (vla-get-isdynamicblock nw) :vlax-true)
                   (progn
                     (foreach no (vlax-invoke nw 'getdynamicblockproperties)
                       (and (setq nn (assoc (vla-get-propertyname no) sav_dyna))
                            (/= (car nn) "Origin")
                            (/= (vlax-get no 'value) (vlax-variant-value (cdr nn)))
                            (vl-catch-all-apply 'vla-put-value (list no (cdr nn)))
                            ) ;_ end of and
                       ) ;_ end of foreach
                     ) ;_ end of progn
                   ) ;_ end of and
              (setq tot (1+ tot))
              ) ;_ end of progn
            ) ;_ end of if
          (setq n (1+ n))
          ) ;_ end of while
        (princ (strcat "\n\tRemplacement of " (itoa tot) " block(s)."))
        ) ;_ end of progn
      (princ "\n\tAbort.")
      ) ;_ end of if
    ) ;_ end of defun

;;;---------------------------------------------------------------
;;;
;;; Routine principale.
;;;
;;;---------------------------------------------------------------

  (vl-load-com)
  (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
  (setq old_error *error*
        *error*   *errrbloc*
        ) ;_ end of setq
  (if (setq dcl_file (cond
                       ((findfile "rbloc.dcl"))
                       (t
                        ((lambda (/ file handle)
                           (setq file   (strcat (vl-string-right-trim "\\" (getenv "temp")) "\\dlg.dcl")
                                 handle (open file "w")
                                 ) ;_ end of setq
                           (foreach item '("// ================================================================="
                                           "//"
                                           "// RBLOC.DCL V2.20"
                                           "//"
                                           "// Copyright (C) Patrick_35"
                                           "// Translated to English and cosmetic changed by Igal Averbuh 2015"
                                           "// ================================================================="
                                           "rbloc : dialog {"
                                           "key = \"titre\";"
                                           "is_cancel = true;"
                                           ": boxed_column {"
                                           "label = \" Original OLD Block \";"
                                           ": row {"
                                           ": popup_list {key = \"listeo\"; width = 30; label = \"Name\";}"
                                           ": button {key = \"sel\"; width = 15; label = \"Select...\";}"
                                           "}"
                                           "spacer;"
                                           ": toggle {key = \"attr\"; label = \"Keep attributes\";}"
                                           ": toggle {key = \"dyna\"; label = \"Keep Dynamic Properties\";}"
                                           ": text {key = \"texte1\";}"
                                           "}"
                                           ": boxed_column {"
                                           "label = \" Replacement NEW Block \";"
                                           ": popup_list {key = \"lister\"; width = 30; label = \"Name\";}"
                                           "spacer;"
                                           ": row {"
                                           ": button {key = \"pick\"; width = 15; label = \"Select...\";}"
                                           ": button {key = \"rech\"; width = 15; label = \"Browse...\";}"
                                           "}"
                                           ": text {key = \"texte2\";}"
                                           "}"
                                           ": boxed_column {"
                                           "label = \" Scale \";"
                                           ": toggle {key = \"echori\"; label = \"Keep original scale\";}"
                                           ": toggle {key = \"uniforme\"; label = \"Uniform Scale\";}"
                                           ": row {"
                                           ": edit_box {key = \"fact_x\"; width = 5; label = \"X:\";}"
                                           ": edit_box {key = \"fact_y\"; width = 5; label = \"Y:\";}"
                                           ": edit_box {key = \"fact_z\"; width = 5; label = \"Z:\";}"
                                           "}"
                                           ": text {key = \"texte3\";}"
                                           "}"
                                           "spacer;"
                                           "ok_cancel;"
                                           "}"
                                           )
                             (write-line item handle)
                             ) ;_ end of foreach
                           (close handle)
                           file
                           ) ;_ end of lambda
                         )
                        )
                       ) ;_ end of cond
            ) ;_ end of setq
    (progn
      (setq bl (tblnext "block" t))
      (while bl
        (if (and (not (eq (logand (cdr (assoc 70 bl)) 1) 1))
                 (not (eq (logand (cdr (assoc 70 bl)) 4) 4))
                 (not (eq (logand (cdr (assoc 70 bl)) 16) 16))
                 ) ;_ end of and
          (setq liste_bl (append liste_bl (list (cdr (assoc 2 bl)))))
          ) ;_ end of if
        (setq bl (tblnext "block"))
        ) ;_ end of while
      (if liste_bl
        (progn
          (setq dcl_id         (load_dialog dcl_file)
                liste_bl       (acad_strlsort liste_bl)
                conserver_attr "1"
                conserver_dyna "1"
                selectiono     "0"
                selectionr     "0"
                echo           "1"
                echu           "0"
                echx           "1"
                echy           "1"
                echz           "1"
                ) ;_ end of setq
          (while (and (not (eq resultat 0)) (not (eq resultat 1)))
            (affiche_dial)
            (mode_tile "accept" 2)
            (action_tile "listeo" "(liste_choix $value)")
            (action_tile "lister" "(liste_sel $value)")
            (action_tile "sel" "(done_dialog 2)")
            (action_tile "rech" "(done_dialog 3)")
            (action_tile "pick" "(done_dialog 4)")
            (action_tile "attr" "(setq conserver_attr $value)")
            (action_tile "dyna" "(setq conserver_dyna $value)")
            (action_tile "echori" "(setq echo $value)(ech_u)")
            (action_tile "fact_x" "(verif_valeur \"x\" $value)")
            (action_tile "fact_y" "(verif_valeur \"y\" $value)")
            (action_tile "fact_z" "(verif_valeur \"z\" $value)")
            (action_tile "uniforme" "(setq echu $value)(ech_u)")
            (action_tile "cancel" "(done_dialog 0)")
            (action_tile "accept" "(done_dialog 1)")
            (setq resultat (start_dialog))
            (cond
              ((= resultat 1)
               (changer_blocs)
               )
              ((= resultat 2)
               (selection)
               )
              ((= resultat 3)
               (parcourir)
               )
              ((= resultat 4)
               (selection_ecran)
               )
              ) ;_ end of cond
            ) ;_ end of while
          (unload_dialog dcl_id)
          ) ;_ end of progn
        (msgbox "" 48 "No block in the drawing")
        ) ;_ end of if
      ) ;_ end of progn
    (msgbox "" 16 "The RBLOC.DCL file is not found.")
    ) ;_ end of if
  (setq *error* old_error)
  (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
  (princ)
  ) ;_ end of defun

(setq nom_lisp "RBLOC")
(if (/= app nil)
  (if (= (strcase (substr app (1+ (- (strlen app) (strlen nom_lisp))) (strlen nom_lisp))) nom_lisp)
    (princ (strcat "..." nom_lisp " charg?."))
    (princ (strcat "\n" nom_lisp ".LSP Loaded....."))
    ) ;_ end of if
  (princ (strcat "\n" nom_lisp ".LSP Loaded......"))
  ) ;_ end of if
(setq nom_lisp nil)

(princ)

Дополнительно: убран самовызов при загрузке; код не оптимизировался и практически не менялся
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 17.08.2015, 04:07
#69
Krovlaf

геология, геодезия
 
Регистрация: 29.05.2009
Хабаровск
Сообщений: 174


Спасибо! Все работает!
Krovlaf вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 10.04.2018, 14:49
#70
RAD24


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


Добрый день! Подскажите как заменить вхождение блока одного или нескольких сразу в чертеже? Блоки, на которые нужно менять старые- находятся в новом файле естественно (имена блоков для замены одинаковые). Желательно чтобы это работало в BricsCADe.
RAD24 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 10.04.2018, 15:58
#71
crosandr

инженер-строитель
 
Регистрация: 09.07.2010
Санкт-Петербург
Сообщений: 1,735


Цитата:
Сообщение от RAD24 Посмотреть сообщение
Подскажите как заменить вхождение блока одного или нескольких сразу в чертеже?
В акаде через Design Centrer можно сделать
__________________
a computer program does not make a good engineer, only a good engineer should use a computer program
crosandr вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 10.04.2018, 16:15
#72
RAD24


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


Да, можно, а c помощью lisp? Мне для удобства в BricsCADe хотелось бы.
RAD24 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 10.04.2018, 17:03
#73
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 1,786


http://forum.dwg.ru/showthread.php?t=145333
не лисп, но адаптировать для BricsCAD думаю можно...
__________________
_бложиг
Boxa вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 10.04.2018, 17:33
#74
RAD24


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


Спасибо, почему то не загружается , ошибка : NETLOAD

Loading .NET runtime v4.0.30319:

Error Message: Не удалось загрузить файл или сборку "file:///C:\1Времянка\dynINOUT_2013-2018\dynINOUT_2017.dll" либо одну из их зависимостей. Операция не поддерживается. (Исключение из HRESULT: 0x80131515)(NETLOAD)

----- добавлено через 18 сек. -----
Это в Bricscade
RAD24 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 10.04.2018, 18:20
#75
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 1,786


RAD24, эээ... я же написал:
Цитата:
Сообщение от Boxa Посмотреть сообщение
но адаптировать для BricsCAD думаю можно...
Зачем загружать автокадовскую версию в бриккад? Понятно что это работать не будет.
Нужно взять исходный код, который там выложен и адаптировать, как минимум заменив библиотеки...
__________________
_бложиг
Boxa вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 13.04.2018, 11:21
#76
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 5,338


Цитата:
Сообщение от RAD24 Посмотреть сообщение
Добрый день! Подскажите как заменить вхождение блока одного или нескольких сразу в чертеже? Блоки, на которые нужно менять старые- находятся в новом файле естественно (имена блоков для замены одинаковые). Желательно чтобы это работало в BricsCADe.
Синхронизация блоков от Бушмана Андрея. Но это опять же под акад.
Сергей812 вне форума вставить имя Обратить внимание модератора на это сообщение  
 
Непрочитано 13.04.2018, 11:43
#77
RAD24


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


Спасибо, посмотрю
RAD24 вне форума вставить имя Обратить внимание модератора на это сообщение  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Замена динамических блоков

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

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

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
подсчет динамических блоков AAI Программирование 37 25.06.2012 15:05
Тормозит команда расчленения набора блоков batmax Программирование 4 31.08.2010 17:37
Замена названий блоков, типов линий АлексЮстасу Программирование 9 04.06.2010 21:51
Замена текстовых блоков Sputnik-e AutoCAD 2 11.09.2009 09:22
Библиотека динамических блоков Коробейников Алексей AutoCAD 2 05.04.2005 16:08

|| Главная || Каталог САПР || Тендеры || Публикации || Объявления || Биржа труда || Download || Галерея ||
|| Библиотека || Кунсткамера || Каталог предприятий || Контакты || Файлообменник || Блоги ||