22.12.2012 10:09    

vassiliy
Merhaba,
Aşağıdaki kod hata veriyor. eksik olan nedir anlayamadım. Lütfen yardımcı olurmusunuz.. teşekkürler


(defun c:ds()
(Setq Entity (car (entsel "\nBir Baslangic Ogesi Seciniz :")))
(setq EntTip(cdr(assoc 0 (entget Entity))))


(if (= EntTip "LINE")

(setq EntStartX(car(assoc 10 (entget Entity))))
(setq EntEndX(cdr(assoc 10 (entget Entity))))
(setq EntStartY(car(assoc 11 (entget Entity))))
(setq EntEndY(cdr(assoc 11 (entget Entity))))


(princ EntStartX)


);if

);defun

22.12.2012 10:32    

Travaci
Alıntı
vassiliy :
(defun c:ds ()
(Setq Entity (car (entsel "\nBir Baslangic Ogesi Seciniz :")))
(setq EntTip(cdr(assoc 0 (entget Entity))))
(if (= EntTip "LINE")
(progn
(setq EntStartX(car(assoc 10 (entget Entity))))
(setq EntEndX(cdr(assoc 10 (entget Entity))))
(setq EntStartY(car(assoc 11 (entget Entity))))
(setq EntEndY(cdr(assoc 11 (entget Entity))))
)
(princ EntStartX)
);if
);defun

22.12.2012 10:50    

vassiliy
yardımıınız için çok teşekkür ederim.

22.12.2012 15:42    

ProhibiT
Harbi65 hocam, bahsettiğiniz Batting türü çizgi tipi tanımları, Shape kullanıyor. (Ltypeshp.shx dosyasındaki bat) bunları doğrudan entmake ile oluşturamıyoruz. Öncelikle SHAPE tanımını oluşturmamız gerekiyor. Shape tanımı oluştuğunda, isimsiz bir Style oluşuyor. LTYPE tanımında bu isimsiz Style'ı refere etmemiz gerekiyor. Kısacası Shape kullanılan LineType'ları entmake ile oluşturmayı henüz ben de çözmüş değilim. :)

Üzerinde çalışılan c:ds fonksiyonuyla ilgili birkaç uyarım olacak;

