Redefining Nested Blocks

Good Afternoon.

Is there any way to Insert a Block, redefining this block, and at the same time redefine all the nested blocks that are inside the main block ?
In autocad inserting via the Block pallete this is possibel, but i dont know if BricsCad as the same feature somewhere.

Thanks in advance.

Comments

  • I am not super experienced with Autocad's and Bricscad's "Block" behavior.
    (Coming from Vectorworks where working with "Symbols" is really logical,
    pretty comfortable and straightforward)

    For me the Block editing behavior in Bricscad is quite "blocky" .....
    Working with "nested Blocks" a pain.
    Dealing with "Anonymous Blocks" even just a nightmare.

    But maybe I am doing something wrong.

    I see two Tools to edit Blocks :
    BEDIT and REFEDIT

    BEDIT can only edit one Block at a time.
    If you open a parent Block to try to edit a nested Block,
    you first have to leave the parent Block BEDIT.
    But that will not open the wanted nested Block automatically.
    Bricscad was said to somehow at least offer to open the previously selected
    nested Block ... but that never worked for me.
    I have to memorize its name, start BEDIT and search for the nested Block
    in BEDIT's Block list manually.

    REFEDIT at least allows to edit Block content in a visible environment context
    and even pick external objects into your edit session to edit them in parallel.
    But AFAIR, you still can't dive into a Hierarchy of nested Block children (?)

    I could start to write a long bullet list of what I miss or think is wrong in Bricscad
    when working Blocks ...
  • ALANH
    edited April 2023
    Only help is should be able to pick a block and get the nested block names, and can populate a dcl and choose which one to edit.

    The pick and choose is a library lisp all done, the nested block names need to do a Google.
    have a look at this

    [code]
    ; nested blocks code by Moshe-A
    ; Modified by alan H to pick block April 2023


    (defun c:blist ( / bnames^ blocks ans)
    (defun in-loop (bname / )
    (vlax-for AcDbEntity (vla-item blocks bname)
    (if (eq (vla-get-objectName AcDbEntity) "AcDbBlockReference")
    (progn
    (in-loop (vla-get-effectiveName AcDbEntity)) ; recursion call
    (setq bnames^ (cons (vla-get-effectiveName AcDbEntity) bnames^))
    ); progn
    ); if
    (vlax-release-object AcDbEntity)
    ); vlax-for
    )

    (if (not AH:Butts)(load "Multi Radio buttons.lsp"))

    (setq blocks (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))))
    (setq AcDbBlockReference (vlax-ename->vla-object (car (entsel "\nSelect block "))))
    (in-loop (vla-get-effectiveName AcDbBlockReference))
    (setq bnames^ (cons "Please choose block " bnames^))
    (setq ans (ah:butts 1 "V" bnames^))
    (command "-bedit" ans)
    (princ)
    )
    (c:blist)
    [\code]