25.03.2009 11:00    

internetturk
arkadaslar ekteki dwg dosyasında da göreceginiz üzere cizginin ortasına ücgen cizip tek bir cizgi haline getirecek bir lispe ihtiyacım var.
Notlar:
1.Tam ortasına cizmesine de gerek yok aslında. Ücgenin bir noktası cizginin ortasına gelse de yeterli.
2. En önemli not şu ücgen elimizde hazır yok lisp kendisi bir ücgen cizecek.


18899-cizgi ornek.rar

25.03.2009 12:03    

yazgunesi
Bu üçgenin ebatları yapısı konusunda bir ölçü standart varmı ? Yani eşitkenar üçgen mi olacak. Çizimden anladığım kadarıyla yandaki dikey çizgi ile üçgenin boyu aynı.

Çizilen obje en son kırmızı renkli polyline mi olsun ?

25.03.2009 12:42    

internetturk
cvp icin tskler
birlestirmeden sonra aynen kırmızı renkli olan gibi olacak.
Yalnız benim elimdeki cizgilerin ölcüleri cok farklı. Üçgen aynı boyutta olacak ama mevcut cizgiler farklı boylarda.
tskler.

25.03.2009 13:29    

yazgunesi
Aşağıdaki lisp istediğin işi farklı bir yöntemle yapıyor.. Bir bak bakalım nasıl olmuş ? uur8)

Çalışma mantığı :

1) Çizgi başlangıç ve bitiş noktalarını tek tek seç.
2) Obje seçimi istenecek seç yatay çizgiyi ve son olarak pedit için hepsini seç.
3) Osnaplar herzaman açık olmalıdır farzedildi..

Üçgenin çizilme mantığı :

Üçgenin yüksekliği = Yan kenar dikey çizgi boyu.
Üçgenin sol veya sağ alt köşenin üçgen merkezine olan yatay mesafesi = Yan kenar dikey çizgi boyu.

Kod:

(defun dtr (x)
  (* pi (/ x 180.0 ))
)
(princ)

;    DTR fonksiyonunu tanıttık ve programa başlayalım..         

(defun c:czucg ()
 
(setq oldCmdecho (getvar "CMDECHO"))

(setvar "CMDECHO" 0)  ;  Şimdi  komut ekosunu kapatalım
 
(prompt "\n Soldan >> Sağ istikametine çalış !!!") ; kullanıcıya bilgi verelim ilk önce
(prompt "\n Aşağıdan >> yukarıya çalış !!!") ; kullanıcıya bilgi verelim ilk önce
 
(setq  yr1 (getpoint "\n Yatay çizgi başlangıç noktasi:"))
(setq  yr2 (getpoint "\n Yatay çizgi bitiş noktasi:"))
 
(setq  yan1 (getpoint "\n Dikey çizgi başlangıç noktasi:"))
(setq  yan2 (getpoint "\n Dikey çizgi bitiş noktasi:")) 

(setq cz_boy (distance yr1 yr2 )) ; çizginin boyunu hesapladık
 
(setq cz_hsp (/ cz_boy 2)) ; boyu 2 ye böldük yatay çizgi orta nokta için
 
(setq yan_yks (distance yan1 yan2 )) ; Yatay çizginin yüksekliğini hesapla
 
(setq mrk1 (polar yr1(dtr 180.0)(- cz_hsp))) ; yatay çizgi merkez noktasını bul
 
(setq mrkust (list(car mrk1) (+ (cadr mrk1) yan_yks))) ; orta nokta yükseklik
   
(setq mrk_sag_yatay (polar mrk1(dtr 180.0)(- yan_yks))) ; üçgenin sağ alt noktası
 
(setq mrk_sol_yatay (polar mrk1(dtr -180.0)(+ yan_yks))) ; üçgenin sol alt noktası
 
; Seçim seti oluştur ve objeyi sildir.. (ssget kullanımı)

(prompt "\n  Yatay Çizgiyi Seç Değiştirmek İçin !")

(setq secim1 (ssget))  ; seçim seti oluşturduk ve objeyi seçtirdik

(command "_.erase" secim1 "")     ; Seçilen objeyi sildirelim ..

; Seçim seti oluştur ve objeyi sildik ..
 
(command "line"  yr1 mrk_sol_yatay mrkust mrk_sag_yatay yr2 "" )  ; üçgen ve çizgileri çizelim
 
(prompt " Pedit Yapılacak Tüm Objeleri Seç !") ; pedit için kullanıcıyı uyar ..
 
(setq pdt_objler (ssget))  ; pedit için seçim seti oluşturduk ve objeyi seçtirdik

(command "_pedit"  pdt_objler  "_y"   "_j"  "_p"  "" "")  ; en son çizdiklerimizi pedit yapalım
(command "change" "l" "" "p" "lt" "" "c" "1" "") ; değiştir rengini en son oluşturulan objenin
 
(command "-color" "Bylayer"); bylayer rengine geri dön ..

(setvar "CMDECHO" oldCmdecho)  ; sistem değişk. geri yükle
(princ)
)