(progn ile guruplandırarak (if blokunun kapanmasını sağlayınca fonksiyon çalışır. Ama, yanlış sonuç üretir.

Bu haliyle çalıştırırsanız, seçilen Line objeleri her ne olursa olsun daima
EntStartX -> 10
EntEndX -> 10
EntStartY -> X Y Z (koordinat değerleri)
EntEndY -> X Y Z (koordinat değerleri)
döneceklerdir.

Burada öncelikle tek bir seriden oluşan (setq gurubunu ayrı ayrı yazıp sonra (progn ile guruplamaya gerek yok.

Seçilen Line objesinin 10 (veya 11) anahtarlı Association List'leri;
(10 X Y Z) formatında 4 elemanlı liste olup ilk eleman Anahtar'dır.
önce (cdr (assoc 10 ile işleme alıp koordinat listesini (X Y Z) haline çevirdikten sonra, (car ile X'ini alabiliriz.
Bundan sonra Y değerini (cdr ile aldığımızda (Y Z) şeklinde bir koordinat çifti döner.
Bunun için Y koordinatını (cadr ile almamız gerekir.

Bir başka nokta da, progn ile guruplandırılmış haliyle, princ komutu if blokunun else bölümünde yer aldığından, hiç bir durumda Line Objesinin EnPoint'ini yazmaz. Ya if blockunun then bölümünde (progn içinde) yazılmalı ya da if blockunun dışına çıkarılmalıdır.

Yazdıklarımın özeti;
Kod:

(defun c:ds (/ EentEndX EntEndY Entity EstStartX EntStartY EntTip)
  (Setq Entity (car (entsel "\nBir Baslangic Ogesi Seciniz :"))
        EntTip (cdr (assoc 0 (entget Entity))))
  (if (= EntTip "LINE")
      (setq EntStartX (car (cdr (assoc 10 (entget Entity))))
            EntStartY (cadr (cdr (assoc 10 (entget Entity))))           
            EntEndX (cadr (assoc 11 (entget Entity)))
      ;;; (car (cdr ... bielştirildiğinde (cadr ... olur.
            EntEndY (caddr (assoc 11 (entget Entity))))
      ;;; (cadr (cdr ... birleştirildiğinde (caddr ... olur.
  )
  (princ EntStartX)
  (princ) ;;; sonuna bu satırı eklemezsek,
          ;;; yazılan değer ve fonksiyonun ürettiği değer
          ;;; bitişik olarak yazılacağından biribirine karışır.
)

24.12.2012 06:33    

vassiliy
merhaba,
aşağıdaki kodda anlamadığım birşey var. if(/ kısmındaki "/" ne anlama geliyor?
cevap için teşekkür ederim.

(if (/= nokta nil) ; Bu alandaki "/" işaret ne anlama geliyor?
(progn
(command "AREA" "E" "L" "")
(setq alan (getvar "AREA"))
(setq alan(rtos alan 2 3))
(command "text" nokta "" "" alan)
);progn
);if

24.12.2012 06:58    

ehya
"/" ifadesini tek başına düşünmeyin. "/=" ifadesi "eşit değil" anlamına gelir.

24.12.2012 07:26    

vassiliy
teşekkür ederim ehya

31.12.2012 10:52    

Travaci
Entmake ile Leader oluştururken, arrow size'ı geçerli dimstyl ın ayarından alıyor, dimscale'i değiştirdiğimde buna bağlı olarak arrow size da dimscale değişkeni ile kullanmak istiyorum, dimscale e göre arrow size büyüsün veya küçülsün. Dxf kodları arasında arrow size a dair bişi göremedim, command kullanarak yaptığımda ise sorun yok.
Teşekkürler.

31.12.2012 11:29    

ehya
Alıntı
Travaci :
Entmake ile Leader oluştururken, arrow size'ı geçerli dimstyl ın ayarından alıyor, dimscale'i değiştirdiğimde buna bağlı olarak arrow size da dimscale değişkeni ile kullanmak istiyorum, dimscale e göre arrow size büyüsün veya küçülsün. Dxf kodları arasında arrow size a dair bişi göremedim, command kullanarak yaptığımda ise sorun yok.
Teşekkürler.




Autolisp yerine activex kullanırsan çok rahat bir şekilde bilgisini alabilirsin.

Kod:

(vl-load-com)
(setq ent (car (entsel)))
(setq data (vlax-ename->vla-object ent))
(vla-get-ArrowheadSize data)

31.12.2012 13:26    

Travaci
Ama ben arrow size i biryerden okutmuyorum gecerli dimension styl imdaki arrow size 250 oldugunu. Varsayalim qleader attigimdaa. Arrow size boyutu 250 oluyor dimscale ilmi degistirdigimde ayni sekil qleader in arrow size da degisiyor bensimdi command qlwader kullandigimda oluyor ama entmake ile yaptigimda dimstylda default arrow size ne ise onu aliyor
________________________________________________________________________________
Yukarıdaki işlemle son atılan leader'ın arrow size ını güncellemekten başka aklıma bişi gelmiyor.

ProhibiT (23.02.2013 06:01 GMT)

01.02.2013 19:15    

esk
Hocam öncelikle saygılar dilerim.çalışmalarınız,paylaşımlarınız ve de yardımlarınızdan dolayı teşşekkür ederim.benim bir sorunum var bir türlü çözemedim ve forumda bu konu ile ilgili yazabileceğim bir bölüm bulamadığım içinde burda dile getirmek yardım istemek durumunda kaldım.
Destek istediğim konuya gelince autocad 2013 e yükselttim sürümü hernedense bulamadım bir türlü Aln (seçilen objelerin alanlarını hesaplama) lispi çalışmıyor. Aşağıdaki iletiyle karşılaşıyorum.

Command:
ALN ALn:dialog{
label="**** Alan Hesaplama ve Yazdırma ****";
: boxed_column{
: edit_box{label=" Alan Birimi / Çizim Birimi:";key="Luf";edit_width=4;}
: edit_box{label="Ondalık Basamak Sayısı:";key="dpL";edit_width=4;}
: edit_box{label=" Yazı Yüksekliği:";key="txh";edit_width=4;}
: edit_box{label=" Alan Yazısı Öneki:";key="Lea";edit_width=4;}
: edit_box{label=" Alan Yazısı Soneki:";key="Tra";edit_width=4;}
spacer;spacer;}
: boxed_row{: text{key="CpR";value=
" Hazırlayan:M.Şahin Güvercin - www.autocadokulu.com"
;}}
ok_cancel;}
; error: bad argument type: streamp nil

Bu lisp harika bir lisp benim için ancak şuanda çalıştıramıyorum.bana bu konuda destek verirseniz çok sevinirim. Lisp yükleme konusunda paylaşımlarınızı okudum ve aynen uyguladım o konuda bir sorun olmadıgını düşünüyorum çünkü diğer lispler çalışıyor. Teşekkür eder iyi çalışmalar dilerim...İyi akşamlar hocam...

02.02.2013 06:00    

ProhibiT
Windows 7 kullanıyorsunuz ve AutoCAD klasörlerine gerekli erişim yetkisi olmayan bir kullanıcı ile oturum açmışsınız.

Kestirme ama geçici bir çözüm olarak; AutoCAD icon'u üzerine sağ tıklayıp "Yönetici olarak çalıştır / veya Run as administrator" seçerek AutoCAD'i açtığınızda bahsettiğiniz problemi yaşamazsınız.

Problemin kökten ve kalıcı çözümü için;


Linkleri görebilmek için ÜYE olmalısınız.




Linkleri görebilmek için ÜYE olmalısınız.




Linkleri görebilmek için ÜYE olmalısınız.




Linkleri görebilmek için ÜYE olmalısınız.


Linklerinde açıklanan işlemleri uygulamalı, kendinize AutoCAD klasörlerinde yeterli erişim yetkisi tanımlamalısınız.

04.02.2013 07:08    

Travaci
Sitede paylaşılan bazı kodlarda dosya yolu gösterilirken
c:\****\**** yada c:\\****\\****
Şeklinde gösterilmiş, ikisinin farkı nedir. ?
Teşekkürler.

04.02.2013 08:27    

ehya
İlk gösterim ifadesi yanlış. "\" ifadesi olacak.
İlki sanırsam forumun mesaj yazma bölümünün bir düzeltmesi sonucu "" ifadesi oluşuyor. İlkini dikkate alma.

04.02.2013 08:36    

Travaci
İlginçtir ki ben yazdıklarımın hepsini birincisi gibi yaptım sorun çıkarmadılar.

04.02.2013 08:50    

ehya
bak mesela bi önceki mesajımda ilk tırnak içindeki ifade de iki tane slash vardı. İkinci tırnakta tek vardı. Birer tane eksiltti.
Dikkatten kaçan bir yer var. iki tane ters slash yada bir tane düz slash. Aynı anlama gelir.

04.02.2013 08:52    

Travaci
Haklısınız, benim yanlışım varmış.

Travaci (04.02.2013 10:47 GMT)

21.02.2013 22:26    

kerem1453
autolispte bir line objesinin başına a ortasına(veya herhangi bir noktasına) b bitişine c dersek
a dan b ye b den c ye dimensionla ölçü atıp d noktasına
a dan c noktasına toplam ölçü atıp e noktasına
dimensionla ölçüyü vercek kodlama nasıl olmalıdır.örnek bi kodlama yazabilirmisiniz.

22.02.2013 08:35    

Travaci
Aşağıda d noktası dimension nın referansa olucak uzaklığıdır a dan b ye b den c ye ölçü atılmıştır, aynı mantık diğer dediklerinizi yapabilirsiniz.
Kod:

(command "dimlinear" a b d )
(command "dimcontinue" c "" "")

22.02.2013 23:08    

Travaci
Birtane seçim setimde 10 tane eleman var diğerinde de 5 tane elamanım var ama benim bu 5 elemanım hemde diğer 10 elemanın içinde, ben birinci listeden ikinci listeyi nasıl çıkarabilirim ?

Önceki Sayfa [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [15] [20] [25] > 26 < [30] [35] [40] [42] Sonraki Sayfa
Copyright © 2004-2022 SQL: 1.57 saniye - Sorgu: 101 - Ortalama: 0.01554 saniye