* E Posta Adresiniz:
* Kodu Girin:

İleti Yazar
13.03.2011 16:13
63304    
batros2

[2] Girişimci

Online Durumu

5 ileti
tekniker
ist

Merhaba, yeni bir uye olarak burada acilmis tartismalarin cesitliligi ve sorulara gelen yanitlarin yardimseverliginden etkilendigimi soylemeliyim. degerli zamaninizda calmak istemem o yuzden arastirip ogrenmem gereken konularla ilgili beni yonlendirebilirseniz ben de kendi basima cozmeye calisirim. (ama belki boyle bir lisp vardir, hayat ne guzel olur )
benim ihtiyacim su:
1) cizilmis polyline'larin uzunluklarini, cizime yazmak. plol ve pluz lisplerine rastladim internette. ıkisi de pek faydali, lakin (lisp yazmayi bilmiyorum, bin kunduz!) plol, her bir line segmentinin de uzunlugunu giriyor ve ben bunu istemiyorum ayrica virgulun yerini ayarlama konusunda da sorun yasiyorum. virgulun yerini ikiser ikiser kaydiriyor. pluz istedigim gibi ama onda da virgulun yerini degistirmeyle ilgili bir ayar yok ne yazik ki.
daha da onemlisi
2) her bir polyline icin teker teker bu komutu tekrarlamak istemiyorum. (yuzlercesi sozkonusu) hepsini secip, polyline'larin olcusunu, her bir polyline'ın basladigi yere kendiliginden yerlestirmesini istiyorum. (cok mu sey istiyorum)
bir de, benim simdiye kadar pluz ile olculendirdiklerim cizimin olcu birimi mm oldugu icin o cinsten olculendiriliyor ama ben metre cinsinden gormek istiyorum. hepsini birden (ornegin 12834'dan, 12.8 olarak) degistirmenin pratik bir yolunu biliyor musunuz? ben bulamadim bunu yapmanın yolunu.
kaybolmus durumdayim.

simdiden tesekkurler

14.03.2011 08:24
63314    
ProhibiT

[80] Yetkili

Online Durumu

1469 ileti
İnşaat Mühendisi
Ankara

Merhaba,
plol fonksiyonunu ara mesafeleri yazmayacak şekilde düzenledim. burada dikkatinizi çekmek istediğim nokta, bu fonksiyon lwpolyline objelerini işler polyline objelerinin yapısı daha farklıdır.
Kod:

(defun C:PLLen ()
;;;M.Ş.Guvercin 14/03/2011 - 09:50
  (setvar "cmdecho" 0) (command "undo" "group")
  (if (= Lufo nil) (setq Lufo 1))
  (if (not (setq Luf (getreal (strcat "\nCizilen/Yazılan orani <" (rtos Lufo) "> :"))))
    (setq Luf Lufo))
  (if (= dpo nil) (setq dpo 2))
  (if (not (setq dp (getint (strcat "\nOndalik basamak sayisi <" (rtos dpo) "> :"))))
    (setq dp dpo))
  (setq L 0 tx (* (getvar "dimscale") (getvar "dimtxt")))
  (setq pLLine (car (entsel "\n  Uzunluğu yazılacak PoLyLine'ı seçiniz")))
  (if (/= "LWPOLYLINE" (cdr (assoc 0 (entget pLLine))))
    (progn (princ "\Secilen Obje PoLyLine değil!") (exit)))
  (setq pLLine (entget pLLine) sn (assoc 10 pLLine) n1 (cdr sn)
        pLLine (subst (cons 11 n1) sn pLLine))
  (if (= (cdr (assoc 70 pLLine)) 1) (setq pLLine (append pLLine (list sn))))
  (while (setq n2 (cdr (assoc 10 pLLine)))
    (setq ms (distance n1 n2) n1 n2 L (+ L ms)
          pLLine (subst (cons 11 n1) (assoc 10 pLLine) pLLine)))
  (setq Lp (getpoint "\n    Uzunluğun yazılacağı yeri seçiniz : ")
        L (strcat "L=" (rtos (* L Luf) 2 dp)))
  (if Lp (entmake (list (cons 0 "TEXT") (cons 10 Lp) (cons 40 tx)
                        (cons 1 L) (cons 50 0.0) (cons 72 1) (cons 11 Lp))))
  (setq Lufo Luf dpo dp) (command "undo" "e") (prin1)
)

Çizim içindeki tüm PoLyLine objelerini tek seferde alıp uzunluklarını yazma konusunda Text'in yazılacağı yer tanımsız kalır. her polyline'ın başlangıç noktasına yazılırsa da, anarşi çıkar diye düşünüyorum. siz biraz daha kafa yorun, çözüm anlamdında bir yöntem belirlerseniz, birlikte bir şeyler üretiriz

kolay gelsin.

Where there is a will, there is a way... Beğenmek için anlamak lazım...

14.03.2011 10:37
63319    
batros2

[2] Girişimci

Online Durumu

5 ileti
tekniker
ist

Prohibit,
yanitiniz icin mutesekkirim.
uzunluklarin cizginin baslangicina yerlestirilmesi ise amacina son derece uygun. eger metnin yerlestirilecegi yeri ben secmek zorunda kalmazsam ve komut icin toplu secim yapabilirsem cok ama cok iyi olacak.
saygilarimla

14.03.2011 11:31
63320    
ProhibiT

[80] Yetkili

Online Durumu

1469 ileti
İnşaat Mühendisi
Ankara

Kod:

(defun C:PLLen ()
;;;M.Ş.Guvercin 14/03/2011 - 13:30
  (setvar "cmdecho" 0) (command "undo" "group")
  (if (= Lufo nil) (setq Lufo 1))
  (if (not (setq Luf (getreal (strcat "\nCizilen/Yazılan orani <" (rtos Lufo) "> :"))))
    (setq Luf Lufo))
  (if (= dpo nil) (setq dpo 2))
  (if (not (setq dp (getint (strcat "\nOndalik basamak sayisi <" (rtos dpo) "> :"))))
    (setq dp dpo))
  (setq tx (* (getvar "dimscale") (getvar "dimtxt")))
  (princ "\n  Uzunluğu yazılacak PoLyLine'ları seçiniz (Enter=Tüm Çizim)...")
  (setq pLLines (ssget (list (cons 0 "LWPOLYLINE"))))
  (if (not pLLines) (setq pLLines (ssget "x" (list (cons 0 "LWPOLYLINE")))))
  (setq L (sslength pLLines) n -1)
  (while (< (setq n (1+ n)) L)
    (setq pLLine (entget (ssname pLLines n)) sn (assoc 10 pLLine)
          n1 (cdr sn) pLLine (subst (cons 11 n1) sn pLLine) Len 0)
    (if (= (cdr (assoc 70 pLLine)) 1) (setq pLLine (append pLLine (list sn))))
    (while (setq n2 (cdr (assoc 10 pLLine)))
      (setq Len (+ Len (distance n1 n2)) n1 n2
            pLLine (subst (cons 11 n1) (assoc 10 pLLine) pLLine)))
    (setq Len (strcat "L=" (rtos (* Len Luf) 2 dp)))
    (entmake (list (cons 0 "TEXT") sn (cons 40 tx) (cons 1 Len)
                   (cons 50 0.0) (cons 72 1) (cons 11 (cdr sn)))))
  (setq Lufo Luf dpo dp) (command "undo" "e") (prin1)
)
Kolay gelsin.

Where there is a will, there is a way... Beğenmek için anlamak lazım...

14.03.2011 13:39
63323    
batros2

[2] Girişimci

Online Durumu

5 ileti
tekniker
ist

Pek sevgili prohibit,
lisp'i cok kısaca denedim ve calisiyor. cok hayır duasi aldiniz, ne kadar tesekkur etsem azdır.
zaman harcadınız, binlerce tesekkurler...
(ben de lisp yazmasini ogrenecegim, kitabim bugun geldi, ve kimseye yuk olmayip, kendi lispimi yazmakla kalmayıp, yardim isteyenlere de yardim edecegim)

* sonlarına metrenin 'm' kısaltmasini nasil eklerim?

batros2 (14.03.2011 17:29 GMT)

17.03.2011 15:08
63413    
ProhibiT

[80] Yetkili

Online Durumu

1469 ileti
İnşaat Mühendisi
Ankara

Yazıların başına ve sonuna (önek, sonek) istenilen eklemeleri yapacak şekilde değiştirilmiş, LwPolyLine'ların yanısıra PoLyLine objelerini de ölçülendirecek şekilde düzenlenmiş hali;
Kod:

;;;====================================================================
;;; Komut adı: PLLen                                                   
;;; Belirlenen Layer'da bulunan tüm LWPOLYLINE ve POLYLINE objelerinin
;;; uzunluklarını hesaplar ve başlangıcına yazar                       
;;;                   Hazırlayan, M. Şahin Güvercin - 17-03-2011 11:15
;;;====================================================================
(defun C:PLLen ()
  (setvar "cmdecho" 0) (command "undo" "group") (if (= Lufo nil) (setq Lufo 1))
  (if (not (setq Luf (getreal
                    (strcat "\n  Çizilen/Yazılan orani <" (rtos Lufo) "> :"))))
    (setq Luf Lufo)) (if (= dpo nil) (setq dpo 2))
  (if (not (setq dp (getint
                  (strcat "\n    Ondalik basamak sayisi <" (rtos dpo) "> :"))))
    (setq dp dpo))
  (/= (setq bR (getstring T "\n  Uzunluk Birimi : ")) "")
  (/= (setq oE (getstring T "\n    Önek : ")) "")
  (setq tx (* (getvar "dimscale") (getvar "dimtxt")))
  (princ "\n  Uzunluğu yazılacak PoLyLine'ları seçiniz (Enter=Tüm Çizim)...")
  (setq pLLines (ssget (list (cons 0 "*POLYLINE"))))
  (if (not pLLines) (setq pLLines (ssget "x" (list (cons 0 "*POLYLINE")))))
  (setq L (sslength pLLines) n -1)
  (while (< (setq n (1+ n)) L)
    (if (= (cdr (assoc 0 (setq pLLine (entget (ssname pLLines n)))))
           "LWPOLYLINE")
      (progn (setq sn (assoc 10 pLLine) n1 (cdr sn) pLLine (subst (cons 11 n1)
                                                              sn pLLine) Len 0)
        (if (= (cdr (assoc 70 pLLine)) 1)
          (setq pLLine (append pLLine (list sn))))
        (while (setq n2 (cdr (assoc 10 pLLine)))
          (setq Len (+ Len (distance n1 n2)) n1 n2
                pLLine (subst (cons 11 n1) (assoc 10 pLLine) pLLine))))
      (progn
        (setq sn (assoc 10 (entget
                             (setq pvt (entnext (cdr (assoc -1 pLLine))))))
              n1 (cdr sn) Len 0)
        (while (= (cdr (assoc 0 (entget (setq pvt (entnext pvt))))) "VERTEX")
          (setq Len (+ Len (distance n1
                              (setq n2 (cdr (assoc 10 (entget pvt)))))) n1 n2))
        (if (= (cdr (assoc 70 pLLine)) 1)
          (setq Len (+ Len (distance n1 (cdr sn)))))))
    (setq Len (strcat oE (LeTa (* Len luf)) bR))
    (entmake (list (cons 0 "TEXT") sn (cons 40 tx) (cons 1 Len)
                   (cons 50 0.0) (cons 72 1) (cons 11 (cdr sn)))))
  (setq Lufo Luf dpo dp) (command "undo" "e") (prin1)
)
(princ "\n Hazırlayan, M. Sahin Guvercin - www.autocadokulu.com")
(defun LeTa (vL / uz sr frk yer)
  (setq vL (rtos vL 2 dpo) uz (strlen vL) sr 1)
  (while (and (< sr uz) (/= (substr vL sr 1) ".")) (setq sr (+ sr 1)))
  (setq yer (- uz sr) frk (- dpo yer))
  (if (and (= yer 0) (/= dpo 0)) (setq vL (strcat vL ".")))
  (while (> frk 0) (setq vL (strcat vL "0")) (setq frk (- frk 1)))
  (setq vL vL)
)

ProhibiT (14.11.2011 14:13 GMT)

Where there is a will, there is a way... Beğenmek için anlamak lazım...

21.03.2011 13:53
63461    
batros2

[2] Girişimci

Online Durumu

5 ileti
tekniker
ist

Cizilen yazilan orani nedense calismiyor, bir onceki versiyonda calisiyor halbuki.

21.03.2011 14:05
63462    
ProhibiT

[80] Yetkili

Online Durumu

1469 ileti
İnşaat Mühendisi
Ankara

Len değerini subroutine'e gönderirken Luf ile çarpmayı unutmuşum.
düzeltmeyi yapıp fonksiyonu yeniledim tekrar denerseniz çalışacaktır.

önek'in sonuna boşluk karakteri girebilirsiniz. sonek'in başına boşluk karakteri girmek için; önce boşluk, sonra alt+255 ve sonra da sonek girmelisiniz...

kolay gelsin.

ProhibiT (21.03.2011 14:13 GMT)

Where there is a will, there is a way... Beğenmek için anlamak lazım...

31.10.2013 09:42
74956    
arincakkin

[3] Kıdemli Girişimci

Online Durumu

30 ileti
inşaat mühendisi
istanbul

Pllen lisp'ini uzunluğu yazılan polyline ile aynı açıda yazdırmak mümkün müdür?

> 1 <
Copyright © 2004-2019 | Tüm Hakları Saklıdır | 4100 | Site haritası | İstatistikler | Hakkımızda | Kadromuz | Gizlilik | Reklam | İletişim