14.08.2011 16:11    

pitsss
Merhaba arkadaşlar;
benim d:bloklar klasörümün içinde blok1 isimli bir blok dwg dosyam var. ben bunu entmake fonksiyonu ile çizimimin içine aktarmak istiyorum. bunu nasıl yapabilirim acaba?

Kod:

(command ".-INSERT" "D:\\bloklar\\blok1.dwg" p1 1 "" 0)

yukarıdaki gibi kod ile istediğimi yapabiliyorum ama, entmake ile nasıl yapabilirim?
internetten bulduğum aşağıkai kod ile sanırım entmake fonksiyonu yapılıyor ama, bunu çizimime aktaramadım bi türlü? bunu nsıl sağlayabilirim acaba?
Kod:

(defun INSERT_BLOCK (
    BN     ;;block name
    PT     ;;insert point
    LY     ;;insert layer
    RT     ;;block rotation
    SX SY  ;;scale X and Y
    ATF    ;;attribute follow flag
    )
   (entmake (list
     '(0 . "INSERT")
      (cons 8 LY)
      (cons 2 BN)
      (cons 10 PT)
      (cons 50 RT)
      (cons 41 SX)
      (cons 42 SY)
      (cons 66 (if ATF 1 0))
   ))
)

14.08.2011 17:59    

ProhibiT
Burada verilen entmake fonksiyonu ile, drawing dosyasında mevcut bir block insert edilir.
Pek çok defalar anlatmaya çalıştığım gibi, bLock ve Insert objeleri tamamen farklıdır.

Entmake ile Insert objesinin oluşturulabilmesi için, Tables bölümünde bir BLock tanımı olması gerekir. Sizin örneğinizde olduğu gibi entmake ile başka bir drawing dosyasından Insert oluşturulamaz.

Bunun yapılabilmesi için, öncelikle BLock tanımının oluşturulması gerekir.
Kod:

(entmake (list (cons 0 "BLOCK") (cons 10 (list 0.0 0.0 0.0)) (cons 2 "BLock1")))
  (entmake (list (cons 0 "LINE") (cons 10 '(0.00 0.00 0.00)) (cons 11 '(-0.30 0.30 0.00))))
  (entmake (list (cons 0 "LINE") (cons 10 '(0.30 0.30 0.00)) (cons 11 '(0.00 0.00 0.00))))
  (entmake (list (cons 0 "ENDBLK")))

Örnek olarak 2 Line objesinden oluşan bir block tanımı verdim. block ve endblk arasında kalan bölümde istenilen sayıda obje (text veya attribute objeleri de buna dahil) oluşturulabilir.

bundan sonra oluşturulan block tanımından, entmake kullanarak ınsert objesi oluşturulur.
Kod:

(entmake (list (cons 0 "INSERT")
               (cons 2 "BLock1")
               (cons 10 (getpoint "\nInsertion Point: "))
               (cons 41 (getreal "\nX Scale Factor: "))
               (cons 42 (getreal "\nY Scale Factor: "))
               (cons 50 (/ (* pi (getreal "\nRotation Angle: ")) 180.0))))

Kolay gelsin.

14.08.2011 20:05    

pitsss
Prohibit hocam, çok teşekkür ederim. çok işime yaradı sağolun. Her zamanki gibi cevaplarınızla beni ihya ettiniz :)

Kod:

(entmake (list (cons 0 "INSERT")
               (cons 2 "BLock1")
               (cons 10 (getpoint "\nInsertion Point: "))
               (cons 41 (getreal "\nX Scale Factor: "))
               (cons 42 (getreal "\nY Scale Factor: "))
               (cons 50 (/ (* pi (getreal "\nRotation Angle: ")) 180.0))))

şu yukardaki yazdığınız kodu ben hep şu şekilde anlıyordum.
Kod:

(defun blok_gir ()
(entmake (list (cons 0 "INSERT")
               (cons 2 "BLock1")
               (cons 10 (getpoint "\nInsertion Point: "))
               (cons 41 (getreal "\nX Scale Factor: "))
               (cons 42 (getreal "\nY Scale Factor: "))
               (cons 50 (/ (* pi (getreal "\nRotation Angle: ")) 180.0))))
)

kırmızı ile birlikte yazıp ondan sonra kullanmak istediğimizde
(blok_gir )
şeklinde yazarak kullanacağız gibi geliyordu. ama direkte kullanabiliyormuşuz.
Ancak diyelim ki biz aşağıdaki line_ciz örneğinde olduğu gibi kullanmak istedik, ozaman line_ciz den sonra gelen sıralamada görüldüğü gibi (line_ciz lp1 lp2 "katman") lp1 ve lp2 noktalarını belirtip line çizilmiş oluyordu. aynı şekilde bu entmake ile yaptığımız ınsert komutunu nasıl bu şekilde yaparız, sıralaması nasıl olur acaba? sanırım çok karışık anlattım ama. umarım anlatabilmişimdir. Teşekkürler iyi çalışmalar :)


Kod:

(defun line_ciz (_bas _son _layer)
  (entmake (list (cons 0 "line")
(cons 8 _layer)
(cons 10 _bas)
(cons 11 _son)
   )
  )
)

ProhibiT (18.08.2011 06:14 GMT)

15.08.2011 06:26    

ProhibiT
Kod:

(entmake (list (cons 0 "BLOCK") (cons 10 (list 0.0 0.0 0.0)) (cons 2 "BLock1")))
(line_ciz lp1 lp2 katman ;;; katman string değil, string atanmış değişken olmalı. Aksi halde Layer'ın adı "Katman" olur.
;;; line-ciz fonksiyonu istenildiği kadar tekrar çağırılarak, istediğimiz sayıda Line objesini oluşturup,
(entmake (list (cons 0 "ENDBLK")))
;;; BLock tanımımızı ENDBLK ile bitiriyoruz

Bundan sonra; block_gir fonksiyonumuzu çalıştırabiliriz.

17.08.2011 20:41    

pitsss
Prohibit hocam, çok teşekkürler, biraz geç cevap verdim kusura bakma. iyi çalışmalar...

> 1 <
Copyright © 2004-2022 SQL: 0.948 saniye - Sorgu: 54 - Ortalama: 0.01755 saniye