04.07.2008 12:24    

emine8621
çizimin metre karesini nasıl bulurum

kendim buldum cevabı bilmeyenler varsa diye yazayım "area" diye bir komutla hesaplanıyormuş

ehya (04.07.2008 12:59 GMT)

04.07.2008 12:59    

ehya
en iyi hesaplama yöntemi alanı hesaplanacak bölgeye pline çizin. Daha sonra "Area" komutunu çalıştırıp "Object" alt komutunu yazın. Daha sonra pline'ı seçin. Alanını verecektir.
Çizdiğiniz birim cm ise, verilecek değerden alanınızı hesaplamak için
Örneğin sonucu aşağıdaki gibi olsun.

Area = 42727.72, Perimeter = 828.65

Burada area kısmındaki sayıda .(nokta) dan itibaren sola doğru dört basamak sayıp alanınızı bulun.

Sonuç : 4.27 m2



Not : Tüm üye arkadaşlar, konu açarken lütfen konu ile alakalı başlık kullanın. Arama yapacak arkadaşlar örneğin bu konu için konu ile alakalı anahtar kelime yazarak arama yapacağını düşünün. "çok acil" "yardım" "sorum var" gibi cümleler ile konu alakasız konu başlıkları kullanmayın.

07.07.2008 14:24    

Sessiz Kabus
en güzeli cad'ın pr komutu ile açılan sağ tarafta güzel bir ekranı var. Burda objenin her türlü detayını söylüyo. kapalı olan layerlardan oluşmuş yamuğun, karenin, dikdötrgenin,üçgenin,dairenin de tüm bilgilerini veriyo...
örneğin bir yayın uzunluğunu bulmak için yaya tıklayıp pr den detaylarını bulabiliriz. :)

08.02.2010 22:42    

rasvah
autocad e başlayalı bir hafta oldu sitenizden çok şey öğreniyorum teşekkürler gerçekten:)
haritacıyım; bana lazım olan parsellerin alan hesabı..
sanırım kapalı şekli seçip pr yazıp space e bastıktan sonra solda geometry kısmında alan yazıyor.. kullandığım autocad 2008...

09.02.2010 00:40    

ProhibiT
Çizerken cm. birimini kullandıysanız ve Alanı m2 biriminde almak istiyorsanız;
Önce "Area" komutunu çalıştırıp, obje seçin ya da noktalar serisi seçerek komutu tamamlayın.
Sonra aşağıdaki Fonksiyonu (NaLan) çalıştırın, hesaplanan alan m2 biriminde gösterdiğiniz yere yazılacaktır...
Kod:

(defun c:NaLan ()
  (command "undo" "group")
  (setvar "cmdecho" 0)
  (if (= tx nil) (setq btx (* (getvar "dimscale") (getvar "dimtxt"))))
  (setq aln (strcat (rtos (/ (getvar "area") 10000) 2 2) " m²"))
  (setq tx (getreal (strcat "\nYazi yuksekligi <" (rtos btx) "> : ")))
  (if (= tx nil) (setq tx btx))
  (setq pp (getpoint "\nAlanın yazılacağı yeri seçiniz : "))
  (entmake (list (cons 0 "TEXT") (cons 8 "Koordinat") (cons 40 tx) (cons 1 aln) (cons 50 0) (cons 10 pp)))
  (command "undo" "e")
  (prin1)
)

Farklı birimler kullanıyorsanız, benim 10000 (10000 cm2=1 m2) olarak kullandığım sayıyı değiştirerek kendi birim sisteminize uyarlayabilirsiniz.

Kolay Gelsin...

09.02.2010 10:39    

HIPHOP
yine siteden indirmiş olduğum başka bir lisp var bu konu hakkında.