(Princ "Lisp'i çalıştırmak için >> czucg << yazınız!")



Rengi değiştirmek istersen eğer aşağıdaki satırda ;

(command "change" "l" "" "p" "lt" "" "c" "1" "") >> kırmızı renkli rakamı aşağıdaki listeye göre değiştir özel isteğe göre..

Renk kodu ayarları :

; 1 = kırmızı
; 2 = sarı
; 3 = yeşil
; 4 = açık mavi
; 5 = mavi
; 6 = pembe
; 7 = beyaz
; 8 = color8 (koyu kahverengi)
; 9 = color9 (açık kahverengi)

yazgunesi (26.03.2009 08:05 GMT)

25.03.2009 13:48    

internetturk
kullanımı biraz anlatabilir misiniz?
elinize sağlık

25.03.2009 14:04    

yazgunesi
İlk önce çizim objesini patlat bir bütün ise eğer.. Osnap modları da açık olsun.



Command: _appload ucg_cizgi.lsp successfully loaded.

Lispimizi yükledik bildirim mesajı geldi.

Command: Lisp'i çalıştırmak için >> czucg << yazınız!

Komut isminin czciz olduğunu öğrendik ..

Command:
Command: czucg

Klavyeden czucg yazıp enter yaptık..

Soldan >> Sağ istikametine çalış !!! Aşağıdan >> yukarıya çalış !!!
Çizgilerin başlangıç ve bitiş noktalarını seçeceğiz kullanıcıyı uyaralım mesaj ile..

Yatay çizgi başlangıç noktasi: >> yatay çizgi baslangıç noktasını seç ( sol köşe)
Yatay çizgi bitiş noktasi: >> yatay çizgi bitiş oktasını seç (sağ köşe)
Dikey çizgi başlangıç noktasi: >> dikey çizgi başlangıç noktasını seç (sol alt köşe)
Dikey çizgi bitiş noktasi: >> dikey çizgi bitiş noktasını seç (sol üst köşe)
Yatay Çizgiyi Seç Değiştirmek İçin ! >> yatay çizgiyi seç tıkla üstüne..
Select objects: 1 found
Select objects:
Pedit Yapılacak Tüm Objeleri Seç ! >> şimdi çizim yapıldı en son tüm çizgileri seç pedit yapılması için..
Select objects: Specify opposite corner: 6 found
Select objects:
Command: *Cancel* >> işlem bitmiştir...
Command: *Cancel*

25.03.2009 14:09    

internetturk
çok tşkler bir noktayı tekrar sormak istiyorum. Dikey çizgileri lispten çıkartmak istersek ne yapmamız lazım?
veya dikey çizgileri de lisp çizebilir mi? üçgen ile aynı yükseklikte olacak şekilde yani.
tekrar elinize sağlık

25.03.2009 14:22    

yazgunesi
Dikey çizgi çizmeden de çalışan lisp olur. Dikey çizgini boyunu sorup ta hepsini çizen de olur. Yatay ve dikey çizginin boylarını sorup ta otomatik çizen lisp te olur..Yatay çizginin 10/2 si kadar yada tanımlanmış özel ölçüye göre dikey çizgiyle birlikte de çizen lisp olur... Sen seçenekleri söylede program hazır olsun.. :D

