05.01.2012 15:50    

mhmtbal
ekteki blokları lamda pr de bir türlü göremiyorum isimsiz blok nasıl oluyor bilen var mı? 295831-blok.dwg

06.01.2012 20:37    

bor521137
Bloğu blok editörde açmayı dene sonra save et ismi de değiştir. Bedit komutu ile girebilirsin

09.01.2012 11:03    

mhmtbal
Alıntı
bor521137 :
Bloğu blok editörde açmayı dene sonra save et ismi de değiştir. Bedit komutu ile girebilirsin


SORUN ZATEN BLOK EDİTÖRDE AÇILAMAMASI YANİ BLOĞUN İSMİ YOK ÖLE BİR BLOK YOK AMA VAR BLOĞU AÇAMAYI DENEDİNİZ Mİ ?

10.01.2012 07:12    

ehya
Aşağıdaki lispi kullanın. Bloklarınız düzelecektir.
Komut ismi UNANONALL




Kod:

;===============================================
;======================================
(setq uan_ nil lsp_file "UnAnon")

;================== For Automated Calling From Another Program =========
(defun uan_auto (ar1) (UnAnon ar1))

;================== Macros =============================================
(defun PDot ()(princ "."))

(PDot);++++++++++++ Set Modes & Error ++++++++++++++++++++++++++++++++++
(defun uan_smd ()
(SetUndo)
(setq olderr *error*
      *error* (lambda (e)
                (and (/= e "quit / exit abort")
                     (princ (strcat "\nError: *** " e " *** ")))
                (command "_.UNDO" "_END" "_.U")
                (uan_rmd))
       uan_var '(
  ("CMDECHO"   . 0) ("MENUECHO" . 0) ("MENUCTL"   . 0) ("MACROTRACE" . 0)
  ("OSMODE"    . 0) ("SORTENTS" . 119)("MODEMACRO" . ".")
  ("BLIPMODE"  . 0) ("EXPERT"   . 0) ("SNAPMODE"  . 1) ("PLINEWID"   . 0.0)
  ("ORTHOMODE" . 1) ("GRIDMODE" . 0) ("ELEVATION" . 0) ("THICKNESS"  . 0)
  ("FILEDIA"   . 0) ("FILLMODE" . 0) ("SPLFRAME"  . 0) ("UNITMODE"   . 0)
  ("TEXTEVAL"  . 0) ("ATTDIA"   . 0) ("AFLAGS"    . 0) ("ATTREQ"     . 1)
  ("ATTMODE"   . 1) ("UCSICON"  . 1) ("HIGHLIGHT" . 1) ("REGENMODE"  . 1)
  ("COORDS"    . 2) ("DRAGMODE" . 2) ("DIMZIN"    . 1) ("PDMODE"     . 0)
  ("CECOLOR"   . "BYLAYER") ("CELTYPE" . "BYLAYER")))
(foreach v uan_var
      (setq m_v (cons (getvar (car v)) m_v)
            m_n (cons (car v) m_n))
      (setvar (car v) (cdr v)))
(princ (strcat (getvar "PLATFORM") " Release " (substr (ver) 18 2)
   " -  Convert To Anonymous Blocks ....\n"))
(princ))

