19.09.2012 09:37    

ehya
tugrulsahin

Bahsettiğinl lisp zahmetli ve uğraştırıcı birşey. Bu kadar vakit ayırabileceğimi sanmıyorum.

20.09.2012 03:08    

tugrulsahin
Eyv saol.En azından yapılırsa diye ümidim kalmadı artık :) Ama boş bir zamanında ilgilenebilirsen cok iyi olur,sadece benım icin degil sanıyorumki tum herkesın işine yarıcak bişi olur,bu tip ğrojelerde calısan

21.09.2012 06:17    

emasi
Selamun aleykum.
Gen planda çoklu sayda Mtext ve textler vardır. Bu textlerde yazılan rakamların hepisini aynı anda seçib ve deyerlerini belli rakamda artırıb ve ya azaltmak lazım olacaq.
Prohibit abinin "IncDec" lispini kullandım ama bu lispde noktadan sonra olan rakamları siliyor.
İlginiz için önceden teşekkür ederim

21.09.2012 18:05    

ProhibiT
Şimdi bakınca gördümki, IncDec fonksiyonunun değişik varyasyonlarını paylaşmışız.
Kod:

;;;=========================================================================;;;
;;;     Secilen text gurubu icindeki belirli araliktaki sayilari            ;;;
;;;     belirlenen miktar kadar artirir veya eksiltir                       ;;;
;;;     Hazırlayan: M.S.Güvercin www.cizimokulu.com                         ;;;
;;;=========================================================================;;;
(defun C:INCDEC  (/ amk as us dpp p n e a)
(setvar "cmdecho" 0) (command "undo" "group")
(if(not eamk)(setq eamk 1))(if(not eas)(setq eas 1))(if(not eus)(setq eus 100))
  (if (not edpp) (setq edpp (getvar "luprec")))
  (setq amk (getreal (strcat "\n          Artis Miktari <" (rtos eamk) ">: "))
        as  (getreal (strcat "\n        Sayi alt siniri <" (rtos eas) ">: "))
        us  (getreal (strcat "\n        Sayi ust siniri <" (rtos eus) "> :"))
        dpp (getint (strcat "\n Ondalik basamak sayisi <" (itoa edpp) ">: ")))
  (if amk (setq eamk amk) (setq amk eamk)) (if as (setq eas as) (setq as eas))
  (if us (setq eus us) (setq us eus)) (if dpp (setq edpp dpp) (setq dpp edpp))
  (princ "\nAtrırılacak/Eksiltilecek sayıları seçiniz: ")
  (setq p (ssget (list (cons 0 "TEXT"))) n (sslength p))
  (while (not (minusp (setq n (1- n))))
    (setq a (entget (ssname p n)) e (atof (cdr (assoc 1 a))))
    (if (and (>= e as) (<= e us))
      (setq a (subst (cons 1 (rtos (+ e amk) 2 dpp)) (assoc 1 a) a)
            a (entmod a) a (entupd (cdr (assoc -1 a))))))
  (command "undo" "e") (prin1))
Bu fonksiyonu alıp kullanırsanız problemsiz işlem yapabilirsiniz. Bu haliyle ondalık basamak sayısını da istediğiniz gibi belirleyebilirsiniz.

Kolay gelsin.

21.09.2012 19:07    

emasi
Çok sağol abi
Ellerine sağlık
Uğurlar :)

24.09.2012 08:27    

tugrulsahin
İyi çalışmalar arkadaslar. Lisp'in formülü ile ilgili bir değişiklik yapmak istersem nasıl yapabilecegimi sorucaktım. Mesela elimde değiştirmek istediğim bir lisp var.Degiştirmek istedigim kısmıda tek tek seçim yerine çoklu seçim yapması.Birde bir başka değiştirmek istediğim lisp'te,line ölçülerini üzerine metre olarak yazan lisp,bundada degiştirmek istediğim şey mesafenin başında ''L='' ibaresini koymak. Yani ''345,82 m'' yerine ''L=345,82m'' yazması. Yardım edicek ve bilgisini paylaşıcak arakadaşlara şimdiden teşekkür ederim. İyi günler.

24.09.2012 09:57    

ehya
Tek tek seçimi çoklu seçime tek defada dönmez. Bunun için seçim bölümünün ve işlem kısmının bir bölümü yeniden kodlaması yapılmalı.

Yazı konusuna gelince yazıyı yazdıran kısımda değişken adını öğrenmeli ve ek yapmalısınız
Bunu bilen birisinin yapması daha doğru olur. Kaş yapayım derken göz çıkarmayın.

25.09.2012 07:33    

k005
Merhaba arkadaşlar;

Daire şeklinde, hatch-Solid, olarak taranmış objeler mevcut. bunların üzerine circle çizebilen bir lisp gerekiyor dostlar,, mevcut hatch objesi üzerine çizecek, hatch objesini de silecek..

yardımcı arkadaşlara şimdiden teşekkürler..

25.09.2012 07:42    

ehya
Hatch tablosundaki "Recreate Boundary" butonu ile bu işlemi yapabilirsin

25.09.2012 07:55    

k005
Alıntı
ehya :
Hatch tablosundaki "Recreate Boundary" butonu ile bu işlemi yapabilirsin



hocam o "Recreate Boundary" butonu aktif değil...

25.09.2012 08:11    

ehya
"hatchedit" komutunu çalıştır. Hatch nesnesini seç. Tablo geldiğinde aktif olacaktır.
Hatch komutunda iken aktif olmaz.

25.09.2012 08:22    