25.03.2009 14:27    

internetturk
Ok o zaman şöyle yapsak; düz çizgiye dikey çizgileri ve üçgeni lisp atsın. Üçgen ve dikey çizgi yüksekliği 50 mm olsun.

25.03.2009 22:02    

yazgunesi
İstediğiniz olacak ama biraz zamana ihtiyaç var. Çok seçenekli lisp paketi hazırlayacağım.. Böylece her şarta uygun olacak şekilde çalışacak. Tıpkı rondela ve kg lispi gibi çok seçenekli, farklı işlevleri olan lisp paketi...

Bu işi geliştirelim derim arkadaş. Benzer başka örnekler de ver bana. Mesala ücgen üste yerine altta olsun mu? Ücgen simetrik olsun mu? Üçgen yerine kutu çizilsin mi? Toplam çizgi boyunu hesaplayıp yazdırayım mı ekrana ?



; *****************************************************************************


Kod:

; yatay ve dikey çizginin boyuna göre
; kullanıcıya ölçü sorarak çizim yapıyor ...
; ücgen çizimi otomatik ilk lisp gibi..


(defun dtr (x)
  (* pi (/ x 180.0 ))
)
(princ)

;    DTR fonksiyonunu tanıttık ve programa başlayalım..         

(defun c:czgir ()

(setq oldCmdecho (getvar "CMDECHO"))
(setq oldsnap (getvar "OSMODE"))

(setvar "CMDECHO" 0) 

(setq  cz_boy (getreal "\n Yatay çizginin boyu ne kadar ? :"))
(setq  yan_yks (getreal "\n Dikey çizginin boyu ne kadar ? :"))
(setq  yr1 (getpoint "\n Çizim için ekrana TıKLa ?! :"))

(setq cz_hsp (/ cz_boy 2)) ; boyu 2 ye böldük yatay çizgi orta nokta için

(setq mrk1 (polar yr1(dtr 180.0)(- cz_hsp))) ; yatay çizgi merkez noktasını bul

(setq mrkust (list(car mrk1) (+ (cadr mrk1) yan_yks))) ; orta nokta yükseklik
   
(setq mrk_sag_yatay (polar mrk1(dtr 180.0)(- yan_yks))) ; üçgenin sağ alt noktası

(setq mrk_sol_yatay (polar mrk1(dtr -180.0)(+ yan_yks))) ; üçgenin sol alt noktası

(setq yr2 (polar yr1(dtr 180.0)(- cz_boy))) ; yatay çizginin bitiş noktası

(setq yt1 (polar yr1(dtr 90.0)(+ yan_yks))) ; soldaki dikay çizginin bitiş noktası
 
(setq yt2 (polar yr2(dtr 90.0)(+ yan_yks))) ; sağdaki dikay çizginin bitiş noktası 

(setvar "OSMODE" 0)
 
(command "line"  yr1 mrk_sol_yatay mrkust mrk_sag_yatay yr2 "" )  ; üçgen ve çizgileri çizelim
(command "line"  yr1 yt1 "" )   ; dik kenar sol tarafta olanı çizdirdik
(command "line"  yr2 yt2 "" )   ; dik kenar sağ tarafta olanı çizdirdik

(prompt "\n >>>>>>   Pedit Yapılacak Tüm Objeleri Seç !  <<<<<<<<  ") ; pedit için kullanıcıyı uyar ..

(setq pdt_objler (ssget))  ; pedit için seçim seti oluşturduk ve objeyi seçtirdik

(command "_pedit"  pdt_objler  "_y"   "_j"  "_p"  "" "")  ; en son çizdiklerimizi pedit yapalım
(command "change" "l" "" "p" "lt" "" "c" "1" "") ; en son oluşturulan objenin rengini değiştirdik

(command "-color" "Bylayer"); bylayer rengine geri dön ..

(setvar "CMDECHO" oldCmdecho)  ; sistem değişk. geri yükle
(setvar "OSMODE" oldsnap)   ; osnap modunu eri çağır.
(princ)
)

(Princ "Lisp'i çalıştırmak için >> czgir << yazınız!")




