18.01.2011 14:08    

civileng20
bir mahali polyline komutuyla çizip alanı ve çevresini area komutundan buluyorum.bu bulduğum alan ve çevre değerlerini mahalin istediğim herhangi bir yerine yapıştırabilirmiyim yardımcı olursanız sevinirim

18.01.2011 15:11    

ProhibiT
Kod:

(defun c:NaLan ()
  (command "undo" "group") (setvar "cmdecho" 0)
  (setq ob (car (entsel "\nAlanı ve Çevresi yazılacak objeyi seçiniz: ")))
  (command "_.area" "object" ob)
  (if (= tx nil) (setq btx (* (getvar "dimscale") (getvar "dimtxt"))))
  (setq aln (strcat (rtos (/ (getvar "area") 10000) 2 2) " m²")
        cvr (strcat (rtos (/ (getvar "perimeter") 100) 2 2) " m")
        tx (getreal (strcat "\nYazi yuksekligi <" (rtos btx) "> : ")))
  (if (= tx nil) (setq tx btx))
  (setq pa (getpoint "\nAlanın yazılacağı yeri seçiniz : ")
        pc (polar pa (* 1.5 pi) (* (1+ (/ 1 (sqrt 2))) tx)))
  (entmake (list (cons 0 "TEXT") (cons 40 tx) (cons 1 aln) (cons 50 0) (cons 10 pa)))
  (entmake (list (cons 0 "TEXT") (cons 40 tx) (cons 1 cvr) (cons 50 0) (cons 10 pc)))
  (command "undo" "e") (prin1)
)
verilen AutoLisp fonksiyonu nasıl yükleyip, nasıl kullanacağınızı bilmiyorsanız, sitede araştırıverin.
Fonksiyon'un komut adı:NaLan.
cm biriminde çizim yapıldığı kabul edilir, çevre m ve alan m2 biriminde yazdırılır.
Farklı birimler kullanıyorsanız, kod içinde görülen faktör sayılarını değiştiriverin...

Kolay gelsin.

05.02.2011 17:34    

civileng20
Teşekkürler ellerine sağlık. Ancak yazı boyutunu sabitleyebilirmiyiz yani sormasın kaç puntoyla yazılcağını 12 sabit olsun?

05.02.2011 18:08    

ProhibiT
(if (= tx nil) (setq btx (* (getvar "dimscale") (getvar "dimtxt"))))
satırını kaldırın
(cons 40 tx)
yazan yerlerde tx yerine istediğiniz yazı yüksekliğini yazın.

kolay gelsin.

05.02.2011 18:46    

civileng20
Çok teşekkür ederim

05.02.2011 20:16    

ProhibiT
Özür dilerim eksik yazmışım,

(if (= tx nil) (setq tx btx))
satırını da silmelisiniz.

(setq pa (getpoint "\nalanın yazılacağı yeri seçiniz : ")
pc (polar pa (* 1. 5 pi) (* (1+ (/ 1 (sqrt 2))) tx)))

satırında da tx yerine gene yazı yüksekliğini yazmalısınız. . .

06.02.2011 01:14    

admin
Text veya table içinde bulunan field objenin alanını veya çevresini otomatik olarak istediğiniz yere yazar. üstelik objenin şekli değiştiğinde regen yaptıktan sonra alan veya uzunluk bilgisini de günceller.

06.02.2011 11:21    

civileng20
Komutu giriyorum objeyi seçiyo fakat seçtikten sonra

"error: bad argument type: numberp:
nil"

hatasını veriyo dün çalışıyodu bugün çalışmıyo yardımcı olurmusunuz?

06.02.2011 12:49    

ProhibiT
Kod:

(defun c:nalan ()
  (command "undo" "group") (setvar "cmdecho" 0)
  (setq ob (car (entsel "\nalanı ve çevresi yazılacak objeyi seçiniz: ")))
  (command "_area" "object" ob)
  (setq aln (strcat (rtos (/ (getvar "area") 10000) 2 2) " m²")
        cvr (strcat (rtos (/ (getvar "perimeter") 100) 2 2) " m") tx  12)
  (setq pa (getpoint "\nalanın yazılacağı yeri seçiniz : ")
        pc (polar pa (* 1. 5 pi) (* (1+ (/ 1 (sqrt 2))) tx)))
  (entmake (list (cons 0 "text") (cons 40 tx) (cons 1 aln) (cons 50 0) (cons 10 pa)))
  (entmake (list (cons 0 "text") (cons 40 tx) (cons 1 cvr) (cons 50 0) (cons 10 pc)))
  (command "undo" "e")
  (prin1)
  )
bu fonksiyonu yükleyip tekrar deneyin. text height=12 olarak sabittir.
bu arada, sorunun geliş şeklinden ben autolisp fonksiyona yönlendirmiş bulundum sizi. field komutununu mutlaka deneyin. büyük ihtimalle daha çok işinize yarayacaktır. sitemizde gerekli detayları bulabilirsiniz. . .

kolay gelsin.

ProhibiT (07.02.2011 07:19 GMT)

06.02.2011 13:35    

civileng20
Teşekkür ederim komut çalışıyo ama alanla uzunluğu üstüste bindiriyo

07.02.2011 07:24    

ProhibiT
(setq pa (getpoint "\nalanın yazılacağı yeri seçiniz : ")
pc (polar pa (* 1. 5 pi) (* (1+ (/ 1 (sqrt 2))) tx)))

satırında işaretli yerdeki noktadan sonraki boşluğu silin. problemsiz çalışacaktır.

> 1 <
Copyright © 2004-2022 SQL: 1.472 saniye - Sorgu: 73 - Ortalama: 0.02017 saniye