k005
Alıntı
ehya :

Hocam çok teşekkür ettim,, tamamdır..
**********************************

yalnız hocam burda şöyle bir durum var.. oluşan obje polyline.. bu yöntem başka bir yerde işe yarayabilir.. benim sorumda circle olması gerekiyor hocam..

k005 (25.09.2012 08:27 GMT)

25.09.2012 08:46    

ehya
Autodesk bile polyline olarak tanımladıysa, vardır bi bildikleri. :)

25.09.2012 09:46    

tugrulsahin
Bende bu işin bir yerinden başlayayım dedim,bu soruları sormamın nedenide bu yüzdendir.Ama anlaşılan kolay bir iş degil. Peki ben bu lisp yazma işini nasıl ögrenebilirim?

25.09.2012 10:17    

ehya
tugrulsahin




download --> lispler kısmında "Türkçe Autolisp Kitabı" adı altında başlangıç için temel anlatım bilgileri mevcuttur. Buradan başlayabilirsin.

25.09.2012 19:38    

ProhibiT
k005 arkadaşımızın sorusunda bahsettiği Donut (Doughnut) komutuyla oluşturulmuş LwPoLyLine objesidir. Bu konuyla ilgili detayları

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

linkinde açıklamıştım. Söz konusu iki noktalı ve kapalı PoLyLine objesini silerek yerine Circle oluşturan fonksiyon;
Kod:

;|***************************************************************************|;
;| DtC: Donut to Circle.                                                     |;
;|      Hazırlayan: M. Şahin Güvercin  www.cizimokulu.com  25.09.2012        |;
;|---------------------------------------------------------------------------|;
(defun c:DtC (/ cTr n1 n2 nKs Obj p1 p2 Rad)
  (setvar "cmdecho" 0) (command "_.undo" "group") (vl-load-com)
  (if (setq Obj (ssname (ssget ":s" (list (cons 0 "LwPoLyLine") (cons 90 2)
                                          (cons 70 1))) 0))
    (progn (setq nKs (vlax-safearray->list (vlax-variant-value
                (vlax-get-property (vlax-ename->vla-object Obj) 'Coordinates)))
                 n1  (list (nth 0 nKs) (nth 1 nKs))
                 n2  (list (nth 2 nKs) (nth 3 nKs))
                 cTr (mapcar '(lambda (p1 p2) (/ (+ p1 p2) 2.0)) n1 n2)
                 Rad (+ (/ (distance n1 n2) 2.0)
                        (/ (cdr (assoc 43 (entget Obj))) 2.0)))
      (entmake (list (cons 0 "Circle") (cons 10 cTr) (cons 40 Rad)))
      (entdel Obj))) (command "_.undo" "e") (prin1))
Konunun her türlü detayını ve örnek fonksiyonu paylaştığımıza göre, gurup halinde seçim yaparak işlem yapan fonksiyon istenmez diye ümit etmek istiyorum.

26.09.2012 06:23    

murat.ergun.86
İyi günler çelik konstrüksiyon bir firmada proje çiziyorum her proje için aks çizmek yorucu oluyor acaba paket Programlar gibi tıkladıkca aks çizen bir Lisp varmı. Birde metraj en kolay biçimde çıkarabilecek bir Lisp olsa süper olur. Çok sağolun yakinda Lisp yazmak için ogrenmeye başlayacağım inşallah o zaman siteye faydali olabilirim

26.09.2012 08:00    

k005
Alıntı
ProhibiT :

Hocam merhaba.., seçilecek objeler donut objesi değil.. polyline da değil.. şöyle düşünelim 14mm çapında bir daire çizilmiş, içi hatch solid ile taranmış ve circle silinmiş... gibi.. yani sadece tarama var.. donut objesi felan değil...

27.09.2012 19:08    

ProhibiT
Kod:

;|***************************************************************************|;
;| HtC: Hatch to Circle.                                                     |;
;|      Hazırlayan: M. Şahin Güvercin  www.cizimokulu.com  19.11.2012        |;
;|---------------------------------------------------------------------------|;
(defun c:HtC (/ aLn cTr Obj ObL n x y z Rad)
  (setvar "cmdecho" 0) (command "_.undo" "group") (vl-load-com)
  (if (setq Obj (ssname (ssget ":s" (list (cons 0 "Hatch"))) 0))
    (progn (setq aLn (vlax-get-property (vlax-ename->vla-object Obj)'Area)
                 ObL (entget Obj) n 0 x 0 y 0 z 0
                 ObL (subst (cons 111 (cdr (assoc 10 ObL))) (assoc 10 ObL) ObL))
      (while (assoc 10 ObL)
        (setq n (1+ n)
              x (+ x (cadr (assoc 10 ObL)))
              y (+ y (caddr (assoc 10 ObL)))
              z (+ z (cadddr (assoc 10 ObL)))
              ObL (subst (cons 111 (cdr (assoc 10 ObL))) (assoc 10 ObL) ObL)))
      (setq cTr (list (/ x n) (/ y n) (/ z n))
            Rad (sqrt (/ aLn pi)))
      (entmake (list (cons 0 "Circle") (cons 10 cTr) (cons 40 Rad)))
      (entdel Obj))) (command "_.undo" "e") (prin1))


K005 arkadaşımızdan gelen örnek üzerine fonksiyon genelleştirilip güncellendi.

ProhibiT (19.11.2012 14:36 GMT)

28.09.2012 12:07    

k005
Alıntı
ProhibiT :

Hocam çok teşekkürler, tamamdır..

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