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
|
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.
|