Kod:

; dik kenar yüksekliğini soruyor..
; yatay çizgi başlangıç ve bitiş noktalarını seçtiriyor...
; üçgen çizimi standart..

(defun dtr (x)
  (* pi (/ x 180.0 ))
)
(princ)

;    DTR fonksiyonunu tanıttık ve programa başlayalım..         

(defun c:czyatay ()

(setq oldCmdecho (getvar "CMDECHO"))
(setvar "CMDECHO" 0)

(prompt " >>>>>   UYARI !!! Komut Satırını Takip et !  <<<<<< ") ; kullanıcıya bilgi verelim ilk önce


(setq  yr1 (getpoint "\n Yatay çizgi başlangıç noktasi:"))
(setq  yr2 (getpoint "\n Yatay çizgi bitiş noktasi:"))
(setq yan_yks (getreal "\n Yan kenar yüksekliği ne kadar ?:"))
       
(setq cz_boy (distance yr1 yr2 )) ; çizginin boyunu hesapladık

(setq cz_hsp (/ cz_boy 2)) ; boyu 2 ye böldük yatay çizgi orta nokta için

(setq mrk1 (polar yr1(dtr 180.0)(- cz_hsp))) ; yatay çizgi merkez noktasını bul

(setq mrkust (list(car mrk1) (+ (cadr mrk1) yan_yks))) ; orta nokta yükseklik
   
(setq mrk_sag_yatay (polar mrk1(dtr 180.0)(- yan_yks))) ; üçgenin sağ alt noktası

(setq mrk_sol_yatay (polar mrk1(dtr -180.0)(+ yan_yks))) ; üçgenin sol alt noktası

; Seçim seti oluştur ve objeyi sildir.. (ssget kullanımı)

(prompt " Yatay Çizgiyi Seç Değiştirmek İçin !")

(setq secim1 (ssget))  ; seçim seti oluşturduk ve objeyi seçtirdik

(command "_.erase" secim1 "")     ; Seçilen objeyi sildirelim ..

; Seçim seti oluştur ve objeyi sildik ..

(command "line"  yr1 mrk_sol_yatay mrkust mrk_sag_yatay yr2 "" )  ; üçgen ve çizgileri çizelim

(prompt " Pedit Yapılacak Tüm Objeleri Seç !") ; pedit için kullanıcıyı uyar ..

(setq pdt_objler (ssget))  ; pedit için seçim seti oluşturduk ve objeyi seçtirdik

(command "_pedit"  pdt_objler  "_y"   "_j"  "_p"  "" "")  ; en son çizdiklerimizi pedit yapalım
(command "change" "l" "" "p" "lt" "" "c" "1" "") ; değiştir rengini en son oluşturulan objenin

(command "-color" "Bylayer"); bylayer rengine geri dön ..

(setvar "CMDECHO" oldCmdecho)  ; sistem değişk. geri yükle
(princ)
)

(Princ "Lisp'i çalıştırmak için >> czyatay << yazınız!")



>> internetturk

Yukarıda 2 adet yeni lisp var.. Daha öncekini de sayarsak toplam 3 adet lisp.Bu lisplerin hepsini elden geçirdim. Bu sebeple kodları yeniden koplaya kullanmak için.Bu arada eğer tek bir dosya içine koyacaksen eğer DTR fonksiyonu copy paste sonucu tekrar edecektir.Bu kodlamayı sadece 1 adet olarak bırak..

Kastetiğim kodlama satırı :

Kod:

(defun dtr (x)
  (* pi (/ x 180.0 ))
)
(princ)


Bu autolisp kodlarını nasıl kullanacağınızı bilmiyorsanız eğer aşağıdaki linkten;
AutoLISP > Konu Anlatımları > Lisp Dosyalarının oluşturulması ve Yüklenmesi
konusunu incelemenizi öneririm...

yazgunesi (26.03.2009 19:12 GMT)

28.03.2009 10:42    