(defun m2_br_sec ()
(if (= cizim_birim nil)
(progn
(initget 1 "Metre Cm")
(setq cizim_birim (getkword "
Çizim Birimini seçiniz [Metre / Cm]:")))))
(defun m2_stil ()
(setq m2_stil_ara (tblsearch "style" "m2"))
(if (= m2_stil_ara nil)
(progn
(setq m2_yaz_yuk 12)
(setq m2_yaz_y (getdist (strcat "
Yazı Yüksekliği:< " (rtos m2_yaz_yuk) ">:")))
(if (= m2_yaz_y nil)
(setq m2_yaz_y m2_yaz_yuk))
(setq m2_yaz_yuk m2_yaz_y)
(command "style" "m2" "arial.ttf" m2_yaz_yuk "0.8" "" "" ""))))
(defun c:m2 ()
(setvar "modemacro" "Archme Design 2005 ©")
(setvar "cmdecho" 0)
(m2_br_sec)
(if (= cizim_birim "Metre")
(setq m2_bol 10000)
(setq m2_bol 10000))
(setq m2_secim (ssget '((-4 . "<OR")
(0 . "LWPOLYLINE")
(0 . "POLYLINE")
(0 . "CIRCLE")
(0 . "ELLIPSE")
(0 . "SPLINE")
(0 . "REGION")
(0 . "3DSOLID")
(-4 . "OR>"))))
(if (= m2_secim nil)
(progn
(princ))
(progn
(setq m2_secim_say (sslength m2_secim))
(setq m2_c 0)
(setq m2_toplam 0)
(while (< m2_c m2_secim_say)
(setq m2_secim_tek (ssname m2_secim m2_c))
(command "area" "e" m2_secim_tek)
(setq m2_tek_alan (/ (getvar "area") m2_bol))
(setq m2_toplam (+ m2_toplam m2_tek_alan))
(setq m2_c (+ m2_c 1)))
(m2_stil)
(setq m2_aciklama (getstring t "
Yazılacak metni yazınız:"))
(setq m2_yer (getpoint "
Yer Gösterin:"))
(if (= m2_yer nil)
(progn
(princ "
Yer gösterilmediği için komut bitirildi !!!..."))
(progn
(setvar "textstyle" "m2")
(command "text" m2_yer "0" m2_aciklama)
(command "text" "" (strcat (rtos m2_toplam 2 2) " m²"))
))))(princ))

09.02.2010 17:40    

ProhibiT
Merhaba,

Alanlarla ilgili olarak farklı bir yöntemden bahsetmek istiyorum.

- FIELDDISPLAY değerini 0 (sıfır), FIELDEVAL sistem değişkeninin değerini 31 olarak girin.
- AutoCAD komut satırından "FieLd" komutunu girin.
- Açılan Diyalog kutusunda, Field Names bölümünden "Object" seçin
- "Object Type" bölümünün yanındaki seçim ikonuna tıklayıp, bir obje (mesela bir polyline) seçin.
- "Property" bölümünde "Area" seçin.
- "Additional Format" butonuna tıklayıp,
- "Conversion Factor" bölümüne 0.0001 girin (cm. birimindeki çizimde m² biriminde alan değeri için)
- "Suffix" bölümüne " m²" girin. (yukarıdaki birim sistemleri için)
- OK butonlarına tıklayarak sırasıyla her iki diyalog kutusunu da kapattığınızda, Alan'ın yazılacağı yeri seçin.

Field komutuyla Area değerine bağlantı kurduğunuz PoLyLine objesi bir şekilde edit edilirse, PoLyLine objesinin alanı değiştirilirse, ilk regen işleminde yazdırdığınız alan değeri kendiliğinden güncellenecektir.

Herhangi bir Text komutu aktif iken ctrl+MouseSağTuş girdiğinizde açılan menüden "Insert Field" seçerek te yazdığınız tex'in değerini herhangi bir objenin, bir değerine bağlayabilirsiniz. Bahsedilen işlemi, Attdef komutuyla Attribute define ederken de kullanabilir, Attribute Value olarak Field kullanabilirsiniz.
FieldEval değeriniz 31 ise her regen işleminde Field değerleri güncellenecektir.
FieldDisplay değeriniz 1 ise Field değerini gösteren MText dolgulu, 0 ise dolgusuz olarak gösterilecektir.

Kolay Gelsin...

10.02.2010 09:38    

HIPHOP
Alıntı
ProhibiT :
Merhaba,

Alanlarla ilgili olarak farklı bir yöntemden bahsetmek istiyorum.

- FIELDDISPLAY değerini 0 (sıfır), FIELDEVAL sistem değişkeninin değerini 31 olarak girin.
- AutoCAD komut satırından "FieLd" komutunu girin.
- Açılan Diyalog kutusunda, Field Names bölümünden "Object" seçin
- "Object Type" bölümünün yanındaki seçim ikonuna tıklayıp, bir obje (mesela bir polyline) seçin.
- "Property" bölümünde "Area" seçin.
- "Additional Format" butonuna tıklayıp,
- "Conversion Factor" bölümüne 0.0001 girin (cm. birimindeki çizimde m² biriminde alan değeri için)
- "Suffix" bölümüne " m²" girin. (yukarıdaki birim sistemleri için)
- OK butonlarına tıklayarak sırasıyla her iki diyalog kutusunu da kapattığınızda, Alan'ın yazılacağı yeri seçin.

Field komutuyla Area değerine bağlantı kurduğunuz PoLyLine objesi bir şekilde edit edilirse, PoLyLine objesinin alanı değiştirilirse, ilk regen işleminde yazdırdığınız alan değeri kendiliğinden güncellenecektir.

Herhangi bir Text komutu aktif iken ctrl+MouseSağTuş girdiğinizde açılan menüden "Insert Field" seçerek te yazdığınız tex'in değerini herhangi bir objenin, bir değerine bağlayabilirsiniz. Bahsedilen işlemi, Attdef komutuyla Attribute define ederken de kullanabilir, Attribute Value olarak Field kullanabilirsiniz.
FieldEval değeriniz 31 ise her regen işleminde Field değerleri güncellenecektir.
FieldDisplay değeriniz 1 ise Field değerini gösteren MText dolgulu, 0 ise dolgusuz olarak gösterilecektir.

Kolay Gelsin...




bu çok faydalı bir bilgiymiş. buna şuana kadar rastlamam da enteresan.... yalnız. noktadan sonraki sıfırlar çok fazla. acaba bunun ayarı da mümkünmüdür?

bunun alan hesaplamaları dışında başka hangi amaçlarla kullanabileceği hakkında da bilgi verebilirmisiniz?

10.02.2010 11:14    

ProhibiT
LUPREC (Lineer Unit Precission) değişkenini kaç basamak ayarlarsanız ondalık noktasından sonra o kadar gösterir. Luprec i değiştirdikten sonra regen etmeniz yeterli, mevcut Field'lar yeni luprec değerinize göre uyarlanırlar...

Alan hesaplamaları dışında, ilk aklıma gelen çizgi uzunlukları (Line Length) olarak kullanılabilir.
Mevcut bir çizginin Uzunluğunu Field'a bağlarsanız, çizgi edit edilip boyu değiştirildiğinde, yazdığımız değer de değişecektir. Bir başka örnek; Object Type'ı Date'e bağlarsanız, Çizim içine yazacağınız tarih otomatik güncellenecektir. (dikkatinizi çekmek isterim, Date'in güncellenmesi konusunda biraz farklı bir prosedür var)

Field Dialog Box tan takip ederseniz, Object Type gurubuna bir bakın, seçilen Obje tipine göre Epeyce zengin bir Property seçeneği var, hepsini burada tek tek sıralamak çok uzun olur. Dynamic Blocklarda bazı değerleri Field'lara bağlayabilirsiniz. Gene örnek olarak, Object olarak bir Point seçip, Property olarak position seçerseniz. Point objesinin x ve y değerleri yazılacaktır. Söz konusu Point objesinin yeri değiştiğinde de bu x ve y değerleri otomatik güncellenecektir.

Yeri gelmişken ehya hocamın da kulaklarını çınlatmak isterim :)
Hocam Kotlarla ilgili konuştuğumuz bir konu vardı, bu field kavramı orada da kullanılabilir mi?
Bu konuyla ilgili olarak Association List'teki (102 . "{ACAD_XDICTIONARY") (360 . <Entity name: 7ffffb058c0>) (102 . "}") kısmına dikkatinizi çekmek isterim. Yani bir Entity'nin Assoc listi içinde, başka bir Entity Name'e referans verilebiliyor...

Kesit ve cephelere kot veren Lisplerde, Defpoints Layer'ında (Dimension komutunun yarattığı Layer) Kot Block'u içinde bir Point koydursak, ve Kot değerini attribute olarak bu point objesinin "Position" değerine Field ile bağlasak... Verdiğimiz kotlar çizim edit edildikçe kendiliğinden güncellenecektir :) Şu anda aklıma geldi, sesli (yani yazılı) düşünüyorum...

Kolay Gelsin.

Düzenleme: Ondalık basamak sayısını belirlemek için, Field dialog box'ta sağ taraftaki Format bölümünün altındaki "Precission" u kullanabilirsiniz. Bu değeri "Current Precission" olarak bırakırsanız Luprec sistem değişkeninin değeri alınacaktır.

ProhibiT (24.02.2010 23:19 GMT)

18.06.2010 12:52    

aslanv
Prohibit hocam ve tüm grup üyelerine merhaba. Forumda araştırmalarım sonucunda soracağım sorunun en uygun yerinin burası olduğuna karar verdim. Bu mahal m² lerini planlarda yazarken field özelliğini çok kullanıyorum. Ancak bazen başka bir yere projeyi mail attığımızda bağlı olan polylineları sildiklerinde m² ler yok oluyor haliyle. Benim sorum işte tam bu noktada. Bu bağladığıız field li alanları tek bir lisp ile text haline getirebilir miyiz. Bağdan koparıp o haliyle mevcut text yazabilir mi. Aşağıdaki linkte örnek bir doya gönderiyorum. Yardımcı olabilirseniz sevinirim.

admin (30.11.2017 16:02 GMT)

18.06.2010 16:02    

ProhibiT
Merhaba aslanv :)

Linkini verdiğiniz dosyaya henüz bakmadım. İlk aklıma gelen; Field kullandığımız zaman, Alanları MText türü objelerle yazıyor. Bu MText objelerini Explode ederek Text objelerine çevirirsek bağlantılı olduğu PolyLine objeleri ile ilişkisini koparmış oluruz.

Bu yolla işinizi görmek zor ve uzun geliyorsa...
Mantık olarak Filed bağlantısı, Polyline ve MText objesinde assoc 330 ile tanımlanmış Object Name bağlantısını koparmak gerekiyor. Yani PolyLine Objesinde de, Field ile yaratılan MText objesinde de assoc 330 değeri aynı obje ismine sahiptir. Aralarındaki akrabalık ilişkisi bu şekilde tanımlıdır.

Bu noktada 3 yol var;
1- Yukarıda yazdığım gibi Field ile yaratılan MText objelerini Eplode ederek Text objelerine çevirmek.
2- Field ile yaratılmış Mtext objelerini bulup explode eden bir AutoLisp fonksiyon yazmak.
3- Gene bir AutoLisp fonksiyon yazarak, PolyLine objelerindeki assoc 330'ları yok ettikten sonra, Field ile yaratılmış MText objelerindeki assoc 102 ile başlayan (102 . "{ACAD_XDICTIONARY") (360 . <Entity name: xxxxxxxxxxx>) (102 . "}") bölümü yok ettikten sonra assoc 330 ile anahtarlanmış bölümü yok etmek.

Bahsettiğim 2. ve 3. yollar görüldüğü gibi bir AutoLisp fonksiyon yazmayı gerektiriyor.
Siz bir bakın deneyin, fonksiyon yazmak gerekiyorsa bir el atacak bulunur :)

Selamlar, Sevgiler, Herkese Kolay Gelsin...

Düzenleme...
Gönderdiğiniz dosyayı inceledim. Mahal adı ve Alan'ları BLock içinde Attribute yapmışsınız...
Bu durumda işlem daha kolaylaşıyor. Menulerden Express->Blocks->Explode Attributes to Text seçin. Ya da komut satırından Burst girin. Böylece hem Mahal Adı hemde Alan attribute'leriniz Text objelerine çevrilecek ve PoliLine objeleriyle ilişkileri kesilecektir...

Bu işlemi bütün çizime bir kerede uygulamak için;
AutoCAD komut satırından Select<┘(ssget "x" (list (cons 0 "INSERT") (cons 2 "MAHAL_TANIMLAMA")))<┘<┘ girin. Daha sonra Burst komutunu girip P<┘ girin bütün çiziminizdeki MAHAL_TANIMLAMA BLockları içindeki Attribute'ler Text objelerine dönüştürülecektir...
Kolay gelsin...

ProhibiT (18.06.2010 20:16 GMT)

21.06.2010 11:19    

aslanv
prohibit hocam merhaba. Burst komutunu denedim aslında istediğimi yapıyor ancak fileddan kurtardığı zaman attribute patlamış olarak geliyor. Bunun patlamadan yapılan hali var mıdır? Blok olarak kalsın ancak fielddaki değer text olarak yazsın, bağı kopsun gibi.

21.06.2010 17:28    

ProhibiT
Merhaba aslanv,

Kod:

(defun c:krtr ()
  (setq blcks (ssget "x" (list (cons 0 "INSERT") (cons 2 "MAHAL_TANIMLAMA"))) l (sslength blcks) m -1)
  (while (< (setq m (1+ m)) l)
    (setq blsob (ssname blcks m))
    (while (/= "SEQEND" (cdr (assoc 0 (entget (setq blsob (entnext blsob))))))
      (setq blsen (entget blsob))
      (if (= "ATTRIB" (cdr (assoc 0 blsen)))
        (if (= "MAHAL_M" (cdr (assoc 2 blsen)))
          (progn
            (setq blsen (subst "" (assoc 330 blsen) blsen))
            (entmod blsen) (entupd (cdr (assoc -1 blsen))))))))
  (prin1)
)

Fonksiyonu ile bu işin çözülmesi lazım aslında...
Ama, bir konu sıkıntı yaratıyor; Attribute isimlerinde MAHAL_M² kullanmışsınız.
(ssget "x" (list (cons 0 "INSERT") (cons 2 "MAHAL_TANIMLAMA"))) komutuyla adı MAHAL_TANIMLAMA olan BLockları seçiyoruz.
Sonra döngü içinde her BLock'u ele alıp (entnext blsob) ile block içinde alt objeleri (sub-objects) elden geçiriyoruz.
Attribute Name'i MAHAL_M² olan attribut'ü arıyoruz. İşte bu noktada Atrribute Name'i (assoc 2 blsen) ile alırken nil dönüyor.
Bunun bir çözümünü bulamadım, üzgünüm...

AutoLisp fonksiyon içinden Attribute Name'leri değiştirmek bile mümkün olmuyor, çünki değiştireceğimiz objeye ulaşamıyoruz.
Block tanımı içinde attribute adını MAHAL_M2 olarak düzeltseniz bile,
daha önceden insert edilmiş Block'lardaki Attribute tanımları aynı kalacağından çözüm olmayacaktır.

Burada yeri gelmişken,
AutoCAD ile çalışırken "non-drawing objects name" yani Layer adı, BLock adı, Style adı, Attribute adı
gibi ekranda doğrudan görünmeyen obje isimleri verirken asla Türkçe karakter ve Extended Charcter code (ascii kod numarası 122'den büyük karakterler, siz ascii 178 kullanmışsınız. Ki; Türkçe karakterler de bu guruba girer) kullanmamanızı tavsiye ederim...

Kolay gelsin.

23.06.2010 12:05    

aslanv
çok sağolun prohibit hocam. Yorumlarınızı yakından takip ediyorum. Bundan sonra dikkat etmeye çalışırım. saygılar

29.06.2010 13:22    

gkazanci
Merhabalar,

Alan hesabı ile ilgili lisplerle uğraşırken sizin bu yazdığınız yazıya ulaştım gerçekten çok başarılı bir kullanım biçimi sunacaktır.
Kolay kullanım için birşeyler yapmak mümkünmü bunu lisp haline getirmek mesela.
Seçtiğimiz polyline objesine baglanıp aynı zamanda gösterilen alana m2 yi yazması gibi. Şu an için bunu yapacak yeterli bilgiye sahip olmadığım için soruyorum bunu. Yardımcı olabilir yada yol gösterirseniz sevinirim.

Kolay gelsin.


Alıntı
ProhibiT :
Merhaba,

Alanlarla ilgili olarak farklı bir yöntemden bahsetmek istiyorum.

- FIELDDISPLAY değerini 0 (sıfır), FIELDEVAL sistem değişkeninin değerini 31 olarak girin.
- AutoCAD komut satırından "FieLd" komutunu girin.
- Açılan Diyalog kutusunda, Field Names bölümünden "Object" seçin
- "Object Type" bölümünün yanındaki seçim ikonuna tıklayıp, bir obje (mesela bir polyline) seçin.
- "Property" bölümünde "Area" seçin.
- "Additional Format" butonuna tıklayıp,
- "Conversion Factor" bölümüne 0.0001 girin (cm. birimindeki çizimde m² biriminde alan değeri için)
- "Suffix" bölümüne " m²" girin. (yukarıdaki birim sistemleri için)
- OK butonlarına tıklayarak sırasıyla her iki diyalog kutusunu da kapattığınızda, Alan'ın yazılacağı yeri seçin.

Field komutuyla Area değerine bağlantı kurduğunuz PoLyLine objesi bir şekilde edit edilirse, PoLyLine objesinin alanı değiştirilirse, ilk regen işleminde yazdırdığınız alan değeri kendiliğinden güncellenecektir.

Herhangi bir Text komutu aktif iken ctrl+MouseSağTuş girdiğinizde açılan menüden "Insert Field" seçerek te yazdığınız tex'in değerini herhangi bir objenin, bir değerine bağlayabilirsiniz. Bahsedilen işlemi, Attdef komutuyla Attribute define ederken de kullanabilir, Attribute Value olarak Field kullanabilirsiniz.
FieldEval değeriniz 31 ise her regen işleminde Field değerleri güncellenecektir.
FieldDisplay değeriniz 1 ise Field değerini gösteren MText dolgulu, 0 ise dolgusuz olarak gösterilecektir.

Kolay Gelsin...

07.07.2010 20:51    

ProhibiT
Merhaba gkazanci, Sorunuzu gecikerek şimdi gördüm ve cevap yazabiliyorum.
Bahsettiğim yöntemi, özellikle son bölümde bahsettiğim;

Herhangi bir Text komutu aktif iken ctrl+MouseSağTuş girdiğinizde açılan menüden "Insert Field" seçerek te yazdığınız tex'in değerini herhangi bir objenin, bir değerine bağlayabilirsiniz. Bahsedilen işlemi, Attdef komutuyla Attribute define ederken de kullanabilir, Attribute Value olarak Field kullanabilirsiniz.

Biraz kullanır alışırsanız siz de göreceksiniz ki; AutoLisp yazmaya gerek yok, yeterince pratik ve kullanışlı zaten :) Biraz kurcalayınca A:12.35 m2 şeklinde yazdırmanın ve otomatik olarak update etmenin çok kolay olduğunu da göreceksiniz.
Kolay gelsin...

06.01.2011 12:54    

halilozcakir
Hocam çok teşekkür ederiz sağolun.. Bir yıl geçmiş aradan yazılarınızı yeni görüyorum..dolgulu field yazısından bıkmıştım..
att blokla filed den alanı pline bağlamak çok güzel :),üzerinde çalışıp adım adım nasıl yapıldığını çok fazla işime yaramasada öğreneceğim,ve burada paylaşacağım.
yanlız att blokları iyice öğrenmem gerek önce...
_______
kurcalarken mtextleri texte patlatarak çeviriyoruz ya text i mtext e çevirmenin yolu ekspress menüde text sonra convert text to Mtext var oradan çevriliyor.

halilozcakir (06.01.2011 13:18 GMT)

06.01.2011 13:30    

ProhibiT
Aradan çok zaman da geçmemiş ama, bu konuyu okuyunca nostaljik geldi. NaLan ve krtr fonksiyonlarını unutup gitmişim. Cephe Kesit Kotu için ayaküstü yazdığım fikir uçuşmaları çok ilginç geldi. Tekrar o konuya mı dönsem :)

13.02.2011 16:46    

ademince55
Arkadaşlar options u en iyi şekilde nasıl ayarlarım 2008 de

15.02.2011 09:40    

halilozcakir
Her kullanıcıya göre farklılık arz eder options, mesela selection da pres and drag var onu çok beğeniyorum.
bu arada bir soru sormak istiyorum; field le ilgili,alan hesaplamak için fileld edilmiş bir yazıyı kopyalamak ve farklı bir pline bağlamak için edit edilebilir mi.?

Copyright © 2004-2022 SQL: 1.415 saniye - Sorgu: 98 - Ortalama: 0.01444 saniye