1372826956:AAFe2Py65GSQkfGiRnXuOQ-eD9yXcwMv988

AutoLISP Kullanarak Çok Satırlı Yazıya “Multiline Text” Yeni Satır Ekleme

Sekil-01

Daha önce bir noktanın koordinatını etiketlemek için AutoLISP programı yaratmıştık. Bu program AutoCAD Civil 3D gibi ilave AutoCAD eklentileri kullanmayan direk AutoCAD kullanıcıları için çok faydalıydı.  FakatAutoLISP programınızda kılavuz “leader” yerine çok satırlı kılavuz “multileader” kullanmak isteyebilirsiniz.

Burada problem kılavuz “leader” tek satırlı yazı kullanırken çok satırlı kılavuz “multileader” çok satırlı yazı kullandığı için çıkmaktadır. Çok satırlı yazı multiline text” ile çalışırken, diğer bir satıra geçmek istediğimiz zaman, Enter tuşuna basarız. AutoLISP’te “” karakterlerinin Enter tuşuna basma anlamına geldiğini biliyorsunuz; fakat bu işe yaramayacaktır. Çünkü “” karakterlerini kullandığımız zaman, AutoCAD bunu komutu sonlandırmak istiyoruz olarak anlayacak; yeni satır eklemeyecektir.

Sekil-01

Bu sorunu çözmek için, yeni satır eklemek için, Enter tuşunun ANSI karakterini kullanmalıyız. Chr 10 değişkenimize yeni satır ekleyecektir.

Şimdi bunu bir örnek üzerinde inceleyelim. Bu karakteri (Chr 10 ) dizge değişkenimize ekleyeceğiz:

(setq ptcoordN (strcat “N=” y))
(setq ptcoordE (strcat “E=” x))
(setq ptcoordN (strcat ptcoordN (chr 10) ptcoordE))

Birinci satır x koordinatı değerini elde edip değerin önüne N= ön ekini eklemektedir.

İkinci satır y koordinatı değerini elde edip değerin önüne E= ön ekini eklemektedir.

 Üçüncü satır ise, ilk iki satırı birleştirmektedir. Bu AutoLISP kodu N koordinatı yazacak ve alt satıra geçip E koordinatını yazacaktır.

AutoLISP kodunun tamamlanmış hali aşağıdaki gibi olacaktır:
(defun c:label (/ p x y ptcoordN ptcoordE textloc oldprec)
(setq oldprec (getvar “LUPREC”))
(setvar “LUPREC” 4)
(while ; start while loop
(setq p (getpoint ”
ETİKETLENECEK NOKTAYI TIKLAYIN:”)) ; kullanıcıdan etiketlenecek noktayı ister ve o noktayı kaydeder.
(setq textloc (getpoint p ”
YAZINN YERİNİ TIKLAYIN:”)) ;kullanıcıdan yazının yerini tıklamasını ister.
(setq x (rtos (car p)))
(setq y (rtos (cadr p)))
(setq ptcoordN (strcat “N=” y))
(setq ptcoordE (strcat “E=” x))
(setq ptcoordN (strcat ptcoordN (chr 10) ptcoordE))
(command “mleader” p textloc ptcoordN) ;çok satırlı kılavuz “mleader” komutunu çalıştırır ve kullanıcıdan aldığı verileri kullanır.
(setvar “LUPREC” oldprec)
(princ)
)
)

Başka bir çözüm olup olmadığını ben bilmiyorum. Şayet siz biliyorsanız, lütfen burada paylaşın!

 

Hakkında Sertan Türkan

AutoCAD Beyni

Bunu da Kontrol edin

Revitte Plan Görünüşünün Derinliğini Ayarlama Hakkında

Revit’te bir modelin parçalarını kesme düzleminin altında görüntülemek için, Derinlik Kırpma “Depth Clipping“ parametresini kullanın. …

Bir cevap yazın

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Yardıma mı ihtiyacınız var? Chat with us
Bir görüşme başlatmak için lütfen önce gizlilik politikamızı kabul edin.