(PDot);++++++++++++ Return Modes & Error +++++++++++++++++++++++++++++++
(defun uan_rmd ()
  (setq *error* olderr)
  (mapcar 'setvar m_n m_v)
  (command "_.UNDO" "_END")
  (prin1))

(PDot);++++++++++++ Set And Start An Undo Group ++++++++++++++++++++++++
(defun SetUndo ()
(and (zerop (getvar "UNDOCTL"))
      (command "_.UNDO" "_ALL"))
(and (= (logand (getvar "UNDOCTL") 2) 2)
      (command "_.UNDO" "_CONTROL" "_ALL"))
(and (= (logand (getvar "UNDOCTL") 8) 8)
      (command "_.UNDO" "_END"))
(command "_.UNDO" "_GROUP"))

(PDot);++++++++++++ Get Entity Name ++++++++++++++++++++++++++++++++++++
(defun GetOne (/ st os)
(setq os (getvar "SNAPMODE") s nil)
(setvar "SNAPMODE" 0)
(while (not st)
        (setq st (ssget)))
(while (> (sslength st) 1)
        (setq st nil)
        (princ "\nOnly 1 At A Time Please\n")
        (while (not st)
               (setq st (ssget))))
(setvar "SNAPMODE" os)
(setq s (ssname st 0)))

(PDot);++++++++++++ Convert An Anonymous Block To Named Block ++++++++++
(defun UnAnon (b / tdef en ed bc bn bd in)          ;Supply ename
  (setq bn "TEMP1" bc 1)
  (while (tblsearch "BLOCK" bn)
         (setq bc (1+ bc) bn (strcat "TEMP" (itoa bc))))
  (and (= (type b) 'ENAME)
       (setq bd (entget b)
             in (cdr (assoc 2 bd))))
  (if (or (not bd)
          (not in)
          (/= "INSERT" (cdr (assoc 0 bd)))
          (/= "*U" (substr in 1 2))
          (= (logand (cdr (assoc 70 (tblsearch "BLOCK" in)))  4)  4)
          (= (logand (cdr (assoc 70 (tblsearch "BLOCK" in))) 16) 16)
          (= (logand (cdr (assoc 70 (tblsearch "BLOCK" in))) 32) 32))
       (progn
         (princ "*** Not An Anonomymous Block *** ")
         (setq bn nil bc nil bd nil in nil b nil)
         (exit)))
  (setq tdef (tblsearch "BLOCK" in)
          en (cdr (assoc -2 tdef))
          ed (entget en))
  (entmake (list (cons 0 "BLOCK")
                 (cons 2 bn)
                 (cons 70 0)
                 (cons 10 (cdr (assoc 10 tdef)))))
  (entmake ed)
  (while (setq en (entnext en))
         (setq ed (entget en))
         (entmake ed))
  (entmake (list (cons 0 "ENDBLK")))
  (setq bd (subst (cons 2 bn) (assoc 2 bd) bd))
  (entmod bd)
  (entupd b)
  (princ (strcat "\n" bn)))

(PDot);************ Main Program ***************************************
(defun uan_ (/ m_v m_n olderr uan_var s)
  (uan_smd)
  (GetOne)
  (UnAnon s)
  (uan_rmd))

(defun c:UnAnonall (/ ss i)
(setq ss (ssget "X" (list (cons 0 "INSERT")(cons 67 (if (= (getvar "TILEMODE") 1) 0 1)))))
(and ss
   (setq i (sslength ss))
   (while (not (minusp (setq i (1- i))))
          (setq en (ssname ss i))
          (if (= "*U" (substr (cdr (assoc 2 (entget en))) 1 2))
              (UnAnon en))))
(prin1))

(PDot);************ Load Program ***************************************
(defun C:UnAnon () (uan_))
(if uan_ (princ "\nUnAnon Loaded\n"))
(prin1)
;================== End Program ========================================

12.01.2012 08:35    

mhmtbal
teşekkürler çok işime yaradı peki bir soru daha bu bloklar nasıl yapılmış ?

12.01.2012 08:55    

ehya
nasıl yapıldığı konusunda net bir bilgiye sahip değilim. *U ile başlayan bloklar "Anonim Blok" diye geçiyor. Autodesk sisteminin kendi bir ürünü. Araştırmak lazım.

24.01.2012 17:23    

ProhibiT
Merhaba arkadaşlar. Bu konuyu daha önce okumuş, cevap yazma fırsatı bulamamıştım. Bazı arkadaşlarımızın işine yarayabilir, en kötü ihtimalle kafalarındaki soru işaretlerini giderebilirim düşüncesiyle, Anonymous BLock'larla ilgi bazı detayları paylaşmak istiyorum.

Öncelikle daha önce de pek çok kereler bahsettiğim bir detayı tekrar hatırlatmak istiyorum. AutoCAD'de bLock objesi ile insert objesi farklıdır. Genelde insanlar ikisinden de bLock diye bahsediyorlar. BLock AutoCAD Drawing dosyasının Tables bölümünde yer alan bLock tanımıdır. Bu tanım çizim nesneleri içermekle birlikte kendisi çizim nesnesi değildir. Doğru adıyla bLock Reference yani insert objeleri ise Tables bölümünde yer alan bLock tanımını refere eden çizim objeleridir.

Tables bölümündeki bLock tanımları (BLock Definition) Anonymous Block (unnamed yani isismsiz bLock) lar içerebilir. Anonymous bLocklar'ı 3 gurup halinde görüyoruz. Bunlar, *Dnnn şeklindeki Associative Dimension'lar, *Xnnn şeklindeki Hatch Pattern bLockları ve *Unnn şeklindeki kullanıcı bLock'larıdır. Her üçünde de nnn kısmı AutoCAD tarafından otomatik olarak verilen numaralardır.

Bunlardan *Dnnn ve *Xnnn blocklarının nasıl oluştuğunu tahmin etmek zor değil. Dimension ve Hatch komutları bunları oluşturuyor. Peki *Unnn bLock'ları nasıl oluşuyor? Bunları da AutoLisp veya ObjectARX fonksiyonları oluşturuyor.

*Dnnn, *Xnnn ve *Unnn şeklindeki blokların sonunda nnn ile ifade ettiğimiz numaralar sabit değillerdir. Drawing dosyası her açıldığında AutoCAD bunlara farklı bir numara verir. Ama bLock tanımı ile refere edildikleri insert objeleri arasındaki bağ korunur.

Anonymous BLock'ları insert komutuyla kullanamazsınız. AutoLisp fonksiyon içinde entmake fonksiyonu ile "INSERT" objesi oluşturup, bunları *Unnn tanımına refere edebilirsiniz. benzer şekilde entmake kullanarak block tanımını değiştirebilir, redefine edebilirsiniz. Gene AutoLisp içinden entmod fonksiyonuyla Anonymous BLock tanımını değil ama tanım altındaki objeleri değiştirip güncelleyebilirsiniz.

Anonymous BLock'ların Association List'inde 70 anahtarlı değer 1 dir (70 . 1) yukarıda ehya hocamın verdiği fonksiyonda da, Anonymous bLock'lar Named bLock'lara dönüştürülürken (assoc 70'lerinin 0 yapıldığına dikkatinizi çekmek isterim.

Demek oluyor ki, Associative Dimension ve Hatch kullandığınızda çizim içinde her biri yalnızca bir kere refere edilmiş bLock'lar oluşacaklardır. Çok verimli bir yöntem gibi gelmiyor :) bunun esbab-ı mucibesinin ne olduğunu ilgili ve meraklı arkadaşlarımızın ferasetine bırakıyorum.

Purge komutunu kullandığınızda, diğer kullanılmayan (insert edilmemiş) bLocklarla birlikte Anonymous BLock'lar da (purge edilebilecek bLock'lar listesinde görünür ve) temizlenirler.

Drawing dosyası açıldığında, kulanılmamış (insert edilmemiş) Anonymous BLock'lar otomatik olarak purge edilip temizlenirler. Diğer bLock tanımları ise Purge komutu uygulanıncaya kadar kalırlar. Bu nedenledir ki; uyanık kullanıcıların hemen farkettiği gibi, çizim içinde çok sayıda Associative Dimension ve Hatch objeleri silinir ve dosya save edip çıkılırsa, dosya boyutu değişmez. Aynı dosya tekrar açılır, herhangi bir işlem yapılmaksızın tekrar save edilirse, hissedilir derecede dosya boyutu küçülür.

Normal bir bLock'u Anonymous bLock'a dönüştürmek için (vl-load-com)(vla-convertToAnonymousBLock (vlax-ename->vla-object (car (entsel)))) şeklinde Diesel Expression kullanabilirsiniz.

Herkese kolay gelsin.

> 1 <
Copyright © 2004-2022 SQL: 1.043 saniye - Sorgu: 63 - Ortalama: 0.01655 saniye