03.04.2012 04:20    

ProhibiT
Alıntı
SaiL :
forumda biraz araştırdım; ya tam istediğim lisp yok, yada ben bulamadım.

elimde koordinatlı proje var, yalnız; koordinatları (ham data) yazılı değil.
...
yok mu arkadaşlar yardımcı olabilecek kimse.
şayet forumda böyle bir lisp varsa (ben bulamadım), link verir misiniz...


Açıklayıcı Video
Kod:

;|---------------------------------------------------------------------------|
|  Sırasıyla seçilen noktaların koordinatlarını, belirlenen numaradan       |
|  başlayarak numaralandırıp, Nokta Numaraları ve Koordinatlarını tablo     |
|  halinde yazar. Tablodaki Nokta Numaraları, X, Y ve Z koordinat değerleri |
|  nokta numarası yazısına field ile bağlanırlar. Nokta numaraları ve       |
|  noktaların konumları değiştirildiğinde, ilk regen işleminde Tablodaki    |
|  değerler güncellenirler.                                                 |
|       Hazırlayan: M. Şahin Güvercin  02/04/2012  www.autocadokulu.com     |
|___________________________________________________________________________|;
(write-line "Hazırlayan: M. Şahin Güvercin - www.autocadokulu.com")
;|___________________________________________________________________________|;
(defun c:PcT2 (/ *error* TxH dpL NuM NkS aC MsF PvT DoB n p0 p1 ObjID)
  (setq ocm (getvar "cmdecho")) (setvar "cmdecho" 0) (command "_.undo" "group")
  (defun *error* (msg) (setvar "dimzin" odz) (princ msg) (command "undo" "e")
   (setvar "cmdecho" ocm) (setq oNuM NuM) (prin1)) (vl-load-com)
  (setq odz (getvar "dimzin")) (setvar "dimzin" 0)
  (if (not oTxH) (setq oTxH (* (getvar "dimtxt") (getvar "dimscale"))))
  (if (not odpL) (setq odpL 2)) (if (not oNuM) (setq oNuM 1))
  (setq TxH (getreal (strcat "\n         Yazı yüksekliği <" (rtos oTxH) ">:"))
        dpL (getint (strcat "\n  Ondalık basamak sayısı <" (itoa odpL) ">:"))
        NuM (getint (strcat "\nBaşlangıç Nokta Numarası <" (itoa oNuM) ">:")))
  (if TxH(setq oTxH TxH)(setq TxH oTxH))(if dpL(setq odpL dpL)(setq dpL odpL))
  (if NuM (setq NuM (1- NuM)) (setq NuM (1- oNuM)))
  (setq NkS '((0.0 0.0 0.0) (40.0 0.0 0.0) (40.0 -4.0 0.0) (0.0 -4.00 0.0)
              (0.0 -2.0 0.0) (40.0 -2.0 0.0) (6.25 -2.0 0.0) (6.25 -4.0 0.0)
              (17.5 -2.0 0.0) (17.5 -4.0 0.0) (28.75 -2.0 0.0) (28.75 -4.0 0.0)
              (20.0 -1.5 0.0) (0.75 -3.5 0.0) (12.0 -3.5 0.0) (23.25 -3.5 0.0)
              (34.5 -3.5 0.0) (4.0 -3.5 0.0) (15.5 -3.5 0.0) (26.75 -3.5 0.0)
              (38.0 -3.5 0.0) (20.0 -2.0 0.0)) aC (* pi 1.5) MsF (* 2 TxH)
        PvT (entlast) DoB (ssadd) n 10)
  (entmake (list (cons 0 "LWPOLYLINE") (cons 100 "AcDbEntity") (cons 67 0)
        (cons 100 "AcDbPolyline") (cons 90 4) (cons 70 1) (cons 43 0.0)
        (cons 38 0.0)(cons 39 0.0) (cons 10 (nth 0 NkS)) (cons 10 (nth 1 NkS))
        (cons 10 (nth 2 NkS)) (cons 10 (nth 3 NkS))))
  (entmake (list (cons 0 "LINE") (cons 10 (nth 4 NkS)) (cons 11 (nth 5 NkS))))
  (entmake (list (cons 0 "LINE") (cons 10 (nth 6 NkS)) (cons 11 (nth 7 NkS))))
  (entmake (list (cons 0 "LINE") (cons 10 (nth 8 NkS)) (cons 11 (nth 9 NkS))))
  (entmake (list '(0 . "LINE") (cons 10 (nth 10 NkS)) (cons 11 (nth 11 NkS))))
  (entmake (list (cons 0 "TEXT") (cons 10 (nth 12 NkS)) (cons 40 1.0)
      '(1 . "Koordinat Tablosu") '(50 . 0.0) '(72 . 1)(cons 11 (nth 12 NkS))))
  (entmake (list (cons 0 "TEXT") (cons 10 (nth 13 NkS)) (cons 40 1.0)
                 (cons 1 "Nokta") (cons 50 0.0)))
  (entmake (list (cons 0 "TEXT") (cons 10 (nth 14 NkS)) (cons 40 1.0)
                 (cons 1 "x") (cons 50 0.0)))
  (entmake (list (cons 0 "TEXT") (cons 10 (nth 15 NkS)) (cons 40 1.0)
                 (cons 1 "y") (cons 50 0.0)))
  (entmake (list (cons 0 "TEXT") (cons 10 (nth 16 NkS)) (cons 40 1.0)
                 (cons 1 "z") (cons 50 0.0)))
  (while (setq PvT (if PvT (entnext PvT)(entnext)))(ssadd PvT DoB))
  (while (not (minusp (setq n (1- n))))
    (setq PvT (vlax-ename->vla-object (ssname DoB n)))
    (vla-transformby PvT (vlax-tmatrix (list (list TxH 0 0 0) (list 0 TxH 0 0)
                 (list 0 0 TxH 0) (list 0 0 0 1)))))
  (setq NkS (mapcar '(lambda (pr) (list (* (car pr) TxH) (* (cadr pr) TxH)
                                  (getvar "elevation"))) NkS) p0 (nth 21 NkS))
  (while (/= 3 (car (setq p1 (grread T 4 0)))) (setq p1 (cadr p1) n 10)
    (while (not (minusp (setq n (1- n))))
      (setq PvT (vlax-ename->vla-object (ssname DoB n)))
      (vla-transformby PvT (vlax-tmatrix (list
       (list 1 0 0 (- (car p1) (car p0))) (list 0 1 0 (- (cadr p1) (cadr p0)))
       (list 0 0 1 (- (caddr p1) (caddr p0))) (list 0 0 0 1))))) (setq p0 p1))
  (setq NkS (mapcar '(lambda (pr) (list (- (+ (car pr) (car p0)) (* 20.0 TxH))
         (+ (cadr pr) (cadr p0) (* 2.0 TxH)) (+ (caddr pr) (caddr p0)))) NkS))
  (while (setq NkT (getpoint "\r    Nokta Seçiniz: "))
    (entmake (list (cons 0 "LINE")(cons 10 (nth 3 NkS))(cons 11 (nth 2 NkS))))
    (setq ObjID (itoa (vla-get-ObjectID (vlax-ename->vla-object (entlast))))
          PvT (entget (ssname DoB 0))
     PvT (subst(cons 10(list(car(setq p1(polar(nth 3 NkS) aC MsF)))(cadr p1)))
                (cons 10 (list (car (nth 3 NkS)) (cadr (nth 3 NkS)))) PvT)
     PvT (subst(cons 10(list(car(setq p1(polar(nth 2 NkS) aC MsF)))(cadr p1)))
                    (cons 10 (list (car (nth 2 NkS)) (cadr (nth 2 NkS)))) PvT)
   PvT (entmod PvT) PvT (entupd(cdr(assoc -1 PvT))) PvT (entget(ssname DoB 2))
          PvT (subst (cons 11 (polar (nth 7 NkS) aC MsF)) (assoc 11 PvT) PvT)
   PvT (entmod PvT) PvT (entupd(cdr(assoc -1 PvT))) PvT (entget(ssname DoB 3))
          PvT (subst (cons 11 (polar (nth 9 NkS) aC MsF)) (assoc 11 PvT) PvT)
   PvT (entmod PvT) PvT (entupd(cdr(assoc -1 PvT))) PvT (entget(ssname DoB 4))
          PvT (subst (cons 11 (polar (nth 11 NkS) aC MsF)) (assoc 11 PvT) PvT)
          PvT (entmod PvT) PvT (entupd (cdr (assoc -1 PvT)))
   NkS (mapcar '(lambda (pr) (list (car pr)(- (cadr pr) MsF)(caddr pr))) NkS))
   (entmake(list(cons 0 "TEXT")(cons 40 TxH)(cons 1 (itoa(setq NuM (1+ NuM))))
                   (cons 10 NkT) (cons 50 0.0)))
    (entmake (list (cons 0 "TEXT") (cons 10 (nth 17 NkS)) (cons 40 TxH)
                   (cons 1 (strcat "%<\\AcObjProp Object(%<\\_ObjId "
     (setq ObjID (itoa (vla-get-ObjectID (vlax-ename->vla-object (entlast)))))
       ">%).TextString>%")) (cons 11 (nth 17 nks)) (cons 50 0.0) (cons 72 2)))
    (entmake (list (cons 0 "TEXT") (cons 10 (nth 18 nks)) (cons 40 TxH)
                   (cons 1 (strcat "%<\\AcObjProp Object(%<\\_ObjId " ObjID
                      ">%).InsertionPoint \\f \"%lu2%pt1%pr" (itoa dpL) ">%"))
                   (cons 11 (nth 18 nks)) (cons 50 0.0) (cons 72 2)))
    (entmake (list (cons 0 "TEXT") (cons 10 (nth 19 nks)) (cons 40 TxH)
                   (cons 1 (strcat "%<\\AcObjProp Object(%<\\_ObjId " ObjId
                      ">%).InsertionPoint \\f \"%lu2%pt2%pr" (itoa dpL) ">%"))
                   (cons 11 (nth 19 nks)) (cons 50 0.0) (cons 72 2)))
    (entmake (list (cons 0 "TEXT") (cons 10 (nth 20 nks)) (cons 40 TxH)
                   (cons 1 (strcat "%<\\AcObjProp Object(%<\\_ObjId " ObjId
                      ">%).InsertionPoint \\f \"%lu2%pt4%pr" (itoa dpL) ">%"))
        (cons 11 (nth 20 nks)) (cons 50 0.0) (cons 72 2))) (command "_.Regen"))
  (setvar "dimzin" odz) (setq oNuM (1+ NuM)) (command "undo" "e")
  (setvar "cmdecho" ocm) (prin1))
;|___________________________________________________________________________|;

03.04.2012 04:24    

SaiL
LİSP i yükledim ama çalıştıramadım, PCT2 yazıyorum ama tanımıyor.
Autocad 2011 kullanıyorum, version ile alkalı olabilir mi?
açıklayıcı videodaki autocad, 2013..

03.04.2012 06:12    

ProhibiT
Fonksiyon kodlarının siteye upload edilmesi sırasında tırnak içindeki tırnaklarda hatalar olabiliyor. 03.04.2012 saat 07:20 de (mesajınızdan 4 dakika önce) güncelledim, tekrar indirip deneyin. Her türlü AutoCAD versiyonunda problemsiz çalışır...

03.04.2012 07:18    

id
ProhibiT hocam,

Bu kodu ekrandaki sıfır kotunda yer alan Z değerlerini hem seçecek hemde Z değerlerini kotuna taşıyıp, ilgili kota nokta atacak şekilde değiştirmek mümkün mü?

03.04.2012 08:27    

ProhibiT
Bahsettiğiniz konuyla bu fonksiyonun ilgisini ben kuramadım açıkçası.

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

linkine göz atarsanız, orada bahsettiğiniz işlemi (ilgili kota nokta koyma hariç) yapan fonksiyonu bulabilirsiniz. 2009 yılında, izahlı Türk musıkisi dersleri formatında detaylı açıklamalarıyla yazmışız :)

