Уж слоя е празен...

7 отговора 0 прегледа
#1

Уж слоя е празен...

Аутокад2006
В един от слоевете съм изтрил всичко, което съм видял.
И искам да изтрия и слоя.
Но не може. Слоя не се изтрива. А и иконката му не е "побледняла". А само такива слоеве с побледнели иконки мога да изтривам.

Нещо не правя както трябва! Но какво не правя....?

Ама аз държа да изтрия слоя.
Как?

Благодаря!

Отговор
в отговор на cad #2

Re: Уж слоя е празен...

Възможна причина е да имаш дефиниция на блок, част от която е дефинирана в този слой. Самия блок може да не е в чертежа, затова
не го виждаш. Опитай с "purge" да се отървеш от неизползваните блокове и тогава да изтриеш слоя. А ако блока е използван.. питай пак

Отговор
в отговор на cad #3

Re: Уж слоя е празен...

Сещам се за две други причини, поради които не може да се изтрие даден слой:
- ако има текстове с празно съдържание или съдържанието е интервал. В този случай на екрана не се вижда нищо и не може да се маркира и да се изтрие. Но текстовете като обекти си съществуват.

- ако в чертежа има блокове с атрибути. В определени ситуации в описанието на атрибута може да е останало името на въпросния слой.

Тръгнеш ли да търсиш щастие, вземи си чадър.
Отговор
в отговор на cad #4

Re: Уж слоя е празен...

ето ти един скрипт, кой знае откъде намерен, който служи да прехвърля в нулев слой всички обекти на избран блок без блока да се предефинира

пробвал съм го преди няколко години - работи, макар че на мен не ми се налага често да го ползвам

имаше мнение - ако имаш празни текстови обекти пробвай през quick select или find да ги намериш

ето го и самия скрипт:
-------------------------------

;TIP850.LSP: BL0.LSP Change Block Entities to Layer 0 (c)1993, J. Todd Owen
;globalization by CAD Studio

(defun C:BL0 (/ CL ENAME ENT)
(setvar "CMDECHO" 0)
(setvar "HIGHLIGHT" 0)
(setq CL (getvar "CLAYER"))
(command "._LAYER" "_S" "0" "")
(setq ENAME nil ENT nil)
(while (= ENAME nil)
(setq ENAME (car (entsel "\nSelect block to redefine on layer 0: ")))
)
(setq ENT (entget ENAME))
(if (= (ITEM 0 ENT) "INSERT")
(progn
(command "._COPY" ENAME "" "@" "@")
(setq ENAME (entlast))
(BLOCK0 ENAME)
)
(progn (princ "\nError: A block must be selected.") (C:BL0))
)
(command "._LAYER" "_S" CL "")
(setvar "HIGHLIGHT" 1)
(setvar "CMDECHO" 1)
(princ)
)

(defun BLOCK0 (ENAME / ENAME2 ENT INSPT BLKNAME SSBLK)
(setq ENT (entget ENAME))
(setq INSPT (ITEM 10 ENT))
(setq BLKNAME (ITEM 2 ENT))
(setq ENT (subst (cons 41 1) (assoc 41 ENT) ENT)) ;x-scale
(setq ENT (subst (cons 42 1) (assoc 42 ENT) ENT)) ;y-scale
(setq ENT (subst (cons 43 1) (assoc 43 ENT) ENT)) ;z-scale
(setq ENT (subst (cons 50 0) (assoc 50 ENT) ENT)) ;rotation angle
(entmod ENT)
(command "._EXPLODE" ENAME)
(setq ENAME (entnext ENAME))
(setq SSBLK (ssadd))
(while (/= ENAME nil)
(setq ENT (entget ENAME))
(setq ENT (subst (cons 8 "0") (assoc 8 ENT) ENT)) ;layer
(setq ENT (subst (cons 62 256) (assoc 62 ENT) ENT)) ;color
(setq ENT (subst (cons 6 "BYLAYER") (assoc 6 ENT) ENT)) ;ltype
(entmod ENT)
(setq SSBLK (ssadd ENAME SSBLK))
(if (= (ITEM 0 ENT) "INSERT") ;if ENAME is a block
(progn
(command "._COPY" ENAME "" "@" "@")
(setq ENAME2 (entlast))
(BLOCK0 ENAME2)
)
)
(setq ENAME (entnext ENAME))
)
(command "._BLOCK" BLKNAME "_Y" INSPT SSBLK "")
)

(defun ITEM (N ENT)
(cdr (assoc N ENT))
);end bl0.lsp

(princ "BL0 loaded.")
(princ)

Магьосниците не закъсняват, нито идват по-рано. Те пристигат точно когато им е угодно
Отговор
в отговор на magesnik #5

За скрипта...с внимание!

Скрипта иска внимателно ползване!
1. Определено не работи с динамични блокове.
2. Трябва преди да се пусне скрипта да се мине към глобална координатна система (WCS), иначе блоковете се местят...
Според мен е тромавичко написан.. както би го направил обикновен потребител (преди да има Block editor в AutoCAD) - гърми блока, мести обектите на слой нула, и го предефинира...

Отговор
в отговор на cad #6

Пробвай следното

Ctrl+A
Ctrl+C

В чисто нов dwg

Ctrl+V

--------------

Може и да пробваш командата

wblock

Отговор
в отговор на ql^2/8 #7

Re: За скрипта...с внимание!

ами автора си го е написал - 1993 година, тогава текущата версия ако не се лъжа беше R12... за динамични блокове в аутодеск даже и не бяха сънували

ако можеш да напишеш по-добър код - заповядай, аз просто се опитах да помогна на човека

Магьосниците не закъсняват, нито идват по-рано. Те пристигат точно когато им е угодно
Отговор
в отговор на magesnik #8

Re: За скрипта...с внимание!

Набързо направено, мога да предложа това. Работи и с динамични блокове, не ги мести. Малко примига като влиза в блок-едитора.

(defun c:goto0 (/ blk blkname)
(setq blkob (entsel "\nSelect Block >"))
(setq blkname (vla-get-EffectiveName (vlax-ename->vla-object (car blkob))))
(progn
(COMMAND "-BEDIT" blkname)
(command "change" "all" "" "p" "la" "0" "")
(command "bsave")
(command "bclose" "")
)
)

Отговор