internetturk
dostum çok tşk ederim. 2. cevabındaki ilk lisp bence güzel.Hatta yanlardaki dikey çizgileri iptal edebiliriz.
Lisp benden sadece yatay çizginin uclarını seçmemi istedikten sonra standart üçgeni çizsin.Ama gördüğüm kadarıyla çizdikten sonra yatay çizgi ile üçgeni tek bir polyline haline dönüştürmüyor.
tekrar ellerine sağlık.

30.03.2009 08:39    

yazgunesi
Kod:

; yatay çizgi başlangıç ve bitiş noktalarını seçtiriyor..
; üçgen çizimi standart, ölçü soruyor..
; pline ile çiziyor pedit gerek yok artık..

(defun dtr (x)
  (* pi (/ x 180.0 ))
)
(princ)

;  DTR fonksiyonunu tanıttık ve programa başlayalım..         

(defun c:cz9 ()

(setq oldCmdecho (getvar "CMDECHO"))
(setvar "CMDECHO" 0)

(prompt " >>> UYARI ! Komut Satırını Takip et ! <<< ") ; kullanıcıya bilgi verelim

(setq  yr1 (getpoint "\n Yatay çizgi başlangıç noktasi:"))
(setq  yr2 (getpoint "\n Yatay çizgi bitiş noktasi:"))
(setq yan_yks (getreal "\n Üçgen yüksekliği ne kadar ?:"))
       
(setq cz_boy (distance yr1 yr2 )) ; çizginin boyunu hesapladık

(setq cz_hsp (/ cz_boy 2)) ; boyu 2 ye böldük yatay çizgi orta nokta için

(setq mrk1 (polar yr1(dtr 180.0)(- cz_hsp))) ; yatay çizgi merkez noktasını bul

(setq mrkust (list(car mrk1) (+ (cadr mrk1) yan_yks))) ; orta nokta yükseklik
   
(setq mrk_sag_yatay (polar mrk1(dtr 180.0)(- yan_yks))) ; üçgenin sağ alt noktası

(setq mrk_sol_yatay (polar mrk1(dtr -180.0)(+ yan_yks))) ; üçgenin sol alt noktası

; Seçim seti oluştur ve objeyi sildir.. (ssget kullanımı)

(prompt "\n Yatay Çizgiyi Seç Silmek İçin !")
 
(setq secim1 (ssget))   ; seçim seti oluşturduk ve objeyi seçtirdik

(command "erase" secim1 "") ; Seçilen objeyi sildirelim ..

(command "_pline"  yr1 mrk_sol_yatay mrkust mrk_sag_yatay yr2 "" )  ; üçgen ve çizgileri çizelim
(command "change" "l" "" "p" "lt" "" "c" "1" "") ; en son çizilen objenin trngini değiştirelim
 
(command "-color" "Bylayer"); bylayer rengine geri dön ..

(setvar "CMDECHO" oldCmdecho)  ; sistem değişk. geri yükle
(princ)
)
(Princ "Lisp'i çalıştırmak için >> cz9 << yazınız!")


