15.03.2013 15:56    

Harbi65
Alıntı


read-line kullanırken
(repeat 15
yaparsan 15nci satırın sonucunu verecek.



Ehya teşekkür;
Ben 15 i örnek verdim. Ama bu şekilde yapınca 15 e kadar bütün satırları okuyacak. Ben bunu istemediğim için merak ettim doğrudan istediğimiz satıra ulaşabilir miyiz diye...

15.03.2013 16:03    

ehya
oradaki sayı yerine kaçıncı satır olduğunu belirten değer verebilirsin.
(repeat dongu_sayisi yaptığında her defasında kendi içinde tekrar yapacağından en son hafızada kalan belirttiğin satırdaki bilgi olacaktır.
Doğrudan ulaşabilecek bir kod varsa, activex'de vardır. Onu da şahin hocam görünce mutlaka cevaplayacaktır. :)
Autolisp olarak örnek olacak şekilde bir kod yazıyorum.

Kod:

(setq deg (getint "\nkaçıncı satır:"))
(setq ac (open "d:\\1.txt" "r"))
(repeat deg
  (setq sonuc (read-line ac)))

15.03.2013 18:27    

ProhibiT
AutoLISP, okumak için bir dosya açtığında, random access (rastgele erişimli) açımıyor, sequental access (sıralı erişim) modunda açıyor.

Açılan dosyadan istenen satırı okumak için Mehmet hocamın yazdığı gibi repeat kullanmak mantıklı. Eğer peşpeşe okumalar yapılacaksa ve okunan satırdan önceki satırları okumak gerekiyorsa, dosyayı kapatıp tekrar açmak gerekecek.

Activex veya Visual Basic kullanarak random access modunda dosyayı açmak mümkün olabilir, ezbere bilmiyorum bunu. Bununla birlikte, bahsettiğimiz gibi karışık okumalar gerekiyorsa, dosya açıldığında her bir satırını bir değişkene (daha doğrusu, tüm satırları Liste türü bir değişkene) alıp, dosya içeriğini bu değişkenden okutmakta fayda var.

Okunan *.txt formatında bir dosya ise, sanıldığı gibi hafızayı ve performansı etkilemez.

15.03.2013 20:39    

Travaci
Peki ya 15. sıraya yazdırmak istersek ?

18.03.2013 07:33    

ehya
Alıntı
Travaci :
Peki ya 15. sıraya yazdırmak istersek ?



okumak ile yazmak arasında ince bir çizgi var. Sonuçta aynı mantık ile gitmiyor mu?

18.03.2013 07:47    

Travaci
Repeat ile okuttuğunuzda 15. satıra kadar okuyacak 15. satırda son bulduğu için o değeri alıcak dediniz. Bu sefer 15. satıra kadar üzerlerine yaza yaza gitmicek mi ?

18.03.2013 08:01    

ehya
Peki boş bir satır yazdırsan olmaz mı?

18.03.2013 08:11    

Travaci
Ben anlamadım : )

19.03.2013 08:05    

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

ssget ile oluşturdugumuz window penceresinin x ve y uzunlugunu bulmak için gerekli kodlama nasıl olmalıdır?

19.03.2013 10:07    

ehya
kerem1453




ssget fonksiyonunda tıklanılan yerin koordinatları olmayabilir.
Bunun için seçim yapmadan önce window oluşturmalısınız.
Gösterilen pencere koordinatlarına göre X ve Y koordinatlarını bulabilirsin.
Örnek kod aşağıdadır.

Kod:

(setq p1 (getpoint "\n1. nokta:")
      p2 (getcorner p1 "\n2. nokta:")
      secim (ssget "w" p1 p2))

(setq solust (list (car p1)(cadr p2))
      sagalt (list (car p2)(cadr p1))
      x-uzunluk (distance p1 sagalt)
      y-uzunluk (distance p1 solust))   

19.03.2013 10:16    

kerem1453
teşekkür ederim ehya yardımın için....

19.03.2013 13:11    

Harbi65
Load yapılmış lisplerin hangi dosyada olduğunu nasıl buluruz... Mesela bir dosya içinde birden fazla lisp var. Komutu girip lispi çalıştırıyoruz ama hangi dosyada olduğunu unuttuğumuz bi kodu nasıl buluruz?
Visual Lisp Editor de falan böyle bi özellik var mı?

26.03.2013 03:42    

2032223351
syn ustatlar bu lisplin alanlari otomaik ortalarina yazmasi icin nasil bir duzenleme yapmam lazim ?

Kod:

(DEFUN C:147 (/ alan alany)
(setq la1 (getstring"\nlayer indisi :"))
(setq rn1 (getstring"\nrenk numarasi :"))
(command "layer" "n" la1 "")
(command "layer" "set" la1 "")
(command "color" rn1 "")
(command "bpoly")
(setq alan (ssget "l"))
(command "area" "o" "l")
(setq alany (getvar "area")
        alany (rtos alany 2 2)
        alany (strcat alany "m2")
        yaznok (getpoint "\nNereye Yazilacak ?")
)
(command "text" yaznok "2" "" alany)
)

ProhibiT (26.03.2013 07:33 GMT)

26.03.2013 10:21    

ProhibiT
Script gibi yazılırsa hem AutoLISP'e ayıp olur, hemde hesaplama ve karar verme gereken durumlarda duvara çarpmak kaçınılmaz olur. Bu ve benzeri durumlarda nasıl yazılacağını konusunda pek çok örneği sitemizde bulabilirsiniz. Okumadan kendinize ve Lisp'e eziyet etmeyiniz.
Kod:

(defun C:WAr (/ cLr cTr ipT Lyr Lob)
  (setvar "cmdecho" 0) (command "undo" "group")
  (vl-load-com) (if (not ocL) (setq ocL 256)) (if (not oLn) (setq oLn "0"))
  (if (not (tblsearch "Layer" (if (= (setq Lyr (getstring (strcat
      "\nLayer Adı <" oLn ">: "))) "") (setq Lyr oLn) (setq oLn Lyr))))
    (entmake (list (cons 0 "Layer") (cons 100 "AcDbSymbolTableRecord")
      (cons 100 "AcDbLayerTableRecord") (cons 2 Lyr) (cons 70 0))))
  (if (setq cLr (getint (strcat "\rRenk Numarası <"
    (cond ((= ocL 0) "Byblock")((= ocL 256) "Bylayer")(T (itoa ocL))) ">: ")))
      (setq ocL cLr) (setq cLr ocL))
  (while (setq ipT (getpoint "\rPick internal point: "))
    (command "_.Boundary" "a" "o" "r" "" ipT "")
    (setq cTr (vlax-safearray->list (vlax-variant-value (vlax-get-property
        (vlax-ename->vla-object (entlast)) 'Centroid))))
    (entdel (entlast)) (command "_.Boundary" "a" "o" "p" "" ipT "")
    (vlax-put-property (setq Lob (vlax-ename->vla-object(entlast))) 'Color cLr)
    (vlax-put-property Lob 'Layer Lyr)
    (entmake (list (cons 0 "Text") (cons 8 Lyr) (cons 40 2) (cons 50 0)
      (cons 10 cTr) (cons 1 (strcat "%<\\AcObjProp Object(%<\\_ObjId "
        (itoa (vla-get-ObjectID Lob)) ">%).Area \\f \"%lu2%pr2%ps[, m²]\">%"))
      (cons 62 cLr))) (command "_.UpdateField" "l" ""))
  (command "undo" "e") (prin1))

ProhibiT (29.03.2013 07:09 GMT)

26.03.2013 12:52    

2032223351
Ustat saolasin ugrastigin icin ama bir sorun var sanirim devamli olmuyor secimler sadece birtanesini yaparak sonlandiriyor birde ben ikinci kez lisp i calistranda var olan bir tabaka adini tekrar yazdigimda ayni tabakaya yazmiyor yine renk kodu soruyor farkli kot girdigimde yada kot girmrdigimde hata verim yine sonlandiriyor.

26.03.2013 20:45    

ProhibiT
Düzenlenmiş fonksiyon kodunu tekrar alıp deneyebilirsiniz. bylayer için renk kodu 256, byblock için 0 dır.

27.03.2013 07:22    

2032223351
abicim bu yazdiginiz lisp de
1 ortasina bastigim benim yazdigimdaki gibi kapali alanin uzerine pline olarak yeni cizgi atmiyor.
2 bylayer kodunu girdigimde ikinci lisp i calistirsam leyer adindan sonra hemen ; error: bad argument type: stringp 12 bu hatayi veriyor renk sormadan.
3 lisp calistirildiginda 3 kez arka arkaya secim yapinca devam etmiyor ve ; error: ActiveX Server returned the error: unknown name: CENTROID bu hatayi veriyor.
ilginiz icin cok tesekkur ederim .

27.03.2013 13:24    

ProhibiT
Oluşturulan Boundary objesini kasıtlı olarak sildirmiştim. Bahsedilen diğer hataları yapması için hiç bir sebep yok. Tekrar alıp denerseniz hiç bir problem kalmaz.

28.03.2013 03:37    

2032223351
Allah razi olsun usta saolasin ama bir 2 sorum kaldi alan yazisinin arkasina tarama gibi bisi atiyor onu nasil kaldirabilirim ? ve M2 yazisini kaldirip noktadan sonrasini 3 basamak yapabilirmiyiz ?

2032223351 (28.03.2013 03:45 GMT)

28.03.2013 07:13    

ProhibiT
 

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