03.04.2012 09:49    

SaiL
Alıntı
ProhibiT :
Fonksiyon kodlarının siteye upload edilmesi sırasında tırnak içindeki tırnaklarda hatalar olabiliyor. 03.04.2012 saat 07:20 de (mesajınızdan 4 dakika önce) güncelledim, tekrar indirip deneyin. Her türlü AutoCAD versiyonunda problemsiz çalışır...



ben mi yanlış bişey yapıyorum acaba, yine tanımıyor komutu.
autocad de (appload) yazıp, lispi bulup (load) diyerek yüklüyorum. kapatıp PTC2 yazıyorum, ama (unknown command) diyor..

03.04.2012 10:47    

ProhibiT
Appload ile yüklerken, diyalog penceresinin sol alt köşesinde, resimde işaretlediğim gibi, "... successfully loaded" mesajını aldığınızdan emin olun.

Ya da, Lisp dosyasını ...\Support klasörüne kopyaladıktan sonra, AutoCAD komut satırından; (Load "PcT-2.Lsp")<┘ şeklinde komut girerek yükleyebilirsiniz. PcT-2.Lsp yerine, Lisp dosyasına kendi verdiğiniz adı kullanmalısınız.

ProhibiT (03.04.2012 10:53 GMT)

03.04.2012 16:20    

