23.02.2012 12:40    

pulp fiction
Luprec değeri ''3'' hocam...

1-2-4 yapıp tekrar denedim olmadı....

23.02.2012 12:55    

ProhibiT
Son yüklediğim (bu gün) haliyle bende her şartta kusursuz çalışıyor. Sizin sisteminizde sebebini tahmin edemediğim bir şekilde Real sayılar Integer'a dönüyor, daha doğrusu ondalık duyarlık sıfır olarak uygulanıyor.

16.03.2012 09:35    

ProhibiT
Alıntı
ferhatpeker :

Bu konuyla ilgili o kadar çok fonksiyon paylaşıldı ki! Eminim bunlardan biri sizin isteğinizi karşılıyordur...


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.




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


İlk bakışta benim gördüklerim bunlar, dahası da var...

Sorunuzu önce kendi zihninizde net olarak tanımlayınız. Öyle kırk tane soru sorulup bir işlem yapacak fonksiyon olmaz. Atılan taş ürkütülen kuşa değmez. Standart AutoCAD komutlarıyla yapıverin. Olsa ne olur diye düşünürseniz, sizin probleminiz, birileri neden yazsın. Oturup Macro kaydedin o zaman.

Özel mesajla altını çizerek sorduğum soruya net cevap alamadığım için böyle yazdım. Ekleme, çıkarma veya değişiklik istemeyiniz. Kendi adıma, kişiye özel ve hiç bir sanat değeri olmayan fonksiyonlar yazmaktan hiç keyif almıyorum.
Kod:

;|===========================================================================|
|    CnT: Belirlenen sayidan baslayarak gosterilen noktalara belirlenen     |
|    miktar kadar artirarak sayilar yazar.                                  |
|    Hazırlayan: M. Şahin Güvercin - www.autocadokulu.com                   |
|___________________________________________________________________________|;
(princ "\nAuthor: M. Şahin Güvercin - www.autocadokulu.com - ")
;|___________________________________________________________________________|;
(defun C:CnT (/ sayi amk yyuk ynok tro nnK An0 Ang)
  (setvar "cmdecho" 0) (command "undo" "group") (vl-load-com)
  (defun *error* (er) (princ (strcat "\n" er)) (command "_.undo" "end"))
  (mapcar '(lambda (p1 p2) (if (= (eval (read p1)) nil) (set (read p1) p2)))
          '("esayi" "eamk" "eyuk")
          (list 1 1 (* (getvar "dimtxt") (getvar "dimscale"))))
  (setq sayi (getint (strcat "\nBaşlangic sayisi <" (itoa esayi) "> :")))
  (if (= sayi nil) (setq sayi esayi) (setq esayi sayi))
  (setq amk (getint (strcat "Artiş miktari <" (itoa eamk) "> : ")))
  (if (= nil amk) (setq amk eamk) (setq eamk amk))
  (setq yyuk (getreal (strcat "\nYazi yüksekliği <" (rtos eyuk) "> :")))
  (if (= yyuk nil) (setq yyuk eyuk) (setq eyuk yyuk))
  (princ "\nilgili noktayi seçiniz...")
  (while (setq ynok (getpoint))
    (entmake (list '(0 . "TEXT") (cons 10 ynok) (cons 40 yyuk)
              (cons 1 (itoa sayi)) '(50 . 0.0) '(72 . 4) (cons 11 ynok)))
    (setq tro (entget (entlast)))
    (while (and (/= 3 (car (setq nnK (grread T 4 0)))) (/= 25 (car nnK)))
      (if (= 5 (car nnK)) (progn (setq nnK (cadr nnK)) (redraw)
        (if (> (abs (- (car nnK) (car ynok))) (abs (- (cadr nnK) (cadr ynok))))
          (setq nnK (list (car nnK) (cadr ynok) (caddr ynok)))
          (setq nnK (list (car ynok) (cadr nnK) (caddr ynok))))
                            (grdraw ynok nnK -1)
          (setq tro (subst (cons 10 nnK) (assoc 10 tro) tro)
                tro (subst (cons 11 nnK) (assoc 11 tro) tro) tro (entmod tro)
                tro (entget (entupd (cdr (assoc -1 tro))))))))
    (redraw) (setq ynok (cdr (assoc 10 tro)))
    (while (and (/= 3 (car (setq nnK (grread T 4 0)))) (/= 25 (car nnK)))
      (if (= 5 (car nnK)) (progn (setq nnK (cadr nnK) An0 (angle ynok nnK))
          (cond ((and (> An0 0) (<= An0 (/ pi 4.0))) (setq Ang (/ pi 4.0)))
                ((and (> An0 (/ pi 4.0)) (<= An0 (/ pi 2.0)))
                 (setq Ang (/ pi 2.0)))
                ((and (> An0 (/ pi 2.0)) (<= An0(* pi 0.75)))
                 (setq Ang (* pi 1.75)))
                ((and (> An0 (* pi 0.75)) (<= An0 pi)) (setq Ang 0))
                ((and (> An0 pi) (<= An0 (* pi 1.25))) (setq Ang (/ pi 4.0)))
                ((and (> An0 (* pi 1.25)) (<= An0 (* pi 1.5)))
                 (setq Ang (* pi 0.5)))
                ((and (> An0 (* 1.5 pi)) (<= An0 (* pi 1.75)))
                 (setq Ang(* pi 0.75))) ((> An0 (* pi 1.75)) (setq Ang 0)))
          (setq tro (subst (cons 50 Ang) (assoc 50 tro) tro) tro (entmod tro)
                tro (entget (entupd (cdr (assoc -1 tro))))))))
    (setq sayi (+ sayi amk)) (princ "\r... Yeni nokta seçiniz..."))
  (setq esayi sayi) (command "undo" "e") (prin1))