Komut ismini cz9 dedik ama istiyorsan değiştir kendine göre (defun c:cz9 () satırındaki yazıyı.

Kod:

; yatay çizgi başlangıç ve bitiş noktalarını seçtiriyor..
; üçgen çizimi standart, üçgen ölçüsü lisp içinde tanımlanmış
; pline ile çiziyor pedit gerek yok artık..

(defun dtr (x)
  (* pi (/ x 180.0 ))
)
(princ)

;  DTR fonksiyonunu tanıttık ve programa başlayalım..         

(defun c:cz30k ()

(setq oldCmdecho (getvar "CMDECHO"))
(setvar "CMDECHO" 0)

(prompt " >>> UYARI ! Komut Satırını Takip et ! <<< ") ; kullanıcıya bilgi verelim

(setq  yr1 (getpoint "\n Yatay çizgi başlangıç noktasi:"))
(setq  yr2 (getpoint "\n Yatay çizgi bitiş noktasi:"))
 
(setq yan_yks 30) ; üçgen yüksekliğini tanımladık..
; yukarıdaki satırda üçgen ölçüsü ver rakam olarak
       
(setq cz_boy (distance yr1 yr2 )) ; çizginin boyunu hesapladık

(setq cz_hsp (/ cz_boy 2)) ; boyu 2 ye böldük yatay çizgi orta nokta için

(setq mrk1 (polar yr1(dtr 180.0)(- cz_hsp))) ; yatay çizgi merkez noktasını bul

(setq mrkust (list(car mrk1) (+ (cadr mrk1) yan_yks))) ; orta nokta yükseklik
   
(setq mrk_sag_yatay (polar mrk1(dtr 180.0)(- yan_yks))) ; üçgenin sağ alt noktası

(setq mrk_sol_yatay (polar mrk1(dtr -180.0)(+ yan_yks))) ; üçgenin sol alt noktası

; Seçim seti oluştur ve objeyi sildir.. (ssget kullanımı)

(prompt "\n >>> UYARI ! Yatay Çizgiyi Seç Silmek İçin ! <<< ")
 
(setq secim1 (ssget))   ; seçim seti oluşturduk ve objeyi seçtirdik

(command "erase" secim1 "") ; Seçilen objeyi sildirelim ..

(command "_pline"  yr1 mrk_sol_yatay mrkust mrk_sag_yatay yr2 "" )  ; üçgen ve çizgileri çizelim
(command "change" "l" "" "p" "lt" "" "c" "1" "") ; en son çizilen objenin rengini değiştirelim
 
(command "-color" "Bylayer") ; bylayer rengine geri dön ..

(setvar "CMDECHO" oldCmdecho)  ; sistem değişk. geri yükle
(princ)
)
(Princ "Lisp'i çalıştırmak için >> cz30k << yazınız!")


En son lisp varya cz30k olan , burada üçgen ölçüsünü lisp içinde tanımladık. Eğer farklı üçgen yüksekliği kullanmak istersen bu lispi yümüyle kopyala yeni bir lisp yap ve komut ismi & üçgen yükseklik değerini değiştir. Mesala cz50k komut ismi 50 lik üçgen çizen kırmızı renkli çizgi lispi olarak kabul edebiliriz...

yazgunesi (30.03.2009 11:16 GMT)

30.03.2009 10:14    

internetturk
Dostum çok tşk ederim. Cok güzel bir lisp oldu. Ama çizginin başlangıç ve bitiş noktasını seçtirmeden sadece çizgiye tıklayarak yapılabilir mi mrk ediyorum.
tşkler, ellerine sağlık.

not: lispi egik cizgilerde denedim ama çalışmadı. Bi bak istersen dostum.

internetturk (30.03.2009 10:20 GMT)

30.03.2009 10:56    

yazgunesi
Kod:

; Objeyi direk olarak seç ..
; üçgen çizimi standart..

(defun dtr (x)
  (* pi (/ x 180.0 ))
)
(princ)

;   DTR fonksiyonunu tanıttık ve programa başlayalım..         

(defun c:cz90 ()

(setq oldCmdecho (getvar "CMDECHO"))
(setvar "CMDECHO" 0)

(prompt " >>> UYARI ! Komut Satırını Takip et ! <<< ") ; kullanıcıya bilgi verelim

(setq obj_sec (car (entsel "\n Yatay Çizgiyi Seç : "))) 
(setq yan_yks (getreal "\n Üçgen yüksekliği ne kadar ?:"))
 
(setq yr1 (cdr (assoc 10 (entget obj_sec)))) ; line nesnesinin başlangıç kordinatı
(setq yr2 (cdr (assoc 11 (entget obj_sec)))) ; line nesnesinin bitiş kordinatı   
       
(setq cz_boy (distance yr1 yr2 )) ; çizginin boyunu hesapladık

(setq cz_hsp (/ cz_boy 2)) ; boyu 2 ye böldük yatay çizgi orta nokta için

(setq mrk1 (polar yr1(dtr 180.0)(- cz_hsp))) ; yatay çizgi merkez noktasını bul

(setq mrkust (list(car mrk1) (+ (cadr mrk1) yan_yks))) ; orta nokta yükseklik
   
(setq mrk_sag_yatay (polar mrk1(dtr 180.0)(- yan_yks))) ; üçgenin sağ alt noktası

(setq mrk_sol_yatay (polar mrk1(dtr -180.0)(+ yan_yks))) ; üçgenin sol alt noktası

(command "erase" obj_sec "") ; Seçilen objeyi sildirelim ..

(command "_pline"  yr1 mrk_sol_yatay mrkust mrk_sag_yatay yr2 "" )  ; üçgen ve çizgileri çizelim
(command "change" "l" "" "p" "lt" "" "c" "1" "") ; en son çizilen objenin trngini değiştirelim
 
(command "-color" "Bylayer"); bylayer rengine geri dön ..

(setvar "CMDECHO" oldCmdecho)  ; sistem değişk. geri yükle
(princ)
)
(Princ "Lisp'i çalıştırmak için >> cz90 << yazınız!")


Yukarıdaki lisp objeyi seçiyor, objenin başlangıç ve bitiş kordinatını buluyor. Üçgen yüksekliğini kullanıcıya soruyor..Bu lispte tek bir problem var çizim objesi çok büyük ise düzgün çalışmıyor lisp.. Sadece düz çizgi gözüküyor. Açılı çizgi konusunu denedim ama onun için de biraz düşününmek lazım. Aşağıdaki lispte de aynı problemler mevcuttur. Şimdilik bunlarla çalış derim..

Kod:

; üçgen çizimi standart, üçgen ölçüsü lisp içinde tanımlanmış
; pline ile çiziyor pedit gerek yok artık..

(defun dtr (x)
  (* pi (/ x 180.0 ))
)
(princ)

;  DTR fonksiyonunu tanıttık ve programa başlayalım..         

(defun c:cz9k ()
; komut ismi aslında  30 luk üçgen çizgisi kırmızı renkli... :-)

(setq oldCmdecho (getvar "CMDECHO"))
(setvar "CMDECHO" 0)

(prompt " >>> UYARI ! Komut Satırını Takip et ! <<< ") ; kullanıcıya bilgi verelim

 
(setq obj_sec (car (entsel "\n Yatay Çizgiyi Seç : "))) 
(setq yr1 (cdr (assoc 10 (entget obj_sec)))) ; line nesnesinin başlangıç kordinatı
(setq yr2 (cdr (assoc 11 (entget obj_sec)))) ; line nesnesinin bitiş kordinatı

(setq yan_yks 30) ; üçgen yüksekliğini tanımladık..
; yukarıdaki satırda üçgen ölçüsünü ver rakam olarak
       
(setq cz_boy (distance yr1 yr2 )) ; çizginin boyunu hesapladık

(setq cz_hsp (/ cz_boy 2)) ; boyu 2 ye böldük yatay çizgi orta nokta için

(setq mrk1 (polar yr1(dtr 180.0)(- cz_hsp))) ; yatay çizgi merkez noktasını bul

(setq mrkust (list(car mrk1) (+ (cadr mrk1) yan_yks))) ; orta nokta yükseklik
   
(setq mrk_sag_yatay (polar mrk1(dtr 180.0)(- yan_yks))) ; üçgenin sağ alt noktası

(setq mrk_sol_yatay (polar mrk1(dtr -180.0)(+ yan_yks))) ; üçgenin sol alt noktası

; Seçim seti oluştur ve objeyi sildir.. (ssget kullanımı)

(prompt "\n >>> UYARI ! Yatay Çizgiyi Seç Silmek İçin ! <<< ")

; (setq secim1 (ssget))   ; seçim seti oluşturduk ve objeyi seçtirdik

(command "erase" obj_sec "") ; Seçilen objeyi sildirelim ..

(command "_pline"  yr1 mrk_sol_yatay mrkust mrk_sag_yatay yr2 "" )  ; üçgen ve çizgileri çizelim
(command "change" "l" "" "p" "lt" "" "c" "1" "") ; en son çizilen objenin rengini değiştirelim

(command "-color" "Bylayer") ; bylayer rengine geri dön ..

(setvar "CMDECHO" oldCmdecho)  ; sistem değişk. geri yükle
(princ)
)
(Princ "Lisp'i çalıştırmak için >> cz9k << yazınız!")

> 1 <
Copyright © 2004-2022 SQL: 1.563 saniye - Sorgu: 80 - Ortalama: 0.01954 saniye