SaiL
Alıntı
ProhibiT :
Appload ile yüklerken, diyalog penceresinin sol alt köşesinde, resimde işaretlediğim gibi, "... successfully loaded" mesajını aldığınızdan emin olun.

Ya da, Lisp dosyasını ...\Support klasörüne kopyaladıktan sonra, AutoCAD komut satırından; (Load "PcT-2.Lsp")<┘ şeklinde komut girerek yükleyebilirsiniz. PcT-2.Lsp yerine, Lisp dosyasına kendi verdiğiniz adı kullanmalısınız.



"... successfully loaded" mesajı altta yazıyordu. Lisp dosyasının ismini değiştirdim, oldu.
teşekkür ederim emekleriniz için...

03.04.2012 19:16    

ProhibiT
Forumda paylaşılan Lisp fonksiyonaların buradan nasıl alınıp, Lisp dosyalarının oluşturulacağı o kadar çok anlatıldı ki... Probleminizi dosya adını değiştirirken farkında olmadan halletmişsiniz. Sıkça karşılaşılan bir hatayı yaptığınızı düşünüyorum.

Buradan copy (ctrl+c) ile aldığınız kodu, notpad açıp paste (ctrl+v) yaptıktan sonra dosyanızı -.Lsp uzantısıyla kaydetmeniz gerekiyor. Resimde işaretlediğim kısımda, Tüm dosyalar (*.*) veya, All types of Files (*.*) seçili olduğundan emin olun. Eğer, Metin Begeleri (*.txt) veya, Text Files (*.txt) seçili olursa, siz Dosya Adı yazarken, PcT-2.Lsp yazdığınızda, dosyanız PcT-2.Lsp.TxT şeklinde kaydedilir. Bu dosyayı da, AutoCAD'e yükleyemezsiniz.