;|___________________________________________________________________________|;

Nokta seçilip ekranda yazı belirdikten sonra mouse'unuzu hareket ettirin, istediğiniz konuma geldiğinde sol tıklayın. Mouse'unuzu hareket ettirin, istediğiniz doğrultuya geldiğinde gene sol tıklayın...

16.03.2012 15:33    

sekerspor
Selam Arkadaşlar;


Lisp konusunda sitenizi takip ediyorum sıklıkla şimdi benimde acil yardımınıza ihtiyaçım var...

** İstemiş olduğum lispin maddesi yer almaktadır.

-- Metraj ölçmem lazım (line,polyline)
-- Metraj için seçtiğim çizgilerin toplam uzunluğunu versin.
-- Metraj ölçümü bitince; Seçmiş olduğum çizgilerin yanında text yada mtext şeklinde yazılarıda bulunmakta onlarıda seçip not defteri yada başka bir yerde hem çizginin text hemde uzunluğunu bana verebilecek bir lisp istiyorum.

Mesela;


L01 15,00 m
L02 12,35 m
A-03 9,86 m

Yukarıdaki lisp için Lütfen çok acil yardımınıza ihtiyacım var ....!!

16.03.2012 16:30    

ProhibiT


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




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

17.03.2012 04:29    

ferhatpeker
Prohibit hocam teşekkürler. Sizi yorduğum için kusura bakmayın.

Bu lisp çok güzel elinize sağlık. Fakat benim istediğim lisp zaten elinizde mevcut olan lispe bu yaptığınız lispteki özellikleri aktarmanızdı. Bu lispi kullanırken önek ve son ek giremiyorum. Ayrıca noktayı tıkladıktan sonra yazının kaç birim ileride olması gerektiğini de giremiyorum. Yinede elinize sağlık. Ekleme çıkarma istemeyin dediğiniz için sizden bu konuda başka birşey istemeyeceğim. İlginize teşekkür ederim.

28.03.2012 05:05    

varedero
autocad üzerinde koordinat girmek için lisp ler yazılmış,fakat benim ihtiyacım olan lisp i tarif edeyim umarım yapılabiliyordur.

elimdeki paftada köşe koordinatı verilmiş,fakat çizim koordinatlı değil el ile yazılmış değerler.
istediğim elimdeki koordinatları referans sayıp çizim üzerinde tıkladığım noktaların koordinatlarını, referans noktalara göre verebilecek bir lisp.

