06.11.2018 13:48    

mesuttasar
Öncelikle bugüne kadar hem bu forumun değerli yöneticilerine hemde Alumina hocama teşekkür ederek başlamak istiyorum. Sayenizde çok şey öğreniyoruz gerçektende. Öğrendikçe de haliyle yeni problemlerle karşı karşıya kalıyorum. En son takıldığım yer şöyle;

Kod:

(defun c:mss()
(setq linelist nil
      noklist nil)

 
(setq a1 (getpoint "\n1.Nokta.."))
(setq a2 (getpoint "\n2.Nokta.."))
(setq a3 (getpoint "\n3.Nokta.."))

(setq noklist (append (list a1)(list a2)(list a3)))

 
(command "_.line" a1 a2 "") ;ÇİZGİNİN ADI L1 OLSUN
(setq linelist (car (entlast))) ;L1'in entity name değerini linelist adında bir listeye atamak istiyorum
(setq entlast nil)
(command "_.line" a2 a3 "") ;ÇİZGİNİN ADI L2 OLSUN
(setq linelist (cons (car entlast) linelist));L2 çizgisinin entity name değerini linelist adında oluşturduğum listeye eklemek istiyorum
(setq entlast nil)
(command "_.line" a3 a1 "") ;ÇİZGİNİN ADI L3 OLSUN
(setq linelist (cons (car entlast) linelist)) ;L3 çizgisinin entity name değerini linelist adında oluşturduğum listeye eklemek istiyorum

(setq linelist (reverse linelist))

);defun kapanış parantezi


Öncelikle 3 nokta seçiyorum ve bunlar a1,a2 ve a3 değerlerine atayarak nokta listesini oluşturuyorum.
Daha sonra a1 ve a2 arasına line çizip bunun entitiy name değerlerini bir liste altında tutmak istiyorum. Sırasıyla aynı işlemi a2 ve a3 arasında çizdiğim ve a3 ile a1 arasında çizdiğim line elemanları içinde yapmak istiyorum.

Yani linelist isimli bir listede ayrı ayrı çizilen üç çizginin (L1,L2,L3) entitiy değerlerini almak istiyorum.

Bundan sonra ilave bir nokta girdiğimde , girilen son noktadan diğer noktalara line çizdiğimde, kesişen line elemanları var mı yokmu kontrol (entget komutuyla bu lineların "L1, L2, L3" start ve end point noktalarına ulaşacağım) edip bir sonraki aşamaya geçeceğim ama linelist listesi ni oluşturamıyorum.
Bu noktada yardımınıza ihtiyacım var.
Saygılarımla,

mesuttasar (06.11.2018 14:07 GMT)

06.11.2018 14:19    

alumina
Alıntı
mesuttasar :

"Inters" fonksiyonu secilen herhangi 4 nokta arasinda DOGRUSAL bir kesisme olup olmadigini kontrol eder. Bu kesisme kontrol edilirken bu 4 noktada illa da 2 adet line olmasi zorunlu degildir. Neden sadece a1, a2 ve a3 degerlerini listeye almiyorsun.

06.11.2018 14:26    

mesuttasar
Hocam iyi akşamlar, inters komutuyla 4 noktaya ihtiyacımız varya, ben daha önce çizmiş olduğum linelar ile en son nokta girişi yaptığımda, bu noktadan diğer noktalara yeni çizilen line lar ile önceki çizilmiş line elemanları arasında kesişimleri kontrol altına almak istiyorum.

Kodu şöyle yapınca aslında istediğim oldu gibi;

Kod:

(defun c:mss()
(setq linelist nil
      noklist nil)

 
(setq a1 (getpoint "\n1.Nokta.."))
(setq a2 (getpoint "\n2.Nokta.."))
(setq a3 (getpoint "\n3.Nokta.."))

(setq noklist (append (list a1)(list a2)(list a3)))

 
(command "_.line" a1 a2 "");ÇİZGİNİN ADI L1 OLSUN
  (setq l1 (entlast))

(command "_.line" a2 a3 "") ;ÇİZGİNİN ADI L2 OLSUN
  (setq l2 (entlast))

(command "_.line" a3 a1 "") ;ÇİZGİNİN ADI L3 OLSUN
(setq l3 (entlast))

(setq linelist (append (list l1)(list l2)(list l3)))
);defun kapanış parantezi

06.11.2018 14:39    

alumina
Alıntı
mesuttasar :

3 noktayi girdikten sonra komutu bitirirsen olusturdugun liste nil olacaktir. While dongusuyle nokta girmeye devam edersen kesismeleri kontrol edersin ama while den ciktiginda liste yine nil olacaktir. Tekrar komutu girdiginde o listeyi kullanamayacaksin. Kullanamak istersen diger kodlarinda olmayan bir degisken adi vereceksin ve defun parantezinde bu degisken adi olmayacak. Ama her halukarda dosya kapanip acildiginda liste ucmus olacak.

> 1 <
Copyright © 2004-2022 SQL: 1.117 saniye - Sorgu: 52 - Ortalama: 0.02148 saniye