COPYCLIP command not allowed during reference editing

Hi,

am I msissiing something in the workflow or why copying from whithin REFEDIT is not working/supported? It is cumbersome and time consuming having to remove the object from the block fist in order to be able to copy it.

Comments

  • I don't like that either. I assume it was set up that way for compatibility. Autocad doesn't allow CopyClip during a Refedit.

    An alternative is Yaacov Lazar's very clever block editing commands -- KK to start editing, and BK when you're done, just like Refedit and Refclose, except that while editing the block you're in the normal drawing editor; so you can interact with the rest of the file or with other DWG files in any way you want and as much as you want. It still works in Bricscad v13, so it probably works in v16 too.
    [code]; Block Editing commands by Yaacov Lazar: yaque@gmail.net.il
    ; Pair of lisp functions to edit blocks - type "kk" and choose the block to edit.
    ; Find a blank place on the screen to place the insertion point.
    ; The lisp function then draws a line from the insertion point and asks for an endpoint,
    ;   which should be placed well outside the block.
    ; That line marks the insertion point - don't erase it!
    ; You can move it to change the insertion point of the block.
    ; When you're done editing the block, type "bk".
    ; The insertion point marking line will disappear,
    ;   and you should then choose the entities to be included in the edited block.
    ; The first lisp function sets "&block" as the insertion point marking line,
    ;   and sets "$block" as the UCS that was current when the block was inserted for editing.
    ; 10.12.2000 - tested on Acad R14 and Bcad V8.1.18
    ; -----------------------------------------------------
    (defun c:kk()
    (setq &bl (car (entsel "\nchoose block to edit: "))
    *block (cdr (assoc 2 (entget &bl))) ;get block name
    )
    (setq *clyr (getvar "CLAYER"))
    (setvar "CMDECHO" 0)
    (COMMAND "-layer" "ON" "0" "thaw" "0" "unlock" "0" "set" "0" "")
    ;thaw and set 0 layer as current
    (command "_INSERT" *block pause)
    (while (= (getvar "CMDNAMES") "INSERT") (command "")) ;insert block
    (setq &l (entlast) ;set last entity
    ^block (getvar "LASTPOINT") ;set insert point
    )
    (command "LINE" ^block pause "") ;draw insert point mark line
    (setq &block (entlast)
    &block (if (equal &block &l) nil &block)
    )
    ;set last entity as the insert point mark line
    (command "EXPLODE" (list &l ^block)) ;explode block
    (if (tblsearch "UCS" "$BLOCK")(command "ucs" "d" "$block"))
    (command "ucs" "s" "$block")
    ;set current ucs as "$BLOCK"
    ;(in case you change the ucs while editing the block)
    (setvar "CMDECHO" 0)
    (setvar "CLAYER" *clyr)
    (princ (strcat "\nblock name: "*block))
    (princ)
    )
    ;; -----------------------------------------------------
    (defun c:bk()
    (setvar "CMDECHO" 0)
    (princ (strcat "\nredefining block " *block "\n"))
    (setq ^block (cdr (assoc 10 (entget &block))))
    (entdel &block) ;get insert point from mark line and delete
    (setq #block (ssget)) ;get edited block entities
    (if (tblsearch "UCS" "$prev")(command "ucs" "d" "$prev"))
    (command "ucs" "s" "$prev")
    (command "ucs" "r" "$block")
    (command "ucs" "d" "$block") ;set ucs as when block was inserted for editing
    (command "_block" *block "y" (trans ^block 0 1) #block "") ;update block
    (command "ucs" "r" "$prev") ;clean up ucs
    (command "ucs" "d" "$prev")
    (setq #block nil)
    (setvar "CMDECHO" 1)
    (princ)
    )[/code]
  • Thanks for the response and the tip. Silly that a LISP has to be invoked for a basic task the app should be capable of. If I am not mistaken AD removed since then this limitation from AC.
This discussion has been closed.