saygılar.

28.03.2012 08:31    

ProhibiT
Çiziminizi gerçek koordinatlarına move etmek en sağlıklı yol olacaktır. Bunun için AutoCAD komut satırından,
Move<┘ALL<┘<┘(mouse ile nokta seçilecek) (aralarına virgül konarak noktanın yazılı x,y,z koordinatı girilecek)
Bundan sonra noktalarınızın koordinatları üzerinde yazılı değerler olacağı için istediğiniz işlemleri yapabilirsiniz.

Bu yöntemle yapamazsanız, "elle yazılmış" diye bahsettiğiniz koordinatların hangi düzende, hangi formatta yazıldıklarını net olarak yazarsanız, basit bir Lisp fonksiyon yazılabilir.

29.03.2012 08:41    

ProhibiT
Daha önce paylaştığım pLoL fonksiyonun ActiveX kullanılarak geliştirilmiş son hali. Fonksiyonun kullanımını, Örnek Video'dan takip edebilirsiniz.
Kod:

;|============================================================================|
|  Seçilen PoLyLine objesinin parça boyları üzerine yazılarak, gösterilen    |
|  yere toplam boy yazılır. PoLyLine segmentleri doğrusal kabul edilir.      |
|  Hazırlayan: M. Şahin Güvercin  29/03/2012 www.autocadokulu.com            |
|____________________________________________________________________________|
|;(write-line "Hazırlayan: M. Şahin Güvercin - www.autocadokulu.com")       ;|
|____________________________________________________________________________|
|;(defun C:PLoL (/ *error* Luf dp L ds tx sTy pLL cRd n1 n2 bn ms ac)       ;|
|; (setvar "cmdecho" 0) (command "undo" "group") (vl-load-com)              ;|
|; (defun *error* (er) (princ (strcat "\n" er))                             ;|
|;  (setq Lufo Luf dpo dp) (command "undo" "e") (prin1))                    ;|
|; (if (= Lufo nil) (setq Lufo 1)) (if (= dpo nil) (setq dpo 2))            ;|
|; (setq Luf (getreal (strcat "\nCizilen/Yazılan orani <" (rtos Lufo) ">:"));|
|;       dp (getint (strcat "\rOndalik basamak sayisi <" (itoa dpo) ">: ")));|
|; (if (= nil Luf) (setq Luf Lufo)) (if (= nil dp) (setq dp dpo))           ;|
|; (setq L 0 ds (* (getvar "dimscale") (getvar "dimgap"))                   ;|
|;       tx (*(getvar "dimscale")(getvar "dimtxt")) sTy(getvar "TextStyle"));|
|; (princ "\rÖlçülendirmek istediğiniz PLine'ı seçiniz: ")                  ;|
|; (while (not (setq pLL (ssget ":s" (list (cons 0 "LWPOLYLINE"))))))       ;|
|; (setq pLL (ssname pLL 0)                                                 ;|
|;       cRd (vlax-safearray->list (vlax-variant-value (vlax-get-property   ;|
|;               (vlax-ename->vla-object pLL) 'Coordinates))))              ;|
|; (if (= (cdr (assoc 70 (entget pLL))) 1)                                  ;|
|;   (setq cRd (append (append cRd (nth 0 cRd)) (nth 1 cRd))))              ;|
|; (setq n (- (length cRd) 2))                                              ;|
|; (while (not (minusp (setq n (- n 2))))                                   ;|
|;   (setq n1 (list (nth n cRd) (nth (1+ n) cRd))                           ;|
|;         n2 (list (nth (+ n 2) cRd) (nth (+ n 3) cRd))                    ;|
|;         bn (mapcar '(lambda (p1 p2) (/ (+ p1 p2) 2.0)) n1 n2)            ;|
|;         ac (angle n1 n2)) (while (>= ac pi) (setq ac (- ac pi)))         ;|
|;   (if (> ac (/ pi 2.0))                                                  ;|
|;     (setq bn (polar bn (- ac (/ pi 2.0)) ds) ac (+ ac pi))               ;|
|;     (setq bn (polar bn (+ ac (/ pi 2.0)) ds)))                           ;|
|;   (setq ms (rtos (* Luf (distance n1 n2)) 2 dp) L (+ L (atof ms)))       ;|
|;   (entmake (list (cons 0 "TEXT") (cons 7 sTy) (cons 10 bn) (cons 40 tx)  ;|
|;                  (cons 1 ms) (cons 50 ac) (cons 72 1) (cons 11 bn))))    ;|
|; (setq L (strcat "L=" (rtos L 2 dp)))                                     ;|
|; (entmake (list (cons 0 "TEXT") (cons 7 sTy) '(10 0.0 0.0 0.0)(cons 40 tx);|
|;                (cons 1 L) (cons 50 0.0) (cons 72 1) '( 11 0.0 0.0 0.0))) ;|
|; (princ "\rToplam Boy için yer seçiniz: ") (setq n1 (list 0.0 0.0 0.0))   ;|
|; (while (and (/= 3 (car (setq n2 (grread T 4 3)))) (/= (car n2) 25))      ;|
|;   (vla-transformby (vlax-ename->vla-object (entlast))                    ;|
|;     (vlax-tmatrix (list (list 1 0 0 (- (car (cadr n2)) (car n1)))        ;|
|;                         (list 0 1 0 (- (cadr (cadr n2)) (cadr n1)))      ;|
|;                         (list 0 0 1 (- (caddr (cadr n2)) (caddr n1)))    ;|
|;                         (list 0 0 0 1)))) (setq n1 (cadr n2)))           ;|
|; (if (= (car n2) 25) (entdel (entlast)))                                  ;|
|; (setq Lufo Luf dpo dp) (command "undo" "e") (prin1))                     ;|
;|___________________________________________________________________________|;

Kolay gelsin.

ProhibiT (04.04.2012 07:56 GMT)

29.03.2012 14:18    

varedero
Sayın ProhibiT
çizimdeki koordinatları ,move komutu ile yerine getiremedim.

çizimdeki nokta koordinatları Y:3965350 / X:1894700 şeklinde.

saygılar.

29.03.2012 14:53    

ProhibiT
Kısacık iki detaya daha ihtiyaç var;

* Y:3965350 / X:1894700 şeklinde ifade edilen koordinatın yerini beli eden bir Point ya da CircLe objesi mi var? Yoksa koordinat yazısının insertion pointi mi?
* Haritacılıkta kullanılan koordinat sistemi (yani saat 3 yönünü gösteren eksen Y ekseni) nasıl kullanılıyor? UCS mi değiştiriyorsunuz? yoksa AutoCAD'de xy eksen takımı yerinde kalıp, koordinat yazarken mi X ve Y değerleri yer değiştiriyor?

Aslında, çalıştığınız dosyayı bana gönderirseniz, başka sorular sormak zorunda kalmam :)

30.03.2012 09:22    

varedero
Sn:Prohibit

üzerinde çalıştığım projeyi ekteki linke yükledim.

proje üzerindeki koordinatları autocad te yerine oturmam gerekiyor.

saygılar.

https://hotfile.com/dl/150786324/f40ce4c/Cizim.dwg.html

30.03.2012 13:23    

ProhibiT
Verdiğim fonksiyonu çalıştırmadan önce,
DIMDISASSOCIATE<┘ALL<┘<┘ girerek, mevcut Dimension'larınızın Associative özelliğini kapatmalısınız. Aksi halde çizim objeleri gerçek koordinatlarına gittiğinde Dimension objeleriniz ilgisiz yerlere gideceklerdir.
Kod:

(defun c:mRc (/ cmo *error* cMtxT obj coorX coorY coPnT)
  (command "_.undo" "group") (setq cmo (getvar "cmdecho")) (setvar "cmdecho" 0)
  (defun *error* (er) (setvar "cmdecho" cmo) (princ (strcat "\n" er "\n")))
  (princ "\nKoordinat Yazısını seçiniz: ")
  (while (not (setq cMtxT (ssget ":s" (list (cons 0 "MTEXT"))))))
  (setq cMtxT (cdr (assoc 1 (entget (setq obj (ssname cMtxT 0)))))
        coorX (atof (vl-string-left-trim "Y="
                      (substr cMtxT 1 (vl-string-position 92 cMtxT))))
        coorY (atof (vl-string-left-trim "\\PX="
                      (substr cMtxT (1+ (vl-string-position 92 cMtxT)))))
        coPnT (getpoint "\nKoordinat noktasını seçiniz: "))
  (command "_.move" "aLL" "" coPnT (list coorX coorY (caddr coPnT)))
  (command "_.zoom" "o" obj "") (command "_.zoom" "0.25X")
  (setvar "cmdecho" cmo) (command "_.undo" "end") (prin1))

Fonksiyonu çalıştırınca, Koordinat yazılarından (MText objesi) birini seçtikten sonra, ilgili koordinat noktasını (çizginin ucunu) seçmeniz yeterli olacaktır. Herkes yerli yerine gidecektir :)

Kolay gelsin.

30.03.2012 18:14    

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.
benim istediğim lispin özelliği,
1- koordinatları aynı autocad sayfası üzerinde, benim gösterdiğim boş bir yere tablo halinde numaralı bir şekilde y, x ve kot olarak yazmalı.
2- hangi numaradan yazmaya başlayacağını ben belirtmeliyim.
3- benim belirttiğim noktaların koordinatlarını yine benim mause ile tıkladığım sıraya göre dizmeli..

30.03.2012 18:43    

doygun77
Alıntı
varedero :
Sn:Prohibit

üzerinde çalıştığım projeyi ekteki linke yükledim.

proje üzerindeki koordinatları autocad te yerine oturmam gerekiyor.

saygılar.

https://hotfile.com/dl/150786324/f40ce4c/Cizim.dwg.html





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



Yukarıdaki link adresi bulunan dosyada Koordinatları belirtili Y ve X değerlerine noktayı aplike ettim. Bu proje üzerinden
sadece çizim üzerinde çalışılabilir, saha aplikasyonu için koordinat alınamaz bunun nedeni projede 1*1000 üzerinden çalışılmasıdır.

31.03.2012 08:22    

ProhibiT
So what! Why not? Gene AutoCAD'in birimi polemiğine girmeyelim. Koordinat alınmaması için hiç bir sebep yok...

31.03.2012 09:08    

SaiL
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.
benim istediğim lispin özelliği,
1- koordinatları aynı autocad sayfası üzerinde, benim gösterdiğim boş bir yere tablo halinde numaralı bir şekilde y, x ve kot olarak yazmalı.
2- hangi numaradan yazmaya başlayacağını ben belirtmeliyim.
3- benim belirttiğim noktaların koordinatlarını yine benim mause ile tıkladığım sıraya göre dizmeli..



yok mu arkadaşlar yardımcı olabilecek kimse.
şayet forumda böyle bir lisp varsa (ben bulamadım), link verir misiniz...

31.03.2012 10:02    

varedero
Sayın Prohibit;

Emeğiniz için teşekkür ederim.Lisp on numara olmuş :)
İstediğim her yerden koordinat alabiliyorum artık.Tekrar teşekkürler.

Saygılar.

31.03.2012 10:31    

Travaci
Alıntı
ProhibiT :
Daha önce paylaştığım pLoL fonksiyonun ActiveX kullanılarak geliştirilmiş son hali. Fonksiyonun kullanımını, Örnek Video'dan takip edebilirsiniz.


Hocam bu 10 numara olmuş bide yazı yüksekliği sorsaydı taddan yenmezdi : )

ProhibiT (31.03.2012 22:46 GMT)

31.03.2012 22:51    

ProhibiT
Teşekkür ederim :) Sizlerden bir ricam olacak, alıntı yaparken Kod almayınız, forumda arama yaparken sıkıntı yarattığı gibi, sayfa düzenine kadar özenle hazırladığımız kod, deli kız çeyizi gibi karmakarışık oluyor. Yazı yüksekliğine gelince, Dimscale ve Dimtxt değişkenlerini kullanarak ayarlayabilirsiniz.

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