Aslında en garantili yol, notpad kullanmadan Visual Lisp Editor kullanmaktır.
- Forumdan, Kod bölümünü mouse ile işaretleyip copy (ctrl+c) uygulayın.
- AutoCAD komut satırından, VLIDE<┘ girerek Visual Lisp Editor'ü açın.
- Files menüsünden "New" seçerek açtığınız yeni dosyaya Paste (ctrl+v) kodu alın.
- Files menüsünden "Save" seçerek, Kayıt türünü "Lisp Source Files" olarak belirleyip kaydedin.

04.04.2012 14:49    

odrcmn
Vertex ekleme
3d polyline cizerken veye secilen 3d polyline nin kesdigi tum polyline kesim noktalarina vertex ekliyebilecek bir lisp bahar ayina girdigimiz su gunler de iyi olurdu..

Saygilarimla

04.04.2012 18:28    

asencer
herkese merhabalar;
aklıma gelen bir fikri paylaşmak istedim, belki yapılabilirliği vardır.

seçtiğim komuta göre çizim yaparken layer otomatik atansın.

örneğin; line ile çizgiler çizerken layerım otomatik olarak line layerına geçsin mesela sonra ölçülendirmek için dimension linkine tıkladığımda layer dimension layerına geçsin..

şimdiden herkese teşekkürler.
saygılar

10.04.2012 12:42    

doygun77
Autocad'de Array komutuna benzeyen bir komut veya lisp varmı?
rotate copy işlemi var ama coklu Kopyalama yapamadığı için işlemler cok uzun sürüyor, kopyalama mesafesi eşit olmadığı için array komutunu kullanamıyorum.
Daire veya circle merkezi etrafında kopyalama yapılırken, merkeze görede kopyalanacak nesnenin acısal olarakda dönmesi gerekiyor.

Saygılarımla

doygun77 (14.04.2012 06:22 GMT)

12.04.2012 18:51    

borakemal
Kolay gelsin arkadaşlar acaba elinde kesişen polylineların kesişim noktalarına nokta atayan bir lispi olan var mı? Şimdiden teşekkürler

13.04.2012 09:55    

ozandurmus
Merhaba arkadaslar
Bi sorum olucakta entmake ile gas linetype yaratamadim bunun entmake kodlari varmi acaba
yapmak istedigim gas line seklinde cizgi tipleri olusturmak gas yerine o an istedigim karakteri girmek istiyorum yardimci olursaniz sevinirim.
Kolay Gelsin...

13.04.2012 11:21    

ehya
ozandurmus

Bu şekilde çizgitipi oluşturamazsın. GAS LINE ile ilgili çizgi tipi kodu, acad.lin dosyası içerisinde mevcut. Sürekli bu dosyaya ek yapıp çıkartman sorunlara yol açacaktır.

13.04.2012 15:11    

kdemirkaya
merhaba;

Elimdeki çizimde Z değerleri "0.00" olan point objeleri ve bu point objelerinin hemen yanıda ise point objesinin Z değerleri text objesi olarak bulunmakta. toplu seçim ile bu text oblerindeki değerleri hemen yanındaki noktanın Z değeri olarak atamak mümkün olabilirmi...

teşekkürler...

14.04.2012 00:45    

ProhibiT
Sorunuzda "Point objesinin Hemen yanındaki Text" tanımsız bir kavram. Foksiyonun yazılabilmesi için, Point objeleriyle Text objeleri arasında bir ilinti kurulması gerekir. Algoritma kurululurken, "hemen yanındaki" şeklinde bir tanımlama olmaz. Bunu, point objesinie en kısa mesafedeki Point objesi şeklinde tanımlamak mümkün olabilir. Bu durumda da, sık noktaların olduğu bölümlerde, harita ölçeğine de bağlı olarak, komşu Point'in Text objesi daha yakın olabilir! Benzer bir fonksiyonu

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

linkinde paylaşılmıştı.

19.04.2012 09:01    

yyatkin
Bu kadar hızlı bilgi akışının döndüğü bir yer yoktur heralde emeği geçen herkese teşekkür ederim. Benimde bir konuda fikrinizi almam gerekli elimde ki halihazır haritalara eski jpg formatında haritaları oturtmam gerekiyor bunun için align komutunu kullanıyorum fakat tam istediğim gibi oturmuyor sizce align komutunda referanse sayısını arttıp ona göre oturtan bir lisp varmıdır? yani en azından resmin 4 köşesini referans göstersem süper olurdu:)

yyatkin (20.04.2012 07:47 GMT)

21.04.2012 08:47    

ProhibiT
Bir arkadaşımızın özel mesaj yazıp sorduğu soruyu cevaplarken, neredeyse 25 yıl önce yazdığım bir fonksiyon aklıma geldi. İlginç bir örnek olabilir düşüncesiyle burada da paylaşmak istedim.
Kod:

;;;=========================================================================;;;
;;;     CLP.LSP                                                             ;;;
;;;     Secilen dogrunun her iki ucundan belirlenen miktar kadar kirpar,    ;;;
;;;     kirpma miktari negatif olabilir, bu durumda dogru belirlenen        ;;;
;;;     miktar kadar her iki ucundan uzatilir                               ;;;
;;;     Hazırlayan M.S.Güvercin                                             ;;;
;;;=========================================================================;;;
(defun C:CLP (/ km e n1 n2 aci)
   (setvar "cmdecho" 0)  (command "undo" "group") (if (= ekm nil) (setq ekm 5))
   (if (not (setq km (getreal (strcat "\nKirpma miktari <" (rtos ekm) ">:"))))
     (setq km ekm)) (setq e (car (entsel "\nKirpilacak dogruyu seciniz...")))
   (while e (setq e (entget e) n1 (cdr (assoc 10 e)) n2 (cdr (assoc 11 e))
                  aci (angle n1 n2)
                  n1 (polar n1 aci km) n2 (polar n2 (+ pi aci) km)
                  e (subst (cons 10 n1) (assoc 10 e) e)
                  e (subst (cons 11 n2) (assoc 11 e) e)
                  e (entmod e) e (entupd (cdr (assoc -1 e)))
                  e (car (entsel "\rYeni dogru seciniz..."))))
   (setq ekm km) (command "undo" "e")  (prin1)
)

21.04.2012 11:41    

yyatkin
ProhibiT hocam güzel paylaşım..
LENGTHEN/ total komutu gibi çalışıyor tek far kı tek yöne değilde her iki ıçtan eşit miktarda ekleyip çıkarması

Önceki Sayfa [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [15] [20] > 25 < [30] [35] [40] [45] [50] [55] [60] [65] [70] [75] [80] [85] [90] [95] [100] Sonraki Sayfa
Copyright © 2004-2022 SQL: 1.585 saniye - Sorgu: 99 - Ortalama: 0.01601 saniye